PDA拣货复核修改

This commit is contained in:
秦鸿展
2026-03-15 11:51:58 +08:00
parent 665c02b18a
commit 93b24f02d8
12 changed files with 229 additions and 37 deletions
@@ -220,6 +220,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
AND IFNULL(pmd.PICKING_QUANTITY, 0) > 0
</select>
<select id="selectOutUniqueIdsWithPickingByOutOrderNumber" resultType="java.lang.Long">
SELECT DISTINCT pmd.OUT_UNIQUE_ID
FROM picking_material_detail pmd
INNER JOIN out_material_detail omd ON pmd.OUT_UNIQUE_ID = omd.UNIQUE_ID AND omd.DEL_FLAG = 1
WHERE omd.OUT_ORDER_NUMBER = #{outOrderNumber}
AND pmd.DEL_FLAG = 1
AND IFNULL(pmd.PICKING_QUANTITY, 0) > 0
</select>
<update id="addQuantity" parameterType="com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDOByUpdate">
UPDATE picking_material_detail
<set>
@@ -228,24 +237,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHEN #{item.uniqueId} THEN LEAST(picking_quantity + #{item.pickingQuantity}, quantity)
</foreach>
</trim>
<!-- 净重、毛重、体积、面积:拣货填写值直接覆盖,不累加 -->
<trim prefix="total_net_weight = CASE unique_id" suffix="END,">
<foreach collection="pickingMaterialDetailList" item="item" index="index">
WHEN #{item.uniqueId} THEN IFNULL(total_net_weight, 0) + IFNULL(#{item.totalNetWeight}, 0)
WHEN #{item.uniqueId} THEN IFNULL(#{item.totalNetWeight}, total_net_weight)
</foreach>
</trim>
<trim prefix="total_gross_weight = CASE unique_id" suffix="END,">
<foreach collection="pickingMaterialDetailList" item="item" index="index">
WHEN #{item.uniqueId} THEN IFNULL(total_gross_weight, 0) + IFNULL(#{item.totalGrossWeight}, 0)
WHEN #{item.uniqueId} THEN IFNULL(#{item.totalGrossWeight}, total_gross_weight)
</foreach>
</trim>
<trim prefix="total_volume = CASE unique_id" suffix="END,">
<foreach collection="pickingMaterialDetailList" item="item" index="index">
WHEN #{item.uniqueId} THEN IFNULL(total_volume, 0) + IFNULL(#{item.totalVolume}, 0)
WHEN #{item.uniqueId} THEN IFNULL(#{item.totalVolume}, total_volume)
</foreach>
</trim>
<trim prefix="total_area = CASE unique_id" suffix="END,">
<foreach collection="pickingMaterialDetailList" item="item" index="index">
WHEN #{item.uniqueId} THEN IFNULL(total_area, 0) + IFNULL(#{item.totalArea}, 0)
WHEN #{item.uniqueId} THEN IFNULL(#{item.totalArea}, total_area)
</foreach>
</trim>
update_by = #{updateBy},
@@ -258,4 +268,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{item.uniqueId}
</foreach>
</update>
<!-- 复核提交时:先将该 out_unique_id 下所有行置0 -->
<update id="resetWeightVolumeByOutUniqueId">
UPDATE picking_material_detail SET total_net_weight = 0, total_gross_weight = 0, total_volume = 0, total_area = 0
WHERE out_unique_id = #{outUniqueId} AND del_flag = 1
</update>
<!-- 复核提交时:将第一行设为复核值,保证 queryTotalsByOutNumberAndBaseId 汇总正确(first 为达梦保留字,改用 first_row) -->
<update id="updateFirstRowWeightVolumeByOutUniqueId">
UPDATE picking_material_detail pmd
INNER JOIN (SELECT unique_id FROM picking_material_detail WHERE out_unique_id = #{outUniqueId} AND del_flag = 1 ORDER BY unique_id LIMIT 1) first_row ON pmd.unique_id = first_row.unique_id
SET pmd.total_net_weight = #{totalNetWeight}, pmd.total_gross_weight = #{totalGrossWeight}, pmd.total_volume = #{totalVolume}, pmd.total_area = #{totalArea},
pmd.update_by = #{updateBy}, pmd.update_by_name = #{updateByName}, pmd.update_time = #{updateTime}
WHERE pmd.out_unique_id = #{outUniqueId} AND pmd.del_flag = 1
</update>
</mapper>