From 1efaa37727a8d70a6bc0b0f70532649c16bfab35 Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期一, 27 五月 2024 11:48:49 +0800
Subject: [PATCH] #移库楼层

---
 src/main/java/com/zy/common/service/CommonService.java |   85 +++++++++++++++++++++++++++++++++---------
 1 files changed, 66 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index e18606e..0eca4e8 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -507,40 +507,56 @@
      * 鍥涘悜搴撹幏鍙栧簱浣�
      */
     public StartupDto getShuttleLocNo(Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto) {
+        RowLastno rowLastno = rowLastnoService.selectOne(new EntityWrapper<RowLastno>().eq("whs_type", 1));
+        //璧峰灞�
+        Integer startLev = rowLastno.getCurrentRow();
+        return getShuttleLocNo(staDescId, sourceStaNo, matNos, locTypeDto, startLev, 0);
+    }
+
+    public StartupDto getShuttleLocNo(Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto, int startLev, int times) {
+        RowLastno rowLastno = rowLastnoService.selectOne(new EntityWrapper<RowLastno>().eq("whs_type", 1));
+        //璧峰灞�
+        Integer currentLev = rowLastno.getCurrentRow();
+        if (times > 0 && startLev == currentLev) {
+            throw new CoolException("鏈壘鍒板彲鐢ㄥ簱浣�");
+        }
+        rowLastno.setCurrentRow(currentLev >= rowLastno.geteRow() ? rowLastno.getsRow() : currentLev + 1);//鏇存柊妤煎眰
+        rowLastnoService.updateById(rowLastno);
+
         // 鐩爣搴撲綅
         LocMast locMast = null;
 
         // 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭
-        locMast = getShuttleEmptyLocNo(staDescId, locTypeDto);
+        locMast = getShuttleEmptyLocNo(staDescId, locTypeDto, currentLev);
         if (locMast != null) {
             //鎵惧埌搴撲綅锛岃繑鍥瀌to
-            return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
+            return getShuttleLocStartupDto(staDescId, sourceStaNo, locMast);//杩斿洖dto
         }
 
         //鍗曞搧鐗╂枡 闈犺繎鎽嗘斁瑙勫垯 --- 鐩稿悓璁㈠崟鍙�, 鍚屽ぉ鍚岃鏍肩墿鏂�
-        locMast = getShuttleSingleLocNo(matNos, locTypeDto);
+        locMast = getShuttleSingleLocNo(matNos, locTypeDto, currentLev);
         if (locMast != null) {
             //鎵惧埌搴撲綅锛岃繑鍥瀌to
-            return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
+            return getShuttleLocStartupDto(staDescId, sourceStaNo, locMast);//杩斿洖dto
         }
 
         // 闈犺繎鎽嗘斁瑙勫垯 --- 鐩稿悓璁㈠崟鍙�, 鍚屽ぉ鍚岃鏍肩墿鏂�
-        locMast = getShuttleMixedLocNo(matNos, locTypeDto);
+        locMast = getShuttleMixedLocNo(matNos, locTypeDto, currentLev);
         if (locMast != null) {
             //鎵惧埌搴撲綅锛岃繑鍥瀌to
-            return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
+            return getShuttleLocStartupDto(staDescId, sourceStaNo, locMast);//杩斿洖dto
         }
 
-        throw new CoolException("鏈壘鍒板彲鐢ㄥ簱浣�");
+        return getShuttleLocNo(staDescId, sourceStaNo, matNos, locTypeDto, startLev, times + 1);
     }
 
-    //鎼滅储绌烘墭鐩樺簱浣�
-    private LocMast getShuttleEmptyLocNo(Integer staDescId, LocTypeDto locTypeDto) {
+    //鎼滅储绌鸿揣鏋跺簱浣�
+    private LocMast getShuttleEmptyLocNo(Integer staDescId, LocTypeDto locTypeDto, int lev) {
         LocMast locMast = null;
         // 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭
         if (staDescId == 10) {
             //鍏堝垽鏂伐浣滄。锛屾煡鎵句富妗OType=1锛� wrkSts < 10鐨勫伐浣滄槑缁嗭紝鏂欏彿鐩稿悓鐨勬槑缁嗗簱浣�
-            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("io_type",10));
+            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("io_type", 10));
             for (WrkMast wrkMast : wrkMasts) {
                 LocMast locMast0 = locMastService.findNearloc(wrkMast.getLocNo());
                 if (null != locMast0) {
@@ -551,9 +567,9 @@
                     }
                 }
             }
