From 8b8c347b921846ed07b310bba2d7646333bf98cb Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期三, 26 十一月 2025 13:09:50 +0800
Subject: [PATCH] 任务下发功能优化
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java | 334 +++++++++++++++++++++++++++----------------------------
1 files changed, 164 insertions(+), 170 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
index 8966305..b0239c1 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -264,15 +264,10 @@
if (tasks.isEmpty()) {
return;
}
- Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.ALLOW_PUB_TASK));
+ Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.AUTO_RUN_CHECK_ORDERS));
if (!Objects.isNull(config) && !Objects.isNull(config.getVal())) {
- Integer val = Integer.parseInt(config.getVal());
- if (val > 1) {
- List<Task> tasks1 = tasks.stream().sorted(Comparator.comparing(Task::getCreateTime)).collect(Collectors.toList());
- Task task = tasks1.stream().findFirst().get();
- if (DateUtils.diffToSeconds(task.getCreateTime(), new Date()) < val) {
- return;
- }
+ if (Boolean.parseBoolean(config.getVal())) {
+ return;
}
}
// for (Task task : tasks) {
@@ -287,7 +282,7 @@
// }
// }
/**涓嬪彂鏅�氱珯鐐逛换鍔★紝鎶ラ敊鍥炴粴锛屼笉鍐嶅線涓嬫墽琛�*/
- pubTaskToWcs(tasks);
+ taskService.pubTaskToWcs(tasks);
}
/**
@@ -353,7 +348,7 @@
}
/**涓嬪彂浠诲姟*/
try {
- pubTaskToWcs(tasks);
+ taskService.pubTaskToWcs(tasks);
} catch (Exception e) {
log.error("浠诲姟涓嬪彂澶辫触锛侊紒", e);
}
@@ -388,165 +383,165 @@
*
* @param tasks
*/
- @Transactional(rollbackFor = Exception.class)
- public void pubTaskToWcs(List<Task> tasks) {
- WcsTaskParams taskParams = new WcsTaskParams();
- List<TaskItemParam> items = new ArrayList<>();
- tasks.forEach(task -> {
- TaskItemParam itemParam = new TaskItemParam();
- //浠诲姟绫诲瀷锛屼换鍔$紪鐮�
- itemParam.setTaskType(RcsTaskType.getTypeDesc(task.getTaskType()))
- .setSeqNum(task.getTaskCode());
- //涓诲弬鏁�
- taskParams.setBatch(task.getBarcode());
-
- BasStation station = null;
- if (!task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
- station = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getTargSite()));
- if (Objects.isNull(station)) {
- throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�");
- }
- }
-
- /**鍒ゆ柇鏄惁鍏夌數绔欑偣锛岄潪鍏夊簵绔欑偣闇�绠℃帶绔欑偣鐘舵��*/
- if (!Objects.isNull(station) && station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) {
- if (task.getTaskType() <= TaskType.TASK_TYPE_CHECK_IN.type && !task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
- station.setUseStatus(LocStsType.LOC_STS_TYPE_R.type);
- if (!basStationService.updateById(station)) {
- throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�");
- }
- } else if (task.getTaskType() >= TaskType.TASK_TYPE_OUT.type) {
- station.setUseStatus(LocStsType.LOC_STS_TYPE_S.type);
- if (!basStationService.updateById(station)) {
- throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�");
- }
- }
- }
-
- /**绉诲簱鍙傛暟*/
- if (task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
- itemParam.setOriLoc(task.getOrgLoc()).setDestLoc(task.getTargLoc());
- } else if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)) {
- /**鍏ㄦ澘鍏ュ簱鍙傛暟*/
- itemParam.setDestLoc(task.getTargLoc())
- .setOriSta(task.getOrgSite());
- } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type) || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)) {
- /**鎷f枡/鐩樼偣鍏ュ簱鍙傛暟*/
- itemParam.setDestLoc(task.getTargLoc())
- .setOriSta(task.getTargSite());
- } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type)) {
- /**鍑哄簱鍙傛暟*/
- itemParam.setOriLoc(task.getOrgLoc())
- .setDestSta(task.getTargSite());
- } else {
- /**绔欑偣闂寸Щ搴撳弬鏁�*/
- itemParam.setOriSta(task.getOrgSite()).setDestSta(task.getTargSite());
-
- BasStation curSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getOrgSite()));
- if (Objects.isNull(curSta)) {
- throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�");
- }
- if (curSta.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) {
- if (!curSta.getUseStatus().equals(LocStsType.LOC_STS_TYPE_F.type)) {
- throw new CoolException("褰撳墠绔欑偣涓嶆槸F.鍦ㄥ簱鐘舵�侊紒锛�");
- }
- }
- if (station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) {
- if (!station.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
- throw new CoolException("鐩爣绔欑偣涓嶆槸O.绌洪棽鐘舵�侊紒锛�");
- }
- }
- }
- items.add(itemParam);
- });
- taskParams.setTaskList(items);
- /**浠诲姟涓嬪彂鎺ュ彛*/
- String pubTakUrl = rcsApi.getHost() + ":" + rcsApi.getPort() + RcsConstant.pubTask;
- /**RCS鍩虹閰嶇疆閾炬帴*/
- log.info("浠诲姟涓嬪彂锛岃姹傚湴鍧�锛� {}锛� 璇锋眰鍙傛暟锛� {}", pubTakUrl, JSONObject.toJSONString(taskParams));
- HttpHeaders headers = new HttpHeaders();
- headers.add("Content-Type", "application/json");
- headers.add("api-version", "v2.0");
- HttpEntity httpEntity = new HttpEntity(taskParams, headers);
- ResponseEntity<String> exchange = restTemplate.exchange(pubTakUrl, HttpMethod.POST, httpEntity, String.class);
- log.info("浠诲姟涓嬪彂鍚庯紝鍝嶅簲缁撴灉锛� {}", exchange);
- if (Objects.isNull(exchange.getBody())) {
- throw new CoolException("浠诲姟涓嬪彂澶辫触锛侊紒");
- } else {
- try {
- ObjectMapper objectMapper = new ObjectMapper();
- objectMapper.coercionConfigDefaults()
- .setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty);
- CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
- if (result.getCode() == 200) {
- tasks.forEach(task -> {
-
- if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
-
- BasStation curSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getOrgSite()));
- if (Objects.isNull(curSta)) {
- throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�");
- }
-
- if (!taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode())
- .set(Task::getTaskStatus, TaskStsType.WCS_EXECUTE_IN.id))) {
- throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
- }
- /**鎺掗櫎绉诲簱鍔熻兘*/
- if (!task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
- /**濡傛灉鏄櫘閫氱珯鐐癸紝淇敼绔欑偣鐘舵�佷负鍑哄簱棰勭害*/
- if (curSta.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) {
- curSta.setUseStatus(LocStsType.LOC_STS_TYPE_R.type);
- if (!basStationService.updateById(curSta)) {
- throw new CoolException("绔欑偣棰勭害澶辫触锛侊紒");
- }
- }
- }
- } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)) {
- BasStation curSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getTargSite()));
- if (Objects.isNull(curSta)) {
- throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�");
- }
-
- if (!taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode())
- .set(Task::getTaskStatus, TaskStsType.WCS_EXECUTE_OUT.id))) {
- throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
- }
- /**濡傛灉鏄櫘閫氱珯鐐癸紝淇敼绔欑偣鐘舵�佷负鍏ュ簱棰勭害*/
- if (curSta.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) {
- curSta.setUseStatus(LocStsType.LOC_STS_TYPE_S.type);
- if (!basStationService.updateById(curSta)) {
- throw new CoolException("绔欑偣棰勭害澶辫触锛侊紒");
- }
- }
- }
- });
- } else {
- log.error(JSONObject.toJSONString(result));
-// throw new CoolException("浠诲姟涓嬪彂澶辫触锛侊紒");
- }
- } catch (JsonProcessingException e) {
- throw new CoolException(e.getMessage());
- }
- }
-
- }
-
+// @Transactional(rollbackFor = Exception.class)
+// public void pubTaskToWcs(List<Task> tasks) {
+// WcsTaskParams taskParams = new WcsTaskParams();
+// List<TaskItemParam> items = new ArrayList<>();
+// tasks.forEach(task -> {
+// TaskItemParam itemParam = new TaskItemParam();
+// //浠诲姟绫诲瀷锛屼换鍔$紪鐮�
+// itemParam.setTaskType(RcsTaskType.getTypeDesc(task.getTaskType()))
+// .setSeqNum(task.getTaskCode());
+// //涓诲弬鏁�
+// taskParams.setBatch(task.getBarcode());
+//
+// BasStation station = null;
+// if (!task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
+// station = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getTargSite()));
+// if (Objects.isNull(station)) {
+// throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�");
+// }
+// }
+//
+// /**鍒ゆ柇鏄惁鍏夌數绔欑偣锛岄潪鍏夊簵绔欑偣闇�绠℃帶绔欑偣鐘舵��*/
+// if (!Objects.isNull(station) && station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) {
+// if (task.getTaskType() <= TaskType.TASK_TYPE_CHECK_IN.type && !task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
+// station.setUseStatus(LocStsType.LOC_STS_TYPE_R.type);
+// if (!basStationService.updateById(station)) {
+// throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�");
+// }
+// } else if (task.getTaskType() >= TaskType.TASK_TYPE_OUT.type) {
+// station.setUseStatus(LocStsType.LOC_STS_TYPE_S.type);
+// if (!basStationService.updateById(station)) {
+// throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�");
+// }
+// }
+// }
+//
+// /**绉诲簱鍙傛暟*/
+// if (task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
+// itemParam.setOriLoc(task.getOrgLoc()).setDestLoc(task.getTargLoc());
+// } else if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)
+// || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type)
+// || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)) {
+// /**鍏ㄦ澘鍏ュ簱鍙傛暟*/
+// itemParam.setDestLoc(task.getTargLoc())
+// .setOriSta(task.getOrgSite());
+// } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type) || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)) {
+// /**鎷f枡/鐩樼偣鍏ュ簱鍙傛暟*/
+// itemParam.setDestLoc(task.getTargLoc())
+// .setOriSta(task.getTargSite());
+// } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)
+// || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)
+// || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type)
+// || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)
+// || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type)) {
+// /**鍑哄簱鍙傛暟*/
+// itemParam.setOriLoc(task.getOrgLoc())
+// .setDestSta(task.getTargSite());
+// } else {
+// /**绔欑偣闂寸Щ搴撳弬鏁�*/
+// itemParam.setOriSta(task.getOrgSite()).setDestSta(task.getTargSite());
+//
+// BasStation curSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getOrgSite()));
+// if (Objects.isNull(curSta)) {
+// throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�");
+// }
+// if (curSta.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) {
+// if (!curSta.getUseStatus().equals(LocStsType.LOC_STS_TYPE_F.type)) {
+// throw new CoolException("褰撳墠绔欑偣涓嶆槸F.鍦ㄥ簱鐘舵�侊紒锛�");
+// }
+// }
+// if (station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) {
+// if (!station.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+// throw new CoolException("鐩爣绔欑偣涓嶆槸O.绌洪棽鐘舵�侊紒锛�");
+// }
+// }
+// }
+// items.add(itemParam);
+// });
+// taskParams.setTaskList(items);
+// /**浠诲姟涓嬪彂鎺ュ彛*/
+// String pubTakUrl = rcsApi.getHost() + ":" + rcsApi.getPort() + RcsConstant.pubTask;
+// /**RCS鍩虹閰嶇疆閾炬帴*/
+// log.info("浠诲姟涓嬪彂锛岃姹傚湴鍧�锛� {}锛� 璇锋眰鍙傛暟锛� {}", pubTakUrl, JSONObject.toJSONString(taskParams));
+// HttpHeaders headers = new HttpHeaders();
+// headers.add("Content-Type", "application/json");
+// headers.add("api-version", "v2.0");
+// HttpEntity httpEntity = new HttpEntity(taskParams, headers);
+// ResponseEntity<String> exchange = restTemplate.exchange(pubTakUrl, HttpMethod.POST, httpEntity, String.class);
+// log.info("浠诲姟涓嬪彂鍚庯紝鍝嶅簲缁撴灉锛� {}", exchange);
+// if (Objects.isNull(exchange.getBody())) {
+// throw new CoolException("浠诲姟涓嬪彂澶辫触锛侊紒");
+// } else {
+// try {
+// ObjectMapper objectMapper = new ObjectMapper();
+// objectMapper.coercionConfigDefaults()
+// .setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty);
+// CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
+// if (result.getCode() == 200) {
+// tasks.forEach(task -> {
+//
+// if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)
+// || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)
+// || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)
+// || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)
+// || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type)
+// || task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
+//
+// BasStation curSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getOrgSite()));
+// if (Objects.isNull(curSta)) {
+// throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�");
+// }
+//
+// if (!taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode())
+// .set(Task::getTaskStatus, TaskStsType.WCS_EXECUTE_IN.id))) {
+// throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+// }
+// /**鎺掗櫎绉诲簱鍔熻兘*/
+// if (!task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
+// /**濡傛灉鏄櫘閫氱珯鐐癸紝淇敼绔欑偣鐘舵�佷负鍑哄簱棰勭害*/
+// if (curSta.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) {
+// curSta.setUseStatus(LocStsType.LOC_STS_TYPE_R.type);
+// if (!basStationService.updateById(curSta)) {
+// throw new CoolException("绔欑偣棰勭害澶辫触锛侊紒");
+// }
+// }
+// }
+// } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)
+// || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)
+// || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type)
+// || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type)
+// || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)) {
+// BasStation curSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getTargSite()));
+// if (Objects.isNull(curSta)) {
+// throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�");
+// }
+//
+// if (!taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode())
+// .set(Task::getTaskStatus, TaskStsType.WCS_EXECUTE_OUT.id))) {
+// throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+// }
+// /**濡傛灉鏄櫘閫氱珯鐐癸紝淇敼绔欑偣鐘舵�佷负鍏ュ簱棰勭害*/
+// if (curSta.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) {
+// curSta.setUseStatus(LocStsType.LOC_STS_TYPE_S.type);
+// if (!basStationService.updateById(curSta)) {
+// throw new CoolException("绔欑偣棰勭害澶辫触锛侊紒");
+// }
+// }
+// }
+// });
+// } else {
+// log.error(JSONObject.toJSONString(result));
+//// throw new CoolException("浠诲姟涓嬪彂澶辫触锛侊紒");
+// }
+// } catch (JsonProcessingException e) {
+// throw new CoolException(e.getMessage());
+// }
+// }
+//
+// }
+//
/**
* @param
@@ -664,7 +659,6 @@
throw new CoolException("鍘熷浠诲姟鏄庣粏鍒犻櫎澶辫触锛侊紒");
}
}
-
});
}
--
Gitblit v1.9.1