From 9ad0e9864a506a912829eca81944c4698d76de5d Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 26 五月 2023 09:39:36 +0800
Subject: [PATCH] 库位地图,出库选择,出库拦截非空库位

---
 src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java |    5 +
 src/main/java/com/zy/asrs/mapper/LocDetlMapper.java            |    2 
 src/main/java/com/zy/asrs/service/LocDetlService.java          |    2 
 src/main/webapp/views/report/locDetl.html                      |    9 ++
 src/main/java/com/zy/asrs/utils/Utils.java                     |   75 ++++++++++++------------
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java    |   34 +++++++++++
 src/main/resources/mapper/LocDetlMapper.xml                    |   22 +++++++
 src/main/resources/mapper/LocMastMapper.xml                    |    4 +
 src/main/java/com/zy/asrs/mapper/LocMastMapper.java            |    2 
 src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java |    9 +++
 src/main/webapp/static/js/common.js                            |   10 +++
 src/main/java/com/zy/asrs/service/LocMastService.java          |    3 +
 12 files changed, 138 insertions(+), 39 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
index 6f7e8d2..0d488d4 100644
--- a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -72,4 +72,6 @@
     List<LocDetl> selectGroupPage(Map<String, Object> param);
 
     List<LocDetl> selectByLocNo(@Param("locNo") String locNo);
+
+    List<LocDetl> searchByLike(String orderNo, String matnr, String maktx, String specs, String locNo);//閫氳繃璁㈠崟鍙枫�佺墿鏂欏彿銆佺墿鏂欏悕绉般�佽鏍笺�佸簱浣嶅彿杩涜妯$硦鎼滅储
 }
diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
index f39e414..df3533e 100644
--- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -47,4 +47,6 @@
 
     //鎼滅储浣庨(娣锋斁鍖哄煙)绌哄簱浣�
     LocMast findEmptyLowFrequencyLocMast(Short locType1);
+
+    List<LocMast> selectLocByLev(Integer lev);
 }
diff --git a/src/main/java/com/zy/asrs/service/LocDetlService.java b/src/main/java/com/zy/asrs/service/LocDetlService.java
index 81aca94..6f5a09d 100644
--- a/src/main/java/com/zy/asrs/service/LocDetlService.java
+++ b/src/main/java/com/zy/asrs/service/LocDetlService.java
@@ -67,4 +67,6 @@
     List<LocDetl> selectGroupPage(Map<String, Object> param, Integer curr, Integer limit);
 
     List<LocDetl> selectByLocNo(String locNo);
+
+    List<LocDetl> searchByLike(String orderNo, String matnr, String maktx, String specs, 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 f3fb095..0db6809 100644
--- a/src/main/java/com/zy/asrs/service/LocMastService.java
+++ b/src/main/java/com/zy/asrs/service/LocMastService.java
@@ -66,4 +66,7 @@
 
     //鎼滅储浣庨(娣锋斁鍖哄煙)绌哄簱浣�
     LocMast findEmptyLowFrequencyLocMast(Short locType1);
+
+    //鏌ヨ鎸囧畾妤煎眰鐨勫簱浣嶆暟鎹�
+    List<LocMast> selectLocByLev(Integer lev);
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
index 89da6aa..2008981 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.core.common.Cools;
 import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.result.StockVo;
 import com.zy.asrs.mapper.LocDetlMapper;
@@ -158,4 +159,12 @@
     public LocDetl selectItem(String locNo, String matnr, String batch) {
         return this.baseMapper.selectItem(locNo, matnr, batch);
     }
+
+    @Override
+    public List<LocDetl> searchByLike(String orderNo, String matnr, String maktx, String specs, String locNo) {
+        if (Cools.isEmpty(orderNo) && Cools.isEmpty(matnr) && Cools.isEmpty(maktx) && Cools.isEmpty(specs) && Cools.isEmpty(locNo)) {
+            return new ArrayList<LocDetl>();
+        }
+        return this.baseMapper.searchByLike(orderNo, matnr, maktx, specs, locNo);
+    }
 }
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 7004ae0..d664829 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -223,4 +223,9 @@
     public LocMast findEmptyLowFrequencyLocMast(Short locType1) {
         return this.baseMapper.findEmptyLowFrequencyLocMast(locType1);
     }
