Commit 72d5114e0d041f4a5a7c991f8bd1eca1e1207307

Authored by wangqian
1 parent 4e125469

PC端增加代办接口

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,19 +3,34 @@ package com.zteits.urbanops.module.workorder.controller.admin.garden;
3 import com.zteits.urbanops.framework.common.pojo.CommonResult; 3 import com.zteits.urbanops.framework.common.pojo.CommonResult;
4 import com.zteits.urbanops.framework.common.pojo.PageResult; 4 import com.zteits.urbanops.framework.common.pojo.PageResult;
5 import com.zteits.urbanops.framework.common.util.object.BeanUtils; 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 import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderPageReqVO; 9 import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderPageReqVO;
8 import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderRespVO; 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 import com.zteits.urbanops.module.workorder.dal.dataobject.garden.BpmGardenWorkOrderDO; 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 import com.zteits.urbanops.module.workorder.service.garden.BpmGardenService; 18 import com.zteits.urbanops.module.workorder.service.garden.BpmGardenService;
11 import io.swagger.v3.oas.annotations.Operation; 19 import io.swagger.v3.oas.annotations.Operation;
12 import io.swagger.v3.oas.annotations.Parameter; 20 import io.swagger.v3.oas.annotations.Parameter;
13 import io.swagger.v3.oas.annotations.tags.Tag; 21 import io.swagger.v3.oas.annotations.tags.Tag;
14 import jakarta.annotation.Resource; 22 import jakarta.annotation.Resource;
15 import jakarta.validation.Valid; 23 import jakarta.validation.Valid;
  24 +import org.apache.commons.collections4.CollectionUtils;
16 import org.springframework.security.access.prepost.PreAuthorize; 25 import org.springframework.security.access.prepost.PreAuthorize;
17 import org.springframework.validation.annotation.Validated; 26 import org.springframework.validation.annotation.Validated;
18 import org.springframework.web.bind.annotation.*; 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 import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; 35 import static com.zteits.urbanops.framework.common.pojo.CommonResult.success;
21 import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; 36 import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
@@ -34,6 +49,15 @@ public class BpmGardenInspectController { @@ -34,6 +49,15 @@ public class BpmGardenInspectController {
34 @Resource 49 @Resource
35 private BpmGardenService gardenService; 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 /*@PostMapping("/create") 61 /*@PostMapping("/create")
38 @PreAuthorize("@ss.hasPermission('bpm:garden-inspection:create')") 62 @PreAuthorize("@ss.hasPermission('bpm:garden-inspection:create')")
39 @Operation(summary = "创建请求申请") 63 @Operation(summary = "创建请求申请")
@@ -57,4 +81,64 @@ public class BpmGardenInspectController { @@ -57,4 +81,64 @@ public class BpmGardenInspectController {
57 PageResult<BpmGardenWorkOrderDO> pageResult = gardenService.getGardenInspectionPage(getLoginUserId(), pageVO); 81 PageResult<BpmGardenWorkOrderDO> pageResult = gardenService.getGardenInspectionPage(getLoginUserId(), pageVO);
58 return success(BeanUtils.toBean(pageResult, BpmGardenWorkOrderRespVO.class)); 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,4 +13,25 @@ import lombok.Data;
13 @Schema(description = "管理后台 - 园林工单申请分页 Request VO") 13 @Schema(description = "管理后台 - 园林工单申请分页 Request VO")
14 @Data 14 @Data
15 public class BpmGardenWorkOrderPageReqVO extends PageParam { 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 package com.zteits.urbanops.module.workorder.controller.admin.garden.vo; 1 package com.zteits.urbanops.module.workorder.controller.admin.garden.vo;
2 2
  3 +import cn.idev.excel.annotation.ExcelProperty;
3 import io.swagger.v3.oas.annotations.media.Schema; 4 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 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 * @author yanhuiqing 13 * @author yanhuiqing
8 * @version 1.0 14 * @version 1.0
@@ -12,4 +18,188 @@ import lombok.Data; @@ -12,4 +18,188 @@ import lombok.Data;
12 @Schema(description = "管理后台 - 园林工单流程 Response VO") 18 @Schema(description = "管理后台 - 园林工单流程 Response VO")
13 @Data 19 @Data
14 public class BpmGardenWorkOrderRespVO { 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 +}