From b1012d23b8ae65e45902900c687bf68f39840ac2 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 17 十一月 2025 09:24:37 +0800
Subject: [PATCH] 高并发下库位抢占导致的数据错乱

---
 src/main/resources/mapper/WrkMastMapper.xml |   40 ++++++++++++++++++++++++++++++++++------
 1 files changed, 34 insertions(+), 6 deletions(-)

diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index b99fd2d..1267aba 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -60,6 +60,13 @@
         <result column="full_plt" property="fullPlt" />
         <result column="pre_have" property="preHave" />
         <result column="take_none" property="takeNone" />
+        <result column="rgv_no" property="rgvNo" />
+        <result column="rgv_ssta_no" property="rgvSstaNo" />
+        <result column="rgv_dsta_no" property="rgvDstaNo" />
+        <result column="rgv_create_time" property="rgvCreateTime" />
+        <result column="rgv_finish_time" property="rgvFinishTime" />
+        <result column="work_no_other" property="workNoOther" />
+        <result column="Pdc_type" property="pdcType" />
     </resultMap>
 
     <select id="selectToBeCompleteData" resultMap="BaseResultMap">
@@ -67,12 +74,21 @@
     </select>
 
     <select id="selectToBeHistoryData" resultMap="BaseResultMap">
-        select * from asr_wrk_mast
-        where wrk_sts=5
-        or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))
-        or (wrk_sts=15 and dateadd(mi,15,crn_end_time) &lt;= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
-        or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp))
-        order by io_time,wrk_no asc
+        SELECT a.*
+        FROM asr_wrk_mast a
+        LEFT JOIN asr_bas_devp b ON a.wrk_no = b.wrk_no
+        WHERE b.wrk_no IS NULL
+        AND (
+        (a.wrk_sts = 5 AND a.modi_time &lt; DATEADD(s, -10, GETDATE()))
+        OR
+        (a.wrk_sts = 15 AND (
+        a.ove_mk = 'Y' OR
+        a.modi_time &lt;= DATEADD(s, -10, GETDATE()) OR
+        a.crn_end_time IS NULL
+        ))
+        OR
+        (a.wrk_sts = 54 AND a.io_type = 120 AND a.modi_time &lt; DATEADD(s, -10, GETDATE()))
+        ) OPTION (RECOMPILE)
     </select>
 
     <select id="selectWrkMastWrkDetl" resultMap="BaseResultMap">
@@ -147,5 +163,17 @@
             </otherwise>
         </choose>
     </select>
+    <select id="selectLastInEmptyLoc" resultType="com.zy.asrs.entity.WrkMast">
+        select wrk_no wrkNo,ctn_type ctnType,Pdc_type pdcType,loc_no locNo from asr_wrk_mast where sta_no = 1050 and wrk_sts in(2,9,10) order by io_time desc
+    </select>
+    <select id="selectInGzxCount" resultType="java.lang.Integer">
+       select
+	     count(*)
+       from
+	     asr_wrk_mast m
+       where
+	     m.sta_no = #{site}
+	   and (m.whs_type is null or EXISTS (select 1 from asr_bas_devp d where d.wrk_no = m.wrk_no))
+    </select>
 
 </mapper>

--
Gitblit v1.9.1