From d11eff090fb94927fa98a594b6c7ab4d3f04f3cd Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期六, 28 二月 2026 11:00:33 +0800
Subject: [PATCH] lsh#
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java | 384 ++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 296 insertions(+), 88 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 bc90f6a..97d64bc 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
@@ -11,10 +11,12 @@
import com.fasterxml.jackson.databind.cfg.CoercionInputShape;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.common.SpringUtils;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.config.RemotesInfoProperties;
import com.vincent.rsf.server.api.entity.CommonResponse;
import com.vincent.rsf.server.api.entity.constant.RcsConstant;
+import com.vincent.rsf.server.api.entity.params.MissionTaskIssueParam;
import com.vincent.rsf.server.api.entity.params.TaskItemParam;
import com.vincent.rsf.server.api.entity.params.WcsTaskParams;
import com.vincent.rsf.server.api.utils.LocUtils;
@@ -28,10 +30,7 @@
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.entity.*;
import com.vincent.rsf.server.system.service.ConfigService;
-import com.vincent.rsf.server.system.service.impl.FlowInstanceServiceImpl;
-import com.vincent.rsf.server.system.service.impl.FlowStepInstanceServiceImpl;
-import com.vincent.rsf.server.system.service.impl.TaskInstanceNodeServiceImpl;
-import com.vincent.rsf.server.system.service.impl.TaskInstanceServiceImpl;
+import com.vincent.rsf.server.system.service.impl.*;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import com.vincent.rsf.server.system.utils.SystemAuthUtils;
import lombok.extern.slf4j.Slf4j;
@@ -96,6 +95,8 @@
@Autowired
private RemotesInfoProperties.RcsApi rcsApi;
@Autowired
+ private RemotesInfoProperties.WmsOpenApi wmsOpenApi;
+ @Autowired
private BasStationService basStationService;
@Autowired
private FlowStepInstanceServiceImpl flowStepInstanceService;
@@ -105,6 +106,12 @@
private TaskInstanceNodeServiceImpl taskInstanceNodeService;
@Autowired
private TaskInstanceServiceImpl taskInstanceService;
+ @Autowired
+ private SubsystemFlowTemplateServiceImpl subsystemFlowTemplateService;
+ @Autowired
+ private FlowStepTemplateServiceImpl flowStepTemplateService;
+ @Autowired
+ private WarehouseAreasService warehouseAreasService;
/**
@@ -112,110 +119,262 @@
*/
@Scheduled(cron = "0/2 * * * * ? ")
@Transactional(rollbackFor = Exception.class)
- public void missionTaskEXECUTE() {
- List<String> typeList = Arrays.asList(
- MissionStepType.MISSION_STEP_TYPE_REQUEST.type,
- MissionStepType.MISSION_STEP_TYPE_UNBIND.type,
- MissionStepType.MISSION_STEP_TYPE_BIND.type,
- MissionStepType.MISSION_STEP_TYPE_OBTAIN.type,
- MissionStepType.MISSION_STEP_TYPE_NO_EXECUTE.type);
- List<FlowStepInstance> flowStepInstanceList = flowStepInstanceService.list(new LambdaQueryWrapper<FlowStepInstance>()
- .eq(FlowStepInstance::getStatus, 1).in(FlowStepInstance::getStepType,typeList));
- for (FlowStepInstance flowStepInstance : flowStepInstanceList) {
- FlowInstance flowInstance = flowInstanceService.getById(flowStepInstance.getFlowInstanceId());
- if (Cools.isEmpty(flowInstance)) { continue;}
- TaskInstanceNode taskInstanceNode = taskInstanceNodeService.getById(flowInstance.getNodeInstanceId());
- if (Cools.isEmpty(taskInstanceNode)) { continue;}
- 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::getFlowInstanceId, flowStepInstance.getFlowInstanceId())
- .eq(FlowStepInstance::getFlowInstanceNo, flowStepInstance.getFlowInstanceNo())
- .eq(FlowStepInstance::getStepOrder, flowStepInstance.getStepOrder() + 1)
- .eq(FlowStepInstance::getWmsNowTaskStatus, flowStepInstance.getWmsNextTaskStatus()));
- nextFlowStepInstance.setStatus((short)1);
-
- flowStepInstanceService.updateById(nextFlowStepInstance);
- }
- } 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);
+ 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());
+ }
+ } else {
+ SubsystemFlowTemplate subsystemFlowTemplate = subsystemFlowTemplateService.getById(flowInstance.getFlowTemplateId());
+ FlowStepTemplate flowStepTemplate = flowStepTemplateService.getById(flowStepInstance.getStepTemplateId());
- if (flowStepInstance.getWmsNextTaskStatus() != 9999) {
- FlowStepInstance nextFlowStepInstance = flowStepInstanceService.getOne(new LambdaQueryWrapper<FlowStepInstance>()
- .eq(FlowStepInstance::getFlowInstanceId, flowStepInstance.getFlowInstanceId())
- .eq(FlowStepInstance::getFlowInstanceNo, flowStepInstance.getFlowInstanceNo())
- .eq(FlowStepInstance::getStepOrder, flowStepInstance.getStepOrder() + 1)
- .eq(FlowStepInstance::getWmsNowTaskStatus, flowStepInstance.getWmsNextTaskStatus()));
- nextFlowStepInstance.setStatus((short)1);
+ MissionTaskIssueParam missionTaskIssueParam = new MissionTaskIssueParam(flowStepInstance,subsystemFlowTemplate,flowStepTemplate);
- flowStepInstanceService.updateById(nextFlowStepInstance);
+ missionTaskIssueParam.setType(RcsTaskType.getTypeDesc(task.getTaskType()));
+ boolean souSign = taskInstance.getSourceCode().matches("\\d+");
+ if (souSign){
+ WarehouseAreas warehouseAreas = warehouseAreasService.getById(Long.parseLong(taskInstance.getSourceCode()));
+ if (Cools.isEmpty(warehouseAreas)){
+ BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, taskInstance.getSourceCode()));
+ if (Cools.isEmpty(basStation)){
+ basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
+ .apply("station_alias != '[]'") // 涓嶆槸绌烘暟缁�
+ .apply("JSON_CONTAINS(station_alias, '\"{0}\"') = 1", taskInstance.getSourceCode())
+ .eq(BasStation::getDeleted, 0) // 閫氬父闇�瑕佸姞涓婃湭鍒犻櫎鏉′欢
+ .last("LIMIT 1"));
+ }
+ if (Cools.isEmpty(basStation)){
+ flowStepInstance.setRetryTimes(flowStepInstance.getRetryTimes() + 1);
+ if (flowStepInstance.getRetryTimes()>5){
+ flowStepInstance.setStatus((short)4);
+ flowStepInstanceService.updateById(flowStepInstance);
+ log.error("浠诲姟涓嬪彂澶辫触,婧愮偣鏈煡璇㈠埌锛岄噸璇曟鏁板ぇ浜庣瓑浜庝簲娆★紝鏍囪涓哄け璐ワ紒锛侊紒");
+ } else {
+ flowStepInstanceService.updateById(flowStepInstance);
+ log.error("浠诲姟涓嬪彂澶辫触,婧愮偣鏈煡璇㈠埌鐩爣鐐规湭鏌ヨ鍒帮紝绛夊緟閲嶈瘯....");
+ }
+ return;
+ } else {
+ missionTaskIssueParam.setSourceCode(basStation.getStationName());
}
} else {
+ missionTaskIssueParam.setSourceCode(taskInstance.getSourceCode());
+ }
+ } else {
+ BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, taskInstance.getSourceCode()));
+ if (Cools.isEmpty(basStation)){
+ basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
+ .apply("station_alias != '[]'") // 涓嶆槸绌烘暟缁�
+ .apply("JSON_CONTAINS(station_alias, '\"{0}\"') = 1", taskInstance.getSourceCode())
+ .eq(BasStation::getDeleted, 0) // 閫氬父闇�瑕佸姞涓婃湭鍒犻櫎鏉′欢
+ .last("LIMIT 1")); }
+ if (Cools.isEmpty(basStation)){
flowStepInstance.setRetryTimes(flowStepInstance.getRetryTimes() + 1);
if (flowStepInstance.getRetryTimes()>5){
flowStepInstance.setStatus((short)4);
flowStepInstanceService.updateById(flowStepInstance);
- log.error("浠诲姟涓嬪彂澶辫触锛岄噸璇曟鏁板ぇ浜庣瓑浜庝簲娆★紝鏍囪涓哄け璐ワ紒锛侊紒");
+ log.error("浠诲姟涓嬪彂澶辫触,婧愮偣鏈煡璇㈠埌锛岄噸璇曟鏁板ぇ浜庣瓑浜庝簲娆★紝鏍囪涓哄け璐ワ紒锛侊紒");
} else {
flowStepInstanceService.updateById(flowStepInstance);
- log.error("浠诲姟涓嬪彂澶辫触锛岀瓑寰呴噸璇�....");
+ log.error("浠诲姟涓嬪彂澶辫触,婧愮偣鏈煡璇㈠埌鐩爣鐐规湭鏌ヨ鍒帮紝绛夊緟閲嶈瘯....");
}
+ return;
+ } else {
+ missionTaskIssueParam.setSourceCode(basStation.getStationName());
}
- } catch (JsonProcessingException e) {
- throw new CoolException(e.getMessage());
+ }
+ boolean endSign = taskInstance.getTargetCode().matches("\\d+");
+ if (endSign){
+ WarehouseAreas warehouseAreas = warehouseAreasService.getById(Long.parseLong(taskInstance.getTargetCode()));
+ if (Cools.isEmpty(warehouseAreas)){
+ BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, taskInstance.getTargetCode()));
+ if (Cools.isEmpty(basStation)){
+ basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
+ .apply("station_alias != '[]'") // 涓嶆槸绌烘暟缁�
+ .apply("JSON_CONTAINS(station_alias, '\"{0}\"') = 1", taskInstance.getTargetCode())
+ .eq(BasStation::getDeleted, 0) // 閫氬父闇�瑕佸姞涓婃湭鍒犻櫎鏉′欢
+ .last("LIMIT 1")); }
+ if (Cools.isEmpty(basStation)){
+ flowStepInstance.setRetryTimes(flowStepInstance.getRetryTimes() + 1);
+ if (flowStepInstance.getRetryTimes()>5){
+ flowStepInstance.setStatus((short)4);
+ flowStepInstanceService.updateById(flowStepInstance);
+ log.error("浠诲姟涓嬪彂澶辫触,鐩爣鐐规湭鏌ヨ鍒帮紝閲嶈瘯娆℃暟澶т簬绛変簬浜旀锛屾爣璁颁负澶辫触锛侊紒锛�");
+ } else {
+ flowStepInstanceService.updateById(flowStepInstance);
+ log.error("浠诲姟涓嬪彂澶辫触,鐩爣鐐规湭鏌ヨ鍒帮紝绛夊緟閲嶈瘯....");
+ }
+ return;
+ } else {
+ missionTaskIssueParam.setTargetCode(basStation.getStationName());
+ }
+
+ } else {
+ missionTaskIssueParam.setTargetCode(taskInstance.getTargetCode());
+ }
+ } else {
+ BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, taskInstance.getTargetCode()));
+ if (Cools.isEmpty(basStation)){
+ basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
+ .apply("station_alias != '[]'") // 涓嶆槸绌烘暟缁�
+ .apply("JSON_CONTAINS(station_alias, '\"{0}\"') = 1", taskInstance.getTargetCode())
+ .eq(BasStation::getDeleted, 0) // 閫氬父闇�瑕佸姞涓婃湭鍒犻櫎鏉′欢
+ .last("LIMIT 1")); }
+ if (Cools.isEmpty(basStation)){
+ flowStepInstance.setRetryTimes(flowStepInstance.getRetryTimes() + 1);
+ if (flowStepInstance.getRetryTimes()>5){
+ flowStepInstance.setStatus((short)4);
+ flowStepInstanceService.updateById(flowStepInstance);
+ log.error("浠诲姟涓嬪彂澶辫触,鐩爣鐐规湭鏌ヨ鍒帮紝閲嶈瘯娆℃暟澶т簬绛変簬浜旀锛屾爣璁颁负澶辫触锛侊紒锛�");
+ } else {
+ flowStepInstanceService.updateById(flowStepInstance);
+ log.error("浠诲姟涓嬪彂澶辫触,鐩爣鐐规湭鏌ヨ鍒帮紝绛夊緟閲嶈瘯....");
+ }
+ return;
+ } else {
+ missionTaskIssueParam.setTargetCode(basStation.getStationName());
+ }
+ }
+ missionTaskIssueParam.setTaskPri(task.getSort());
+ missionTaskIssueParam.setBarcode(task.getBarcode());
+ missionTaskIssueParam.setTaskNo(task.getTaskCode());
+ if (missionTaskIssueParam.getType().equals(RcsTaskType.RCS_TASK_TYPE_ENUM_IN.type) && endSign){
+ missionTaskIssueParam.setLocNo(task.getTargLoc());
+ missionTaskIssueParam.setSourcestaNo(missionTaskIssueParam.getSourcestaNo());
+ } else if (missionTaskIssueParam.getType().equals(RcsTaskType.RCS_TASK_TYPE_ENUM_OUT.type) && souSign){
+ missionTaskIssueParam.setSourcelocNo(task.getOrgLoc());
+ missionTaskIssueParam.setStaNo(missionTaskIssueParam.getTargetCode());
+ } else if (missionTaskIssueParam.getType().equals(RcsTaskType.RCS_TASK_TYPE_ENUM_TRANSFER.type) && souSign && endSign){
+ missionTaskIssueParam.setSourcelocNo(task.getOrgLoc());
+ missionTaskIssueParam.setLocNo(task.getTargLoc());
+ } else if (missionTaskIssueParam.getType().equals(RcsTaskType.RCS_TASK_TYPE_ENUM_TRANSFER.type) && souSign && !endSign){
+ missionTaskIssueParam.setType(RcsTaskType.RCS_TASK_TYPE_ENUM_TRANSFER.type);
+ missionTaskIssueParam.setSourcelocNo(task.getOrgLoc());
+ missionTaskIssueParam.setStaNo(missionTaskIssueParam.getTargetCode());
+ } else if (missionTaskIssueParam.getType().equals(RcsTaskType.RCS_TASK_TYPE_ENUM_TRANSFER.type) && !souSign && endSign){
+ missionTaskIssueParam.setType(RcsTaskType.RCS_TASK_TYPE_ENUM_IN.type);
+ missionTaskIssueParam.setSourcestaNo(missionTaskIssueParam.getSourcestaNo());
+ missionTaskIssueParam.setLocNo(task.getTargLoc());
+ } else if (missionTaskIssueParam.getType().equals(RcsTaskType.RCS_TASK_TYPE_ENUM_STA.type) || (!souSign && !endSign)){
+ missionTaskIssueParam.setType(RcsTaskType.RCS_TASK_TYPE_ENUM_STA.type);
+ missionTaskIssueParam.setSourcestaNo(missionTaskIssueParam.getSourcestaNo());
+ missionTaskIssueParam.setStaNo(missionTaskIssueParam.getTargetCode());
+ }
+
+ /**浠诲姟涓嬪彂鎺ュ彛*/
+ 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(missionTaskIssueParam, 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());
}
}
@@ -232,12 +391,57 @@
completeInStock();
complateOutStock();
completeStock9999();
+ completeStock10000();
}
public void completeStock9999() throws Exception {
try{
- List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskStatus, TaskStsType.MISSION_TRANSFER.id).select(Task::getId));
+ List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskStatus, TaskStsType.MISSION_TRANSFER.id));
+ if (tasks.isEmpty()) {
+ return;
+ }
+ for (Task task : tasks) {
+ /**浠诲姟涓嬪彂鎺ュ彛*/
+ String pubTakUrl = wmsOpenApi.getHost() + ":" + wmsOpenApi.getPort() + RcsConstant.REPORT_TASKS;
+
+ /**鍩虹閰嶇疆閾炬帴*/
+ 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(task, 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( TaskStsType.MISSION_TRANSFER_END.id);
+ taskService.updateById(task);
+ }
+ } catch (JsonProcessingException e) {
+ throw new CoolException(e.getMessage());
+ }
+ }
+ }
+// List<Long> longSet = tasks.stream().map(Task::getId).collect(Collectors.toList());
+// List<Task> vaildTasks = taskService.list(new LambdaQueryWrapper<Task>().in(Task::getId, longSet));
+// taskService.complateInTask(vaildTasks);
+ } catch (Exception e) {
+ log.error(e.getMessage());
+ }
+ }
+
+
+ public void completeStock10000() throws Exception {
+ try{
+ List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskStatus, TaskStsType.MISSION_TRANSFER_END.id));
if (tasks.isEmpty()) {
return;
}
@@ -771,6 +975,10 @@
tasks.forEach(task -> {
TaskLog taskLog = new TaskLog();
BeanUtils.copyProperties(task, taskLog);
+ taskLog.setOrgLoc(task.getOrgLoc())
+ .setTargLoc(task.getTargLoc())
+ .setTargSite(task.getTargSite())
+ .setOrgSite(task.getOrgSite());
taskLog.setTaskId(task.getId())
.setId(null);
if (!taskLogService.save(taskLog)) {
--
Gitblit v1.9.1