From f84ad7db2a9eb863404be1da330178df6c2b7fb9 Mon Sep 17 00:00:00 2001
From: Administrator <2856754968@qq.com>
Date: 星期三, 26 十一月 2025 10:53:23 +0800
Subject: [PATCH] 增加企业微信的实体
---
src/main/java/com/gs/xky/service/XkyService.java | 200 +++++++++++++++++++++++++++++++++++++++----------
1 files changed, 157 insertions(+), 43 deletions(-)
diff --git a/src/main/java/com/gs/xky/service/XkyService.java b/src/main/java/com/gs/xky/service/XkyService.java
index a90de75..2550373 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,148 @@
@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 - (30 * 60 * 1000); // 璁$畻 120 鍒嗛挓鍓嶇殑鏃堕棿鎴�
- XkyCommonParam param = XkyCommonParam.GetInit();
-
- // 璁$畻浜斿垎閽熷墠鐨勬椂闂存埑
- long startDate = currentTimeMillis - (5 * 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, 4, 6});
-// 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();
+ if (CollUtil.isEmpty(deliveryNoList)) {
+ log.info("銆怗etSaveDetail銆戣繑鍥炲垪琛ㄤ负绌猴紝璺宠繃澶勭悊");
+ return;
+ }
- LambdaUpdateWrapper<DeliveryNotice> deliveryNoticeWrapper = new LambdaUpdateWrapper<>();
+ log.info("銆怗etSaveDetail銆戣幏鍙栧埌{}鏉¢�佽揣鍗曟暟鎹�", deliveryNoList.size());
- LambdaUpdateWrapper<DeliveryNoticeDetail> updateWrapper = new LambdaUpdateWrapper<>();
+ // 鍒嗘壒澶勭悊鏁版嵁锛屽噺灏戝唴瀛樺崰鐢�
+ int batchSize = 10; // 姣忔壒澶勭悊10鏉℃暟鎹�
+ int totalSize = deliveryNoList.size();
+ int batchCount = (totalSize + batchSize - 1) / batchSize; // 鍚戜笂鍙栨暣璁$畻鎵规鏁�
- LambdaUpdateWrapper<TblBarcodeInformation> updateWrapper1 = new LambdaUpdateWrapper<>();
+ for (int i = 0; i < batchCount; i++) {
+ int fromIndex = i * batchSize;
+ int toIndex = Math.min((i + 1) * batchSize, totalSize);
- deliveryNoList.forEach(deliveryNo -> {
+ log.info("銆怗etSaveDetail銆戝鐞嗙{}鎵归�佽揣鍗曟暟鎹紝鑼冨洿锛歿}-{}", i + 1, fromIndex, toIndex);
+
+ // 鑾峰彇褰撳墠鎵规鐨勬暟鎹�
+ List<XkyEntity> batchDeliveries = deliveryNoList.subList(fromIndex, toIndex);
+
+ // 澶勭悊褰撳墠鎵规鐨勬暟鎹�
+ processBatchDeliveries(batchDeliveries);
+ }
+
+ log.info("銆怗etSaveDetail銆戞墍鏈夐�佽揣鍗曞鐞嗗畬鎴�");
+ }
+
+ /**
+ * 鎵归噺澶勭悊閫佽揣鍗曟暟鎹�
+ *
+ * @param batchDeliveries 褰撳墠鎵规鐨勯�佽揣鍗曟暟鎹�
+ */
+ private void processBatchDeliveries(List<XkyEntity> batchDeliveries) {
+ batchDeliveries.forEach(deliveryNo -> {
try {
-
if ("6".equals(deliveryNo.getStatus()) || "0".equals(deliveryNo.getLogisticsStatus())) {
- 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);
- }
-
- } else if ("2".equals(deliveryNo.getLogisticsStatus())) {
+ log.info("銆恜rocessBatchDeliveries銆戠Щ闄ら�佽揣鍗�: {}", deliveryNo.getDeliveryNo());
+ remove1(deliveryNo);
+ } else if ("1".equals(deliveryNo.getStatus()) && ("2".equals(deliveryNo.getLogisticsStatus()) || "1".equals(deliveryNo.getLogisticsStatus()))) {
+ 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());
-
- deliveryNoticeService.callPdaReceiptBtn("閫佽揣鍗曠鏀禰BTNOK[PL017[" + deliveryNo.getDeliveryNo(), "");
+ //宸查�佽揪鐨勬墠鑷姩杞崲涓篗ES鍒拌揣鍗�
+ if ("2".equals(deliveryNo.getLogisticsStatus())) {
+ log.info("銆恜rocessBatchDeliveries銆戦�佽揣鍗曞凡閫佽揪锛屾墽琛岀鏀�: {}", deliveryNo.getDeliveryNo());
+ deliveryNoticeService.callPdaReceiptBtn("閫佽揣鍗曠鏀禰BTNOK[PL017[" + deliveryNo.getDeliveryNo(), "");
+ }
}
-
} catch (IOException e) {
- throw new RuntimeException(e);
+ log.error("銆恜rocessBatchDeliveries銆戝鐞嗛�佽揣鍗曞紓甯�: {}, 寮傚父: {}", deliveryNo.getDeliveryNo(), e.getMessage(), e);
+ // 涓嶆姏鍑哄紓甯革紝閬垮厤涓�涓�佽揣鍗曠殑寮傚父瀵艰嚧鏁翠釜鎵规澶辫触
+ } catch (Exception e) {
+ log.error("銆恜rocessBatchDeliveries銆戝鐞嗛�佽揣鍗曟湭棰勬湡寮傚父: {}, 寮傚父: {}", deliveryNo.getDeliveryNo(), e.getMessage(), 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);
+
+ //MesInvItemArnDetail
+ LambdaUpdateWrapper<MesInvItemArnDetail> deleteWrapper = new LambdaUpdateWrapper<>();
+ deleteWrapper.eq(MesInvItemArnDetail::getMid, mesInvItemArn.getId())
+ .set(MesInvItemArnDetail::getReturnFlag, 1);
+
+ mesInvItemArnDetailService.update(deleteWrapper);
+
+ // 鍒犻櫎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 +185,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 +200,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