diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/config/StringArrayTypeHandler.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/config/StringArrayTypeHandler.java new file mode 100644 index 0000000..fbf7dc6 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/config/StringArrayTypeHandler.java @@ -0,0 +1,70 @@ +package com.zteits.urbanops.module.workorder.config; + +/** + * @Classname StringArrayTypeHandler + * @Description + * @Date 2025/6/11 14:47 + * @Created by wangqian + */ + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.type.MappedJdbcTypes; +import org.apache.ibatis.type.MappedTypes; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +/** + * MyBatis 类型处理器,用于处理 JSON 格式的字符串数组与 Java String[] 之间的转换 + */ +@MappedTypes(String[].class) +@MappedJdbcTypes({JdbcType.VARCHAR, JdbcType.LONGVARCHAR, JdbcType.OTHER}) +public class StringArrayTypeHandler extends BaseTypeHandler { + + private static final ObjectMapper objectMapper = new ObjectMapper(); + + @Override + public void setNonNullParameter(PreparedStatement ps, int i, String[] parameter, JdbcType jdbcType) throws SQLException { + try { + // 将 String[] 转换为 JSON 字符串 + String json = objectMapper.writeValueAsString(parameter); + ps.setString(i, json); + } catch (Exception e) { + throw new SQLException("Error converting String[] to JSON: " + e.getMessage(), e); + } + } + + @Override + public String[] getNullableResult(ResultSet rs, String columnName) throws SQLException { + return parseJson(rs.getString(columnName)); + } + + @Override + public String[] getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + return parseJson(rs.getString(columnIndex)); + } + + @Override + public String[] getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + return parseJson(cs.getString(columnIndex)); + } + + /** + * 将 JSON 字符串解析为 String[] + */ + private String[] parseJson(String json) { + if (json == null || json.isEmpty()) { + return new String[0]; + } + try { + // 将 JSON 字符串转换为 String[] + return objectMapper.readValue(json, String[].class); + } catch (Exception e) { + throw new RuntimeException("Error converting JSON to String[]: " + e.getMessage(), e); + } + } +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoPageReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoPageReqVO.java index d804736..a2b4fad 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoPageReqVO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoPageReqVO.java @@ -50,7 +50,7 @@ public class EventInfoPageReqVO extends PageParam { private String lonLatAddress; @Schema(description = "用户提交照片") - private String confrimImgs; + private String[] confrimImgs; @Schema(description = "事件状态", example = "1") private Integer eventStatus; diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoRespVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoRespVO.java index fd7a676..b4b6fd8 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoRespVO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoRespVO.java @@ -63,7 +63,7 @@ public class EventInfoRespVO { @Schema(description = "用户提交照片", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("用户提交照片") - private String confrimImgs; + private String[] confrimImgs; @Schema(description = "事件状态", example = "1") @ExcelProperty("事件状态") diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/eventinfo/EventInfoDO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/eventinfo/EventInfoDO.java index 175ddc0..3eae0c1 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/eventinfo/EventInfoDO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/eventinfo/EventInfoDO.java @@ -1,5 +1,6 @@ package com.zteits.urbanops.module.workorder.dal.dataobject.eventinfo; +import com.zteits.urbanops.module.workorder.config.StringArrayTypeHandler; import lombok.*; import java.util.*; import java.time.LocalDateTime; @@ -16,7 +17,7 @@ import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO; * * @author 超级管理员 */ -@TableName("workorder_event_info") +@TableName(value = "workorder_event_info", autoResultMap = true) @KeySequence("workorder_event_info_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data @EqualsAndHashCode(callSuper = true) @@ -80,6 +81,7 @@ public class EventInfoDO extends BaseDO { /** * 用户提交照片 */ + @TableField(typeHandler = StringArrayTypeHandler.class) private String[] confrimImgs; /** * 事件状态