Commit 9f3e6c46122b54b418494dd6370d8a4951b58809

Authored by 王富生
Committed by 王彪总
1 parent 05df533d

app巡查汇总查询提交

urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanPageReqVO.java
@@ -28,6 +28,10 @@ public class InspectionPlanPageReqVO extends PageParam { @@ -28,6 +28,10 @@ public class InspectionPlanPageReqVO extends PageParam {
28 @Schema(description = "归属(一级部门id)", example = "20800") 28 @Schema(description = "归属(一级部门id)", example = "20800")
29 private Long companyId; 29 private Long companyId;
30 30
  31 + @Schema(description = "部门ID", example = "101")
  32 + private String deptId;
  33 +
  34 +
31 @Schema(description = "道路名称", example = "赵六") 35 @Schema(description = "道路名称", example = "赵六")
32 private String roadName; 36 private String roadName;
33 37
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadSaveReqVO.java
@@ -85,8 +85,7 @@ public class RoadSaveReqVO { @@ -85,8 +85,7 @@ public class RoadSaveReqVO {
85 private String endRemark; 85 private String endRemark;
86 86
87 @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") 87 @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜")
88 - @NotEmpty(message = "备注不能为空")  
89 - @Size(min=0, max = 500, message = "备注不能为空") 88 + @Size(max = 500, message = "备注最大500字符")
90 private String remark; 89 private String remark;
91 90
92 @Schema(description = "归属(一级部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2323") 91 @Schema(description = "归属(一级部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2323")
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadUpdateReqVO.java
@@ -89,8 +89,7 @@ public class RoadUpdateReqVO { @@ -89,8 +89,7 @@ public class RoadUpdateReqVO {
89 private String endRemark; 89 private String endRemark;
90 90
91 @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") 91 @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜")
92 - @NotEmpty(message = "备注不能为空")  
93 - @Size(max = 500, message = "备注不能为空") 92 + @Size(max = 500, message = "备注最大500")
94 private String remark; 93 private String remark;
95 94
96 @Schema(description = "归属(一级部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2323") 95 @Schema(description = "归属(一级部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2323")
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/inspectionplan/InspectionPlanInterceptMapper.java
@@ -23,6 +23,7 @@ public interface InspectionPlanInterceptMapper extends BaseMapperX<InspectionPla @@ -23,6 +23,7 @@ public interface InspectionPlanInterceptMapper extends BaseMapperX<InspectionPla
23 .likeIfPresent(InspectionPlanDO::getPlanName, reqVO.getPlanName()) 23 .likeIfPresent(InspectionPlanDO::getPlanName, reqVO.getPlanName())
24 .eqIfPresent(InspectionPlanDO::getPlanAttr, reqVO.getPlanAttr()) 24 .eqIfPresent(InspectionPlanDO::getPlanAttr, reqVO.getPlanAttr())
25 .eqIfPresent(InspectionPlanDO::getPlanTypeId, reqVO.getPlanTypeId()) 25 .eqIfPresent(InspectionPlanDO::getPlanTypeId, reqVO.getPlanTypeId())
  26 + .eqIfPresent(InspectionPlanDO::getDeptId, reqVO.getDeptId())
26 .eqIfPresent(InspectionPlanDO::getCompanyId, reqVO.getCompanyId()) 27 .eqIfPresent(InspectionPlanDO::getCompanyId, reqVO.getCompanyId())
27 .likeIfPresent(InspectionPlanDO::getRoadName, reqVO.getRoadName()) 28 .likeIfPresent(InspectionPlanDO::getRoadName, reqVO.getRoadName())
28 .eqIfPresent(InspectionPlanDO::getLevelId, reqVO.getLevelId()) 29 .eqIfPresent(InspectionPlanDO::getLevelId, reqVO.getLevelId())
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/api/constant/BpmCommonConstant.java
@@ -26,15 +26,15 @@ public class BpmCommonConstant { @@ -26,15 +26,15 @@ public class BpmCommonConstant {
26 /** 26 /**
27 * 园林问题单图片类型 27 * 园林问题单图片类型
28 */ 28 */
29 - public static final String GARDEN_INSPECT_WO_ATTACH1 = "01"; 29 + public static final String PROBLEM_IMG_GROUP = "01";
30 /** 30 /**
31 - * 园林街道图片类型 31 + * 园林处理结果图片类型
32 */ 32 */
33 - public static final String GARDEN_INSPECT_WO_ATTACH2 = "02"; 33 + public static final String RESULT_IMG_GROUP = "02";
34 /** 34 /**
35 * 园林远景图片类型 35 * 园林远景图片类型
36 */ 36 */
37 - public static final String GARDEN_INSPECT_WO_ATTACH3 = "03"; 37 +// public static final String GARDEN_INSPECT_WO_ATTACH3 = "03";
38 /** 38 /**
39 * 园林工单编号前缀 39 * 园林工单编号前缀
40 */ 40 */
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/AppGardenWorkOrderRespVO.java
@@ -4,6 +4,8 @@ import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInf @@ -4,6 +4,8 @@ import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInf
4 import io.swagger.v3.oas.annotations.media.Schema; 4 import io.swagger.v3.oas.annotations.media.Schema;
5 import lombok.Data; 5 import lombok.Data;
6 6
  7 +import java.util.List;
  8 +
7 /** 9 /**
8 * @author yanhuiqing 10 * @author yanhuiqing
9 * @version 1.0 11 * @version 1.0
@@ -13,4 +15,10 @@ import lombok.Data; @@ -13,4 +15,10 @@ import lombok.Data;
13 @Schema(description = "APP - 园林工单流程 Response VO") 15 @Schema(description = "APP - 园林工单流程 Response VO")
14 @Data 16 @Data
15 public class AppGardenWorkOrderRespVO extends MainInfoRespVO { 17 public class AppGardenWorkOrderRespVO extends MainInfoRespVO {
  18 +
  19 + @Schema(description = "问题图片", example = "9184")
  20 + private List<String> problemImgsList;
  21 +
  22 + @Schema(description = "处理完成照片", example = "9184")
  23 + private List<String> completeImgsList;
16 } 24 }
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/garden/BpmGardenWorkOrderDO.java
1 package com.zteits.urbanops.module.workorder.dal.dataobject.garden; 1 package com.zteits.urbanops.module.workorder.dal.dataobject.garden;
2 2
3 import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; 3 import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
  5 +import lombok.Data;
  6 +
  7 +import java.util.List;
4 8
5 /** 9 /**
6 * @author yanhuiqing 10 * @author yanhuiqing
@@ -8,5 +12,12 @@ import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; @@ -8,5 +12,12 @@ import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO;
8 * @description: TODO 12 * @description: TODO
9 * @date 2025/12/1 11:34 13 * @date 2025/12/1 11:34
10 */ 14 */
  15 +@Data
11 public class BpmGardenWorkOrderDO extends MainInfoDO { 16 public class BpmGardenWorkOrderDO extends MainInfoDO {
  17 +
  18 + @Schema(description = "问题图片", example = "9184")
  19 + private List<String> problemImgsList;
  20 +
  21 + @Schema(description = "处理完成照片", example = "9184")
  22 + private List<String> completeImgsList;
12 } 23 }
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenServiceImpl.java
@@ -31,6 +31,8 @@ import java.time.LocalDateTime; @@ -31,6 +31,8 @@ import java.time.LocalDateTime;
31 import java.util.HashMap; 31 import java.util.HashMap;
32 import java.util.List; 32 import java.util.List;
33 import java.util.Map; 33 import java.util.Map;
  34 +import java.util.Arrays;
  35 +import java.util.stream.Collectors;
34 36
35 import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; 37 import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
36 import static com.zteits.urbanops.module.workorder.enums.ErrorCodeConstants.MAIN_INFO_NOT_EXISTS; 38 import static com.zteits.urbanops.module.workorder.enums.ErrorCodeConstants.MAIN_INFO_NOT_EXISTS;
@@ -175,43 +177,49 @@ public class BpmGardenServiceImpl implements BpmGardenService{ @@ -175,43 +177,49 @@ public class BpmGardenServiceImpl implements BpmGardenService{
175 if(ObjectUtils.isNotAllEmpty(imgList)){ 177 if(ObjectUtils.isNotAllEmpty(imgList)){
176 AttachmentDO saveDO = new AttachmentDO(); 178 AttachmentDO saveDO = new AttachmentDO();
177 saveDO.setBusiLine(workOrder.getBusiLine()); 179 saveDO.setBusiLine(workOrder.getBusiLine());
178 - saveDO.setBusiType(BpmCommonConstant.GARDEN_INSPECT_WO_ATTACH1); 180 + saveDO.setBusiType(BpmCommonConstant.PROBLEM_IMG_GROUP);
179 saveDO.setOrderNo(workOrder.getOrderNo()); 181 saveDO.setOrderNo(workOrder.getOrderNo());
180 String filePaths = String.join(",",imgList); 182 String filePaths = String.join(",",imgList);
181 saveDO.setFileNames(filePaths); 183 saveDO.setFileNames(filePaths);
182 LambdaQueryWrapper<AttachmentDO> deleteWrapper = new LambdaQueryWrapper<AttachmentDO>() 184 LambdaQueryWrapper<AttachmentDO> deleteWrapper = new LambdaQueryWrapper<AttachmentDO>()
183 .eq(AttachmentDO::getBusiLine, workOrder.getBusiLine()) 185 .eq(AttachmentDO::getBusiLine, workOrder.getBusiLine())
184 - .eq(AttachmentDO::getBusiType, BpmCommonConstant.GARDEN_INSPECT_WO_ATTACH1) 186 + .eq(AttachmentDO::getBusiType, BpmCommonConstant.PROBLEM_IMG_GROUP)
185 .eq(AttachmentDO::getOrderNo, workOrder.getOrderNo()); 187 .eq(AttachmentDO::getOrderNo, workOrder.getOrderNo());
186 attachmentMapper.delete(deleteWrapper); 188 attachmentMapper.delete(deleteWrapper);
187 attachmentMapper.insert(saveDO); 189 attachmentMapper.insert(saveDO);
188 } 190 }
189 - //街道图片  
190 - if(ObjectUtils.isNotAllEmpty(streetImgList)){  
191 - AttachmentDO saveDO = new AttachmentDO();  
192 - saveDO.setBusiLine(workOrder.getBusiLine());  
193 - saveDO.setBusiType(BpmCommonConstant.GARDEN_INSPECT_WO_ATTACH2);  
194 - saveDO.setOrderNo(workOrder.getOrderNo());  
195 - String filePaths = String.join(",",streetImgList);  
196 - saveDO.setFileNames(filePaths);  
197 - LambdaQueryWrapper<AttachmentDO> deleteWrapper = new LambdaQueryWrapper<AttachmentDO>()  
198 - .eq(AttachmentDO::getBusiLine, workOrder.getBusiLine())  
199 - .eq(AttachmentDO::getBusiType, BpmCommonConstant.GARDEN_INSPECT_WO_ATTACH2)  
200 - .eq(AttachmentDO::getOrderNo, workOrder.getOrderNo());  
201 - attachmentMapper.delete(deleteWrapper);  
202 - attachmentMapper.insert(saveDO); 191 +// //街道图片
  192 +// if(ObjectUtils.isNotAllEmpty(streetImgList)){
  193 +// AttachmentDO saveDO = new AttachmentDO();
  194 +// saveDO.setBusiLine(workOrder.getBusiLine());
  195 +// saveDO.setBusiType(BpmCommonConstant.GARDEN_INSPECT_WO_ATTACH2);
  196 +// saveDO.setOrderNo(workOrder.getOrderNo());
  197 +// String filePaths = String.join(",",streetImgList);
  198 +// saveDO.setFileNames(filePaths);
  199 +// LambdaQueryWrapper<AttachmentDO> deleteWrapper = new LambdaQueryWrapper<AttachmentDO>()
  200 +// .eq(AttachmentDO::getBusiLine, workOrder.getBusiLine())
  201 +// .eq(AttachmentDO::getBusiType, BpmCommonConstant.GARDEN_INSPECT_WO_ATTACH2)
  202 +// .eq(AttachmentDO::getOrderNo, workOrder.getOrderNo());
  203 +// attachmentMapper.delete(deleteWrapper);
  204 +// attachmentMapper.insert(saveDO);
  205 +// }
  206 + List<String> resultImgs = new java.util.ArrayList<>();
  207 + if (ObjectUtils.isNotAllEmpty(streetImgList)) {
  208 + resultImgs.addAll(streetImgList);
  209 + }
  210 + if (ObjectUtils.isNotAllEmpty(longRangeImgList)) {
  211 + resultImgs.addAll(longRangeImgList);
203 } 212 }
204 - //远景图片  
205 - if(ObjectUtils.isNotAllEmpty(longRangeImgList)){ 213 + if(ObjectUtils.isNotAllEmpty(resultImgs)){
206 AttachmentDO saveDO = new AttachmentDO(); 214 AttachmentDO saveDO = new AttachmentDO();
207 saveDO.setBusiLine(workOrder.getBusiLine()); 215 saveDO.setBusiLine(workOrder.getBusiLine());
208 - saveDO.setBusiType(BpmCommonConstant.GARDEN_INSPECT_WO_ATTACH3); 216 + saveDO.setBusiType(BpmCommonConstant.RESULT_IMG_GROUP);
209 saveDO.setOrderNo(workOrder.getOrderNo()); 217 saveDO.setOrderNo(workOrder.getOrderNo());
210 - String filePaths = String.join(",",longRangeImgList); 218 + String filePaths = String.join(",",resultImgs);
211 saveDO.setFileNames(filePaths); 219 saveDO.setFileNames(filePaths);
212 LambdaQueryWrapper<AttachmentDO> deleteWrapper = new LambdaQueryWrapper<AttachmentDO>() 220 LambdaQueryWrapper<AttachmentDO> deleteWrapper = new LambdaQueryWrapper<AttachmentDO>()
213 .eq(AttachmentDO::getBusiLine, workOrder.getBusiLine()) 221 .eq(AttachmentDO::getBusiLine, workOrder.getBusiLine())
214 - .eq(AttachmentDO::getBusiType, BpmCommonConstant.GARDEN_INSPECT_WO_ATTACH3) 222 + .eq(AttachmentDO::getBusiType, BpmCommonConstant.RESULT_IMG_GROUP)
215 .eq(AttachmentDO::getOrderNo, workOrder.getOrderNo()); 223 .eq(AttachmentDO::getOrderNo, workOrder.getOrderNo());
216 attachmentMapper.delete(deleteWrapper); 224 attachmentMapper.delete(deleteWrapper);
217 attachmentMapper.insert(saveDO); 225 attachmentMapper.insert(saveDO);
@@ -220,6 +228,24 @@ public class BpmGardenServiceImpl implements BpmGardenService{ @@ -220,6 +228,24 @@ public class BpmGardenServiceImpl implements BpmGardenService{
220 228
221 } 229 }
222 230
  231 + private List<String> attachmentGet(String busiLine, String busiType, String orderNo) {
  232 + LambdaQueryWrapper<AttachmentDO> queryWrapper = new LambdaQueryWrapper<AttachmentDO>()
  233 + .eq(AttachmentDO::getBusiLine, busiLine)
  234 + .eq(AttachmentDO::getBusiType, busiType)
  235 + .eq(AttachmentDO::getOrderNo, orderNo);
  236 + List<AttachmentDO> attachments = attachmentMapper.selectList(queryWrapper);
  237 + if (attachments == null || attachments.isEmpty()) {
  238 + return List.of();
  239 + }
  240 + return attachments.stream()
  241 + .map(AttachmentDO::getFileNames)
  242 + .filter(s -> s != null && !s.isEmpty())
  243 + .flatMap(s -> Arrays.stream(s.split(",")).map(String::trim))
  244 + .filter(s -> !s.isEmpty())
  245 + .distinct()
  246 + .collect(Collectors.toList());
  247 + }
  248 +
223 249
224 @Override 250 @Override
225 public void updateWorkOrderStatus(Long id, Integer status) { 251 public void updateWorkOrderStatus(Long id, Integer status) {
@@ -236,7 +262,8 @@ public class BpmGardenServiceImpl implements BpmGardenService{ @@ -236,7 +262,8 @@ public class BpmGardenServiceImpl implements BpmGardenService{
236 public BpmGardenWorkOrderDO getWorkOrder(Long id) { 262 public BpmGardenWorkOrderDO getWorkOrder(Long id) {
237 MainInfoDO workOrder = workOrderMapper.selectById(id); 263 MainInfoDO workOrder = workOrderMapper.selectById(id);
238 BpmGardenWorkOrderDO targetVo = BeanUtils.toBean(workOrder, BpmGardenWorkOrderDO.class); 264 BpmGardenWorkOrderDO targetVo = BeanUtils.toBean(workOrder, BpmGardenWorkOrderDO.class);
239 - //TODO 定义页面展示字段在此扩展 265 + targetVo.setProblemImgsList(attachmentGet(workOrder.getBusiLine(), BpmCommonConstant.PROBLEM_IMG_GROUP, workOrder.getOrderNo()));
  266 + targetVo.setCompleteImgsList(attachmentGet(workOrder.getBusiLine(), BpmCommonConstant.RESULT_IMG_GROUP, workOrder.getOrderNo()));
240 return targetVo; 267 return targetVo;
241 } 268 }
242 269
urbanops-server/src/main/resources/application.yaml
@@ -67,7 +67,7 @@ flowable: @@ -67,7 +67,7 @@ flowable:
67 mybatis-plus: 67 mybatis-plus:
68 configuration: 68 configuration:
69 map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。 69 map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。
70 - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 70 + # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
71 global-config: 71 global-config:
72 db-config: 72 db-config:
73 id-type: NONE # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。 73 id-type: NONE # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。