feat(qc): add auto warehouse update logic for regraded coils

根据改判后的钢卷质量等级自动将C/D级钢卷移动到技术部逻辑库区
This commit is contained in:
王文昊
2026-07-04 11:49:04 +08:00
parent d5d77c53b6
commit c922856a08

View File

@@ -45,6 +45,9 @@ import java.util.stream.Collectors;
@Service
public class QcQualityReviewServiceImpl implements IQcQualityReviewService {
/** 技术部逻辑库IDC/D级改判后移入此库区 */
private static final Long TECH_WAREHOUSE_ID = 2019583656787259393L;
private final QcQualityReviewMapper baseMapper;
private final QcQualityReviewCoilMapper coilMapper;
private final QcQualityReviewLogMapper logMapper;
@@ -319,7 +322,15 @@ public class QcQualityReviewServiceImpl implements IQcQualityReviewService {
coil.getCoilId(), coil.getRegradeQuality(), reason);
}
// 2. 更新明细执行状态
// 2. 根据改判后质量等级自动更新钢卷所在逻辑库区
Long targetWarehouseId = determineTargetWarehouse(coil.getRegradeQuality());
if (targetWarehouseId != null && coil.getCoilId() != null) {
wmsMaterialCoilMapper.update(null, Wrappers.<WmsMaterialCoil>lambdaUpdate()
.eq(WmsMaterialCoil::getCoilId, coil.getCoilId())
.set(WmsMaterialCoil::getWarehouseId, targetWarehouseId));
}
// 3. 更新明细执行状态
coilMapper.update(null, Wrappers.<QcQualityReviewCoil>lambdaUpdate()
.eq(QcQualityReviewCoil::getDetailId, coil.getDetailId())
.set(QcQualityReviewCoil::getExecuteStatus, 1L)
@@ -400,6 +411,23 @@ public class QcQualityReviewServiceImpl implements IQcQualityReviewService {
return "QR-" + dateStr + "-" + String.format("%04d", count + 1);
}
/**
* 根据改判后质量等级确定目标逻辑库区
* O/A/B → 不移动C+/C/C- → 技术部逻辑库D+/D/D- → 技术部逻辑库
*/
private Long determineTargetWarehouse(String regradeQuality) {
if (regradeQuality == null) return null;
// O/A/B 级不移动
if ("O".equals(regradeQuality) || "A".equals(regradeQuality) || "B".equals(regradeQuality)) {
return null;
}
// C/D 级 → 技术部逻辑库
if (regradeQuality.startsWith("C") || regradeQuality.startsWith("D")) {
return TECH_WAREHOUSE_ID;
}
return null;
}
private void validEntityBeforeSave(QcQualityReview entity) {
if (StringUtils.isBlank(entity.getProductName())) {
throw new RuntimeException("产品名称不能为空");