From 0629e95bd0f4adc4dc8f32525481ab869ac8a317 Mon Sep 17 00:00:00 2001 From: yanhuiqing Date: Tue, 30 Dec 2025 16:02:50 +0800 Subject: [PATCH] 全域督察员 审批流程 --- urbanops-module-api/urbanops-module-garden-api/src/main/java/com/zteits/urbanops/module/garden/dto/road/RoadStreetRespDTO.java | 2 ++ urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/dto/AppGardenWorkOrderInspectorReqVO.java | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/annotation/AutoUpdateWorkerOrderInspectorBuzStatus.java | 16 ++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/api/constant/BpmCommonConstant.java | 4 ++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderInspectorController.java | 253 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderUniversalController.java | 4 ++-- urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/InspectorBuzStatusUpdateAspect.java | 225 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/UniversalBuzStatusUpdateAspect.java | 4 ++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/task/AppGardenTaskInspectorApproveReqVO.java | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/ErrorCodeConstants.java | 10 ++++++++-- urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/InspectorOperateTypeEnum.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenServiceImpl.java | 3 +++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmInspectorService.java | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmInspectorServiceImpl.java | 302 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmRegionMgrServiceImpl.java | 4 +++- urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmUniversalServiceImpl.java | 1 + 16 files changed, 1068 insertions(+), 5 deletions(-) create mode 100644 urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/dto/AppGardenWorkOrderInspectorReqVO.java create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/annotation/AutoUpdateWorkerOrderInspectorBuzStatus.java create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderInspectorController.java create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/InspectorBuzStatusUpdateAspect.java create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/task/AppGardenTaskInspectorApproveReqVO.java create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/InspectorOperateTypeEnum.java create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmInspectorService.java create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmInspectorServiceImpl.java diff --git a/urbanops-module-api/urbanops-module-garden-api/src/main/java/com/zteits/urbanops/module/garden/dto/road/RoadStreetRespDTO.java b/urbanops-module-api/urbanops-module-garden-api/src/main/java/com/zteits/urbanops/module/garden/dto/road/RoadStreetRespDTO.java index 582b58d..e38e901 100644 --- a/urbanops-module-api/urbanops-module-garden-api/src/main/java/com/zteits/urbanops/module/garden/dto/road/RoadStreetRespDTO.java +++ b/urbanops-module-api/urbanops-module-garden-api/src/main/java/com/zteits/urbanops/module/garden/dto/road/RoadStreetRespDTO.java @@ -26,4 +26,6 @@ public class RoadStreetRespDTO { * 养护级别: 10:特级;11:一级:12:二级;13:三级 */ private Integer levelId; + + private Long companyId; } diff --git a/urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/dto/AppGardenWorkOrderInspectorReqVO.java b/urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/dto/AppGardenWorkOrderInspectorReqVO.java new file mode 100644 index 0000000..b74aac7 --- /dev/null +++ b/urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/dto/AppGardenWorkOrderInspectorReqVO.java @@ -0,0 +1,87 @@ +package com.zteits.urbanops.module.workorder.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +/** + * @author yanhuiqing + * @version 1.0 + * @description: app 督察员端请求参数 + * @date 2025/12/6 10:17 + */ +@Schema(description = "APP-园林工单请求创建 Request VO") +@Data +public class AppGardenWorkOrderInspectorReqVO { + + + @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21128") + @NotNull(message = "道路ID不能为空") + private Long roadId; + + /** + * 工单类型 Q:快速工单,C:普通工单,O:其他工单 + */ + private String orderType; + + @Schema(description = "道路名称", example = "测试道路") + private String roadName; + + @Schema(description = "问题图片", example = "9184") + private List problemsImgs; + + @Schema(description = "工单描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") + @NotEmpty(message = "工单描述不能为空") + @Length(max = 500) + private String remark; + + @Schema(description = "经纬度类型: 1:国标; 2:百度;3:高德;4:腾讯", example = "2") + private Integer latLonType; + + @Schema(description = "经度", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "经度不能为空") + private BigDecimal lat; + + @Schema(description = "维度", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "维度不能为空") + private BigDecimal lon; + + @Schema(description = "经纬度地址", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "经纬度地址不能为空") + private String lonLatAddress; + + @Schema(description = " 紧急程度:1:特急;2:紧急;3:一般", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "紧急程度:1:特急;2:紧急;3:一般") + private Integer pressingType; + + @Schema(description = "工单名称", example = "绿地卫生") + private String orderName; + + @Schema(description = "来源ID 工单来源 1、巡查,2、游客居民,3、12345,4、网格", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + //@NotNull(message = "来源ID不能为空") + private Integer sourceId; + + @Schema(description = "来源名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "园林") + //@NotEmpty(message = "来源名称不能为空") + private String sourceName; + + @Schema(description = "三方工单ID") + private String thirdWorkNo; + + @Schema(description = "希望完成时间", example = "1766505427000") // Swagger文档示例 + private LocalDateTime expectedFinishDate; + + @NotNull + @Schema(description = "工单业务线", example = "yl") + private String busiLine; + + + +} + diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/annotation/AutoUpdateWorkerOrderInspectorBuzStatus.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/annotation/AutoUpdateWorkerOrderInspectorBuzStatus.java new file mode 100644 index 0000000..9008925 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/annotation/AutoUpdateWorkerOrderInspectorBuzStatus.java @@ -0,0 +1,16 @@ +package com.zteits.urbanops.module.workorder.annotation; + +import java.lang.annotation.*; + +/** + * 创 建 人:yanhuiqing + * 创建时间:2025/12/21 14:50 + * 类描述:自动更新工单表业务状态 + * + * @author yanhuiqing + */ +@Target({ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface AutoUpdateWorkerOrderInspectorBuzStatus { +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/api/constant/BpmCommonConstant.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/api/constant/BpmCommonConstant.java index 465e9bb..5060089 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/api/constant/BpmCommonConstant.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/api/constant/BpmCommonConstant.java @@ -64,6 +64,8 @@ public class BpmCommonConstant { * 流转通过 */ public static final String BMP_COMMON_PROD_ISPASS = "isPass"; + + public static final String BPM_COMMON_PROD_ISSANHAI = "isSanhai"; /** * 是否全域的大区经理 key */ @@ -170,6 +172,8 @@ public class BpmCommonConstant { */ public static final String REGIONAL_MANAGER = "regional_manager"; + public static final String INSPECTOR_GLOBAL = "Inspector_global"; + /*养护级别-字典key*/ public static final String CONSERVE_LEVEL = "conserve_level"; //--------------------------------------------------------------------------------- diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderInspectorController.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderInspectorController.java new file mode 100644 index 0000000..2c924a0 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderInspectorController.java @@ -0,0 +1,253 @@ +package com.zteits.urbanops.module.workorder.controller.app.garden; + +import com.zteits.urbanops.framework.common.pojo.CommonResult; +import com.zteits.urbanops.framework.common.util.object.ObjectUtils; +import com.zteits.urbanops.module.garden.api.road.RoadApi; +import com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderInspectorBuzStatus; +import com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderUniversalBuzStatus; +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.common.AppUniversalApprovalReqVO; +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.operator.AppGardenTaskReturnExtReqVO; +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.operator.AppGardenTaskTeamLeaderAssignReqVO; +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.operator.AppGardenTaskWorkerExcuteReqVO; +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.task.AppGardenTaskApproveReqVO; +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.task.AppGardenTaskInspectorApproveReqVO; +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.task.AppGardenTaskRegionMgrApproveReqVO; +import com.zteits.urbanops.module.workorder.dto.AppGardenWorkOrderInspectorReqVO; +import com.zteits.urbanops.module.workorder.dto.AppGardenWorkOrderReqVO; +import com.zteits.urbanops.module.workorder.dto.AppGardenWorkOrderUniversalReqVO; +import com.zteits.urbanops.module.workorder.enums.InspectorOperateTypeEnum; +import com.zteits.urbanops.module.workorder.enums.InspectorOperateTypeEnum; +import com.zteits.urbanops.module.workorder.service.garden.BpmGardenService; +import com.zteits.urbanops.module.workorder.service.garden.BpmInspectorService; +import com.zteits.urbanops.module.workorder.service.garden.BpmUniversalService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import lombok.extern.slf4j.Slf4j; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; +import static com.zteits.urbanops.module.workorder.enums.ErrorCodeConstants.*; + +/** + * 类描述:园林 全域工单管理督察员入口 + * 创建人:yanhuiqing + * 创建时间:2025/12/25 15:30 + * 修改人:yanhuiqing + * 修改时间:2025/12/25 15:30 + * 修改备注: + * + * @author yanhuiqing + * @version 1.0 + */ +@Tag(name = "APP - 全域工单bpm") +@RestController +@Slf4j +@RequestMapping("/bpm/inspector/workorder") +public class AppGardenWorkOrderInspectorController { + @Resource + private BpmGardenService gardenService; + + @Resource + private BpmInspectorService inspectorService; + @Resource + private RoadApi roadApi; + @PostMapping("/createQuick") + //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:create')") + @Operation(summary = "app-创建快速工单信息") + public CommonResult createMainInfoQuick(@Valid @RequestBody AppGardenWorkOrderReqVO createReqVO) { + return success(gardenService.createWorkOrderQuick(createReqVO)); + } + + @PostMapping("/create") + //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:create')") + @Operation(summary = "app-全域巡查员创建工单信息") + public CommonResult createMainInfo(@Valid @RequestBody AppGardenWorkOrderInspectorReqVO createReqVO) { + return success(inspectorService.createWorkOrder(createReqVO)); + } + + @Operation(summary = "app-统一审批入口") + @PostMapping("/universalApproval") + @AutoUpdateWorkerOrderInspectorBuzStatus + @Transactional(rollbackFor = Exception.class) + //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')") + public CommonResult universalApproval(@Valid @RequestBody AppUniversalApprovalReqVO reqVO) { + + log.info("【全域督察员审批】接收前端请求,入参:curTaskKey={}, taskId={}, operateType={}, agree={}, reason={}", + reqVO.getTaskKey(), reqVO.getTaskId(), reqVO.getOperateType(), reqVO.getAgree(), reqVO.getReason()); + + InspectorOperateTypeEnum operateType = InspectorOperateTypeEnum.getByCode(reqVO.getOperateType()); + + switch (operateType) { + case SH_REGION_MANAGER_ASSIGN://大区经理分配 + log.info("当前操作:"+InspectorOperateTypeEnum.SH_REGION_MANAGER_ASSIGN.getDesc()+"开始,操作类型:"+InspectorOperateTypeEnum.SH_REGION_MANAGER_ASSIGN.getCode()+"-->"); + AppGardenTaskRegionMgrApproveReqVO regionPassReqVO = new AppGardenTaskRegionMgrApproveReqVO(); + Integer passStatus = reqVO.getAgree(); + if (passStatus == null || (passStatus != 0 && passStatus != 1)) { + throw exception(APP_AGREE_CHOOSE); + } + regionPassReqVO.setBusiLine(reqVO.getBusiLine()); + regionPassReqVO.setRoadId(reqVO.getRoadId()); + regionPassReqVO.setAgree(passStatus); + regionPassReqVO.setReason(reqVO.getReason()); + regionPassReqVO.setId(reqVO.getTaskId()); + regionPassReqVO.setReturnImgs(reqVO.getReturnImgs()); + inspectorService.approveTask2TeamLeader(regionPassReqVO); + log.info("当前操作:"+InspectorOperateTypeEnum.SH_REGION_MANAGER_ASSIGN.getDesc()+"<--结束"); + return success(true); + case SH_REGION_MANAGER_RETURN://大区经理退回 + log.info("当前操作:"+InspectorOperateTypeEnum.SH_REGION_MANAGER_RETURN.getDesc()+"开始,操作类型:"+InspectorOperateTypeEnum.SH_REGION_MANAGER_RETURN.getCode()+"-->"); + AppGardenTaskRegionMgrApproveReqVO regionArroveReqVO = new AppGardenTaskRegionMgrApproveReqVO(); + Integer regionStatus = reqVO.getAgree(); + if (regionStatus == null || (regionStatus != 0 && regionStatus != 1)) { + throw exception(APP_AGREE_CHOOSE); + } + regionArroveReqVO.setAgree(regionStatus); + regionArroveReqVO.setReason(reqVO.getReason()); + regionArroveReqVO.setId(reqVO.getTaskId()); + regionArroveReqVO.setReturnImgs(reqVO.getReturnImgs()); + inspectorService.approveTask2TeamLeader(regionArroveReqVO); + log.info("当前操作:"+InspectorOperateTypeEnum.SH_REGION_MANAGER_RETURN.getDesc()+"<--结束"); + return success(true); + case YL_WORKER_RETURN:// 养护员退回 + log.info("当前操作:"+InspectorOperateTypeEnum.YL_WORKER_RETURN.getDesc()+"开始,操作类型:"+InspectorOperateTypeEnum.YL_WORKER_RETURN.getCode()+"-->"); + AppGardenTaskReturnExtReqVO retReqVO = new AppGardenTaskReturnExtReqVO(); + retReqVO.setId(reqVO.getTaskId()); + retReqVO.setCurTaskKey(reqVO.getTaskKey()); + retReqVO.setReason(reqVO.getReason()); + retReqVO.setWorkerDataId(reqVO.getWorkerDataId()); + retReqVO.setReturnImgs(reqVO.getReturnImgs()); + gardenService.returnPreviousNode(retReqVO); + log.info("当前操作:"+InspectorOperateTypeEnum.YL_WORKER_RETURN.getDesc()+"<--结束"); + return success(true); + case YL_WORKER_IMPLEMENT://养护员实施 需修改更新工单数据 见切面 + log.info("当前操作:"+InspectorOperateTypeEnum.YL_WORKER_IMPLEMENT.getDesc()+"开始,操作类型:"+InspectorOperateTypeEnum.YL_WORKER_IMPLEMENT.getCode()+"-->"); + AppGardenTaskWorkerExcuteReqVO workerExcuteReqVO = new AppGardenTaskWorkerExcuteReqVO(); + workerExcuteReqVO.setWorkerDataId(reqVO.getWorkerDataId()); + workerExcuteReqVO.setId(reqVO.getTaskId()); + workerExcuteReqVO.setCoHandlers(reqVO.getCoHandlers()); + workerExcuteReqVO.setHandleResult(reqVO.getHandleResult()); + workerExcuteReqVO.setProblemsImgs(reqVO.getProblemsImgs()); + workerExcuteReqVO.setStartImgs(reqVO.getStartImgs()); + workerExcuteReqVO.setProcessingImgs(reqVO.getProcessingImgs()); + workerExcuteReqVO.setEndImgs(reqVO.getEndImgs()); + workerExcuteReqVO.setPersonImgs(reqVO.getPersonImgs()); + workerExcuteReqVO.setMaterialImgs(reqVO.getMaterialImgs()); + gardenService.ylWorkerExcuteWOrder(workerExcuteReqVO); + log.info("当前操作:"+InspectorOperateTypeEnum.YL_WORKER_IMPLEMENT.getDesc()+"<--结束"); + return success(true); + case YL_TEAM_LEADER_CONFIRM_PASS://养护组长验收通过 + log.info("当前操作:"+InspectorOperateTypeEnum.YL_TEAM_LEADER_CONFIRM_PASS.getDesc()+"开始,操作类型:"+InspectorOperateTypeEnum.YL_TEAM_LEADER_CONFIRM_PASS.getCode()+"-->"); + AppGardenTaskApproveReqVO approveReqVO = new AppGardenTaskApproveReqVO(); + approveReqVO.setReason(reqVO.getReason()); + approveReqVO.setId(reqVO.getTaskId()); + gardenService.approveTask(approveReqVO); + log.info("当前操作:"+InspectorOperateTypeEnum.YL_TEAM_LEADER_CONFIRM_PASS.getDesc()+"<--结束"); + return success(true); + case YL_TEAM_LEADER_CONFIRM_REJECT://养护组长验收不通过 需修改更新工单数据 见切面 + log.info("当前操作:"+InspectorOperateTypeEnum.YL_TEAM_LEADER_CONFIRM_REJECT.getDesc()+"开始,操作类型:"+InspectorOperateTypeEnum.YL_TEAM_LEADER_CONFIRM_REJECT.getCode()+"-->"); + AppGardenTaskReturnExtReqVO rejReqVO = new AppGardenTaskReturnExtReqVO(); + rejReqVO.setId(reqVO.getTaskId()); + rejReqVO.setCurTaskKey(reqVO.getTaskKey()); + rejReqVO.setReason(reqVO.getReason()); + rejReqVO.setWorkerDataId(reqVO.getWorkerDataId()); + List returnImgs = reqVO.getReturnImgs(); + rejReqVO.setReturnImgs(returnImgs); + gardenService.returnPreviousNode(rejReqVO); + log.info("当前操作:"+InspectorOperateTypeEnum.YL_TEAM_LEADER_CONFIRM_REJECT.getDesc()+"<--结束"); + return success(true); + case YL_TEAM_LEADER_ASSIGN: //养护组长分配 需修改更新工单数据 见切面 + log.info("当前操作:"+InspectorOperateTypeEnum.YL_TEAM_LEADER_ASSIGN.getDesc()+"开始,操作类型:"+InspectorOperateTypeEnum.YL_TEAM_LEADER_ASSIGN.getCode()+"-->"); + AppGardenTaskTeamLeaderAssignReqVO assignReqVO = new AppGardenTaskTeamLeaderAssignReqVO(); + assignReqVO.setId(reqVO.getTaskId()); + assignReqVO.setReason(reqVO.getReason()); + Long userId = reqVO.getNextAssignee(); + if(!ObjectUtils.isNotAllEmpty(userId)){ + throw exception(APP_WORKER_NOT_EXISTS); + } + assignReqVO.setNextAssignee(reqVO.getNextAssignee()); + Integer status = reqVO.getAgree(); + if (status == null || (status != 0 && status != 1)) { + throw exception(APP_AGREE_CHOOSE); + } + assignReqVO.setAgree(status); + gardenService.ylTeamLeaderAssignWOrder(assignReqVO); + log.info("当前操作:"+InspectorOperateTypeEnum.YL_TEAM_LEADER_ASSIGN.getDesc()+"<--结束"); + return success(true); + + case YL_TEAM_LEADER_RETURN://养护组长退回 + log.info("当前操作:"+InspectorOperateTypeEnum.YL_TEAM_LEADER_RETURN.getDesc()+"开始,操作类型:"+InspectorOperateTypeEnum.YL_TEAM_LEADER_RETURN.getCode()+"-->"); + AppGardenTaskInspectorApproveReqVO returnApproveReqVO = new AppGardenTaskInspectorApproveReqVO(); + Integer approveStatus = reqVO.getAgree(); + if (approveStatus == null || (approveStatus != 0 && approveStatus != 1)) { + throw exception(APP_AGREE_CHOOSE); + } + returnApproveReqVO.setAgree(approveStatus); + returnApproveReqVO.setReason(reqVO.getReason()); + returnApproveReqVO.setId(reqVO.getTaskId()); + returnApproveReqVO.setReturnImgs(reqVO.getReturnImgs()); + returnApproveReqVO.setRoadId(reqVO.getRoadId()); + inspectorService.approveTask(returnApproveReqVO); + log.info("当前操作:"+InspectorOperateTypeEnum.YL_TEAM_LEADER_RETURN.getDesc()+"<--结束"); + return success(true); + case YL_INSPECTOR_START_FINISH : //督察员结束工单 + log.info("当前操作:督察员结束工单(不同意)开始,是否同意:"+reqVO.getAgree()+"-->"); + AppGardenTaskApproveReqVO inspectStartReqVO = new AppGardenTaskApproveReqVO(); + Integer revokeStatus = reqVO.getAgree(); + if (revokeStatus == null || (revokeStatus != 0 && revokeStatus != 1)) { + throw exception(APP_AGREE_CHOOSE); + } + inspectStartReqVO.setAgree(revokeStatus); + inspectStartReqVO.setReason(reqVO.getReason()); + inspectStartReqVO.setId(reqVO.getTaskId()); + inspectStartReqVO.setReturnImgs(reqVO.getReturnImgs()); + gardenService.approveTask(inspectStartReqVO); + log.info("当前操作:"+InspectorOperateTypeEnum.YL_INSPECTOR_START_FINISH.getDesc()+"<--结束"); + return success(true); + case YL_INSPECTOR_START_RELAUNCH : //全域督察员重新发起 需修改更新工单数据 见切面 + log.info("当前操作:"+InspectorOperateTypeEnum.YL_INSPECTOR_START_RELAUNCH.getDesc()+"开始,操作类型:"+InspectorOperateTypeEnum.YL_INSPECTOR_START_RELAUNCH.getCode()+"-->"); + AppGardenTaskInspectorApproveReqVO reStartReqVO = new AppGardenTaskInspectorApproveReqVO(); + Integer reStatus = reqVO.getAgree(); + if (reStatus == null || (reStatus != 0 && reStatus != 1)) { + throw exception(APP_AGREE_CHOOSE); + } + Long id = reqVO.getWorkerDataId(); + if (id == null) { + throw exception(APP_WORKER_ID_NOT_EMPTY); + } + reStartReqVO.setWorkerDataId(id); + reStartReqVO.setAgree(reStatus); + reStartReqVO.setReason(reqVO.getReason()); + reStartReqVO.setId(reqVO.getTaskId()); + reStartReqVO.setRoadId(reqVO.getRoadId()); + inspectorService.approveTask(reStartReqVO); + log.info("当前操作:"+InspectorOperateTypeEnum.YL_INSPECTOR_START_RELAUNCH.getDesc()+"<--结束"); + return success(true); + case YL_INSPECTOR_CHECK_PASS , YL_INSPECTOR_CHECK_REJECT ://督察员验收通过,督察员验收不通过 + log.info("当前操作:全域巡查员验收通过 或全域巡查员验收不通过开始,是否同意:"+reqVO.getAgree()+"-->"); + AppGardenTaskApproveReqVO inspectReqVO = new AppGardenTaskApproveReqVO(); + Integer verifyStatus = reqVO.getAgree(); + if (verifyStatus == null || (verifyStatus != 0 && verifyStatus != 1)) { + throw exception(APP_AGREE_CHOOSE); + } + inspectReqVO.setAgree(verifyStatus); + inspectReqVO.setReason(reqVO.getReason()); + inspectReqVO.setId(reqVO.getTaskId()); + inspectReqVO.setReturnImgs(reqVO.getReturnImgs()); + gardenService.approveTask(inspectReqVO); + log.info("当前操作:"+InspectorOperateTypeEnum.YL_INSPECTOR_START_FINISH.getDesc()+"<--结束"); + return success(true); + default: + throw exception(APP_OPERATOR_NOT_EXISTS); + } + } + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderUniversalController.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderUniversalController.java index 4d60592..4d7b405 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderUniversalController.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderUniversalController.java @@ -77,7 +77,7 @@ public class AppGardenWorkOrderUniversalController { //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')") public CommonResult universalApproval(@Valid @RequestBody AppUniversalApprovalReqVO reqVO) { - log.info("【园林大区经理审批】接收前端请求,入参:curTaskKey={}, taskId={}, operateType={}, agree={}, reason={}", + log.info("【全域巡查员审批】接收前端请求,入参:curTaskKey={}, taskId={}, operateType={}, agree={}, reason={}", reqVO.getTaskKey(), reqVO.getTaskId(), reqVO.getOperateType(), reqVO.getAgree(), reqVO.getReason()); UniversalOperateTypeEnum operateType = UniversalOperateTypeEnum.getByCode(reqVO.getOperateType()); @@ -194,7 +194,7 @@ public class AppGardenWorkOrderUniversalController { log.info("当前操作:"+UniversalOperateTypeEnum.YL_TEAM_LEADER_RETURN.getDesc()+"<--结束"); return success(true); case YL_INSPECTOR_START_FINISH : //巡查员结束工单 - log.info("当前操作:养护组长结束工单(不同意)或大区经理重新发起(同意)开始,是否同意:"+reqVO.getAgree()+"-->"); + log.info("当前操作:全域巡查员结束工单(不同意)开始,是否同意:"+reqVO.getAgree()+"-->"); AppGardenTaskApproveReqVO inspectStartReqVO = new AppGardenTaskApproveReqVO(); Integer revokeStatus = reqVO.getAgree(); if (revokeStatus == null || (revokeStatus != 0 && revokeStatus != 1)) { diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/InspectorBuzStatusUpdateAspect.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/InspectorBuzStatusUpdateAspect.java new file mode 100644 index 0000000..3693745 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/InspectorBuzStatusUpdateAspect.java @@ -0,0 +1,225 @@ +package com.zteits.urbanops.module.workorder.controller.app.garden.aop; + +import com.zteits.urbanops.framework.common.biz.system.dict.DictDataCommonApi; +import com.zteits.urbanops.framework.common.biz.system.dict.dto.DictDataRespDTO; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; +import com.zteits.urbanops.framework.common.util.object.ObjectUtils; +import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; +import com.zteits.urbanops.module.garden.api.road.RoadApi; +import com.zteits.urbanops.module.garden.dto.road.RoadStreetRespDTO; +import com.zteits.urbanops.module.system.api.permission.RoleApi; +import com.zteits.urbanops.module.system.controller.admin.permission.vo.role.RoleRespVO; +import com.zteits.urbanops.module.workorder.api.constant.BpmCommonConstant; +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.common.AppUniversalApprovalReqVO; +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; +import com.zteits.urbanops.module.workorder.dal.mysql.maininfo.MainInfoMapper; +import com.zteits.urbanops.module.workorder.enums.InspectorOperateTypeEnum; +import com.zteits.urbanops.module.workorder.service.garden.BpmGardenService; +import jakarta.annotation.Resource; +import jodd.util.StringUtil; +import lombok.RequiredArgsConstructor; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; + +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zteits.urbanops.module.workorder.api.constant.BpmCommonConstant.CONSERVE_LEVEL; +import static com.zteits.urbanops.module.workorder.api.constant.BpmCommonConstant.ORDER_STATUS_INIT; +import static com.zteits.urbanops.module.workorder.enums.ErrorCodeConstants.*; + +/** + * 类描述:切面更新工单表业务状态 + * 创建人:yanhuiqing + * 创建时间:2025/12/21 14:53 + * 修改人:yanhuiqing + * 修改时间:2025/12/21 14:53 + * 修改备注: + * + * @author yanhuiqing + * @version 1.0 + */ +@Aspect +@Component +@RequiredArgsConstructor +public class InspectorBuzStatusUpdateAspect { + + @Resource + private MainInfoMapper mainInfoMapper; + + @Resource + private final RoadApi roadApi; + + @Resource + private BpmGardenService gardenService; + + @Resource + private final DictDataCommonApi dictDataCommonApi; + + @Resource + private RoleApi roleApi; + + // 切点:标注了@AutoUpdateBuzStatus的方法 + @Pointcut("@annotation(com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderInspectorBuzStatus)") + public void buzStatusUpdatePointcut() {} + + @Around("buzStatusUpdatePointcut()") + @Transactional(rollbackFor = Exception.class) + public Object around(ProceedingJoinPoint joinPoint) throws Throwable { + // 1. 获取方法参数(AppUniversalApprovalReqVO) + Object[] args = joinPoint.getArgs(); + AppUniversalApprovalReqVO reqVO = null; + for (Object arg : args) { + if (arg instanceof AppUniversalApprovalReqVO) { + reqVO = (AppUniversalApprovalReqVO) arg; + break; + } + } + if (reqVO == null) { + throw new IllegalArgumentException("方法参数中未找到AppUniversalApprovalReqVO"); + } + + // 2. 解析操作类型 + InspectorOperateTypeEnum operateType = InspectorOperateTypeEnum.getByCode(reqVO.getOperateType()); + Long workerDataId = reqVO.getWorkerDataId(); + Integer buzStatus = operateType.getCode(); + + // 3. 执行原有方法 + Object result = joinPoint.proceed(); + MainInfoDO dbData = mainInfoMapper.selectById(workerDataId); + MainInfoDO targeVO = new MainInfoDO(); + targeVO.setId(workerDataId); + targeVO.setOrderNo(dbData.getOrderNo()); + targeVO.setBusiLine(dbData.getBusiLine()); + //大区经理分配 + if(InspectorOperateTypeEnum.SH_REGION_MANAGER_ASSIGN.getCode().equals(reqVO.getOperateType())){ + RoadStreetRespDTO roadStreetRespDTO = roadApi.getRoadInfoById(reqVO.getRoadId()); + if(null == roadStreetRespDTO){ + throw exception(APP_WORK_ROAD_NOT_EXISTS); + } + targeVO.setStreetId(roadStreetRespDTO.getStreetId()); + targeVO.setStreetName(roadStreetRespDTO.getStreetName()); + DictDataRespDTO dictData = dictDataCommonApi.getDictData(CONSERVE_LEVEL, roadStreetRespDTO.getLevelId().toString()); + if(null == dictData){ + throw exception(APP_WORKER_LEVEL_ID_NOT_EXISTS); + } + targeVO.setCuringLevelId(Integer.valueOf(dictData.getValue())); + targeVO.setCuringLevelName(dictData.getLabel()); + targeVO.setBusiLine(reqVO.getBusiLine()); + + targeVO.setRoadName(reqVO.getRoadName()); + targeVO.setRoadId(reqVO.getRoadId()); + targeVO.setPressingType(reqVO.getPressingType()); + targeVO.setExpectedFinishDate(reqVO.getExpectedFinishDate()); + } + + //大区经理退回 + if(InspectorOperateTypeEnum.SH_REGION_MANAGER_RETURN.getCode().equals(reqVO.getOperateType())){ + + } + //重新发起需更新表单数据 + if(InspectorOperateTypeEnum.YL_INSPECTOR_START_RELAUNCH.getCode().equals(operateType.getCode())){ + targeVO = BeanUtils.toBean(reqVO,MainInfoDO.class); + targeVO.setId(reqVO.getWorkerDataId()); + targeVO.setOrderNo(dbData.getOrderNo()); + RoadStreetRespDTO roadStreetRespDTO = roadApi.getRoadInfoById(reqVO.getRoadId()); + if(null == roadStreetRespDTO){ + throw exception(APP_WORK_ROAD_NOT_EXISTS); + } + targeVO.setStreetId(roadStreetRespDTO.getStreetId()); + targeVO.setStreetName(roadStreetRespDTO.getStreetName()); + targeVO.setBuzStatus(ORDER_STATUS_INIT);//工单业务初始化状态 后续操作状态 见 OperateTypeEnum + + DictDataRespDTO dictData = dictDataCommonApi.getDictData(CONSERVE_LEVEL, roadStreetRespDTO.getLevelId().toString()); + if(null == dictData){ + throw exception(APP_WORKER_LEVEL_ID_NOT_EXISTS); + } + targeVO.setCuringLevelId(Integer.valueOf(dictData.getValue())); + targeVO.setCuringLevelName(dictData.getLabel()); + targeVO.setCommitDate(LocalDateTime.now()); + targeVO.setCompanyId(SecurityFrameworkUtils.getCompanyId()); + + targeVO.setDeptId(SecurityFrameworkUtils.getDeptId()); + List roleList = roleApi.getRoleListByUsrId(SecurityFrameworkUtils.getLoginUserId()); + targeVO.setWoSourceId(roleList.get(0).getCode()); + targeVO.setWoSourceName(roleList.get(0).getName()); + String busiLine = reqVO.getBusiLine(); + if(StringUtil.isEmpty(busiLine)){ + busiLine = SecurityFrameworkUtils.getBusiLine(); + } + targeVO.setBusiLine(busiLine); + targeVO.setUserId(SecurityFrameworkUtils.getLoginUserId()); + targeVO.setUserName(SecurityFrameworkUtils.getLoginUserNickname()); + if(ObjectUtils.isNotAllEmpty(reqVO.getExpectedFinishDate())){ + targeVO.setExpectedFinishDate(reqVO.getExpectedFinishDate()); + } + + List problemsImgs = reqVO.getProblemsImgs(); + if(ObjectUtils.isNotAllEmpty(problemsImgs) && problemsImgs.size()>0){ + gardenService.attachmentInsertOrUpdate(problemsImgs,BpmCommonConstant.PROBLEM_IMG_GROUP,targeVO); + } + } + //养护组长分配需更新表单数据 + if(InspectorOperateTypeEnum.YL_TEAM_LEADER_ASSIGN.getCode().equals(operateType.getCode())){ + targeVO.setWorkerId(reqVO.getNextAssignee()); + } + //养护组长验收不通过 需更新表单数据 + if(InspectorOperateTypeEnum.YL_TEAM_LEADER_CONFIRM_REJECT.getCode().equals(operateType.getCode())){ + + List returnImgs = reqVO.getReturnImgs(); + if(ObjectUtils.isNotAllEmpty(returnImgs) && returnImgs.size()>0){ + gardenService.attachmentInsertOrUpdate(returnImgs,BpmCommonConstant.GARDEN_TEAMLEADER_RETURN_IMG,targeVO); + } + } + //养护员实施 需更新表单数据 + if(InspectorOperateTypeEnum.YL_WORKER_IMPLEMENT.getCode().equals(operateType.getCode())){ + //实施更新为实施人员部门 + targeVO.setDeptId(SecurityFrameworkUtils.getDeptId()); + //实施 审批已经执行 此处就无需执行 + /* + List problemsImgs = reqVO.getProblemsImgs(); + List startImgs = reqVO.getStartImgs(); + List processingImgs = reqVO.getProcessingImgs(); + List endImgs = reqVO.getEndImgs(); + List personImgs = reqVO.getPersonImgs(); + List materialImgs = reqVO.getMaterialImgs(); + + targeVO.setHandleResult(reqVO.getHandleResult()); + targeVO.setCoHandlers(reqVO.getCoHandlers()); + targeVO.setWorkerId(SecurityFrameworkUtils.getLoginUserId()); + targeVO.setWorkerName(SecurityFrameworkUtils.getLoginUserNickname()); + targeVO.setWorkerCompanyId(SecurityFrameworkUtils.getCompanyId()); + mainInfoMapper.updateById(targeVO); + + if(ObjectUtils.isNotAllEmpty(problemsImgs) && problemsImgs.size()>0){ + gardenService.attachmentInsertOrUpdate(problemsImgs,BpmCommonConstant.PROBLEM_IMG_GROUP,targeVO); + } + if(ObjectUtils.isNotAllEmpty(startImgs) && startImgs.size()>0){ + gardenService.attachmentInsertOrUpdate(startImgs,BpmCommonConstant.START_IMG_GROUP,targeVO); + } + if(ObjectUtils.isNotAllEmpty(processingImgs) && processingImgs.size()>0){ + gardenService.attachmentInsertOrUpdate(processingImgs,BpmCommonConstant.PROCESS_IMG_GROUP,targeVO); + } + + if(ObjectUtils.isNotAllEmpty(endImgs) && endImgs.size()>0){ + gardenService.attachmentInsertOrUpdate(endImgs,BpmCommonConstant.END_IMG_GROUP,targeVO); + } + if(ObjectUtils.isNotAllEmpty(personImgs) && personImgs.size()>0){ + gardenService.attachmentInsertOrUpdate(personImgs,BpmCommonConstant.PERSON_IMG_GROUP,targeVO); + } + if(ObjectUtils.isNotAllEmpty(materialImgs) && materialImgs.size()>0){ + gardenService.attachmentInsertOrUpdate(materialImgs,BpmCommonConstant.MATERIAL_IMG_GROUP,targeVO); + }*/ + } + // 4. 自动更新buz_status + targeVO.setBuzStatus(buzStatus.toString()); + mainInfoMapper.updateById(targeVO); + + return result; + } +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/UniversalBuzStatusUpdateAspect.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/UniversalBuzStatusUpdateAspect.java index b737152..6e14cef 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/UniversalBuzStatusUpdateAspect.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/UniversalBuzStatusUpdateAspect.java @@ -30,6 +30,7 @@ import java.util.List; import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zteits.urbanops.module.workorder.api.constant.BpmCommonConstant.CONSERVE_LEVEL; import static com.zteits.urbanops.module.workorder.enums.ErrorCodeConstants.APP_WORKER_LEVEL_ID_NOT_EXISTS; +import static com.zteits.urbanops.module.workorder.enums.ErrorCodeConstants.APP_WORK_ROAD_NOT_EXISTS; /** * 类描述:切面更新工单表业务状态 @@ -94,6 +95,9 @@ public class UniversalBuzStatusUpdateAspect { //大区经理分配 if(UniversalOperateTypeEnum.REGION_MANAGER_ASSIGN.getCode().equals(reqVO.getOperateType())){ RoadStreetRespDTO roadStreetRespDTO = roadApi.getRoadInfoById(reqVO.getRoadId()); + if(null == roadStreetRespDTO){ + throw exception(APP_WORK_ROAD_NOT_EXISTS); + } targeVO.setStreetId(roadStreetRespDTO.getStreetId()); targeVO.setStreetName(roadStreetRespDTO.getStreetName()); DictDataRespDTO dictData = dictDataCommonApi.getDictData(CONSERVE_LEVEL, roadStreetRespDTO.getLevelId().toString()); diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/task/AppGardenTaskInspectorApproveReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/task/AppGardenTaskInspectorApproveReqVO.java new file mode 100644 index 0000000..aaa2768 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/task/AppGardenTaskInspectorApproveReqVO.java @@ -0,0 +1,51 @@ +package com.zteits.urbanops.module.workorder.controller.app.garden.vo.task; + +import com.zteits.urbanops.module.workorder.controller.app.garden.group.RelaunchGroup; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +/** + * 类描述:园林APP端工单任务审批通过VO + * 创建人:yanhuiqing + * 创建时间:2025/12/13 21:33 + * 修改人:yanhuiqing + * 修改时间:2025/12/13 21:33 + * 修改备注: + * + * @author yanhuiqing + * @version 1.0 + */ +@Schema(description = "APP - 通过流程任务的 Request VO") +@Data +public class AppGardenTaskInspectorApproveReqVO { + + @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 = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21128") + @NotNull(message = "道路ID不能为空", groups = RelaunchGroup.class) + private Long roadId; + + @Schema(description = "道路名称", example = "测试道路") + private String roadName; + + @Schema(description = "退回时的拍照图片") + private List returnImgs; + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/ErrorCodeConstants.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/ErrorCodeConstants.java index 65bd241..808e0c8 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/ErrorCodeConstants.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/ErrorCodeConstants.java @@ -35,9 +35,9 @@ public interface ErrorCodeConstants { ErrorCode APP_WORK_ORADER_NO_NOT_EXISTS = new ErrorCode(1-900-002-003, "工单编号不能为空!"); - ErrorCode APP_WORK_ORADER_ROLE_ILLEGLE = new ErrorCode(1-900-002-004, "该登录人即是 大区经理 角色,又是 全域督察员,无法发起流程!"); + ErrorCode APP_WORK_ORADER_ROLE_ILLEGLE = new ErrorCode(1-900-002-004, "该登录人即是 大区经理 角色,又是 全域巡查员,无法发起流程!"); - ErrorCode APP_WORK_ORADER_ROLE_NOT_EXSITS = new ErrorCode(1-900-002-005, "该登录人即不是 大区经理 角色,又不是 全域督察员,无法发起流程!"); + ErrorCode APP_WORK_ORADER_ROLE_NOT_EXSITS = new ErrorCode(1-900-002-005, "该登录人即不是 大区经理 角色,又不是 全域巡查员,无法发起流程!"); ErrorCode APP_UNIVERSAL_USER_ROLE_ERROR = new ErrorCode(1-900-002-006, "该登录人不是 全域巡查员,无法发起流程!"); @@ -46,5 +46,11 @@ public interface ErrorCodeConstants { ErrorCode EVENT_INFO_NOT_EXISTS = new ErrorCode(1-900-003-001, "工单事件不存在"); ErrorCode EVENT_MAPPING_INFO_NOT_EXISTS = new ErrorCode(1-900-004-001, "工单事件映射不存在"); + + ErrorCode APP_INSPECTOR_USER_ROLE_ERROR = new ErrorCode(1-900-004-001, "该登录人不是 全域督查员,无法发起流程!"); + + ErrorCode APP_WORK_INSPECTOR_ROLE_ILLEGLE = new ErrorCode(1-900-004-00, "该登录人即是 大区经理 角色,又是 全域督察员,无法发起流程!"); + + ErrorCode APP_WORK_ROAD_NOT_EXISTS = new ErrorCode(1-900-004-001, "道路信息不存在"); } diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/InspectorOperateTypeEnum.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/InspectorOperateTypeEnum.java new file mode 100644 index 0000000..1e2a5ae --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/InspectorOperateTypeEnum.java @@ -0,0 +1,52 @@ +package com.zteits.urbanops.module.workorder.enums; + +import com.fasterxml.jackson.annotation.JsonValue; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; + +import java.util.Arrays; + +/** + * 类描述:全域督察员审批操作类型枚举 + * 创建人:yanhuiqing + * 创建时间:2025/12/29 9:56 + * 修改人:yanhuiqing + * 修改时间:2025/12/29 9:56 + * 修改备注: + * + * @author yanhuiqing + * @version 1.0 + */ +@Schema(description = "全域督察员操作类型枚举") +@Getter +public enum InspectorOperateTypeEnum { + SH_REGION_MANAGER_ASSIGN(60,"大区经理分配"), + SH_REGION_MANAGER_RETURN(70,"大区经理退回"), + YL_TEAM_LEADER_ASSIGN(110, "养护组长分配"), + YL_TEAM_LEADER_RETURN(210, "养护组长退回"), + YL_WORKER_IMPLEMENT(120, "养护员实施"), + YL_WORKER_RETURN(220, "养护员退回"), + YL_TEAM_LEADER_CONFIRM_PASS(130, "养护组长验收通过"), + YL_TEAM_LEADER_CONFIRM_REJECT(230, "养护组长验收不通过"), + YL_INSPECTOR_CHECK_PASS(140, "全域督察员验收通过"), + YL_INSPECTOR_CHECK_REJECT(240, "全域督察员验收不通过"), + YL_INSPECTOR_START_FINISH(200, "全域督察员结束工单(不同意)"), + YL_INSPECTOR_START_RELAUNCH(100, "全域督察员重新发起(同意)"); + + @JsonValue // 序列化时返回code(前端接收数字) + private final Integer code; + private final String desc; + + InspectorOperateTypeEnum(Integer code, String desc) { + this.code = code; + this.desc = desc; + } + + // 根据code获取枚举(业务层转换用) + public static InspectorOperateTypeEnum getByCode(Integer code) { + return Arrays.stream(values()) + .filter(e -> e.getCode().equals(code)) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("无效的操作类型:" + code)); + } +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenServiceImpl.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenServiceImpl.java index 8f083dd..5f54d1e 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenServiceImpl.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenServiceImpl.java @@ -138,6 +138,9 @@ public class BpmGardenServiceImpl implements BpmGardenService{ .setStatus(BpmTaskStatusEnum.RUNNING.getStatus()); RoadStreetRespDTO roadStreetRespDTO = roadApi.getRoadInfoById(createRequestVo.getRoadId()); + if(null == roadStreetRespDTO){ + throw exception(APP_WORK_ROAD_NOT_EXISTS); + } workOrder.setStreetId(roadStreetRespDTO.getStreetId()); workOrder.setStreetName(roadStreetRespDTO.getStreetName()); workOrder.setBuzStatus(ORDER_STATUS_INIT);//工单业务初始化状态 后续操作状态 见 OperateTypeEnum diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmInspectorService.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmInspectorService.java new file mode 100644 index 0000000..70ed39e --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmInspectorService.java @@ -0,0 +1,55 @@ +package com.zteits.urbanops.module.workorder.service.garden; + +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.task.AppGardenTaskApproveReqVO; +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.task.AppGardenTaskInspectorApproveReqVO; +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.task.AppGardenTaskRegionMgrApproveReqVO; +import com.zteits.urbanops.module.workorder.dto.AppGardenWorkOrderInspectorReqVO; +import com.zteits.urbanops.module.workorder.dto.AppGardenWorkOrderUniversalReqVO; +import jakarta.validation.Valid; + +/** + * 类描述:全域督察员工单处理server + * 创建人:yanhuiqing + * 创建时间:2025/12/25 16:40 + * 修改人:yanhuiqing + * 修改时间:2025/12/25 16:40 + * 修改备注: + * + * @author yanhuiqing + * @version 1.0 + */ +public interface BpmInspectorService { + + /** + * 全域督察员工单申请 app service 接口 + * @param createRequestVo + * @return + */ + Long createWorkOrder(@Valid AppGardenWorkOrderInspectorReqVO createRequestVo); + + /** + * 全域督察员工单分配 + * @param regionPassReqVO + */ + void approveTask2TeamLeader(AppGardenTaskRegionMgrApproveReqVO regionPassReqVO); + + /** + * 养护组长退回 分情况 + * @param returnApproveReqVO + */ + void approveTask(AppGardenTaskInspectorApproveReqVO returnApproveReqVO); + + /** + * 判定是否三海地区 通过公司id + * @param companyId + * @return + */ + boolean isSanhai(Long companyId); + + /** + * 判断是否三海地区通过 道路id + * @param roadId + * @return + */ + boolean isSanhaiByRoadId(Long roadId); +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmInspectorServiceImpl.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmInspectorServiceImpl.java new file mode 100644 index 0000000..1c87bc5 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmInspectorServiceImpl.java @@ -0,0 +1,302 @@ +package com.zteits.urbanops.module.workorder.service.garden; + +import com.zteits.urbanops.framework.common.biz.system.dict.DictDataCommonApi; +import com.zteits.urbanops.framework.common.biz.system.dict.dto.DictDataRespDTO; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; +import com.zteits.urbanops.framework.common.util.object.ObjectUtils; +import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; +import com.zteits.urbanops.module.bpm.api.task.BpmProcessInstanceApi; +import com.zteits.urbanops.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import com.zteits.urbanops.module.bpm.controller.admin.task.vo.task.BpmTaskApproveReqVO; +import com.zteits.urbanops.module.bpm.enums.task.BpmTaskStatusEnum; +import com.zteits.urbanops.module.bpm.framework.flowable.core.enums.BpmnVariableConstants; +import com.zteits.urbanops.module.bpm.service.definition.BpmProcessDefinitionService; +import com.zteits.urbanops.module.bpm.service.task.BpmProcessInstanceService; +import com.zteits.urbanops.module.bpm.service.task.BpmTaskService; +import com.zteits.urbanops.module.garden.api.road.RoadApi; +import com.zteits.urbanops.module.garden.dto.road.RoadStreetRespDTO; +import com.zteits.urbanops.module.system.api.permission.RoleApi; +import com.zteits.urbanops.module.system.api.user.AdminUserApi; +import com.zteits.urbanops.module.system.api.user.dto.AdminUserRespDTO; +import com.zteits.urbanops.module.system.controller.admin.permission.vo.role.RoleRespVO; +import com.zteits.urbanops.module.workorder.api.WorkOrderApi; +import com.zteits.urbanops.module.workorder.api.constant.BpmCommonConstant; +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.task.AppGardenTaskApproveReqVO; +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.task.AppGardenTaskInspectorApproveReqVO; +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.task.AppGardenTaskRegionMgrApproveReqVO; +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; +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.AppGardenWorkOrderInspectorReqVO; +import com.zteits.urbanops.module.workorder.dto.AppGardenWorkOrderUniversalReqVO; +import com.zteits.urbanops.module.workorder.enums.BusiLineTeamLeaderRoleCodeEnum; +import com.zteits.urbanops.module.workorder.util.RoleListUtils; +import jakarta.annotation.Resource; +import jodd.util.StringUtil; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.runtime.ProcessInstance; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zteits.urbanops.module.workorder.api.constant.BpmCommonConstant.*; +import static com.zteits.urbanops.module.workorder.enums.ErrorCodeConstants.*; + +/** + * 类描述:全域 督察员app端工单服务实现类 + * 创建人:yanhuiqing + * 创建时间:2025/12/25 16:42 + * 修改人:yanhuiqing + * 修改时间:2025/12/25 16:42 + * 修改备注: + * + * @author yanhuiqing + * @version 1.0 + */ +@Service +@Validated +public class BpmInspectorServiceImpl implements BpmInspectorService{ + + @Resource + private AttachmentMapper attachmentMapper; + @Resource + private MainInfoMapper workOrderMapper; + + @Resource + private MainInfoExtMapper workOrderExtMapper; + @Resource + private BpmProcessInstanceApi processInstanceApi; + + @Resource + private BpmProcessDefinitionService processDefinitionService; + @Resource + private WorkOrderApi workOrderApi; + + @Resource + private RoadApi roadApi; + + @Resource + private BpmTaskService taskService; + + @Resource + private AdminUserApi adminUserApi; + + @Resource + private RoleApi roleApi; + + @Resource + private BpmGardenService bpmGardenService; + + @Resource + private BpmProcessInstanceService processInstanceService; + + @Resource + private RuntimeService runtimeService; + + @Resource + private DictDataCommonApi dictDataCommonApi; + @Override + public Long createWorkOrder(AppGardenWorkOrderInspectorReqVO createRequestVo) { + List roleList = roleApi.getRoleListByUsrId(SecurityFrameworkUtils.getLoginUserId()); + if(null == roleList || roleList.size()==0){ + throw exception(APP_USER_ROLE_NOT_EXISTS); + } + + if(!RoleListUtils.containsCode(roleList,INSPECTOR_GLOBAL)){ + throw exception(APP_INSPECTOR_USER_ROLE_ERROR); + } + //校验人员不能有 双重角色 + if(RoleListUtils.containsBothCodes(roleList, REGIONAL_MANAGER, INSPECTOR_GLOBAL)){ + throw exception(APP_WORK_INSPECTOR_ROLE_ILLEGLE); + } + + List problemsImgsList = createRequestVo.getProblemsImgs(); + MainInfoDO workOrder = BeanUtils.toBean(createRequestVo, MainInfoDO.class) + .setStatus(BpmTaskStatusEnum.RUNNING.getStatus()); + RoadStreetRespDTO roadStreetRespDTO = roadApi.getRoadInfoById(createRequestVo.getRoadId()); + if(null == roadStreetRespDTO){ + throw exception(APP_WORK_ROAD_NOT_EXISTS); + } + workOrder.setStreetId(roadStreetRespDTO.getStreetId()); + workOrder.setStreetName(roadStreetRespDTO.getStreetName()); + workOrder.setBuzStatus(ORDER_STATUS_INIT);//工单业务初始化状态 后续操作状态 见 OperateTypeEnum + if(StringUtil.isEmpty(createRequestVo.getOrderType())){ + workOrder.setOrderType(BpmCommonConstant.ORDER_TYPE_C); + }else{ + if(createRequestVo.getOrderType().equals(BpmCommonConstant.ORDER_TYPE_Q)){ + throw exception(APP_WORK_ORADER_ERROR); + } + workOrder.setOrderType(createRequestVo.getOrderType()); + } + DictDataRespDTO dictData = dictDataCommonApi.getDictData(CONSERVE_LEVEL, roadStreetRespDTO.getLevelId().toString()); + if(null == dictData){ + throw exception(APP_WORKER_LEVEL_ID_NOT_EXISTS); + } + workOrder.setCuringLevelId(Integer.valueOf(dictData.getValue())); + workOrder.setCuringLevelName(dictData.getLabel()); + workOrder.setCommitDate(LocalDateTime.now()); + workOrder.setCompanyId(SecurityFrameworkUtils.getCompanyId()); + + workOrder.setDeptId(SecurityFrameworkUtils.getDeptId()); + workOrder.setWoSourceId(roleList.get(0).getCode()); + workOrder.setWoSourceName(roleList.get(0).getName()); + String busiLine = createRequestVo.getBusiLine(); + if(StringUtil.isEmpty(busiLine)){ + busiLine = SecurityFrameworkUtils.getBusiLine(); + } + workOrder.setBusiLine(busiLine); + workOrder.setUserId(SecurityFrameworkUtils.getLoginUserId()); + workOrder.setUserName(SecurityFrameworkUtils.getLoginUserNickname()); + if(ObjectUtils.isNotAllEmpty(createRequestVo.getExpectedFinishDate())){ + workOrder.setExpectedFinishDate(createRequestVo.getExpectedFinishDate()); + } + String workOrderNum = workOrderApi.generateWONum(BpmCommonConstant.WORK_ORDER_PREFFIX_INSPECTOR); + workOrder.setOrderNo(workOrderNum); + + workOrderMapper.insert(workOrder); + if(ObjectUtils.isNotAllEmpty(problemsImgsList) && problemsImgsList.size()>0){ + bpmGardenService.attachmentInsertOrUpdate(problemsImgsList,BpmCommonConstant.PROBLEM_IMG_GROUP,workOrder); + } + // 发起 BPM 流程 + Long userId = SecurityFrameworkUtils.getLoginUserId(); + Map processInstanceVariables = new HashMap<>(); + //是否三海路段 + boolean isSanhai = this.isSanhai(roadStreetRespDTO.getCompanyId()); + processInstanceVariables.put(BPM_COMMON_PROD_ROADID, workOrder.getRoadId()); + processInstanceVariables.put(BPM_COMMON_PROD_APPLYUSERID, userId); + processInstanceVariables.put(BPM_COMMON_PROD_ISSANHAI,isSanhai); + processInstanceVariables.put(BPM_COMMON_PROD_ISNEED,null); + processInstanceVariables.put(BMP_COMMON_PROD_ISPASS,null); + + if(!isSanhai){//非三海初始化 业务线班组长信息 + String roleCode = BusiLineTeamLeaderRoleCodeEnum.getByCode(busiLine).getRoleCode(); + if(StringUtil.isEmpty(roleCode)){// 找不到 默认为园林组长的角色 + roleCode = BpmCommonConstant.TEAM_LEADER_YL; + } + List userList = workOrderExtMapper.getUserByRoadIdAndRoleCode(workOrder.getRoadId(),roleCode,createRequestVo.getBusiLine()); + if(org.springframework.util.ObjectUtils.isEmpty(userList)){ + throw exception(TEAM_LEADER_YL_NOT_EXISTS); + } + // 提取id到List + List idList = userList.stream() + // 映射:将AdminUserRespDTO对象转为其id属性 + .map(AdminUserRespDTO::getId) + // 收集结果到List + .collect(Collectors.toList()); + processInstanceVariables.put(BPM_COMMON_PROD_LEADERID, idList.get(0)); + } + + String processInstanceId = processInstanceApi.createProcessInstance(userId, + new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(BpmCommonConstant.BPM_UNIVERSE_INSPECTOR_WO) + .setVariables(processInstanceVariables).setBusinessKey(String.valueOf(workOrder.getId()))); + + // 将工作流的编号,更新到 工单中 + workOrderMapper.updateById(new MainInfoDO().setId(workOrder.getId()).setProcessInstanceId(processInstanceId)); + return workOrder.getId(); + } + + @Override + public void approveTask2TeamLeader(AppGardenTaskRegionMgrApproveReqVO reqVO) { + BpmTaskApproveReqVO targetVO = BeanUtils.toBean(reqVO,BpmTaskApproveReqVO.class); + Map variables = new HashMap<>(); + //审批通过 + variables.put(BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_STATUS,BpmTaskStatusEnum.APPROVE.getStatus()); + Integer status = reqVO.getAgree(); + if(status == null || status == 1){//status == null 此处是为了兼容老接口,防止前段少改造 + variables.put(BMP_COMMON_PROD_ISPASS,false); + variables.put(BPM_COMMON_PROD_ISREVOKE,null);//不通过后 初始化重新发起变量 + }else { + variables.put(BMP_COMMON_PROD_ISPASS,true); + variables.put(BPM_COMMON_PROD_ISNEED,null); + String instanceId = taskService.getTask(reqVO.getId()).getProcessInstanceId(); + ProcessInstance processInstance = processInstanceService.getProcessInstance(instanceId); + Map processInstanceVariables = processInstance.getProcessVariables(); + //String busiLine = (String)processInstanceVariables.get(BPM_COMMON_PROD_BUSILINE); + //Long roadId = (Long) processInstanceVariables.get(BPM_COMMON_PROD_ROADID); + String busiLine = reqVO.getBusiLine(); + Long roadId = reqVO.getRoadId(); + String roleCode = BusiLineTeamLeaderRoleCodeEnum.getByCode(busiLine).getRoleCode(); + + if(StringUtil.isEmpty(roleCode)){// 找不到 默认为园林组长的角色 + roleCode = BpmCommonConstant.TEAM_LEADER_YL; + } + List userList = workOrderExtMapper.getUserByRoadIdAndRoleCode(roadId,roleCode,busiLine); + if(org.springframework.util.ObjectUtils.isEmpty(userList)){ + throw exception(TEAM_LEADER_YL_NOT_EXISTS); + } + // 提取id到List + List idList = userList.stream() + // 映射:将AdminUserRespDTO对象转为其id属性 + .map(AdminUserRespDTO::getId) + // 收集结果到List + .collect(Collectors.toList()); + processInstanceVariables.put(BPM_COMMON_PROD_LEADERID, idList.get(0));//养护组长分配 + //流程变量重新赋值 + runtimeService.setVariables(instanceId,processInstanceVariables); + + } + + targetVO.setVariables(variables); + //TODO 审批候选人需要赋值 + Map> nextAssignees = new HashMap<>(); + targetVO.setNextAssignees(nextAssignees); + targetVO.setAttattmentUrls(reqVO.getReturnImgs()); + taskService.approveTask(SecurityFrameworkUtils.getLoginUserId(),targetVO); + } + + @Override + public void approveTask(AppGardenTaskInspectorApproveReqVO reqVO) { + BpmTaskApproveReqVO targetVO = BeanUtils.toBean(reqVO,BpmTaskApproveReqVO.class); + Map variables = new HashMap<>(); + //审批通过 + variables.put(BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_STATUS,BpmTaskStatusEnum.APPROVE.getStatus()); + Integer status = reqVO.getAgree(); + if(status == null || status == 1){//status == null 此处是为了兼容老接口,防止前段少改造 + variables.put(BPM_COMMON_PROD_ISNEED,false); + variables.put(BPM_COMMON_PROD_ISREVOKE,false); + variables.put(BPM_COMMON_PROD_ISVERIFY,false); + //退回时判断 三海区域 + boolean isSanhai = isSanhaiByRoadId(reqVO.getRoadId()); + variables.put(BPM_COMMON_PROD_ISSANHAI,isSanhai); + }else { + variables.put(BPM_COMMON_PROD_ISNEED,true); + variables.put(BPM_COMMON_PROD_ISREVOKE,true); + variables.put(BPM_COMMON_PROD_ISVERIFY,true); + } + //TODO 重新发起需更新工单数据库 + + targetVO.setVariables(variables); + //TODO 审批候选人需要赋值 + Map> nextAssignees = new HashMap<>(); + targetVO.setNextAssignees(nextAssignees); + targetVO.setAttattmentUrls(reqVO.getReturnImgs()); + taskService.approveTask(SecurityFrameworkUtils.getLoginUserId(),targetVO); + } + + @Override + public boolean isSanhai(Long companyId) { + List sanHaiRoadId = new ArrayList<>(); + sanHaiRoadId.add(115L); // TODO 目前写死 + //是否三海路段 + boolean isSanhai = sanHaiRoadId.contains(companyId); + return isSanhai; + } + + @Override + public boolean isSanhaiByRoadId(Long roadId) { + RoadStreetRespDTO roadStreetRespDTO = roadApi.getRoadInfoById(roadId); + if(null == roadStreetRespDTO){ + throw exception(APP_WORK_ROAD_NOT_EXISTS); + } + return isSanhai(roadStreetRespDTO.getCompanyId()); + } + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmRegionMgrServiceImpl.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmRegionMgrServiceImpl.java index 795c495..04d2af8 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmRegionMgrServiceImpl.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmRegionMgrServiceImpl.java @@ -105,7 +105,9 @@ public class BpmRegionMgrServiceImpl implements BpmRegionMgrService{ MainInfoDO workOrder = BeanUtils.toBean(createRequestVo, MainInfoDO.class) .setStatus(BpmTaskStatusEnum.RUNNING.getStatus()); RoadStreetRespDTO roadStreetRespDTO = roadApi.getRoadInfoById(createRequestVo.getRoadId()); - + if(null == roadStreetRespDTO){ + throw exception(APP_WORK_ROAD_NOT_EXISTS); + } workOrder.setStreetId(roadStreetRespDTO.getStreetId()); workOrder.setStreetName(roadStreetRespDTO.getStreetName()); workOrder.setBuzStatus(ORDER_STATUS_INIT);//工单业务初始化状态 后续操作状态 见 OperateTypeEnum diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmUniversalServiceImpl.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmUniversalServiceImpl.java index 5b98e51..6b69414 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmUniversalServiceImpl.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmUniversalServiceImpl.java @@ -156,6 +156,7 @@ public class BpmUniversalServiceImpl implements BpmUniversalService{ processInstanceVariables.put(BPM_COMMON_PROD_APPLYUSERID, userId); processInstanceVariables.put(BMP_COMMON_PROD_ISPASS,null); + String processInstanceId = processInstanceApi.createProcessInstance(userId, // new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(BpmCommonConstant.BPM_GARDEN_INSPECT_WO) new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(BpmCommonConstant.BPM_UNIVERSE_WO) -- libgit2 0.21.4