From 72d5114e0d041f4a5a7c991f8bd1eca1e1207307 Mon Sep 17 00:00:00 2001 From: wangqian <1406304305@qq.com> Date: Fri, 26 Dec 2025 17:29:23 +0800 Subject: [PATCH] PC端增加代办接口 --- urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/BpmGardenInspectController.java | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenTaskAssignReqVO.java | 43 +++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderPageReqVO.java | 21 +++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderRespVO.java | 190 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/task/AdminGardenTaskApproveReqVO.java | 42 ++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/garden/AdminGardenTaskConvert.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenAdminService.java | 36 ++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenAdminServiceImpl.java | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 566 insertions(+), 1 deletion(-) create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenTaskAssignReqVO.java create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/task/AdminGardenTaskApproveReqVO.java create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/garden/AdminGardenTaskConvert.java create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenAdminService.java create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenAdminServiceImpl.java diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/BpmGardenInspectController.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/BpmGardenInspectController.java index 868dfc7..b0fe5d9 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/BpmGardenInspectController.java +++ b/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; import com.zteits.urbanops.framework.common.pojo.CommonResult; import com.zteits.urbanops.framework.common.pojo.PageResult; import com.zteits.urbanops.framework.common.util.object.BeanUtils; -import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderCreateReqVO; +import com.zteits.urbanops.module.bpm.api.task.BpmTaskApi; +import com.zteits.urbanops.module.bpm.api.task.dto.BpmUserSimpleReqDTO; +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenTaskAssignReqVO; import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderPageReqVO; import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderRespVO; +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.task.AdminGardenTaskApproveReqVO; +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.task.AppGardenTaskApproveReqVO; +import com.zteits.urbanops.module.workorder.dal.dataobject.attachment.AttachmentDO; import com.zteits.urbanops.module.workorder.dal.dataobject.garden.BpmGardenWorkOrderDO; +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoExtDO; +import com.zteits.urbanops.module.workorder.service.attachment.AttachmentService; +import com.zteits.urbanops.module.workorder.service.garden.BpmGardenAdminService; import com.zteits.urbanops.module.workorder.service.garden.BpmGardenService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import com.zteits.urbanops.module.workorder.convert.garden.AdminGardenTaskConvert; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; @@ -34,6 +49,15 @@ public class BpmGardenInspectController { @Resource private BpmGardenService gardenService; + @Resource + BpmGardenAdminService gardenAdminService; + + @Resource + AttachmentService attachmentService; + + @Resource + private BpmTaskApi bpmTaskApi; + /*@PostMapping("/create") @PreAuthorize("@ss.hasPermission('bpm:garden-inspection:create')") @Operation(summary = "创建请求申请") @@ -57,4 +81,64 @@ public class BpmGardenInspectController { PageResult pageResult = gardenService.getGardenInspectionPage(getLoginUserId(), pageVO); return success(BeanUtils.toBean(pageResult, BpmGardenWorkOrderRespVO.class)); } + + + @GetMapping("todoBuzSimplePage") + @Operation(summary = "PC - 获取工单业务待办任务分页") + //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:query')") + public CommonResult> getTaskTodoBuzSimplePage(@Valid BpmGardenWorkOrderPageReqVO pageVO) { + PageResult pageResult = gardenAdminService.getTaskTodoBuzSimplePage(pageVO); + if (pageResult == null) { + return success(PageResult.empty()); + } + // 2. 初始化附件映射(默认空Map,避免后续空指针) + Map attachmentMap = Collections.emptyMap(); + + // 3. 空值防护:分页结果非空且列表非空时,才查询附件 + if (pageResult != null && !CollectionUtils.isEmpty(pageResult.getList())) { + // 提取订单号列表 + List orderNoList = pageResult.getList().stream() + .map(MainInfoExtDO::getOrderNo) + .filter(orderNo -> orderNo != null && !orderNo.isBlank()) + .collect(Collectors.toList()); + + // 若订单号列表非空,查询附件;否则跳过 + if (!CollectionUtils.isEmpty(orderNoList)) { + List attachmentDOList = attachmentService.getAttachmentByOrderNo(orderNoList); + // 构建订单号→附件对象的映射(处理重复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时保留已有值 + )); + } + } + } + //4. 查询处理人 + List processInstanceIdList = pageResult.getList().stream() + .map(MainInfoExtDO::getProcessInstanceId) + .filter(orderNo -> orderNo != null && !orderNo.isBlank()) + .collect(Collectors.toList()); + + //Map bpmTaskRespVOS = bpmTaskApi.getLastTaskMapByProcessInstanceId(processInstanceIdList); + return success(AdminGardenTaskConvert.INSTANCE.buildMainInfoPage(pageResult, attachmentMap, null)); + } + + @PutMapping("assignWOrder") + @Operation(summary = "分配工单提交任务") + //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')") + public CommonResult assignWOrder(@Valid @RequestBody List reqVO) { + return success(gardenAdminService.assignWOrder(reqVO)); + } + + @PutMapping("/approve") + @Operation(summary = "app - 审批通过任务") + //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')") + public CommonResult approveTask(@Valid @RequestBody AdminGardenTaskApproveReqVO reqVO) { + //gardenService.approveTask(reqVO); + return success(true); + } } diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenTaskAssignReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenTaskAssignReqVO.java new file mode 100644 index 0000000..81dd61f --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenTaskAssignReqVO.java @@ -0,0 +1,43 @@ +package com.zteits.urbanops.module.workorder.controller.admin.garden.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @Author wangqian + * @Description 分配任务请求reqVO + * @Date 2025/12/20 10:14 + * @Param null + * @Return + */ +@Schema(description = "分配工单流程任务的 Request VO") +@Data +public class BpmGardenTaskAssignReqVO { + + @Schema(description = "工单表主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @NotNull(message = "id不能为空") + private Long id; + + @Schema(description = "工单处理方", requiredMode = Schema.RequiredMode.REQUIRED, example = "yl") + @NotEmpty(message = "工单处理方不能为空") + private String busiLine; + + @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21128") + @NotNull(message = "道路ID不能为空") + private Long roadId; + + @Schema(description = "道路名称", example = "测试道路") + private String roadName; + + @Schema(description = "紧急程度:1:特急;2:紧急;3:一般", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "紧急程度:1:特急;2:紧急;3:一般不能为空") + private Integer pressingType; + + @Schema(description = "完成时间") + private LocalDateTime finishDate; + +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderPageReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderPageReqVO.java index 459683a..7f064d0 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderPageReqVO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderPageReqVO.java @@ -13,4 +13,25 @@ import lombok.Data; @Schema(description = "管理后台 - 园林工单申请分页 Request VO") @Data public class BpmGardenWorkOrderPageReqVO extends PageParam { + + @Schema(description = "工单号") + private String orderNo; + + @Schema(description = "工单名称", example = "张三") + private String orderName; + @Schema(description = "工单描述", example = "你说的对") + private String remark; + @Schema(description = "来源ID", example = "1") + private Integer sourceId; + + @Schema(description = "街道ID", example = "27852") + private String streetId; + + @Schema(description = "养护级别ID", example = "1") + private Integer curingLevelId; + @Schema(description = "紧急程度:1:特急;2:紧急;3:一般", example = "2") + private Integer pressingType; + + @Schema(description = "审批状态", example = "2") + private Integer status; } diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderRespVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderRespVO.java index 30bbe4e..8bf6ab8 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderRespVO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderRespVO.java @@ -1,8 +1,14 @@ package com.zteits.urbanops.module.workorder.controller.admin.garden.vo; +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; + /** * @author yanhuiqing * @version 1.0 @@ -12,4 +18,188 @@ import lombok.Data; @Schema(description = "管理后台 - 园林工单流程 Response VO") @Data public class BpmGardenWorkOrderRespVO { + + @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; + + + /** + * 任务id + */ + private String taskId; + /** + * 任务名称 + */ + private String taskName; + /** + * 任务key + */ + private String taskKey; + /** + * 流程定义名称 + */ + private String processDefinitionName; + /** + * 任务开始时间 + */ + private LocalDateTime startTime; + /** + * 任务结束时间 + */ + private LocalDateTime endTime; + /** + * 流程定义key + */ + private String key_; } diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/task/AdminGardenTaskApproveReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/task/AdminGardenTaskApproveReqVO.java new file mode 100644 index 0000000..1af421b --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/task/AdminGardenTaskApproveReqVO.java @@ -0,0 +1,42 @@ +package com.zteits.urbanops.module.workorder.controller.admin.garden.vo.task; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +import java.util.List; + +/** + * 类描述:园林pc端工单任务审批通过VO + * 创建人:yanhuiqing + * 创建时间:2025/12/13 21:33 + * 修改人:yanhuiqing + * 修改时间:2025/12/13 21:33 + * 修改备注: + * + * @author yanhuiqing + * @version 1.0 + */ +@Schema(description = "PC - 通过流程任务的 Request VO") +@Data +public class AdminGardenTaskApproveReqVO { + + @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @NotEmpty(message = "任务编号不能为空") + private String id; + + @Schema(description = "审批意见", example = "通过!") + private String reason; + + @Schema(description = "同意选择类型:0 同意,1 不同意", example = "0") + //@NotNull(message = "同意选择类型不能为空") + private Integer agree; + + @Schema(description = "工单的数据id", requiredMode = Schema.RequiredMode.REQUIRED) + //@NotEmpty(message = "工单的数据id不能为空") + private Long workerDataId; + + @Schema(description = "退回时的拍照图片") + private List returnImgs; + +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/garden/AdminGardenTaskConvert.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/garden/AdminGardenTaskConvert.java new file mode 100644 index 0000000..b02779d --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/garden/AdminGardenTaskConvert.java @@ -0,0 +1,56 @@ +package com.zteits.urbanops.module.workorder.convert.garden; + +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.util.collection.CollectionUtils; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; +import com.zteits.urbanops.module.bpm.api.task.dto.BpmUserSimpleReqDTO; +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderRespVO; +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.MainInfoExtDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Classname AdminGardenTaskConvert + * @Description PC端代办 + * @Date 2025/12/26 16:51 + * @Created by wangqian + */ +@Mapper +public class AdminGardenTaskConvert { + public static final AdminGardenTaskConvert INSTANCE = Mappers.getMapper(AdminGardenTaskConvert.class); + + public PageResult buildMainInfoPage(PageResult pageResult, Map attachmentMap, Map bpmTaskRespVOS) { + List mainInfoVOList = CollectionUtils.convertList(pageResult.getList(), mainInfoDO -> { + BpmGardenWorkOrderRespVO mainInfoVo = BeanUtils.toBean(mainInfoDO, BpmGardenWorkOrderRespVO.class); + if (attachmentMap != null && !attachmentMap.isEmpty()) { + AttachmentDO attachmentDO = attachmentMap.get(mainInfoDO.getOrderNo()); + if (attachmentDO != null) { + String fileNamesStr = attachmentDO.getFileNames(); + List fileNameList = fileNamesStr == null + ? List.of() + : Arrays.stream(fileNamesStr.split(",")) + .filter(fileName -> fileName != null && !fileName.trim().isEmpty()) // 过滤空字符串和空白 + .collect(Collectors.toList()); + mainInfoVo.setFileNames(fileNameList); + } + if (bpmTaskRespVOS != null && !bpmTaskRespVOS.isEmpty()) { + BpmUserSimpleReqDTO bpmUserSimpleReqDTO = bpmTaskRespVOS.get(mainInfoDO.getProcessInstanceId()); + if (bpmUserSimpleReqDTO != null) { + mainInfoVo.setAssigneeName(bpmUserSimpleReqDTO.getAssigneeName()); + mainInfoVo.setApprovalNode(bpmUserSimpleReqDTO.getName()); + mainInfoVo.setStatus(bpmUserSimpleReqDTO.getTaskStatus()); + } + } + } + return mainInfoVo; + }); + return new PageResult<>(mainInfoVOList, pageResult.getTotal()); + } +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenAdminService.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenAdminService.java new file mode 100644 index 0000000..9539182 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenAdminService.java @@ -0,0 +1,36 @@ +package com.zteits.urbanops.module.workorder.service.garden; + +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenTaskAssignReqVO; +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderPageReqVO; +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderRespVO; +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoExtDO; + +import java.util.List; + +/** + * @Classname BpmGardenAdminService + * @Description PC端流程操作 + * @Date 2025/12/20 10:27 + * @Created by wangqian + */ +public interface BpmGardenAdminService { + + /** + * 工单业务待办 列表 -pc端 + * @param pageVO + * @return + */ + PageResult getTaskTodoBuzSimplePage(BpmGardenWorkOrderPageReqVO pageVO); + + /** + * @Author wangqian + * @Description 分配工单 + * @Date 2025/12/20 10:43 + * @Param reqVO + * @Return java.lang.Boolean + */ + public Boolean assignWOrder(List reqVO); + + +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenAdminServiceImpl.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenAdminServiceImpl.java new file mode 100644 index 0000000..49e823f --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenAdminServiceImpl.java @@ -0,0 +1,93 @@ +package com.zteits.urbanops.module.workorder.service.garden; + +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.util.object.ObjectUtils; +import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; +import com.zteits.urbanops.module.system.api.user.AdminUserApi; +import com.zteits.urbanops.module.workorder.api.constant.BpmCommonConstant; +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenTaskAssignReqVO; +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderPageReqVO; +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderRespVO; +import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInfoHasTaskPageReqVO; +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.AppGardenWorkOrderPageReqVO; +import com.zteits.urbanops.module.workorder.convert.garden.AppGardenTaskConvert; +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoExtDO; +import com.zteits.urbanops.module.workorder.dal.mysql.attachment.AttachmentMapper; +import com.zteits.urbanops.module.workorder.dal.mysql.maininfo.MainInfoExtMapper; +import com.zteits.urbanops.module.workorder.dal.mysql.maininfo.MainInfoMapper; +import com.zteits.urbanops.module.workorder.dto.AppGardenWorkOrderRespVO; +import com.zteits.urbanops.module.workorder.service.maininfo.MainInfoService; +import jakarta.annotation.Resource; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +import static com.zteits.urbanops.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST; +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception0; + +/** + * @Classname BpmGardenAdminServiceImpl + * @Description PC端流程操作 + * @Date 2025/12/20 10:28 + * @Created by wangqian + */ +@Service +public class BpmGardenAdminServiceImpl implements BpmGardenAdminService { + + @Resource + private MainInfoService mainInfoService; + + @Resource + private MainInfoMapper mainInfoMapper; + @Resource + private MainInfoExtMapper workOrderExtMapper; + + @Override + public PageResult getTaskTodoBuzSimplePage(BpmGardenWorkOrderPageReqVO pageVO) { + MainInfoHasTaskPageReqVO taskBuzReqVO = new MainInfoHasTaskPageReqVO(); + + taskBuzReqVO.setUserId(SecurityFrameworkUtils.getLoginUserId()); + //只查普通工单 + taskBuzReqVO.setOrderType(BpmCommonConstant.ORDER_TYPE_C); + return workOrderExtMapper.selectWorkOrderTodoPage(pageVO,taskBuzReqVO); + } + /** + * @Author wangqian + * @Description 分配工单 + * @Date 2025/12/20 10:32 + * @Param reqVO + * @Return void + */ + @Override + @Transactional + public Boolean assignWOrder(List reqVO) { + if (CollectionUtils.isEmpty(reqVO) || reqVO.size() > 1) { + throw exception0(BAD_REQUEST.getCode(),"分配工单参数异常"); + } + //获取工单信息 + MainInfoDO mainInfo = mainInfoService.getMainInfo(reqVO.get(0).getId()); + if (mainInfo == null) { + throw exception0(BAD_REQUEST.getCode(),"工单信息不存在"); + } + + //分配工单 + for (BpmGardenTaskAssignReqVO assignReqVO : reqVO) { + //bmp推进工作流 + + //跟新工单信息 + MainInfoDO mainInfoDO = new MainInfoDO(); + mainInfoDO.setRoadId(assignReqVO.getRoadId()); + mainInfoDO.setRoadName(assignReqVO.getRoadName()); + mainInfoDO.setBusiLine(assignReqVO.getBusiLine()); + mainInfoDO.setPressingType(assignReqVO.getPressingType()); + mainInfoMapper.updateById(mainInfoDO); + } + + return Boolean.TRUE; + } + + +} -- libgit2 0.21.4