diff --git a/urbanops-module-api/urbanops-module-garden-api/src/main/java/com/zteits/urbanops/module/garden/api/road/RoadApi.java b/urbanops-module-api/urbanops-module-garden-api/src/main/java/com/zteits/urbanops/module/garden/api/road/RoadApi.java index 4ba08be..491837c 100644 --- a/urbanops-module-api/urbanops-module-garden-api/src/main/java/com/zteits/urbanops/module/garden/api/road/RoadApi.java +++ b/urbanops-module-api/urbanops-module-garden-api/src/main/java/com/zteits/urbanops/module/garden/api/road/RoadApi.java @@ -10,5 +10,5 @@ import java.util.List; public interface RoadApi { List getRoadInfoBy(RoadReqDTO reqDTO); - RoadStreetRespDTO getRoadInfoById(Long id); + RoadStreetRespDTO getRoadInfoById(String id); } 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 e38e901..a1846f3 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 @@ -12,7 +12,7 @@ import lombok.Data; @Data public class RoadStreetRespDTO { - private Long id; + private String id; private String roadName; @@ -28,4 +28,8 @@ public class RoadStreetRespDTO { private Integer levelId; private Long companyId; + /** + * 道路负责部门 + */ + private Long deptId; } diff --git a/urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/api/WorkOrderApi.java b/urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/api/WorkOrderApi.java index e230773..33c1eaa 100644 --- a/urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/api/WorkOrderApi.java +++ b/urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/api/WorkOrderApi.java @@ -33,7 +33,7 @@ public interface WorkOrderApi { * @param busiLine * @return */ - public List getUserByRoadIdAndRoleCode(Long roadId, String roleCode, String busiLine); + public List getUserByRoadIdAndRoleCode(String roadId, String roleCode, String busiLine); /** * 创建工单API 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 index b536e45..2540af2 100644 --- 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 @@ -23,7 +23,7 @@ public class AppGardenWorkOrderAIReqVO { @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21128") @NotNull(message = "道路ID不能为空") - private Long roadId; + private String roadId; /** * 工单类型 Q:快速工单,C:普通工单,O:其他工单 @@ -63,7 +63,7 @@ public class AppGardenWorkOrderAIReqVO { @Schema(description = "工单名称", example = "绿地卫生") private String orderName; - @Schema(description = "来源ID 工单来源 1、巡查,2、游客居民,3、12345,4、网格", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @Schema(description = "来源ID 工单来源 1、巡查,2、游客居民,3、12345,4、网格,5 大区经理,6 AI", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") //@NotNull(message = "来源ID不能为空") private Integer sourceId; @@ -81,6 +81,12 @@ public class AppGardenWorkOrderAIReqVO { @Schema(description = "工单业务线", example = "yl") private String busiLine; + @Schema(description = "工单来源编码", example = "axcbng") + private String woSourceId; + + @Schema(description = "工单来源名称", example = "摄像头") + private String woSourceName; + } 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 index b74aac7..264026d 100644 --- 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 @@ -23,7 +23,7 @@ public class AppGardenWorkOrderInspectorReqVO { @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21128") @NotNull(message = "道路ID不能为空") - private Long roadId; + private String roadId; /** * 工单类型 Q:快速工单,C:普通工单,O:其他工单 diff --git a/urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/dto/AppGardenWorkOrderReqVO.java b/urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/dto/AppGardenWorkOrderReqVO.java index 9fbbf18..a1b411f 100644 --- a/urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/dto/AppGardenWorkOrderReqVO.java +++ b/urbanops-module-api/urbanops-module-workorder-api/src/main/java/com/zteits/urbanops/module/workorder/dto/AppGardenWorkOrderReqVO.java @@ -24,7 +24,7 @@ public class AppGardenWorkOrderReqVO { @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21128") @NotNull(message = "道路ID不能为空") - private Long roadId; + private String roadId; /** * 工单类型 Q:快速工单,C:普通工单,O:其他工单 diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/api/road/RoadApiImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/api/road/RoadApiImpl.java index 5f39f15..46106a6 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/api/road/RoadApiImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/api/road/RoadApiImpl.java @@ -62,8 +62,10 @@ public class RoadApiImpl implements RoadApi { } @Override - public RoadStreetRespDTO getRoadInfoById(Long id) { - RoadRespVO roadRespVO = roadService.getUniqueRoad(id); - return BeanUtils.toBean(roadRespVO, RoadStreetRespDTO.class); + public RoadStreetRespDTO getRoadInfoById(String id) { + RoadRespVO roadRespVO = roadService.getUniqueRoad(Long.parseLong(id)); + RoadStreetRespDTO targetVO = BeanUtils.toBean(roadRespVO, RoadStreetRespDTO.class); + targetVO.setId(roadRespVO.getId().toString()); + return targetVO; } } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/convert/AppGardenWorkOrderConvert.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/convert/AppGardenWorkOrderConvert.java index 485099a..956ce17 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/convert/AppGardenWorkOrderConvert.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/convert/AppGardenWorkOrderConvert.java @@ -17,7 +17,7 @@ public interface AppGardenWorkOrderConvert { default AppGardenWorkOrderReqVO buildAppGardenWorkOrderReqVO(AppInspectionPlanCommitSaveReqVO createReqVO, InspectionPlanDO inspectionPlanDO, RoadDO roadDO, String planNo ) { AppGardenWorkOrderReqVO orderReqVO = new AppGardenWorkOrderReqVO(); - orderReqVO.setRoadId(inspectionPlanDO.getRoadId()); + orderReqVO.setRoadId(inspectionPlanDO.getRoadId().toString()); orderReqVO.setRoadName(inspectionPlanDO.getRoadName()); orderReqVO.setProblemsImgs(createReqVO.getImgList()); orderReqVO.setRemark(createReqVO.getRemark()); 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 5060089..2f3c2ad 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 @@ -171,9 +171,14 @@ public class BpmCommonConstant { * 大区经理 角色编码 */ public static final String REGIONAL_MANAGER = "regional_manager"; - + /** + * 督察员 角色编码 + */ public static final String INSPECTOR_GLOBAL = "Inspector_global"; - + /** + * ai 工单派发人 + */ + public static final String AI_DISPATCHER = "AI_dispatcher"; /*养护级别-字典key*/ public static final String CONSERVE_LEVEL = "conserve_level"; //--------------------------------------------------------------------------------- diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/api/workorder/WorkOrderApiImpl.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/api/workorder/WorkOrderApiImpl.java index 3ca17b5..e619ed1 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/api/workorder/WorkOrderApiImpl.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/api/workorder/WorkOrderApiImpl.java @@ -67,7 +67,7 @@ public class WorkOrderApiImpl implements WorkOrderApi { } @Override - public List getUserByRoadIdAndRoleCode(Long roadId, String roleCode, String busiLine) { + public List getUserByRoadIdAndRoleCode(String roadId, String roleCode, String busiLine) { if(ObjectUtils.isEmpty(roadId) || ObjectUtils.isEmpty(roleCode) || ObjectUtils.isEmpty(busiLine)){ throw exception0(BAD_REQUEST.getCode(),"param:roadId,roleCode,busiLine 不能为空!"); } diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/config/StringArrayTypeHandler.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/config/StringArrayTypeHandler.java new file mode 100644 index 0000000..fbf7dc6 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/config/StringArrayTypeHandler.java @@ -0,0 +1,70 @@ +package com.zteits.urbanops.module.workorder.config; + +/** + * @Classname StringArrayTypeHandler + * @Description + * @Date 2025/6/11 14:47 + * @Created by wangqian + */ + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.type.MappedJdbcTypes; +import org.apache.ibatis.type.MappedTypes; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +/** + * MyBatis 类型处理器,用于处理 JSON 格式的字符串数组与 Java String[] 之间的转换 + */ +@MappedTypes(String[].class) +@MappedJdbcTypes({JdbcType.VARCHAR, JdbcType.LONGVARCHAR, JdbcType.OTHER}) +public class StringArrayTypeHandler extends BaseTypeHandler { + + private static final ObjectMapper objectMapper = new ObjectMapper(); + + @Override + public void setNonNullParameter(PreparedStatement ps, int i, String[] parameter, JdbcType jdbcType) throws SQLException { + try { + // 将 String[] 转换为 JSON 字符串 + String json = objectMapper.writeValueAsString(parameter); + ps.setString(i, json); + } catch (Exception e) { + throw new SQLException("Error converting String[] to JSON: " + e.getMessage(), e); + } + } + + @Override + public String[] getNullableResult(ResultSet rs, String columnName) throws SQLException { + return parseJson(rs.getString(columnName)); + } + + @Override + public String[] getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + return parseJson(rs.getString(columnIndex)); + } + + @Override + public String[] getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + return parseJson(cs.getString(columnIndex)); + } + + /** + * 将 JSON 字符串解析为 String[] + */ + private String[] parseJson(String json) { + if (json == null || json.isEmpty()) { + return new String[0]; + } + try { + // 将 JSON 字符串转换为 String[] + return objectMapper.readValue(json, String[].class); + } catch (Exception e) { + throw new RuntimeException("Error converting JSON to String[]: " + e.getMessage(), e); + } + } +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/EventInfoController.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/EventInfoController.java index e84bc77..c1a6dff 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/EventInfoController.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/EventInfoController.java @@ -69,8 +69,8 @@ public class EventInfoController { @PutMapping("/end") @Operation(summary = "结束工单事件") @PreAuthorize("@ss.hasPermission('workorder:event-info:end')") - public CommonResult endEventInfo(@Valid @RequestParam("id") Long id) { - eventInfoService.endEventInfo(id); + public CommonResult endEventInfo(@Valid @RequestParam("id") Long[] ids) { + eventInfoService.endEventInfo(ids); return success(true); } diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoPageReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoPageReqVO.java index d804736..a2b4fad 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoPageReqVO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoPageReqVO.java @@ -50,7 +50,7 @@ public class EventInfoPageReqVO extends PageParam { private String lonLatAddress; @Schema(description = "用户提交照片") - private String confrimImgs; + private String[] confrimImgs; @Schema(description = "事件状态", example = "1") private Integer eventStatus; diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoRespVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoRespVO.java index fd7a676..2f4d189 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoRespVO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoRespVO.java @@ -63,7 +63,7 @@ public class EventInfoRespVO { @Schema(description = "用户提交照片", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("用户提交照片") - private String confrimImgs; + private String[] confrimImgs; @Schema(description = "事件状态", example = "1") @ExcelProperty("事件状态") @@ -81,6 +81,8 @@ public class EventInfoRespVO { @ExcelProperty("创建人") private String creator; + private String ender; + } \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoSaveReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoSaveReqVO.java index ac9d4e9..ee10980 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoSaveReqVO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/eventinfo/vo/EventInfoSaveReqVO.java @@ -33,6 +33,16 @@ public class EventInfoSaveReqVO { @Schema(description = "提交时间") private LocalDateTime commitDate; + /** + * 事件设备 + */ + private String eventDevice; + + /** + * 事件设备编码 + */ + private String eventDeviceCode; + @Schema(description = "完成时间") private LocalDateTime finishDate; diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenTaskAssignReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenTaskAssignReqVO.java index 81dd61f..6df1209 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenTaskAssignReqVO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenTaskAssignReqVO.java @@ -28,7 +28,7 @@ public class BpmGardenTaskAssignReqVO { @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21128") @NotNull(message = "道路ID不能为空") - private Long roadId; + private String roadId; @Schema(description = "道路名称", example = "测试道路") private String roadName; diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/eventinfo/AppEventInfoController.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/eventinfo/AppEventInfoController.java index 4381a0e..a107d97 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/eventinfo/AppEventInfoController.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/eventinfo/AppEventInfoController.java @@ -73,8 +73,10 @@ public class AppEventInfoController { vo.setConfrimImgs(createReqVO.getUserConfrimImgs()); vo.setCommitDate(LocalDateTime.now()); vo.setEvetName(createReqVO.getProblemName()); + vo.setEventDeviceCode(createReqVO.getDeviceCode()); + vo.setEventDevice(createReqVO.getDevice()); vo.setLatLonType(3); - vo.setCreator("设备"); + vo.setCreator(createReqVO.getDeviceCode()); vo.setRemark(createReqVO.getUserConfrimRemark()); // 调用高德API根据经纬度查询地址 if (createReqVO.getUserConfrimLat() != null && createReqVO.getUserConfrimLon() != null) { 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 index 505fbb3..5233dca 100644 --- 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 @@ -132,6 +132,7 @@ public class AIBuzStatusUpdateAspect { if(null == roadStreetRespDTO){ throw exception(APP_WORK_ROAD_NOT_EXISTS); } + targeVO.setWorkerCompanyId(roadStreetRespDTO.getDeptId());//道路负责部门id targeVO.setStreetId(roadStreetRespDTO.getStreetId()); targeVO.setStreetName(roadStreetRespDTO.getStreetName()); targeVO.setBuzStatus(ORDER_STATUS_INIT);//工单业务初始化状态 后续操作状态 见 OperateTypeEnum diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/BuzStatusUpdateAspect.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/BuzStatusUpdateAspect.java index 02e9f5d..ca772cf 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/BuzStatusUpdateAspect.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/aop/BuzStatusUpdateAspect.java @@ -33,6 +33,7 @@ import static com.zteits.urbanops.framework.common.exception.util.ServiceExcepti 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; /** * 类描述:切面更新工单表业务状态 @@ -122,6 +123,9 @@ public class BuzStatusUpdateAspect { //重新发起需更新表单数据 if(OperateTypeEnum.YL_INSPECTOR_START_RELAUNCH.getCode().equals(operateType.getCode())){ RoadStreetRespDTO roadStreetRespDTO = roadApi.getRoadInfoById(reqVO.getRoadId()); + if(null == roadStreetRespDTO){ + throw exception(APP_WORK_ROAD_NOT_EXISTS); + } targeVO = BeanUtils.toBean(reqVO,MainInfoDO.class); targeVO.setId(reqVO.getWorkerDataId()); @@ -131,6 +135,7 @@ public class BuzStatusUpdateAspect { targeVO.setOrderNo(dbData.getOrderNo()); targeVO.setStreetId(roadStreetRespDTO.getStreetId()); targeVO.setStreetName(roadStreetRespDTO.getStreetName()); + targeVO.setWorkerCompanyId(roadStreetRespDTO.getDeptId());//道路负责部门id DictDataRespDTO dictData = dictDataCommonApi.getDictData(CONSERVE_LEVEL, roadStreetRespDTO.getLevelId().toString()); if(null == dictData){ throw exception(APP_WORKER_LEVEL_ID_NOT_EXISTS); 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 index 3693745..812d0ab 100644 --- 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 @@ -104,6 +104,7 @@ public class InspectorBuzStatusUpdateAspect { } targeVO.setStreetId(roadStreetRespDTO.getStreetId()); targeVO.setStreetName(roadStreetRespDTO.getStreetName()); + targeVO.setWorkerCompanyId(roadStreetRespDTO.getDeptId());//道路负责部门id DictDataRespDTO dictData = dictDataCommonApi.getDictData(CONSERVE_LEVEL, roadStreetRespDTO.getLevelId().toString()); if(null == dictData){ throw exception(APP_WORKER_LEVEL_ID_NOT_EXISTS); @@ -116,6 +117,14 @@ public class InspectorBuzStatusUpdateAspect { targeVO.setRoadId(reqVO.getRoadId()); targeVO.setPressingType(reqVO.getPressingType()); targeVO.setExpectedFinishDate(reqVO.getExpectedFinishDate()); + if(!dbData.getBusiLine().equals(reqVO.getBusiLine())){//如果前端业务线和数据库不一致 + //删除原来的 + gardenService.deleteAttachement(BpmCommonConstant.PROBLEM_IMG_GROUP,targeVO.getOrderNo(),dbData.getBusiLine()); + } + List problemsImgs = reqVO.getProblemsImgs(); + if(ObjectUtils.isNotAllEmpty(problemsImgs) && problemsImgs.size()>0){ + gardenService.attachmentInsertOrUpdate(problemsImgs,BpmCommonConstant.PROBLEM_IMG_GROUP,targeVO); + } } //大区经理退回 @@ -131,6 +140,7 @@ public class InspectorBuzStatusUpdateAspect { if(null == roadStreetRespDTO){ throw exception(APP_WORK_ROAD_NOT_EXISTS); } + targeVO.setWorkerCompanyId(roadStreetRespDTO.getDeptId());//道路负责部门id targeVO.setStreetId(roadStreetRespDTO.getStreetId()); targeVO.setStreetName(roadStreetRespDTO.getStreetName()); targeVO.setBuzStatus(ORDER_STATUS_INIT);//工单业务初始化状态 后续操作状态 见 OperateTypeEnum @@ -150,7 +160,7 @@ public class InspectorBuzStatusUpdateAspect { targeVO.setWoSourceName(roleList.get(0).getName()); String busiLine = reqVO.getBusiLine(); if(StringUtil.isEmpty(busiLine)){ - busiLine = SecurityFrameworkUtils.getBusiLine(); + busiLine = dbData.getBusiLine(); } targeVO.setBusiLine(busiLine); targeVO.setUserId(SecurityFrameworkUtils.getLoginUserId()); 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 6e14cef..377e37d 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 @@ -98,6 +98,7 @@ public class UniversalBuzStatusUpdateAspect { if(null == roadStreetRespDTO){ throw exception(APP_WORK_ROAD_NOT_EXISTS); } + targeVO.setWorkerCompanyId(roadStreetRespDTO.getDeptId());//道路负责部门id 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/common/AppUniversalApprovalReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/common/AppUniversalApprovalReqVO.java index 09c9e73..33d0de7 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/common/AppUniversalApprovalReqVO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/common/AppUniversalApprovalReqVO.java @@ -90,7 +90,7 @@ public class AppUniversalApprovalReqVO { //-------------------------重新发起需提交表单数据------------------------ @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21128") @NotNull(message = "道路ID不能为空", groups = RelaunchGroup.class) - private Long roadId; + private String roadId; @Schema(description = "道路名称", example = "测试道路") private String roadName; 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 index aaa2768..d8febb2 100644 --- 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 @@ -40,7 +40,7 @@ public class AppGardenTaskInspectorApproveReqVO { @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21128") @NotNull(message = "道路ID不能为空", groups = RelaunchGroup.class) - private Long roadId; + private String roadId; @Schema(description = "道路名称", example = "测试道路") private String roadName; diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/task/AppGardenTaskRegionMgrApproveReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/task/AppGardenTaskRegionMgrApproveReqVO.java index 670347a..597225e 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/task/AppGardenTaskRegionMgrApproveReqVO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/task/AppGardenTaskRegionMgrApproveReqVO.java @@ -40,7 +40,7 @@ public class AppGardenTaskRegionMgrApproveReqVO { @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21128") @NotNull(message = "道路ID不能为空") - private Long roadId; + private String roadId; @Schema(description = "道路名称", example = "测试道路") private String roadName; diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/eventinfo/EventInfoDO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/eventinfo/EventInfoDO.java index 90ff3c5..b9fd620 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/eventinfo/EventInfoDO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/eventinfo/EventInfoDO.java @@ -1,5 +1,6 @@ package com.zteits.urbanops.module.workorder.dal.dataobject.eventinfo; +import com.zteits.urbanops.module.workorder.config.StringArrayTypeHandler; import lombok.*; import java.util.*; import java.time.LocalDateTime; @@ -16,7 +17,7 @@ import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO; * * @author 超级管理员 */ -@TableName("workorder_event_info") +@TableName(value = "workorder_event_info", autoResultMap = true) @KeySequence("workorder_event_info_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data @EqualsAndHashCode(callSuper = true) @@ -80,7 +81,8 @@ public class EventInfoDO extends BaseDO { /** * 用户提交照片 */ - private String confrimImgs; + @TableField(typeHandler = StringArrayTypeHandler.class) + private String[] confrimImgs; /** * 事件状态 */ @@ -90,5 +92,7 @@ public class EventInfoDO extends BaseDO { */ private String remark; + private String ender; + } \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/maininfo/MainInfoDO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/maininfo/MainInfoDO.java index df40f27..4eec0fc 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/maininfo/MainInfoDO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/maininfo/MainInfoDO.java @@ -64,7 +64,7 @@ public class MainInfoDO extends BaseDO { /** * 道路ID */ - private Long roadId; + private String roadId; /** * 道路名称 */ diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/maininfo/MainInfoExtDO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/maininfo/MainInfoExtDO.java index 0a56b4d..22ea2a1 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/maininfo/MainInfoExtDO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/maininfo/MainInfoExtDO.java @@ -58,7 +58,7 @@ public class MainInfoExtDO extends BaseDO { /** * 道路ID */ - private Long roadId; + private String roadId; /** * 道路名称 */ diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/eventinfo/EventInfoMapper.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/eventinfo/EventInfoMapper.java index 9d3b079..4851f80 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/eventinfo/EventInfoMapper.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/eventinfo/EventInfoMapper.java @@ -1,13 +1,15 @@ package com.zteits.urbanops.module.workorder.dal.mysql.eventinfo; -import java.util.*; - import com.zteits.urbanops.framework.common.pojo.PageResult; -import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; +import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; +import com.zteits.urbanops.module.workorder.controller.admin.eventinfo.vo.EventInfoPageReqVO; import com.zteits.urbanops.module.workorder.dal.dataobject.eventinfo.EventInfoDO; +import com.zteits.urbanops.module.workorder.enums.EventStatusEnum; import org.apache.ibatis.annotations.Mapper; -import com.zteits.urbanops.module.workorder.controller.admin.eventinfo.vo.*; + +import java.time.LocalDateTime; /** * 工单事件 Mapper @@ -37,4 +39,10 @@ public interface EventInfoMapper extends BaseMapperX { .orderByDesc(EventInfoDO::getId)); } + default void updateByIds(Long[] ids) { + update(new EventInfoDO() + .setEnder(SecurityFrameworkUtils.getLoginUserNickname()) + .setFinishDate(LocalDateTime.now()) + .setEventStatus(EventStatusEnum.FINISHED.getCode()), new LambdaQueryWrapperX().in(EventInfoDO::getId, ids)); + } } \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoExtMapper.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoExtMapper.java index ccab62a..23c917b 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoExtMapper.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoExtMapper.java @@ -725,11 +725,11 @@ public interface MainInfoExtMapper extends BaseMapperX { @Result(column = "avatar", property = "avatar") }) @DataPermission(enable = false) - IPage getUserByRoadIdAndRoleCodeIPage(IPage page,@NonNull @Param("roadId") Long roadId, + IPage getUserByRoadIdAndRoleCodeIPage(IPage page,@NonNull @Param("roadId") String roadId, @NonNull @Param("roleCode") String roleCode, @NonNull @Param("busiLine") String busiLine); @DataPermission(enable = false) - default PageResult getUserByRoadIdAndRoleCodePage(PageParam pageParam,@NonNull @Param("roadId") Long roadId, + default PageResult getUserByRoadIdAndRoleCodePage(PageParam pageParam,@NonNull @Param("roadId") String roadId, @NonNull @Param("roleCode") String roleCode, @NonNull @Param("busiLine") String busiLine){ IPage mpPage = MyBatisUtils.buildPage(pageParam); @@ -739,7 +739,7 @@ public interface MainInfoExtMapper extends BaseMapperX { } @DataPermission(enable = false) - default List getUserByRoadIdAndRoleCode(@NonNull @Param("roadId") Long roadId, + default List getUserByRoadIdAndRoleCode(@NonNull @Param("roadId") String roadId, @NonNull @Param("roleCode") String roleCode, @NonNull @Param("busiLine") String busiLine){ // 创建一个“不分页”的Page对象(size=Integer.MAX_VALUE,查询所有数据) 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 808e0c8..c74dcee 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 @@ -44,13 +44,18 @@ public interface ErrorCodeConstants { ErrorCode APP_REGIONMGR_USER_ROLE_ERROR = new ErrorCode(1-900-002-007, "该登录人不是 大区经理,无法发起流程!"); ErrorCode EVENT_INFO_NOT_EXISTS = new ErrorCode(1-900-003-001, "工单事件不存在"); + ErrorCode EVENT_WORK_ORDER_CREATE_FAILED = new ErrorCode(1-900-003-002, "事件工单创建失败:{}"); 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_INSPECTOR_ROLE_ILLEGLE = new ErrorCode(1-900-004-003, "该登录人即是 大区经理 角色,又是 全域督察员,无法发起流程!"); - ErrorCode APP_WORK_ROAD_NOT_EXISTS = new ErrorCode(1-900-004-001, "道路信息不存在"); + ErrorCode APP_WORK_ROAD_NOT_EXISTS = new ErrorCode(1-900-004-002, "道路信息不存在"); + + ErrorCode APP_AI_USER_ROLE_ERROR = new ErrorCode(1-900-004-004, "该登录人不是 AI工单派发人员,无法发起流程!"); + + ErrorCode APP_WORK_AI_ROLE_ILLEGLE = new ErrorCode(1-900-004-005, "该登录人即是 大区经理 角色,又是 AI工单派发人员,无法发起流程!"); } diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/framework/datapermission/config/OrderDataPermissionConfiguration.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/framework/datapermission/config/OrderDataPermissionConfiguration.java index acd7b3e..642d50e 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/framework/datapermission/config/OrderDataPermissionConfiguration.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/framework/datapermission/config/OrderDataPermissionConfiguration.java @@ -9,7 +9,7 @@ import org.springframework.context.annotation.Configuration; * 订单模块的数据权限配置 * 每个模块独立配置,互不影响 */ -@Configuration(proxyBeanMethods = false) +//@Configuration(proxyBeanMethods = false) public class OrderDataPermissionConfiguration { /** diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/eventinfo/EventInfoService.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/eventinfo/EventInfoService.java index 48d7453..c934885 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/eventinfo/EventInfoService.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/eventinfo/EventInfoService.java @@ -64,8 +64,10 @@ public interface EventInfoService { * * @param id 工单事件编号 */ - void endEventInfo(@Valid Long id); + void endEventInfo(@Valid Long[] ids); void createEventOrderInfo(@Valid EventOrderInfoSaveReqVO createReqVO); + boolean bpmAiCallBack(String orderId,Integer status); + } \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/eventinfo/EventInfoServiceImpl.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/eventinfo/EventInfoServiceImpl.java index 217dcdb..5afd2db 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/eventinfo/EventInfoServiceImpl.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/eventinfo/EventInfoServiceImpl.java @@ -1,25 +1,38 @@ package com.zteits.urbanops.module.workorder.service.eventinfo; -import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSON; +import com.zteits.urbanops.framework.common.exception.ErrorCode; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; +import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; +import com.zteits.urbanops.module.bpm.enums.task.BpmTaskStatusEnum; +import com.zteits.urbanops.module.workorder.api.constant.BpmCommonConstant; +import com.zteits.urbanops.module.workorder.controller.admin.eventinfo.vo.EventInfoPageReqVO; +import com.zteits.urbanops.module.workorder.controller.admin.eventinfo.vo.EventInfoSaveReqVO; +import com.zteits.urbanops.module.workorder.controller.admin.eventinfo.vo.EventOrderInfoSaveReqVO; +import com.zteits.urbanops.module.workorder.dal.dataobject.eventinfo.EventInfoDO; +import com.zteits.urbanops.module.workorder.dal.dataobject.eventmappinginfo.EventMappingInfoDO; +import com.zteits.urbanops.module.workorder.dal.mysql.eventinfo.EventInfoMapper; +import com.zteits.urbanops.module.workorder.dal.mysql.eventmappinginfo.EventMappingInfoMapper; +import com.zteits.urbanops.module.workorder.dto.AppGardenWorkOrderAIReqVO; +import com.zteits.urbanops.module.workorder.enums.EventSourceEnum; import com.zteits.urbanops.module.workorder.enums.EventStatusEnum; +import com.zteits.urbanops.module.workorder.service.garden.BpmAIService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import jakarta.annotation.Resource; -import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; +import org.springframework.validation.annotation.Validated; -import java.util.*; -import com.zteits.urbanops.module.workorder.controller.admin.eventinfo.vo.*; -import com.zteits.urbanops.module.workorder.dal.dataobject.eventinfo.EventInfoDO; -import com.zteits.urbanops.framework.common.pojo.PageResult; -import com.zteits.urbanops.framework.common.pojo.PageParam; -import com.zteits.urbanops.framework.common.util.object.BeanUtils; - -import com.zteits.urbanops.module.workorder.dal.mysql.eventinfo.EventInfoMapper; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.convertList; -import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.diffList; -import static com.zteits.urbanops.module.workorder.enums.ErrorCodeConstants.*; +import static com.zteits.urbanops.module.workorder.enums.ErrorCodeConstants.EVENT_INFO_NOT_EXISTS; +import static com.zteits.urbanops.module.workorder.enums.ErrorCodeConstants.EVENT_WORK_ORDER_CREATE_FAILED; /** * 工单事件 Service 实现类 @@ -28,10 +41,16 @@ import static com.zteits.urbanops.module.workorder.enums.ErrorCodeConstants.*; */ @Service @Validated +@RequiredArgsConstructor +@Slf4j public class EventInfoServiceImpl implements EventInfoService { - @Resource - private EventInfoMapper eventInfoMapper; + private final EventInfoMapper eventInfoMapper; + + private final BpmAIService bpmAIService; + + private final EventMappingInfoMapper eventMappingInfoMapper; + @Override public Long createEventInfo(EventInfoSaveReqVO createReqVO) { @@ -61,10 +80,10 @@ public class EventInfoServiceImpl implements EventInfoService { } @Override - public void deleteEventInfoListByIds(List ids) { + public void deleteEventInfoListByIds(List ids) { // 删除 eventInfoMapper.deleteByIds(ids); - } + } private void validateEventInfoExists(Long id) { @@ -84,19 +103,148 @@ public class EventInfoServiceImpl implements EventInfoService { } @Override - public void endEventInfo(Long id) { - // 校验存在 - validateEventInfoExists(id); - // 更新 - EventInfoDO updateObj = new EventInfoDO(); - updateObj.setId(id); - updateObj.setEventStatus(EventStatusEnum.FINISHED.getCode()); - eventInfoMapper.updateById(updateObj); + public void endEventInfo(Long[] ids) { + + eventInfoMapper.updateByIds(ids); } @Override + @Transactional(rollbackFor = Exception.class) public void createEventOrderInfo(EventOrderInfoSaveReqVO createReqVO) { - //TODO @lesan:工单事件工单创建 + + EventInfoDO eventInfo = eventInfoMapper.selectById(createReqVO.getId()); + if (!ObjectUtils.isEmpty(eventInfo)) { + SecurityUserInfo userInfo = getCurrentUserInfo(); + + // 创建AI工单 + Long orderId = createAIWorkOrder(eventInfo, createReqVO); + + // 更新事件状态 + updateEventInfoStatus(eventInfo, userInfo.userId); + + // 创建事件映射信息 + createEventMappingInfo(eventInfo, orderId, createReqVO, userInfo); + } + } + + @Override + public boolean bpmAiCallBack(String orderId, Integer status) { + EventMappingInfoDO mappingInfoDO = eventMappingInfoMapper.selectOne(EventMappingInfoDO::getOrderNo, orderId); + if (ObjectUtils.isEmpty(mappingInfoDO)) { + throw exception(EVENT_INFO_NOT_EXISTS); + } + mappingInfoDO.setStatus(status); + mappingInfoDO.setUpdateTime(LocalDateTime.now()); + mappingInfoDO.setUpdater(String.valueOf(SecurityFrameworkUtils.getLoginUserId())); + mappingInfoDO.setFinishDate(LocalDateTime.now()); + eventMappingInfoMapper.updateById(mappingInfoDO); + return true; + } + + /** + * 获取当前用户信息 + */ + private SecurityUserInfo getCurrentUserInfo() { + Long currentUserId = SecurityFrameworkUtils.getLoginUserId(); + Long companyId = SecurityFrameworkUtils.getCompanyId(); + Long deptId = SecurityFrameworkUtils.getDeptId(); + String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); + + // 检查用户信息是否获取成功 + if (currentUserId == null) { + throw exception(new ErrorCode(1_004_001_000, "用户不存在")); + } + + return new SecurityUserInfo(currentUserId, companyId, deptId, userNickname); + } + + /** + * 创建AI工单 + */ + private Long createAIWorkOrder(EventInfoDO eventInfo, EventOrderInfoSaveReqVO createReqVO) { + AppGardenWorkOrderAIReqVO aiReqVO = new AppGardenWorkOrderAIReqVO(); + aiReqVO.setBusiLine(createReqVO.getBusiLine()) + .setLon(eventInfo.getLon()) + .setLat(eventInfo.getLat()) + .setOrderName(eventInfo.getEvetName()) + .setOrderType(BpmCommonConstant.ORDER_TYPE_C) + .setExpectedFinishDate(createReqVO.getExpectedFinishDate()) + .setLatLonType(3) + .setLonLatAddress(eventInfo.getLonLatAddress()) + .setPressingType(createReqVO.getPressingType()) + // 处理可能为null的数组,避免Arrays.asList抛出异常 + .setProblemsImgs(eventInfo.getConfrimImgs() != null ? Arrays.asList(eventInfo.getConfrimImgs()) : new ArrayList<>()) + .setRemark(eventInfo.getRemark()) + .setRoadId(createReqVO.getRoadId()) + .setRoadName(createReqVO.getRoadName()) + .setSourceId(EventSourceEnum.AI.getCode()) + .setWoSourceId(eventInfo.getEventDeviceCode()) + .setWoSourceName(eventInfo.getEventDevice()) + .setThirdWorkNo(eventInfo.getEventNo()) + .setSourceName(eventInfo.getEventDevice()); + + Long orderId; + try { + log.info("[createAIWorkOrder][创建AI工单]:{}", JSON.toJSONString(aiReqVO)); + orderId = bpmAIService.createWorkOrder(aiReqVO); + log.info("[createAIWorkOrder][创建AI工单结果]:{}", orderId); + } catch (Exception e) { + log.error("[createAIWorkOrder][创建AI工单时发生异常]", e); + throw exception(EVENT_WORK_ORDER_CREATE_FAILED, e.getMessage()); + } + + return orderId; + } + + /** + * 更新事件状态 + */ + private void updateEventInfoStatus(EventInfoDO eventInfo, Long userId) { + eventInfo.setEventStatus(EventStatusEnum.ORDER.getCode()); + eventInfo.setUpdater(String.valueOf(userId)) + .setUpdateTime(LocalDateTime.now()); + eventInfoMapper.updateById(eventInfo); + } + + /** + * 创建事件映射信息 + */ + private void createEventMappingInfo(EventInfoDO eventInfo, Long orderId, EventOrderInfoSaveReqVO createReqVO, SecurityUserInfo userInfo) { + EventMappingInfoDO mappingInfoDO = new EventMappingInfoDO(); + mappingInfoDO.setEventNo(eventInfo.getEventNo()) + .setOrderNo(String.valueOf(orderId)) + .setBusiLine(createReqVO.getBusiLine()) + .setCommitDate(LocalDateTime.now()) + .setCompanyId(userInfo.companyId) + .setDeptId(userInfo.deptId) + .setExpectedFinishDate(createReqVO.getExpectedFinishDate()) + .setPressingType(createReqVO.getPressingType()) + .setRoadId(createReqVO.getRoadId()) + .setRoadName(createReqVO.getRoadName()) + .setUserId(userInfo.userId) + .setUserName(userInfo.userNickname) + .setStatus(BpmTaskStatusEnum.RUNNING.getStatus()) + .setCreator(String.valueOf(userInfo.userId)) + .setCreateTime(LocalDateTime.now()); + + eventMappingInfoMapper.insert(mappingInfoDO); + } + + /** + * 安全用户信息封装类 + */ + private static class SecurityUserInfo { + final Long userId; + final Long companyId; + final Long deptId; + final String userNickname; + + SecurityUserInfo(Long userId, Long companyId, Long deptId, String userNickname) { + this.userId = userId; + this.companyId = companyId; + this.deptId = deptId; + this.userNickname = userNickname; + } } } \ 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 cf5d1c1..d255084 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 @@ -20,7 +20,7 @@ import jakarta.validation.Valid; public interface BpmAIService { /** - * 全域督察员工单申请 app service 接口 + * AI工单申请 app service 接口 * @param createRequestVo * @return */ @@ -50,5 +50,5 @@ public interface BpmAIService { * @param roadId * @return */ - boolean isSanhaiByRoadId(Long roadId); + boolean isSanhaiByRoadId(String roadId); } \ No newline at end of file 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 76acd5b..8179a10 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 @@ -110,12 +110,12 @@ public class BpmAIServiceImpl implements BpmAIService{ throw exception(APP_USER_ROLE_NOT_EXISTS); } - if(!RoleListUtils.containsCode(roleList,INSPECTOR_GLOBAL)){ - throw exception(APP_INSPECTOR_USER_ROLE_ERROR); + if(!RoleListUtils.containsCode(roleList,AI_DISPATCHER)){ + throw exception(APP_AI_USER_ROLE_ERROR); } //校验人员不能有 双重角色 - if(RoleListUtils.containsBothCodes(roleList, REGIONAL_MANAGER, INSPECTOR_GLOBAL)){ - throw exception(APP_WORK_INSPECTOR_ROLE_ILLEGLE); + if(RoleListUtils.containsBothCodes(roleList, REGIONAL_MANAGER, AI_DISPATCHER)){ + throw exception(APP_WORK_AI_ROLE_ILLEGLE); } List problemsImgsList = createRequestVo.getProblemsImgs(); @@ -125,6 +125,7 @@ public class BpmAIServiceImpl implements BpmAIService{ if(null == roadStreetRespDTO){ throw exception(APP_WORK_ROAD_NOT_EXISTS); } + workOrder.setWorkerCompanyId(roadStreetRespDTO.getDeptId());//道路负责部门id workOrder.setStreetId(roadStreetRespDTO.getStreetId()); workOrder.setStreetName(roadStreetRespDTO.getStreetName()); workOrder.setBuzStatus(ORDER_STATUS_INIT);//工单业务初始化状态 后续操作状态 见 OperateTypeEnum @@ -146,10 +147,27 @@ 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()); + + Integer sourceId = createRequestVo.getSourceId(); + String sourceName = createRequestVo.getSourceName(); + if(!ObjectUtils.isNotAllEmpty(sourceId)){ + sourceId = EventSourceEnum.AI.getCode(); + } + if(StringUtil.isEmpty(sourceName)){ + sourceName = EventSourceEnum.AI.getDesc(); + } + workOrder.setSourceId(sourceId); + workOrder.setSourceName(sourceName); + String wsourceId = createRequestVo.getWoSourceId(); + String wsourceName = createRequestVo.getWoSourceName(); + if(StringUtil.isEmpty(wsourceId)){ + wsourceId = roleList.get(0).getCode(); + } + if(StringUtil.isEmpty(wsourceName)){ + wsourceName = roleList.get(0).getCode(); + } + workOrder.setWoSourceId(wsourceId); + workOrder.setWoSourceName(wsourceName); String busiLine = createRequestVo.getBusiLine(); if(StringUtil.isEmpty(busiLine)){ busiLine = SecurityFrameworkUtils.getBusiLine(); @@ -224,7 +242,7 @@ public class BpmAIServiceImpl implements BpmAIService{ //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 roadId = reqVO.getRoadId(); String roleCode = BusiLineTeamLeaderRoleCodeEnum.getByCode(busiLine).getRoleCode(); if(StringUtil.isEmpty(roleCode)){// 找不到 默认为园林组长的角色 @@ -293,7 +311,7 @@ public class BpmAIServiceImpl implements BpmAIService{ } @Override - public boolean isSanhaiByRoadId(Long roadId) { + public boolean isSanhaiByRoadId(String roadId) { RoadStreetRespDTO roadStreetRespDTO = roadApi.getRoadInfoById(roadId); if(null == roadStreetRespDTO){ throw exception(APP_WORK_ROAD_NOT_EXISTS); diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenService.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenService.java index 9613977..29bc142 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenService.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenService.java @@ -208,7 +208,7 @@ public interface BpmGardenService { * @param busiLine * @return */ - public PageResult getUserByRoadIdAndRoleCode(PageParam param,Long roadId,String roleCode,String busiLine); + public PageResult getUserByRoadIdAndRoleCode(PageParam param,String roadId,String roleCode,String busiLine); /** * 附件更新通用方法 @@ -218,4 +218,11 @@ public interface BpmGardenService { */ public void attachmentInsertOrUpdate(List imgList, String type, MainInfoDO workOrder); + /** + * 删除附件表 + * @param type + * @param orderNo + * @param busiLine + */ + public void deleteAttachement(String type,String orderNo,String busiLine); } 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 5f54d1e..2a281e1 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 @@ -52,6 +52,7 @@ import com.zteits.urbanops.module.workorder.dto.AppGardenWorkOrderReqVO; import com.zteits.urbanops.module.workorder.dto.AppGardenWorkOrderRespVO; import com.zteits.urbanops.module.workorder.enums.BusiLineTeamLeaderRoleCodeEnum; import com.zteits.urbanops.module.workorder.enums.BusiLineWorkerRoleCodeEnum; +import com.zteits.urbanops.module.workorder.enums.EventSourceEnum; import com.zteits.urbanops.module.workorder.util.TaskNodeUtils; import jakarta.annotation.Resource; import jodd.util.StringUtil; @@ -279,7 +280,8 @@ public class BpmGardenServiceImpl implements BpmGardenService{ workerOrder.setCoHandlers(reqVO.getCoHandlers()); workerOrder.setWorkerId(SecurityFrameworkUtils.getLoginUserId()); workerOrder.setWorkerName(SecurityFrameworkUtils.getLoginUserNickname()); - workerOrder.setWorkerCompanyId(SecurityFrameworkUtils.getCompanyId()); + //取消登录人 改为创建或分配时的道路负责人部门 + //workerOrder.setWorkerCompanyId(SecurityFrameworkUtils.getCompanyId()); workOrderMapper.updateById(workerOrder); if(ObjectUtils.isNotAllEmpty(id) && ObjectUtils.isNotAllEmpty(problemsImgs) && problemsImgs.size()>0){ @@ -569,7 +571,7 @@ public class BpmGardenServiceImpl implements BpmGardenService{ MainInfoDO workOrder = BeanUtils.toBean(createRequestVo, MainInfoDO.class) .setStatus(BpmTaskStatusEnum.RUNNING.getStatus()); RoadStreetRespDTO roadStreetRespDTO = roadApi.getRoadInfoById(createRequestVo.getRoadId()); - + workOrder.setWorkerCompanyId(roadStreetRespDTO.getDeptId());//道路负责部门id workOrder.setStreetId(roadStreetRespDTO.getStreetId()); workOrder.setStreetName(roadStreetRespDTO.getStreetName()); workOrder.setBuzStatus(ORDER_STATUS_INIT);//工单业务初始化状态 后续操作状态 见 OperateTypeEnum @@ -595,6 +597,16 @@ public class BpmGardenServiceImpl implements BpmGardenService{ if(null == roleList || roleList.size()==0){ throw exception(APP_USER_ROLE_NOT_EXISTS); } + Integer sourceId = createRequestVo.getSourceId(); + String sourceName = createRequestVo.getSourceName(); + if(!ObjectUtils.isNotAllEmpty(sourceId)){ + sourceId = EventSourceEnum.PATROL.getCode(); + } + if(StringUtil.isEmpty(sourceName)){ + sourceName = EventSourceEnum.PATROL.getDesc(); + } + workOrder.setSourceId(sourceId); + workOrder.setSourceName(sourceName); workOrder.setWoSourceId(roleList.get(0).getCode()); workOrder.setWoSourceName(roleList.get(0).getName()); String busiLine = createRequestVo.getBusiLine(); @@ -677,6 +689,16 @@ public class BpmGardenServiceImpl implements BpmGardenService{ } } + public void deleteAttachement(String type,String orderNo,String busiLine){ + LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper() + .eq(AttachmentDO::getBusiType, type) + .eq(AttachmentDO::getOrderNo, orderNo); + if(StringUtil.isNotEmpty(busiLine)){// 全域巡查员 发起的工单 业务线有可能为空 + deleteWrapper.eq(AttachmentDO::getBusiLine, busiLine); + } + attachmentMapper.delete(deleteWrapper); + } + @Override public void updateWorkOrderStatus(Long id, Integer status) { @@ -751,7 +773,7 @@ public class BpmGardenServiceImpl implements BpmGardenService{ } @Override - public PageResult getUserByRoadIdAndRoleCode(PageParam param,Long roadId, String roleCode, String busiLine) { + public PageResult getUserByRoadIdAndRoleCode(PageParam param,String roadId, String roleCode, String busiLine) { if(org.springframework.util.ObjectUtils.isEmpty(roadId) || org.springframework.util.ObjectUtils.isEmpty(roleCode) || org.springframework.util.ObjectUtils.isEmpty(busiLine)){ throw exception0(BAD_REQUEST.getCode(),"param:roadId,roleCode,busiLine 不能为空!"); } 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 index 70ed39e..fc42531 100644 --- 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 @@ -51,5 +51,5 @@ public interface BpmInspectorService { * @param roadId * @return */ - boolean isSanhaiByRoadId(Long roadId); + boolean isSanhaiByRoadId(String 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 index 1c87bc5..3b9d44a 100644 --- 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 @@ -31,6 +31,7 @@ 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.enums.EventSourceEnum; import com.zteits.urbanops.module.workorder.util.RoleListUtils; import jakarta.annotation.Resource; import jodd.util.StringUtil; @@ -125,6 +126,7 @@ public class BpmInspectorServiceImpl implements BpmInspectorService{ if(null == roadStreetRespDTO){ throw exception(APP_WORK_ROAD_NOT_EXISTS); } + workOrder.setWorkerCompanyId(roadStreetRespDTO.getDeptId());//道路负责部门id workOrder.setStreetId(roadStreetRespDTO.getStreetId()); workOrder.setStreetName(roadStreetRespDTO.getStreetName()); workOrder.setBuzStatus(ORDER_STATUS_INIT);//工单业务初始化状态 后续操作状态 见 OperateTypeEnum @@ -146,6 +148,16 @@ public class BpmInspectorServiceImpl implements BpmInspectorService{ workOrder.setCompanyId(SecurityFrameworkUtils.getCompanyId()); workOrder.setDeptId(SecurityFrameworkUtils.getDeptId()); + Integer sourceId = createRequestVo.getSourceId(); + String sourceName = createRequestVo.getSourceName(); + if(!ObjectUtils.isNotAllEmpty(sourceId)){ + sourceId = EventSourceEnum.PATROL.getCode(); + } + if(StringUtil.isEmpty(sourceName)){ + sourceName = EventSourceEnum.PATROL.getDesc(); + } + workOrder.setSourceId(sourceId); + workOrder.setSourceName(sourceName); workOrder.setWoSourceId(roleList.get(0).getCode()); workOrder.setWoSourceName(roleList.get(0).getName()); String busiLine = createRequestVo.getBusiLine(); @@ -222,7 +234,7 @@ public class BpmInspectorServiceImpl implements BpmInspectorService{ //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 roadId = reqVO.getRoadId(); String roleCode = BusiLineTeamLeaderRoleCodeEnum.getByCode(busiLine).getRoleCode(); if(StringUtil.isEmpty(roleCode)){// 找不到 默认为园林组长的角色 @@ -291,7 +303,7 @@ public class BpmInspectorServiceImpl implements BpmInspectorService{ } @Override - public boolean isSanhaiByRoadId(Long roadId) { + public boolean isSanhaiByRoadId(String roadId) { RoadStreetRespDTO roadStreetRespDTO = roadApi.getRoadInfoById(roadId); if(null == roadStreetRespDTO){ throw exception(APP_WORK_ROAD_NOT_EXISTS); 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 04d2af8..8ef9dff 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 @@ -25,6 +25,7 @@ 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.AppGardenWorkOrderReqVO; 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; @@ -108,6 +109,7 @@ public class BpmRegionMgrServiceImpl implements BpmRegionMgrService{ if(null == roadStreetRespDTO){ throw exception(APP_WORK_ROAD_NOT_EXISTS); } + workOrder.setWorkerCompanyId(roadStreetRespDTO.getDeptId());//道路负责部门id workOrder.setStreetId(roadStreetRespDTO.getStreetId()); workOrder.setStreetName(roadStreetRespDTO.getStreetName()); workOrder.setBuzStatus(ORDER_STATUS_INIT);//工单业务初始化状态 后续操作状态 见 OperateTypeEnum @@ -136,6 +138,16 @@ public class BpmRegionMgrServiceImpl implements BpmRegionMgrService{ if(!RoleListUtils.containsCode(roleList,REGIONAL_MANAGER)){ throw exception(APP_REGIONMGR_USER_ROLE_ERROR); } + Integer sourceId = createRequestVo.getSourceId(); + String sourceName = createRequestVo.getSourceName(); + if(!ObjectUtils.isNotAllEmpty(sourceId)){ + sourceId = EventSourceEnum.REGION.getCode(); + } + if(StringUtil.isEmpty(sourceName)){ + sourceName = EventSourceEnum.REGION.getDesc(); + } + workOrder.setSourceId(sourceId); + workOrder.setSourceName(sourceName); workOrder.setWoSourceId(roleList.get(0).getCode()); workOrder.setWoSourceName(roleList.get(0).getName()); String busiLine = createRequestVo.getBusiLine(); 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 6b69414..0f7f9d0 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 @@ -31,6 +31,7 @@ import com.zteits.urbanops.module.workorder.dal.mysql.maininfo.MainInfoMapper; import com.zteits.urbanops.module.workorder.dto.AppGardenWorkOrderReqVO; import com.zteits.urbanops.module.workorder.dto.AppGardenWorkOrderUniversalReqVO; 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; @@ -135,7 +136,16 @@ public class BpmUniversalServiceImpl implements BpmUniversalService{ if(RoleListUtils.containsBothCodes(roleList, REGIONAL_MANAGER, PARTROL_GLOBAL)){ throw exception(APP_WORK_ORADER_ROLE_ILLEGLE); } - + Integer sourceId = createRequestVo.getSourceId(); + String sourceName = createRequestVo.getSourceName(); + if(!ObjectUtils.isNotAllEmpty(sourceId)){ + sourceId = EventSourceEnum.PATROL.getCode(); + } + if(StringUtil.isEmpty(sourceName)){ + sourceName = EventSourceEnum.PATROL.getDesc(); + } + workOrder.setSourceId(sourceId); + workOrder.setSourceName(sourceName); workOrder.setWoSourceId(roleList.get(0).getCode()); workOrder.setWoSourceName(roleList.get(0).getName()); workOrder.setUserId(SecurityFrameworkUtils.getLoginUserId()); @@ -186,7 +196,7 @@ public class BpmUniversalServiceImpl implements BpmUniversalService{ //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 roadId = reqVO.getRoadId(); String roleCode = BusiLineTeamLeaderRoleCodeEnum.getByCode(busiLine).getRoleCode(); if(StringUtil.isEmpty(roleCode)){// 找不到 默认为园林组长的角色 diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/el/YlTaskAssignService.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/el/YlTaskAssignService.java index afa07da..8aa142e 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/el/YlTaskAssignService.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/el/YlTaskAssignService.java @@ -29,7 +29,7 @@ public class YlTaskAssignService { @Resource private MainInfoExtMapper workOrderExtMapper; - public Long getInitiatorApproverByBusiness(Long roadId,String roleCode,String busiLine) { + public Long getInitiatorApproverByBusiness(String roadId,String roleCode,String busiLine) { List userList = workOrderExtMapper.getUserByRoadIdAndRoleCode(roadId,roleCode,busiLine); if(null != userList && userList.size() > 0){ return userList.get(0).getId(); diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/listener/BpmProcessTaskAutoCompleteAIListener.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/listener/BpmProcessTaskAutoCompleteAIListener.java index 65aa787..1ea8ce8 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/listener/BpmProcessTaskAutoCompleteAIListener.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/listener/BpmProcessTaskAutoCompleteAIListener.java @@ -3,6 +3,7 @@ package com.zteits.urbanops.module.workorder.service.garden.listener; import com.zteits.urbanops.module.bpm.api.event.BpmProcessInstanceStatusEvent; import com.zteits.urbanops.module.bpm.api.event.BpmProcessInstanceStatusEventListener; import com.zteits.urbanops.module.workorder.api.constant.BpmCommonConstant; +import com.zteits.urbanops.module.workorder.service.eventinfo.EventInfoService; import com.zteits.urbanops.module.workorder.service.garden.BpmGardenService; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; @@ -19,6 +20,8 @@ import org.springframework.stereotype.Component; public class BpmProcessTaskAutoCompleteAIListener extends BpmProcessInstanceStatusEventListener { @Resource private BpmGardenService gardenService; + @Resource + private EventInfoService eventService; @Override protected String getProcessDefinitionKey() { @@ -30,6 +33,7 @@ public class BpmProcessTaskAutoCompleteAIListener extends BpmProcessInstanceStat protected void onEvent(BpmProcessInstanceStatusEvent event) { log.info("业务ID:"+event.getBusinessKey()+",业务状态"+event.getStatus()); gardenService.updateWorkOrderStatus(Long.parseLong(event.getBusinessKey()), event.getStatus()); - + log.info("更新事件表状态,业务ID:"+event.getBusinessKey()+",业务状态"+event.getStatus()); + eventService.bpmAiCallBack(event.getBusinessKey(),event.getStatus()); } }