feat(wms): 新增动态关联查询功能并优化钢卷列表接口

- 在 WmsMaterialCoilMapper 中新增 selectVoListWithDynamicJoin 方法
- 修改 selectVoPagePlus SQL 查询逻辑,移除冗余字段
- 实现根据物品类型联查原材料或产品信息
- 更新 WmsMaterialCoilServiceImpl 中 queryList 方法调用新接口
- 优化 WmsMaterialCoilVo 字段注释及 Excel 导出配置- 移除部分不必要的 @ExcelProperty 注解
- 新增 itemName 和 itemCode 字段用于显示物品名称和编号- 调整字段注释说明 dataType 数据类型含义- 修复仓库变更判断逻辑中的空指针风险
This commit is contained in:
2025-10-30 14:59:46 +08:00
parent 824ce738a9
commit ca301a4c18
4 changed files with 54 additions and 37 deletions

View File

@@ -63,7 +63,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
GROUP BY w.warehouse_id, w.warehouse_name, mc.item_type, mc.item_id
ORDER BY w.warehouse_id, mc.item_type, mc.item_id
</select>
<select id="selectVoPagePlus" resultType="com.klp.domain.vo.WmsMaterialCoilVo">
SELECT
mc.coil_id,
mc.enter_coil_no,
mc.current_coil_no,
mc.supplier_coil_no,
mc.data_type,
mc.next_warehouse_id,
mc.qrcode_record_id,
mc.team,
mc.has_merge_split,
mc.parent_coil_nos,
mc.item_type,
mc.item_id,
mc.gross_weight,
mc.net_weight,
mc.status,
mc.remark,
mc.warehouse_id,
w.warehouse_name AS warehouseName
FROM wms_material_coil mc
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
${ew.customSqlSegment}
</select>
<!-- 查询不同类型的钢卷在不同库区的分布情况 -->
<select id="getDistributionByItemType" resultType="java.util.Map">
SELECT
@@ -88,30 +111,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
GROUP BY mc.item_type, mc.item_id, w.warehouse_id, w.warehouse_name
ORDER BY mc.item_type, mc.item_id, w.warehouse_id
</select>
<select id="selectVoPagePlus" resultType="com.klp.domain.vo.WmsMaterialCoilVo">
SELECT
mc.coil_id,
mc.enter_coil_no,
mc.current_coil_no,
mc.supplier_coil_no,
mc.data_type,
mc.next_warehouse_id,
mc.qrcode_record_id,
mc.team,
mc.has_merge_split,
mc.parent_coil_nos,
mc.item_type,
mc.item_id,
mc.gross_weight,
mc.net_weight,
mc.status,
mc.remark,
mc.warehouse_id,
w.warehouse_name AS warehouseName
<select id="selectVoListWithDynamicJoin" resultType="com.klp.domain.vo.WmsMaterialCoilVo">
SELECT mc.*,
w.warehouse_name AS warehouseName,
CASE
WHEN mc.item_type = 'row_material' THEN rm.raw_material_name
WHEN mc.item_type = 'product' THEN p.product_name
ELSE NULL
END as itemName,
CASE
WHEN mc.item_type = 'row_material' THEN rm.raw_material_code
WHEN mc.item_type = 'product' THEN p.product_code
ELSE NULL
END as itemCode
FROM wms_material_coil mc
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
${ew.customSqlSegment}
LEFT JOIN wms_raw_material rm ON mc.item_type = 'row_material' AND mc.item_id = rm.raw_material_id
LEFT JOIN wms_product p ON mc.item_type = 'product' AND mc.item_id = p.product_id
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
${ew.customSqlSegment}
</select>
</mapper>