From ca3eb3612859e48b0255e15aabefc5b75726c788 Mon Sep 17 00:00:00 2001 From: wangfs <15029758498@163.com> Date: Thu, 18 Dec 2025 01:34:33 +0800 Subject: [PATCH] 养护计划优化提交 --- urbanops-framework/urbanops-spring-boot-starter-mybatis/src/main/java/com/zteits/urbanops/framework/mybatis/core/type/StringArrayToListTypeHandler.java | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanCommitRespVO.java | 9 ++++----- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/inspectionplan/InspectionPlanCommitDO.java | 6 +++++- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanCommitServiceImpl.java | 16 ++++++++-------- urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanCommitMapper.xml | 6 +++++- 5 files changed, 108 insertions(+), 15 deletions(-) create mode 100644 urbanops-framework/urbanops-spring-boot-starter-mybatis/src/main/java/com/zteits/urbanops/framework/mybatis/core/type/StringArrayToListTypeHandler.java diff --git a/urbanops-framework/urbanops-spring-boot-starter-mybatis/src/main/java/com/zteits/urbanops/framework/mybatis/core/type/StringArrayToListTypeHandler.java b/urbanops-framework/urbanops-spring-boot-starter-mybatis/src/main/java/com/zteits/urbanops/framework/mybatis/core/type/StringArrayToListTypeHandler.java new file mode 100644 index 0000000..283beb1 --- /dev/null +++ b/urbanops-framework/urbanops-spring-boot-starter-mybatis/src/main/java/com/zteits/urbanops/framework/mybatis/core/type/StringArrayToListTypeHandler.java @@ -0,0 +1,86 @@ +package com.zteits.urbanops.framework.mybatis.core.type; +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; + +import java.sql.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.regex.Pattern; + +public class StringArrayToListTypeHandler extends BaseTypeHandler> { + + // 匹配引号(单或双) + private static final Pattern SPLIT_PATTERN = Pattern.compile(",\\s*"); + private static final Pattern TRIM_QUOTES = Pattern.compile("^(['\"])(.*)\\1$"); + + @Override + public void setNonNullParameter(PreparedStatement ps, int i, List parameter, JdbcType jdbcType) throws SQLException { + if (parameter == null || parameter.isEmpty()) { + ps.setString(i, "[]"); + return; + } + // 统一用双引号序列化为 JSON 格式写入 + StringBuilder sb = new StringBuilder(); + sb.append("["); + for (int idx = 0; idx < parameter.size(); idx++) { + if (idx > 0) sb.append(","); + sb.append("\"").append(parameter.get(idx)).append("\""); + } + sb.append("]"); + ps.setString(i, sb.toString()); + } + + @Override + public List getNullableResult(ResultSet rs, String columnName) throws SQLException { + return parse(rs.getString(columnName)); + } + + @Override + public List getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + return parse(rs.getString(columnIndex)); + } + + @Override + public List getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + return parse(cs.getString(columnIndex)); + } + + /** + * 解析 ['a','b'] 或 ["x","y"] 等格式 + */ + private List parse(String value) { + if (value == null || (value = value.trim()).length() == 0 || "null".equalsIgnoreCase(value)) { + return Collections.emptyList(); + } + + // 去掉首尾的 [ 和 ] + if (!value.startsWith("[") || !value.endsWith("]")) { + return Collections.emptyList(); // 非法格式 + } + value = value.substring(1, value.length() - 1).trim(); + + // 空数组 + if (value.isEmpty()) { + return Collections.emptyList(); + } + + List result = new ArrayList<>(); + String[] items = SPLIT_PATTERN.split(value); + + for (String item : items) { + item = item.trim(); + if (item.length() == 0) continue; + + // 移除首尾的单引号或双引号 + if ((item.startsWith("'") && item.endsWith("'")) || + (item.startsWith("\"") && item.endsWith("\""))) { + item = item.substring(1, item.length() - 1); + } + + result.add(item); + } + + return result; + } +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanCommitRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanCommitRespVO.java index c834dee..acef567 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanCommitRespVO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanCommitRespVO.java @@ -1,5 +1,7 @@ package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo; +import com.baomidou.mybatisplus.annotation.TableField; +import com.zteits.urbanops.framework.mybatis.core.type.StringListTypeHandler; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -57,11 +59,8 @@ public class InspectionPlanCommitRespVO { @Schema(description = "巡检照片") @ExcelProperty("巡检照片") - private String img; - - @Schema(description = "巡检照片") - @ExcelProperty("巡检照片") - private List imgList; + @TableField(typeHandler = StringListTypeHandler.class) + private List img; @Schema(description = "巡检结果: 1:正常;2:异常") @ExcelProperty("巡检结果: 1:正常;2:异常") diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/inspectionplan/InspectionPlanCommitDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/inspectionplan/InspectionPlanCommitDO.java index b83d240..88a8edf 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/inspectionplan/InspectionPlanCommitDO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/inspectionplan/InspectionPlanCommitDO.java @@ -1,7 +1,10 @@ package com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan; +import com.zteits.urbanops.framework.mybatis.core.type.StringListTypeHandler; import lombok.*; import java.time.LocalDateTime; +import java.util.List; + import com.baomidou.mybatisplus.annotation.*; import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO; @@ -61,7 +64,8 @@ public class InspectionPlanCommitDO extends BaseDO { /** * 巡检照片 */ - private String img; + @TableField(typeHandler = StringListTypeHandler.class) + private List img; /** * 巡检结果: 1:正常;2:异常 */ diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanCommitServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanCommitServiceImpl.java index 556dcdf..fbcbd4d 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanCommitServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanCommitServiceImpl.java @@ -132,7 +132,7 @@ public class InspectionPlanCommitServiceImpl implements InspectionPlanCommitServ .batchNo(inspectionPlanDO.getBatchNo()) .planNo(createReqVO.getPlanNo()).busiLine(inspectionPlanDO.getBusiLine()) .companyId(inspectionPlanDO.getCompanyId()).deptId(inspectionPlanDO.getDeptId()) - .roadId(inspectionPlanDO.getRoadId()).img(JSONObject.toJSONString(createReqVO.getImgList())) + .roadId(inspectionPlanDO.getRoadId()).img(createReqVO.getImgList()) .inspectionState(createReqVO.getInspectionState()).transState(createReqVO.getTransState()) .transWorkNo(createReqVO.getTransWorkNo()) .userId(userId).userName(userName) @@ -195,7 +195,7 @@ public class InspectionPlanCommitServiceImpl implements InspectionPlanCommitServ IPage page = inspectionPlanCommitMapper.selectForPage(mpPage, pageReqVO); addDataInspectionPlan(page.getRecords()); // 转换返回 - return new PageResult<>(imgProcess(page.getRecords()), page.getTotal()); + return new PageResult<>(page.getRecords(), page.getTotal()); } @Override @@ -242,11 +242,11 @@ public class InspectionPlanCommitServiceImpl implements InspectionPlanCommitServ }); } - private List imgProcess(List list) { - list.forEach(e -> { - e.setImgList(StrUtils.imgProcess(e.getImg(), "")); - }); - return list; - } +// private List imgProcess(List list) { +// list.forEach(e -> { +// e.setImgList(StrUtils.imgProcess(e.getImg(), "")); +// }); +// return list; +// } } \ No newline at end of file diff --git a/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanCommitMapper.xml b/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanCommitMapper.xml index 18c8ffd..9292107 100644 --- a/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanCommitMapper.xml +++ b/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanCommitMapper.xml @@ -2,6 +2,10 @@ + + + + - SELECT a.plan_no, b.plan_name, -- libgit2 0.21.4