Files
klp-oa/klp-wms/src/main/resources/mapper/klp/WmsStockMapper.xml
2025-10-31 14:50:20 +08:00

71 lines
3.1 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.klp.mapper.WmsStockMapper">
<resultMap type="com.klp.domain.WmsStock" id="WmsStockResult">
<result property="stockId" column="stock_id"/>
<result property="warehouseId" column="warehouse_id"/>
<result property="itemType" column="item_type"/>
<result property="itemId" column="item_id"/>
<result property="batchNo" column="batch_no"/>
<result property="remark" column="remark"/>
<result property="delFlag" column="del_flag"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
</resultMap>
<select id="getStockByItemId" resultType="java.math.BigDecimal">
select sum(quantity) as quantity from wms_stock
where item_id = #{rawMaterialId} and item_type = 'raw_material' and del_flag = 0
</select>
<!-- 查询物料库存统计基于物料钢卷表支持Wrapper动态条件包含group by返回Page<WmsStockVo> -->
<select id="selectVoPagePlus" resultType="com.klp.domain.vo.WmsStockVo">
SELECT
mc.warehouse_id AS warehouseId,
mc.item_type AS itemType,
mc.item_id AS itemId,
w.warehouse_name AS warehouseName,
CASE
WHEN mc.item_type = 'product' THEN p.product_name
WHEN mc.item_type = 'raw_material' THEN r.raw_material_name
ELSE NULL
END AS itemName,
CASE
WHEN mc.item_type = 'product' THEN p.product_code
WHEN mc.item_type = 'raw_material' THEN r.raw_material_code
ELSE NULL
END AS itemCode,
COUNT(*) AS totalQuantity,
SUM(CASE WHEN mc.status = 1 THEN 1 ELSE 0 END) AS onTheWay
FROM wms_material_coil mc
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id AND w.del_flag = 0
LEFT JOIN wms_product p ON mc.item_type = 'product' AND mc.item_id = p.product_id AND p.del_flag = 0
LEFT JOIN wms_raw_material r ON mc.item_type = 'raw_material' AND mc.item_id = r.raw_material_id AND r.del_flag = 0
${ew.customSqlSegment}
</select>
<!-- 按仓库统计库存分布 -->
<select id="selectStockDistribution" resultType="com.klp.domain.vo.WmsStockVo">
SELECT
mc.warehouse_id AS warehouseId,
w.warehouse_name AS warehouseName,
COUNT(*) AS totalQuantity,
mc.item_type AS itemType,
mc.item_id AS itemId
FROM wms_material_coil mc
INNER JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id AND w.del_flag = 0
WHERE mc.item_type = #{itemType}
AND mc.item_id = #{itemId}
AND mc.del_flag = 0
AND mc.data_type = 1
GROUP BY mc.warehouse_id, w.warehouse_name, mc.item_type, mc.item_id
ORDER BY totalQuantity DESC
</select>
</mapper>