package jnpf.limsService.impl; import jnpf.audit.sdk.annotation.AuditLog; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import jnpf.exception.DataException; import jnpf.limsEntity.LimsShebeiJiliangQijuEntity; import jnpf.limsEntity.LimsShebeiYiqiJiaozhunNeibuEntity; import jnpf.limsMapper.LimsShebeiJiliangQijuMapper; import jnpf.limsMapper.LimsShebeiYiqiJiaozhunNeibuMapper; import jnpf.limsService.LimsShebeiYiqiJiaozhunNeibuService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service public class LimsShebeiYiqiJiaozhunNeibuServiceImpl implements LimsShebeiYiqiJiaozhunNeibuService { private static final String BIZ_STATUS_YIJIAOZHUN = "yijiaozhun"; @Autowired private LimsShebeiYiqiJiaozhunNeibuMapper jiaozhunNeibuMapper; @Autowired private LimsShebeiJiliangQijuMapper jiliangQijuMapper; @Override @Transactional(rollbackFor = Exception.class) @AuditLog(action = "CALIBRATION_SYNC", label = "同步内部校准结果", bizType = "SHEBEI_YIQI", bizCodeExpr = "#flowId", bizCodeRequired = false, targetTable = "lims_shebei_yiqi_qiju", targetIdExpr = "T(jnpf.limsService.support.LimsAuditTargetIds).qijuByInternalCalibrationFlow(#flowId, #taskId)", diff = true, entityClass = LimsShebeiJiliangQijuEntity.class) public void syncToQiju(String flowId, String taskId) throws DataException { String resolvedFlowId = trimToEmpty(flowId); String resolvedTaskId = trimToEmpty(taskId); if (resolvedFlowId.isEmpty()) { throw new DataException("流程ID(flow_id)不能为空"); } if (resolvedTaskId.isEmpty()) { throw new DataException("流程任务ID(task_id)不能为空"); } LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.eq(LimsShebeiYiqiJiaozhunNeibuEntity::getFlowId, resolvedFlowId) .eq(LimsShebeiYiqiJiaozhunNeibuEntity::getFlowTaskId, resolvedTaskId); LimsShebeiYiqiJiaozhunNeibuEntity jiaozhun = jiaozhunNeibuMapper.selectOne(query); if (jiaozhun == null) { throw new DataException("未找到关联的内部校准记录:flow_id=" + resolvedFlowId + ", task_id=" + resolvedTaskId); } String qijuId = trimToEmpty(jiaozhun.getQijuId()); if (qijuId.isEmpty()) { throw new DataException("内部校准记录未关联计量器具"); } if (jiliangQijuMapper.selectById(qijuId) == null) { throw new DataException("计量器具不存在:" + qijuId); } LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); update.eq(LimsShebeiJiliangQijuEntity::getId, qijuId) .set(LimsShebeiJiliangQijuEntity::getBizStatus, BIZ_STATUS_YIJIAOZHUN) .set(LimsShebeiJiliangQijuEntity::getJiandingRiqi, jiaozhun.getJiandingRiqi()) .set(LimsShebeiJiliangQijuEntity::getJiliangShijian, jiaozhun.getJiandingRiqi()) .set(LimsShebeiJiliangQijuEntity::getJiliangYouxiaoqi, jiaozhun.getYouxiaoqi()); if (jiliangQijuMapper.update(null, update) != 1) { throw new DataException("计量器具校准信息更新失败,请刷新后重试"); } } private String trimToEmpty(String value) { return value == null ? "" : value.trim(); } }