refactor(wms): 优化物料卷管理逻辑

- 移除重复的原材料和产品字段映射
- 使用 CASE 表达式统一处理不同类型的物料属性
- 简化 Java 服务层中的物料对象构建逻辑
- 删除冗余的 fillItemObject 方法
- 统一通过 itemType 判断设置对应物料信息
This commit is contained in:
2025-11-18 10:42:05 +08:00
parent ed80b11007
commit a3b8a74430
2 changed files with 48 additions and 88 deletions

View File

@@ -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(); WmsRawMaterialVo rawMaterial = new WmsRawMaterialVo();
rawMaterial.setRawMaterialId(vo.getRawMaterialId()); rawMaterial.setRawMaterialId(vo.getItemId());
rawMaterial.setRawMaterialCode(vo.getRawMaterialCode()); rawMaterial.setRawMaterialCode(vo.getItemCode());
rawMaterial.setRawMaterialName(vo.getRawMaterialName()); rawMaterial.setRawMaterialName(vo.getItemName());
rawMaterial.setSpecification(vo.getRawMaterialSpecification()); rawMaterial.setSpecification(vo.getSpecification());
rawMaterial.setSteelGrade(vo.getRawMaterialSteelGrade()); rawMaterial.setMaterial(vo.getMaterial());
rawMaterial.setThickness(vo.getRawMaterialThickness()); rawMaterial.setManufacturer(vo.getManufacturer());
rawMaterial.setWidth(vo.getRawMaterialWidth()); rawMaterial.setSurfaceTreatmentDesc(vo.getSurfaceTreatmentDesc());
rawMaterial.setBomId(vo.getRawMaterialBomId()); rawMaterial.setZincLayer(vo.getZincLayer());
vo.setRawMaterial(rawMaterial); 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<WmsBomItemVo> bomItemList = bomItemService.queryList(bomItemBo);
vo.setBomItemList(bomItemList);
}
}
// 查询产品信息
if ("product".equals(vo.getItemType())) { 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); vo.setProduct(product);
// 查询产品对应的BOM信息
if (product != null && product.getBomId() != null) {
WmsBomItemBo bomItemBo = new WmsBomItemBo();
bomItemBo.setBomId(product.getBomId());
List<WmsBomItemVo> bomItemList = bomItemService.queryList(bomItemBo);
vo.setBomItemList(bomItemList);
}
} }
} }

View File

@@ -95,23 +95,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
mc.packing_status, mc.packing_status,
w.warehouse_name AS warehouseName, w.warehouse_name AS warehouseName,
aw.actual_warehouse_name AS actualWarehouseName, aw.actual_warehouse_name AS actualWarehouseName,
-- 原材料字段 CASE WHEN mc.item_type = 'raw_material' THEN rm.specification
rm.raw_material_id AS rawMaterialId, WHEN mc.item_type = 'product' THEN p.specification
rm.raw_material_code AS rawMaterialCode, ELSE NULL END AS specification,
rm.raw_material_name AS rawMaterialName, CASE WHEN mc.item_type = 'raw_material' THEN rm.material
rm.specification AS rawMaterialSpecification, WHEN mc.item_type = 'product' THEN p.material
rm.steel_grade AS rawMaterialSteelGrade, ELSE NULL END AS material,
rm.thickness AS rawMaterialThickness, CASE WHEN mc.item_type = 'raw_material' THEN rm.manufacturer
rm.width AS rawMaterialWidth, WHEN mc.item_type = 'product' THEN p.manufacturer
rm.bom_id AS rawMaterialBomId, ELSE NULL END AS manufacturer,
-- 产品字段 CASE WHEN mc.item_type = 'raw_material' THEN rm.surface_treatment_desc
p.product_id AS productId, WHEN mc.item_type = 'product' THEN p.surface_treatment_desc
p.product_code AS productCode, ELSE NULL END AS surfaceTreatmentDesc,
p.product_name AS productName, CASE WHEN mc.item_type = 'raw_material' THEN rm.zinc_layer
p.specification AS productSpecification, WHEN mc.item_type = 'product' THEN p.zinc_layer
p.thickness AS productThickness, ELSE NULL END AS zincLayer,
p.width AS productWidth,
p.bom_id AS productBomId,
-- 物品名称和编号(用于兼容) -- 物品名称和编号(用于兼容)
CASE CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_name 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.*, SELECT mc.*,
w.warehouse_name AS warehouseName, w.warehouse_name AS warehouseName,
aw.actual_warehouse_name AS actualWarehouseName, aw.actual_warehouse_name AS actualWarehouseName,
-- 原材料字段 CASE WHEN mc.item_type = 'raw_material' THEN rm.specification
rm.raw_material_id AS rawMaterialId, WHEN mc.item_type = 'product' THEN p.specification
rm.raw_material_code AS rawMaterialCode, ELSE NULL END AS specification,
rm.raw_material_name AS rawMaterialName, CASE WHEN mc.item_type = 'raw_material' THEN rm.material
rm.specification AS rawMaterialSpecification, WHEN mc.item_type = 'product' THEN p.material
rm.steel_grade AS rawMaterialSteelGrade, ELSE NULL END AS material,
rm.thickness AS rawMaterialThickness, CASE WHEN mc.item_type = 'raw_material' THEN rm.manufacturer
rm.width AS rawMaterialWidth, WHEN mc.item_type = 'product' THEN p.manufacturer
rm.bom_id AS rawMaterialBomId, ELSE NULL END AS manufacturer,
-- 产品字段 CASE WHEN mc.item_type = 'raw_material' THEN rm.surface_treatment_desc
p.product_id AS productId, WHEN mc.item_type = 'product' THEN p.surface_treatment_desc
p.product_code AS productCode, ELSE NULL END AS surfaceTreatmentDesc,
p.product_name AS productName, CASE WHEN mc.item_type = 'raw_material' THEN rm.zinc_layer
p.specification AS productSpecification, WHEN mc.item_type = 'product' THEN p.zinc_layer
p.thickness AS productThickness, ELSE NULL END AS zincLayer,
p.width AS productWidth,
p.bom_id AS productBomId,
-- 物品名称和编号(用于兼容) -- 物品名称和编号(用于兼容)
CASE CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_name WHEN mc.item_type = 'raw_material' THEN rm.raw_material_name