From 0f3ba9d165742d5653f7dc4797223cee7b5856f4 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期四, 05 三月 2026 17:50:37 +0800
Subject: [PATCH] lsh#
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java | 104 ++++++++++++++++++++++++++++++++--
rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java | 20 ++++++
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocToTaskParams.java | 2
4 files changed, 119 insertions(+), 9 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocToTaskParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocToTaskParams.java
index 98f5652..2816e5a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocToTaskParams.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocToTaskParams.java
@@ -35,6 +35,6 @@
@ApiModelProperty("澶囨敞")
private String memo;
- @ApiModelProperty("鐩爣鍖哄煙闆嗗悎")
+ @ApiModelProperty("鐩爣鍖哄煙ID闆嗗悎")
private List<String> targSiteAreaList;
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java
index a206dfa..e3a1518 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java
@@ -3,12 +3,16 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.SnowflakeIdWorker;
-import com.vincent.rsf.server.manager.entity.Loc;
-import com.vincent.rsf.server.manager.entity.Task;
+import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.LocStsType;
import com.vincent.rsf.server.manager.enums.TaskStsType;
import com.vincent.rsf.server.manager.enums.TaskType;
import com.vincent.rsf.server.manager.service.LocService;
import com.vincent.rsf.server.manager.service.TaskService;
+import com.vincent.rsf.server.manager.service.impl.BasStationAreaServiceImpl;
+import com.vincent.rsf.server.manager.service.impl.BasStationServiceImpl;
+import com.vincent.rsf.server.manager.service.impl.DeviceSiteServiceImpl;
import com.vincent.rsf.server.system.constant.GlobalConfigCode;
import com.vincent.rsf.server.system.entity.*;
import com.vincent.rsf.server.system.service.ConfigService;
@@ -63,6 +67,12 @@
private FlowInstanceServiceImpl flowInstanceService;
@Autowired
private FlowStepInstanceServiceImpl flowStepInstanceService;
+ @Autowired
+ private BasStationAreaServiceImpl basStationAreaService;
+ @Autowired
+ private DeviceSiteServiceImpl deviceSiteService;
+ @Autowired
+ private BasStationServiceImpl basStationService;
/**
* @author Munch D. Luffy
@@ -82,6 +92,8 @@
return;
}
taskList.forEach(task -> {
+ boolean endSign = true;
+ boolean endSignUp = false;
String sou = null;
String end = null;
if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)
@@ -97,9 +109,18 @@
|| task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type)
|| task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)
|| task.getTaskType().equals(TaskType.TASK_TYPE_EMPTY_OUT.type)) {
+ endSignUp = true;
Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getOrgLoc()));
sou = loc.getAreaId().toString();
end = task.getTargSite();
+
+ BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
+ .eq(BasStation::getStationName, end)
+ .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
+ );
+ if (Cools.isEmpty(basStation)) {
+ endSign = false;
+ }
} else if (task.getTaskType().equals(TaskType.TASK_TYPE_CROSS_DOCKING_OUT.type)){
Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getOrgLoc()));
sou = loc.getAreaId().toString();
@@ -111,7 +132,7 @@
sou = loc2.getAreaId().toString();
}
List<TaskPathTemplateMerge> taskPathTemplateMergeList = taskPathTemplateMergeService.list(new LambdaQueryWrapper<TaskPathTemplateMerge>().eq(TaskPathTemplateMerge::getSourceType, sou).eq(TaskPathTemplateMerge::getTargetType, end));
- if (Objects.isNull(taskPathTemplateMergeList) || taskPathTemplateMergeList.isEmpty()) {
+ if (Objects.isNull(taskPathTemplateMergeList) || taskPathTemplateMergeList.isEmpty() || !endSign) {
List<TaskPathTemplateMerge> list = taskPathTemplateMergeService.list(new LambdaQueryWrapper<TaskPathTemplateMerge>().eq(TaskPathTemplateMerge::getStepSize,1));
if (!Cools.isEmpty(list)) {
List<String[]> stationList = new ArrayList<>();
@@ -119,7 +140,7 @@
stationList.add(taskPathTemplate.route());
});
List<Long> longs = RouteWmsStepFlow.routeGet(stationList, sou, end);
- if (longs != null && !longs.isEmpty()) {
+ if (endSign && longs != null && !longs.isEmpty()) {
TaskPathTemplateMerge taskPathTemplateMerge = new TaskPathTemplateMerge();
taskPathTemplateMerge.setTemplateCode(sou+"===>"+end);
taskPathTemplateMerge.setTemplateName(sou+"===>"+end);
@@ -133,12 +154,69 @@
taskPathTemplateMerge.setConditionExpression(longList);
taskPathTemplateMerge.setStepSize(longList.size());
taskPathTemplateMergeService.save(taskPathTemplateMerge);
+ } 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_MERGE_OUT.type)
+ || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)
+ || task.getTaskType().equals(TaskType.TASK_TYPE_EMPTY_OUT.type)) {//鍑哄簱
+ //娌℃湁璺緞 杩涘叆搴撳尯绛涢�夌珯鐐�
+ List<String> targSiteArea = task.getTargSiteArea();
+ //鎻愬彇鍑烘墍鏈夌珯鐐�
+ List<String> siteList = new ArrayList<>();
+ //绛涢�夊嚭瀛樺湪璺緞鐨勭珯鐐�
+ List<String> siteListRoute = new ArrayList<>();
+ //绛涢�夊彲鏇挎崲閫夐」
+ List<String> siteListUp = new ArrayList<>();
+ if (targSiteArea != null && !targSiteArea.isEmpty()) {
+ for (String areaId : targSiteArea) {
+ BasStationArea basStationArea = basStationAreaService.getById(Long.parseLong(areaId));
+ if (basStationArea == null || basStationArea.getStationAlias() == null || basStationArea.getStationAlias().isEmpty()) {
+ continue;
+ }
+ siteList.addAll(basStationArea.getStationAlias());
+ }
+ if (!siteList.isEmpty()) {
+ //鏌ヨ绔欑偣璺緞
+ for (String site : siteList) {
+ List<Long> routeGet = RouteWmsStepFlow.routeGet(stationList, sou, site);
+ if (routeGet!=null && !routeGet.isEmpty()){
+ siteListRoute.add(site);
+ }
+ }
+ Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getOrgLoc()));
+ //鏌ヨ绔欑偣閰嶇疆
+ if (!siteListRoute.isEmpty()) {
+ for (String site : siteListRoute) {
+ //鎷f枡鍑哄簱 -- 鐩樼偣鍑哄簱
+ DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
+ .eq(DeviceSite::getSite, site)
+ .eq(!Objects.isNull(loc.getChannel()),DeviceSite::getChannel, loc.getChannel())
+ .eq(DeviceSite::getType, task.getTaskType()).last("limit 1"),false);
+ if (!Objects.isNull(deviceSite)) {
+ BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
+ .eq(BasStation::getStationName, site)
+ .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
+ );
+ if (Cools.isEmpty(basStation) || !basStation.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+ continue;
+ }
+ task.setTargSite(site);
+ taskService.updateById(task);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
}
// System.out.println("浠诲姟锛�"+task.getTaskCode()+"鏌ヨ姝ュ簭涓猴細"+longs);
}
} else {
//鐢熸垚瀹為檯璺緞
- boolean actualPath = generateActualPath(task, taskPathTemplateMergeList.get(0));
+ boolean actualPath = generateActualPath(task, taskPathTemplateMergeList.get(0),endSignUp);
if (!actualPath) {
log.error("鐢熸垚瀹為檯璺緞澶辫触");
}
@@ -147,7 +225,7 @@
}
- public boolean generateActualPath(Task task,TaskPathTemplateMerge taskPathTemplateMerge) {
+ public boolean generateActualPath(Task task,TaskPathTemplateMerge taskPathTemplateMerge,boolean endSignUp) {
boolean actualPath = false;
List<Integer> conditionExpression = taskPathTemplateMerge.getConditionExpression();
Integer i = 0;//it椤哄簭
@@ -257,6 +335,20 @@
}
}
task.setDeviceSiteId(taskInstance.getId());
+
+ if (endSignUp){
+ BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getTargSite()));
+ if (basStation == null){
+ return false;
+ }
+ if (!basStation.getType().equals(0)){
+ basStation.setUseStatus(LocStsType.LOC_STS_TYPE_S.type);
+ basStationService.updateById(basStation);
+ }
+ }
+
+
+
taskService.updateById(task);
return actualPath;
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java
index 73aa5a7..765774a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java
@@ -12,6 +12,7 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
@@ -31,6 +32,7 @@
* @return
*/
@Override
+ @Transactional(rollbackFor = Exception.class)
public boolean initSites(DeviceSiteParame param) {
if (param.getFlagInit() == 1) {
List<DeviceSite> list = this.list(new LambdaQueryWrapper<DeviceSite>().select(DeviceSite::getId).last("limit 1"));
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
index 92b62c8..46c4d30 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
@@ -201,7 +201,6 @@
locItems = LocManageUtil.getFirstInFirstOutItemList(item.getMatnrCode(), item.getBatch(), item.getAnfme());
}
}
-
for (LocItem locItem : locItems) {
Loc loc = locService.getById(locItem.getLocId());
List<LocItem> itemList = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId()));
@@ -244,9 +243,18 @@
.apply("JSON_CONTAINS(container_type, {0}) = 1", containerType.getContainerType().toString())//瀹瑰櫒绫诲瀷
.eq(BasStationArea::getDeleted, 0));
// .apply("JSON_CONTAINS(station_alias, '\"{0}\"') = 1", null)//鍖哄煙鍖呭惈绔欑偣闆�
+ if (basStationAreas.isEmpty()){
+ throw new CoolException("鏈壘鍒扮鍚堟潯浠剁珯鐐癸紒锛侊紒璇锋鏌ュ簱鍖洪厤缃紒锛侊紒");
+ }
List<String> targSiteAreaList = new ArrayList<>();
for (BasStationArea basStationArea : basStationAreas) {
- targSiteAreaList.add(basStationArea.getStationAreaId());
+ if (basStationArea.getStationAlias().isEmpty()){
+ continue;
+ }
+ targSiteAreaList.add(basStationArea.getId().toString());
+ }
+ if (targSiteAreaList.isEmpty()){
+ throw new CoolException("鏈壘鍒扮鍚堟潯浠剁珯鐐癸紒锛侊紒璇锋鏌ュ簱鍖洪厤缃紒锛侊紒");
}
int count = 0;
for (BasStationArea basStationArea : basStationAreas) {
@@ -266,6 +274,10 @@
// Set<String> stationSet = deviceSites.stream().map(DeviceSite::getSite).collect(Collectors.toSet());
//宸蹭娇鐢ㄧ珯鐐�
Set<String> stas = stations.stream().map(BasStation::getStationName).collect(Collectors.toSet());
+ if (stas.size() == maps.size()) {
+ stations = new ArrayList<>();
+ stas = stations.stream().map(BasStation::getStationName).collect(Collectors.toSet());
+ }
BasStationService basStationService = SpringUtils.getBean(BasStationService.class);
BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
.eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
@@ -280,6 +292,10 @@
if (!Objects.isNull(basStation)) {
orderOutItemDto.setSiteNo(basStation.getStationName());
// throw new CoolException("绔欓粸涓嶅瓨鍦紒锛�");
+ } else if (!stas.isEmpty()) {
+ orderOutItemDto.setSiteNo(basStationArea.getStationAlias().get(0));
+ } else {
+ throw new CoolException("鏈壘鍒扮鍚堟潯浠剁珯鐐癸紒锛侊紒璇锋鏌ュ簱鍖烘垨鑰呰矾寰勯厤缃紒锛侊紒");
}
} else {
if (Objects.isNull(basStation)) {
--
Gitblit v1.9.1