From 3ab5b1af0bef668a25e3ef17ba491b267dbee02a Mon Sep 17 00:00:00 2001 From: liangzhou <594755172@qq.com> Date: Thu, 16 Oct 2025 09:31:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../job_executor/DataClearExecutor.java | 2 +- .../WmsJobServiceImplements.java | 46 +++++++++++-------- .../serviceImpl/JobServiceImpl.java | 2 +- 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/wms/quartz/job_executor/DataClearExecutor.java b/src/main/java/com/wms/quartz/job_executor/DataClearExecutor.java index 167e3e9..b0c7cb7 100644 --- a/src/main/java/com/wms/quartz/job_executor/DataClearExecutor.java +++ b/src/main/java/com/wms/quartz/job_executor/DataClearExecutor.java @@ -25,6 +25,6 @@ public class DataClearExecutor implements Job { // 删除日志数据 wmsJobService.deleteLogsRegularly(); // 删除记录数据 - wmsJobService.deleteRecordsRegularly(); +// wmsJobService.deleteRecordsRegularly(); } } diff --git a/src/main/java/com/wms/service/business/serviceImplements/WmsJobServiceImplements.java b/src/main/java/com/wms/service/business/serviceImplements/WmsJobServiceImplements.java index fad6518..4941176 100644 --- a/src/main/java/com/wms/service/business/serviceImplements/WmsJobServiceImplements.java +++ b/src/main/java/com/wms/service/business/serviceImplements/WmsJobServiceImplements.java @@ -710,12 +710,12 @@ public class WmsJobServiceImplements implements IWmsJobService { int interval = 180;// 普通接口记录默认保留180天 int importantInterval = 365;// 重要接口记录默认保留一年 try { - interval = Integer.parseInt(configMap.get(ConfigMapKeyEnum.LOG_DELETE_INTERVAL.getConfigKey())); + interval = Integer.parseInt(configMap.get(ConfigMapKeyEnum.RECORD_DELETE_INTERVAL.getConfigKey())); } catch (Exception e) { logger.error("获取普通记录清理天数错误,使用默认值180天"); } try { - importantInterval = Integer.parseInt(configMap.get(ConfigMapKeyEnum.LOG_DELETE_INTERVAL.getConfigKey())); + importantInterval = Integer.parseInt(configMap.get(ConfigMapKeyEnum.IMPORTANT_RECORD_DELETE_INTERVAL.getConfigKey())); } catch (Exception e) { logger.error("获取重要记录清理天数错误,使用默认值365天"); } @@ -938,7 +938,7 @@ public class WmsJobServiceImplements implements IWmsJobService { // 判断数据行是不是过多 int rowCount = list.size(); // 每50万行一个文件 - int rowCountPerFile = 300000; + int rowCountPerFile = 100000; int fileCounts = (rowCount + rowCountPerFile - 1) / rowCountPerFile; for (int i = 1; i <= fileCounts; i++) { List dividedList = list.subList((i - 1) * rowCountPerFile, Math.min(i * rowCountPerFile, rowCount)); @@ -1280,22 +1280,29 @@ public class WmsJobServiceImplements implements IWmsJobService { // .max(Comparator.comparingInt(Map.Entry::getValue)) // .map(Map.Entry::getKey) // .orElse(""); - // new 查找已下发状态以上最少箱子的站台 - String standId = standPickCountsMap.entrySet().stream() - .min(Comparator.comparingInt(Map.Entry::getValue)) - .map(Map.Entry::getKey) - .orElse(""); - - // 查找这个站台未下发的料箱 - List vehicleIds = standPickTasks.stream() - .filter(pickTask -> pickTask.getPickStatus().equals(PickTaskStatusEnum.TEMP.getCode()) - && thisStackerVehicleIds.contains(pickTask.getVehicleId()) && standId.equals(pickTask.getStandId())) - .map(PickTask::getVehicleId) - .distinct() - .toList(); - if (vehicleIds.isEmpty()) { + // 对这些站台进行排序,从少到多 + List standIds = standPickCountsMap.entrySet().stream() + .sorted(Comparator.comparingInt(Map.Entry::getValue)) + .map(Map.Entry::getKey).toList(); + List minStandVehicleIds = new ArrayList<>(); + String minStandId = ""; + for (String standId : standIds) { + // 查找这个站台未下发的料箱 + minStandVehicleIds = standPickTasks.stream() + .filter(pickTask -> pickTask.getPickStatus().equals(PickTaskStatusEnum.TEMP.getCode()) + && thisStackerVehicleIds.contains(pickTask.getVehicleId()) && standId.equals(pickTask.getStandId())) + .map(PickTask::getVehicleId) + .distinct() + .toList(); + if (!minStandVehicleIds.isEmpty()) { + minStandId = standId; + break; + } + } + if (minStandVehicleIds.isEmpty()) { break; } + List vehicleIds = minStandVehicleIds; // 生成箱子-站台数量的Map Map vehicleStandsMap = new HashMap<>(); standPickTasks.forEach(pickTask -> { @@ -1342,7 +1349,7 @@ public class WmsJobServiceImplements implements IWmsJobService { // 添加特殊任务 newStandStackerTask.setVehicleId(task.getVehicleId()); newStandStackerTask.setStackerId(stacker.getEquipmentId()); - newStandStackerTask.setStandId(standId); + newStandStackerTask.setStandId(minStandId); newStandStackerTask.setTaskType(2); newStandStackerTask.setTaskStatus(0); newStandStackerTask.setCreateTime(LocalDateTime.now()); @@ -1354,7 +1361,7 @@ public class WmsJobServiceImplements implements IWmsJobService { // 已经发送过的vehicleId pickVehicleIds.add(vehicleId); availNum--; - standPickCountsMap.put(standId, standPickCountsMap.get(standId) + 1); + standPickCountsMap.put(minStandId, standPickCountsMap.getOrDefault(minStandId, 0) + 1); } } } @@ -1364,6 +1371,7 @@ public class WmsJobServiceImplements implements IWmsJobService { // 没有新任务发送 return; } + // 下面这行代码模拟wcs下发成功 // simulateSendPickOutTasks(taskGroupIds, pickVehicleIds, needAddStandStackerTasks, needRemoveStandStackerTasks); // 发送任务 String url = configMap.get(ConfigMapKeyEnum.URL_WCS_TASK.getConfigKey()); diff --git a/src/main/java/com/wms/service/quartz_job/serviceImpl/JobServiceImpl.java b/src/main/java/com/wms/service/quartz_job/serviceImpl/JobServiceImpl.java index 7e0a343..d5b3b01 100644 --- a/src/main/java/com/wms/service/quartz_job/serviceImpl/JobServiceImpl.java +++ b/src/main/java/com/wms/service/quartz_job/serviceImpl/JobServiceImpl.java @@ -96,7 +96,7 @@ public class JobServiceImpl implements IJobService { jobBeans.add(new JobBean("PickOutTaskSender", PickOutTaskSender.class, "0/2 * * * * ?", 2000, JobTimerTypeEnums.SIMPLE.getType(), 1)); // jobBeans.add(new JobBean("KateWorkExecutor", KateWorkExecutor.class, "0/20 * * * * ?", 20000, JobTimerTypeEnums.SIMPLE.getType(), 1)); jobBeans.add(new JobBean("KateWorkExecutor", KateWorkExecutor.class, "0 0 * * * ?", 20000, JobTimerTypeEnums.SIMPLE.getType(), 1)); - jobBeans.add(new JobBean("DataClearExecutor", DataClearExecutor.class, "0 0 3 * * ?", 2000, JobTimerTypeEnums.CRON.getType(), 1)); + jobBeans.add(new JobBean("DataClearExecutor", DataClearExecutor.class, "0 0 23 * * ?", 2000, JobTimerTypeEnums.CRON.getType(), 1)); for (JobBean jobBean : jobBeans) { createJob(jobBean); }