From 3fe9c3e6bcd2c9bfaaf0fe309fb7280aeef977fe Mon Sep 17 00:00:00 2001 From: yanhuiqing Date: Tue, 30 Dec 2025 23:24:35 +0800 Subject: [PATCH] AI工单 审批流程 --- urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/dto/AppGardenWorkOrderAIReqVO.java | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/annotation/AutoUpdateWorkerOrderAIBuzStatus.java | 16 ++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderAIController.java | 8 +++++--- urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderInspectorController.java | 4 ++-- urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/AIBuzStatusUpdateAspect.java | 226 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/EventSourceEnum.java | 46 ++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmAIService.java | 3 ++- urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmAIServiceImpl.java | 6 +++++- 8 files changed, 389 insertions(+), 7 deletions(-) create mode 100644 urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/dto/AppGardenWorkOrderAIReqVO.java create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/annotation/AutoUpdateWorkerOrderAIBuzStatus.java create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/AIBuzStatusUpdateAspect.java create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/EventSourceEnum.java diff --git a/urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/dto/AppGardenWorkOrderAIReqVO.java b/urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/dto/AppGardenWorkOrderAIReqVO.java new file mode 100644 index 0000000..b536e45 --- /dev/null +++ b/urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/dto/AppGardenWorkOrderAIReqVO.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 AI端请求参数 + * @date 2025/12/6 10:17 + */ +@Schema(description = "APP-园林AI工单请求创建 Request VO") +@Data +public class AppGardenWorkOrderAIReqVO { + + + @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/AutoUpdateWorkerOrderAIBuzStatus.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/annotation/AutoUpdateWorkerOrderAIBuzStatus.java new file mode 100644 index 0000000..105b89f --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/annotation/AutoUpdateWorkerOrderAIBuzStatus.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 AutoUpdateWorkerOrderAIBuzStatus { +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderAIController.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderAIController.java index 3d41961..5f49ff7 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderAIController.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderAIController.java @@ -3,6 +3,7 @@ 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.AutoUpdateWorkerOrderAIBuzStatus; import com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderInspectorBuzStatus; import com.zteits.urbanops.module.workorder.controller.app.garden.vo.common.AppUniversalApprovalReqVO; import com.zteits.urbanops.module.workorder.controller.app.garden.vo.operator.AppGardenTaskReturnExtReqVO; @@ -11,6 +12,7 @@ import com.zteits.urbanops.module.workorder.controller.app.garden.vo.operator.Ap 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.AppGardenWorkOrderAIReqVO; import com.zteits.urbanops.module.workorder.dto.AppGardenWorkOrderInspectorReqVO; import com.zteits.urbanops.module.workorder.dto.AppGardenWorkOrderReqVO; import com.zteits.urbanops.module.workorder.enums.AIOperateTypeEnum; @@ -67,13 +69,13 @@ public class AppGardenWorkOrderAIController { @PostMapping("/create") //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:create')") @Operation(summary = "app-AI工单派发人员创建工单信息") - public CommonResult createMainInfo(@Valid @RequestBody AppGardenWorkOrderInspectorReqVO createReqVO) { + public CommonResult createMainInfo(@Valid @RequestBody AppGardenWorkOrderAIReqVO createReqVO) { return success(aiService.createWorkOrder(createReqVO)); } @Operation(summary = "app-统一审批入口") @PostMapping("/universalApproval") - @AutoUpdateWorkerOrderInspectorBuzStatus + @AutoUpdateWorkerOrderAIBuzStatus @Transactional(rollbackFor = Exception.class) //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')") public CommonResult universalApproval(@Valid @RequestBody AppUniversalApprovalReqVO reqVO) { @@ -240,7 +242,7 @@ public class AppGardenWorkOrderAIController { inspectReqVO.setId(reqVO.getTaskId()); inspectReqVO.setReturnImgs(reqVO.getReturnImgs()); gardenService.approveTask(inspectReqVO); - log.info("当前操作:"+AIOperateTypeEnum.YL_INSPECTOR_START_FINISH.getDesc()+"<--结束"); + log.info("当前操作:"+AIOperateTypeEnum.YL_INSPECTOR_CHECK_PASS.getDesc()+AIOperateTypeEnum.YL_INSPECTOR_CHECK_REJECT.getDesc()+"<--结束"); return success(true); default: throw exception(APP_OPERATOR_NOT_EXISTS); 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 index 82ee1de..16d757b 100644 --- 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 @@ -232,7 +232,7 @@ public class AppGardenWorkOrderInspectorController { log.info("当前操作:"+InspectorOperateTypeEnum.YL_INSPECTOR_START_RELAUNCH.getDesc()+"<--结束"); return success(true); case YL_INSPECTOR_CHECK_PASS , YL_INSPECTOR_CHECK_REJECT ://督察员验收通过,督察员验收不通过 - log.info("当前操作:全域巡查员验收通过 或全域巡查员验收不通过开始,是否同意:"+reqVO.getAgree()+"-->"); + log.info("当前操作:全域督察员验收通过 或全域督察员验收不通过开始,是否同意:"+reqVO.getAgree()+"-->"); AppGardenTaskApproveReqVO inspectReqVO = new AppGardenTaskApproveReqVO(); Integer verifyStatus = reqVO.getAgree(); if (verifyStatus == null || (verifyStatus != 0 && verifyStatus != 1)) { @@ -243,7 +243,7 @@ public class AppGardenWorkOrderInspectorController { inspectReqVO.setId(reqVO.getTaskId()); inspectReqVO.setReturnImgs(reqVO.getReturnImgs()); gardenService.approveTask(inspectReqVO); - log.info("当前操作:"+InspectorOperateTypeEnum.YL_INSPECTOR_START_FINISH.getDesc()+"<--结束"); + log.info("当前操作:"+InspectorOperateTypeEnum.YL_INSPECTOR_CHECK_PASS.getDesc()+InspectorOperateTypeEnum.YL_INSPECTOR_CHECK_REJECT.getDesc()+"<--结束"); return success(true); default: throw exception(APP_OPERATOR_NOT_EXISTS); diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/AIBuzStatusUpdateAspect.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/AIBuzStatusUpdateAspect.java new file mode 100644 index 0000000..505fbb3 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/AIBuzStatusUpdateAspect.java @@ -0,0 +1,226 @@ +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.AIOperateTypeEnum; +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.APP_WORKER_LEVEL_ID_NOT_EXISTS; +import static com.zteits.urbanops.module.workorder.enums.ErrorCodeConstants.APP_WORK_ROAD_NOT_EXISTS; + +/** + * 类描述:切面更新工单表业务状态 + * 创建人:yanhuiqing + * 创建时间:2025/12/21 14:53 + * 修改人:yanhuiqing + * 修改时间:2025/12/21 14:53 + * 修改备注: + * + * @author yanhuiqing + * @version 1.0 + */ +@Aspect +@Component +@RequiredArgsConstructor +public class AIBuzStatusUpdateAspect { + + @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.AutoUpdateWorkerOrderAIBuzStatus)") + 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. 解析操作类型 + AIOperateTypeEnum operateType = AIOperateTypeEnum.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(AIOperateTypeEnum.AI_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(AIOperateTypeEnum.AI_REGION_MANAGER_RETURN.getCode().equals(reqVO.getOperateType())){ + + } + //重新发起需更新表单数据 + if(AIOperateTypeEnum.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(AIOperateTypeEnum.YL_TEAM_LEADER_ASSIGN.getCode().equals(operateType.getCode())){ + targeVO.setWorkerId(reqVO.getNextAssignee()); + } + //养护组长验收不通过 需更新表单数据 + if(AIOperateTypeEnum.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(AIOperateTypeEnum.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/enums/EventSourceEnum.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/EventSourceEnum.java new file mode 100644 index 0000000..566e908 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/EventSourceEnum.java @@ -0,0 +1,46 @@ +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/30 19:22 + * 修改人:yanhuiqing + * 修改时间:2025/12/30 19:22 + * 修改备注: + * + * @author yanhuiqing + * @version 1.0 + */ +@Schema(description = "工单来源类型枚举") +@Getter +public enum EventSourceEnum { + PATROL(1, "巡查"), + TOURISTS(2, "游客居民"), + ONEFIVE(3, "12345"), + GRID(4, "网格"), + REGION(5, "大区经理"), + AI(6, "AI"); + + @JsonValue // 序列化时返回code(前端接收数字) + private final Integer code; + private final String desc; + + EventSourceEnum(Integer code, String desc) { + this.code = code; + this.desc = desc; + } + + // 根据code获取枚举(业务层转换用) + public static EventSourceEnum 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/BpmAIService.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmAIService.java index a6f6473..cf5d1c1 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmAIService.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmAIService.java @@ -2,6 +2,7 @@ package com.zteits.urbanops.module.workorder.service.garden; 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.AppGardenWorkOrderAIReqVO; import com.zteits.urbanops.module.workorder.dto.AppGardenWorkOrderInspectorReqVO; import jakarta.validation.Valid; @@ -23,7 +24,7 @@ public interface BpmAIService { * @param createRequestVo * @return */ - Long createWorkOrder(@Valid AppGardenWorkOrderInspectorReqVO createRequestVo); + Long createWorkOrder(@Valid AppGardenWorkOrderAIReqVO createRequestVo); /** * 全域督察员工单分配 diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmAIServiceImpl.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmAIServiceImpl.java index 25ff975..76acd5b 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmAIServiceImpl.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmAIServiceImpl.java @@ -27,8 +27,10 @@ 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.AppGardenWorkOrderAIReqVO; import com.zteits.urbanops.module.workorder.dto.AppGardenWorkOrderInspectorReqVO; import com.zteits.urbanops.module.workorder.enums.BusiLineTeamLeaderRoleCodeEnum; +import com.zteits.urbanops.module.workorder.enums.EventSourceEnum; import com.zteits.urbanops.module.workorder.util.RoleListUtils; import jakarta.annotation.Resource; import jodd.util.StringUtil; @@ -102,7 +104,7 @@ public class BpmAIServiceImpl implements BpmAIService{ @Resource private DictDataCommonApi dictDataCommonApi; @Override - public Long createWorkOrder(AppGardenWorkOrderInspectorReqVO createRequestVo) { + public Long createWorkOrder(AppGardenWorkOrderAIReqVO createRequestVo) { List roleList = roleApi.getRoleListByUsrId(SecurityFrameworkUtils.getLoginUserId()); if(null == roleList || roleList.size()==0){ throw exception(APP_USER_ROLE_NOT_EXISTS); @@ -144,6 +146,8 @@ public class BpmAIServiceImpl implements BpmAIService{ workOrder.setCompanyId(SecurityFrameworkUtils.getCompanyId()); workOrder.setDeptId(SecurityFrameworkUtils.getDeptId()); + workOrder.setSourceId(EventSourceEnum.AI.getCode()); + workOrder.setSourceName(EventSourceEnum.AI.getDesc()); workOrder.setWoSourceId(roleList.get(0).getCode()); workOrder.setWoSourceName(roleList.get(0).getName()); String busiLine = createRequestVo.getBusiLine(); -- libgit2 0.21.4