From 85eb4383be51f548a7e80112c4e6544a119a10cf Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期一, 28 四月 2025 11:13:31 +0800
Subject: [PATCH] #生成入库任务-ctu
---
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/LocUseStatusType.java | 18 +++++++++
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 89 ++++++++++++++++++++++++++++++++++++++++----
2 files changed, 98 insertions(+), 9 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/LocUseStatusType.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/LocUseStatusType.java
new file mode 100644
index 0000000..dfb4da7
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/LocUseStatusType.java
@@ -0,0 +1,18 @@
+package com.vincent.rsf.server.api.entity.enums;
+
+public enum LocUseStatusType {
+ Empty_Slot("O","绌哄簱浣�"),
+ In_Stock("F","鍦ㄥ簱"),
+ Empty_Pallet("D","绌烘墭鐩�")
+ ;
+
+
+
+ LocUseStatusType(String type, String desc) {
+ this.type = type;
+ this.desc = desc;
+ }
+
+ public String type;
+ public String desc;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
index b2e2d4f..57b3e1f 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -7,6 +7,7 @@
import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto;
import com.vincent.rsf.server.api.entity.dto.LocTypeDto;
import com.vincent.rsf.server.api.controller.params.TaskInParam;
+import com.vincent.rsf.server.api.entity.enums.LocUseStatusType;
import com.vincent.rsf.server.api.entity.enums.OrderType;
import com.vincent.rsf.server.api.entity.enums.TaskStsType;
import com.vincent.rsf.server.api.entity.enums.TaskType;
@@ -327,7 +328,8 @@
break;
case "SXC": //鍥涘悜搴�
break;
- case "CTU": //鍥涘悜搴�
+ case "CTU": //ctu
+ dto = getLocNoCtu(param.getArea(), param.getSourceStaNo(), matnr,batch, locTypeDto, 0, param.getIoType());
break;
}
return dto;
@@ -384,7 +386,7 @@
String shallowLocNo = LocUtils.getShallowLoc(slaveProperties, loc1.getCode());
// 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣�
Loc shallowLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode,shallowLocNo));
- if (shallowLoc != null && shallowLoc.getUseStatus().equals("O")) {
+ if (shallowLoc != null && shallowLoc.getUseStatus().equals(LocUseStatusType.Empty_Slot.type)) {
if (LocUtils.locMoveCheckLocTypeComplete(shallowLoc, locTypeDto)) {
loc = shallowLoc;
deviceNo = shallowLoc.getDeviceNo();
@@ -443,7 +445,7 @@
List<Loc> locMasts = null;
locMasts = locService.list(new LambdaQueryWrapper<Loc>()
.eq(Loc::getRow, nearRow)
- .eq(Loc::getUseStatus, "O")
+ .eq(Loc::getUseStatus, LocUseStatusType.Empty_Slot.type)
.eq(Loc::getType, locTypeDto.getLocType1())
.eq(Loc::getAreaId,area)
.orderByAsc(Loc::getLev)
@@ -458,7 +460,7 @@
//鐩镐技鐗╂枡鎵撳紑锛屽垽鏂繁搴撲綅鏈夋病鏈夎揣锛屾病璐у氨鏀炬繁搴撲綅锛屾湁璐у氨涓嶆搷浣�
Loc locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getRow, shallowLoc)
- .eq(Loc::getUseStatus, "O")
+ .eq(Loc::getUseStatus, LocUseStatusType.Empty_Slot.type)
.eq(Loc::getAreaId,area)
);
if (!Cools.isEmpty(locMast2)) {
@@ -469,7 +471,7 @@
//鐩镐技鐗╂枡鍏抽棴锛屽垽鏂繁搴撲綅鏈夋病鏈夎揣锛屾湁璐у氨鏀炬祬搴撲綅锛屾棤璐у氨涓嶆搷浣�
Loc locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getCode, shallowLoc)
- .in(Loc::getUseStatus, "D","F")
+ .in(Loc::getUseStatus, LocUseStatusType.Empty_Pallet.type,LocUseStatusType.In_Stock.type)
.eq(Loc::getAreaId,area)
);
if (!Cools.isEmpty(locMast2)) {
@@ -478,7 +480,7 @@
}else{
locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getCode, shallowLoc)
- .eq(Loc::getUseStatus, "O")
+ .eq(Loc::getUseStatus, LocUseStatusType.Empty_Slot.type)
.eq(Loc::getAreaId,area)
);
if (!Cools.isEmpty(locMast2)) {
@@ -506,7 +508,7 @@
} else {
locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getCode, shallowLoc)
- .in(Loc::getUseStatus, "D","F")
+ .in(Loc::getUseStatus, LocUseStatusType.Empty_Pallet.type,LocUseStatusType.In_Stock.type)
.eq(Loc::getAreaId,area)
);
if (!Cools.isEmpty(locMast2)) {
@@ -525,7 +527,7 @@
}
//鏌ヨ褰撳墠搴撲綅绫诲瀷绌哄簱浣� 灏忎簬5涓垯locmast = null
List<Loc> locTypeLocMasts = locService.list(new LambdaQueryWrapper<Loc>()
- .eq(Loc::getUseStatus, "O")
+ .eq(Loc::getUseStatus, LocUseStatusType.Empty_Slot.type)
.eq(Loc::getDeviceNo, deviceNo)
.eq(Loc::getType, locTypeDto.getLocType1())
.eq(Loc::getAreaId,area)
@@ -534,7 +536,7 @@
loc = null;
}
// 閫掑綊鏌ヨ
- if (Cools.isEmpty(loc) || !loc.getUseStatus().equals("O")) {
+ if (Cools.isEmpty(loc) || !loc.getUseStatus().equals(LocUseStatusType.Empty_Slot.type)) {
// 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
if (times < rowCount * 2) {
times = times + 1;
@@ -558,4 +560,73 @@
inTaskMsgDto.setLocNo(locNo);
return inTaskMsgDto;
}
+
+ private InTaskMsgDto getLocNoCtu(Integer area,Integer sourceStaNo, String matnr, String batch,LocTypeDto locTypeDto, int times,Integer ioType){
+ if (Cools.isEmpty(matnr)) { //鐗╂枡鍙�
+ matnr = "";
+ }
+ if (Cools.isEmpty(batch)) { //鎵规
+ batch = "";
+ }
+ int deviceNo = 0;
+ Loc loc = new Loc();
+ InTaskMsgDto inTaskMsgDto = new InTaskMsgDto();
+ DeviceBind deviceBind = deviceBindService.getById(LocUtils.getAreaType(sourceStaNo));
+ if (Cools.isEmpty(deviceBind)) {
+ throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�===>搴撲綅瑙勫垯鏈煡");
+ }
+
+ List<Loc> loc1 = locService.list(new LambdaQueryWrapper<Loc>()
+ .eq(Loc::getAreaId, area)
+ .eq(Loc::getUseStatus, LocUseStatusType.Empty_Slot.type)
+ .eq(Loc::getType, locTypeDto.getLocType1())
+ .orderByAsc(Loc::getRow)
+ .orderByAsc(Loc::getCol)
+ .orderByAsc(Loc::getLev)
+ );
+ for (Loc loc2 :loc1){
+ if (!LocUtils.locMoveCheckLocTypeComplete(loc2, locTypeDto)) {
+ continue;
+ }
+ loc = loc2;
+ break;
+ }
+ //鏌ユ壘璺緞
+ DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
+ .eq(DeviceSite::getType, ioType)
+ .eq(DeviceSite::getSite, sourceStaNo)
+ .eq(DeviceSite::getDeviceCode, loc.getDeviceNo())
+ );
+ if (Cools.isEmpty(deviceSite)){
+ deviceNo = 0;
+ loc = null;
+ }else {
+ inTaskMsgDto.setStaNo(Integer.parseInt(deviceSite.getDeviceSite()));
+ }
+ // 閫掑綊鏌ヨ
+ if (Cools.isEmpty(loc) || !loc.getUseStatus().equals(LocUseStatusType.Empty_Slot.type)) {
+ // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
+ if (times < 5) {
+ times = times + 1;
+ return getLocNoCrn(area,sourceStaNo,matnr,batch,locTypeDto,times, ioType);
+
+ }
+ // 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣�
+ if (locTypeDto.getLocType1() < 3) {
+ int i = locTypeDto.getLocType1() + 1;
+ locTypeDto.setLocType1(i);
+ return getLocNoCrn(area,sourceStaNo,matnr,batch,locTypeDto,0, ioType);
+ }
+ throw new CoolException("娌℃湁绌哄簱浣�");
+ }
+
+ String locNo = loc.getCode();
+
+ // 杩斿洖dto
+ inTaskMsgDto.setDeviceNo(deviceNo);
+ inTaskMsgDto.setSourceStaNo(sourceStaNo);
+// inTaskMsgDto.setStaNo();
+ inTaskMsgDto.setLocNo(locNo);
+ return inTaskMsgDto;
+ }
}
--
Gitblit v1.9.1