From bd9beb32eba8a3734e86ed1d889526a2fbde4af3 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Tue, 21 Apr 2026 13:41:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=B7=BB=E5=8A=A0=E9=92=A2?= =?UTF-8?q?=E5=8D=B7=E6=9D=90=E8=B4=A8=E5=BC=82=E5=B8=B8=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 IWmsMaterialCoilService 中新增 fixMaterialMismatchCoils 方法用于修复材质异常钢卷 - 在 WmsMaterialCoilController 中新增 /fixMaterialMismatch 接口提供修复功能 - 在 WmsMaterialCoilMapper.xml 中为材质异常查询添加按 coil_id 升序排序 - 在 WmsMaterialCoilServiceImpl 中实现材质异常修复逻辑,包括查询入场钢卷号、查找热轧卷板材质、批量更新 packing_status 等步骤 --- .../controller/WmsMaterialCoilController.java | 7 ++ .../klp/service/IWmsMaterialCoilService.java | 12 ++++ .../impl/WmsMaterialCoilServiceImpl.java | 68 +++++++++++++++++++ .../mapper/klp/WmsMaterialCoilMapper.xml | 1 + 4 files changed, 88 insertions(+) diff --git a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java index 0f99c2f7..8399381f 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java @@ -618,6 +618,13 @@ public class WmsMaterialCoilController extends BaseController { return iWmsMaterialCoilService.queryMaterialMismatchCoils(pageQuery); } + @Log(title = "修复材质异常钢卷", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("/fixMaterialMismatch") + public R fixMaterialMismatchCoils(@NotNull(message = "钢卷ID不能为空") @RequestParam Long coilId) { + return toAjax(iWmsMaterialCoilService.fixMaterialMismatchCoils(coilId)); + } + } 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 a0d68e46..c7c009fa 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java @@ -284,5 +284,17 @@ public interface IWmsMaterialCoilService { * @return 材质异常的钢卷列表(分页) */ TableDataInfo queryMaterialMismatchCoils(PageQuery pageQuery); + + /** + * 修复材质异常的钢卷 + * 1. 根据coilId查询钢卷的入场钢卷号(enterCoilNo) + * 2. 查询该入场钢卷号下的所有钢卷作为一组 + * 3. 找到packing_status为该入场钢卷号且itemName LIKE '%热轧卷板%'的itemId + * 4. 用该itemId对应的material更新整组的packing_status + * + * @param coilId 钢卷ID + * @return 修复结果 + */ + Boolean fixMaterialMismatchCoils(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 fddae326..85500f53 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 @@ -5186,5 +5186,73 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { return TableDataInfo.build(voPage); } + @Override + public Boolean fixMaterialMismatchCoils(Long coilId) { + WmsMaterialCoil coil = baseMapper.selectById(coilId); + if (coil == null) { + throw new RuntimeException("钢卷不存在"); + } + + String enterCoilNo = coil.getEnterCoilNo(); + if (StringUtils.isBlank(enterCoilNo)) { + throw new RuntimeException("入场钢卷号为空"); + } + + List sameEnterCoilNoCoils = baseMapper.selectList( + Wrappers.lambdaQuery(WmsMaterialCoil.class) + .eq(WmsMaterialCoil::getEnterCoilNo, enterCoilNo) + .eq(WmsMaterialCoil::getDelFlag, 0) + ); + + if (CollectionUtils.isEmpty(sameEnterCoilNoCoils)) { + throw new RuntimeException("未找到相同入场钢卷号的钢卷"); + } + + String targetMaterial = null; + + for (WmsMaterialCoil c : sameEnterCoilNoCoils) { + if (StringUtils.isNotBlank(c.getItemType()) && c.getItemId() != null) { + String itemType = c.getItemType(); + Long itemId = c.getItemId(); + + if ("raw_material".equals(itemType)) { + WmsRawMaterial rawMaterial = rawMaterialMapper.selectById(itemId); + if (rawMaterial != null && StringUtils.isNotBlank(rawMaterial.getRawMaterialName()) + && rawMaterial.getRawMaterialName().contains("热轧卷板")) { + targetMaterial = rawMaterial.getMaterial(); + break; + } + } else if ("product".equals(itemType)) { + WmsProduct product = productMapper.selectById(itemId); + if (product != null && StringUtils.isNotBlank(product.getProductName()) + && product.getProductName().contains("热轧卷板")) { + targetMaterial = product.getMaterial(); + break; + } + } + } + } + + if (StringUtils.isBlank(targetMaterial)) { + throw new RuntimeException("未找到热轧卷板对应的材质"); + } + + if (!sameEnterCoilNoCoils.isEmpty()) { + List coilIds = sameEnterCoilNoCoils.stream() + .map(WmsMaterialCoil::getCoilId) + .collect(Collectors.toList()); + + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(); + updateWrapper.in(WmsMaterialCoil::getCoilId, coilIds); + updateWrapper.set(WmsMaterialCoil::getPackingStatus, targetMaterial); + + WmsMaterialCoil updateEntity = new WmsMaterialCoil(); + updateEntity.setPackingStatus(targetMaterial); + return baseMapper.update(updateEntity, updateWrapper) > 0; + } + + return false; + } + } diff --git a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml index 37aa503d..c448931a 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml @@ -951,6 +951,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" OR (mc.item_type = 'product' AND wp.material IS NOT NULL AND mc.packing_status != wp.material) ) + ORDER BY mc.coil_id ASC