From 32455daf42c0a274d14274f682417510c5003d42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=96=87=E6=98=8A?= <15984991+wwh2328692301@user.noreply.gitee.com> Date: Sat, 4 Jul 2026 10:54:41 +0800 Subject: [PATCH] =?UTF-8?q?refactor(wms):=20=E7=BB=9F=E4=B8=80=E9=92=A2?= =?UTF-8?q?=E5=8D=B7=E8=B4=A8=E9=87=8F=E7=8A=B6=E6=80=81=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E9=9B=86=E4=B8=AD=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=94=B9=E5=88=A4=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 新增统一的updateQualityStatus方法,封装钢卷质量状态更新和改判日志记录逻辑 2. 替换mes模块中直接更新钢卷状态和插入改判日志的代码,改用统一服务方法 3. 移除冗余的改判日志Mapper注入和手动插入代码 --- .../impl/QcQualityReviewServiceImpl.java | 23 ++++--------- .../klp/service/IWmsMaterialCoilService.java | 10 ++++++ .../impl/WmsMaterialCoilServiceImpl.java | 34 +++++++++++++++++++ 3 files changed, 51 insertions(+), 16 deletions(-) diff --git a/klp-mes/src/main/java/com/klp/mes/qc/service/impl/QcQualityReviewServiceImpl.java b/klp-mes/src/main/java/com/klp/mes/qc/service/impl/QcQualityReviewServiceImpl.java index edcc61ea0..e0cb81783 100644 --- a/klp-mes/src/main/java/com/klp/mes/qc/service/impl/QcQualityReviewServiceImpl.java +++ b/klp-mes/src/main/java/com/klp/mes/qc/service/impl/QcQualityReviewServiceImpl.java @@ -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.lambdaUpdate() - .eq(WmsMaterialCoil::getCoilId, coil.getCoilId()) - .set(WmsMaterialCoil::getQualityStatus, coil.getRegradeQuality())); + wmsMaterialCoilService.updateQualityStatus( + coil.getCoilId(), coil.getRegradeQuality(), reason); } - // 3. 更新明细执行状态 + // 2. 更新明细执行状态 coilMapper.update(null, Wrappers.lambdaUpdate() .eq(QcQualityReviewCoil::getDetailId, coil.getDetailId()) .set(QcQualityReviewCoil::getExecuteStatus, 1L) diff --git a/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java b/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java index 0f3d8d9f7..d801dd314 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java @@ -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); diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java index 20041efe5..3c80b55df 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java @@ -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.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)) {