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 3ac2e04a..b4ed2013 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 @@ -2,6 +2,7 @@ package org.dromara.dms.service.impl; import cn.dev33.satoken.stp.StpUtil; import com.alibaba.ttl.TtlRunnable; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; @@ -509,12 +510,53 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS @Override @GlobalTransactional(rollbackFor = Exception.class) public int completeRepair(DmsFaultInstanceActivityBo dmsFaultInstanceActivity, List files) { + // 【调试日志】打印Service层接收到的数据 + log.info("===== completeRepair Service层接收到的数据 ====="); + log.info("repairInstanceId: {}", dmsFaultInstanceActivity.getRepairInstanceId()); + log.info("PDA传入instanceActivityId: {}", dmsFaultInstanceActivity.getInstanceActivityId()); + log.info("processHandleResolution: {}", dmsFaultInstanceActivity.getProcessHandleResolution()); + log.info("repairContent: {}", dmsFaultInstanceActivity.getRepairContent()); + log.info("protectedMethod: {}", dmsFaultInstanceActivity.getProtectedMethod()); + log.info("======================================="); + + // 【关键修复】查询最新的活动记录(process_step_order=2),而不是使用PDA传入的旧ID + // PDA传入的instanceActivityId是第一步的ID,我们需要更新第二步的记录 + DmsFaultInstanceActivity latestActivity = dmsFaultInstanceActivityMapper.selectOne( + new LambdaQueryWrapper() + .eq(DmsFaultInstanceActivity::getRepairInstanceId, dmsFaultInstanceActivity.getRepairInstanceId()) + .eq(DmsFaultInstanceActivity::getProcessStepOrder, 2L) + ); + + if (latestActivity == null) { + throw new ServiceException("未找到维修活动记录,请先开始维修"); + } + + log.info("查询到最新的活动记录,instanceActivityId: {}", latestActivity.getInstanceActivityId()); + // 更新 dms_fault_instance_activity 表 DmsFaultInstanceActivity activity = new DmsFaultInstanceActivity(); - activity.setInstanceActivityId(dmsFaultInstanceActivity.getInstanceActivityId()); + activity.setInstanceActivityId(latestActivity.getInstanceActivityId()); // 使用查询到的最新ID activity.setProcessHandleStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_ACTIVITY_HANDLE_STATUS_FINISH); activity.setEndTime(new Date()); activity.setRepairer(LoginHelper.getLoginUser() == null ? LoginHelper.getUsername() : LoginHelper.getLoginUser().getNickname()); + // 【修复】设置维修相关字段(从Bo对象传递到Entity) + activity.setProcessHandleResolution(dmsFaultInstanceActivity.getProcessHandleResolution()); + activity.setRepairContent(dmsFaultInstanceActivity.getRepairContent()); + activity.setProtectedMethod(dmsFaultInstanceActivity.getProtectedMethod()); + // 同时更新其他可能被修改的字段 + activity.setDesignOperations(dmsFaultInstanceActivity.getDesignOperations()); + activity.setFaultType(dmsFaultInstanceActivity.getFaultType()); + activity.setRepairType(dmsFaultInstanceActivity.getRepairType()); + activity.setOutsourcingId(dmsFaultInstanceActivity.getOutsourcingId()); + + // 【调试日志】打印即将更新到数据库的值 + log.info("===== 即将更新到数据库的值 ====="); + log.info("instanceActivityId: {}", activity.getInstanceActivityId()); + log.info("processHandleResolution: {}", activity.getProcessHandleResolution()); + log.info("repairContent: {}", activity.getRepairContent()); + log.info("protectedMethod: {}", activity.getProtectedMethod()); + log.info("================================"); + dmsFaultInstanceActivityMapper.updateById(activity); // 批量保存处理的零部件