package jnpf.elnEntity.formula;
|
|
import com.baomidou.mybatisplus.annotation.FieldFill;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.Version;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import lombok.Data;
|
import org.apache.ibatis.type.BaseTypeHandler;
|
import org.apache.ibatis.type.JdbcType;
|
|
import java.io.Serializable;
|
import java.sql.CallableStatement;
|
import java.sql.PreparedStatement;
|
import java.sql.ResultSet;
|
import java.sql.SQLException;
|
import java.sql.Types;
|
import java.util.Date;
|
import java.util.ArrayList;
|
import java.util.LinkedHashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@Data
|
@TableName(value = "eln_template_formula_binding", autoResultMap = true)
|
public class ElnTemplateFormulaBindingEntity implements Serializable {
|
private static final long serialVersionUID = 1L;
|
|
@TableId("f_id") private String id;
|
@TableField("muban_id") private String mubanId;
|
@TableField("gongshi_dingyi_id") private String gongshiDingyiId;
|
@TableField("gongshi_banben_id") private String gongshiBanbenId;
|
@TableField(value = "canshu_yingshe", jdbcType = JdbcType.OTHER,
|
typeHandler = ParameterMappingTypeHandler.class)
|
private Map<String, String> canshuYingshe = new LinkedHashMap<>();
|
@TableField("jieguo_bangding_id") private String jieguoBangdingId;
|
@TableField("bangding_zhuangtai") private String bangdingZhuangtai;
|
@TableField("tuopu_xuhao") private Integer tuopuXuhao;
|
@TableField("caozuo_bianma") private String caozuoBianma;
|
@TableField(value = "jieguo_suo_kuaizhao", jdbcType = JdbcType.OTHER,
|
typeHandler = ControlSnapshotListTypeHandler.class)
|
private List<ElnFormulaForms.ControlSnapshot> jieguoSuoKuaizhao = new ArrayList<>();
|
@TableField("laiyuan_gongshi_bangding_id") private String laiyuanGongshiBangdingId;
|
@TableField("daoqi_shijian") private Date daoqiShijian;
|
@TableField("zhuangtai_yuanyin") private String zhuangtaiYuanyin;
|
@TableField("f_tenant_id") private String fTenantId;
|
@Version @TableField("f_version") private Integer fVersion;
|
@TableField(value = "f_creator_user_id", fill = FieldFill.INSERT) private String fCreatorUserId;
|
@TableField(value = "f_creator_time", fill = FieldFill.INSERT) private Date fCreatorTime;
|
@TableField(value = "f_last_modify_user_id", fill = FieldFill.INSERT_UPDATE) private String fLastModifyUserId;
|
@TableField(value = "f_last_modify_time", fill = FieldFill.INSERT_UPDATE) private Date fLastModifyTime;
|
@TableField("f_delete_user_id") private String fDeleteUserId;
|
@TableField("f_delete_time") private Date fDeleteTime;
|
@TableField("f_delete_mark") private Integer fDeleteMark;
|
|
public static final class ParameterMappingTypeHandler
|
extends BaseTypeHandler<Map<String, String>> {
|
private static final ObjectMapper MAPPER = new ObjectMapper();
|
private static final TypeReference<Map<String, String>> TYPE =
|
new TypeReference<Map<String, String>>() { };
|
|
@Override
|
public void setNonNullParameter(PreparedStatement statement, int index,
|
Map<String, String> parameter, JdbcType jdbcType) throws SQLException {
|
try {
|
statement.setObject(index, MAPPER.writeValueAsString(parameter), Types.OTHER);
|
} catch (Exception ex) {
|
throw new SQLException("公式参数映射序列化失败", ex);
|
}
|
}
|
|
@Override public Map<String, String> getNullableResult(ResultSet rs, String name) throws SQLException {
|
return parse(rs.getString(name));
|
}
|
@Override public Map<String, String> getNullableResult(ResultSet rs, int index) throws SQLException {
|
return parse(rs.getString(index));
|
}
|
@Override public Map<String, String> getNullableResult(CallableStatement cs, int index) throws SQLException {
|
return parse(cs.getString(index));
|
}
|
private static Map<String, String> parse(String json) throws SQLException {
|
if (json == null) return null;
|
try { return MAPPER.readValue(json, TYPE); }
|
catch (Exception ex) { throw new SQLException("公式参数映射解析失败", ex); }
|
}
|
}
|
|
public static final class ControlSnapshotListTypeHandler
|
extends BaseTypeHandler<List<ElnFormulaForms.ControlSnapshot>> {
|
private static final ObjectMapper MAPPER = new ObjectMapper();
|
private static final TypeReference<List<ElnFormulaForms.ControlSnapshot>> TYPE =
|
new TypeReference<List<ElnFormulaForms.ControlSnapshot>>() { };
|
|
@Override
|
public void setNonNullParameter(PreparedStatement statement, int index,
|
List<ElnFormulaForms.ControlSnapshot> parameter, JdbcType jdbcType) throws SQLException {
|
try {
|
statement.setObject(index, MAPPER.writeValueAsString(parameter), Types.OTHER);
|
} catch (Exception ex) {
|
throw new SQLException("公式结果锁快照序列化失败", ex);
|
}
|
}
|
|
@Override public List<ElnFormulaForms.ControlSnapshot> getNullableResult(ResultSet rs, String name) throws SQLException {
|
return parse(rs.getString(name));
|
}
|
@Override public List<ElnFormulaForms.ControlSnapshot> getNullableResult(ResultSet rs, int index) throws SQLException {
|
return parse(rs.getString(index));
|
}
|
@Override public List<ElnFormulaForms.ControlSnapshot> getNullableResult(CallableStatement cs, int index) throws SQLException {
|
return parse(cs.getString(index));
|
}
|
private static List<ElnFormulaForms.ControlSnapshot> parse(String json) throws SQLException {
|
if (json == null) return new ArrayList<>();
|
try { return MAPPER.readValue(json, TYPE); }
|
catch (Exception ex) { throw new SQLException("公式结果锁快照解析失败", ex); }
|
}
|
}
|
}
|