From 87273850776e1a3bec1124af3ab51355d16b0d95 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期四, 26 二月 2026 16:58:07 +0800
Subject: [PATCH] lsh#
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java | 216 +++++++++++++++++++++++++++--------------------------
1 files changed, 111 insertions(+), 105 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 c7e18e7..9896868 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
@@ -96,6 +96,8 @@
@Autowired
private RemotesInfoProperties.RcsApi rcsApi;
@Autowired
+ private RemotesInfoProperties.WmsOpenApi wmsOpenApi;
+ @Autowired
private BasStationService basStationService;
@Autowired
private FlowStepInstanceServiceImpl flowStepInstanceService;
@@ -112,122 +114,126 @@
*/
@Scheduled(cron = "0/2 * * * * ? ")
@Transactional(rollbackFor = Exception.class)
- public void missionTaskEXECUTE() {
- List<FlowStepInstance> flowStepInstanceList = flowStepInstanceService.list(new LambdaQueryWrapper<FlowStepInstance>()
- .eq(FlowStepInstance::getStatus, 1).in(FlowStepInstance::getStepType,MissionStepType.getTaskISSUE()));
- for (FlowStepInstance flowStepInstance : flowStepInstanceList) {
- FlowInstance flowInstance = flowInstanceService.getById(flowStepInstance.getFlowInstanceId());
- if (Cools.isEmpty(flowInstance)) { continue;}
- List<FlowStepInstance> flowStepInstances = flowStepInstanceService.list(new LambdaQueryWrapper<FlowStepInstance>()
- .eq(FlowStepInstance::getFlowInstanceId, flowInstance.getId()).eq(FlowStepInstance::getStatus, (short) 0));
- flowInstance.setStatus(flowStepInstances.isEmpty()? (short) 2:(short) 1);
- TaskInstanceNode taskInstanceNode = taskInstanceNodeService.getById(flowInstance.getNodeInstanceId());
- if (Cools.isEmpty(taskInstanceNode)) { continue;}
- taskInstanceNode.setStatus(flowInstance.getStatus());
- TaskInstance taskInstance = taskInstanceService.getById(flowInstance.getTaskId());
- if (Cools.isEmpty(taskInstance)) { continue;}
- Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, taskInstance.getTaskNo()));
- if (Cools.isEmpty(task)) { continue;}
- if (!task.getTaskStatus().equals(flowStepInstance.getWmsNowTaskStatus())) {
- log.error("浠诲姟鍙凤細"+task.getTaskCode()+"鐨勪换鍔$姸鎬佷笌鎵ц妗f浠诲姟鐘舵�侊細"+flowStepInstance.getWmsNowTaskStatus()+"涓嶄竴鑷达紒锛侊紒");
- continue;
- }
-
- if (flowStepInstance.getStepType().equals(MissionStepType.MISSION_STEP_TYPE_NO_EXECUTE.type)) {
- /**鍩虹閰嶇疆閾炬帴*/
- log.info("浠诲姟瓒婅繃锛� 璇锋眰鍙傛暟锛� {}", JSONObject.toJSONString(flowStepInstance));
- try {
- task.setTaskStatus(flowStepInstance.getWmsNextTaskStatus());
- flowStepInstance.setStatus((short)3);
-
- flowStepInstanceService.updateById(flowStepInstance);
- taskService.updateById(task);
-
- if (flowStepInstance.getWmsNextTaskStatus() != 9999) {
- FlowStepInstance nextFlowStepInstance = flowStepInstanceService.getOne(new LambdaQueryWrapper<FlowStepInstance>()
- .eq(FlowStepInstance::getStatus, (short)0)
- .eq(FlowStepInstance::getTaskNo, flowStepInstance.getTaskNo())
- .eq(FlowStepInstance::getStepOrder, flowStepInstance.getStepOrder() + 1)
- .eq(FlowStepInstance::getWmsNowTaskStatus, flowStepInstance.getWmsNextTaskStatus()));
- if (Cools.isEmpty(nextFlowStepInstance)) {
- throw new CoolException("浠诲姟鍙�"+task.getTaskCode()+"浠诲姟姝ラ涓㈠け锛侊紒锛�");
- }
- nextFlowStepInstance.setStatus((short)1);
-
- flowStepInstanceService.updateById(nextFlowStepInstance);
- } else {
- taskInstance.setStatus((short)2);
- taskInstanceService.updateById(taskInstance);
- }
- flowInstanceService.updateById(flowInstance);
- taskInstanceNodeService.updateById(taskInstanceNode);
- } catch (Exception e) {
- throw new CoolException(e.getMessage());
+ public synchronized void missionTaskEXECUTE() {
+ try{
+ List<FlowStepInstance> flowStepInstanceList = flowStepInstanceService.list(new LambdaQueryWrapper<FlowStepInstance>()
+ .eq(FlowStepInstance::getStatus, 1).in(FlowStepInstance::getStepType,MissionStepType.getTaskISSUE()));
+ for (FlowStepInstance flowStepInstance : flowStepInstanceList) {
+ FlowInstance flowInstance = flowInstanceService.getById(flowStepInstance.getFlowInstanceId());
+ if (Cools.isEmpty(flowInstance)) { continue;}
+ List<FlowStepInstance> flowStepInstances = flowStepInstanceService.list(new LambdaQueryWrapper<FlowStepInstance>()
+ .eq(FlowStepInstance::getFlowInstanceId, flowInstance.getId()).eq(FlowStepInstance::getStatus, (short) 0));
+ flowInstance.setStatus(flowStepInstances.isEmpty()? (short) 2:(short) 1);
+ TaskInstanceNode taskInstanceNode = taskInstanceNodeService.getById(flowInstance.getNodeInstanceId());
+ if (Cools.isEmpty(taskInstanceNode)) { continue;}
+ taskInstanceNode.setStatus(flowInstance.getStatus());
+ TaskInstance taskInstance = taskInstanceService.getById(flowInstance.getTaskId());
+ if (Cools.isEmpty(taskInstance)) { continue;}
+ Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, taskInstance.getTaskNo()));
+ if (Cools.isEmpty(task)) { continue;}
+ if (!task.getTaskStatus().equals(flowStepInstance.getWmsNowTaskStatus())) {
+ log.error("浠诲姟鍙凤細"+task.getTaskCode()+"鐨勪换鍔$姸鎬佷笌鎵ц妗f浠诲姟鐘舵�侊細"+flowStepInstance.getWmsNowTaskStatus()+"涓嶄竴鑷达紒锛侊紒");
+ continue;
}
- } else {
- /**浠诲姟涓嬪彂鎺ュ彛*/
- String pubTakUrl = rcsApi.getHost() + ":" + rcsApi.getPort() + RcsConstant.MISSION_TRANSFER_STATION;
- /**鍩虹閰嶇疆閾炬帴*/
- log.info("浠诲姟涓嬪彂锛岃姹傚湴鍧�锛� {}锛� 璇锋眰鍙傛暟锛� {}", pubTakUrl, JSONObject.toJSONString(""));
- HttpHeaders headers = new HttpHeaders();
- headers.add("Content-Type", "application/json");
- headers.add("api-version", "v2.0");
- HttpEntity httpEntity = new HttpEntity(flowStepInstance, headers);
- ResponseEntity<String> exchange = restTemplate.exchange(pubTakUrl, HttpMethod.POST, httpEntity, String.class);
- log.info("浠诲姟涓嬪彂鍚庯紝鍝嶅簲缁撴灉锛� {}", exchange);
- if (Objects.isNull(exchange.getBody())) {
- throw new CoolException("浠诲姟涓嬪彂澶辫触锛侊紒锛岃繑鍥炲弬鏁颁负绌猴紒锛侊紒");
- } else {
+ if (flowStepInstance.getStepType().equals(MissionStepType.MISSION_STEP_TYPE_NO_EXECUTE.type)) {
+ /**鍩虹閰嶇疆閾炬帴*/
+ log.info("浠诲姟瓒婅繃锛� 璇锋眰鍙傛暟锛� {}", JSONObject.toJSONString(flowStepInstance));
try {
- ObjectMapper objectMapper = new ObjectMapper();
- objectMapper.coercionConfigDefaults()
- .setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty);
- CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
- if (result.getCode() == 200) {
- task.setTaskStatus(flowStepInstance.getWmsNextTaskStatus());
- flowStepInstance.setStatus((short)3);
+ task.setTaskStatus(flowStepInstance.getWmsNextTaskStatus());
+ flowStepInstance.setStatus((short)3);
- if (flowStepInstance.getStepType().equals(MissionStepType.MISSION_STEP_TYPE_OBTAIN.type)) {
- //鑾峰彇鏁版嵁瑙f瀽
- //褰曞叆
+ flowStepInstanceService.updateById(flowStepInstance);
+ taskService.updateById(task);
+
+ if (flowStepInstance.getWmsNextTaskStatus() != 9999) {
+ FlowStepInstance nextFlowStepInstance = flowStepInstanceService.getOne(new LambdaQueryWrapper<FlowStepInstance>()
+ .eq(FlowStepInstance::getStatus, (short)0)
+ .eq(FlowStepInstance::getTaskNo, flowStepInstance.getTaskNo())
+ .eq(FlowStepInstance::getStepOrder, flowStepInstance.getStepOrder() + 1)
+ .eq(FlowStepInstance::getWmsNowTaskStatus, flowStepInstance.getWmsNextTaskStatus()));
+ if (Cools.isEmpty(nextFlowStepInstance)) {
+ throw new CoolException("浠诲姟鍙�"+task.getTaskCode()+"浠诲姟姝ラ涓㈠け锛侊紒锛�");
}
+ nextFlowStepInstance.setStatus((short)1);
- flowStepInstanceService.updateById(flowStepInstance);
- taskService.updateById(task);
-
- if (flowStepInstance.getWmsNextTaskStatus() != 9999) {
- FlowStepInstance nextFlowStepInstance = flowStepInstanceService.getOne(new LambdaQueryWrapper<FlowStepInstance>()
- .eq(FlowStepInstance::getStatus, (short)0)
- .eq(FlowStepInstance::getTaskNo, flowStepInstance.getTaskNo())
- .eq(FlowStepInstance::getStepOrder, flowStepInstance.getStepOrder() + 1)
- .eq(FlowStepInstance::getWmsNowTaskStatus, flowStepInstance.getWmsNextTaskStatus()));
- if (Cools.isEmpty(nextFlowStepInstance)) {
- throw new CoolException("浠诲姟鍙�"+task.getTaskCode()+"浠诲姟姝ラ涓㈠け锛侊紒锛�");
- }
- nextFlowStepInstance.setStatus((short)1);
-
- flowStepInstanceService.updateById(nextFlowStepInstance);
- } else {
- taskInstance.setStatus((short)2);
- taskInstanceService.updateById(taskInstance);
- }
+ flowStepInstanceService.updateById(nextFlowStepInstance);
} else {
- flowStepInstance.setRetryTimes(flowStepInstance.getRetryTimes() + 1);
- if (flowStepInstance.getRetryTimes()>5){
- flowStepInstance.setStatus((short)4);
- flowStepInstanceService.updateById(flowStepInstance);
- log.error("浠诲姟涓嬪彂澶辫触锛岄噸璇曟鏁板ぇ浜庣瓑浜庝簲娆★紝鏍囪涓哄け璐ワ紒锛侊紒");
- } else {
- flowStepInstanceService.updateById(flowStepInstance);
- log.error("浠诲姟涓嬪彂澶辫触锛岀瓑寰呴噸璇�....");
- }
+ taskInstance.setStatus((short)2);
+ taskInstanceService.updateById(taskInstance);
}
- } catch (JsonProcessingException e) {
+ flowInstanceService.updateById(flowInstance);
+ taskInstanceNodeService.updateById(taskInstanceNode);
+ } catch (Exception e) {
throw new CoolException(e.getMessage());
}
+ } else {
+ /**浠诲姟涓嬪彂鎺ュ彛*/
+ String pubTakUrl = wmsOpenApi.getHost() + ":" + wmsOpenApi.getPort() + RcsConstant.MISSION_TRANSFER_STATION;
+
+ /**鍩虹閰嶇疆閾炬帴*/
+ log.info("浠诲姟涓嬪彂锛岃姹傚湴鍧�锛� {}锛� 璇锋眰鍙傛暟锛� {}", pubTakUrl, JSONObject.toJSONString(flowStepInstance));
+ HttpHeaders headers = new HttpHeaders();
+ headers.add("Content-Type", "application/json");
+ headers.add("api-version", "v2.0");
+ HttpEntity httpEntity = new HttpEntity(flowStepInstance, 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) {
+ task.setTaskStatus(flowStepInstance.getWmsNextTaskStatus());
+ flowStepInstance.setStatus((short)3);
+
+ if (flowStepInstance.getStepType().equals(MissionStepType.MISSION_STEP_TYPE_OBTAIN.type)) {
+ //鑾峰彇鏁版嵁瑙f瀽
+ //褰曞叆
+ }
+
+ flowStepInstanceService.updateById(flowStepInstance);
+ taskService.updateById(task);
+
+ if (flowStepInstance.getWmsNextTaskStatus() != 9999) {
+ FlowStepInstance nextFlowStepInstance = flowStepInstanceService.getOne(new LambdaQueryWrapper<FlowStepInstance>()
+ .eq(FlowStepInstance::getStatus, (short)0)
+ .eq(FlowStepInstance::getTaskNo, flowStepInstance.getTaskNo())
+ .eq(FlowStepInstance::getStepOrder, flowStepInstance.getStepOrder() + 1)
+ .eq(FlowStepInstance::getWmsNowTaskStatus, flowStepInstance.getWmsNextTaskStatus()));
+ if (Cools.isEmpty(nextFlowStepInstance)) {
+ throw new CoolException("浠诲姟鍙�"+task.getTaskCode()+"浠诲姟姝ラ涓㈠け锛侊紒锛�");
+ }
+ nextFlowStepInstance.setStatus((short)1);
+
+ flowStepInstanceService.updateById(nextFlowStepInstance);
+ } else {
+ taskInstance.setStatus((short)2);
+ taskInstanceService.updateById(taskInstance);
+ }
+ } else {
+ flowStepInstance.setRetryTimes(flowStepInstance.getRetryTimes() + 1);
+ if (flowStepInstance.getRetryTimes()>5){
+ flowStepInstance.setStatus((short)4);
+ flowStepInstanceService.updateById(flowStepInstance);
+ log.error("浠诲姟涓嬪彂澶辫触锛岄噸璇曟鏁板ぇ浜庣瓑浜庝簲娆★紝鏍囪涓哄け璐ワ紒锛侊紒");
+ } else {
+ flowStepInstanceService.updateById(flowStepInstance);
+ log.error("浠诲姟涓嬪彂澶辫触锛岀瓑寰呴噸璇�....");
+ }
+ }
+ } catch (JsonProcessingException e) {
+ throw new CoolException(e.getMessage());
+ }
+ }
}
}
+ } catch (Exception e) {
+ throw new CoolException(e.getMessage());
}
}
@@ -256,7 +262,7 @@
}
for (Task task : tasks) {
/**浠诲姟涓嬪彂鎺ュ彛*/
- String pubTakUrl = rcsApi.getHost() + ":" + rcsApi.getPort() + RcsConstant.REPORT_TASKS;
+ String pubTakUrl = wmsOpenApi.getHost() + ":" + wmsOpenApi.getPort() + RcsConstant.REPORT_TASKS;
/**鍩虹閰嶇疆閾炬帴*/
log.info("浠诲姟涓婃姤锛岃姹傚湴鍧�锛� {}锛� 璇锋眰鍙傛暟锛� {}", pubTakUrl, JSONObject.toJSONString(""));
--
Gitblit v1.9.1