package com.gs.xky.service; import cn.hutool.core.collection.CollUtil; 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; import com.gs.xky.config.DataAcquisitionConfiguration; import com.gs.xky.config.XkyCommonParam; import com.gs.xky.dto.BarcodeDeliveryNo; import com.gs.xky.dto.XkyDetail; import com.gs.xky.dto.XkyEntity; import com.gs.xky.entity.*; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.util.List; @Service @Transactional(rollbackFor = Exception.class) @RequiredArgsConstructor public class XkyService { 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(); XkyCommonParam param = XkyCommonParam.GetInit(); // 计算五分钟前的时间戳 long startDate = currentTimeMillis - (6 * 60 * 1000); // 5 分钟 = 5 * 60 * 1000 毫秒 // 创建 BodyParam 对象并赋值 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); ApiResponse noList = apiService.sendListRequest(param, XkyEntity.class, "https://openapi.xiekeyun.com/delivery/getNoList.json"); // List deliveryNoList = noList.getDataList().stream().map(XkyEntity::getDeliveryNo).collect(Collectors.toList()); List deliveryNoList = noList.getDataList(); if (CollUtil.isEmpty(deliveryNoList)) { return; } deliveryNoList.forEach(deliveryNo -> { try { if ("6".equals(deliveryNo.getStatus()) || "0".equals(deliveryNo.getLogisticsStatus())) { remove(deliveryNo); } else if ("1".equals(deliveryNo.getStatus()) && "2".equals(deliveryNo.getLogisticsStatus())) { XkyDetail detail = getDetail(deliveryNo.getDeliveryNo()); deliveryNoticeService.saveDeliveryNotice(detail); List barcodeDeliveryNos = GetBarcodeInformation(deliveryNo.getDeliveryNo()); barcodeInformationService.SaveBarcodeInformation(barcodeDeliveryNos, deliveryNo.getDeliveryNo()); deliveryNoticeService.callPdaReceiptBtn("送货单签收[BTNOK[PL017[" + deliveryNo.getDeliveryNo(), ""); } } catch (IOException e) { throw new RuntimeException(e); } }); } private void remove(XkyEntity deliveryNo) { LambdaUpdateWrapper deliveryNoticeWrapper = new LambdaUpdateWrapper<>(); deliveryNoticeWrapper.eq(DeliveryNotice::getDeliveryNo, deliveryNo.getDeliveryNo()); DeliveryNotice one = deliveryNoticeService.getOne(deliveryNoticeWrapper, false); if (deliveryNoticeService.remove(deliveryNoticeWrapper)) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(DeliveryNoticeDetail::getPid, one.getId()); deliveryNoticeDetailService.remove(updateWrapper); LambdaUpdateWrapper updateWrapper1 = new LambdaUpdateWrapper<>(); updateWrapper1.eq(TblBarcodeInformation::getDeliveryNo, deliveryNo.getDeliveryNo()); barcodeInformationService.remove(updateWrapper1); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(MesInvItemArn::getPaperBillNo, deliveryNo.getDeliveryNo()); MesInvItemArn mesInvItemArn = mesInvItemArnService.getOne(wrapper, false); mesInvItemArnService.remove(wrapper); if (mesInvItemArn != null) { LambdaUpdateWrapper updateWrapper2 = new LambdaUpdateWrapper<>(); updateWrapper2.eq(MesInvItemArnDetail::getMid, mesInvItemArn.getId()); mesInvItemArnDetailService.remove(updateWrapper2); LambdaUpdateWrapper updateWrapper3 = new LambdaUpdateWrapper<>(); updateWrapper3.eq(MesInvItemBarcodes::getBillNo, mesInvItemArn.getBillNo()); mesInvItemBarcodesService.remove(updateWrapper3); 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 noList = apiService.sendListRequest(param, XkyDetail.class, "https://openapi.xiekeyun.com/delivery/getDetail.json"); return noList.getData(); } private List 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 noList = apiService.sendListRequest(param, BarcodeDeliveryNo.class, "https://openapi.xiekeyun.com/barcode/byDeliveryNo.json"); return noList.getDataList(); } }