From b54eecf57118f38f0e3ddcdce8c2b9412a47bf7e Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期五, 04 七月 2025 23:43:31 +0800
Subject: [PATCH] 添加赋值订单号为空的情况
---
src/main/resources/mapper/DeliveryNoticeMapper.xml | 8 ++
src/main/java/com/gs/xky/service/XkyService.java | 9 +++
src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java | 13 ++++
src/main/java/com/gs/xky/service/DeliveryNoticeService.java | 11 +++
src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java | 113 +++++++++++++++++++++++++++++++++++++
src/test/java/com/gs/xky/XkyApplicationTests.java | 3
6 files changed, 156 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java b/src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java
index 6d6a002..b2a251a 100644
--- a/src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java
+++ b/src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java
@@ -22,6 +22,19 @@
*/
void callPdaReceiptBtn(@Param("C_IN_STR") String inStr, @Param("C_RESULT") String result);
+ /**
+ * 璋冪敤 Oracle 瀛樺偍杩囩▼ PRC_RF_PDA_RECEIPT_BTN_test001
+ *
+ * @param deliveryNo 閫佽揣鍗曞彿
+ * @param userid 鐢ㄦ埛ID
+ * @param res 杈撳嚭缁撴灉鐮�
+ * @param msg 杈撳嚭娑堟伅
+ */
+ void callPdaReceiptBtn1(@Param("C_DELIVERY_NO") String deliveryNo,
+ @Param("C_userid") String userid,
+ @Param("c_res") Integer res,
+ @Param("c_msg") String msg);
+
//PRC_MES_INV_ITEM_ARN_STATUS22
void callPrcMesInvItemArnStatus22(@Param("PI_FACTORY") String factory,
@Param("PI_COMPANY") String company,
diff --git a/src/main/java/com/gs/xky/service/DeliveryNoticeService.java b/src/main/java/com/gs/xky/service/DeliveryNoticeService.java
index 40a8ba3..266f87f 100644
--- a/src/main/java/com/gs/xky/service/DeliveryNoticeService.java
+++ b/src/main/java/com/gs/xky/service/DeliveryNoticeService.java
@@ -19,6 +19,15 @@
void callPdaReceiptBtn(String inStr, String result);
+ /**
+ * 璋冪敤鏂扮殑瀛樺偍杩囩▼ PRC_RF_PDA_RECEIPT_BTN_test001
+ *
+ * @param deliveryNo 閫佽揣鍗曞彿
+ * @param userid 鐢ㄦ埛ID
+ * @return 杩斿洖鍖呭惈缁撴灉鐮佸拰娑堟伅鐨勬暟缁勶紝[0]涓虹粨鏋滅爜锛孾1]涓烘秷鎭�
+ */
+ Object[] callPdaReceiptBtn1(String deliveryNo, String userid);
+
Integer processMesInvItemArnStatus(String factory, String company, String userCode, Long id);
void processMesInvItemArnStatusAsync(List<MesInvItemArn> itemArnMinus);
@@ -29,4 +38,6 @@
* @param batchItems 褰撳墠鎵规鐨勬暟鎹�
*/
void processAsyncBatch(List<MesInvItemArn> batchItems);
+
+ boolean setDeliveryNotice();
}
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鏁版嵁
*
diff --git a/src/main/java/com/gs/xky/service/XkyService.java b/src/main/java/com/gs/xky/service/XkyService.java
index cb43c6c..2550373 100644
--- a/src/main/java/com/gs/xky/service/XkyService.java
+++ b/src/main/java/com/gs/xky/service/XkyService.java
@@ -104,6 +104,15 @@
log.info("銆恜rocessBatchDeliveries銆戝鐞嗛�佽揣鍗�: {}, 鐗╂祦鐘舵��: {}", deliveryNo.getDeliveryNo(), deliveryNo.getLogisticsStatus());
XkyDetail detail = getDetail(deliveryNo.getDeliveryNo());
deliveryNoticeService.saveDeliveryNotice(detail);
+
+ // 鏁版嵁鎻掑叆鍚庯紝澶勭悊PO_ERP_NO涓簄ull鐨勮褰�
+ try {
+ deliveryNoticeService.setDeliveryNotice();
+ log.info("銆恜rocessBatchDeliveries銆慞O_ERP_NO null鍊煎鐞嗗畬鎴�: {}", deliveryNo.getDeliveryNo());
+ } catch (Exception e) {
+ log.error("銆恜rocessBatchDeliveries銆戝鐞哖O_ERP_NO null鍊煎紓甯�: {}, 寮傚父: {}", deliveryNo.getDeliveryNo(), e.getMessage(), e);
+ }
+
List<BarcodeDeliveryNo> barcodeDeliveryNos = GetBarcodeInformation(deliveryNo.getDeliveryNo());
barcodeInformationService.SaveBarcodeInformation(barcodeDeliveryNos, deliveryNo.getDeliveryNo());
//宸查�佽揪鐨勬墠鑷姩杞崲涓篗ES鍒拌揣鍗�
diff --git a/src/main/resources/mapper/DeliveryNoticeMapper.xml b/src/main/resources/mapper/DeliveryNoticeMapper.xml
index 9628047..9bd054d 100644
--- a/src/main/resources/mapper/DeliveryNoticeMapper.xml
+++ b/src/main/resources/mapper/DeliveryNoticeMapper.xml
@@ -28,4 +28,12 @@
#{PO_TEXT, mode=OUT, jdbcType=VARCHAR}
)}
</select>
+ <select id="callPdaReceiptBtn1" statementType="CALLABLE">
+ {call PRC_RF_PDA_RECEIPT_BTN_test001(
+ #{C_DELIVERY_NO, mode=IN, jdbcType=VARCHAR},
+ #{C_userid, mode=IN, jdbcType=VARCHAR},
+ #{c_res, mode=OUT, jdbcType=NUMERIC},
+ #{c_msg, mode=OUT, jdbcType=VARCHAR}
+ )}
+ </select>
</mapper>
diff --git a/src/test/java/com/gs/xky/XkyApplicationTests.java b/src/test/java/com/gs/xky/XkyApplicationTests.java
index 7c2e4e0..123a12a 100644
--- a/src/test/java/com/gs/xky/XkyApplicationTests.java
+++ b/src/test/java/com/gs/xky/XkyApplicationTests.java
@@ -60,7 +60,7 @@
@Test
void cs() throws IOException {
- String str = "2225060624DY;";
+ String str = "22250702H88F;";
String[] split = str.split(";");
@@ -166,5 +166,6 @@
// xkyEntity.setDeliveryNo("222505057541");
// xkyService.remove1(xkyEntity);
+ deliveryNoticeService.setDeliveryNotice();
}
}
\ No newline at end of file
--
Gitblit v1.9.3