From a3b8a74430345a9b4a6c300e96bd181cbf3ea8ea Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Tue, 18 Nov 2025 10:42:05 +0800 Subject: [PATCH] =?UTF-8?q?refactor(wms):=20=E4=BC=98=E5=8C=96=E7=89=A9?= =?UTF-8?q?=E6=96=99=E5=8D=B7=E7=AE=A1=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除重复的原材料和产品字段映射 - 使用 CASE 表达式统一处理不同类型的物料属性 - 简化 Java 服务层中的物料对象构建逻辑 - 删除冗余的 fillItemObject 方法 - 统一通过 itemType 判断设置对应物料信息 --- .../impl/WmsMaterialCoilServiceImpl.java | 72 +++++-------------- .../mapper/klp/WmsMaterialCoilMapper.xml | 64 ++++++++--------- 2 files changed, 48 insertions(+), 88 deletions(-) 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 81ccd7be..7f866c16 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 @@ -371,67 +371,31 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } // 构建原材料对象 - if ("raw_material".equals(vo.getItemType()) && vo.getRawMaterialId() != null) { + if ("raw_material".equals(vo.getItemType())) { WmsRawMaterialVo rawMaterial = new WmsRawMaterialVo(); - rawMaterial.setRawMaterialId(vo.getRawMaterialId()); - rawMaterial.setRawMaterialCode(vo.getRawMaterialCode()); - rawMaterial.setRawMaterialName(vo.getRawMaterialName()); - rawMaterial.setSpecification(vo.getRawMaterialSpecification()); - rawMaterial.setSteelGrade(vo.getRawMaterialSteelGrade()); - rawMaterial.setThickness(vo.getRawMaterialThickness()); - rawMaterial.setWidth(vo.getRawMaterialWidth()); - rawMaterial.setBomId(vo.getRawMaterialBomId()); + rawMaterial.setRawMaterialId(vo.getItemId()); + rawMaterial.setRawMaterialCode(vo.getItemCode()); + rawMaterial.setRawMaterialName(vo.getItemName()); + rawMaterial.setSpecification(vo.getSpecification()); + rawMaterial.setMaterial(vo.getMaterial()); + rawMaterial.setManufacturer(vo.getManufacturer()); + rawMaterial.setSurfaceTreatmentDesc(vo.getSurfaceTreatmentDesc()); + rawMaterial.setZincLayer(vo.getZincLayer()); vo.setRawMaterial(rawMaterial); } // 构建产品对象 - if ("product".equals(vo.getItemType()) && vo.getProductId() != null) { - WmsProductVo product = new WmsProductVo(); - product.setProductId(vo.getProductId()); - product.setProductCode(vo.getProductCode()); - product.setProductName(vo.getProductName()); - product.setSpecification(vo.getProductSpecification()); - product.setThickness(vo.getProductThickness()); - product.setWidth(vo.getProductWidth()); - product.setBomId(vo.getProductBomId()); - vo.setProduct(product); - } - } - - /** - * 填充物品对象(产品或原材料)- 保留作为备用方法 - */ - private void fillItemObject(WmsMaterialCoilVo vo) { - if (vo.getItemId() == null || vo.getItemType() == null) { - return; - } - - // 查询原材料信息 - if ("raw_material".equals(vo.getItemType())) { - WmsRawMaterialVo rawMaterial = rawMaterialService.queryById(vo.getItemId()); - vo.setRawMaterial(rawMaterial); - - // 查询原材料对应的BOM信息 - if (rawMaterial != null && rawMaterial.getBomId() != null) { - WmsBomItemBo bomItemBo = new WmsBomItemBo(); - bomItemBo.setBomId(rawMaterial.getBomId()); - List bomItemList = bomItemService.queryList(bomItemBo); - vo.setBomItemList(bomItemList); - } - } - - // 查询产品信息 if ("product".equals(vo.getItemType())) { - WmsProductVo product = productService.queryById(vo.getItemId()); + WmsProductVo product = new WmsProductVo(); + product.setProductId(vo.getItemId()); + product.setProductCode(vo.getItemCode()); + product.setProductName(vo.getItemName()); + product.setSpecification(vo.getSpecification()); + product.setMaterial(vo.getMaterial()); + product.setManufacturer(vo.getManufacturer()); + product.setSurfaceTreatmentDesc(vo.getSurfaceTreatmentDesc()); + product.setZincLayer(vo.getZincLayer()); vo.setProduct(product); - - // 查询产品对应的BOM信息 - if (product != null && product.getBomId() != null) { - WmsBomItemBo bomItemBo = new WmsBomItemBo(); - bomItemBo.setBomId(product.getBomId()); - List bomItemList = bomItemService.queryList(bomItemBo); - vo.setBomItemList(bomItemList); - } } } diff --git a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml index d361cc7a..5d024610 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml @@ -95,23 +95,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" mc.packing_status, w.warehouse_name AS warehouseName, aw.actual_warehouse_name AS actualWarehouseName, - -- 原材料字段 - rm.raw_material_id AS rawMaterialId, - rm.raw_material_code AS rawMaterialCode, - rm.raw_material_name AS rawMaterialName, - rm.specification AS rawMaterialSpecification, - rm.steel_grade AS rawMaterialSteelGrade, - rm.thickness AS rawMaterialThickness, - rm.width AS rawMaterialWidth, - rm.bom_id AS rawMaterialBomId, - -- 产品字段 - p.product_id AS productId, - p.product_code AS productCode, - p.product_name AS productName, - p.specification AS productSpecification, - p.thickness AS productThickness, - p.width AS productWidth, - p.bom_id AS productBomId, + CASE WHEN mc.item_type = 'raw_material' THEN rm.specification + WHEN mc.item_type = 'product' THEN p.specification + ELSE NULL END AS specification, + CASE WHEN mc.item_type = 'raw_material' THEN rm.material + WHEN mc.item_type = 'product' THEN p.material + ELSE NULL END AS material, + CASE WHEN mc.item_type = 'raw_material' THEN rm.manufacturer + WHEN mc.item_type = 'product' THEN p.manufacturer + ELSE NULL END AS manufacturer, + CASE WHEN mc.item_type = 'raw_material' THEN rm.surface_treatment_desc + WHEN mc.item_type = 'product' THEN p.surface_treatment_desc + ELSE NULL END AS surfaceTreatmentDesc, + CASE WHEN mc.item_type = 'raw_material' THEN rm.zinc_layer + WHEN mc.item_type = 'product' THEN p.zinc_layer + ELSE NULL END AS zincLayer, -- 物品名称和编号(用于兼容) CASE WHEN mc.item_type = 'raw_material' THEN rm.raw_material_name @@ -198,23 +196,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT mc.*, w.warehouse_name AS warehouseName, aw.actual_warehouse_name AS actualWarehouseName, - -- 原材料字段 - rm.raw_material_id AS rawMaterialId, - rm.raw_material_code AS rawMaterialCode, - rm.raw_material_name AS rawMaterialName, - rm.specification AS rawMaterialSpecification, - rm.steel_grade AS rawMaterialSteelGrade, - rm.thickness AS rawMaterialThickness, - rm.width AS rawMaterialWidth, - rm.bom_id AS rawMaterialBomId, - -- 产品字段 - p.product_id AS productId, - p.product_code AS productCode, - p.product_name AS productName, - p.specification AS productSpecification, - p.thickness AS productThickness, - p.width AS productWidth, - p.bom_id AS productBomId, + CASE WHEN mc.item_type = 'raw_material' THEN rm.specification + WHEN mc.item_type = 'product' THEN p.specification + ELSE NULL END AS specification, + CASE WHEN mc.item_type = 'raw_material' THEN rm.material + WHEN mc.item_type = 'product' THEN p.material + ELSE NULL END AS material, + CASE WHEN mc.item_type = 'raw_material' THEN rm.manufacturer + WHEN mc.item_type = 'product' THEN p.manufacturer + ELSE NULL END AS manufacturer, + CASE WHEN mc.item_type = 'raw_material' THEN rm.surface_treatment_desc + WHEN mc.item_type = 'product' THEN p.surface_treatment_desc + ELSE NULL END AS surfaceTreatmentDesc, + CASE WHEN mc.item_type = 'raw_material' THEN rm.zinc_layer + WHEN mc.item_type = 'product' THEN p.zinc_layer + ELSE NULL END AS zincLayer, -- 物品名称和编号(用于兼容) CASE WHEN mc.item_type = 'raw_material' THEN rm.raw_material_name