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 | 94 ++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 85 insertions(+), 9 deletions(-)
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index e49e71f..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,15 +74,24 @@
</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) <= 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 < DATEADD(s, -10, GETDATE()))
+ OR
+ (a.wrk_sts = 15 AND (
+ a.ove_mk = 'Y' OR
+ a.modi_time <= 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 < DATEADD(s, -10, GETDATE()))
+ ) OPTION (RECOMPILE)
</select>
- <select id="selectWrkMastWrkDetlMatnrBatch" resultMap="BaseResultMap">
+ <select id="selectWrkMastWrkDetl" resultMap="BaseResultMap">
select m.* from asr_wrk_mast m,asr_wrk_detl d
where 1=1
and m.wrk_no = d.wrk_no
@@ -91,13 +107,73 @@
</otherwise>
</choose>
<choose>
- <when test="grade != null and grade != ''">
- and d.brand = #{grade}
+ <when test="brand != null and brand != ''">
+ and d.brand = #{brand}
</when>
<otherwise>
and (d.brand IS NULL OR d.brand = '')
</otherwise>
</choose>
+ <choose>
+ <when test="standby1 != null and standby1 != ''">
+ and d.standby1 = #{standby1}
+ </when>
+ <otherwise>
+ and (d.standby1 IS NULL OR d.standby1 = '')
+ </otherwise>
+ </choose>
+ <choose>
+ <when test="standby2 != null and standby2 != ''">
+ and d.standby2 = #{standby2}
+ </when>
+ <otherwise>
+ and (d.standby2 IS NULL OR d.standby2 = '')
+ </otherwise>
+ </choose>
+ <choose>
+ <when test="standby3 != null and standby3 != ''">
+ and d.standby3 = #{standby3}
+ </when>
+ <otherwise>
+ and (d.standby3 IS NULL OR d.standby3 = '')
+ </otherwise>
+ </choose>
+ <choose>
+ <when test="boxType1 != null and boxType1 != ''">
+ and d.box_type1 = #{boxType1}
+ </when>
+ <otherwise>
+ and (d.box_type1 IS NULL OR d.box_type1 = '')
+ </otherwise>
+ </choose>
+ <choose>
+ <when test="boxType2 != null and boxType2 != ''">
+ and d.box_type2 = #{boxType2}
+ </when>
+ <otherwise>
+ and (d.box_type2 IS NULL OR d.box_type2 = '')
+ </otherwise>
+ </choose>
+ <choose>
+ <when test="boxType3 != null and boxType3 != ''">
+ and d.box_type3 = #{boxType3}
+ </when>
+ <otherwise>
+ and (d.box_type3 IS NULL OR d.box_type3 = '')
+ </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