Files
huachuang/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/iostorinvdtl/CuttingProcessService.xml
2026-08-15 10:12:29 +08:00

213 lines
8.6 KiB
XML

<?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="cn.code.nl.module.wms.dal.mysql.iostorinvdtl.IostorinvDtlMapper">
<sql id="availableInventoryColumns">
gp.group_id AS group_id,
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 - COALESCE(gp.frozen_qty, 0) 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>
<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 (
SELECT stor_id, storagevehicle_code, MAX(stor_code) AS stor_code, MAX(stor_name) AS stor_name
FROM wms_structattr
WHERE deleted = 0
GROUP BY stor_id, storagevehicle_code
) sa ON sa.storagevehicle_code = gp.vehicle_code
LEFT JOIN base_materialbase mb ON mb.material_id = gp.material_id AND mb.deleted = 0
WHERE sa.stor_id = #{reqVO.storId}
AND gp.status = '02'
AND gp.qty - COALESCE(gp.frozen_qty, 0) &gt; 0
AND gp.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 (
SELECT stor_id, storagevehicle_code, MAX(stor_code) AS stor_code, MAX(stor_name) AS stor_name
FROM wms_structattr
WHERE deleted = 0
GROUP BY stor_id, storagevehicle_code
) sa ON sa.storagevehicle_code = gp.vehicle_code
LEFT JOIN base_materialbase mb ON mb.material_id = gp.material_id AND mb.deleted = 0
WHERE sa.stor_id = #{storId}
AND gp.status = '02'
AND gp.qty - COALESCE(gp.frozen_qty, 0) &gt; 0
AND gp.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>
<select id="selectAvailableInventoryByVehicleCodesForUpdate"
resultType="cn.code.nl.module.wms.controller.admin.iostorinv.vo.AvailableInventoryRespVO">
SELECT <include refid="availableInventoryColumns"/>
FROM wms_group_plate gp
INNER JOIN (
SELECT stor_id, storagevehicle_code, MAX(stor_code) AS stor_code, MAX(stor_name) AS stor_name
FROM wms_structattr
WHERE deleted = 0
GROUP BY stor_id, storagevehicle_code
) sa ON sa.storagevehicle_code = gp.vehicle_code
LEFT JOIN base_materialbase mb ON mb.material_id = gp.material_id AND mb.deleted = 0
WHERE sa.stor_id = #{storId}
AND gp.status = '02'
AND gp.qty - COALESCE(gp.frozen_qty, 0) &gt; 0
AND gp.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
FOR UPDATE
</select>
<select id="selectEditDetails"
resultType="cn.code.nl.module.wms.controller.admin.iostorinv.vo.IostorInvDetailRespVO">
SELECT d.iostorinvdtl_id,
d.seq_no,
d.bill_status,
d.assign_qty,
d.unassign_qty,
d.material_code,
d.material_id,
mb.material_name,
d.pcsn,
d.plan_qty,
d.qty_unit_id,
d.source_bill_code,
d.source_bill_type,
d.source_billdtl_id,
d.source_load_port AS vehicle_code,
d.remark
FROM wms_iostorinvdtl d
LEFT JOIN base_materialbase mb
ON mb.material_id = d.material_id
WHERE d.iostorinv_id = #{iostorinvId}
ORDER BY d.seq_no, d.iostorinvdtl_id
</select>
<select id="selectAllocationInventoryForUpdate"
resultType="cn.code.nl.module.wms.controller.admin.iostorinv.vo.AllocationInventoryRespVO">
SELECT gp.group_id,
gp.vehicle_code,
gp.material_id,
gp.material_code,
gp.pcsn,
gp.qty - COALESCE(gp.frozen_qty, 0) AS available_qty,
gp.qty_unit_id,
gp.qty_unit_name,
sa.sect_id,
sa.sect_code,
sa.sect_name,
sa.struct_id,
sa.struct_code,
sa.struct_name
FROM wms_group_plate gp
INNER JOIN wms_structattr sa
ON sa.storagevehicle_code = gp.vehicle_code
AND sa.deleted = 0
WHERE gp.deleted = 0
AND gp.status = '02'
AND gp.qty - COALESCE(gp.frozen_qty, 0) &gt; 0
AND sa.stor_id = #{storId}
AND (sa.lock_type IS NULL OR sa.lock_type IN ('0', '1'))
<if test="sectId != null and sectId != ''">
AND sa.sect_id = #{sectId}
</if>
AND gp.material_id = #{materialId}
<choose>
<when test="pcsn != null and pcsn != ''">AND gp.pcsn = #{pcsn}</when>
<otherwise>AND (gp.pcsn IS NULL OR gp.pcsn = '')</otherwise>
</choose>
<choose>
<when test="sourceBillCode != null and sourceBillCode != ''">AND gp.ext_code = #{sourceBillCode}</when>
<otherwise>AND (gp.ext_code IS NULL OR gp.ext_code = '')</otherwise>
</choose>
ORDER BY gp.create_time, gp.group_id
FOR UPDATE
</select>
<select id="selectManualAllocationInventory"
resultType="cn.code.nl.module.wms.controller.admin.iostorinv.vo.AllocationInventoryRespVO">
SELECT gp.group_id,
gp.vehicle_code,
gp.material_id,
gp.material_code,
mb.material_name,
gp.pcsn,
gp.qty - COALESCE(gp.frozen_qty, 0) AS available_qty,
gp.qty_unit_id,
gp.qty_unit_name,
sa.sect_id,
sa.sect_code,
sa.sect_name,
sa.struct_id,
sa.struct_code,
sa.struct_name
FROM wms_group_plate gp
INNER JOIN wms_structattr sa
ON sa.storagevehicle_code = gp.vehicle_code
AND sa.deleted = 0
LEFT JOIN base_materialbase mb
ON mb.material_id = gp.material_id
AND mb.deleted = 0
WHERE gp.deleted = 0
AND gp.status = '02'
AND gp.qty - COALESCE(gp.frozen_qty, 0) &gt; 0
AND sa.stor_id = #{storId}
AND (sa.lock_type IS NULL OR sa.lock_type IN ('0', '1'))
AND gp.material_id = #{materialId}
<if test="sectId != null and sectId != ''">
AND sa.sect_id = #{sectId}
</if>
<choose>
<when test="pcsn != null and pcsn != ''">AND gp.pcsn = #{pcsn}</when>
<otherwise>AND (gp.pcsn IS NULL OR gp.pcsn = '')</otherwise>
</choose>
<choose>
<when test="sourceBillCode != null and sourceBillCode != ''">AND gp.ext_code = #{sourceBillCode}</when>
<otherwise>AND (gp.ext_code IS NULL OR gp.ext_code = '')</otherwise>
</choose>
<if test="groupIds != null and !groupIds.isEmpty()">
AND gp.group_id IN
<foreach collection="groupIds" item="groupId" open="(" separator="," close=")">
#{groupId}
</foreach>
</if>
ORDER BY gp.vehicle_code, gp.group_id
<if test="forUpdate">FOR UPDATE</if>
</select>
</mapper>