啊鑫
5 天以前 9f7368ceb60b8f5c635cf455914f435d8d782a90
src/main/java/com/gs/xky/service/XkyService.java
@@ -42,7 +42,7 @@
    public void GetSaveDetail() throws IOException {
        long currentTimeMillis = System.currentTimeMillis();
        long startDate = currentTimeMillis - (20 * 60 * 1000); // 计算 20 分钟前的时间戳
        long startDate = currentTimeMillis - (30 * 60 * 1000); // 计算 120 分钟前的时间戳
        XkyCommonParam<BodyParam> param = XkyCommonParam.GetInit();
        BodyParam bodyParam = new BodyParam();
@@ -66,24 +66,58 @@
            return;
        }
        deliveryNoList.forEach(deliveryNo -> {
        log.info("【GetSaveDetail】获取到{}条送货单数据", 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("【GetSaveDetail】处理第{}批送货单数据,范围:{}-{}", i + 1, fromIndex, toIndex);
            // 获取当前批次的数据
            List<XkyEntity> batchDeliveries = deliveryNoList.subList(fromIndex, toIndex);
            // 处理当前批次的数据
            processBatchDeliveries(batchDeliveries);
        }
        log.info("【GetSaveDetail】所有送货单处理完成");
    }
    /**
     * 批量处理送货单数据
     *
     * @param batchDeliveries 当前批次的送货单数据
     */
    private void processBatchDeliveries(List<XkyEntity> batchDeliveries) {
        batchDeliveries.forEach(deliveryNo -> {
            try {
                if ("6".equals(deliveryNo.getStatus()) || "0".equals(deliveryNo.getLogisticsStatus())) {
                    log.info("【GetSaveDetail】移除送货单: {}", deliveryNo.getDeliveryNo());
                    log.info("【processBatchDeliveries】移除送货单: {}", deliveryNo.getDeliveryNo());
                    remove1(deliveryNo);
                } else if ("1".equals(deliveryNo.getStatus()) && ("2".equals(deliveryNo.getLogisticsStatus()) || "1".equals(deliveryNo.getLogisticsStatus()))) {
                    log.info("【processBatchDeliveries】处理送货单: {}, 物流状态: {}", deliveryNo.getDeliveryNo(), deliveryNo.getLogisticsStatus());
                    XkyDetail detail = getDetail(deliveryNo.getDeliveryNo());
                    deliveryNoticeService.saveDeliveryNotice(detail);
                    List<BarcodeDeliveryNo> barcodeDeliveryNos = GetBarcodeInformation(deliveryNo.getDeliveryNo());
                    barcodeInformationService.SaveBarcodeInformation(barcodeDeliveryNos, deliveryNo.getDeliveryNo());
                    //已送达的才自动转换为MES到货单
                    if ("2".equals(deliveryNo.getLogisticsStatus())) {
                        log.info("【processBatchDeliveries】送货单已送达,执行签收: {}", deliveryNo.getDeliveryNo());
                        deliveryNoticeService.callPdaReceiptBtn("送货单签收[BTNOK[PL017[" + deliveryNo.getDeliveryNo(), "");
                    }
                }
            } catch (IOException e) {
                log.error("【GetSaveDetail 处理异常】送货单: {}, 异常: {}", deliveryNo.getDeliveryNo(), e.getMessage(), e);
                throw new RuntimeException(e);
                log.error("【processBatchDeliveries】处理送货单异常: {}, 异常: {}", deliveryNo.getDeliveryNo(), e.getMessage(), e);
                // 不抛出异常,避免一个送货单的异常导致整个批次失败
            } catch (Exception e) {
                log.error("【processBatchDeliveries】处理送货单未预期异常: {}, 异常: {}", deliveryNo.getDeliveryNo(), e.getMessage(), e);
                // 不抛出异常,避免一个送货单的异常导致整个批次失败
            }
        });
    }
@@ -108,9 +142,17 @@
            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());
        }