From 79f209a5ec9236adfd4576285d50a7b860da7230 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期二, 26 十二月 2023 13:22:12 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java |    4 +
 src/main/java/com/zy/asrs/utils/Utils.java                     |   47 +++++++++++++++
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java    |    6 -
 src/main/resources/mapper/LocMastMapper.xml                    |    5 +
 src/main/java/com/zy/asrs/mapper/LocMastMapper.java            |    3 
 src/main/java/com/zy/common/web/WcsController.java             |   44 +++++++++++---
 src/main/java/com/zy/asrs/service/LocMastService.java          |    2 
 src/main/java/com/zy/common/service/CommonService.java         |   10 ++-
 8 files changed, 101 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
index 099ae60..c9bcea1 100644
--- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -35,6 +35,5 @@
     List<LocMast> selectNodeEByLev(Integer lev);
 
 
-
-
+    LocMast selectByLoc(String locNo);
 }
diff --git a/src/main/java/com/zy/asrs/service/LocMastService.java b/src/main/java/com/zy/asrs/service/LocMastService.java
index df7e0a5..6a9da74 100644
--- a/src/main/java/com/zy/asrs/service/LocMastService.java
+++ b/src/main/java/com/zy/asrs/service/LocMastService.java
@@ -49,4 +49,6 @@
     List<LocMast> selectByLocNo(List<String> locNo);
 
     List<LocMast> selectNodeELocByLev(Integer lev);
+
+    LocMast selectByLoc(String loc);
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
index d2618bc..5cc778f 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -79,6 +79,10 @@
     }
 
 
