From c426aa30a98ce85b494de121c92e2a7d01673930 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期一, 02 三月 2026 08:16:40 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/devlop-phyz' into devlop-phyz
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java | 78 +++++++++++++------
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java | 138 ++++++++++++++++++++++++++++++++-
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsWcsServiceImpl.java | 3
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java | 12 +++
5 files changed, 198 insertions(+), 35 deletions(-)
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsWcsServiceImpl.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsWcsServiceImpl.java
index 4ccf160..f6c7874 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsWcsServiceImpl.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsWcsServiceImpl.java
@@ -76,7 +76,8 @@
} else if (param.getStepType().equals(MissionStepTypeEnum.MISSION_STEP_TYPE_OBTAIN.type)){
return issueTaskWcsHttpREQUEST(param);//寰呭畬鍠�
} else if (param.getStepType().equals(MissionStepTypeEnum.MISSION_STEP_TYPE_NO_EXECUTE.type)){
- return issueTaskWcsHttpREQUEST(param);//寰呭畬鍠�
+// return issueTaskWcsHttpREQUEST(param);//寰呭畬鍠�
+ return R.ok();
}
return R.error();
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
index 67eefb8..442ea12 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -621,7 +621,7 @@
for (OrderOutItemDto orderOutItemDto : orderOutTaskItemAuto){
OutStockToTaskParams outStockToTaskParams = new OutStockToTaskParams(orderOutItemDto);
outStockToTaskParams.setId(orderOutItemDto.getLocItem().getId());
-// outStockToTaskParams.setOutQty(locItemServiceOne.getAnfme());
+ outStockToTaskParams.setOutQty(orderOutItemDto.getOutQty());
outStockToTaskParams.setLocCode(orderOutItemDto.getLocItem().getLocCode());
outStockToTaskParams.setBarcode(orderOutItemDto.getLocItem().getBarcode());
outStockToTaskParams.setSiteNo(stationId);
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java
index 69be08c..5024eeb 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java
@@ -101,6 +101,12 @@
if (null !=basStation.getContainerTypes()){
basStation.setContainerType(basStation.getContainerTypes().toString());
}
+ if (Cools.isEmpty(basStation.getStationAlias())){
+ basStation.setStationAlias(new ArrayList<>());
+ basStation.getStationAlias().add(basStation.getStationName());
+ } else if (!basStation.getStationAlias().contains(basStation.getStationName())){
+ basStation.getStationAlias().add(basStation.getStationName());
+ }
if (!basStationService.save(basStation)) {
return R.error("淇濆瓨澶辫触");
}
@@ -122,6 +128,12 @@
if (null !=basStation.getUseStatus() && basStation.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)){
basStation.setBarcode(null);
}
+ if (Cools.isEmpty(basStation.getStationAlias())){
+ basStation.setStationAlias(new ArrayList<>());
+ basStation.getStationAlias().add(basStation.getStationName());
+ } else if (!basStation.getStationAlias().contains(basStation.getStationName())){
+ basStation.getStationAlias().add(basStation.getStationName());
+ }
if (!basStationService.updateById(basStation)) {
return R.error("鏇存柊澶辫触");
}
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 28ef1fb..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,6 +11,7 @@
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;
@@ -109,6 +110,8 @@
private SubsystemFlowTemplateServiceImpl subsystemFlowTemplateService;
@Autowired
private FlowStepTemplateServiceImpl flowStepTemplateService;
+ @Autowired
+ private WarehouseAreasService warehouseAreasService;
/**
@@ -176,15 +179,136 @@
MissionTaskIssueParam missionTaskIssueParam = new MissionTaskIssueParam(flowStepInstance,subsystemFlowTemplate,flowStepTemplate);
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("浠诲姟涓嬪彂澶辫触,婧愮偣鏈煡璇㈠埌锛岄噸璇曟鏁板ぇ浜庣瓑浜庝簲娆★紝鏍囪涓哄け璐ワ紒锛侊紒");
+ } else {
+ flowStepInstanceService.updateById(flowStepInstance);
+ log.error("浠诲姟涓嬪彂澶辫触,婧愮偣鏈煡璇㈠埌鐩爣鐐规湭鏌ヨ鍒帮紝绛夊緟閲嶈瘯....");
+ }
+ return;
+ } else {
+ missionTaskIssueParam.setSourceCode(basStation.getStationName());
+ }
+ }
+ 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());
+ }
- missionTaskIssueParam.setSourceCode(taskInstance.getSourceCode());
- missionTaskIssueParam.setTargetCode(taskInstance.getTargetCode());
- missionTaskIssueParam.setLocNo(task.getTargLoc());
- missionTaskIssueParam.setSourcelocNo(task.getOrgLoc());
- missionTaskIssueParam.setSourcestaNo(task.getOrgSite());
- missionTaskIssueParam.setStaNo(task.getTargSite());
- missionTaskIssueParam.setBarcode(task.getBarcode());
+ } 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;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
index 04d3d0e..dfdfba0 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -513,7 +513,7 @@
throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
//浼樺厛鐢熸垚娴呭簱浣嶄换鍔�
- List<OutStockToTaskParams> Items = params.stream()
+ List<OutStockToTaskParams> itemList = params.stream()
.sorted(Comparator.comparing(OutStockToTaskParams::getLocCode)
.thenComparing(item -> {
return LocUtils.isShallowLoc(item.getLocCode()) ? 1 : 0;
@@ -523,32 +523,67 @@
if (Cools.isEmpty(wkOrder)) {
throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
}
-
- for (OutStockToTaskParams param : Items) {
+ List<List<OutStockToTaskParams>> itemLists = new ArrayList<>();
+ List<String> locList = new ArrayList<>();
+ for (OutStockToTaskParams item : itemList) {
+ if (!locList.contains(item.getLocCode())) {
+ List<OutStockToTaskParams> items = new ArrayList<>();
+ locList.add(item.getLocCode());
+ items.add(item);
+ itemLists.add(items);
+ } else {
+ for (List<OutStockToTaskParams> items : itemLists){
+ boolean sign = false;
+ for (OutStockToTaskParams itemOld : items) {
+ if (itemOld.getLocCode().equals(item.getLocCode())) {
+ sign = true;
+ items.add(item);
+ }
+ break;
+ }
+ if (sign) {
+ break;
+ }
+ }
+ }
+ }
+ for (List<OutStockToTaskParams> items : itemLists){
+ OutStockToTaskParams param = items.get(0);
if (Objects.isNull(param) || StringUtils.isBlank(param.getLocCode())) {
continue;
}
Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, param.getLocCode()).eq(Loc::getBarcode, param.getBarcode()));
if (!Objects.isNull(loc)) {
List<LocItem> locItems = new ArrayList<>();
- LocItem locItem = locItemService.getById(param.getId());
+ for (OutStockToTaskParams itemOld : items) {
+ LocItem locItem = locItemService.getById(itemOld.getId());
- WkOrderItem orderItem = outStockItemService.getOne(new LambdaQueryWrapper<WkOrderItem>()
- .eq(WkOrderItem::getOrderId, outId)
+ WkOrderItem orderItem = outStockItemService.getOne(new LambdaQueryWrapper<WkOrderItem>()
+ .eq(WkOrderItem::getOrderId, outId)
// .eq(StringUtils.isNotBlank(locItem.getBatch()), WkOrderItem::getSplrBatch, locItem.getBatch())
- .eq(WkOrderItem::getMatnrId, locItem.getMatnrId()));
+ .eq(WkOrderItem::getMatnrId, locItem.getMatnrId()));
// .eq(StringUtils.isNotBlank(locItem.getFieldsIndex()), WkOrderItem::getFieldsIndex, locItem.getFieldsIndex())
- if (Objects.isNull(orderItem)) {
- throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�");
- }
+ if (Objects.isNull(orderItem)) {
+ throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�");
+ }
- locItem.setOutQty(param.getOutQty())
- .setBatch(param.getBatch())
- .setSourceId(outId)
- .setSourceCode(orderItem.getOrderCode())
- .setSource(orderItem.getId());
- locItems.add(locItem);
+ locItem.setOutQty(itemOld.getOutQty())
+ .setBatch(itemOld.getBatch())
+ .setSourceId(outId)
+ .setSourceCode(orderItem.getOrderCode())
+ .setSource(orderItem.getId());
+ locItems.add(locItem);
+
+
+ Double workQty = Math.round((orderItem.getWorkQty() + locItem.getOutQty()) * 10000) / 10000.0;
+
+ orderItem.setUpdateBy(loginUserId).setUpdateTime(new Date()).setWorkQty(workQty);
+
+ if (!outStockItemService.updateById(orderItem)) {
+ throw new CoolException("鍗曟嵁鏄庣粏淇敼澶辫触锛侊紒");
+ }
+ }
LocToTaskParams taskParams = new LocToTaskParams();
taskParams.setType(Constants.TASK_TYPE_ORDER_OUT_STOCK)
@@ -567,19 +602,10 @@
logger.error("UNK", e);
throw new CoolException(e.getMessage());
}
-
-
- Double workQty = Math.round((orderItem.getWorkQty() + locItem.getOutQty()) * 10000) / 10000.0;
-
- orderItem.setUpdateBy(loginUserId).setUpdateTime(new Date()).setWorkQty(workQty);
-
- if (!outStockItemService.updateById(orderItem)) {
- throw new CoolException("鍗曟嵁鏄庣粏淇敼澶辫触锛侊紒");
- }
}
}
- Double sum = Items.stream().mapToDouble(OutStockToTaskParams::getOutQty).sum();
+ Double sum = itemList.stream().mapToDouble(OutStockToTaskParams::getOutQty).sum();
//鏇存柊鍑哄簱鍗曟槑缁嗗強涓诲崟
WkOrder outOrder = outStockService.getById(outId);
if (Objects.isNull(outOrder)) {
--
Gitblit v1.9.1