diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/uuid/Seq.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/uuid/Seq.java index 6a0b818..872e1ad 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/uuid/Seq.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/uuid/Seq.java @@ -66,6 +66,15 @@ public class Seq { + // 检查工单序列类型 + public static final String dmsInspectInstanceSeqType = "INSPECTINSTANCE"; + // 检查工单接口序列数 + private static AtomicInteger dmsInspectInstanceSeq = new AtomicInteger(1); + // 检查工单标识 + public static final String dmsInspectInstanceCode = "IIC"; + + + //检修计划序列类型 public static final String planRepairSeqType = "PLANREPAIR"; @@ -180,6 +189,8 @@ public class Seq { atomicInt = dmsPlanLubeSeq; }else if (dmsLubeInstanceSeqType.equals(type)) { atomicInt = dmsLubeInstanceSeq; + }else if (dmsInspectInstanceSeqType.equals(type)) { + atomicInt = dmsInspectInstanceSeq; }else if (planMaintSeqType.equals(type)) { atomicInt = planMaintSeq; }else if(maintInstanceSeqType.equals(type)) { diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBaseMaintStationVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBaseMaintStationVo.java index 98f48ca..d92c2bc 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBaseMaintStationVo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBaseMaintStationVo.java @@ -75,6 +75,11 @@ public class DmsBaseMaintStationVo implements Serializable { */ private String deviceTypeName;//JOIN + /** + * 标准编号 + */ + private String maintStandardCode;//JOIN + @ExcelProperty(value = "保养项目") private List dmsBaseMaintProjectList; diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java index f185a7f..0bf32d2 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java @@ -13,6 +13,7 @@ import org.apache.dubbo.rpc.RpcContext; import org.dromara.common.core.constant.DmsConstants; import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.ObjectUtils; +import org.dromara.common.core.utils.uuid.Seq; import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.dms.api.RemoteInspectInstanceService; import org.dromara.dms.domain.*; @@ -80,7 +81,7 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe // 【关键修复】存储流程实例ID而不是任务ID Long processInstanceId = result.getProcessInstanceId(); Long taskId = result.getTaskId(); - + // 【简化方案】异步处理工作流推进,避免死锁 CompletableFuture.runAsync(TtlRunnable.get(() -> { try { @@ -155,12 +156,14 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe // 创建新的检查实例对象 DmsBillsInspectInstance dmsBillsInspectInstance = new DmsBillsInspectInstance(); // 设置检查实例的相关属性 + // 设置工单编号 + dmsBillsInspectInstance.setBillsInspectCode(Seq.getId(Seq.dmsInspectInstanceSeqType, Seq.dmsInspectInstanceCode)); dmsBillsInspectInstance.setPlanInspectId(dmsPlanInspect.getPlanInspectId()); dmsBillsInspectInstance.setInspectType(dmsPlanInspect.getInspectType());//检查类型(1巡检 2点检) dmsBillsInspectInstance.setPlanBeginTime(dmsPlanInspect.getPlanTime()); dmsBillsInspectInstance.setPlanEndTime(new Date(dmsPlanInspect.getPlanTime().getTime()+dmsPlanInspect.getTimeLimit()*1000l)); dmsBillsInspectInstance.setInspectRouteId(dmsPlanInspect.getInspectRouteId()); - dmsBillsInspectInstance.setPerformer(dmsPlanInspect.getPerformer());//执行人 + dmsBillsInspectInstance.setPerformer(dmsPlanInspect.getPerformer());//负责人员 dmsBillsInspectInstance.setInspectStatus(DmsConstants.DMS_BILLS_INSPECT_INSTANCE_INSPECT_STATUS_TO_INSPECT);//待巡检 dmsBillsInspectInstance.setCreateBy(userId); dmsBillsInspectInstance.setTenantId(tenantId); diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java index f38a523..94fb508 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java @@ -83,10 +83,10 @@ public class RemoteLubeInstanceServiceImpl implements RemoteLubeInstanceService RemoteStartProcess remoteStartProcess = new RemoteStartProcess(); remoteStartProcess.setBusinessId(businessId); remoteStartProcess.setFlowCode(DmsConstants.DMS_BILLS_LUBE_INSTANCE_WF_CODE); - + // 【重要】通过Dubbo隐式参数传递租户ID RpcContext.getContext().setAttachment("tenantId", tenantId); - + RemoteStartProcessReturn result = remoteWorkflowService.startWorkFlow(remoteStartProcess); //TODO:赋值给工单的wfid if(ObjectUtils.isEmpty(result)){ @@ -95,7 +95,7 @@ public class RemoteLubeInstanceServiceImpl implements RemoteLubeInstanceService // 【关键修复】存储流程实例ID而不是任务ID Long processInstanceId = result.getProcessInstanceId(); Long taskId = result.getTaskId(); - + // 【简化方案】直接在异步线程中重新登录相同用户,避免Token传递复杂性 CompletableFuture.runAsync(TtlRunnable.get(() -> { try { diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java index 25a43c4..cbcaaf7 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java @@ -775,7 +775,7 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS try { // 根据repairInstanceId查询故障实例及其关联的设备和第一条活动记录 DmsBillsFaultInstanceVo dmsBillsFaultInstance = baseMapper.selectFaultInstanceJoinFirstAndDeviceById(repairInstanceId); - + if (dmsBillsFaultInstance == null) { throw new ServiceException("工单不存在,repairInstanceId: " + repairInstanceId); } @@ -829,14 +829,14 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS // 返回故障实例对象 return dmsBillsFaultInstance; - + } catch (Exception e) { log.error("查询工单详情异常,repairInstanceId: {}", repairInstanceId, e); - + // 如果是查询返回多条记录的异常,尝试备用查询方案 if (e.getMessage() != null && e.getMessage().contains("Expected one result")) { log.warn("检测到查询返回多条记录异常,尝试备用查询方案,repairInstanceId: {}", repairInstanceId); - + // 备用方案:查询工单基本信息和最新的活动记录 DmsBillsFaultInstanceVo workOrder = baseMapper.selectVoById(repairInstanceId); if (workOrder != null) { @@ -847,7 +847,7 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS .orderByDesc(DmsFaultInstanceActivity::getInstanceActivityId) .last("LIMIT 1"); DmsFaultInstanceActivity latestActivity = dmsFaultInstanceActivityMapper.selectOne(wrapper); - + if (latestActivity != null) { // 设置活动相关信息 workOrder.setInstanceActivityId(latestActivity.getInstanceActivityId()); @@ -858,13 +858,13 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS workOrder.setOutsourcingId(latestActivity.getOutsourcingId()); workOrder.setProcessHandleResolution(latestActivity.getProcessHandleResolution()); } - - log.info("备用查询方案成功,repairInstanceId: {}, instanceActivityId: {}", + + log.info("备用查询方案成功,repairInstanceId: {}, instanceActivityId: {}", repairInstanceId, workOrder.getInstanceActivityId()); return workOrder; } } - + throw new ServiceException("查询工单详情失败:" + e.getMessage()); } }