Commit 72d5114e0d041f4a5a7c991f8bd1eca1e1207307
1 parent
4e125469
PC端增加代办接口
Showing
8 changed files
with
566 additions
and
1 deletions
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/BpmGardenInspectController.java
| ... | ... | @@ -3,19 +3,34 @@ package com.zteits.urbanops.module.workorder.controller.admin.garden; |
| 3 | 3 | import com.zteits.urbanops.framework.common.pojo.CommonResult; |
| 4 | 4 | import com.zteits.urbanops.framework.common.pojo.PageResult; |
| 5 | 5 | import com.zteits.urbanops.framework.common.util.object.BeanUtils; |
| 6 | -import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderCreateReqVO; | |
| 6 | +import com.zteits.urbanops.module.bpm.api.task.BpmTaskApi; | |
| 7 | +import com.zteits.urbanops.module.bpm.api.task.dto.BpmUserSimpleReqDTO; | |
| 8 | +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenTaskAssignReqVO; | |
| 7 | 9 | import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderPageReqVO; |
| 8 | 10 | import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderRespVO; |
| 11 | +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.task.AdminGardenTaskApproveReqVO; | |
| 12 | +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.task.AppGardenTaskApproveReqVO; | |
| 13 | +import com.zteits.urbanops.module.workorder.dal.dataobject.attachment.AttachmentDO; | |
| 9 | 14 | import com.zteits.urbanops.module.workorder.dal.dataobject.garden.BpmGardenWorkOrderDO; |
| 15 | +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoExtDO; | |
| 16 | +import com.zteits.urbanops.module.workorder.service.attachment.AttachmentService; | |
| 17 | +import com.zteits.urbanops.module.workorder.service.garden.BpmGardenAdminService; | |
| 10 | 18 | import com.zteits.urbanops.module.workorder.service.garden.BpmGardenService; |
| 11 | 19 | import io.swagger.v3.oas.annotations.Operation; |
| 12 | 20 | import io.swagger.v3.oas.annotations.Parameter; |
| 13 | 21 | import io.swagger.v3.oas.annotations.tags.Tag; |
| 14 | 22 | import jakarta.annotation.Resource; |
| 15 | 23 | import jakarta.validation.Valid; |
| 24 | +import org.apache.commons.collections4.CollectionUtils; | |
| 16 | 25 | import org.springframework.security.access.prepost.PreAuthorize; |
| 17 | 26 | import org.springframework.validation.annotation.Validated; |
| 18 | 27 | import org.springframework.web.bind.annotation.*; |
| 28 | +import com.zteits.urbanops.module.workorder.convert.garden.AdminGardenTaskConvert; | |
| 29 | + | |
| 30 | +import java.util.Collections; | |
| 31 | +import java.util.List; | |
| 32 | +import java.util.Map; | |
| 33 | +import java.util.stream.Collectors; | |
| 19 | 34 | |
| 20 | 35 | import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; |
| 21 | 36 | import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
| ... | ... | @@ -34,6 +49,15 @@ public class BpmGardenInspectController { |
| 34 | 49 | @Resource |
| 35 | 50 | private BpmGardenService gardenService; |
| 36 | 51 | |
| 52 | + @Resource | |
| 53 | + BpmGardenAdminService gardenAdminService; | |
| 54 | + | |
| 55 | + @Resource | |
| 56 | + AttachmentService attachmentService; | |
| 57 | + | |
| 58 | + @Resource | |
| 59 | + private BpmTaskApi bpmTaskApi; | |
| 60 | + | |
| 37 | 61 | /*@PostMapping("/create") |
| 38 | 62 | @PreAuthorize("@ss.hasPermission('bpm:garden-inspection:create')") |
| 39 | 63 | @Operation(summary = "创建请求申请") |
| ... | ... | @@ -57,4 +81,64 @@ public class BpmGardenInspectController { |
| 57 | 81 | PageResult<BpmGardenWorkOrderDO> pageResult = gardenService.getGardenInspectionPage(getLoginUserId(), pageVO); |
| 58 | 82 | return success(BeanUtils.toBean(pageResult, BpmGardenWorkOrderRespVO.class)); |
| 59 | 83 | } |
| 84 | + | |
| 85 | + | |
| 86 | + @GetMapping("todoBuzSimplePage") | |
| 87 | + @Operation(summary = "PC - 获取工单业务待办任务分页") | |
| 88 | + //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:query')") | |
| 89 | + public CommonResult<PageResult<BpmGardenWorkOrderRespVO>> getTaskTodoBuzSimplePage(@Valid BpmGardenWorkOrderPageReqVO pageVO) { | |
| 90 | + PageResult<MainInfoExtDO> pageResult = gardenAdminService.getTaskTodoBuzSimplePage(pageVO); | |
| 91 | + if (pageResult == null) { | |
| 92 | + return success(PageResult.empty()); | |
| 93 | + } | |
| 94 | + // 2. 初始化附件映射(默认空Map,避免后续空指针) | |
| 95 | + Map<String, AttachmentDO> attachmentMap = Collections.emptyMap(); | |
| 96 | + | |
| 97 | + // 3. 空值防护:分页结果非空且列表非空时,才查询附件 | |
| 98 | + if (pageResult != null && !CollectionUtils.isEmpty(pageResult.getList())) { | |
| 99 | + // 提取订单号列表 | |
| 100 | + List<String> orderNoList = pageResult.getList().stream() | |
| 101 | + .map(MainInfoExtDO::getOrderNo) | |
| 102 | + .filter(orderNo -> orderNo != null && !orderNo.isBlank()) | |
| 103 | + .collect(Collectors.toList()); | |
| 104 | + | |
| 105 | + // 若订单号列表非空,查询附件;否则跳过 | |
| 106 | + if (!CollectionUtils.isEmpty(orderNoList)) { | |
| 107 | + List<AttachmentDO> attachmentDOList = attachmentService.getAttachmentByOrderNo(orderNoList); | |
| 108 | + // 构建订单号→附件对象的映射(处理重复key,取第一个对象) | |
| 109 | + if (!CollectionUtils.isEmpty(attachmentDOList)) { | |
| 110 | + attachmentMap = attachmentDOList.stream() | |
| 111 | + .filter(attachmentDO -> "01".equals(attachmentDO.getBusiType())) | |
| 112 | + .collect(Collectors.toMap( | |
| 113 | + AttachmentDO::getOrderNo, // key:订单号 | |
| 114 | + attachmentDO -> attachmentDO, // value:附件对象 | |
| 115 | + (existing, replacement) -> existing // 重复key时保留已有值 | |
| 116 | + )); | |
| 117 | + } | |
| 118 | + } | |
| 119 | + } | |
| 120 | + //4. 查询处理人 | |
| 121 | + List<String> processInstanceIdList = pageResult.getList().stream() | |
| 122 | + .map(MainInfoExtDO::getProcessInstanceId) | |
| 123 | + .filter(orderNo -> orderNo != null && !orderNo.isBlank()) | |
| 124 | + .collect(Collectors.toList()); | |
| 125 | + | |
| 126 | + //Map<String, BpmUserSimpleReqDTO> bpmTaskRespVOS = bpmTaskApi.getLastTaskMapByProcessInstanceId(processInstanceIdList); | |
| 127 | + return success(AdminGardenTaskConvert.INSTANCE.buildMainInfoPage(pageResult, attachmentMap, null)); | |
| 128 | + } | |
| 129 | + | |
| 130 | + @PutMapping("assignWOrder") | |
| 131 | + @Operation(summary = "分配工单提交任务") | |
| 132 | + //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')") | |
| 133 | + public CommonResult<Boolean> assignWOrder(@Valid @RequestBody List<BpmGardenTaskAssignReqVO> reqVO) { | |
| 134 | + return success(gardenAdminService.assignWOrder(reqVO)); | |
| 135 | + } | |
| 136 | + | |
| 137 | + @PutMapping("/approve") | |
| 138 | + @Operation(summary = "app - 审批通过任务") | |
| 139 | + //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')") | |
| 140 | + public CommonResult<Boolean> approveTask(@Valid @RequestBody AdminGardenTaskApproveReqVO reqVO) { | |
| 141 | + //gardenService.approveTask(reqVO); | |
| 142 | + return success(true); | |
| 143 | + } | |
| 60 | 144 | } | ... | ... |
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenTaskAssignReqVO.java
0 → 100644
| 1 | +package com.zteits.urbanops.module.workorder.controller.admin.garden.vo; | |
| 2 | + | |
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | |
| 4 | +import jakarta.validation.constraints.NotEmpty; | |
| 5 | +import jakarta.validation.constraints.NotNull; | |
| 6 | +import lombok.Data; | |
| 7 | + | |
| 8 | +import java.time.LocalDateTime; | |
| 9 | + | |
| 10 | +/** | |
| 11 | + * @Author wangqian | |
| 12 | + * @Description 分配任务请求reqVO | |
| 13 | + * @Date 2025/12/20 10:14 | |
| 14 | + * @Param null | |
| 15 | + * @Return | |
| 16 | + */ | |
| 17 | +@Schema(description = "分配工单流程任务的 Request VO") | |
| 18 | +@Data | |
| 19 | +public class BpmGardenTaskAssignReqVO { | |
| 20 | + | |
| 21 | + @Schema(description = "工单表主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | |
| 22 | + @NotNull(message = "id不能为空") | |
| 23 | + private Long id; | |
| 24 | + | |
| 25 | + @Schema(description = "工单处理方", requiredMode = Schema.RequiredMode.REQUIRED, example = "yl") | |
| 26 | + @NotEmpty(message = "工单处理方不能为空") | |
| 27 | + private String busiLine; | |
| 28 | + | |
| 29 | + @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21128") | |
| 30 | + @NotNull(message = "道路ID不能为空") | |
| 31 | + private Long roadId; | |
| 32 | + | |
| 33 | + @Schema(description = "道路名称", example = "测试道路") | |
| 34 | + private String roadName; | |
| 35 | + | |
| 36 | + @Schema(description = "紧急程度:1:特急;2:紧急;3:一般", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") | |
| 37 | + @NotNull(message = "紧急程度:1:特急;2:紧急;3:一般不能为空") | |
| 38 | + private Integer pressingType; | |
| 39 | + | |
| 40 | + @Schema(description = "完成时间") | |
| 41 | + private LocalDateTime finishDate; | |
| 42 | + | |
| 43 | +} | ... | ... |
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderPageReqVO.java
| ... | ... | @@ -13,4 +13,25 @@ import lombok.Data; |
| 13 | 13 | @Schema(description = "管理后台 - 园林工单申请分页 Request VO") |
| 14 | 14 | @Data |
| 15 | 15 | public class BpmGardenWorkOrderPageReqVO extends PageParam { |
| 16 | + | |
| 17 | + @Schema(description = "工单号") | |
| 18 | + private String orderNo; | |
| 19 | + | |
| 20 | + @Schema(description = "工单名称", example = "张三") | |
| 21 | + private String orderName; | |
| 22 | + @Schema(description = "工单描述", example = "你说的对") | |
| 23 | + private String remark; | |
| 24 | + @Schema(description = "来源ID", example = "1") | |
| 25 | + private Integer sourceId; | |
| 26 | + | |
| 27 | + @Schema(description = "街道ID", example = "27852") | |
| 28 | + private String streetId; | |
| 29 | + | |
| 30 | + @Schema(description = "养护级别ID", example = "1") | |
| 31 | + private Integer curingLevelId; | |
| 32 | + @Schema(description = "紧急程度:1:特急;2:紧急;3:一般", example = "2") | |
| 33 | + private Integer pressingType; | |
| 34 | + | |
| 35 | + @Schema(description = "审批状态", example = "2") | |
| 36 | + private Integer status; | |
| 16 | 37 | } | ... | ... |
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderRespVO.java
| 1 | 1 | package com.zteits.urbanops.module.workorder.controller.admin.garden.vo; |
| 2 | 2 | |
| 3 | +import cn.idev.excel.annotation.ExcelProperty; | |
| 3 | 4 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | 5 | import lombok.Data; |
| 5 | 6 | |
| 7 | +import java.math.BigDecimal; | |
| 8 | +import java.time.LocalDateTime; | |
| 9 | +import java.util.List; | |
| 10 | +import java.util.Set; | |
| 11 | + | |
| 6 | 12 | /** |
| 7 | 13 | * @author yanhuiqing |
| 8 | 14 | * @version 1.0 |
| ... | ... | @@ -12,4 +18,188 @@ import lombok.Data; |
| 12 | 18 | @Schema(description = "管理后台 - 园林工单流程 Response VO") |
| 13 | 19 | @Data |
| 14 | 20 | public class BpmGardenWorkOrderRespVO { |
| 21 | + | |
| 22 | + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "7114") | |
| 23 | + @ExcelProperty("ID") | |
| 24 | + private Long id; | |
| 25 | + | |
| 26 | + @Schema(description = "业务线:yl 园林,wy 物业,sz 市政 ", requiredMode = Schema.RequiredMode.REQUIRED) | |
| 27 | + @ExcelProperty("业务线:yl 园林,wy 物业,sz 市政 ") | |
| 28 | + private String busiLine; | |
| 29 | + | |
| 30 | + @Schema(description = "工单号", requiredMode = Schema.RequiredMode.REQUIRED) | |
| 31 | + @ExcelProperty("工单号") | |
| 32 | + private String orderNo; | |
| 33 | + | |
| 34 | + @Schema(description = "工单名称", example = "张三") | |
| 35 | + @ExcelProperty("工单名称") | |
| 36 | + private String orderName; | |
| 37 | + | |
| 38 | + /** | |
| 39 | + * 工单类型 Q:快速工单,C:普通工单,O:其他工单 | |
| 40 | + */ | |
| 41 | + private String orderType; | |
| 42 | + | |
| 43 | + @Schema(description = "来源ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1828") | |
| 44 | + @ExcelProperty("来源ID 问题来源 1、巡查,2、游客居民,3、12345,4、网格 5、大区经理") | |
| 45 | + private Integer sourceId; | |
| 46 | + | |
| 47 | + @Schema(description = "来源名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") | |
| 48 | + @ExcelProperty("来源名称") | |
| 49 | + private String sourceName; | |
| 50 | + | |
| 51 | + @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21128") | |
| 52 | + @ExcelProperty("道路ID") | |
| 53 | + private Long roadId; | |
| 54 | + | |
| 55 | + @Schema(description = "道路名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") | |
| 56 | + @ExcelProperty("道路名称") | |
| 57 | + private String roadName; | |
| 58 | + | |
| 59 | + @Schema(description = "街道ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27852") | |
| 60 | + @ExcelProperty("街道ID") | |
| 61 | + private String streetId; | |
| 62 | + | |
| 63 | + @Schema(description = "街道名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") | |
| 64 | + @ExcelProperty("街道名称") | |
| 65 | + private String streetName; | |
| 66 | + | |
| 67 | + @Schema(description = "养护级别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28278") | |
| 68 | + @ExcelProperty("养护级别ID") | |
| 69 | + private Integer curingLevelId; | |
| 70 | + | |
| 71 | + @Schema(description = "养护级别", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") | |
| 72 | + @ExcelProperty("养护级别") | |
| 73 | + private String curingLevelName; | |
| 74 | + | |
| 75 | + @Schema(description = "提交日期", requiredMode = Schema.RequiredMode.REQUIRED) | |
| 76 | + @ExcelProperty("提交日期") | |
| 77 | + private LocalDateTime commitDate; | |
| 78 | + | |
| 79 | + @Schema(description = "希望完成时间", requiredMode = Schema.RequiredMode.REQUIRED) | |
| 80 | + @ExcelProperty("希望完成时间") | |
| 81 | + private LocalDateTime expectedFinishDate; | |
| 82 | + | |
| 83 | + @Schema(description = "完成时间", requiredMode = Schema.RequiredMode.REQUIRED) | |
| 84 | + @ExcelProperty("完成时间") | |
| 85 | + private LocalDateTime finishDate; | |
| 86 | + | |
| 87 | + @Schema(description = "紧急程度:1:特急;2:紧急;3:一般", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") | |
| 88 | + @ExcelProperty("紧急程度:1:特急;2:紧急;3:一般") | |
| 89 | + private Integer pressingType; | |
| 90 | + | |
| 91 | + @Schema(description = "提交用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12757") | |
| 92 | + private Long userId; | |
| 93 | + | |
| 94 | + @Schema(description = "提交用户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") | |
| 95 | + @ExcelProperty("提交用户名称") | |
| 96 | + private String userName; | |
| 97 | + | |
| 98 | + @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26936") | |
| 99 | + private Long companyId; | |
| 100 | + | |
| 101 | + @Schema(description = "单位名称") | |
| 102 | + @ExcelProperty("单位名称") | |
| 103 | + private String companyName; | |
| 104 | + | |
| 105 | + @Schema(description = "经纬度类型: 1:国标; 2:百度;3:高德;4:腾讯", example = "2") | |
| 106 | + @ExcelProperty("经纬度类型: 1:国标; 2:百度;3:高德;4:腾讯") | |
| 107 | + private Integer latLonType; | |
| 108 | + | |
| 109 | + @Schema(description = "经度", requiredMode = Schema.RequiredMode.REQUIRED) | |
| 110 | + @ExcelProperty("经度") | |
| 111 | + private BigDecimal lat; | |
| 112 | + | |
| 113 | + @Schema(description = "维度", requiredMode = Schema.RequiredMode.REQUIRED) | |
| 114 | + @ExcelProperty("维度") | |
| 115 | + private BigDecimal lon; | |
| 116 | + | |
| 117 | + @Schema(description = "经纬度地址", requiredMode = Schema.RequiredMode.REQUIRED) | |
| 118 | + @ExcelProperty("经纬度地址") | |
| 119 | + private String lonLatAddress; | |
| 120 | + | |
| 121 | + @Schema(description = "三方工单ID") | |
| 122 | + @ExcelProperty("三方工单ID") | |
| 123 | + private String thirdWorkNo; | |
| 124 | + | |
| 125 | + @Schema(description = "三方工单结果上报状态:1:待推送;2:推送成功;3:推送失败") | |
| 126 | + @ExcelProperty("三方工单结果上报状态:1:待推送;2:推送成功;3:推送失败") | |
| 127 | + private Integer thirdPushState; | |
| 128 | + | |
| 129 | + @Schema(description = "业务状态", example = "1") | |
| 130 | + @ExcelProperty("业务状态") | |
| 131 | + private String buzStatus; | |
| 132 | + | |
| 133 | + @Schema(description = "审批状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") | |
| 134 | + @ExcelProperty("审批状态") | |
| 135 | + private Integer status; | |
| 136 | + | |
| 137 | + @Schema(description = "流程实例的编号", example = "9184") | |
| 138 | + @ExcelProperty("流程实例的编号") | |
| 139 | + private String processInstanceId; | |
| 140 | + | |
| 141 | + @Schema(description = "工单描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") | |
| 142 | + @ExcelProperty("工单描述") | |
| 143 | + private String remark; | |
| 144 | + | |
| 145 | + @Schema(description = "工单完成结果描述", example = "已完成") | |
| 146 | + @ExcelProperty("工单完成结果描述") | |
| 147 | + private String handleResult; | |
| 148 | + | |
| 149 | + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) | |
| 150 | + @ExcelProperty("创建时间") | |
| 151 | + private LocalDateTime createTime; | |
| 152 | + | |
| 153 | + @Schema(description = "文件名称") | |
| 154 | + private List<String> fileNames; | |
| 155 | + | |
| 156 | + @Schema(description = "共同处理人") | |
| 157 | + private Set<Long> coHandlers; | |
| 158 | + @Schema(description = "共同处理人名称,多个为数组") | |
| 159 | + private List<String> coHandlersName; | |
| 160 | + | |
| 161 | + @Schema(description = "提交人电话") | |
| 162 | + private String userMobile; | |
| 163 | + | |
| 164 | + @Schema(description = "养护员") | |
| 165 | + private String workerName; | |
| 166 | + | |
| 167 | + @Schema(description = "实施人员部门id") | |
| 168 | + private Long workerCompanyId; | |
| 169 | + | |
| 170 | + @Schema(description = "处理人") | |
| 171 | + private String assigneeName; | |
| 172 | + | |
| 173 | + @Schema(description = "审批节点") | |
| 174 | + private String approvalNode; | |
| 175 | + | |
| 176 | + | |
| 177 | + /** | |
| 178 | + * 任务id | |
| 179 | + */ | |
| 180 | + private String taskId; | |
| 181 | + /** | |
| 182 | + * 任务名称 | |
| 183 | + */ | |
| 184 | + private String taskName; | |
| 185 | + /** | |
| 186 | + * 任务key | |
| 187 | + */ | |
| 188 | + private String taskKey; | |
| 189 | + /** | |
| 190 | + * 流程定义名称 | |
| 191 | + */ | |
| 192 | + private String processDefinitionName; | |
| 193 | + /** | |
| 194 | + * 任务开始时间 | |
| 195 | + */ | |
| 196 | + private LocalDateTime startTime; | |
| 197 | + /** | |
| 198 | + * 任务结束时间 | |
| 199 | + */ | |
| 200 | + private LocalDateTime endTime; | |
| 201 | + /** | |
| 202 | + * 流程定义key | |
| 203 | + */ | |
| 204 | + private String key_; | |
| 15 | 205 | } | ... | ... |
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/task/AdminGardenTaskApproveReqVO.java
0 → 100644
| 1 | +package com.zteits.urbanops.module.workorder.controller.admin.garden.vo.task; | |
| 2 | + | |
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | |
| 4 | +import jakarta.validation.constraints.NotEmpty; | |
| 5 | +import lombok.Data; | |
| 6 | + | |
| 7 | +import java.util.List; | |
| 8 | + | |
| 9 | +/** | |
| 10 | + * 类描述:园林pc端工单任务审批通过VO | |
| 11 | + * 创建人:yanhuiqing | |
| 12 | + * 创建时间:2025/12/13 21:33 | |
| 13 | + * 修改人:yanhuiqing | |
| 14 | + * 修改时间:2025/12/13 21:33 | |
| 15 | + * 修改备注: | |
| 16 | + * | |
| 17 | + * @author yanhuiqing | |
| 18 | + * @version 1.0 | |
| 19 | + */ | |
| 20 | +@Schema(description = "PC - 通过流程任务的 Request VO") | |
| 21 | +@Data | |
| 22 | +public class AdminGardenTaskApproveReqVO { | |
| 23 | + | |
| 24 | + @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | |
| 25 | + @NotEmpty(message = "任务编号不能为空") | |
| 26 | + private String id; | |
| 27 | + | |
| 28 | + @Schema(description = "审批意见", example = "通过!") | |
| 29 | + private String reason; | |
| 30 | + | |
| 31 | + @Schema(description = "同意选择类型:0 同意,1 不同意", example = "0") | |
| 32 | + //@NotNull(message = "同意选择类型不能为空") | |
| 33 | + private Integer agree; | |
| 34 | + | |
| 35 | + @Schema(description = "工单的数据id", requiredMode = Schema.RequiredMode.REQUIRED) | |
| 36 | + //@NotEmpty(message = "工单的数据id不能为空") | |
| 37 | + private Long workerDataId; | |
| 38 | + | |
| 39 | + @Schema(description = "退回时的拍照图片") | |
| 40 | + private List<String> returnImgs; | |
| 41 | + | |
| 42 | +} | ... | ... |
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/garden/AdminGardenTaskConvert.java
0 → 100644
| 1 | +package com.zteits.urbanops.module.workorder.convert.garden; | |
| 2 | + | |
| 3 | +import com.zteits.urbanops.framework.common.pojo.PageResult; | |
| 4 | +import com.zteits.urbanops.framework.common.util.collection.CollectionUtils; | |
| 5 | +import com.zteits.urbanops.framework.common.util.object.BeanUtils; | |
| 6 | +import com.zteits.urbanops.module.bpm.api.task.dto.BpmUserSimpleReqDTO; | |
| 7 | +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderRespVO; | |
| 8 | +import com.zteits.urbanops.module.workorder.convert.maininfo.MainInfoConvert; | |
| 9 | +import com.zteits.urbanops.module.workorder.dal.dataobject.attachment.AttachmentDO; | |
| 10 | +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoExtDO; | |
| 11 | +import org.mapstruct.Mapper; | |
| 12 | +import org.mapstruct.factory.Mappers; | |
| 13 | + | |
| 14 | +import java.util.Arrays; | |
| 15 | +import java.util.List; | |
| 16 | +import java.util.Map; | |
| 17 | +import java.util.stream.Collectors; | |
| 18 | + | |
| 19 | +/** | |
| 20 | + * @Classname AdminGardenTaskConvert | |
| 21 | + * @Description PC端代办 | |
| 22 | + * @Date 2025/12/26 16:51 | |
| 23 | + * @Created by wangqian | |
| 24 | + */ | |
| 25 | +@Mapper | |
| 26 | +public class AdminGardenTaskConvert { | |
| 27 | + public static final AdminGardenTaskConvert INSTANCE = Mappers.getMapper(AdminGardenTaskConvert.class); | |
| 28 | + | |
| 29 | + public PageResult<BpmGardenWorkOrderRespVO> buildMainInfoPage(PageResult<MainInfoExtDO> pageResult, Map<String, AttachmentDO> attachmentMap, Map<String, BpmUserSimpleReqDTO> bpmTaskRespVOS) { | |
| 30 | + List<BpmGardenWorkOrderRespVO> mainInfoVOList = CollectionUtils.convertList(pageResult.getList(), mainInfoDO -> { | |
| 31 | + BpmGardenWorkOrderRespVO mainInfoVo = BeanUtils.toBean(mainInfoDO, BpmGardenWorkOrderRespVO.class); | |
| 32 | + if (attachmentMap != null && !attachmentMap.isEmpty()) { | |
| 33 | + AttachmentDO attachmentDO = attachmentMap.get(mainInfoDO.getOrderNo()); | |
| 34 | + if (attachmentDO != null) { | |
| 35 | + String fileNamesStr = attachmentDO.getFileNames(); | |
| 36 | + List<String> fileNameList = fileNamesStr == null | |
| 37 | + ? List.of() | |
| 38 | + : Arrays.stream(fileNamesStr.split(",")) | |
| 39 | + .filter(fileName -> fileName != null && !fileName.trim().isEmpty()) // 过滤空字符串和空白 | |
| 40 | + .collect(Collectors.toList()); | |
| 41 | + mainInfoVo.setFileNames(fileNameList); | |
| 42 | + } | |
| 43 | + if (bpmTaskRespVOS != null && !bpmTaskRespVOS.isEmpty()) { | |
| 44 | + BpmUserSimpleReqDTO bpmUserSimpleReqDTO = bpmTaskRespVOS.get(mainInfoDO.getProcessInstanceId()); | |
| 45 | + if (bpmUserSimpleReqDTO != null) { | |
| 46 | + mainInfoVo.setAssigneeName(bpmUserSimpleReqDTO.getAssigneeName()); | |
| 47 | + mainInfoVo.setApprovalNode(bpmUserSimpleReqDTO.getName()); | |
| 48 | + mainInfoVo.setStatus(bpmUserSimpleReqDTO.getTaskStatus()); | |
| 49 | + } | |
| 50 | + } | |
| 51 | + } | |
| 52 | + return mainInfoVo; | |
| 53 | + }); | |
| 54 | + return new PageResult<>(mainInfoVOList, pageResult.getTotal()); | |
| 55 | + } | |
| 56 | +} | ... | ... |
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenAdminService.java
0 → 100644
| 1 | +package com.zteits.urbanops.module.workorder.service.garden; | |
| 2 | + | |
| 3 | +import com.zteits.urbanops.framework.common.pojo.PageResult; | |
| 4 | +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenTaskAssignReqVO; | |
| 5 | +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderPageReqVO; | |
| 6 | +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderRespVO; | |
| 7 | +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoExtDO; | |
| 8 | + | |
| 9 | +import java.util.List; | |
| 10 | + | |
| 11 | +/** | |
| 12 | + * @Classname BpmGardenAdminService | |
| 13 | + * @Description PC端流程操作 | |
| 14 | + * @Date 2025/12/20 10:27 | |
| 15 | + * @Created by wangqian | |
| 16 | + */ | |
| 17 | +public interface BpmGardenAdminService { | |
| 18 | + | |
| 19 | + /** | |
| 20 | + * 工单业务待办 列表 -pc端 | |
| 21 | + * @param pageVO | |
| 22 | + * @return | |
| 23 | + */ | |
| 24 | + PageResult<MainInfoExtDO> getTaskTodoBuzSimplePage(BpmGardenWorkOrderPageReqVO pageVO); | |
| 25 | + | |
| 26 | + /** | |
| 27 | + * @Author wangqian | |
| 28 | + * @Description 分配工单 | |
| 29 | + * @Date 2025/12/20 10:43 | |
| 30 | + * @Param reqVO | |
| 31 | + * @Return java.lang.Boolean | |
| 32 | + */ | |
| 33 | + public Boolean assignWOrder(List<BpmGardenTaskAssignReqVO> reqVO); | |
| 34 | + | |
| 35 | + | |
| 36 | +} | ... | ... |
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenAdminServiceImpl.java
0 → 100644
| 1 | +package com.zteits.urbanops.module.workorder.service.garden; | |
| 2 | + | |
| 3 | +import com.zteits.urbanops.framework.common.pojo.PageResult; | |
| 4 | +import com.zteits.urbanops.framework.common.util.object.ObjectUtils; | |
| 5 | +import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; | |
| 6 | +import com.zteits.urbanops.module.system.api.user.AdminUserApi; | |
| 7 | +import com.zteits.urbanops.module.workorder.api.constant.BpmCommonConstant; | |
| 8 | +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenTaskAssignReqVO; | |
| 9 | +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderPageReqVO; | |
| 10 | +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderRespVO; | |
| 11 | +import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInfoHasTaskPageReqVO; | |
| 12 | +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.AppGardenWorkOrderPageReqVO; | |
| 13 | +import com.zteits.urbanops.module.workorder.convert.garden.AppGardenTaskConvert; | |
| 14 | +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; | |
| 15 | +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoExtDO; | |
| 16 | +import com.zteits.urbanops.module.workorder.dal.mysql.attachment.AttachmentMapper; | |
| 17 | +import com.zteits.urbanops.module.workorder.dal.mysql.maininfo.MainInfoExtMapper; | |
| 18 | +import com.zteits.urbanops.module.workorder.dal.mysql.maininfo.MainInfoMapper; | |
| 19 | +import com.zteits.urbanops.module.workorder.dto.AppGardenWorkOrderRespVO; | |
| 20 | +import com.zteits.urbanops.module.workorder.service.maininfo.MainInfoService; | |
| 21 | +import jakarta.annotation.Resource; | |
| 22 | +import org.apache.commons.collections4.CollectionUtils; | |
| 23 | +import org.springframework.stereotype.Service; | |
| 24 | +import org.springframework.transaction.annotation.Transactional; | |
| 25 | + | |
| 26 | +import java.util.List; | |
| 27 | + | |
| 28 | +import static com.zteits.urbanops.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST; | |
| 29 | +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception0; | |
| 30 | + | |
| 31 | +/** | |
| 32 | + * @Classname BpmGardenAdminServiceImpl | |
| 33 | + * @Description PC端流程操作 | |
| 34 | + * @Date 2025/12/20 10:28 | |
| 35 | + * @Created by wangqian | |
| 36 | + */ | |
| 37 | +@Service | |
| 38 | +public class BpmGardenAdminServiceImpl implements BpmGardenAdminService { | |
| 39 | + | |
| 40 | + @Resource | |
| 41 | + private MainInfoService mainInfoService; | |
| 42 | + | |
| 43 | + @Resource | |
| 44 | + private MainInfoMapper mainInfoMapper; | |
| 45 | + @Resource | |
| 46 | + private MainInfoExtMapper workOrderExtMapper; | |
| 47 | + | |
| 48 | + @Override | |
| 49 | + public PageResult<MainInfoExtDO> getTaskTodoBuzSimplePage(BpmGardenWorkOrderPageReqVO pageVO) { | |
| 50 | + MainInfoHasTaskPageReqVO taskBuzReqVO = new MainInfoHasTaskPageReqVO(); | |
| 51 | + | |
| 52 | + taskBuzReqVO.setUserId(SecurityFrameworkUtils.getLoginUserId()); | |
| 53 | + //只查普通工单 | |
| 54 | + taskBuzReqVO.setOrderType(BpmCommonConstant.ORDER_TYPE_C); | |
| 55 | + return workOrderExtMapper.selectWorkOrderTodoPage(pageVO,taskBuzReqVO); | |
| 56 | + } | |
| 57 | + /** | |
| 58 | + * @Author wangqian | |
| 59 | + * @Description 分配工单 | |
| 60 | + * @Date 2025/12/20 10:32 | |
| 61 | + * @Param reqVO | |
| 62 | + * @Return void | |
| 63 | + */ | |
| 64 | + @Override | |
| 65 | + @Transactional | |
| 66 | + public Boolean assignWOrder(List<BpmGardenTaskAssignReqVO> reqVO) { | |
| 67 | + if (CollectionUtils.isEmpty(reqVO) || reqVO.size() > 1) { | |
| 68 | + throw exception0(BAD_REQUEST.getCode(),"分配工单参数异常"); | |
| 69 | + } | |
| 70 | + //获取工单信息 | |
| 71 | + MainInfoDO mainInfo = mainInfoService.getMainInfo(reqVO.get(0).getId()); | |
| 72 | + if (mainInfo == null) { | |
| 73 | + throw exception0(BAD_REQUEST.getCode(),"工单信息不存在"); | |
| 74 | + } | |
| 75 | + | |
| 76 | + //分配工单 | |
| 77 | + for (BpmGardenTaskAssignReqVO assignReqVO : reqVO) { | |
| 78 | + //bmp推进工作流 | |
| 79 | + | |
| 80 | + //跟新工单信息 | |
| 81 | + MainInfoDO mainInfoDO = new MainInfoDO(); | |
| 82 | + mainInfoDO.setRoadId(assignReqVO.getRoadId()); | |
| 83 | + mainInfoDO.setRoadName(assignReqVO.getRoadName()); | |
| 84 | + mainInfoDO.setBusiLine(assignReqVO.getBusiLine()); | |
| 85 | + mainInfoDO.setPressingType(assignReqVO.getPressingType()); | |
| 86 | + mainInfoMapper.updateById(mainInfoDO); | |
| 87 | + } | |
| 88 | + | |
| 89 | + return Boolean.TRUE; | |
| 90 | + } | |
| 91 | + | |
| 92 | + | |
| 93 | +} | ... | ... |