| | |
| | | |
| | | 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(); |
| | |
| | | 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); |
| | | // 不抛出异常,避免一个送货单的异常导致整个批次失败 |
| | | } |
| | | }); |
| | | } |
| | |
| | | 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()); |
| | | } |