From b54eecf57118f38f0e3ddcdce8c2b9412a47bf7e Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期五, 04 七月 2025 23:43:31 +0800
Subject: [PATCH] 添加赋值订单号为空的情况

---
 src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java |  113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 113 insertions(+), 0 deletions(-)

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 3b53c96..6e76e81 100644
--- a/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java
+++ b/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java
@@ -100,6 +100,27 @@
     }
 
     @Override
+    public Object[] callPdaReceiptBtn1(String deliveryNo, String userid) {
+        // 鍒涘缓鐢ㄤ簬鎺ユ敹杈撳嚭鍙傛暟鐨勫彉閲�
+        Integer res = null;
+        String msg = null;
+
+        try {
+            // 璋冪敤瀛樺偍杩囩▼
+            baseMapper.callPdaReceiptBtn1(deliveryNo, userid, res, msg);
+
+            log.info("璋冪敤瀛樺偍杩囩▼PRC_RF_PDA_RECEIPT_BTN_test001鎴愬姛: 閫佽揣鍗曞彿={}, 鐢ㄦ埛ID={}, 缁撴灉鐮�={}, 娑堟伅={}",
+                    deliveryNo, userid, res, msg);
+
+            return new Object[]{res, msg};
+        } catch (Exception e) {
+            log.error("璋冪敤瀛樺偍杩囩▼PRC_RF_PDA_RECEIPT_BTN_test001澶辫触: 閫佽揣鍗曞彿={}, 鐢ㄦ埛ID={}, 寮傚父={}",
+                    deliveryNo, userid, e.getMessage(), e);
+            throw e;
+        }
+    }
+
+    @Override
     public Integer processMesInvItemArnStatus(String factory, String company, String userCode, Long id) {
         Integer poResult = 1;
         String poText = "";
@@ -154,6 +175,98 @@
         log.info("銆恜rocessAsyncBatch銆戝紓姝ュ鐞唟}鏉℃暟鎹畬鎴�", batchItems.size());
     }
 
