From e9f2a48f3e8df3af26a270341e9ed1e5b79eda68 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期日, 11 五月 2025 18:15:06 +0800
Subject: [PATCH] 添加检验生成失败的补偿机制

---
 src/main/java/com/gs/xky/task/ScheduledTasks.java                    |   16 ++++-
 src/main/java/com/gs/xky/mapper/MesInvItemArnDetailMapper.java       |    4 +
 src/main/java/com/gs/xky/mapper/MesInvItemArnMapper.java             |    3 +
 src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java            |    8 ++
 src/main/java/com/gs/xky/service/Impl/MesInvItemArnServiceImpl.java  |    7 ++
 src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java |   36 +++++++++++-
 src/test/java/com/gs/xky/XkyApplicationTests.java                    |   28 +++++----
 src/main/resources/mapper/DeliveryNoticeMapper.xml                   |   12 ++++
 src/main/java/com/gs/xky/service/DeliveryNoticeService.java          |    7 ++
 src/main/resources/mapper/MesInvItemArnMapper.xml                    |   13 ++++
 src/main/java/com/gs/xky/service/MesInvItemArnService.java           |    3 +
 src/main/resources/mapper/MesInvItemArnDetailMapper.xml              |    6 ++
 src/main/resources/application.yml                                   |    2 
 13 files changed, 126 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java b/src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java
index 0028e2a..6d6a002 100644
--- a/src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java
+++ b/src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java
@@ -21,6 +21,14 @@
      * @param result 杈撳嚭鍙傛暟
      */
     void callPdaReceiptBtn(@Param("C_IN_STR") String inStr, @Param("C_RESULT") String result);
+
+    //PRC_MES_INV_ITEM_ARN_STATUS22
+    void callPrcMesInvItemArnStatus22(@Param("PI_FACTORY") String factory,
+                                      @Param("PI_COMPANY") String company,
+                                      @Param("P_USERCODE") String userCode,
+                                      @Param("P_ID") Long id,
+                                      @Param("PO_RESULT") Integer poResult,
+                                      @Param("PO_TEXT") String poText);
 }
 
 
diff --git a/src/main/java/com/gs/xky/mapper/MesInvItemArnDetailMapper.java b/src/main/java/com/gs/xky/mapper/MesInvItemArnDetailMapper.java
index fa58444..09a6676 100644
--- a/src/main/java/com/gs/xky/mapper/MesInvItemArnDetailMapper.java
+++ b/src/main/java/com/gs/xky/mapper/MesInvItemArnDetailMapper.java
@@ -2,6 +2,9 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.gs.xky.entity.MesInvItemArnDetail;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @author 28567
@@ -11,6 +14,7 @@
  */
 public interface MesInvItemArnDetailMapper extends BaseMapper<MesInvItemArnDetail> {
 
+    List<MesInvItemArnDetail> selectListByMid(@Param("mid") String mid);
 }
 
 
diff --git a/src/main/java/com/gs/xky/mapper/MesInvItemArnMapper.java b/src/main/java/com/gs/xky/mapper/MesInvItemArnMapper.java
index 14cd385..a75e635 100644
--- a/src/main/java/com/gs/xky/mapper/MesInvItemArnMapper.java
+++ b/src/main/java/com/gs/xky/mapper/MesInvItemArnMapper.java
@@ -3,6 +3,8 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.gs.xky.entity.MesInvItemArn;
 
+import java.util.List;
+
 /**
  * @author 28567
  * @description 閽堝琛ㄣ�怣ES_INV_ITEM_ARN(鐗╂枡鍏ュ簱涓昏〃)銆戠殑鏁版嵁搴撴搷浣淢apper
@@ -11,6 +13,7 @@
  */
 public interface MesInvItemArnMapper extends BaseMapper<MesInvItemArn> {
 
+    List<MesInvItemArn> selectItemArnMinus();
 }
 
 
diff --git a/src/main/java/com/gs/xky/service/DeliveryNoticeService.java b/src/main/java/com/gs/xky/service/DeliveryNoticeService.java
index e123ddc..e14b875 100644
--- a/src/main/java/com/gs/xky/service/DeliveryNoticeService.java
+++ b/src/main/java/com/gs/xky/service/DeliveryNoticeService.java
@@ -3,6 +3,9 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.gs.xky.dto.XkyDetail;
 import com.gs.xky.entity.DeliveryNotice;
