11
啊鑫
2025-05-07 dff0470bf77f3fa525a9d1f1f761dd9609072205
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("【BizDocumentResult】返回列表为空,跳过处理");
                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("【手动读取ASN异常】 异常: {}", 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("【手动读取ASN异常】 异常: {}", e.getMessage(), e);
            return false;
        }
    }
}