feat(wms): 新增退火报表导出功能

- 在IWmsMaterialCoilService中添加queryAnnealExportList方法
- 在WmsMaterialCoilController中新增exportAnneal接口用于导出退火报表
- 在WmsMaterialCoilMapper中添加selectAnnealExportListByCoilIds查询方法
- 在WmsMaterialCoilMapper.xml中实现退火报表SQL查询,关联钢卷、退火计划、炉子等信息
- 在WmsMaterialCoilServiceImpl中实现退火报表数据查询逻辑
- 创建WmsMaterialCoilAnnealExportVo实体类用于退火报表数据导出
- 优化材质异常查询SQL逻辑,改进热轧卷板相关查询条件
This commit is contained in:
2026-04-22 16:48:50 +08:00
parent 19dad696a7
commit 1d4fbc6d3f
6 changed files with 218 additions and 11 deletions

View File

@@ -710,6 +710,105 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach>
ORDER BY mc.create_time DESC
</select>
<!-- 退火报表导出:按 coilIds 联查钢卷 + 退火计划 + 退火计划钢卷关系 -->
<select id="selectAnnealExportListByCoilIds" resultType="com.klp.domain.vo.WmsMaterialCoilAnnealExportVo">
SELECT
mc.coil_id AS coilId,
CASE
WHEN mc.item_type = 'product' THEN '成品'
WHEN mc.item_type = 'raw_material' THEN '原料'
ELSE mc.item_type
END AS itemTypeDesc,
mc.item_id AS itemId,
mc.data_type AS dataType,
w.warehouse_name AS warehouseName,
aw.actual_warehouse_name AS actualWarehouseName,
mc.enter_coil_no AS enterCoilNo,
mc.supplier_coil_no AS supplierCoilNo,
mc.current_coil_no AS currentCoilNo,
mc.create_time AS createTime,
mc.export_time AS exportTime,
mc.update_time AS updateTime,
mc.net_weight AS netWeight,
mc.length AS length,
mc.coating_type AS coatingType,
mc.temper_grade AS temperGrade,
mc.business_purpose AS businessPurpose,
mc.is_related_to_order AS isRelatedToOrder,
mc.trimming_requirement AS trimmingRequirement,
mc.packaging_requirement AS packagingRequirement,
mc.quality_status AS qualityStatus,
mc.packing_status AS packingStatus,
mc.sale_name AS saleName,
mc.transfer_type AS transferType,
CASE
WHEN mc.status = 0 THEN '在库'
WHEN mc.status = 1 THEN '已发货'
ELSE CAST(mc.status AS CHAR)
END AS statusDesc,
mc.remark AS remark,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_name
WHEN mc.item_type = 'product' THEN pdt.product_name
ELSE NULL
END AS itemName,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.specification
WHEN mc.item_type = 'product' THEN pdt.specification
ELSE NULL
END AS specification,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.material
WHEN mc.item_type = 'product' THEN pdt.material
ELSE NULL
END AS material,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.manufacturer
WHEN mc.item_type = 'product' THEN pdt.manufacturer
ELSE NULL
END AS manufacturer,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.surface_treatment_desc
WHEN mc.item_type = 'product' THEN pdt.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 pdt.zinc_layer
ELSE NULL
END AS zincLayer,
fp.plan_no AS planNo,
fp.plan_start_time AS planStartTime,
fp.actual_start_time AS actualStartTime,
fp.end_time AS endTime,
fp.target_furnace_id AS targetFurnaceId,
f.furnace_name AS targetFurnaceName,
fp.status AS status,
fp.remark AS remark,
fpc.logic_warehouse_id AS logicWarehouseId,
lw.warehouse_name AS logicWarehouseName,
fpc.furnace_level AS furnaceLevel
FROM wms_material_coil mc
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
LEFT JOIN wms_actual_warehouse aw ON mc.actual_warehouse_id = aw.actual_warehouse_id
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id
LEFT JOIN wms_product pdt ON mc.item_type = 'product' AND mc.item_id = pdt.product_id
LEFT JOIN wms_furnace_plan_coil fpc ON fpc.coil_id = mc.coil_id AND fpc.del_flag = 0
LEFT JOIN wms_furnace_plan fp ON fp.plan_id = fpc.plan_id AND fp.del_flag = 0
LEFT JOIN wms_furnace f ON f.furnace_id = fp.target_furnace_id AND f.del_flag = 0
LEFT JOIN wms_warehouse lw ON lw.warehouse_id = fpc.logic_warehouse_id AND lw.del_flag = 0
WHERE mc.del_flag = 0
AND mc.coil_id IN
<foreach collection="coilIds" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
ORDER BY mc.create_time DESC
</select>
<!-- 查询重复入场卷号的钢卷信息 -->
<select id="selectDuplicateEnterCoilNoList" resultType="com.klp.domain.vo.WmsMaterialCoilVo">
SELECT mc.*,
@@ -936,22 +1035,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
GROUP BY warehouse_id
</select>
<!-- 分页查询材质异常的钢卷 -->
<!-- 分页查询材质异常的钢卷查询同一入场钢卷号下packing_status与热轧卷板的material不一致的钢卷 -->
<select id="selectMaterialMismatchCoilsPage" resultMap="WmsMaterialCoilResult">
SELECT mc.*
FROM wms_material_coil mc
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id AND rm.del_flag = 0 AND rm.raw_material_name LIKE '%热轧卷板%'
LEFT JOIN wms_product wp ON mc.item_type = 'product' AND mc.item_id = wp.product_id AND wp.del_flag = 0 AND wp.product_name LIKE '%热轧卷板%'
WHERE mc.del_flag = 0
AND mc.item_id IS NOT NULL
AND mc.item_type IS NOT NULL
AND mc.packing_status IS NOT NULL
AND (
(mc.item_type = 'raw_material' AND rm.material IS NOT NULL AND mc.packing_status != rm.material)
OR
(mc.item_type = 'product' AND wp.material IS NOT NULL AND mc.packing_status != wp.material)
AND mc.enter_coil_no IS NOT NULL
AND mc.enter_coil_no IN (
SELECT DISTINCT mci.enter_coil_no
FROM wms_material_coil mci
LEFT JOIN wms_raw_material rm ON mci.item_type = 'raw_material' AND mci.item_id = rm.raw_material_id AND rm.del_flag = 0
LEFT JOIN wms_product wp ON mci.item_type = 'product' AND mci.item_id = wp.product_id AND wp.del_flag = 0
WHERE mci.del_flag = 0
AND mci.item_id IS NOT NULL
AND (
(mci.item_type = 'raw_material' AND rm.raw_material_name LIKE '%热轧卷板%')
OR
(mci.item_type = 'product' AND wp.product_name LIKE '%热轧卷板%')
)
)
AND (
mc.packing_status IS NULL
OR
EXISTS (
SELECT 1
FROM wms_material_coil mci2
LEFT JOIN wms_raw_material rm2 ON mci2.item_type = 'raw_material' AND mci2.item_id = rm2.raw_material_id AND rm2.del_flag = 0
LEFT JOIN wms_product wp2 ON mci2.item_type = 'product' AND mci2.item_id = wp2.product_id AND wp2.del_flag = 0
WHERE mci2.del_flag = 0
AND mci2.enter_coil_no = mc.enter_coil_no
AND (
(mci2.item_type = 'raw_material' AND rm2.raw_material_name LIKE '%热轧卷板%' AND (mc.packing_status != rm2.material OR rm2.material IS NULL))
OR
(mci2.item_type = 'product' AND wp2.product_name LIKE '%热轧卷板%' AND (mc.packing_status != wp2.material OR wp2.material IS NULL))
)
)
)
ORDER BY mc.coil_id ASC
</select>
</mapper>