From dff0470bf77f3fa525a9d1f1f761dd9609072205 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期三, 07 五月 2025 12:07:31 +0800
Subject: [PATCH] 11
---
src/main/java/com/gs/xiaomi/service/XM104Service.java | 90 +++++++++++++++++++++++++++++++++++++++++---
1 files changed, 83 insertions(+), 7 deletions(-)
diff --git a/src/main/java/com/gs/xiaomi/service/XM104Service.java b/src/main/java/com/gs/xiaomi/service/XM104Service.java
index 6c15296..fdb53d5 100644
--- a/src/main/java/com/gs/xiaomi/service/XM104Service.java
+++ b/src/main/java/com/gs/xiaomi/service/XM104Service.java
@@ -5,6 +5,8 @@
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.gs.xiaomi.config.DataAcquisitionConfiguration;
import com.gs.xiaomi.dto.*;
import com.gs.xiaomi.entity.DeliveryDetail;
@@ -20,6 +22,11 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
@Service
@Transactional(rollbackFor = Exception.class)
@@ -38,16 +45,25 @@
private final LogisticsPackageService logisticsPackageService;
public void getDb() {
-
String format = DateUtil.format(new Date(), "yyyy-MM-dd");
+ getXM104Save(format);
+ }
+
+ private void getXM104Save(String format) {
+
+ BizDocument doc = new BizDocument();
+ doc.setBizDate(format);
+ doc.setLifnr(DataAcquisitionConfiguration.LIFNR);
+
+ getXM104(doc);
+ }
+
+ private void getXM104(BizDocument doc) {
ZfmWsApiRequest req = new ZfmWsApiRequest();
req.setIvCode(DataAcquisitionConfiguration.IV_CODEXM104);
req.setIvEvent("");
req.setIvFlag("");
- BizDocument doc = new BizDocument();
- doc.setBizDate(format);
- doc.setLifnr(DataAcquisitionConfiguration.LIFNR);
req.setIvInfo(doc);
req.setIvPass(DataAcquisitionConfiguration.getIvPass(DataAcquisitionConfiguration.IV_CODEXM104));
req.setIvUser(DataAcquisitionConfiguration.IV_USER);
@@ -55,7 +71,7 @@
try {
BizDocumentResult deliveryNo = getDeliveryNo(req);
- if (CollUtil.isNotEmpty(deliveryNo.getEtHeaders())) {
+ if (CollUtil.isEmpty(deliveryNo.getEtHeaders())) {
log.info("銆怋izDocumentResult銆戣繑鍥炲垪琛ㄤ负绌猴紝璺宠繃澶勭悊");
log.info("鑾峰彇鎺ュ彛鍒楄〃杩斿洖: {}", deliveryNo.getEvMessage());
return;
@@ -64,7 +80,9 @@
//鑾峰彇鎵�鏈夌殑ASN鍙�
List<EtHeader> etHeaders = deliveryNo.getEtHeaders();
- etHeaders.forEach(etHeader -> {
+ List<EtHeader> collect = etHeaders.stream().filter(distinctByKey(EtHeader::getZzasn)).collect(Collectors.toList());
+
+ collect.forEach(etHeader -> {
log.info("1.鑾峰彇鍒伴�佽揣鍗曞彿: {}", etHeader.getZzasn());
@@ -96,7 +114,6 @@
log.error("銆愯鍙栧垪琛ㄥ紓甯搞�戝弬鏁�: {} 寮傚父: {}", JSON.toJSONString(req), e.getMessage(), e);
throw new RuntimeException(e);
}
-
}
private BizDocumentResult getDeliveryNo(ZfmWsApiRequest request) throws Exception {
@@ -106,10 +123,39 @@
return bizDocumentResult;
}
+ private <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
+ Map<Object, Boolean> seen = new ConcurrentHashMap<>();
+ return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
+ }
+
private void setDeliveryMain(BizDocumentResult result) {
List<EtHeader> etHeaders = result.getEtHeaders();
etHeaders.forEach(etHeader -> {
+
+ LambdaQueryWrapper<DeliveryMain> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(DeliveryMain::getZzasn, etHeader.getZzasn());
+
+ DeliveryMain one = deliveryMainService.getOne(queryWrapper, false);
+
+ if (one != null) {
+ deliveryMainService.removeById(one.getId());
+
+ LambdaUpdateWrapper<DeliveryDetail> updateWrapper = new LambdaUpdateWrapper<>();
+ updateWrapper.eq(DeliveryDetail::getPid, one.getId());
+ deliveryDetailService.remove(updateWrapper);
+
+ //PackageDetail
+ LambdaUpdateWrapper<PackageDetail> updateWrapper1 = new LambdaUpdateWrapper<>();
+ updateWrapper1.eq(PackageDetail::getPid, one.getId());
+ packageDetailService.remove(updateWrapper1);
+
+ //LogisticsPackage
+ LambdaUpdateWrapper<LogisticsPackage> updateWrapper2 = new LambdaUpdateWrapper<>();
+ updateWrapper2.eq(LogisticsPackage::getPid, one.getId());
+ logisticsPackageService.remove(updateWrapper2);
+ }
+
DeliveryMain deliveryMain = new DeliveryMain();
BeanUtil.copyProperties(etHeader, deliveryMain);
@@ -162,6 +208,36 @@
}
+ //deliveryMainService.callPdaReceiptBtn("閫佽揣鍗曠鏀禰BTNOK[PL017[" + etHeader.getZzasn(), "");
});
}
+
+ public boolean manualSynchronization(NumbericalDto numbericalDto) {
+ try {
+ String[] asns = numbericalDto.getAsn().split(",");
+ for (String asn : asns) {
+ BizDocument doc = new BizDocument();
+ doc.setLifnr(DataAcquisitionConfiguration.LIFNR);
+ doc.setZzasn(asn);
+ getXM104(doc);
+ }
+ return true;
+ } catch (Exception e) {
+ log.error("銆愭墜鍔ㄨ鍙朅SN寮傚父銆� 寮傚父: {}", e.getMessage(), e);
+ return false;
+ }
+ }
+
+ public boolean manualSynchronizationByDate(NumbericalDto numbericalDto) {
+ try {
+ BizDocument doc = new BizDocument();
+ doc.setLifnr(DataAcquisitionConfiguration.LIFNR);
+ doc.setBizDate(numbericalDto.getDate());
+ getXM104(doc);
+ return true;
+ } catch (Exception e) {
+ log.error("銆愭墜鍔ㄨ鍙朅SN寮傚父銆� 寮傚父: {}", e.getMessage(), e);
+ return false;
+ }
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3