From cb8290a3ecf4df70c9d95e7746c70829641f5a94 Mon Sep 17 00:00:00 2001 From: Alawn Date: Tue, 16 Jun 2026 14:51:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=8F=91=E9=80=81=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=95=88=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cap/etc/batch/BAT_GET_TIMER_CTL.XML | 46 ++++++++++++++++++---------- cap/etc/batch/BAT_SEND_TIMER_CTL.XML | 41 +++++++++++++++++-------- 2 files changed, 59 insertions(+), 28 deletions(-) diff --git a/cap/etc/batch/BAT_GET_TIMER_CTL.XML b/cap/etc/batch/BAT_GET_TIMER_CTL.XML index 551b170..a6f5b85 100644 --- a/cap/etc/batch/BAT_GET_TIMER_CTL.XML +++ b/cap/etc/batch/BAT_GET_TIMER_CTL.XML @@ -6,22 +6,36 @@ - SELECT SND_TIME OSND_TIME, TXN_CNL,DSK_NAM ODSK_NAM,ORD_DT OORD_DT,CORG_MERC_ID OCORG_MERC_ID,CORG_NO OCORG_NO,CORG_DSK_NO OCORG_DSK_NO - ,AC_DT OAC_DT,SND_DT OSND_DT,SND_TM OSND_TM,BAT_STS OBAT_STS,BAT_ORN_AMT OBAT_ORN_AMT,BAT_ORN_CNT OBAT_ORN_CNT, - BAT_TYP OBAT_TYP,CORG_FIL_NAM OCORG_FIL_NAM,SND_DT,SND_TM,MERC_ID OMERC_ID,TCORG_DSK_NO,'批量代发' RMK ,GET_TIME,CORG_JRN_NO - FROM CAPBATINF - where Corg_Dsk_No in (select Corg_Dsk_No from ( SELECT A.Corg_Dsk_No - FROM CAPBATINF A,CAPDSKINF B,CAPCUSINF C - WHERE (A.BAT_STS='1' OR A.BAT_STS='3') - AND A.ORD_DT > ? - AND A.CORG_NO =? - AND A.PRO_JRL = '0' - AND (SND_TIME<=?) - AND (A.GET_TIME <=? OR A.GET_TIME IS NULL) - AND A.DSK_NAM = B.DSK_NAM AND B.Customer_Id = C.Customer_Id - order by rank desc,nvl(a.GET_TIME,0) asc,A.SND_TIME asc ) - where ROWNUM = '1' ) - FOR UPDATE skip locked + SELECT SND_TIME OSND_TIME, TXN_CNL, DSK_NAM ODSK_NAM, ORD_DT OORD_DT, CORG_MERC_ID OCORG_MERC_ID, CORG_NO OCORG_NO, CORG_DSK_NO OCORG_DSK_NO, + AC_DT OAC_DT, SND_DT, SND_TM, BAT_STS OBAT_STS, BAT_ORN_AMT OBAT_ORN_AMT, BAT_ORN_CNT OBAT_ORN_CNT, BAT_TYP OBAT_TYP, + CORG_FIL_NAM OCORG_FIL_NAM, MERC_ID OMERC_ID, TCORG_DSK_NO, '批量代发' RMK, GET_TIME, CORG_JRN_NO + FROM CAPBATINF A + WHERE A.CORG_DSK_NO = ( + SELECT CORG_DSK_NO + FROM ( + SELECT CORG_DSK_NO, RAND_VAL + FROM ( + SELECT A.CORG_DSK_NO, C.rank, A.GET_TIME, A.SND_TIME, DBMS_RANDOM.VALUE AS RAND_VAL + FROM CAPBATINF A + INNER JOIN CAPDSKINF B ON A.DSK_NAM = B.DSK_NAM + INNER JOIN CAPCUSINF C ON B.Customer_Id = C.Customer_Id + WHERE A.BAT_STS IN ('1', '3') + AND A.ORD_DT > ? + AND A.CORG_NO = ? + AND A.PRO_JRL = '0' + AND A.SND_TIME <=? + AND (A.GET_TIME <=? OR A.GET_TIME IS NULL) + ORDER BY + C.rank DESC, + NVL(A.GET_TIME, 0) ASC, + A.SND_TIME ASC + ) TOP_20 + WHERE ROWNUM <= 20 + ORDER BY RAND_VAL + ) RANDOM_ORDER + WHERE ROWNUM = 1 + ) + FOR UPDATE SKIP LOCKED TOD_DT|CORG_NO|C_SND_TIME|C_GET_TIME| diff --git a/cap/etc/batch/BAT_SEND_TIMER_CTL.XML b/cap/etc/batch/BAT_SEND_TIMER_CTL.XML index 38e7a2b..af7e036 100644 --- a/cap/etc/batch/BAT_SEND_TIMER_CTL.XML +++ b/cap/etc/batch/BAT_SEND_TIMER_CTL.XML @@ -6,18 +6,35 @@ - select * from CAPBATINF - where Corg_Dsk_No in (select Corg_Dsk_No from ( SELECT A.Corg_Dsk_No - FROM CAPBATINF A,CAPDSKINF B,CAPCUSINF C - WHERE A.BAT_STS = '0' - AND A.ORD_DT > ? - AND A.PRO_JRL = '0' - AND (A.SND_TIME<=? OR A.SND_TIME IS NULL) - AND A.CORG_NO = ? - AND A.DSK_NAM = B.DSK_NAM AND B.Customer_Id = C.Customer_Id - order by rank desc,corg_dsk_no asc) - where ROWNUM = '1' ) - FOR UPDATE skip locked + SELECT * + FROM CAPBATINF A + WHERE A.CORG_DSK_NO = ( + SELECT CORG_DSK_NO + FROM ( + SELECT CORG_DSK_NO, RAND_VAL + FROM ( + SELECT + A.CORG_DSK_NO, + C.rank, + DBMS_RANDOM.VALUE AS RAND_VAL + FROM CAPBATINF A + INNER JOIN CAPDSKINF B ON A.DSK_NAM = B.DSK_NAM + INNER JOIN CAPCUSINF C ON B.Customer_Id = C.Customer_Id + WHERE A.BAT_STS = '0' + AND A.ORD_DT > ? + AND A.PRO_JRL = '0' + AND (A.SND_TIME <= ? OR A.SND_TIME IS NULL) + AND A.CORG_NO = ? + ORDER BY + C.rank DESC, + A.CORG_DSK_NO ASC + ) TOP_20 + WHERE ROWNUM <= 20 + ORDER BY RAND_VAL + ) RANDOM_ORDER + WHERE ROWNUM = 1 + ) + FOR UPDATE SKIP LOCKED TOD_DT|C_SND_TIME|CORG_NO|