|
@@ -1,52 +1,52 @@
|
|
package com.xvji.domain;
|
|
package com.xvji.domain;
|
|
|
|
|
|
-import com.alibaba.fastjson2.JSON;
|
|
|
|
-import com.alibaba.fastjson2.TypeReference;
|
|
|
|
import com.baomidou.mybatisplus.annotation.IdType;
|
|
import com.baomidou.mybatisplus.annotation.IdType;
|
|
import com.baomidou.mybatisplus.annotation.TableField;
|
|
import com.baomidou.mybatisplus.annotation.TableField;
|
|
import com.baomidou.mybatisplus.annotation.TableId;
|
|
import com.baomidou.mybatisplus.annotation.TableId;
|
|
import com.baomidou.mybatisplus.annotation.TableName;
|
|
import com.baomidou.mybatisplus.annotation.TableName;
|
|
-import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
|
|
|
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
|
|
+import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import lombok.Data;
|
|
import lombok.Data;
|
|
-import java.util.Map;
|
|
|
|
-import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
|
|
|
|
|
|
|
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 组件表实体类(对应component表)
|
|
* 组件表实体类(对应component表)
|
|
|
|
+ * 统一使用Jackson处理JSON
|
|
*/
|
|
*/
|
|
@TableName("component")
|
|
@TableName("component")
|
|
@Data
|
|
@Data
|
|
public class Component {
|
|
public class Component {
|
|
/**
|
|
/**
|
|
- * 组件ID
|
|
|
|
|
|
+ * 组件ID(自增主键)
|
|
*/
|
|
*/
|
|
@TableId(type = IdType.AUTO)
|
|
@TableId(type = IdType.AUTO)
|
|
private Long componentId;
|
|
private Long componentId;
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 任务ID:关联训练/预测任务表
|
|
|
|
|
|
+ * 任务ID:关联训练任务表(t_task_id)或预测任务表(p_task_id)
|
|
*/
|
|
*/
|
|
private Long taskId;
|
|
private Long taskId;
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 任务类型:0-训练任务,1-预测任务
|
|
|
|
|
|
+ * 任务类型:0-训练任务,1-预测任务(区分组件归属)
|
|
*/
|
|
*/
|
|
private Integer taskType;
|
|
private Integer taskType;
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 组件类型(如数据获取)
|
|
|
|
|
|
+ * 组件类型
|
|
*/
|
|
*/
|
|
private String componentType;
|
|
private String componentType;
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 参数:包含多对键值对的JSON对象
|
|
|
|
|
|
+ * 组件参数
|
|
|
|
+ * @JsonIgnore:序列化时忽略该字段,避免返回字符串格式的params
|
|
*/
|
|
*/
|
|
- @TableField(value = "PARAMS", typeHandler = JacksonTypeHandler.class)
|
|
|
|
@JsonIgnore
|
|
@JsonIgnore
|
|
- private String params; // 用String存储JSON字符串,兼容所有JSON格式
|
|
|
|
|
|
+ @TableField("PARAMS") // 明确对应数据库的PARAMS字段(避免字段名映射错误)
|
|
|
|
+ private String params;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 接口地址
|
|
* 接口地址
|
|
@@ -54,31 +54,53 @@ public class Component {
|
|
private String interfaceUrl;
|
|
private String interfaceUrl;
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 是否启用:true-启用,false-禁用
|
|
|
|
- * 对应数据库TINYINT(1)类型
|
|
|
|
|
|
+ * 是否启用:true启用,false禁用
|
|
*/
|
|
*/
|
|
- @TableField("IS_ENABLE") // 指定数据库字段名,与表结构保持一致
|
|
|
|
|
|
+ @TableField("IS_ENABLE")
|
|
private Boolean isEnable;
|
|
private Boolean isEnable;
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 给前端返回的参数Map(JSON对象格式)
|
|
|
|
|
|
+ * Jackson对象映射器 全局单例模式 避免重复创建实例
|
|
|
|
+ */
|
|
|
|
+ private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 将数据库的JSON字符串转为Map,序列化时字段名为"params"
|
|
|
|
+ * @return Map<String, Object> 组件参数键值对(JSON对象格式)
|
|
*/
|
|
*/
|
|
- @JsonProperty("params") // 序列化时使用"params"作为字段名
|
|
|
|
|
|
+ @JsonProperty("params")
|
|
public Map<String, Object> getParamsMap() {
|
|
public Map<String, Object> getParamsMap() {
|
|
|
|
+ // 处理空值:params为null或空字符串时返回null
|
|
if (params == null || params.trim().isEmpty()) {
|
|
if (params == null || params.trim().isEmpty()) {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
- return JSON.parseObject(params, new TypeReference<Map<String, Object>>() {});
|
|
|
|
|
|
+ try {
|
|
|
|
+ // 用Jackson解析JSON字符串为Map
|
|
|
|
+ return OBJECT_MAPPER.readValue(params, new TypeReference<Map<String, Object>>() {});
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ // 解析失败时打印日志
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 设置参数Map(自动转换为JSON字符串存储)
|
|
|
|
|
|
+ * 将Map转为JSON字符串,存入数据库的PARAMS字段
|
|
|
|
+ * @param paramsMap 组件参数键值对
|
|
*/
|
|
*/
|
|
public void setParamsMap(Map<String, Object> paramsMap) {
|
|
public void setParamsMap(Map<String, Object> paramsMap) {
|
|
|
|
+ // 当paramsMap为空时,数据库存储null
|
|
if (paramsMap == null || paramsMap.isEmpty()) {
|
|
if (paramsMap == null || paramsMap.isEmpty()) {
|
|
this.params = null;
|
|
this.params = null;
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- this.params = JSON.toJSONString(paramsMap);
|
|
|
|
|
|
+ try {
|
|
|
|
+ // 用Jackson将Map转为JSON字符串
|
|
|
|
+ this.params = OBJECT_MAPPER.writeValueAsString(paramsMap);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ // 序列化失败时打印日志,数据库存储null
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ this.params = null;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
-}
|
|
|
|
|
|
+}
|