+    @Override
+    public boolean setDeliveryNotice() {
+        LambdaQueryWrapper<DeliveryNoticeDetail> nullPoErpNoWrapper = new LambdaQueryWrapper<>();
+        nullPoErpNoWrapper.isNull(DeliveryNoticeDetail::getPoErpNo);
+        nullPoErpNoWrapper.orderByAsc(DeliveryNoticeDetail::getPid, DeliveryNoticeDetail::getLineNo);
+
+        List<DeliveryNoticeDetail> nullPoErpNoList = detailService.list(nullPoErpNoWrapper);
+
+        if (CollUtil.isEmpty(nullPoErpNoList)) {
+            log.info("娌℃湁鎵惧埌闇�瑕佹洿鏂扮殑PO_ERP_NO涓簄ull鐨勮褰�");
+            return true;
+        }
+
+        log.info("鎵惧埌{}鏉O_ERP_NO涓簄ull鐨勮褰曢渶瑕佹洿鏂�", nullPoErpNoList.size());
+
+        int updatedCount = 0;
+
+        for (DeliveryNoticeDetail nullRecord : nullPoErpNoList) {
+            Integer currentLineNo;
+            try {
+                currentLineNo = Integer.parseInt(nullRecord.getLineNo());
+
+                // 濡傛灉LINE_NO涓�1锛岃烦杩囪繖鏉¤褰曪紝缁х画澶勭悊涓嬩竴鏉�
+                if (currentLineNo == 1) {
+                    log.info("璺宠繃LINE_NO涓�1鐨勮褰�: ID={}, 缁х画澶勭悊鍏朵粬璁板綍", nullRecord.getId());
+                    continue;
+                }
+
+            } catch (NumberFormatException e) {
+                log.warn("鏃犳硶瑙f瀽LINE_NO涓烘暟瀛�: {}, 璺宠繃杩欐潯璁板綍", nullRecord.getLineNo());
+                continue;
+            }
+
+            // 鑾峰彇鍚屼竴PID涓嬫墍鏈夎褰�
+            LambdaQueryWrapper<DeliveryNoticeDetail> sameParentWrapper = new LambdaQueryWrapper<>();
+            sameParentWrapper.eq(DeliveryNoticeDetail::getPid, nullRecord.getPid());
+
+            List<DeliveryNoticeDetail> allRecords = detailService.list(sameParentWrapper);
+
+            // 鎸塋INE_NO椤哄簭渚濇鍚戝墠鏌ユ壘绗竴涓狿O_ERP_NO涓嶄负null鐨勮褰�
+            DeliveryNoticeDetail nearestRecord = null;
+
+            // 浠庡綋鍓峀INE_NO-1寮�濮嬪悜鍓嶆煡鎵�
+            for (int searchLineNo = currentLineNo - 1; searchLineNo >= 1; searchLineNo--) {
+                for (DeliveryNoticeDetail candidate : allRecords) {
+                    try {
+                        Integer candidateLineNo = Integer.parseInt(candidate.getLineNo());
+                        if (candidateLineNo.equals(searchLineNo) && StrUtil.isNotEmpty(candidate.getPoErpNo())) {
+                            nearestRecord = candidate;
+                            break;
+                        }
+                    } catch (NumberFormatException e) {
+                        log.warn("鏃犳硶瑙f瀽鍊欓�夎褰昄INE_NO涓烘暟瀛�: {}", candidate.getLineNo());
+                    }
+                }
+                // 濡傛灉鎵惧埌浜嗗氨璺冲嚭澶栧眰寰幆
+                if (nearestRecord != null) {
+                    break;
+                }
+            }
+
+            if (nearestRecord != null && StrUtil.isNotEmpty(nearestRecord.getPoErpNo())) {
+                LambdaUpdateWrapper<DeliveryNoticeDetail> updateWrapper = new LambdaUpdateWrapper<>();
+                updateWrapper.eq(DeliveryNoticeDetail::getId, nullRecord.getId())
+                        .set(DeliveryNoticeDetail::getPoErpNo, nearestRecord.getPoErpNo())
+                        .set(DeliveryNoticeDetail::getPurchaseType, nearestRecord.getPurchaseType())
+                        .set(DeliveryNoticeDetail::getPoLineNo, nearestRecord.getPoLineNo());
+
+                boolean updated = detailService.update(updateWrapper);
+                if (updated) {
+                    updatedCount++;
+                    log.info("鏇存柊璁板綍ID: {}, LINE_NO: {}, 璁剧疆PO_ERP_NO涓�: {} (鏉ユ簮LINE_NO: {})",
+                            nullRecord.getId(), nullRecord.getLineNo(), nearestRecord.getPoErpNo(), nearestRecord.getLineNo());
+
+//                    LambdaQueryWrapper<DeliveryNotice> queryWrapper = new LambdaQueryWrapper<>();
+//                    queryWrapper.eq(DeliveryNotice::getId, nullRecord.getPid());
+//                    DeliveryNotice one = getOne(queryWrapper, false);
+//
+//                    callPdaReceiptBtn1(one.getDeliveryNo(), "PL017");
+                } else {
+                    log.error("鏇存柊璁板綍ID: {} 澶辫触", nullRecord.getId());
+                }
+            } else {
+                log.error("璁板綍ID: {}, LINE_NO: {} 鎵句笉鍒板彲鐢ㄧ殑PO_ERP_NO鍊硷紝闇�瑕佷汉宸ュ鐞�",
+                        nullRecord.getId(), nullRecord.getLineNo());
+            }
+        }
+
+        log.info("鍏辨洿鏂颁簡{}鏉¤褰�", updatedCount);
+        return updatedCount > 0;
+    }
+
     /**
      * 鎵归噺澶勭悊MesInvItemArn鏁版嵁
      *

--
Gitblit v1.9.3