+import com.gs.xky.entity.MesInvItemArn;
+
+import java.util.List;
 
 /**
  * @author 28567
@@ -15,4 +18,8 @@
 
 
     void callPdaReceiptBtn(String inStr, String result);
+
+    Integer processMesInvItemArnStatus(String factory, String company, String userCode, Long id);
+
+    void processMesInvItemArnStatusAsync(List<MesInvItemArn> itemArnMinus);
 }
diff --git a/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java b/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java
index 22fd36d..01c0d13 100644
--- a/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java
+++ b/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java
@@ -10,9 +10,11 @@
 import com.gs.xky.dto.XkyDetail;
 import com.gs.xky.entity.DeliveryNotice;
 import com.gs.xky.entity.DeliveryNoticeDetail;
+import com.gs.xky.entity.MesInvItemArn;
 import com.gs.xky.mapper.DeliveryNoticeMapper;
 import com.gs.xky.service.DeliveryNoticeDetailService;
 import com.gs.xky.service.DeliveryNoticeService;
+import com.gs.xky.service.MesInvItemArnService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -33,6 +35,8 @@
         implements DeliveryNoticeService {
 
     private final DeliveryNoticeDetailService detailService;
+
+    private final MesInvItemArnService invItemArnService;
 
 
     @Override
@@ -92,8 +96,34 @@
     public void callPdaReceiptBtn(String inStr, String result) {
         baseMapper.callPdaReceiptBtn(inStr, result);
     }
-}
+
+    @Override
+    public Integer processMesInvItemArnStatus(String factory, String company, String userCode, Long id) {
+        Integer poResult = 1;
+        String poText = "";
+
+        // 璋冪敤瀛樺偍杩囩▼
+        baseMapper.callPrcMesInvItemArnStatus22(factory, company, userCode, id, poResult, poText);
+
+        // 杩斿洖缁撴灉
+        return poResult;
+    }
+
+    //
 
 
-
-
+    @Override
+    public void processMesInvItemArnStatusAsync(List<MesInvItemArn> itemArnMinus) {
+        // 閬嶅巻姣忎釜 itemArn
+        itemArnMinus.forEach(itemArn -> {
+            try {
+                // 澶勭悊姣忎釜 itemArn
+                processMesInvItemArnStatus("1000", "1000", "PL017", itemArn.getId());
+            } catch (Exception e) {
+                // 澶勭悊寮傚父锛屼緥濡傝褰曟棩蹇�
+                System.err.println("Error processing itemArn: " + itemArn.getId());
+                e.printStackTrace();
+            }
+        });
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/gs/xky/service/Impl/MesInvItemArnServiceImpl.java b/src/main/java/com/gs/xky/service/Impl/MesInvItemArnServiceImpl.java
index f323c3f..bb0b0c0 100644
--- a/src/main/java/com/gs/xky/service/Impl/MesInvItemArnServiceImpl.java
+++ b/src/main/java/com/gs/xky/service/Impl/MesInvItemArnServiceImpl.java
@@ -6,6 +6,8 @@
 import com.gs.xky.service.MesInvItemArnService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @author 28567
  * @description 閽堝琛ㄣ�怣ES_INV_ITEM_ARN(鐗╂枡鍏ュ簱涓昏〃)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
@@ -15,6 +17,11 @@
 public class MesInvItemArnServiceImpl extends ServiceImpl<MesInvItemArnMapper, MesInvItemArn>
         implements MesInvItemArnService {
 
+
+    @Override
+    public List<MesInvItemArn> getItemArnMinus() {
+        return baseMapper.selectItemArnMinus();
+    }
 }
 
 
diff --git a/src/main/java/com/gs/xky/service/MesInvItemArnService.java b/src/main/java/com/gs/xky/service/MesInvItemArnService.java
index e0f2b64..71fa207 100644
--- a/src/main/java/com/gs/xky/service/MesInvItemArnService.java
+++ b/src/main/java/com/gs/xky/service/MesInvItemArnService.java
@@ -3,6 +3,8 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.gs.xky.entity.MesInvItemArn;
 
+import java.util.List;
+
 /**
  * @author 28567
  * @description 閽堝琛ㄣ�怣ES_INV_ITEM_ARN(鐗╂枡鍏ュ簱涓昏〃)銆戠殑鏁版嵁搴撴搷浣淪ervice
@@ -10,4 +12,5 @@
  */
 public interface MesInvItemArnService extends IService<MesInvItemArn> {
 
+    List<MesInvItemArn> getItemArnMinus();
 }
diff --git a/src/main/java/com/gs/xky/task/ScheduledTasks.java b/src/main/java/com/gs/xky/task/ScheduledTasks.java
index 410dee3..60e53f9 100644
--- a/src/main/java/com/gs/xky/task/ScheduledTasks.java
+++ b/src/main/java/com/gs/xky/task/ScheduledTasks.java
@@ -5,9 +5,8 @@
 import com.gs.xky.config.DingTalkParam;
 import com.gs.xky.config.DingTalkResponse;
 import com.gs.xky.dto.EmployeeInfo;
