package jnpf.elnEntity.runtime; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; 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.math.BigDecimal; 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.Map; @Data @TableName(value = "eln_formula_calculation_log", autoResultMap = true) public class ElnFormulaCalculationLogEntity implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "f_id", type = IdType.INPUT) private String id; @TableField("dianzi_jilu_id") private String dianziJiluId; @TableField("xiuding_id") private String xiudingId; @TableField("muban_gongshi_bangding_id") private String mubanGongshiBangdingId; @TableField("gongshi_banben_id") private String gongshiBanbenId; @TableField("jieguo_muban_bangding_id") private String jieguoMubanBangdingId; @TableField("jieguo_ziduan_banben_id") private String jieguoZiduanBanbenId; @TableField("jisuan_caozuo_bianma") private String jisuanCaozuoBianma; @TableField("jisuan_moshi") private String jisuanMoshi; @TableField("jisuan_zhuangtai") private String jisuanZhuangtai; @TableField(value = "shuru_kuaizhao", jdbcType = JdbcType.OTHER, typeHandler = InputSnapshotTypeHandler.class) private Map shuruKuaizhao; @TableField("jieguo_wenben") private String jieguoWenben; @TableField("jieguo_shuzhi") private BigDecimal jieguoShuzhi; @TableField("shibai_yuanyin") private String shibaiYuanyin; @TableField("jisuan_shijian") private Date jisuanShijian; @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 InputSnapshotTypeHandler extends BaseTypeHandler> { private static final ObjectMapper MAPPER = new ObjectMapper(); private static final TypeReference> TYPE = new TypeReference>() { }; @Override public void setNonNullParameter(PreparedStatement statement, int index, Map parameter, JdbcType jdbcType) throws SQLException { try { statement.setObject(index, MAPPER.writeValueAsString(parameter), Types.OTHER); } catch (Exception ex) { throw new SQLException("权威计算输入快照序列化失败", ex); } } @Override public Map getNullableResult(ResultSet resultSet, String columnName) throws SQLException { return parse(resultSet.getString(columnName)); } @Override public Map getNullableResult(ResultSet resultSet, int columnIndex) throws SQLException { return parse(resultSet.getString(columnIndex)); } @Override public Map getNullableResult(CallableStatement statement, int columnIndex) throws SQLException { return parse(statement.getString(columnIndex)); } private static Map parse(String json) throws SQLException { if (json == null) { return null; } try { return MAPPER.readValue(json, TYPE); } catch (Exception ex) { throw new SQLException("权威计算输入快照解析失败", ex); } } } }