-            if (Cools.isEmpty(locMast)){
+            if (Cools.isEmpty(locMast)) {
                 List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
-                        .eq("loc_sts", "O").orderBy("row1,bay1,lev1"));
+                        .eq("loc_sts", "O").eq("lev1", lev).orderBy("row1,bay1,lev1"));
                 if (!locMasts.isEmpty()) {
                     for (LocMast loc : locMasts) {
                         LocMast locMast0 = locMastService.findNearloc(loc.getLocNo());
@@ -573,10 +589,10 @@
     }
 
     //娣锋斁鐗╂枡
-    private LocMast getShuttleMixedLocNo(List<String> matNos, LocTypeDto locTypeDto) {
+    private LocMast getShuttleMixedLocNo(List<String> matNos, LocTypeDto locTypeDto, Integer lev) {
         LocMast locMast = null;
         if (matNos.size() > 1) {
-            List<LocMast> locMasts = locMastService.selectAreaEmpty(locTypeDto.getLocType1(), 1);//鎼滅储娣锋斁搴撲綅
+            List<LocMast> locMasts = locMastService.selectAreaEmptyByLev(locTypeDto.getLocType1(), 1, lev);//鎼滅储娣锋斁搴撲綅
             //娣锋斁鍖哄煙鐩存帴鍙栫涓�涓嵆鍙�
             for (LocMast mast : locMasts) {
                 // 娴呭簱浣嶇鍚堝昂瀵告娴�
@@ -590,12 +606,12 @@
     }
 
     //鍗曞搧鐗╂枡 闈犺繎鎽嗘斁瑙勫垯 --- 鐩稿悓璁㈠崟鍙�, 鍚屽ぉ鍚岃鏍肩墿鏂�
-    private LocMast getShuttleSingleLocNo(List<String> matNos, LocTypeDto locTypeDto) {
+    private LocMast getShuttleSingleLocNo(List<String> matNos, LocTypeDto locTypeDto, int lev) {
         LocMast locMast = null;
         if (matNos.size() == 1) {
             String matNo = matNos.get(0);//鐗╂枡鍙�
             //鍏堝垽鏂伐浣滄。锛屾煡鎵句富妗OType=1锛� wrkSts < 10鐨勫伐浣滄槑缁嗭紝鏂欏彿鐩稿悓鐨勬槑缁嗗簱浣�
-            List<WrkMast> wrkMasts = wrkMastService.selectSameMatnrs(matNo);
+            List<WrkMast> wrkMasts = wrkMastService.selectSameLevMatnrs(matNo, lev);
             for (WrkMast wrkMast : wrkMasts) {
                 LocMast locMast0 = locMastService.findNearloc(wrkMast.getLocNo());
                 if (null != locMast0) {
@@ -607,7 +623,7 @@
             }
             if (Cools.isEmpty(locMast)) {
                 //鍐嶅垽鏂簱瀛樻槑缁嗘。锛屾枡鍙风浉鍚岀殑鏄庣粏搴撲綅
-                List<String> locNos = locDetlService.getSameDetl(matNo);
+                List<String> locNos = locDetlService.getSameLevDetl(matNo, lev);
                 for (String locNo : locNos) {
                     LocMast locMast0 = locMastService.findInnerLoc(locNo);
                     if (null != locMast0) {
@@ -621,7 +637,7 @@
             }
             if (Cools.isEmpty(locMast)) {
                 //鎵炬柊搴撲綅
-                List<LocMast> locMasts = locMastService.selectAreaEmpty(locTypeDto.getLocType1(), 2);//鎼滅储鍗曞搧搴撲綅
+                List<LocMast> locMasts = locMastService.selectAreaEmptyByLev(locTypeDto.getLocType1(), 2, lev);//鎼滅储鍗曞搧搴撲綅
                 for (LocMast mast : locMasts) {
                     List<String> groupLoc = Utils.getGroupLoc(mast.getLocNo());
                     if (!locMastService.checkAllLocEmpty(groupLoc)) {
@@ -653,7 +669,7 @@
             }
             if (Cools.isEmpty(locMast)) {
                 //鍗曞搧鎵句笉鍒板簱浣嶏紝鍏佽灏濊瘯浠庢贩鏀惧尯鍩熶腑杩涜鎼滅储
-                List<LocMast> locMasts2 = locMastService.selectAreaEmpty(locTypeDto.getLocType1(), 1);//鎼滅储娣锋斁搴撲綅
+                List<LocMast> locMasts2 = locMastService.selectAreaEmptyByLev(locTypeDto.getLocType1(), 1, lev);//鎼滅储娣锋斁搴撲綅
                 //娣锋斁鍖哄煙鐩存帴鍙栫涓�涓嵆鍙�
                 for (LocMast mast : locMasts2) {
                     // 娴呭簱浣嶇鍚堝昂瀵告娴�
@@ -667,4 +683,35 @@
         return locMast;
     }
 
+    //杩斿洖dto
+    private StartupDto getShuttleLocStartupDto(Integer staDescId, Integer sourceStaNo, LocMast locMast) {
+        StartupDto startupDto = new StartupDto();
+        String locNo = locMast.getLocNo();
+        // 鑾峰彇鐩爣绔�
+        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+                .eq("type_no", staDescId)
+                .eq("stn_no", sourceStaNo)
+                .eq("crn_no",Utils.stnNoToLiftNo(sourceStaNo));//鍊熺敤鍫嗗灈鏈哄彿瀛楁鍏呭綋鎻愬崌鏈哄彿
+        StaDesc staDesc = staDescService.selectOne(wrapper);
+        if (Cools.isEmpty(staDesc)) {
+            log.error("鍏ュ簱璺緞涓嶅瓨鍦�, staDescId={}, sourceStaNo={}", staDescId, sourceStaNo);
+            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+        }
+
+        // 妫�娴嬬洰鏍囩珯
+        BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
+        if (!staNo.getAutoing().equals("Y")) {
+            throw new CoolException("鐩爣绔�" + staDesc.getCrnStn() + "涓嶅彲鐢�");
+        }
+
+        // 鐢熸垚宸ヤ綔鍙�
+        int workNo = getWorkNo(0);
+        // 杩斿洖dto
+        startupDto.setWorkNo(workNo);
+        startupDto.setSourceStaNo(sourceStaNo);
+        startupDto.setStaNo(staNo.getDevNo());
+        startupDto.setLocNo(locMast.getLocNo());
+        return startupDto;
+    }
+
 }

--
Gitblit v1.9.1