From b00eeab31bd13ba34a03301aa441b0751d6a93e4 Mon Sep 17 00:00:00 2001
From: dubin <bindu_bean@163.com>
Date: 星期五, 19 十二月 2025 17:00:51 +0800
Subject: [PATCH] 第六排成品可以放第七排原材料

---
 src/main/java/com/zy/common/service/CommonService.java |  292 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 274 insertions(+), 18 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 23c8432..779d5c7 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -7,6 +7,7 @@
 import com.core.common.Cools;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.mapper.LocMastMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.Utils;
 import com.zy.asrs.utils.VersionUtils;
@@ -46,6 +47,9 @@
     private LocDetlService locDetlService;
     @Autowired
     private SlaveProperties slaveProperties;
+
+    @Autowired
+    private LocMastMapper locMastMapper;
 
     /**
      * 鐢熸垚宸ヤ綔鍙�
@@ -109,9 +113,12 @@
         if (sourceStaNo < 200) {
             whsType = 1;
             crnNo=1;
-        } else if (sourceStaNo >= 200) {
+        } else if (sourceStaNo < 300) {
             whsType = 2;
             crnNo=2;
+        }else {
+            whsType = 3;
+            crnNo=3;
         }
 
         int workNo = getWorkNo(0);
@@ -157,7 +164,14 @@
         }
         // 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭
         if (emptyMk) {
-            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow));
+//            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow));
+            List<LocMast> locMasts = null;
+            if(crnNo==1) {
+                locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").eq("row1", 1));
+            } else {
+                locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow));
+            }
+
             if (locMasts.size() > 0) {
                 for (LocMast loc : locMasts) {
                     if (Utils.isShallowLoc(slaveProperties, loc.getLocNo())) {
@@ -185,27 +199,39 @@
         if (null == locMast) {
             Shelves shelves = new Shelves(rowCount, crn_qty);
             if (whsType == 1) {
-                for (int i = 0; i < shelves.group; i ++) {
-                    curRow = shelves.start(curRow);
-                    if (curRow < 0) {
-                        throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳");
-                    }
-                    Integer crnNo1 = shelves.getCrnNo(curRow);
-                    if (basCrnpService.checkSiteError(crnNo1, true)) {
-                        crnNo = crnNo1;
-                        if (curRow == 3 || curRow == 4) {
-                            curRow = 3;
-                        }
-                        break;
-                    }
+                curRow = curRow + 1;
+                if (curRow > eRow) {
+                    curRow = sRow;
                 }
+                crnNo = whsType;
+                basCrnpService.checkSiteStatus(crnNo, true);
+//                for (int i = 0; i < shelves.group; i ++) {
+//                    curRow = shelves.start(curRow);
+//                    if (curRow < 0) {
+//                        throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳");
+//                    }
+//                    Integer crnNo1 = shelves.getCrnNo(curRow);
+//                    if (basCrnpService.checkSiteError(crnNo1, true)) {
+//                        crnNo = crnNo1;
+//                        if (curRow == 3 || curRow == 4) {
+//                            curRow = 3;
+//                        }
+//                        break;
+//                    }
+//                }
             } else if (whsType == 2) {
                 if (curRow == sRow) {
                     curRow = eRow;
                 } else {
                     curRow = sRow;
                 }
-                crnNo = whsType;
+                basCrnpService.checkSiteStatus(crnNo, true);
+            }else {
+                if (curRow == sRow) {
+                    curRow = eRow;
+                } else {
+                    curRow = sRow;
+                }
                 basCrnpService.checkSiteStatus(crnNo, true);
             }
         }
@@ -245,14 +271,32 @@
                 } else {
                     deepRow = curRow;
                 }
-                locMast = locMastService.queryFreeLocMast(deepRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
+
+                if(emptyMk){
+                    locMast = locMastService.queryFreeLocMastIncludeFirst(deepRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
+                    if (Cools.isEmpty(locMast)){
+                        locMast = locMastService.queryFreeLocMast(deepRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
+                    }
+                } else {
+                    locMast = locMastService.queryFreeLocMastExceptFirst(deepRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
+                }
+
+//                locMast = locMastService.queryFreeLocMast(deepRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
                 // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
                 if (!locMastService.checkEmptyCount(locMast)) {
                     locMast = null;
                 }
             }
             if (Cools.isEmpty(locMast)) {
-                locMast = locMastService.queryFreeLocMast(curRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
+                if(emptyMk){
+                    locMast = locMastService.queryFreeLocMastIncludeFirst(curRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
+                    if (Cools.isEmpty(locMast)){
+                        locMast = locMastService.queryFreeLocMast(curRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
+                    }
+                } else {
+                    locMast = locMastService.queryFreeLocMastExceptFirst(curRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
+                }
+//                locMast = locMastService.queryFreeLocMast(curRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
                 // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
                 if (!locMastService.checkEmptyCount(locMast)) {
                     locMast = null;
@@ -465,4 +509,216 @@
         }
     }
 
+    public StartupDto emptyIngetLocNo(Integer devpNo) {
+        int crnNo = 0;
+
+        if (devpNo == 304) {
+            crnNo = 3;
+        } else if(devpNo == 204) {
+            crnNo = 2;
+        } else if(devpNo == 104) {
+            crnNo = 1;
+        }else if(devpNo == 311) {
+            crnNo = 4;
+        }
+
+        // 鐩爣搴撲綅
+        LocMast locMast = locMastMapper.queryEmptyLocNoByStaNo(crnNo);
+
+        if (locMast == null) {
+            throw new CoolException("娌℃湁绌哄簱浣�");
+        }
+
+        // 鑾峰彇鐩爣绔�
+        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+                .eq("type_no", 10)
+                .eq("stn_no", devpNo)
+                .eq("crn_no", crnNo);
+        StaDesc staDesc = staDescService.selectOne(wrapper);
+        if (Cools.isEmpty(staDesc)) {
+            log.error("鍏ュ簱璺緞涓嶅瓨鍦�, staDescId={}, sourceStaNo={}, crnNo={}", 10, devpNo, crnNo);
+            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+        }
+
+        // 妫�娴嬬洰鏍囩珯
+        BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
+        if (!staNo.getAutoing().equals("Y")) {
+            throw new CoolException("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�");
+        }
+
+        basCrnpService.checkSiteStatus(crnNo, true);
+
+        // 杩斿洖dto
+        StartupDto startupDto = new StartupDto();
+        startupDto.setWorkNo(getWorkNo(0));
+        startupDto.setCrnNo(crnNo);
+        startupDto.setSourceStaNo(devpNo);
+        startupDto.setStaNo(devpNo);
+        startupDto.setLocNo(locMast.getLocNo());
+        return startupDto;
+    }
+
+    public StartupDto getLocNoBy304(String type) {
+
+        int row;
+        int devpNo = 304;
+        int crnNo = 3;
+        if (type.equals("1")) {
+            row =  7;
+        } else if (type.equals("2")) {
+            row = 6;
+        } else {
+            throw new CoolException("304鐗╂枡绫诲埆璇嗗埆閿欒锛�" + type);
+        }
+
+        // 鐩爣搴撲綅
+        LocMast locMast = locMastMapper.queryLocByBarCode(row);
+
+        //绗叚鎺掓垚鍝佸彲浠ユ斁绗竷鎺掑師鏉愭枡
+        if (locMast == null && type.equals("2")){
+            locMast = locMastMapper.queryLocByBarCode(7);
+        }
+
+
+        if (locMast == null) {
+            throw new CoolException("304鍏ュ簱娌℃湁绌哄簱浣�");
+        }
+
+        // 鑾峰彇鐩爣绔�
+        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+                .eq("type_no", 1)
+                .eq("stn_no", devpNo)
+                .eq("crn_no", crnNo);
+        StaDesc staDesc = staDescService.selectOne(wrapper);
+        if (Cools.isEmpty(staDesc)) {
+            log.error("鍏ュ簱璺緞涓嶅瓨鍦�, staDescId={}, sourceStaNo={}, crnNo={}", 1, devpNo, crnNo);
+            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+        }
+
+        // 妫�娴嬬洰鏍囩珯
+        BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
+        if (!staNo.getAutoing().equals("Y")) {
+            throw new CoolException("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�");
+        }
+
+        basCrnpService.checkSiteStatus(crnNo, true);
+
+        // 杩斿洖dto
+        StartupDto startupDto = new StartupDto();
+        startupDto.setWorkNo(getWorkNo(0));
+        startupDto.setCrnNo(crnNo);
+        startupDto.setSourceStaNo(devpNo);
+        startupDto.setStaNo(devpNo);
+        startupDto.setLocNo(locMast.getLocNo());
+        return startupDto;
+    }
+
+    public StartupDto getLocNoBy311(String type) {
+
+        int row;
+        int devpNo = 311;
+        int crnNo = 4;
+//        if (type.equals("1")) {
+//            row =  7;
+//        } else if (type.equals("2")) {
+//            row = 6;
+//        } else {
+//            throw new CoolException("304鐗╂枡绫诲埆璇嗗埆閿欒锛�" + type);
+//        }
+
+        // 鐩爣搴撲綅
+        List<LocMast> locMasts = locMastMapper.selectOneByCrnNo(4);
+        LocMast locMast = locMasts.get(0);
+        if (locMast == null) {
+            throw new CoolException("311鍏ュ簱娌℃湁绌哄簱浣�");
+        }
+
+        // 鑾峰彇鐩爣绔�
+        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+                .eq("type_no", 1)
+                .eq("stn_no", devpNo)
+                .eq("crn_no", crnNo);
+        StaDesc staDesc = staDescService.selectOne(wrapper);
+        if (Cools.isEmpty(staDesc)) {
+            log.error("鍏ュ簱璺緞涓嶅瓨鍦�, staDescId={}, sourceStaNo={}, crnNo={}", 1, devpNo, crnNo);
+            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+        }
+
+        // 妫�娴嬬洰鏍囩珯
+        BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
+        if (!staNo.getAutoing().equals("Y")) {
+            throw new CoolException("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�");
+        }
+
+        basCrnpService.checkSiteStatus(crnNo, true);
+
+        // 杩斿洖dto
+        StartupDto startupDto = new StartupDto();
+        startupDto.setWorkNo(getWorkNo(0));
+        startupDto.setCrnNo(crnNo);
+        startupDto.setSourceStaNo(devpNo);
+        startupDto.setStaNo(devpNo);
+        startupDto.setLocNo(locMast.getLocNo());
+        return startupDto;
+    }
+
+    /**
+     * 涓�鏈熷鎵惧簱浣�
+     * 1-6灞� 鏉$爜1鎴栬��2寮�澶�
+     * 7-11灞� 鏉$爜8寮�澶�
+     * @param ioType 1.鍏ュ簱
+     * @param devpNo 鍏ュ簱绔欑偣
+     * @param barcode 鏉$爜
+     * @return 搴撲綅淇℃伅
+     */
+    public StartupDto getLocNoNew(int ioType, Integer devpNo, String barcode) {
+        char type = barcode.charAt(0);
+        int flag = 0;
+        if (type == '1' || type == '2') {
+            flag = 1;
+        } else if( type == '8') {
+            flag = 2;
+        }
+        if (flag == 0) {
+            throw new CoolException("鏉$爜鏈夎锛�" + barcode);
+        }
+
+        // 鐩爣搴撲綅
+        LocMast locMast = locMastMapper.queryLocByBarCodeNew(devpNo,flag);
+        if (locMast == null) {
+            throw new CoolException("鍏ュ簱娌℃湁绌哄簱浣�");
+        }
+
+        // 鍫嗗灈鏈哄彿
+        Integer crnNo = locMast.getCrnNo();
+
+        // 鑾峰彇鐩爣绔�
+        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+                .eq("type_no", ioType)
+                .eq("stn_no", devpNo)
+                .eq("crn_no", crnNo);
+        StaDesc staDesc = staDescService.selectOne(wrapper);
+        if (Cools.isEmpty(staDesc)) {
+            log.error("鍏ュ簱璺緞涓嶅瓨鍦�, staDescId={}, sourceStaNo={}, crnNo={}", 1, devpNo, crnNo);
+            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+        }
+
+        // 妫�娴嬬洰鏍囩珯
+        BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
+        if (!staNo.getAutoing().equals("Y")) {
+            throw new CoolException("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�");
+        }
+
+        basCrnpService.checkSiteStatus(crnNo, true);
+
+        // 杩斿洖dto
+        StartupDto startupDto = new StartupDto();
+        startupDto.setWorkNo(getWorkNo(0));
+        startupDto.setCrnNo(crnNo);
+        startupDto.setSourceStaNo(devpNo);
+        startupDto.setStaNo(devpNo);
+        startupDto.setLocNo(locMast.getLocNo());
+        return startupDto;
+
+    }
 }

--
Gitblit v1.9.1