From a5e75aabaef8ff2dffea466f750c17a486d50cfb Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期五, 30 五月 2025 09:33:07 +0800
Subject: [PATCH] 添加srm与U9订单数据的对比

---
 src/main/java/com/gs/xky/service/XkyService.java |  160 +++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 112 insertions(+), 48 deletions(-)

diff --git a/src/main/java/com/gs/xky/service/XkyService.java b/src/main/java/com/gs/xky/service/XkyService.java
index 732e6b3..0ec06d5 100644
--- a/src/main/java/com/gs/xky/service/XkyService.java
+++ b/src/main/java/com/gs/xky/service/XkyService.java
@@ -1,6 +1,9 @@
 package com.gs.xky.service;
 
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.gs.xky.config.ApiResponse;
 import com.gs.xky.config.BodyParam;
@@ -9,10 +12,10 @@
 import com.gs.xky.dto.BarcodeDeliveryNo;
 import com.gs.xky.dto.XkyDetail;
 import com.gs.xky.dto.XkyEntity;
-import com.gs.xky.entity.DeliveryNotice;
-import com.gs.xky.entity.DeliveryNoticeDetail;
-import com.gs.xky.entity.TblBarcodeInformation;
+import com.gs.xky.entity.*;
 import lombok.RequiredArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -24,81 +27,98 @@
 @RequiredArgsConstructor
 public class XkyService {
 
+    private static final Logger log = LoggerFactory.getLogger(XkyService.class);
     private final ApiService apiService;
-
-
     private final DeliveryNoticeService deliveryNoticeService;
 
     private final TblBarcodeInformationService barcodeInformationService;
     private final DeliveryNoticeDetailService deliveryNoticeDetailService;
 
+    private final MesInvItemArnService mesInvItemArnService;
+    private final MesInvItemArnDetailService mesInvItemArnDetailService;
+    private final MesInvItemBarcodesService mesInvItemBarcodesService;
+
+    private final MesQaItemsDetect01Service mesQaItemsDetect01Service;
+
     public void GetSaveDetail() throws IOException {
         long currentTimeMillis = System.currentTimeMillis();
+        long startDate = currentTimeMillis - (20 * 60 * 1000); // 璁$畻 20 鍒嗛挓鍓嶇殑鏃堕棿鎴�
 
-        XkyCommonParam param = XkyCommonParam.GetInit();
-
-        // 璁$畻浜斿垎閽熷墠鐨勬椂闂存埑
-        long startDate = currentTimeMillis - (65 * 60 * 1000); // 5 鍒嗛挓 = 5 * 60 * 1000 姣
-
-        // 鍒涘缓 BodyParam 瀵硅薄骞惰祴鍊�
+        XkyCommonParam<BodyParam> param = XkyCommonParam.GetInit();
         BodyParam bodyParam = new BodyParam();
         bodyParam.setStartDate(startDate);
         bodyParam.setEndDate(currentTimeMillis);
         bodyParam.setErpCode(DataAcquisitionConfiguration.TEST_ERP_CODE);
-        bodyParam.setStatus(new int[]{1});
-        bodyParam.setLogisticsStatus(2);
-
+        bodyParam.setStatus(new int[]{1, 6});
         param.setBody(bodyParam);
+
+        // 璁板綍璇锋眰鍙傛暟鏃ュ織
+        log.info("銆怗etSaveDetail 璇锋眰鍙傛暟銆戞椂闂�: {}, 鍙傛暟: {}", currentTimeMillis, JSONUtil.toJsonStr(param));
 
         ApiResponse<XkyEntity> noList = apiService.sendListRequest(param, XkyEntity.class, "https://openapi.xiekeyun.com/delivery/getNoList.json");
 
-//        List<String> deliveryNoList = noList.getDataList().stream().map(XkyEntity::getDeliveryNo).collect(Collectors.toList());
+        // 璁板綍杩斿洖鏁版嵁鏃ュ織
+        log.info("銆怗etSaveDetail 鍝嶅簲鏁版嵁銆戞椂闂�: {}, 杩斿洖: {}", currentTimeMillis, JSONUtil.toJsonStr(noList));
 
         List<XkyEntity> deliveryNoList = noList.getDataList();
-
-        LambdaUpdateWrapper<DeliveryNotice> deliveryNoticeWrapper = new LambdaUpdateWrapper<>();
-
-        LambdaUpdateWrapper<DeliveryNoticeDetail> updateWrapper = new LambdaUpdateWrapper<>();
-
-        LambdaUpdateWrapper<TblBarcodeInformation> updateWrapper1 = new LambdaUpdateWrapper<>();
+        if (CollUtil.isEmpty(deliveryNoList)) {
+            log.info("銆怗etSaveDetail銆戣繑鍥炲垪琛ㄤ负绌猴紝璺宠繃澶勭悊");
+            return;
+        }
 
         deliveryNoList.forEach(deliveryNo -> {
             try {
-
-                if ("4".equals(deliveryNo.getStatus()) || "8".equals(deliveryNo.getStatus())) {
-                    deliveryNoticeWrapper.clear();
-                    updateWrapper.clear();
-                    updateWrapper1.clear();
-                    deliveryNoticeWrapper.eq(DeliveryNotice::getDeliveryNo, deliveryNo.getDeliveryNo());
-
-                    DeliveryNotice one = deliveryNoticeService.getOne(deliveryNoticeWrapper, false);
-
-                    if (deliveryNoticeService.remove(deliveryNoticeWrapper)) {
-
-                        updateWrapper.eq(DeliveryNoticeDetail::getPid, one.getId());
-                        deliveryNoticeDetailService.remove(updateWrapper);
-
-                        updateWrapper1.eq(TblBarcodeInformation::getDeliveryNo, deliveryNo.getDeliveryNo());
-                        barcodeInformationService.remove(updateWrapper1);
+                if ("6".equals(deliveryNo.getStatus()) || "0".equals(deliveryNo.getLogisticsStatus())) {
+                    log.info("銆怗etSaveDetail銆戠Щ闄ら�佽揣鍗�: {}", deliveryNo.getDeliveryNo());
+                    remove1(deliveryNo);
+                } else if ("1".equals(deliveryNo.getStatus()) && ("2".equals(deliveryNo.getLogisticsStatus()) || "1".equals(deliveryNo.getLogisticsStatus()))) {
+                    XkyDetail detail = getDetail(deliveryNo.getDeliveryNo());
+                    deliveryNoticeService.saveDeliveryNotice(detail);
+                    List<BarcodeDeliveryNo> barcodeDeliveryNos = GetBarcodeInformation(deliveryNo.getDeliveryNo());
+                    barcodeInformationService.SaveBarcodeInformation(barcodeDeliveryNos, deliveryNo.getDeliveryNo());
+                    //宸查�佽揪鐨勬墠鑷姩杞崲涓篗ES鍒拌揣鍗�
+                    if ("2".equals(deliveryNo.getLogisticsStatus())) {
+                        deliveryNoticeService.callPdaReceiptBtn("閫佽揣鍗曠鏀禰BTNOK[PL017[" + deliveryNo.getDeliveryNo(), "");
                     }
-
-
                 }
-
-                XkyDetail detail = getDetail(deliveryNo.getDeliveryNo());
-                deliveryNoticeService.saveDeliveryNotice(detail);
-                List<BarcodeDeliveryNo> barcodeDeliveryNos = GetBarcodeInformation(deliveryNo.getDeliveryNo());
-                barcodeInformationService.SaveBarcodeInformation(barcodeDeliveryNos, deliveryNo.getDeliveryNo());
-
-                deliveryNoticeService.callPdaReceiptBtn("閫佽揣鍗曠鏀禰BTNOK[PL017[" + deliveryNo.getDeliveryNo(), "");
             } catch (IOException e) {
+                log.error("銆怗etSaveDetail 澶勭悊寮傚父銆戦�佽揣鍗�: {}, 寮傚父: {}", deliveryNo.getDeliveryNo(), e.getMessage(), e);
                 throw new RuntimeException(e);
             }
         });
     }
 
+    public void remove1(XkyEntity deliveryNo) {
+
+        //MesQaItemsDetect01涓嶮esInvItemArnDetail鐨勫叧鑱斿叧绯绘槸
+        //MesQaItemsDetect01.lotNo=MesInvItemArnDetail.billNo
+        //and MesQaItemsDetect01.item_id=MesInvItemArnDetail.item_id
+
+        //鎴戠幇鍦ㄥ笇鏈涗笉娓呯┖DeliveryNotice锛孌eliveryNoticeDetail锛孴blBarcodeInformation琛ㄧ殑鏁版嵁浜�
+        //杩樻湁MesInvItemArn锛孧esInvItemArnDetail锛孧esInvItemBarcodes琛ㄧ殑鏁版嵁
+        //鍙垹闄esQaItemsDetect01琛ㄧ殑鏁版嵁
+
+        LambdaQueryWrapper<MesInvItemArn> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(MesInvItemArn::getPaperBillNo, deliveryNo.getDeliveryNo());
+        MesInvItemArn mesInvItemArn = mesInvItemArnService.getOne(wrapper, false);
+
+        // 鍙湁褰撴壘鍒板搴旂殑MesInvItemArn璁板綍鏃舵墠鍒犻櫎MesQaItemsDetect01琛ㄧ殑鏁版嵁
+        if (mesInvItemArn != null) {
+            // 鏇存柊MesInvItemArn琛紝璁剧疆syncFlag=1锛宻yncMsg="SRM鎵嬪姩鍒犻櫎閫佽揣鍗�"
+            LambdaUpdateWrapper<MesInvItemArn> updateWrapper = new LambdaUpdateWrapper<>();
+            updateWrapper.eq(MesInvItemArn::getId, mesInvItemArn.getId())
+                    .set(MesInvItemArn::getSyncFlag, 1)
+                    .set(MesInvItemArn::getStatus, 1)
+                    .set(MesInvItemArn::getSyncMsg, "SRM鎵嬪姩鍒犻櫎閫佽揣鍗�");
+            mesInvItemArnService.update(updateWrapper);
+
+            // 鍒犻櫎MesQaItemsDetect01琛ㄧ殑鏁版嵁
+            mesQaItemsDetect01Service.removeQa(mesInvItemArn.getBillNo());
+        }
+    }
+
     private XkyDetail getDetail(String deliveryNo) throws IOException {
-        XkyCommonParam param = XkyCommonParam.GetInit();
+        XkyCommonParam<BodyParam> param = XkyCommonParam.GetInit();
 
         // 鍒涘缓 BodyParam 瀵硅薄骞惰祴鍊�
         BodyParam bodyParam = new BodyParam();
@@ -115,7 +135,7 @@
     }
 
     private List<BarcodeDeliveryNo> GetBarcodeInformation(String deliveryNo) throws IOException {
-        XkyCommonParam param = XkyCommonParam.GetInit();
+        XkyCommonParam<BodyParam> param = XkyCommonParam.GetInit();
 
         // 鍒涘缓 BodyParam 瀵硅薄骞惰祴鍊�
         BodyParam bodyParam = new BodyParam();
@@ -130,4 +150,48 @@
 
         return noList.getDataList();
     }
+
+    private void remove(XkyEntity deliveryNo) {
+        LambdaUpdateWrapper<DeliveryNotice> deliveryNoticeWrapper = new LambdaUpdateWrapper<>();
+
+        deliveryNoticeWrapper.eq(DeliveryNotice::getDeliveryNo, deliveryNo.getDeliveryNo());
+
+        DeliveryNotice one = deliveryNoticeService.getOne(deliveryNoticeWrapper, false);
+
+        if (deliveryNoticeService.remove(deliveryNoticeWrapper)) {
+
+            LambdaUpdateWrapper<DeliveryNoticeDetail> updateWrapper = new LambdaUpdateWrapper<>();
+
+            updateWrapper.eq(DeliveryNoticeDetail::getPid, one.getId());
+
+            deliveryNoticeDetailService.remove(updateWrapper);
+
+            LambdaUpdateWrapper<TblBarcodeInformation> updateWrapper1 = new LambdaUpdateWrapper<>();
+
+            updateWrapper1.eq(TblBarcodeInformation::getDeliveryNo, deliveryNo.getDeliveryNo());
+
+            barcodeInformationService.remove(updateWrapper1);
+
+            LambdaQueryWrapper<MesInvItemArn> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(MesInvItemArn::getPaperBillNo, deliveryNo.getDeliveryNo());
+
+            MesInvItemArn mesInvItemArn = mesInvItemArnService.getOne(wrapper, false);
+
+            mesInvItemArnService.remove(wrapper);
+
+            if (mesInvItemArn != null) {
+                LambdaUpdateWrapper<MesInvItemArnDetail> updateWrapper2 = new LambdaUpdateWrapper<>();
+
+                updateWrapper2.eq(MesInvItemArnDetail::getMid, mesInvItemArn.getId());
+                mesInvItemArnDetailService.remove(updateWrapper2);
+
+                LambdaUpdateWrapper<MesInvItemBarcodes> updateWrapper3 = new LambdaUpdateWrapper<>();
+
+                updateWrapper3.eq(MesInvItemBarcodes::getBillNo, mesInvItemArn.getBillNo());
+                mesInvItemBarcodesService.remove(updateWrapper3);
+
+                mesQaItemsDetect01Service.removeQa(mesInvItemArn.getBillNo());
+            }
+        }
+    }
 }

--
Gitblit v1.9.3