-import com.gs.xky.service.ApiService;
-import com.gs.xky.service.MesStaffService;
-import com.gs.xky.service.XkyService;
+import com.gs.xky.entity.MesInvItemArn;
+import com.gs.xky.service.*;
 import lombok.RequiredArgsConstructor;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
@@ -26,6 +25,10 @@
 
     private final MesStaffService staffService;
 
+    private final DeliveryNoticeService deliveryNoticeService;
+
+    private final MesInvItemArnService invItemArnService;
+
     /**
      * 姣忎簲鍒嗛挓鎵ц涓�娆�
      * 鑾峰彇璁惧鏈�杩戠殑涓�鏉¤褰�
@@ -40,6 +43,13 @@
         xkyService.GetSaveDetail();
     }
 
+    @Scheduled(cron = "10 3,8,13,18,23,28,33,38,43,48,53,58 * * * ?")
+    public void compensateMethod() throws IOException {
+        // 琛ュ伩閫昏緫
+        List<MesInvItemArn> itemArnMinus = invItemArnService.getItemArnMinus();
+        deliveryNoticeService.processMesInvItemArnStatusAsync(itemArnMinus);
+    }
+
     @Scheduled(cron = "0 0/53 * * * ?")
     public void getDinTalkData() throws IOException {
         DingTalkParam dingTalkParam = new DingTalkParam(1);
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 23d7f85..25dad16 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -5,7 +5,7 @@
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     driver-class-name: oracle.jdbc.OracleDriver
-    url: jdbc:oracle:thin:@122.226.249.238:5936/ORCL
+    url: jdbc:oracle:thin:@192.168.1.104:1521/ORCL
     username: zmz_prd
     password: zmzprd
     druid:
diff --git a/src/main/resources/mapper/DeliveryNoticeMapper.xml b/src/main/resources/mapper/DeliveryNoticeMapper.xml
index a4c2215..9628047 100644
--- a/src/main/resources/mapper/DeliveryNoticeMapper.xml
+++ b/src/main/resources/mapper/DeliveryNoticeMapper.xml
@@ -4,6 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.gs.xky.mapper.DeliveryNoticeMapper">
 
+
     <select id="getNextVal" resultType="java.lang.Long">
         SELECT SEQ_XKY.NEXTVAL
         FROM DUAL
@@ -16,4 +17,15 @@
                 #{C_RESULT, mode=OUT, jdbcType=VARCHAR}
               )}
     </select>
+
+    <select id="callPrcMesInvItemArnStatus22" statementType="CALLABLE" resultType="java.lang.String">
+        {call PRC_MES_INV_ITEM_ARN_STATUS22(
+                #{PI_FACTORY, mode=IN, jdbcType=VARCHAR},
+                #{PI_COMPANY, mode=IN, jdbcType=VARCHAR},
+                #{P_USERCODE, mode=IN, jdbcType=VARCHAR},
+                #{P_ID, mode=IN, jdbcType=NUMERIC},
+                #{PO_RESULT, mode=OUT, jdbcType=NUMERIC},
+                #{PO_TEXT, mode=OUT, jdbcType=VARCHAR}
+              )}
+    </select>
 </mapper>
diff --git a/src/main/resources/mapper/MesInvItemArnDetailMapper.xml b/src/main/resources/mapper/MesInvItemArnDetailMapper.xml
index bad7565..48ea5e1 100644
--- a/src/main/resources/mapper/MesInvItemArnDetailMapper.xml
+++ b/src/main/resources/mapper/MesInvItemArnDetailMapper.xml
@@ -4,4 +4,10 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.gs.xky.mapper.MesInvItemArnDetailMapper">
 
+    <select id="selectListByMid" resultType="com.gs.xky.entity.MesInvItemArnDetail">
+        SELECT EBELN, WORK_LINE, ITEM_NO, ITEM_ID, ID
+        FROM mes_inv_item_arn_detail
+        WHERE MID = #{mid}
+        GROUP BY EBELN, WORK_LINE, ITEM_NO, ITEM_ID, ID
+    </select>
 </mapper>
diff --git a/src/main/resources/mapper/MesInvItemArnMapper.xml b/src/main/resources/mapper/MesInvItemArnMapper.xml
index 43a618c..5c29da2 100644
--- a/src/main/resources/mapper/MesInvItemArnMapper.xml
+++ b/src/main/resources/mapper/MesInvItemArnMapper.xml
@@ -4,4 +4,17 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.gs.xky.mapper.MesInvItemArnMapper">
 
+    <select id="selectItemArnMinus" resultType="com.gs.xky.entity.MesInvItemArn">
+        select *
+        from mes_inv_item_arn
+        where BILL_NO in (select BILL_NO
+                          from (select b.BILL_NO
+                                from mes_inv_item_arn_detail a
+                                         left join mes_inv_item_arn b on a.mid = b.id
+                                where a.check_states = '寰呮')
+                          minus
+                          select LOT_NO
+                          from MES_QA_ITEMS_DETECT_01)
+          and FSTATUS = 1
+    </select>
 </mapper>
diff --git a/src/test/java/com/gs/xky/XkyApplicationTests.java b/src/test/java/com/gs/xky/XkyApplicationTests.java
index 5b77922..35d4455 100644
--- a/src/test/java/com/gs/xky/XkyApplicationTests.java
+++ b/src/test/java/com/gs/xky/XkyApplicationTests.java
@@ -1,13 +1,12 @@
 package com.gs.xky;
 
-import com.alibaba.fastjson2.JSON;
 import com.gs.xky.config.ApiResponse;
 import com.gs.xky.config.BodyParam;
 import com.gs.xky.config.DataAcquisitionConfiguration;
 import com.gs.xky.config.XkyCommonParam;
 import com.gs.xky.dto.BarcodeDeliveryNo;
-import com.gs.xky.dto.LineList;
 import com.gs.xky.dto.XkyDetail;
+import com.gs.xky.entity.MesInvItemArn;
 import com.gs.xky.service.*;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -15,7 +14,6 @@
 
 import java.io.IOException;
 import java.util.List;
-import java.util.stream.Collectors;
 
 @SpringBootTest
 class XkyApplicationTests {
@@ -36,10 +34,16 @@
     @Autowired
     private TblBarcodeInformationService barcodeInformationService;
 
+    @Autowired
+    private MesInvItemArnService invItemArnService;
+
     @Test
     void contextLoads() throws IOException {
 
-//        xkyService.GetSaveDetail();
+        List<MesInvItemArn> itemArnMinus = invItemArnService.getItemArnMinus();
+
+        deliveryNoticeService.processMesInvItemArnStatusAsync(itemArnMinus);
+
     }
 
     @Test
@@ -50,7 +54,7 @@
         BodyParam bodyParam = new BodyParam();
 
         bodyParam.setErpCode(DataAcquisitionConfiguration.TEST_ERP_CODE);
-        bodyParam.setDeliveryNo("222504146397");
+        bodyParam.setDeliveryNo("222504279H65");
         bodyParam.setStatus(new int[]{1, 6});
 
         param.setBody(bodyParam);
@@ -58,13 +62,13 @@
         ApiResponse<XkyDetail> detail = apiService.sendListRequest(param, XkyDetail.class, "https://openapi.xiekeyun.com/delivery/getDetail.json");
 
         XkyDetail deliveryNo = detail.getData();
-        List<LineList> collect = deliveryNo.getLineList().stream().filter(s -> "1".equals(s.getStatus())).collect(Collectors.toList());
-        System.out.println(JSON.toJSONString(collect));
-//        deliveryNoticeService.saveDeliveryNotice(deliveryNo);
-//        List<BarcodeDeliveryNo> barcodeDeliveryNos = GetBarcodeInformation(deliveryNo.getDeliveryNo());
-//        barcodeInformationService.SaveBarcodeInformation(barcodeDeliveryNos, deliveryNo.getDeliveryNo());
-//
-//        deliveryNoticeService.callPdaReceiptBtn("閫佽揣鍗曠鏀禰BTNOK[PL017[" + deliveryNo.getDeliveryNo(), "");
+//        List<LineList> collect = deliveryNo.getLineList().stream().filter(s -> "1".equals(s.getStatus())).collect(Collectors.toList());
+//        System.out.println(JSON.toJSONString(collect));
+        deliveryNoticeService.saveDeliveryNotice(deliveryNo);
+        List<BarcodeDeliveryNo> barcodeDeliveryNos = GetBarcodeInformation(deliveryNo.getDeliveryNo());
+        barcodeInformationService.SaveBarcodeInformation(barcodeDeliveryNos, deliveryNo.getDeliveryNo());
+
+        deliveryNoticeService.callPdaReceiptBtn("閫佽揣鍗曠鏀禰BTNOK[PL017[" + deliveryNo.getDeliveryNo(), "");
     }
 
     private List<BarcodeDeliveryNo> GetBarcodeInformation(String deliveryNo) throws IOException {

--
Gitblit v1.9.3