refactor(wms): 统一钢卷质量状态更新逻辑,集中管理改判记录
1. 新增统一的updateQualityStatus方法,封装钢卷质量状态更新和改判日志记录逻辑 2. 替换mes模块中直接更新钢卷状态和插入改判日志的代码,改用统一服务方法 3. 移除冗余的改判日志Mapper注入和手动插入代码
This commit is contained in:
@@ -9,10 +9,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.klp.common.core.domain.PageQuery;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
import com.klp.common.utils.StringUtils;
|
||||
import com.klp.domain.WmsCoilQualityRejudge;
|
||||
import com.klp.domain.WmsMaterialCoil;
|
||||
import com.klp.mapper.WmsCoilQualityRejudgeMapper;
|
||||
import com.klp.mapper.WmsMaterialCoilMapper;
|
||||
import com.klp.service.IWmsMaterialCoilService;
|
||||
import com.klp.mes.qc.domain.QcQualityReview;
|
||||
import com.klp.mes.qc.domain.QcQualityReviewCoil;
|
||||
import com.klp.mes.qc.domain.QcQualityReviewLog;
|
||||
@@ -49,7 +48,7 @@ public class QcQualityReviewServiceImpl implements IQcQualityReviewService {
|
||||
private final QcQualityReviewCoilMapper coilMapper;
|
||||
private final QcQualityReviewLogMapper logMapper;
|
||||
private final WmsMaterialCoilMapper wmsMaterialCoilMapper;
|
||||
private final WmsCoilQualityRejudgeMapper wmsCoilQualityRejudgeMapper;
|
||||
private final IWmsMaterialCoilService wmsMaterialCoilService;
|
||||
|
||||
/**
|
||||
* 查询评审单详情(含钢卷明细和审批日志)
|
||||
@@ -289,23 +288,15 @@ public class QcQualityReviewServiceImpl implements IQcQualityReviewService {
|
||||
}
|
||||
|
||||
Date now = new Date();
|
||||
String reason = "异常产品评审改判,评审单号:" + review.getReviewNo();
|
||||
for (QcQualityReviewCoil coil : coilList) {
|
||||
// 1. 写入 wms_coil_quality_rejudge 改判记录
|
||||
WmsCoilQualityRejudge rejudge = new WmsCoilQualityRejudge();
|
||||
rejudge.setCoilId(coil.getCoilId());
|
||||
rejudge.setBeforeQuality(coil.getBeforeQuality());
|
||||
rejudge.setAfterQuality(coil.getRegradeQuality());
|
||||
rejudge.setRejudgeReason("异常产品评审改判,评审单号:" + review.getReviewNo());
|
||||
wmsCoilQualityRejudgeMapper.insert(rejudge);
|
||||
|
||||
// 2. 更新钢卷的 qualityStatus 为改判后的值
|
||||
// 1. 通过统一方法更新钢卷质量状态 + 自动记录改判日志
|
||||
if (coil.getCoilId() != null && StringUtils.isNotBlank(coil.getRegradeQuality())) {
|
||||
wmsMaterialCoilMapper.update(null, Wrappers.<WmsMaterialCoil>lambdaUpdate()
|
||||
.eq(WmsMaterialCoil::getCoilId, coil.getCoilId())
|
||||
.set(WmsMaterialCoil::getQualityStatus, coil.getRegradeQuality()));
|
||||
wmsMaterialCoilService.updateQualityStatus(
|
||||
coil.getCoilId(), coil.getRegradeQuality(), reason);
|
||||
}
|
||||
|
||||
// 3. 更新明细执行状态
|
||||
// 2. 更新明细执行状态
|
||||
coilMapper.update(null, Wrappers.<QcQualityReviewCoil>lambdaUpdate()
|
||||
.eq(QcQualityReviewCoil::getDetailId, coil.getDetailId())
|
||||
.set(QcQualityReviewCoil::getExecuteStatus, 1L)
|
||||
|
||||
@@ -194,6 +194,16 @@ public interface IWmsMaterialCoilService {
|
||||
*/
|
||||
String queryQualityStatusByWarehouseIdAndCurrentCoilNo(Long warehouseId, String currentCoilNo);
|
||||
|
||||
/**
|
||||
* 统一更新钢卷质量状态(自动记录改判日志)
|
||||
* 所有修改 quality_status 的地方都应当通过此方法,确保改判记录完整可追溯
|
||||
*
|
||||
* @param coilId 钢卷ID
|
||||
* @param newQuality 新质量状态
|
||||
* @param reason 变更原因
|
||||
*/
|
||||
void updateQualityStatus(Long coilId, String newQuality, String reason);
|
||||
|
||||
int exportCoil(@NotEmpty(message = "主键不能为空") Long coilId);
|
||||
|
||||
|
||||
|
||||
@@ -1823,6 +1823,40 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
return qw;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateQualityStatus(Long coilId, String newQuality, String reason) {
|
||||
if (coilId == null || StringUtils.isBlank(newQuality)) {
|
||||
log.warn("updateQualityStatus 参数不足: coilId={}, newQuality={}", coilId, newQuality);
|
||||
return;
|
||||
}
|
||||
// 查询当前钢卷
|
||||
WmsMaterialCoil coil = baseMapper.selectById(coilId);
|
||||
if (coil == null) {
|
||||
throw new RuntimeException("钢卷不存在:" + coilId);
|
||||
}
|
||||
String oldQuality = coil.getQualityStatus();
|
||||
// 状态没变,不处理
|
||||
if (StringUtils.equals(oldQuality, newQuality)) {
|
||||
log.info("钢卷质量状态未变化,跳过: coilId={}, quality={}", coilId, oldQuality);
|
||||
return;
|
||||
}
|
||||
// 1. 更新钢卷质量状态
|
||||
baseMapper.update(null, Wrappers.<WmsMaterialCoil>lambdaUpdate()
|
||||
.eq(WmsMaterialCoil::getCoilId, coilId)
|
||||
.set(WmsMaterialCoil::getQualityStatus, newQuality));
|
||||
|
||||
// 2. 记录改判记录
|
||||
WmsCoilQualityRejudge rejudge = new WmsCoilQualityRejudge();
|
||||
rejudge.setCoilId(coilId);
|
||||
rejudge.setBeforeQuality(oldQuality);
|
||||
rejudge.setAfterQuality(newQuality);
|
||||
rejudge.setRejudgeReason(reason);
|
||||
wmsCoilQualityRejudgeMapper.insert(rejudge);
|
||||
|
||||
log.info("钢卷质量状态变更: coilId={}, {} -> {}, 原因: {}", coilId, oldQuality, newQuality, reason);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String queryQualityStatusByWarehouseIdAndCurrentCoilNo(Long warehouseId, String currentCoilNo) {
|
||||
if (warehouseId == null || StringUtils.isBlank(currentCoilNo)) {
|
||||
|
||||
Reference in New Issue
Block a user