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