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

@@ -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