From de8e16542594e01210aba8a72d18f2d2874681c2 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 12 八月 2024 13:39:33 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/service/CommonService.java |  177 ++++++++++++++---------------------------------------------
 1 files changed, 42 insertions(+), 135 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index a1548b8..48928ae 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -3,7 +3,6 @@
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.core.common.Arith;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
@@ -11,7 +10,6 @@
 import com.zy.asrs.utils.Utils;
 import com.zy.asrs.utils.VersionUtils;
 import com.zy.common.model.LocTypeDto;
-import com.zy.common.model.Shelves;
 import com.zy.common.model.StartupDto;
 import com.zy.common.properties.SlaveProperties;
 import lombok.extern.slf4j.Slf4j;
@@ -19,7 +17,10 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 璐ф灦鏍稿績鍔熻兘
@@ -122,115 +123,9 @@
      */
     @Transactional
     public StartupDto getLocNo(Integer staDescId, Integer sourceStaNo,LocTypeDto locTypeDto,int times) {
+        LocMast locMast;
 
-        // 鍒濆鍖栧弬鏁�
-        int crnNo = 0;      //鍫嗗灈鏈哄彿
-        int nearRow = 0;    //鏈�娴呭簱浣嶆帓
-        int curRow = 0;     //鏈�娣卞簱浣嶆帓
-        LocMast locMast = null;     // 鐩爣搴撲綅
-
-        StartupDto startupDto = new StartupDto();
-        RowLastno rowLastno = rowLastnoService.selectById(1);
-        int sRow = rowLastno.getsRow();
-        int eRow = rowLastno.geteRow();
-        int crn_qty = rowLastno.getCrnQty();
-        int rowCount = eRow - sRow + 1;
-        if (Cools.isEmpty(rowLastno)) {
-            throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�");
-        }
-        // ===============>>>> 寮�濮嬫墽琛�
-
-        curRow = rowLastno.getCurrentRow();
-
-        // 濡傛灉娌℃湁鐩歌繎鐗╂枡锛屽垯鎸夎鍒欒疆璇㈣揣鏋�
-        if (Cools.isEmpty(locMast)) {
-            Shelves shelves = new Shelves(rowCount, crn_qty);
-            int divides = (int) Arith.divides(1, curRow - 1, 4);
-            curRow = (int) Arith.remainder(curRow, 4);
-            if (curRow == 0) {
-                curRow = 4;
-            }
-            for (int i = 0; i < shelves.group; i ++) {
-                curRow = shelves.start(curRow);
-                if (curRow < 0) {
-                    throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳");
-                }
-                Integer crnNo1 = shelves.get(curRow);
-                crnNo1 = crnNo1 + divides*1;
-                if (basCrnpService.checkSiteError(crnNo1, true)) {
-                    crnNo = crnNo1;
-                    curRow = curRow + divides*4;
-                    break;
-                }
-            }
-        }
-
-        if (crnNo == 0) {
-            throw new CoolException("娌℃湁鍙敤鐨勫爢鍨涙満");
-        }
-
-        // 1.褰撴绱㈠簱鎺掍负娴呭簱浣嶆帓鏃讹紝浼樺厛瀵绘壘褰撳墠搴撴帓鐨勬繁搴撲綅鎺�
-        if (locMast == null) {
-            if (Utils.isShallowLoc(slaveProperties, curRow)) {
-                Integer deepRow = Utils.getDeepRow(slaveProperties, curRow);
-                locMast = locMastService.queryFreeLocMast(deepRow, locTypeDto.getLocType1());
-                // todo:luxiaotao 濡傛灉鐢ㄦ祬鎺掓壘鍒扮殑娣卞簱浣嶏紝閭d箞鍒欓渶瑕佸垽鏂繖涓繁搴撲綅瀵瑰簲鐨勬祬搴撲綅鏄惁鏈夎揣锛團銆乆銆丏锛�
-                // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
-                if (!locMastService.checkEmptyCount(locMast)) {
-                    locMast = null;
-                }
-            }
-            if (Cools.isEmpty(locMast)) {
-                locMast = locMastService.queryFreeLocMast(curRow, locTypeDto.getLocType1());
-                // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
-                if (!locMastService.checkEmptyCount(locMast)) {
-                    locMast = null;
-                }
-                // 鐩爣搴撲綅 ===>> 娴呭簱浣嶏紝 鍒欐牎楠屽叾娣卞簱浣嶆槸鍚︿负 F D X
-                if (null != locMast && Utils.isShallowLoc(slaveProperties, locMast.getLocNo())) {
-                    LocMast deepLoc = locMastService.selectById(Utils.getDeepLoc(slaveProperties, locMast.getLocNo()));
-                    if (!deepLoc.getLocSts().equals("F") && !deepLoc.getLocSts().equals("D") && !deepLoc.getLocSts().equals("X")) {
-                        locMast = null;
-                    }
-                }
-                // 鐩爣搴撲綅 ===>> 娣卞簱浣嶏紝 鍒欐牎楠屽叾娴呭簱浣嶆槸鍚︿负 O
-                if (null != locMast && Utils.isDeepLoc(slaveProperties, locMast.getLocNo())) {
-                    LocMast shallowLoc = locMastService.selectById(Utils.getShallowLoc(slaveProperties, locMast.getLocNo()));
-                    if (!Cools.isEmpty(shallowLoc)) {
-                        if (!shallowLoc.getLocSts().equals("O")) {
-                            locMast = null;
-                        }
-                    }
-
-
-                }
-            }
-        }
-        // 鏇存柊搴撲綅鎺掑彿
-        rowLastno.setCurrentRow(curRow);
-        rowLastnoService.updateById(rowLastno);
-        // 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣�
-        if (Cools.isEmpty(locMast)) {
-            // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
-            if (times < rowCount) {
-                times = times + 1;
-                return getLocNo(staDescId, sourceStaNo, locTypeDto, times);
-            }
-            log.error("绯荤粺娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿}", JSON.toJSONString(locTypeDto), times);
-            throw new CoolException("娌℃湁绌哄簱浣�");
-        }
-
-
-//        // 鎼滅储绌烘墭
-//        locMast = getLocNoStep4(staDescId, sourceStaNo);
-//        if (locMast != null) {
-//            //鎵惧埌搴撲綅锛岃繑鍥瀌to
-//            return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
-//        }
-        if (locMast == null) {
-            //鎼滅储鏁翠釜绌哄簱浣嶇粍
-            locMast = getLocNoStepSingle(locTypeDto);
-        }
+        locMast = getLocNoStepSingle(locTypeDto);
 
         if (locMast != null) {
             //鎵惧埌搴撲綅锛岃繑鍥瀌to
@@ -240,37 +135,49 @@
        //鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父
         throw new CoolException("娌℃湁绌哄簱浣�");
     }
+
     // 鎼滅储鍗曞搧(鏁翠釜搴撲綅缁�)
     private LocMast getLocNoStepSingle(LocTypeDto locTypeDto) {
+
         LocMast locMast = null;
-        //鍗曞搧
-        List<LocMast> locMasts = locMastService.selectAreaEmpty(locTypeDto.getLocType1());//鎼滅储璐х墿
 
+        // 鑾峰彇妯″紡涓虹數鑴戞ā寮忥紝鏃犱换鍔$殑鍫嗗灈鏈哄垪琛�:闃叉鍒嗛厤鍒板爢鍨涙満涓嶅彲鐢�
+        List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3)
+                .eq("wrk_no",0));
+        if (basCrnps.isEmpty()) {
+            // 閮芥湁浠诲姟鍒欒幏鍙栫數鑴戞ā寮忕殑鍫嗗灈鏈哄垪琛�
+            basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3));
+        }
+        if (basCrnps.isEmpty()) {
+            throw new CoolException("娌℃湁鍙敤鍫嗗灈鏈�,鍫嗗灈鏈哄仠姝㈡垨寮傚父");
+        }
+        // 鍙敤鍫嗗灈鏈哄垪琛�
+        List<Integer> crnNoList = basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList());
+
+        // 鎼滅储娣卞簱浣�
+        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                .eq("loc_sts","O").in("crn_no",crnNoList).in("row1","1,4,5,8,9,12,13,16,17,20,21,24").orderBy("lev1,bay1,row1"));
+
+        // 娣卞簱浣嶆病鏈夊垯鎼滅储娴呭簱浣�
+        if (locMasts.isEmpty()) {
+            locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                    .eq("loc_sts","O").in("crn_no",crnNoList).in("row1","2,3,6,7,10,11,14,15,18,19,22,23").orderBy("lev1,bay1,row1"));
+        }
+        if (locMasts.isEmpty()) {
+            throw new CoolException("娌℃湁鍙敤搴撲綅");
+        }
+
+        // 璁板綍鍫嗗灈鏈烘槸鍚︽煡璇㈣繃锛岄伩鍏嶉噸澶嶆煡璇�
+        Map<Integer,Boolean> crnMap = new HashMap<>();
         for (LocMast mast : locMasts) {
-            List<String> groupLoc = Utils.getGroupLocNo(mast.getLocNo(), true);
-//            if (!locMastService.checkAllLocEmpty(groupLoc)) {
-//                continue;
-//            }
-
-            LocMast tmp = null;
-            for (String loc : groupLoc) {
-                LocMast locMast1 = locMastService.selectByLoc(loc);
-                if (locMast1 == null) {
-                    continue;
+            if (crnMap.get(mast.getCrnNo()) == null) {
+                //棰勭暀绌哄簱浣�
+                if (locMastService.checkEmptyCount(mast, 10)) {
+                    locMast = mast;
+                    break;
+                } else {
+                    crnMap.put(mast.getCrnNo(),true);
                 }
-
-                if (!locMast1.getLocSts().equals("O")) {
-                    continue;
-                }
-
-                tmp = locMast1;
-                break;
-            }
-
-            //棰勭暀绌哄簱浣�
-            if (tmp != null && locMastService.checkEmptyCount(mast, 10)) {
-                locMast = tmp;
-                break;
             }
         }
 

--
Gitblit v1.9.1