api 增加数据 - 无法识别日期类型

dfx 增加数据脚本,一直增加数据,数据是通过 java api 传递过来,集算器负责存储数据,数据不再存储到其他数据库上。

java 调用 dfx 脚本
public void updateToAddByEsproc(String switchboard_id, Form form,
List listObject) throws Exception {
Long time = System.currentTimeMillis();

	// 获取结果集
	Connection con = null;
	ResultSet rs = null;
	
	String ctxName = form.getId()+DateUtils.currentStrDate()+"updateToAdd.ctx";
	
	//增加表的数据,数据从参数中获取 
	String fileName = EsProcUtils.formDataLengAppendDataDfx();
	try {
		// 建立连接
		con = EsProcUtils.getConnection();
		com.esproc.jdbc.InternalCStatement st = (com.esproc.jdbc.InternalCStatement) con.prepareCall(fileName);
		
		//组装表单字段信息
		List<String> tablenewFormFeild = getTablenewFormFeild(switchboard_id, form);
		
		//判断这个文件是否存在,如果不存在则创建表结构
		st.setObject(1, "\""+ctxName+"\"");
		st.setObject(2, StringUtils.collectionToString(tablenewFormFeild));
		st.setObject(3, EsProcUtils.basicDBObjectToArrayDfx(tablenewFormFeild, listObject));
		
		// 执行存储过程
		boolean hasResult = st.execute();
	} catch (Exception e) {
		if(e.getMessage()!=null && e.getMessage().contains(ctxName)){
			//文件不存在
			updateToStructureAndAddDataByEsproc(switchboard_id, form, listObject);
		}else {
			throw e;
		}
	} finally {
		EsProcUtils.close(rs, con);
		log.debug("耗时:"+(System.currentTimeMillis()-time)+"ms");
	}
}

数据对象通过 api 传递给集算器的时候,数据报错
/**
* mongodb 数据对象 BasicDBObject 转换成集算器对象
* @author conca
* @date 2023 年 4 月 26 日 下午 3:53:36
* @param tablenewFormFeild 字段顺序
* @param basicDBObject 数据对象
* @return
*/
public static Object[] basicDBObjectToArrayDfx(List tablenewFormFeild, List listObject) {
List list = new ArrayList();
Object value = null;
for (BasicDBObject basicDBObject : listObject) {
for (String feild : tablenewFormFeild) {
value = basicDBObject.get(feild);
if(value!=null) {
// if(value instanceof Timestamp) {
// value = “datetime("”+DateUtils.formatTime((Timestamp)value, “yyyy-MM-dd HH🇲🇲ss.SSS”)+“","yyyy-MM-dd HH🇲🇲ss.SSS")”;
// }else if(value instanceof java.sql.Date) {
// value = “datetime("”+DateUtils.dateFormat((java.sql.Date)value, “yyyy-MM-dd”)+“","yyyy-MM-dd")”;
// }else if(value instanceof Date) {
// value = “datetime("”+DateUtils.formatUtilDate((Date)value, “yyyy-MM-dd HH🇲🇲ss.SSS”)+“","yyyy-MM-dd HH🇲🇲ss.SSS")”;
// }

// if(value instanceof Timestamp) {
// value = “datetime("”+DateUtils.formatTime((Timestamp)value, “yyyy-MM-dd HH🇲🇲ss.SSS”)+“")”;
// }else if(value instanceof java.sql.Date) {
// value = “datetime("”+DateUtils.dateFormat((java.sql.Date)value, “yyyy-MM-dd”)+“")”;
// }else if(value instanceof Date) {
// value = “datetime("”+DateUtils.formatUtilDate((Date)value, “yyyy-MM-dd HH🇲🇲ss.SSS”)+“")”;
// }

				if(value instanceof Timestamp) {
					value = "datetime("+DateUtils.formatTime((Timestamp)value, "yyyy-MM-dd HH🇲🇲ss.SSS")+")";
				}else if(value instanceof java.sql.Date) {
					value = "datetime("+DateUtils.dateFormat((java.sql.Date)value, "yyyy-MM-dd")+")";
				}else if(value instanceof Date) {
					value = "datetime("+DateUtils.formatUtilDate((Date)value, "yyyy-MM-dd HH🇲🇲ss.SSS")+")";
				}

// if(value instanceof Timestamp) {
// value = new Date(((Timestamp)value).getTime());
// }else if(value instanceof java.sql.Date) {
//
// }else if(value instanceof Date) {
//
// }
}
list.add(value);
}
}
return list.toArray();
}

Timestamp 类型不转换就报错,报错图如下:

imagepng

如果将 Timestamp 类型转换成 datetime 格式字符串,集算器存储成字符串了,不是日期类型。

imagepng

脚本:

form_data_leng_append_datazip