diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/maininfo/AppMainInfoController.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/maininfo/AppMainInfoController.java index 89bb695..bb98588 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/maininfo/AppMainInfoController.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/maininfo/AppMainInfoController.java @@ -13,6 +13,7 @@ import com.zteits.urbanops.module.system.service.dept.DeptService; import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.AdminMainInfoRespVO; import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInfoPageReqVO; import com.zteits.urbanops.module.workorder.controller.app.maininfo.vo.AppMainInfoPageReqVO; +import com.zteits.urbanops.module.workorder.controller.app.maininfo.vo.AppMainInfoRespVO; import com.zteits.urbanops.module.workorder.convert.maininfo.MainInfoConvert; import com.zteits.urbanops.module.workorder.dal.dataobject.attachment.AttachmentDO; import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; @@ -60,22 +61,21 @@ public class AppMainInfoController { @GetMapping("/get") @Operation(summary = "获得工单信息") @Parameter(name = "id", description = "编号", required = true, example = "1024") - public CommonResult getMainInfo(@RequestParam("id") Long id) { + public CommonResult getMainInfo(@RequestParam("id") Long id) { MainInfoDO mainInfo = mainInfoService.getMainInfo(id); - // 若订单号列表非空,查询附件;否则跳过 - Map attachmentMap = Collections.emptyMap(); + Map> attachmentMap = Collections.emptyMap(); if (mainInfo != null) { List attachmentDOList = attachmentService.getAttachmentByOrderNo(Arrays.asList(mainInfo.getOrderNo())); - // 构建订单号→附件对象的映射(处理重复key,取第一个对象) if (!CollectionUtils.isEmpty(attachmentDOList)) { attachmentMap = attachmentDOList.stream() - .filter(attachmentDO -> "01".equals(attachmentDO.getBusiType())) - .collect(Collectors.toMap( - AttachmentDO::getOrderNo, // key:订单号 - attachmentDO -> attachmentDO, // value:附件对象 - (existing, replacement) -> existing // 重复key时保留已有值 - )); + .collect(Collectors.groupingBy( + AttachmentDO::getBusiType, + Collectors.mapping( + AttachmentDO::getFileNames, + Collectors.toList() + ) + )); } } @@ -95,7 +95,7 @@ public class AppMainInfoController { } userIds.add(mainInfo.getUserId()); Map userMap = adminUserApi.getUserMap(userIds); - return success(MainInfoConvert.INSTANCE.buildMainInfo(mainInfo, attachmentMap, companyName, userMap)); + return success(MainInfoConvert.INSTANCE.appBuildMainInfo(mainInfo, attachmentMap, companyName, userMap)); } @GetMapping("/page") diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/maininfo/vo/AppMainInfoPageReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/maininfo/vo/AppMainInfoPageReqVO.java index ca90a9b..4993fa0 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/maininfo/vo/AppMainInfoPageReqVO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/maininfo/vo/AppMainInfoPageReqVO.java @@ -15,6 +15,12 @@ import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YE @Data public class AppMainInfoPageReqVO extends PageParam { + @Schema(description = "搜索类型:1 位置 2 工单名称 3 情况描述 4 工单编号", example = "1") + private String type; + + @Schema(description = "搜索输入内容", example = "祭旁") + private String searchContent; + @Schema(description = "工单号") private String orderNo; @@ -24,6 +30,11 @@ public class AppMainInfoPageReqVO extends PageParam { @Schema(description = "审批状态", example = "2") private Integer status; + @Schema(description = "经纬度地址") + private String lonLatAddress; + + @Schema(description = "工单描述", example = "你说的对") + private String remark; /** * 时间数组:[开始时间, 结束时间] * 由 beginTime 和 endTime 自动组装 diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/maininfo/vo/AppMainInfoRespVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/maininfo/vo/AppMainInfoRespVO.java new file mode 100644 index 0000000..102ace1 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/maininfo/vo/AppMainInfoRespVO.java @@ -0,0 +1,184 @@ +package com.zteits.urbanops.module.workorder.controller.app.maininfo.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +@Schema(description = "管理后台 - 工单信息 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AppMainInfoRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "7114") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "业务线:yl 园林,wy 物业,sz 市政 ", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("业务线:yl 园林,wy 物业,sz 市政 ") + private String busiLine; + + @Schema(description = "工单号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工单号") + private String orderNo; + + @Schema(description = "工单名称", example = "张三") + @ExcelProperty("工单名称") + private String orderName; + + /** + * 工单类型 Q:快速工单,C:普通工单,O:其他工单 + */ + private String orderType; + + @Schema(description = "来源ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1828") + @ExcelProperty("来源ID 问题来源 1、巡查,2、游客居民,3、12345,4、网格 5、大区经理") + private Integer sourceId; + + @Schema(description = "来源名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("来源名称") + private String sourceName; + + @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21128") + @ExcelProperty("道路ID") + private Long roadId; + + @Schema(description = "道路名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("道路名称") + private String roadName; + + @Schema(description = "街道ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27852") + @ExcelProperty("街道ID") + private String streetId; + + @Schema(description = "街道名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("街道名称") + private String streetName; + + @Schema(description = "养护级别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28278") + @ExcelProperty("养护级别ID") + private Integer curingLevelId; + + @Schema(description = "养护级别", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("养护级别") + private String curingLevelName; + + @Schema(description = "提交日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("提交日期") + private LocalDateTime commitDate; + + @Schema(description = "希望完成时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("希望完成时间") + private LocalDateTime expectedFinishDate; + + @Schema(description = "完成时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("完成时间") + private LocalDateTime finishDate; + + @Schema(description = "紧急程度:1:特急;2:紧急;3:一般", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("紧急程度:1:特急;2:紧急;3:一般") + private Integer pressingType; + + @Schema(description = "提交用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12757") + private Long userId; + + @Schema(description = "提交用户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("提交用户名称") + private String userName; + + @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26936") + private Long companyId; + + @Schema(description = "单位名称") + @ExcelProperty("单位名称") + private String companyName; + + @Schema(description = "经纬度类型: 1:国标; 2:百度;3:高德;4:腾讯", example = "2") + @ExcelProperty("经纬度类型: 1:国标; 2:百度;3:高德;4:腾讯") + private Integer latLonType; + + @Schema(description = "经度", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("经度") + private BigDecimal lat; + + @Schema(description = "维度", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("维度") + private BigDecimal lon; + + @Schema(description = "经纬度地址", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("经纬度地址") + private String lonLatAddress; + + @Schema(description = "三方工单ID") + @ExcelProperty("三方工单ID") + private String thirdWorkNo; + + @Schema(description = "三方工单结果上报状态:1:待推送;2:推送成功;3:推送失败") + @ExcelProperty("三方工单结果上报状态:1:待推送;2:推送成功;3:推送失败") + private Integer thirdPushState; + + @Schema(description = "业务状态", example = "1") + @ExcelProperty("业务状态") + private String buzStatus; + + @Schema(description = "审批状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("审批状态") + private Integer status; + + @Schema(description = "流程实例的编号", example = "9184") + @ExcelProperty("流程实例的编号") + private String processInstanceId; + + @Schema(description = "工单描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") + @ExcelProperty("工单描述") + private String remark; + + @Schema(description = "工单完成结果描述", example = "已完成") + @ExcelProperty("工单完成结果描述") + private String handleResult; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "文件名称") + private List fileNames; + + @Schema(description = "共同处理人") + private Set coHandlers; + @Schema(description = "共同处理人名称,多个为数组") + private List coHandlersName; + + @Schema(description = "提交人电话") + private String userMobile; + + @Schema(description = "养护员") + private String workerName; + + @Schema(description = "实施人员部门id") + private Long workerCompanyId; + + @Schema(description = "处理人") + private String assigneeName; + + @Schema(description = "审批节点") + private String approvalNode; + + @Schema(description = "问题图片") + private List problemsImgs; + @Schema(description = "开始图片") + private List startImgs; + @Schema(description = "处理中图片") + private List processingImgs; + @Schema(description = "结束图片") + private List endImgs; + @Schema(description = "人员图片") + private List personImgs; + @Schema(description = "物料图片") + private List materialImgs; +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/maininfo/MainInfoConvert.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/maininfo/MainInfoConvert.java index 55dd407..a66ff2e 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/maininfo/MainInfoConvert.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/maininfo/MainInfoConvert.java @@ -6,6 +6,7 @@ import com.zteits.urbanops.framework.common.util.object.BeanUtils; import com.zteits.urbanops.module.bpm.api.task.dto.BpmUserSimpleReqDTO; import com.zteits.urbanops.module.system.api.user.dto.AdminUserRespDTO; import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.AdminMainInfoRespVO; +import com.zteits.urbanops.module.workorder.controller.app.maininfo.vo.AppMainInfoRespVO; import com.zteits.urbanops.module.workorder.dal.dataobject.attachment.AttachmentDO; import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; import org.mapstruct.Mapper; @@ -90,4 +91,36 @@ public interface MainInfoConvert { } return mainInfoVo; } + + default AppMainInfoRespVO appBuildMainInfo(MainInfoDO mainInfoDO, Map> attachmentMap, String deptName, Map userMap) { + AppMainInfoRespVO mainInfoVo = BeanUtils.toBean(mainInfoDO, AppMainInfoRespVO.class); + if (mainInfoDO != null) { + if (attachmentMap != null && !attachmentMap.isEmpty()){ + //01 问题图片,02 开始图片,03 进行中图片,04 已完成图片,05 人员图片:06 材料图片 + mainInfoVo.setProblemsImgs(attachmentMap.getOrDefault("01", List.of())); + mainInfoVo.setStartImgs(attachmentMap.getOrDefault("02", List.of())); + mainInfoVo.setProcessingImgs(attachmentMap.getOrDefault("03", List.of())); + mainInfoVo.setEndImgs(attachmentMap.getOrDefault("04", List.of())); + mainInfoVo.setPersonImgs(attachmentMap.getOrDefault("05", List.of())); + mainInfoVo.setMaterialImgs(attachmentMap.getOrDefault("06", List.of())); + } + mainInfoVo.setCompanyName(deptName); + if (mainInfoVo.getCoHandlers() != null && !mainInfoVo.getCoHandlers().isEmpty()) { + List coHandlersNameList = Optional.ofNullable(mainInfoVo.getCoHandlers()) + .orElse(Set.of()) + .stream() + .filter(Objects::nonNull) + .map(userMap::get) + .filter(Objects::nonNull) + .map(AdminUserRespDTO::getNickname) + .filter(nickname -> nickname != null && !nickname.isEmpty()) + .collect(Collectors.toList()); + mainInfoVo.setCoHandlersName(coHandlersNameList); + }else{ + mainInfoVo.setCoHandlersName(new ArrayList<>()); + } + mainInfoVo.setUserMobile(userMap.get(mainInfoVo.getUserId()).getMobile()); + } + return mainInfoVo; + } } diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoMapper.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoMapper.java index 78ac38e..e424b9f 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoMapper.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoMapper.java @@ -153,6 +153,8 @@ public interface MainInfoMapper extends BaseMapperX { .likeIfPresent(MainInfoDO::getOrderName, reqVO.getOrderName()) .eqIfPresent(MainInfoDO::getStatus, reqVO.getStatus()) .betweenIfPresent(MainInfoDO::getCreateTime, reqVO.getCreateTime()) + .likeIfPresent(MainInfoDO::getLonLatAddress, reqVO.getLonLatAddress()) + .likeIfPresent(MainInfoDO::getRemark, reqVO.getRemark()) .orderByDesc(MainInfoDO::getId); return selectPage(reqVO, queryWrapper); } diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/maininfo/MainInfoServiceImpl.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/maininfo/MainInfoServiceImpl.java index eaf1bc1..9af1ba7 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/maininfo/MainInfoServiceImpl.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/maininfo/MainInfoServiceImpl.java @@ -2,6 +2,7 @@ package com.zteits.urbanops.module.workorder.service.maininfo; import com.zteits.urbanops.framework.common.pojo.PageResult; import com.zteits.urbanops.framework.common.util.object.BeanUtils; +import com.zteits.urbanops.framework.common.util.object.ObjectUtils; import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInfoPageReqVO; import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInfoSaveReqVO; import com.zteits.urbanops.module.workorder.controller.app.maininfo.vo.AppMainInfoPageReqVO; @@ -84,6 +85,27 @@ public class MainInfoServiceImpl implements MainInfoService { } public PageResult selectPageExcludeQuickOrder(AppMainInfoPageReqVO pageReqVO) { + String type = pageReqVO.getType(); + String content = pageReqVO.getSearchContent(); + if (ObjectUtils.isNotAllEmpty(type)){ + if("1".equals(type)){ + if(ObjectUtils.isNotAllEmpty(content)){pageReqVO.setLonLatAddress(content);} + } else if("2".equals(type)){ + if(ObjectUtils.isNotAllEmpty(content)){pageReqVO.setOrderName(content);} + } else if("3".equals(type)){ + if(ObjectUtils.isNotAllEmpty(content)){pageReqVO.setRemark(content);} + } else if("4".equals(type)){ + if(ObjectUtils.isNotAllEmpty(content)){pageReqVO.setOrderNo(content);} + } else { + if (ObjectUtils.isNotAllEmpty(content)) { + pageReqVO.setOrderName(content); + } + } + } else {//默认是工单名称 + if (ObjectUtils.isNotAllEmpty(content)) { + pageReqVO.setOrderName(content); + } + } return mainInfoMapper.selectPageExcludeQuickOrder(pageReqVO); }