fix(dms): 修复维修完成功能中的数据更新问题(修描述、维修内容、安全防护措施)

- 添加 LambdaQueryWrapper 用于查询条件构建
- 增加调试日志输出以追踪 Service 层接收的数据
- 修复使用 PDA 传入的旧 ID 问题,改为查询最新的活动记录进行更新
- 添加查询验证逻辑,确保维修活动记录存在
- 完善维修相关字段的传递和更新机制
- 增加数据库更新前的调试日志输出
master
zangch@mesnac.com 6 days ago
parent d249f93998
commit b390f63fa5

@ -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<MultipartFile> 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<DmsFaultInstanceActivity>()
.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);
// 批量保存处理的零部件

Loading…
Cancel
Save