From 9f7368ceb60b8f5c635cf455914f435d8d782a90 Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期六, 21 六月 2025 23:58:03 +0800 Subject: [PATCH] 添加钉钉推送消息功能 --- src/main/java/com/gs/xky/service/XkyService.java | 182 +++++++++++++++++++++++++++++++-------------- 1 files changed, 126 insertions(+), 56 deletions(-) diff --git a/src/main/java/com/gs/xky/service/XkyService.java b/src/main/java/com/gs/xky/service/XkyService.java index c16e49f..cb43c6c 100644 --- a/src/main/java/com/gs/xky/service/XkyService.java +++ b/src/main/java/com/gs/xky/service/XkyService.java @@ -2,6 +2,7 @@ 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; @@ -13,6 +14,8 @@ import com.gs.xky.dto.XkyEntity; 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,9 +27,8 @@ @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; @@ -40,52 +42,154 @@ public void GetSaveDetail() throws IOException { long currentTimeMillis = System.currentTimeMillis(); + long startDate = currentTimeMillis - (30 * 60 * 1000); // 璁$畻 120 鍒嗛挓鍓嶇殑鏃堕棿鎴� - XkyCommonParam param = XkyCommonParam.GetInit(); - - // 璁$畻浜斿垎閽熷墠鐨勬椂闂存埑 - long startDate = currentTimeMillis - (20 * 60 * 1000); // 1 鍒嗛挓 = 1 * 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, 6}); -// bodyParam.setLogisticsStatus(2); - 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; } - deliveryNoList.forEach(deliveryNo -> { + log.info("銆怗etSaveDetail銆戣幏鍙栧埌{}鏉¢�佽揣鍗曟暟鎹�", deliveryNoList.size()); + + // 鍒嗘壒澶勭悊鏁版嵁锛屽噺灏戝唴瀛樺崰鐢� + int batchSize = 10; // 姣忔壒澶勭悊10鏉℃暟鎹� + int totalSize = deliveryNoList.size(); + int batchCount = (totalSize + batchSize - 1) / batchSize; // 鍚戜笂鍙栨暣璁$畻鎵规鏁� + + for (int i = 0; i < batchCount; i++) { + int fromIndex = i * batchSize; + int toIndex = Math.min((i + 1) * batchSize, totalSize); + + 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())) { - - remove(deliveryNo); - - } else if ("1".equals(deliveryNo.getStatus()) && "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); 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<BodyParam> param = XkyCommonParam.GetInit(); + + // 鍒涘缓 BodyParam 瀵硅薄骞惰祴鍊� + BodyParam bodyParam = new BodyParam(); + + bodyParam.setErpCode(DataAcquisitionConfiguration.TEST_ERP_CODE); + bodyParam.setDeliveryNo(deliveryNo); + + + param.setBody(bodyParam); + + ApiResponse<XkyDetail> noList = apiService.sendListRequest(param, XkyDetail.class, "https://openapi.xiekeyun.com/delivery/getDetail.json"); + + return noList.getData(); + } + + private List<BarcodeDeliveryNo> GetBarcodeInformation(String deliveryNo) throws IOException { + XkyCommonParam<BodyParam> param = XkyCommonParam.GetInit(); + + // 鍒涘缓 BodyParam 瀵硅薄骞惰祴鍊� + BodyParam bodyParam = new BodyParam(); + + bodyParam.setErpCode(DataAcquisitionConfiguration.TEST_ERP_CODE); + bodyParam.setDeliveryNo(deliveryNo); + + param.setBody(bodyParam); + + + ApiResponse<BarcodeDeliveryNo> noList = apiService.sendListRequest(param, BarcodeDeliveryNo.class, "https://openapi.xiekeyun.com/barcode/byDeliveryNo.json"); + + return noList.getDataList(); } private void remove(XkyEntity deliveryNo) { @@ -130,39 +234,5 @@ mesQaItemsDetect01Service.removeQa(mesInvItemArn.getBillNo()); } } - } - - private XkyDetail getDetail(String deliveryNo) throws IOException { - XkyCommonParam param = XkyCommonParam.GetInit(); - - // 鍒涘缓 BodyParam 瀵硅薄骞惰祴鍊� - BodyParam bodyParam = new BodyParam(); - - bodyParam.setErpCode(DataAcquisitionConfiguration.TEST_ERP_CODE); - bodyParam.setDeliveryNo(deliveryNo); - - - param.setBody(bodyParam); - - ApiResponse<XkyDetail> noList = apiService.sendListRequest(param, XkyDetail.class, "https://openapi.xiekeyun.com/delivery/getDetail.json"); - - return noList.getData(); - } - - private List<BarcodeDeliveryNo> GetBarcodeInformation(String deliveryNo) throws IOException { - XkyCommonParam param = XkyCommonParam.GetInit(); - - // 鍒涘缓 BodyParam 瀵硅薄骞惰祴鍊� - BodyParam bodyParam = new BodyParam(); - - bodyParam.setErpCode(DataAcquisitionConfiguration.TEST_ERP_CODE); - bodyParam.setDeliveryNo(deliveryNo); - - param.setBody(bodyParam); - - - ApiResponse<BarcodeDeliveryNo> noList = apiService.sendListRequest(param, BarcodeDeliveryNo.class, "https://openapi.xiekeyun.com/barcode/byDeliveryNo.json"); - - return noList.getDataList(); } } -- Gitblit v1.9.3