Browse Source

齐套修改

master
常熟吴彦祖 3 months ago
parent
commit
57bbca9954
  1. 141
      src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml
  2. 9
      src/main/resources/mapper/notify/NewIssureMapper.xml
  3. 14
      src/main/resources/mapper/warehouse/PalletMapper.xml

141
src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml

@ -159,10 +159,11 @@
</select> </select>
<!-- 获取栈板明细 - AI制作 --> <!-- 获取栈板明细 - AI制作 -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="getPalletDetails" resultType="java.util.Map"> <select id="getPalletDetails" resultType="java.util.Map">
SELECT a.site, a.pallet_id as palletId, a.position, a.layer, a.serial_no as serialNo, a.part_no as partNo, SELECT a.site, a.pallet_id as palletId, a.position, a.layer, a.serial_no as serialNo, a.part_no as partNo,
a.create_date as createDate, a.create_by as createBy a.create_date as createDate, a.create_by as createBy
FROM pallet_detail a
FROM pallet_detail a WITH (NOLOCK)
WHERE a.site = #{site} AND a.pallet_id = #{palletId} WHERE a.site = #{site} AND a.pallet_id = #{palletId}
<if test="position != null and position != ''"> <if test="position != null and position != ''">
AND a.position = #{position} AND a.position = #{position}
@ -181,17 +182,20 @@
WHERE a.site = #{site} AND a.pallet_id = #{palletId} WHERE a.site = #{site} AND a.pallet_id = #{palletId}
</select> </select>
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="getPalletTypeInfoByPallet" resultType="PalletType"> <select id="getPalletTypeInfoByPallet" resultType="PalletType">
select b.site,b.pallet_type,b.type_desc,b.active,b.remark,b.pallet_family,b.wcs_pallet_type,b.wcs_base_pallet_type,b.wcs_auto_sort,
SELECT b.site, b.pallet_type, b.type_desc, b.active, b.remark, b.pallet_family, b.wcs_pallet_type, b.wcs_base_pallet_type, b.wcs_auto_sort,
b.wcs_sore_type, b.max_layer b.wcs_sore_type, b.max_layer
from pallet a left join pallet_type b on a.pallet_type=b.pallet_type and a.site=b.site
where a.pallet_id=#{palletId} and a.site=#{site}
FROM pallet a WITH (NOLOCK)
LEFT JOIN pallet_type b WITH (NOLOCK) ON a.pallet_type = b.pallet_type AND a.site = b.site
WHERE a.pallet_id = #{palletId} AND a.site = #{site}
</select> </select>
<!-- 根据位置获取层数 - AI制作 --> <!-- 根据位置获取层数 - AI制作 -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="getLayersByPosition" resultType="java.lang.Integer"> <select id="getLayersByPosition" resultType="java.lang.Integer">
SELECT DISTINCT layer SELECT DISTINCT layer
FROM pallet_detail
FROM pallet_detail WITH (NOLOCK)
WHERE site = #{site} AND pallet_id = #{palletId} AND position = #{position} WHERE site = #{site} AND pallet_id = #{palletId} AND position = #{position}
ORDER BY layer ORDER BY layer
</select> </select>
@ -214,9 +218,10 @@
</select> </select>
<!-- 获取栈板指定层的明细统计 - AI制作 --> <!-- 获取栈板指定层的明细统计 - AI制作 -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="getPalletLayerStatistics" resultType="java.util.Map"> <select id="getPalletLayerStatistics" resultType="java.util.Map">
SELECT position, COUNT(1) as count SELECT position, COUNT(1) as count
FROM pallet_detail
FROM pallet_detail WITH (NOLOCK)
WHERE site = #{site} AND pallet_id = #{palletId} AND layer = #{layer} WHERE site = #{site} AND pallet_id = #{palletId} AND layer = #{layer}
GROUP BY position GROUP BY position
</select> </select>
@ -250,10 +255,11 @@
</if> </if>
</select> </select>
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="getNowStation" resultType="AgvStation"> <select id="getNowStation" resultType="AgvStation">
SELECT TOP 1 b.station_code, b.location_code, b.warehouse_code SELECT TOP 1 b.station_code, b.location_code, b.warehouse_code
FROM pallet a
LEFT JOIN agv_station b ON a.location_code = b.station_code
FROM pallet a WITH (NOLOCK)
LEFT JOIN agv_station b WITH (NOLOCK) ON a.location_code = b.station_code
WHERE a.site = #{site} AND a.pallet_id = #{palletId} AND a.is_deleted = '0' WHERE a.site = #{site} AND a.pallet_id = #{palletId} AND a.is_deleted = '0'
</select> </select>
@ -324,9 +330,10 @@
</insert> </insert>
<!-- 获取指定位置已占用的层数(排除指定标签) - AI制作 --> <!-- 获取指定位置已占用的层数(排除指定标签) - AI制作 -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="getOccupiedLayersExcludeSerial" resultType="java.lang.Integer"> <select id="getOccupiedLayersExcludeSerial" resultType="java.lang.Integer">
SELECT DISTINCT layer SELECT DISTINCT layer
FROM pallet_detail
FROM pallet_detail WITH (NOLOCK)
WHERE site = #{site} WHERE site = #{site}
AND pallet_id = #{palletId} AND pallet_id = #{palletId}
AND position = #{position} AND position = #{position}
@ -370,9 +377,10 @@
</update> </update>
<!-- 检查栈板是否正在被调用 - AI制作 --> <!-- 检查栈板是否正在被调用 - AI制作 -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="checkPalletCallingFlag" resultType="java.lang.String"> <select id="checkPalletCallingFlag" resultType="java.lang.String">
SELECT calling_flag SELECT calling_flag
FROM pallet
FROM pallet WITH (NOLOCK)
WHERE site = #{site} AND pallet_id = #{palletId} AND is_deleted = '0' WHERE site = #{site} AND pallet_id = #{palletId} AND is_deleted = '0'
</select> </select>
@ -419,9 +427,10 @@
</select> </select>
<!-- 统计栈板明细数量 - AI制作 --> <!-- 统计栈板明细数量 - AI制作 -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="countPalletDetails" resultType="java.lang.Integer"> <select id="countPalletDetails" resultType="java.lang.Integer">
SELECT COUNT(1) SELECT COUNT(1)
FROM pallet_detail
FROM pallet_detail WITH (NOLOCK)
WHERE site = #{site} AND pallet_id = #{palletId} WHERE site = #{site} AND pallet_id = #{palletId}
</select> </select>
@ -523,28 +532,29 @@
</insert> </insert>
<!-- 检查站点是否有栈板 - AI制作 --> <!-- 检查站点是否有栈板 - AI制作 -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="checkStationHasPallet" resultType="java.lang.Integer"> <select id="checkStationHasPallet" resultType="java.lang.Integer">
SELECT COUNT(1) SELECT COUNT(1)
FROM pallet
FROM pallet WITH (NOLOCK)
WHERE site = #{site} WHERE site = #{site}
AND location_code = #{stationCode} AND location_code = #{stationCode}
AND is_deleted = '0' AND is_deleted = '0'
</select> </select>
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="getPalletDataByStation" resultType="PalletData"> <select id="getPalletDataByStation" resultType="PalletData">
SELECT TOP 1 pallet_id, location_code, status, pallet_family, pallet_type SELECT TOP 1 pallet_id, location_code, status, pallet_family, pallet_type
FROM pallet
FROM pallet WITH (NOLOCK)
WHERE site = #{site} WHERE site = #{site}
AND location_code = #{stationCode} AND location_code = #{stationCode}
</select> </select>
<!-- 获取站点的栈板ID - AI制作 --> <!-- 获取站点的栈板ID - AI制作 -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="getPalletIdByStation" resultType="java.lang.String"> <select id="getPalletIdByStation" resultType="java.lang.String">
SELECT TOP 1 pallet_id SELECT TOP 1 pallet_id
FROM pallet
FROM pallet WITH (NOLOCK)
WHERE site = #{site} WHERE site = #{site}
AND location_code = #{stationCode} AND location_code = #{stationCode}
AND is_deleted = '0' AND is_deleted = '0'
</select> </select>
<!-- 根据ID查询运输任务 - AI制作 --> <!-- 根据ID查询运输任务 - AI制作 -->
@ -655,16 +665,17 @@
AND wcs_flag = 0 AND wcs_flag = 0
</update> </update>
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="getPalletDetailsNewDetail" resultType="PalletDetailData"> <select id="getPalletDetailsNewDetail" resultType="PalletDetailData">
select a.site,a.pallet_id,a.[position],a.layer,a.serial_no,a.part_no,a.create_date,a.create_by,a.wcs_flag,
b.part_desc,b.qty,b.batch_no,b.wdr,c.weight,b.length,b.width,c.height,c.is_robot_pick,um_id,b.height as realHeight
,c.is_commonly_used, CONVERT(varchar(10),isnull( isnull(b.manufacture_date,b.receive_date),getdate()), 23) manufactureDateStr
,b.reserve_flag
from pallet_detail a
left join handling_unit b on a.site=b.site and a.serial_no=b.unit_id
left join part_attribute c on a.site=c.site and a.part_no=c.part_no
where a.site=#{site} and a.pallet_id=#{palletId}
and a.wcs_flag = 1
SELECT a.site, a.pallet_id, a.[position], a.layer, a.serial_no, a.part_no, a.create_date, a.create_by, a.wcs_flag,
b.part_desc, b.qty, b.batch_no, b.wdr, c.weight, b.length, b.width, c.height, c.is_robot_pick, um_id, b.height as realHeight,
c.is_commonly_used, CONVERT(varchar(10), ISNULL(ISNULL(b.manufacture_date, b.receive_date), GETDATE()), 23) manufactureDateStr,
b.reserve_flag
FROM pallet_detail a WITH (NOLOCK)
LEFT JOIN handling_unit b WITH (NOLOCK) ON a.site = b.site AND a.serial_no = b.unit_id
LEFT JOIN part_attribute c WITH (NOLOCK) ON a.site = c.site AND a.part_no = c.part_no
WHERE a.site = #{site} AND a.pallet_id = #{palletId}
AND a.wcs_flag = 1
</select> </select>
<update id="updateSOIssueNotifyOrderMaterialListDetailOutWcsFlag"> <update id="updateSOIssueNotifyOrderMaterialListDetailOutWcsFlag">
WITH RankedRecords AS ( WITH RankedRecords AS (
@ -1031,9 +1042,13 @@
AND status = #{oldStatus} AND status = #{oldStatus}
</update> </update>
<!-- 优化:添加 WITH (ROWLOCK) 避免锁升级导致死锁 - rqrq -->
<update id="updatePalletWcsLocation" > <update id="updatePalletWcsLocation" >
update pallet set wcs_location = #{location},updated_by='wms_sys',updated_time=getdate()
where site = #{site} and pallet_id = #{palletId}
UPDATE pallet WITH (ROWLOCK)
SET wcs_location = #{location},
updated_by = 'wms_sys',
updated_time = GETDATE()
WHERE site = #{site} AND pallet_id = #{palletId}
</update> </update>
<!-- 更新WCS回调任务重试次数 - AI制作 --> <!-- 更新WCS回调任务重试次数 - AI制作 -->
@ -1229,9 +1244,10 @@
</update> </update>
<!-- 获取指定层已占用的位置列表 - rqrq --> <!-- 获取指定层已占用的位置列表 - rqrq -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="getOccupiedPositionsByLayer" resultType="java.lang.String"> <select id="getOccupiedPositionsByLayer" resultType="java.lang.String">
SELECT DISTINCT position SELECT DISTINCT position
FROM pallet_detail
FROM pallet_detail WITH (NOLOCK)
WHERE site = #{site} WHERE site = #{site}
AND pallet_id = #{palletId} AND pallet_id = #{palletId}
AND layer = #{layer} AND layer = #{layer}
@ -1267,13 +1283,14 @@
<!-- ==================== 栈板换站相关SQL - rqrq ==================== --> <!-- ==================== 栈板换站相关SQL - rqrq ==================== -->
<!-- rqrq - 检查栈板calling_flag并获取当前站点信息 --> <!-- rqrq - 检查栈板calling_flag并获取当前站点信息 -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="checkPalletForChangeStation" resultType="CheckPalletResult"> <select id="checkPalletForChangeStation" resultType="CheckPalletResult">
SELECT SELECT
p.calling_flag AS callingFlag, p.calling_flag AS callingFlag,
s.station_id AS currentStationId, s.station_id AS currentStationId,
s.station_code AS currentStationCode s.station_code AS currentStationCode
FROM pallet p
LEFT JOIN agv_station s ON p.location_code = s.station_code
FROM pallet p WITH (NOLOCK)
LEFT JOIN agv_station s WITH (NOLOCK) ON p.location_code = s.station_code
WHERE p.site = #{site} WHERE p.site = #{site}
AND p.pallet_id = #{palletId} AND p.pallet_id = #{palletId}
AND p.is_deleted = '0' AND p.is_deleted = '0'
@ -1322,20 +1339,20 @@
<!-- ==================== 手工移动托盘相关SQL - rqrq ==================== --> <!-- ==================== 手工移动托盘相关SQL - rqrq ==================== -->
<!-- rqrq - 检查托盘是否可以手工移动 --> <!-- rqrq - 检查托盘是否可以手工移动 -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="checkPalletForManualMove" resultType="CheckPalletResult"> <select id="checkPalletForManualMove" resultType="CheckPalletResult">
SELECT SELECT
p.calling_flag AS callingFlag, p.calling_flag AS callingFlag,
p.location_code AS currentStationCode, p.location_code AS currentStationCode,
s.station_type AS stationType, s.station_type AS stationType,
s.station_id as currentStationId,
p.empty_flag as isEmpty ,
s.station_id AS currentStationId,
p.empty_flag AS isEmpty,
CASE CASE
WHEN p.location_code IS NULL THEN 'Y' WHEN p.location_code IS NULL THEN 'Y'
ELSE 'N' ELSE 'N'
END AS canOperate END AS canOperate
FROM pallet p
LEFT JOIN agv_station s ON p.location_code = s.station_code
FROM pallet p WITH (NOLOCK)
LEFT JOIN agv_station s WITH (NOLOCK) ON p.location_code = s.station_code
WHERE p.site = #{site} WHERE p.site = #{site}
AND p.pallet_id = #{palletId} AND p.pallet_id = #{palletId}
AND p.is_deleted = '0' AND p.is_deleted = '0'
@ -1384,6 +1401,7 @@
<!-- ==================== 空托盘组盘相关SQL - rqrq ==================== --> <!-- ==================== 空托盘组盘相关SQL - rqrq ==================== -->
<!-- rqrq - 检查托盘是否为空托盘 --> <!-- rqrq - 检查托盘是否为空托盘 -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="checkEmptyPallet" resultType="CheckPalletResult"> <select id="checkEmptyPallet" resultType="CheckPalletResult">
SELECT SELECT
p.pallet_id AS palletId, p.pallet_id AS palletId,
@ -1393,16 +1411,15 @@
s.station_id AS currentStationId, s.station_id AS currentStationId,
CASE CASE
WHEN EXISTS ( WHEN EXISTS (
SELECT 1 FROM pallet_detail pd
SELECT 1 FROM pallet_detail pd WITH (NOLOCK)
WHERE pd.site = p.site WHERE pd.site = p.site
AND pd.pallet_id = p.pallet_id AND pd.pallet_id = p.pallet_id
) )
THEN 'N' THEN 'N'
ELSE 'Y' ELSE 'Y'
END AS isEmpty END AS isEmpty
FROM pallet p
LEFT JOIN agv_station s ON p.location_code = s.station_code
FROM pallet p WITH (NOLOCK)
LEFT JOIN agv_station s WITH (NOLOCK) ON p.location_code = s.station_code
WHERE p.site = #{site} WHERE p.site = #{site}
AND p.pallet_id = #{palletId} AND p.pallet_id = #{palletId}
AND p.is_deleted = '0' AND p.is_deleted = '0'
@ -1453,37 +1470,40 @@
<!-- ==================== 取消WCS组盘相关SQL - rqrq ==================== --> <!-- ==================== 取消WCS组盘相关SQL - rqrq ==================== -->
<!-- rqrq - 检查栈板WCS组盘状态 --> <!-- rqrq - 检查栈板WCS组盘状态 -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="checkPalletWcsStatus" resultType="CheckPalletResult"> <select id="checkPalletWcsStatus" resultType="CheckPalletResult">
SELECT SELECT
p.pallet_id AS palletId, p.pallet_id AS palletId,
p.calling_flag AS callingFlag, p.calling_flag AS callingFlag,
CASE CASE
WHEN EXISTS ( WHEN EXISTS (
SELECT 1 FROM pallet_detail pd
SELECT 1 FROM pallet_detail pd WITH (NOLOCK)
WHERE pd.site = #{site} AND pd.pallet_id = #{palletId} AND pd.wcs_flag = 0 WHERE pd.site = #{site} AND pd.pallet_id = #{palletId} AND pd.wcs_flag = 0
) THEN 'Y' ) THEN 'Y'
ELSE 'N' ELSE 'N'
END AS canOperate, -- 借用canOperate字段存储hasSentWcsTask END AS canOperate, -- 借用canOperate字段存储hasSentWcsTask
CASE CASE
WHEN EXISTS ( WHEN EXISTS (
SELECT 1 FROM pallet_detail pd
SELECT 1 FROM pallet_detail pd WITH (NOLOCK)
WHERE pd.site = #{site} AND pd.pallet_id = #{palletId} WHERE pd.site = #{site} AND pd.pallet_id = #{palletId}
) THEN 'Y' ) THEN 'Y'
ELSE 'N' ELSE 'N'
END AS isEmpty -- 借用isEmpty字段存储hasDetail END AS isEmpty -- 借用isEmpty字段存储hasDetail
FROM pallet p
FROM pallet p WITH (NOLOCK)
WHERE p.site = #{site} AND p.pallet_id = #{palletId} AND p.is_deleted = '0' WHERE p.site = #{site} AND p.pallet_id = #{palletId} AND p.is_deleted = '0'
</select> </select>
<!-- rqrq - 检查栈板是否有wcs_flag=0的明细 --> <!-- rqrq - 检查栈板是否有wcs_flag=0的明细 -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="countPalletDetailWithWcsFlagZero" resultType="int"> <select id="countPalletDetailWithWcsFlagZero" resultType="int">
SELECT COUNT(1) SELECT COUNT(1)
FROM pallet_detail
FROM pallet_detail WITH (NOLOCK)
WHERE site = #{site} AND pallet_id = #{palletId} AND wcs_flag = 0 WHERE site = #{site} AND pallet_id = #{palletId} AND wcs_flag = 0
</select> </select>
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="countPalletDetailWithWcsFlagOne" resultType="int"> <select id="countPalletDetailWithWcsFlagOne" resultType="int">
SELECT COUNT(1) SELECT COUNT(1)
FROM pallet_detail
FROM pallet_detail WITH (NOLOCK)
WHERE site = #{site} AND pallet_id = #{palletId} AND wcs_flag = 1 WHERE site = #{site} AND pallet_id = #{palletId} AND wcs_flag = 1
</select> </select>
@ -1518,6 +1538,7 @@
<!-- ==================== 预约取托盘相关SQL - rqrq ==================== --> <!-- ==================== 预约取托盘相关SQL - rqrq ==================== -->
<!-- rqrq - 查询空托盘区可用的空托盘 --> <!-- rqrq - 查询空托盘区可用的空托盘 -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="findAvailableEmptyPallet" resultType="Pallet"> <select id="findAvailableEmptyPallet" resultType="Pallet">
SELECT TOP 1 SELECT TOP 1
p.id, p.id,
@ -1540,9 +1561,9 @@
p.sore_type AS soreType, p.sore_type AS soreType,
p.auto_sort AS autoSort, p.auto_sort AS autoSort,
p.empty_flag AS emptyFlag p.empty_flag AS emptyFlag
FROM pallet p
INNER JOIN agv_station s ON p.location_code = s.station_code
left join pallet_detail c on p.pallet_id=c.pallet_id and p.site=c.site
FROM pallet p WITH (NOLOCK)
INNER JOIN agv_station s WITH (NOLOCK) ON p.location_code = s.station_code
LEFT JOIN pallet_detail c WITH (NOLOCK) ON p.pallet_id = c.pallet_id AND p.site = c.site
WHERE p.site = #{site} WHERE p.site = #{site}
AND p.pallet_type = #{palletType} AND p.pallet_type = #{palletType}
AND p.calling_flag = 'N' AND p.calling_flag = 'N'
@ -1550,11 +1571,12 @@
AND s.area_type = 'Z101' AND s.area_type = 'Z101'
AND s.status_db = 1 AND s.status_db = 1
AND s.active = 'Y' AND s.active = 'Y'
and c.id IS NULL
AND c.id IS NULL
ORDER BY p.created_time ASC ORDER BY p.created_time ASC
</select> </select>
<!-- rqrq - 检查指定托盘是否就绪 --> <!-- rqrq - 检查指定托盘是否就绪 -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="checkPalletReady" resultType="Pallet"> <select id="checkPalletReady" resultType="Pallet">
SELECT SELECT
p.id, p.id,
@ -1577,10 +1599,10 @@
p.sore_type AS soreType, p.sore_type AS soreType,
p.auto_sort AS autoSort, p.auto_sort AS autoSort,
p.empty_flag AS emptyFlag, p.empty_flag AS emptyFlag,
s.status_db as statusDb,
s.area_type as areaId
FROM pallet p
INNER JOIN agv_station s ON p.location_code = s.station_code
s.status_db AS statusDb,
s.area_type AS areaId
FROM pallet p WITH (NOLOCK)
INNER JOIN agv_station s WITH (NOLOCK) ON p.location_code = s.station_code
WHERE p.site = #{site} WHERE p.site = #{site}
AND p.pallet_id = #{palletId} AND p.pallet_id = #{palletId}
AND p.calling_flag = 'N' AND p.calling_flag = 'N'
@ -1718,9 +1740,10 @@
</select> </select>
<!-- rqrq - 根据序列号列表查询栈板ID列表(去重) --> <!-- rqrq - 根据序列号列表查询栈板ID列表(去重) -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="getPalletIdsBySerialNos" resultType="String"> <select id="getPalletIdsBySerialNos" resultType="String">
SELECT DISTINCT pallet_id SELECT DISTINCT pallet_id
FROM pallet_detail
FROM pallet_detail WITH (NOLOCK)
WHERE site = #{site} WHERE site = #{site}
<if test="serialNoList != null and serialNoList.size() > 0"> <if test="serialNoList != null and serialNoList.size() > 0">
AND serial_no IN AND serial_no IN
@ -1746,30 +1769,30 @@
FROM wms_transport_task FROM wms_transport_task
WHERE site = #{site} WHERE site = #{site}
AND pallet_id = #{palletId} AND pallet_id = #{palletId}
AND status != '已完成'
AND status != '已取消'
AND status IN ('已创建', '已下达', '执行中', '已预约')
ORDER BY created_time DESC ORDER BY created_time DESC
</select> </select>
<!-- rqrq - 检查栈板是否放满(根据pallet_type_area的点位数和max_layer判断) --> <!-- rqrq - 检查栈板是否放满(根据pallet_type_area的点位数和max_layer判断) -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="checkPalletIsFull" resultType="int"> <select id="checkPalletIsFull" resultType="int">
WITH PalletInfo AS ( WITH PalletInfo AS (
-- 获取栈板类型和最大层数 - rqrq -- 获取栈板类型和最大层数 - rqrq
SELECT p.pallet_type, pt.max_layer SELECT p.pallet_type, pt.max_layer
FROM pallet p
INNER JOIN pallet_type pt ON p.site = pt.site AND p.pallet_type = pt.pallet_type
FROM pallet p WITH (NOLOCK)
INNER JOIN pallet_type pt WITH (NOLOCK) ON p.site = pt.site AND p.pallet_type = pt.pallet_type
WHERE p.site = #{site} AND p.pallet_id = #{palletId} WHERE p.site = #{site} AND p.pallet_id = #{palletId}
), ),
PositionCount AS ( PositionCount AS (
-- 获取该类型栈板的点位数 - rqrq -- 获取该类型栈板的点位数 - rqrq
SELECT COUNT(1) AS position_count SELECT COUNT(1) AS position_count
FROM pallet_type_area pta
FROM pallet_type_area pta WITH (NOLOCK)
INNER JOIN PalletInfo pi ON pta.site = #{site} AND pta.pallet_type = pi.pallet_type INNER JOIN PalletInfo pi ON pta.site = #{site} AND pta.pallet_type = pi.pallet_type
), ),
DetailCount AS ( DetailCount AS (
-- 获取栈板已使用的明细数量 - rqrq -- 获取栈板已使用的明细数量 - rqrq
SELECT COUNT(1) AS detail_count SELECT COUNT(1) AS detail_count
FROM pallet_detail
FROM pallet_detail WITH (NOLOCK)
WHERE site = #{site} AND pallet_id = #{palletId} WHERE site = #{site} AND pallet_id = #{palletId}
), ),
MaxCapacity AS ( MaxCapacity AS (

9
src/main/resources/mapper/notify/NewIssureMapper.xml

@ -185,9 +185,10 @@
</select> </select>
<!-- rqrq - 根据条码列表查询所有栈板ID --> <!-- rqrq - 根据条码列表查询所有栈板ID -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="getPalletIdsBySerialNos" resultType="java.lang.String"> <select id="getPalletIdsBySerialNos" resultType="java.lang.String">
SELECT DISTINCT pd.pallet_id SELECT DISTINCT pd.pallet_id
FROM pallet_detail pd
FROM pallet_detail pd WITH (NOLOCK)
WHERE pd.site = #{site} WHERE pd.site = #{site}
AND pd.serial_no IN AND pd.serial_no IN
<foreach collection="serialNos" item="serialNo" open="(" separator="," close=")"> <foreach collection="serialNos" item="serialNo" open="(" separator="," close=")">
@ -196,9 +197,10 @@
</select> </select>
<!-- rqrq - 检查栈板的calling_flag --> <!-- rqrq - 检查栈板的calling_flag -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="checkCallingFlagByPalletIds" resultType="java.lang.String"> <select id="checkCallingFlagByPalletIds" resultType="java.lang.String">
SELECT pallet_id SELECT pallet_id
FROM pallet
FROM pallet WITH (NOLOCK)
WHERE site = #{site} WHERE site = #{site}
AND pallet_id IN AND pallet_id IN
<foreach collection="palletIds" item="palletId" open="(" separator="," close=")"> <foreach collection="palletIds" item="palletId" open="(" separator="," close=")">
@ -341,9 +343,10 @@
</update> </update>
<!-- rqrq - 根据栈板ID和序列号列表查询栈板明细信息 --> <!-- rqrq - 根据栈板ID和序列号列表查询栈板明细信息 -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="getPalletDetailsByPalletAndSerials" resultType="com.gaotao.modules.automatedWarehouse.entity.PalletDetail"> <select id="getPalletDetailsByPalletAndSerials" resultType="com.gaotao.modules.automatedWarehouse.entity.PalletDetail">
SELECT position, layer, serial_no as serialNo SELECT position, layer, serial_no as serialNo
FROM pallet_detail
FROM pallet_detail WITH (NOLOCK)
WHERE site = #{site} WHERE site = #{site}
AND pallet_id = #{palletId} AND pallet_id = #{palletId}
AND serial_no IN AND serial_no IN

14
src/main/resources/mapper/warehouse/PalletMapper.xml

@ -4,6 +4,7 @@
<mapper namespace="com.gaotao.modules.warehouse.dao.PalletMapper"> <mapper namespace="com.gaotao.modules.warehouse.dao.PalletMapper">
<!-- rqrq - 查询托盘列表(关联pallet_type和pallet_family表) --> <!-- rqrq - 查询托盘列表(关联pallet_type和pallet_family表) -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="selectPalletList" resultType="PalletData"> <select id="selectPalletList" resultType="PalletData">
SELECT SELECT
p.id, p.id,
@ -34,9 +35,9 @@
pt.max_layer as maxLayer, pt.max_layer as maxLayer,
pt.active as active, pt.active as active,
pf.pallet_family_desc as palletFamilyDesc pf.pallet_family_desc as palletFamilyDesc
FROM pallet p
LEFT JOIN pallet_type pt ON p.site = pt.site AND p.pallet_type = pt.pallet_type
LEFT JOIN pallet_family pf ON p.site = pf.site AND p.pallet_family = pf.pallet_family
FROM pallet p WITH (NOLOCK)
LEFT JOIN pallet_type pt WITH (NOLOCK) ON p.site = pt.site AND p.pallet_type = pt.pallet_type
LEFT JOIN pallet_family pf WITH (NOLOCK) ON p.site = pf.site AND p.pallet_family = pf.pallet_family
<where> <where>
<if test="query.site != null and query.site != ''"> <if test="query.site != null and query.site != ''">
AND p.site = #{query.site} AND p.site = #{query.site}
@ -67,6 +68,7 @@
</select> </select>
<!-- rqrq - 根据托盘ID查询托盘信息(关联pallet_type和pallet_family表) --> <!-- rqrq - 根据托盘ID查询托盘信息(关联pallet_type和pallet_family表) -->
<!-- 优化:添加 WITH (NOLOCK) 避免死锁 - rqrq -->
<select id="selectPalletByPalletId" resultType="PalletData"> <select id="selectPalletByPalletId" resultType="PalletData">
SELECT SELECT
p.id, p.id,
@ -97,9 +99,9 @@
pt.max_layer as maxLayer, pt.max_layer as maxLayer,
pt.active as active, pt.active as active,
pf.pallet_family_desc as palletFamilyDesc pf.pallet_family_desc as palletFamilyDesc
FROM pallet p
LEFT JOIN pallet_type pt ON p.site = pt.site AND p.pallet_type = pt.pallet_type
LEFT JOIN pallet_family pf ON p.site = pf.site AND p.pallet_family = pf.pallet_family
FROM pallet p WITH (NOLOCK)
LEFT JOIN pallet_type pt WITH (NOLOCK) ON p.site = pt.site AND p.pallet_type = pt.pallet_type
LEFT JOIN pallet_family pf WITH (NOLOCK) ON p.site = pf.site AND p.pallet_family = pf.pallet_family
WHERE p.pallet_id = #{palletId} WHERE p.pallet_id = #{palletId}
</select> </select>

Loading…
Cancel
Save