feat: 支持按箱号展开可用库存子卷

This commit is contained in:
zhouz
2026-07-22 14:36:21 +08:00
parent eb35c99966
commit 1fcc152dca
9 changed files with 246 additions and 8 deletions

View File

@@ -2,11 +2,62 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.code.nl.module.wms.dal.mysql.iostorinvdtl.IostorinvDtlMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
<sql id="availableInventoryColumns">
gp.vehicle_code AS vehicle_code,
gp.pcsn AS pcsn,
gp.material_id AS material_id,
gp.material_code AS material_code,
mb.material_name AS material_name,
gp.qty - gp.frozen_qty AS available_qty,
gp.qty_unit_id AS qty_unit_id,
gp.qty_unit_name AS qty_unit_name,
gp.ext_code AS ext_code,
gp.ext_type AS ext_type,
gp.ext_dtl_code AS ext_dtl_code,
sa.stor_id AS stor_id,
sa.stor_code AS stor_code,
sa.stor_name AS stor_name
</sql>
</mapper>
<select id="selectAvailableInventoryPage"
resultType="cn.code.nl.module.wms.controller.admin.iostorinv.vo.AvailableInventoryRespVO">
SELECT <include refid="availableInventoryColumns"/>
FROM wms_group_plate gp
INNER JOIN wms_structattr sa ON sa.storagevehicle_code = gp.vehicle_code
LEFT JOIN base_materialbase mb ON mb.material_id = gp.material_id AND mb.is_deleted = 0
WHERE sa.stor_id = #{reqVO.storId}
AND gp.status = '可用'
AND gp.qty - gp.frozen_qty &gt; 0
AND gp.is_deleted = 0
AND sa.is_deleted = 0
<if test="reqVO.materialCode != null and reqVO.materialCode != ''">
AND gp.material_code LIKE CONCAT('%', #{reqVO.materialCode}, '%')
</if>
<if test="reqVO.vehicleCode != null and reqVO.vehicleCode != ''">
AND gp.vehicle_code LIKE CONCAT('%', #{reqVO.vehicleCode}, '%')
</if>
<if test="reqVO.pcsn != null and reqVO.pcsn != ''">
AND gp.pcsn LIKE CONCAT('%', #{reqVO.pcsn}, '%')
</if>
ORDER BY gp.vehicle_code, gp.group_id
</select>
<select id="selectAvailableInventoryByVehicleCodes"
resultType="cn.code.nl.module.wms.controller.admin.iostorinv.vo.AvailableInventoryRespVO">
SELECT <include refid="availableInventoryColumns"/>
FROM wms_group_plate gp
INNER JOIN wms_structattr sa ON sa.storagevehicle_code = gp.vehicle_code
LEFT JOIN base_materialbase mb ON mb.material_id = gp.material_id AND mb.is_deleted = 0
WHERE sa.stor_id = #{storId}
AND gp.status = '可用'
AND gp.qty - gp.frozen_qty &gt; 0
AND gp.is_deleted = 0
AND sa.is_deleted = 0
AND gp.vehicle_code IN
<foreach collection="vehicleCodes" item="vehicleCode" open="(" separator="," close=")">
#{vehicleCode}
</foreach>
ORDER BY gp.vehicle_code, gp.group_id
</select>
</mapper>