From c809a08cd4746f8c1c33c9158df4e35a55f5bc6e Mon Sep 17 00:00:00 2001
From: dubin <bindu_bean@163.com>
Date: 星期二, 16 十二月 2025 11:02:20 +0800
Subject: [PATCH] #1
---
src/main/java/com/zy/common/properties/SlaveProperties.java | 13 ++-
src/main/java/com/zy/common/model/LocGroupOrder.java | 14 ++++
src/main/java/com/zy/common/web/WcsController.java | 13 +++-
src/main/java/com/zy/common/service/CommonService.java | 126 ++++++++++++++++++++++++++++++++++++++++++
src/main/resources/application.yml | 11 ++-
5 files changed, 166 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/zy/common/model/LocGroupOrder.java b/src/main/java/com/zy/common/model/LocGroupOrder.java
new file mode 100644
index 0000000..60a8829
--- /dev/null
+++ b/src/main/java/com/zy/common/model/LocGroupOrder.java
@@ -0,0 +1,14 @@
+package com.zy.common.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class LocGroupOrder {
+ private List<Integer> rowList;
+
+ private Integer minBay;
+
+ private Integer maxBay;
+}
diff --git a/src/main/java/com/zy/common/properties/SlaveProperties.java b/src/main/java/com/zy/common/properties/SlaveProperties.java
index 7f2b083..82e16b4 100644
--- a/src/main/java/com/zy/common/properties/SlaveProperties.java
+++ b/src/main/java/com/zy/common/properties/SlaveProperties.java
@@ -1,5 +1,6 @@
package com.zy.common.properties;
+import com.zy.common.model.LocGroupOrder;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@@ -15,14 +16,16 @@
@ConfigurationProperties(prefix = "wcs-slave")
public class SlaveProperties {
- private boolean doubleDeep;
+ //private boolean doubleDeep;
// 鍙屾繁搴撲綅鎺掑彿
- private List<Integer> doubleLocs = new ArrayList<>();
+ //private List<Integer> doubleLocs = new ArrayList<>();
// 宸︽繁搴撲綅鎺掑彿
- private List<Integer> doubleLocsLeft = new ArrayList<>();
+ //private List<Integer> doubleLocsLeft = new ArrayList<>();
// 鍙虫繁搴撲綅鎺掑彿
- private List<Integer> doubleLocsRight = new ArrayList<>();
+ //private List<Integer> doubleLocsRight = new ArrayList<>();
- private int groupCount;
+ //private int groupCount;
+
+ private List<LocGroupOrder> locGroupAscOrder;
}
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 92420c0..fcc4046 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -17,7 +17,9 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import javax.sql.rowset.WebRowSet;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
@@ -136,6 +138,130 @@
return null;
}
+ @Transactional
+ public StartupDto getLocNoNew(Integer staDescId, Integer sourceStaNo,FindLocNoAttributeVo findLocNoAttributeVo,LocTypeDto locTypeDto,String barcode){
+ StartupDto startupDto = null;
+ StringBuilder builder = new StringBuilder();
+ try {
+ startupDto = searchLocNoByCrnNo(staDescId,sourceStaNo,findLocNoAttributeVo,locTypeDto);
+ }catch (Exception e){
+ builder.append(e.getMessage()).append(",");
+ }
+
+ if (startupDto == null){
+ builder.append("鎵句笉鍒扮┖搴撲綅");
+ throw new CoolException(builder.toString());
+ }
+ return startupDto;
+ }
+
+ @Transactional
+ public StartupDto searchLocNoByCrnNo(Integer staDescId,Integer sourceStaNo,FindLocNoAttributeVo findLocNoAttributeVo,LocTypeDto locTypeDto){
+ LocMast locMast = null;
+ if (staDescId == 10){
+ //鎼滅储绌烘墭鐩�
+ locMast = searchEmptyPallet(locTypeDto);
+ }else {
+ //婊℃墭鐩�
+ locMast = searchMaxPallet(findLocNoAttributeVo,locTypeDto);
+ }
+
+ if (locMast == null){
+ throw new CoolException("鎵句笉鍒扮鍚堝昂瀵哥殑绌哄簱浣�");
+ }
+
+ StartupDto startupDto = new StartupDto();
+
+ String locNo = locMast.getLocNo();
+ //鐢熸垚宸ヤ綔鍙�
+ int workNo = getWorkNo(0);
+ //杩斿洖dto
+ startupDto.setWorkNo(workNo);
+ startupDto.setCrnNo(locMast.getCrnNo());
+ startupDto.setSourceStaNo(sourceStaNo);
+ startupDto.setLocNo(locNo);
+
+ return startupDto;
+ }
+
+ //鎼滅储婊℃墭鐩樺簱浣�
+ public LocMast searchMaxPallet(FindLocNoAttributeVo findLocNoAttributeVo,LocTypeDto locTypeDto){
+ LocMast targetLocMast = null;
+ List<String> locNos = locDetlService.getSameDetlList(findLocNoAttributeVo.getMatnr());
+ for (String locNo : locNos) {
+ //鑾峰彇閫氶亾缁�
+ List<Integer> locRowGroupDesc = Utils.getLocGroupDesc(slaveProperties,locNo);
+ for (Integer row : locRowGroupDesc) {
+ String deepLocNo = Utils.getLocNo(row,Utils.getBay(locNo),Utils.getLev(locNo));
+ LocMast deepLoc = locMastService.selectById(deepLocNo);
+ if (deepLoc == null){
+ continue;
+ }
+
+ if (deepLoc.getLocSts().equals("F")){
+ continue;
+ }else if (deepLoc.getLocSts().equals("O")){
+ targetLocMast = deepLoc;
+ break;
+ }else {
+ break;
+ }
+ }
+ }
+
+ if (targetLocMast == null){
+ //鐩歌繎鐗╂枡鍖归厤澶辫触锛屾悳绱㈠彲鐢ㄧ┖搴撲綅缁�
+
+ //鑾峰彇璁惧妤煎眰
+ List<Integer> levList = basCrnpService.getLevList();
+ Collections.shuffle(levList);
+
+ List<Integer> locLevList = locMastService.getLevList();
+ levList.addAll(locLevList);
+
+ for (Integer lev : levList) {
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("lev1", lev).orderBy("bay1", true));
+ for (LocMast locMast : locMasts) {
+ String locNo = locMast.getLocNo();
+ //鑾峰彇閫氶亾缁�
+ List<Integer> locRowGroupDesc = Utils.getLocGroupDesc(slaveProperties,locNo);
+
+ boolean flag = true;
+ for (Integer row : locRowGroupDesc) {
+ String deepLocNo = Utils.getLocNo(row,Utils.getBay(locNo),Utils.getLev(locNo));
+ LocMast deepLoc = locMastService.selectById(deepLocNo);
+ if (deepLoc == null){
+ continue;
+ }
+
+ if (!deepLoc.getLocSts().equals("O")){
+ flag = false;
+ break;
+ }
+ }
+
+ if (flag){
+ for (Integer row : locRowGroupDesc) {
+ String deepLocNo = Utils.getLocNo(row,Utils.getBay(locNo),Utils.getLev(locNo));
+ LocMast deepLoc = locMastService.selectById(deepLocNo);
+ if (deepLoc == null){
+ continue;
+ }
+
+ targetLocMast = deepLoc;
+ break;
+ }
+ break;
+ }
+ }
+ if (targetLocMast != null){
+ break;
+ }
+ }
+ }
+ return targetLocMast;
+ }
+
/**
* 妫�绱㈠簱浣嶅彿
*
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index fa70d1e..953753a 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -239,9 +239,14 @@
// 婧愮珯鐐圭姸鎬佹娴�
BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
// 妫�绱㈠簱浣�
- List<String> matnrs = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
- List<String> batchs = waitPakins.stream().map(WaitPakin::getBatch).distinct().collect(Collectors.toList());
- StartupDto dto = commonService.getLocNo(1, devpNo, matnrs.get(0), batchs.get(0), null, locTypeDto);
+// List<String> matnrs = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
+// List<String> batchs = waitPakins.stream().map(WaitPakin::getBatch).distinct().collect(Collectors.toList());
+ WaitPakin waitPakin1 = waitPakins.get(0);
+ FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
+ findLocNoAttributeVo.setMatnr(waitPakin1.getMatnr());
+
+// StartupDto dto = commonService.getLocNo(1, devpNo, matnrs.get(0), batchs.get(0), null, locTypeDto);
+ StartupDto dto = commonService.getLocNoNew(1, devpNo, findLocNoAttributeVo, locTypeDto,barcode);
if (dto == null) {
throw new CoolException("娌℃湁妫�绱㈠埌绌哄簱浣�");
}
@@ -270,6 +275,8 @@
// 鎿嶄綔浜哄憳鏁版嵁
wrkMast.setAppeTime(now);
wrkMast.setModiTime(now);
+ wrkMast.setModiUser(waitPakin1.getModiUser());
+ wrkMast.setAppeUser(waitPakin1.getAppeUser());
boolean res = wrkMastService.insert(wrkMast);
if (!res) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index c32f06c..c19b4d8 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -48,11 +48,16 @@
# 涓嬩綅鏈洪厤缃�
wcs-slave:
# 鍙屾繁
- doubleDeep: true
+ #doubleDeep: true
# 鍙屾繁搴撲綅鎺掑彿
- doubleLocs: 1,2,3,4,5
+ #doubleLocs: 1,2,3,4,5
# 涓�涓爢鍨涙満璐熻矗鐨勮揣鏋舵帓鏁�
- groupCount: 4
+ #groupCount: 4
+ # 鐢辨祬鍏ユ繁
+ locGroupAscOrder: [
+ {rowList: [1],minBay: 1,maxBay: 16},
+ {rowList: [2,3,4,5,6],minBay: 1,maxBay: 16},
+ ]
#鏄惁寮�鍚痺ms涓嬪彂浠诲姟缁檞cs
workIssued-fig : true
#鍦板潃
--
Gitblit v1.9.1