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