diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsMobileController.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsMobileController.java index 2e9bebe..889a24f 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsMobileController.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsMobileController.java @@ -96,7 +96,7 @@ public class DmsMobileController extends BaseController { mobileInstance.setDeviceName(voInstance.getMachineName()); mobileInstance.setDeviceLocation(voInstance.getMachineLocation()); mobileInstance.setDeviceSpec(voInstance.getMachineSpec()); - + // 设置审批状态字段,确保PDA端能获取到审批信息 mobileInstance.setApproveStatus(voInstance.getApproveStatus()); @@ -636,6 +636,7 @@ public class DmsMobileController extends BaseController { */ @Log(title = "点巡检工单明细", businessType = BusinessType.INSERT) @PostMapping("/saveInspectInstanceDetail") + @RepeatSubmit public AjaxResult saveInspectInstanceDetail(@RequestBody DmsInspectInstanceDetailBo dmsInspectInstanceDetail) { return AjaxResult.success(dmsBillsInspectInstanceService.updateDmsInspectInstanceDetail(dmsInspectInstanceDetail)); } @@ -837,11 +838,11 @@ public class DmsMobileController extends BaseController { lubricationDetail.setDeviceCode(detailVo.getMachineCode()); lubricationDetail.setDeviceName(detailVo.getMachineName()); lubricationDetail.setTypeName(detailVo.getDeviceTypeName()); + + // 【关键修复】确保润滑部位和润滑标准字段正确映射 lubricationDetail.setLubeStationName(detailVo.getLubeStationName()); lubricationDetail.setLubeProtocol(detailVo.getLubeProtocol()); lubricationDetail.setLubeOperationDescription(detailVo.getLubeOperationDescription()); - - // 【新增】添加润滑标准编码字段的映射 lubricationDetail.setLubeStandardCode(detailVo.getLubeStandardCode()); // 【类型转换】处理维护状态字段的类型转换:String -> Long diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsFaultInstanceActivity.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsFaultInstanceActivity.java index c1d219c..4c6a676 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsFaultInstanceActivity.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsFaultInstanceActivity.java @@ -30,7 +30,7 @@ public class DmsFaultInstanceActivity extends TenantEntity { /** * 维修工单实例节点ID */ - @TableId(value = "instance_activity_id", type = IdType.AUTO) + @TableId(value = "instance_activity_id") private Long instanceActivityId; /** 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 d146271..84c8854 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 @@ -248,7 +248,7 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe RpcContext.getContext().setAttachment("tenantId", currentTenantId); // 【关键】调用工作流推进 - boolean completeResult = remoteWorkflowService.completeTaskIgnoreAuth(taskId, "检查工单启动,自动推进"); + boolean completeResult = remoteWorkflowService.completeTask(completeTask); if (completeResult) { log.info("检查工单 {} 工作流推进成功", businessId); } else { 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 7eb322c..fd41ffc 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 @@ -189,6 +189,8 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS add.setApproveStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_APPROVE_STATUS_PENDING); // 设置实例类型为手动录入 add.setInstanceType(DmsConstants.DMS_BILLS_FAULT_INSTANCE_TYPE_MAUAL); + // 【修复】工单创建时确认状态应该为null,不设置任何值 + add.setRepairConfirm(null); boolean flag = baseMapper.insert(add) > 0; if (flag) { @@ -517,7 +519,7 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS * 主管确认维修结果 * * @param repairInstanceId 工单ID - * @param confirmResult 确认结果(1-确认完成) + * @param confirmResult 确认结果(1-确认通过,2-确认不通过) * @param confirmUser 确认人 * @return 是否确认成功 */ @@ -539,35 +541,57 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS throw new ServiceException("工单已经确认过了"); } - // 更新确认状态 - workOrder.setRepairConfirm(confirmResult); - workOrder.setConfirmUser(confirmUser); - workOrder.setConfirmTime(new Date()); + // 根据确认结果设置不同的业务状态 + if ("1".equals(confirmResult)) { + // 确认通过:完成工单 + workOrder.setRepairConfirm(confirmResult); + workOrder.setConfirmUser(confirmUser != null ? confirmUser : LoginHelper.getUsername()); + workOrder.setConfirmTime(new Date()); + } else { + // 确认不通过:返回到维修环节,重置相关状态 + workOrder.setRepairConfirm(confirmResult); + workOrder.setConfirmUser(confirmUser != null ? confirmUser : LoginHelper.getUsername()); + workOrder.setConfirmTime(new Date()); + // 重置工单状态为待维修,让维修人员重新维修 + workOrder.setBillsStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_TO_REPAIR); + // 清空实际结束时间,因为需要重新维修 + workOrder.setRealEndTime(null); + } - // 推进工作流到最终完成状态 + // 推进工作流:业务状态和工作流分支变量分离处理 if (workOrder.getWfDefinitionId() != null) { Long currentTaskId = remoteWorkflowService.getCurrentTaskIdByInstanceId(workOrder.getWfDefinitionId()); if (currentTaskId != null) { RemoteCompleteTask remoteCompleteTask = new RemoteCompleteTask(); remoteCompleteTask.setTaskId(currentTaskId); - remoteCompleteTask.setMessage("主管确认完成"); + + // 设置工作流变量 - 用于互斥网关判断分支走向 + Map variables = new HashMap<>(); + if ("1".equals(confirmResult)) { + // 确认通过:工作流分支变量=0(走确认通过分支,结束流程) + remoteCompleteTask.setMessage("主管确认通过,工单完成"); + variables.put("repairConfirm", "0"); + } else { + // 确认不通过:工作流分支变量=1(走确认不通过分支,返回维修环节) + remoteCompleteTask.setMessage("主管确认不通过,返回维修环节"); + variables.put("repairConfirm", "1"); + } + + variables.put("businessId", repairInstanceId.toString()); + remoteCompleteTask.setVariables(variables); + List messageTypes = new ArrayList<>(); messageTypes.add("system"); remoteCompleteTask.setMessageType(messageTypes); - // 设置工作流变量 - repairConfirm用于互斥网关判断 - // 确认通过传0,确认不通过传1 - Map variables = new HashMap<>(); - if ("1".equals(confirmResult)) { - // 确认完成 -> 工作流变量设为0(确认通过) - variables.put("repairConfirm", "0"); + boolean workflowResult = remoteWorkflowService.completeTask(remoteCompleteTask); + if (!workflowResult) { + log.warn("工作流推进失败,但业务状态已更新成功,repairInstanceId: {}, confirmResult: {}", + repairInstanceId, confirmResult); } else { - // 其他情况 -> 工作流变量设为1(确认不通过) - variables.put("repairConfirm", "1"); + log.info("主管确认完成,工作流推进成功,repairInstanceId: {}, confirmResult: {}", + repairInstanceId, confirmResult); } - remoteCompleteTask.setVariables(variables); - - remoteWorkflowService.completeTask(remoteCompleteTask); } } @@ -713,6 +737,16 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS public DmsBillsFaultInstanceVo selectDmsBillsFaultInstanceByRepairInstanceId(Long repairInstanceId) { // 根据repairInstanceId查询故障实例及其关联的设备和第一条活动记录 DmsBillsFaultInstanceVo dmsBillsFaultInstance = baseMapper.selectFaultInstanceJoinFirstAndDeviceById(repairInstanceId); + + // 【关键修复】查询零部件信息,确保PDA端兼容性 + List partsVoList = baseMapper.selectParts(repairInstanceId); + if (partsVoList == null) { + partsVoList = new ArrayList<>(); // 确保不为null + } + // 转换为实体对象并设置到工单中 + List partsList = MapstructUtils.convert(partsVoList, DmsFaultComponentsParts.class); + dmsBillsFaultInstance.setParts(partsList); + // 创建实例文件查询对象 DmsInstanceFileBo queryInstanceFile = new DmsInstanceFileBo(); // 设置目标类型为故障实例活动 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java index 2e7dac2..ce426eb 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java @@ -203,7 +203,7 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService { .setExecutorInfo("stanceInspect")//执行器名称 .setExecutorTimeout(30)//执行超时时间 .setBlockStrategy(JobBlockStrategyEnum.DISCARD)//阻塞策略:丢弃后续任务,避免重复执行 - .setMaxRetryTimes(2)//最大重试次数 + .setMaxRetryTimes(0)//最大重试次数 .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 .setRetryInterval(10)//重试间隔时长 @@ -297,7 +297,7 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService { .setExecutorInfo("stanceInspect")//执行器名称 .setExecutorTimeout(30)//执行超时时间 .setBlockStrategy(JobBlockStrategyEnum.DISCARD)//阻塞策略:丢弃后续任务,避免重复执行 - .setMaxRetryTimes(2)//最大重试次数 + .setMaxRetryTimes(0)//最大重试次数 .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 .setRetryInterval(10)//重试间隔时长 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeServiceImpl.java index 9830c74..f38ad70 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeServiceImpl.java @@ -188,7 +188,7 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { .setExecutorInfo("stanceLube")//执行器名称 .setExecutorTimeout(30)//执行超时时间 .setBlockStrategy(JobBlockStrategyEnum.DISCARD)//阻塞策略:丢弃后续任务,避免重复执行 - .setMaxRetryTimes(2)//最大重试次数 + .setMaxRetryTimes(0)//最大重试次数 .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 .setRetryInterval(10)//重试间隔时长 @@ -251,7 +251,7 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { .setExecutorInfo("stanceLube")//执行器名称 .setExecutorTimeout(30)//执行超时时间 .setBlockStrategy(JobBlockStrategyEnum.DISCARD)//阻塞策略:丢弃后续任务,避免重复执行 - .setMaxRetryTimes(2)//最大重试次数 + .setMaxRetryTimes(0)//最大重试次数 .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 .setRetryInterval(10)//重试间隔时长 @@ -274,7 +274,7 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { .setExecutorInfo("stanceLube")//执行器名称 .setExecutorTimeout(30)//执行超时时间 .setBlockStrategy(JobBlockStrategyEnum.DISCARD)//阻塞策略:丢弃后续任务,避免重复执行 - .setMaxRetryTimes(2)//最大重试次数 + .setMaxRetryTimes(0)//最大重试次数 .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 .setRetryInterval(10)//重试间隔时长 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java index c06f471..6f91b12 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java @@ -214,7 +214,7 @@ public class DmsPlanMaintServiceImpl implements IDmsPlanMaintService { .setExecutorInfo("stanceMaint")//执行器名称 .setExecutorTimeout(30)//执行超时时间 .setBlockStrategy(JobBlockStrategyEnum.DISCARD)//阻塞策略:丢弃后续任务,避免重复执行 - .setMaxRetryTimes(2)//最大重试次数 + .setMaxRetryTimes(0)//最大重试次数 .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 .setRetryInterval(10)//重试间隔时长 @@ -303,7 +303,7 @@ public class DmsPlanMaintServiceImpl implements IDmsPlanMaintService { .setExecutorInfo("stanceMaint")//执行器名称 .setExecutorTimeout(30)//执行超时时间 .setBlockStrategy(JobBlockStrategyEnum.DISCARD)//阻塞策略:丢弃后续任务,避免重复执行 - .setMaxRetryTimes(2)//最大重试次数 + .setMaxRetryTimes(0)//最大重试次数 .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 .setRetryInterval(10)//重试间隔时长 @@ -323,7 +323,7 @@ public class DmsPlanMaintServiceImpl implements IDmsPlanMaintService { .setExecutorInfo("stanceMaint")//执行器名称 .setExecutorTimeout(30)//执行超时时间 .setBlockStrategy(JobBlockStrategyEnum.DISCARD)//阻塞策略:丢弃后续任务,避免重复执行 - .setMaxRetryTimes(2)//最大重试次数 + .setMaxRetryTimes(0)//最大重试次数 .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 .setRetryInterval(10)//重试间隔时长 diff --git a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsFaultInstanceMapper.xml b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsFaultInstanceMapper.xml index f5ae816..a746dc5 100644 --- a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsFaultInstanceMapper.xml +++ b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsFaultInstanceMapper.xml @@ -38,7 +38,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + @@ -222,7 +222,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" @@ -42,7 +41,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.inspect_route_id, a.device_amount, a.plan_time, a.cycle_period,a.time_limit,a.job_id, a.performer, a.remark, a.create_by, a.create_time, a.update_by, a.update_time - from dms_plan_inspect a left join sys_job b on a.job_id = b.job_id + from dms_plan_inspect a where a.plan_inspect_code = #{planInspectCode} diff --git a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanLubeMapper.xml b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanLubeMapper.xml index 324cf02..66b53df 100644 --- a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanLubeMapper.xml +++ b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanLubeMapper.xml @@ -72,10 +72,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"