+
+    @Override
+    public List<LocMast> selectLocByLev(Integer lev) {
+        return this.baseMapper.selectLocByLev(lev);
+    }
 }
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 94f4225..690e997 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -159,6 +159,40 @@
     @Override
     @Transactional
     public void startupFullTakeStore(StockOutParam param, Long userId) {
+        ArrayList<String> locNos = new ArrayList<>();
+        for (StockOutParam.LocDetl locDetl:param.getLocDetls()){
+            if (!locNos.contains(locDetl.getLocNo())){
+                locNos.add(locDetl.getLocNo());
+            }
+        }
+        //妫�娴嬫槸鍚︿负娴呭簱浣�
+        boolean sign = false;
+        String th = "";
+        for (String locNo : locNos) {
+            if (sign) {
+                break;
+            }
+            List<String> groupInsideLoc = Utils.getGroupLoc(locNo);
+            if (!Cools.isEmpty(groupInsideLoc)) {
+                for (String insideLoc : groupInsideLoc) {
+                    if (locNos.contains(insideLoc)) {
+                        break;
+                    }
+                    LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", insideLoc));
+                    if (locMast != null) {
+                        if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")) {
+                            sign = true;
+                            th = "搴撲綅鍙凤細" + locNo + " 娴呭簱浣嶆湁闈炵┖搴撲綅锛�";
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+        if (sign){
+            throw new CoolException("鍑哄簱澶辫触锛�" + th);
+        }
+
         // 鐩爣绔欑偣鐘舵�佹娴�
         BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
         // 鑾峰彇搴撲綅鏄庣粏
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index e75e2a8..e5cc52f 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -3,12 +3,10 @@
 import com.core.common.Arith;
 import com.core.common.Cools;
 import com.zy.common.properties.SlaveProperties;
+import com.zy.common.service.CommonService;
 
 import java.text.DecimalFormat;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * Created by vincent on 2020/8/27
@@ -227,61 +225,59 @@
 
     public static List<String> getGroupLoc(String locNo){
         int row = getRow(locNo);
+        ArrayList<String> list = new ArrayList<>();
         switch (row) {
             case 1:
             case 2:
             case 3:
-                return new ArrayList<String>() {{
-                    add(zerofill(String.valueOf(1), 2) + locNo.substring(2));
-                    add(zerofill(String.valueOf(2), 2) + locNo.substring(2));
-                    add(zerofill(String.valueOf(3), 2) + locNo.substring(2));
-                }};
+                list.add(zerofill(String.valueOf(1), 2) + locNo.substring(2));
+                list.add(zerofill(String.valueOf(2), 2) + locNo.substring(2));
+                list.add(zerofill(String.valueOf(3), 2) + locNo.substring(2));
+                Collections.reverse(list);
+                return list;
             case 4:
             case 5:
             case 6:
             case 7:
-                return new ArrayList<String>() {{
-                    add(zerofill(String.valueOf(4), 2) + locNo.substring(2));
-                    add(zerofill(String.valueOf(5), 2) + locNo.substring(2));
-                    add(zerofill(String.valueOf(6), 2) + locNo.substring(2));
-                    add(zerofill(String.valueOf(7), 2) + locNo.substring(2));
-                }};
+                list.add(zerofill(String.valueOf(4), 2) + locNo.substring(2));
+                list.add(zerofill(String.valueOf(5), 2) + locNo.substring(2));
+                list.add(zerofill(String.valueOf(6), 2) + locNo.substring(2));
+                list.add(zerofill(String.valueOf(7), 2) + locNo.substring(2));
+                return list;
             case 8:
             case 9:
             case 10:
             case 11:
-                return new ArrayList<String>() {{
-                    add(zerofill(String.valueOf(8), 2) + locNo.substring(2));
-                    add(zerofill(String.valueOf(9), 2) + locNo.substring(2));
-                    add(zerofill(String.valueOf(10), 2) + locNo.substring(2));
-                    add(zerofill(String.valueOf(11), 2) + locNo.substring(2));
-                }};
+                list.add(zerofill(String.valueOf(8), 2) + locNo.substring(2));
+                list.add(zerofill(String.valueOf(9), 2) + locNo.substring(2));
+                list.add(zerofill(String.valueOf(10), 2) + locNo.substring(2));
+                list.add(zerofill(String.valueOf(11), 2) + locNo.substring(2));
+                Collections.reverse(list);
+                return list;
             case 12:
             case 13:
             case 14:
-                return new ArrayList<String>() {{
-                    add(zerofill(String.valueOf(12), 2) + locNo.substring(2));
-                    add(zerofill(String.valueOf(13), 2) + locNo.substring(2));
-                    add(zerofill(String.valueOf(14), 2) + locNo.substring(2));
-                }};
+                list.add(zerofill(String.valueOf(12), 2) + locNo.substring(2));
+                list.add(zerofill(String.valueOf(13), 2) + locNo.substring(2));
+                list.add(zerofill(String.valueOf(14), 2) + locNo.substring(2));
+                return list;
             case 15:
             case 16:
             case 17:
             case 18:
-                return new ArrayList<String>() {{
-                    add(zerofill(String.valueOf(15), 2) + locNo.substring(2));
-                    add(zerofill(String.valueOf(16), 2) + locNo.substring(2));
-                    add(zerofill(String.valueOf(17), 2) + locNo.substring(2));
-                    add(zerofill(String.valueOf(18), 2) + locNo.substring(2));
-                }};
+                list.add(zerofill(String.valueOf(15), 2) + locNo.substring(2));
+                list.add(zerofill(String.valueOf(16), 2) + locNo.substring(2));
+                list.add(zerofill(String.valueOf(17), 2) + locNo.substring(2));
+                list.add(zerofill(String.valueOf(18), 2) + locNo.substring(2));
+                Collections.reverse(list);
+                return list;
             case 19:
             case 20:
             case 21:
-                return new ArrayList<String>() {{
-                    add(zerofill(String.valueOf(19), 2) + locNo.substring(2));
-                    add(zerofill(String.valueOf(20), 2) + locNo.substring(2));
-                    add(zerofill(String.valueOf(21), 2) + locNo.substring(2));
-                }};
+                list.add(zerofill(String.valueOf(19), 2) + locNo.substring(2));
+                list.add(zerofill(String.valueOf(20), 2) + locNo.substring(2));
+                list.add(zerofill(String.valueOf(21), 2) + locNo.substring(2));
+                return list;
             default:
                 throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
         }
@@ -532,4 +528,9 @@
         return result;
     }
 
+    public static void main(String[] args) {
+        List<String> groupLoc = Utils.getGroupLoc("1300801");
+        System.out.println(groupLoc);
+    }
+
 }
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index 5ea709d..ce393d8 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -514,4 +514,26 @@
 
     </select>
 
+    <select id="searchByLike" resultMap="BaseResultMap">
+        select *
+        from asr_loc_detl
+        where
+        1 = 1
+        <if test="orderNo != null and orderNo != ''">
+            and order_no like '%' + #{orderNo} + '%'
+        </if>
+        <if test="locNo != null and locNo != ''">
+            and loc_no like '%' + #{locNo} + '%'
+        </if>
+        <if test="specs != null and specs != ''">
+            and specs like '%' + #{specs} + '%'
+        </if>
+        <if test="matnr != null and matnr != ''">
+            and matnr like '%' + #{matnr} + '%'
+        </if>
+        <if test="maktx != null and maktx != ''">
+            and maktx like '%' + #{maktx} + '%';
+        </if>
+    </select>
+
 </mapper>
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index 0135339..50c8410 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -326,4 +326,8 @@
         and loc_sts = 'O'
         order by row1,bay1,lev1
     </select>
+
+    <select id="selectLocByLev" resultMap="BaseResultMap">
+        SELECT * FROM asr_loc_mast WHERE lev1 = #{lev}
+    </select>
 </mapper>
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index fc8d3be..20b1fec 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -264,3 +264,13 @@
     ,{field: 'memo', align: 'center',title: '澶囨敞', hide: false}
 ]
 
+function getQueryVariable(variable)
+{
+    var query = window.location.search.substring(1);
+    var vars = query.split("&");
+    for (var i=0;i<vars.length;i++) {
+        var pair = vars[i].split("=");
+        if(pair[0] == variable){return pair[1];}
+    }
+    return(false);
+}
\ No newline at end of file
diff --git a/src/main/webapp/views/report/locDetl.html b/src/main/webapp/views/report/locDetl.html
index 9e3ee3d..ed829a7 100644
--- a/src/main/webapp/views/report/locDetl.html
+++ b/src/main/webapp/views/report/locDetl.html
@@ -43,7 +43,12 @@
         var $ = layui.jquery;
         var form = layui.form;
 
-        $('#locNo').val(parent.locNo);
+        var tmp = getQueryVariable("locNo")
+        if (tmp == false) {
+            $('#locNo').val(parent.locNo);
+        }else {
+            $('#locNo').val(tmp);
+        }
 
         // 鏁版嵁娓叉煋
         tableIns = table.render({
@@ -53,7 +58,7 @@
             page: true,
             limit: 20,
             skin: 'line',
-            where: {loc_no: parent.locNo},
+            where: {loc_no: $('#locNo').val()},
             even: true,
             cellMinWidth: 50,
             cols: [getCol()],

--
Gitblit v1.9.1