+    @Override
+    public LocMast selectByLoc(String locNo) {
+        return this.baseMapper.selectByLoc(locNo);
+    }
 
     @Override
     public List<LocMast> selectByLocNo(List<String> locNo) {
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index df878dd..6d3bdc3 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -490,9 +490,6 @@
     @Transactional
     public WrkMast emptyPlateOut(EmptyPlateOutParam param) {
         WrkMast wrkMast = new WrkMast();
-        if (Cools.isEmpty(param.getOutSite())) {
-            throw new CoolException("绔欑偣涓嶅瓨鍦�");
-        }
         for (String locNo : param.getLocNos()) {
             // 鑾峰彇宸ヤ綔鍙�
             int workNo = commonService.getWorkNo(0);
@@ -504,7 +501,6 @@
             // 鑾峰彇婧愮珯
             Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                     .eq("type_no", 110)
-                    .eq("stn_no", param.getOutSite())
                     .eq("crn_no", locMast.getCrnNo());
             StaDesc staDesc = staDescService.selectOne(wrapper);
             Integer sourceStaNo = staDesc.getCrnStn();
@@ -520,7 +516,7 @@
             wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
             wrkMast.setIoPri(10D);
             wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
-            wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔�
+            wrkMast.setStaNo(1007); // 鐩爣绔�
             wrkMast.setCrnNo(locMast.getCrnNo());
             wrkMast.setSourceLocNo(locNo); // 婧愬簱浣�
             wrkMast.setFullPlt("N"); // 婊℃澘锛歒
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 890436b..41cefd3 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -6,12 +6,59 @@
 
 import java.text.DecimalFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 /**
  * Created by vincent on 2020/8/27
  */
 public class Utils {
+    public static final List<Integer> FIRST_GROUP_ROW_LIST = new ArrayList<Integer>() {{
+        add(1);add(2);
+    }};
+    public static final List<Integer> SECOND_GROUP_ROW_LIST = new ArrayList<Integer>() {{
+        add(3);add(4);
+    }};
+    public static final List<Integer> FIRST_GROUP_ROW_LIST2 = new ArrayList<Integer>() {{
+        add(5);add(6);
+    }};
+    public static final List<Integer> SECOND_GROUP_ROW_LIST2 = new ArrayList<Integer>() {{
+        add(7);add(8);
+    }};
+    public static List<String> getGroupLocNo(String locNo, Boolean pakIn) {
+        int row = getRow(locNo);
+        List<String> result = new ArrayList<>();
+        if (FIRST_GROUP_ROW_LIST.contains(row)) {
+            for (Integer groupRow : FIRST_GROUP_ROW_LIST) {
+                result.add(zerofill(String.valueOf(groupRow), 2) + locNo.substring(2));
+            }
+        } else if (SECOND_GROUP_ROW_LIST.contains(row)) {
+            List<Integer> clone = Arrays.asList(new Integer[SECOND_GROUP_ROW_LIST.size()]);
+            Collections.copy(clone, SECOND_GROUP_ROW_LIST);
+            Collections.reverse(clone);
+            for (Integer integer : clone) {
+                result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2));
+            }
+        }else if (FIRST_GROUP_ROW_LIST2.contains(row)) {
+            for (Integer groupRow : FIRST_GROUP_ROW_LIST2) {
+                result.add(zerofill(String.valueOf(groupRow), 2) + locNo.substring(2));
+            }
+        } else if (SECOND_GROUP_ROW_LIST2.contains(row)) {
+            List<Integer> clone = Arrays.asList(new Integer[SECOND_GROUP_ROW_LIST2.size()]);
+            Collections.copy(clone, SECOND_GROUP_ROW_LIST2);
+            Collections.reverse(clone);
+            for (Integer integer : clone) {
+                result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2));
+            }
+        }
+
+        if (!pakIn) {
+            //鍑哄簱锛屽弽杞暟鎹�
+            Collections.reverse(result);
+        }
+        return result;
+    }
 
     private static final DecimalFormat fmt = new DecimalFormat("##0.00");
 
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 813d3db..e2676b5 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -142,7 +142,11 @@
 
         // 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭
         if (staDescId == 10) {
-            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow));
+            StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("type_no", staDescId).eq("stn_no", sourceStaNo));
+            if (Cools.isEmpty(staDesc)){
+                throw new CoolException("绌烘墭鍏ュ簱绔欑偣璺緞涓嶅瓨鍦�");
+            }
+            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow).eq("crn_no",staDesc.getCrnNo()));
             if (locMasts.size() > 0) {
                 for (LocMast loc : locMasts) {
                     if (Utils.isShallowLoc(slaveProperties, loc.getLocNo())) {
@@ -176,10 +180,10 @@
                     throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳");
                 }
                 Integer crnNo1 = shelves.get(curRow);
-                crnNo1 = crnNo1 + divides*1;
+//                crnNo1 = crnNo1 + divides*1;
                 if (basCrnpService.checkSiteError(crnNo1, true)) {
                     crnNo = crnNo1;
-                    curRow = curRow + divides*4;
+//                    curRow = curRow + divides*4;
                     break;
                 }
             }
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index b2f31ac..113b666 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -8,6 +8,7 @@
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.EmptyPlateOutParam;
 import com.zy.asrs.service.*;
+import com.zy.asrs.utils.Utils;
 import com.zy.common.CodeRes;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.StartupDto;
@@ -143,17 +144,42 @@
 
     @PostMapping("auto/emptyOut/v1")
     @ResponseBody
-    public R autoEmptyOut(){
-        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
-                .eq("loc_sts", "D"));
-        if (Cools.isEmpty(locMast)) {
+    public R autoEmptyOut(@RequestParam("crnNo") Integer crnNo) {
+        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                .eq("loc_sts", "D")
+                .eq("crn_no", crnNo)
+                .orderBy("lev1,bay1,row1"));
+        if (locMasts.isEmpty()) {
             return R.error("搴撳瓨娌℃湁绌烘澘");
         }
-        EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam();
-        emptyPlateOutParam.setOutSite(12);
-        emptyPlateOutParam.setLocNos(new ArrayList<String>(){{add(locMast.getLocNo()+"");}});
-        WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam);
-        return R.ok(!Cools.isEmpty(wrkMast)? R.ok("鑷姩绌烘墭鍑哄簱鎴愬姛,宸ヤ綔鍙�:" + wrkMast.getWrkNo()) : R.error("鐢熸垚鑷姩绌烘墭鍑哄簱澶辫触"));
+
+        for (LocMast locMast : locMasts) {
+            LocMast locMast0 = null;
+            List<String> outerLocNo = Utils.getGroupLocNo(locMast.getLocNo(), false);
+            for (String loc : outerLocNo) {
+                LocMast locMast1 = locMastService.selectByLoc(loc);
+                if (locMast1 == null) {
+                    continue;
+                }
+
+                if (locMast1.getLocSts().equals("D")) {
+                    locMast0 = locMast1;
+                    break;
+                }
+            }
+
+            if (locMast0 == null) {
+                continue;
+            }
+
+            EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam();
+            ArrayList<String> locNos = new ArrayList<>();
+            locNos.add(locMast0.getLocNo());
+            emptyPlateOutParam.setLocNos(locNos);
+            WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam);
+            return R.ok(!Cools.isEmpty(wrkMast) ? R.ok("鑷姩绌烘墭鍑哄簱鎴愬姛,宸ヤ綔鍙�:" + wrkMast.getWrkNo()) : R.error("鐢熸垚鑷姩绌烘墭鍑哄簱澶辫触"));
+        }
+        return R.error("鐢熸垚鑷姩绌烘墭鍑哄簱澶辫触");
     }
 
     /**
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index d217db3..95b5fa0 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -98,7 +98,10 @@
     <select id="selectNodeEByLev" resultMap="BaseResultMap">
         SELECT * FROM asr_node_loc_DT_E_view WHERE lev1 = #{lev}
     </select>
-
+    <select id="selectByLoc" resultMap="BaseResultMap">
+        select * from asr_loc_mast
+        where loc_no = #{locNo}
+    </select>
 
 
 </mapper>

--
Gitblit v1.9.1