From b0d8734e81b825381f1b2af13e0df33cd5114e2d Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期五, 19 十二月 2025 14:53:08 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/service/CommonService.java |  180 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 175 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index faefd3f..1c4bc4f 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
+import com.core.common.SpringUtils;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.result.FindLocNoAttributeVo;
@@ -16,6 +17,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -122,6 +124,34 @@
      * @param findLocNoAttributeVo 灞炴��
      * @param locTypeDto           绫诲瀷
      * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
+     * wms-dev
+     */
+    @Transactional
+    public StartupDto getLocNoToWmsDev(Integer staDescId, Integer sourceStaNo, FindLocNoAttributeVo findLocNoAttributeVo, LocTypeDto locTypeDto, String barcode,int[] row) {
+        StartupDto startupDto = null;
+        StringBuilder builder = new StringBuilder();
+        try {
+            startupDto = searchLocNoByCrnNoToWmsDev(staDescId, sourceStaNo, findLocNoAttributeVo, locTypeDto,row);
+        } catch (Exception e) {
+            builder.append(e.getMessage()).append(",");
+        }
+
+        if(startupDto == null) {
+            builder.append("鎵句笉鍒扮┖搴撲綅");
+            throw new CoolException(builder.toString());
+        }
+
+        return startupDto;
+    }
+
+    /**
+     * 妫�绱㈠簱浣嶅彿
+     *
+     * @param staDescId            璺緞ID
+     * @param sourceStaNo          婧愮珯
+     * @param findLocNoAttributeVo 灞炴��
+     * @param locTypeDto           绫诲瀷
+     * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
      */
     @Transactional
     public StartupDto searchLocNoByCrnNo(Integer staDescId, Integer sourceStaNo, FindLocNoAttributeVo findLocNoAttributeVo, LocTypeDto locTypeDto) {
@@ -158,11 +188,47 @@
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = getWorkNo(0);
         // 杩斿洖dto
-        startupDto.setWorkNo(workNo);
+        startupDto.setTaskNo(workNo);
         startupDto.setCrnNo(locMast.getCrnNo());
         startupDto.setSourceStaNo(sourceStaNo);
         startupDto.setLocNo(locNo);
+        startupDto.setTaskPri(13.0);
         return startupDto;
+    }
+
+    @Transactional
+    public StartupDto searchLocNoByCrnNoToWmsDev(Integer staDescId, Integer sourceStaNo, FindLocNoAttributeVo findLocNoAttributeVo, LocTypeDto locTypeDto,int[] row) {
+        LocMast locMast = null;
+        if (staDescId == 10) {
+            //鎼滅储绌烘墭鐩�
+            locMast = searchEmptyPallet(locTypeDto);
+        }else {
+            //婊℃墭鐩�
+            locMast = searchMaxPalletToWmsDev(findLocNoAttributeVo, locTypeDto,row);
+        }
+
+        if(locMast == null) {
+            throw new CoolException("鎵句笉鍒扮鍚堝昂瀵哥殑绌哄簱浣�");
+        }
+
+        StartupDto startupDto = new StartupDto();
+
+        String locNo = locMast.getLocNo();
+        // 鐢熸垚宸ヤ綔鍙�
+        int workNo = getWorkNo(0);
+        // 杩斿洖dto
+        startupDto.setTaskNo(workNo);
+        startupDto.setCrnNo(locMast.getCrnNo());
+        startupDto.setSourceStaNo(sourceStaNo);
+        startupDto.setLocNo(locToLocNo(locNo));
+        startupDto.setTaskPri(13.0);
+        return startupDto;
+    }
+    public String locToLocNo(String locNo){//0100203
+        int row = Integer.parseInt(locNo.substring(0, 2));
+        int bay = Integer.parseInt(locNo.substring(2, 5));
+        int lev = Integer.parseInt(locNo.substring(5, 7));
+        return row + "-" +bay + "-" + lev;
     }
 
     //鎼滅储婊℃墭鐩樺簱浣�
@@ -171,7 +237,7 @@
         List<String> locNos = locDetlService.getSameDetlList(findLocNoAttributeVo.getMatnr());
         for (String locNo : locNos) {
             //鑾峰彇閫氶亾缁�
-            List<Integer> locRowGroupDesc = Utils.getLocRowGroupDesc(slaveProperties, Utils.getRow(locNo));
+            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);
@@ -209,7 +275,7 @@
                 for (LocMast locMast : locMasts) {
                     String locNo = locMast.getLocNo();
                     //鑾峰彇閫氶亾缁�
-                    List<Integer> locRowGroupDesc = Utils.getLocRowGroupDesc(slaveProperties, Utils.getRow(locNo));
+                    List<Integer> locRowGroupDesc = Utils.getLocGroupDesc(slaveProperties, locNo);
 
                     boolean flag = true;
                     for (Integer row : locRowGroupDesc) {
@@ -249,6 +315,91 @@
         return targetLocMast;
     }
 
+    //鎼滅储婊℃墭鐩樺簱浣� wms-dev
+    public LocMast searchMaxPalletToWmsDev(FindLocNoAttributeVo findLocNoAttributeVo, LocTypeDto locTypeDto,int[] rows) {
+        LocMast targetLocMast = null;
+        List<String> locNos = locDetlService.getSameDetlListToWmsDev(findLocNoAttributeVo.getMatnr(),rows);
+        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")
+//                    .in("row1",rows)
+//                    .orderBy("bay1", true));
+           List<LocMast> locMasts = locMastService.selectLoc(rows);
+            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;
+    }
+
     //鎼滅储绌烘墭鐩樺簱浣�
     public LocMast searchEmptyPallet(LocTypeDto locTypeDto) {
         LocMast targetLocMast = null;
@@ -258,7 +409,7 @@
         for (LocMast locMast : locMastsD) {
             String locNo = locMast.getLocNo();
             //鑾峰彇閫氶亾缁�
-            List<Integer> locRowGroupDesc = Utils.getLocRowGroupDesc(slaveProperties, Utils.getRow(locNo));
+            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);
@@ -296,7 +447,7 @@
                 for (LocMast locMast : locMasts) {
                     String locNo = locMast.getLocNo();
                     //鑾峰彇閫氶亾缁�
-                    List<Integer> locRowGroupDesc = Utils.getLocRowGroupDesc(slaveProperties, Utils.getRow(locNo));
+                    List<Integer> locRowGroupDesc = Utils.getLocGroupDesc(slaveProperties, locNo);
 
                     boolean flag = true;
                     for (Integer row : locRowGroupDesc) {
@@ -349,4 +500,23 @@
         }
     }
 
+    //绉诲簱浠诲姟鑾峰彇绌哄簱浣�
+    public String getLocTransferLocNo(String locNo){
+        List<Integer> locGroupDesc = Utils.getLocGroupDesc(slaveProperties, locNo);
+        //鍏堟壘娣卞簱浣�
+        List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "O").in("row1", locGroupDesc));
+        if (locMastList.isEmpty()) {
+            //鎼滅储娴呭簱浣�
+            List<Integer> locGroupAsc = Utils.getLocGroupAsc(slaveProperties, locNo);
+            locMastList = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "O").in("row1", locGroupAsc));
+        }
+
+        if (locMastList.isEmpty()) {
+            return null;
+        }
+
+        LocMast locMast = locMastList.get(0);
+        return locMast.getLocNo();
+    }
+
 }

--
Gitblit v1.9.1