From 7bf327fe86f6c3fcfb8b539e8d616811282f922c Mon Sep 17 00:00:00 2001
From: 王佳豪 <g675230687@126.com>
Date: 星期二, 06 四月 2021 13:54:15 +0800
Subject: [PATCH] pda新增库存查询功能

---
 src/main/resources/mapper/WrkDetlMapper.xml                    |    5 
 src/main/webapp/views/pda/index.html                           |    1 
 src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java            |    5 
 src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java |    6 +
 src/main/java/com/zy/common/model/MobileLocDetlVo.java         |   10 +
 src/main/java/com/zy/asrs/controller/MobileController.java     |   61 ++++++++++
 src/main/webapp/views/pda/locDetlIframe.html                   |   38 +++++-
 src/main/java/com/zy/asrs/service/WrkDetlService.java          |    1 
 src/main/webapp/views/pda/stockQuery.html                      |  204 ++++++++++++++++++++++++++++++++++
 9 files changed, 324 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 5ba3f32..0c246a2 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -7,10 +7,12 @@
 import com.core.common.R;
 import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.WrkDetl;
 import com.zy.asrs.entity.param.CombParam;
 import com.zy.asrs.service.LocDetlService;
 import com.zy.asrs.service.LocMastService;
 import com.zy.asrs.service.MobileService;
+import com.zy.asrs.service.WrkDetlService;
 import com.zy.common.model.MobileLocDetlVo;
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +38,8 @@
     private LocMastService locMastService;
     @Autowired
     private LocDetlService locDetlService;
+    @Autowired
+    private WrkDetlService wrkDetlService;
 
     /**
      * 缁勬墭
@@ -59,6 +63,63 @@
     }
 
     /**
+     * 搴撳瓨鏌ヨ(鏍规嵁鐗╂枡缂栫爜鍜屽簱浣嶆煡璇㈠簱瀛樻暟閲忓拰鎹℃枡鏁伴噺)
+     * @param locNo
+     * @param matNo
+     * @return
+     */
+    @RequestMapping("/locDetl/stockQuery")
+    @ManagerAuth
+    public R stockQuery(@RequestParam(required = false)String locNo,
+                        @RequestParam(required = false)String matNo){
+        if (!Cools.isEmpty(locNo)) {
+            LocMast locMast = locMastService.selectById(locNo);
+            if (null == locMast || !"F".equals(locMast.getLocSts())) {
+                return R.parse(BaseRes.EMPTY);
+            }
+            List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
+                    .eq("loc_no", locNo).orderBy("appe_time", false));
+            List<MobileLocDetlVo> res = new ArrayList<>();
+            locDetls.forEach(locDetl -> {
+                MobileLocDetlVo vo = new MobileLocDetlVo();
+                List<WrkDetl> wrkDetlsList = wrkDetlService.queryWrkDetl(locDetl.getMatnr(), locDetl.getLocNo());
+                final Double[] pickNum = {0.0};
+                wrkDetlsList.forEach(item -> {
+                    pickNum[0] = pickNum[0] + item.getAnfme();
+                });
+                vo.setPickNum(pickNum[0]);
+                vo.setLocNo(locDetl.getLocNo());
+                vo.setMatnr(locDetl.getMatnr());
+                vo.setMaktx(locDetl.getMaktx());
+                vo.setCount(locDetl.getAnfme());
+                res.add(vo);
+            });
+            return R.ok().add(res);
+        }
+        if (!Cools.isEmpty(matNo)) {
+            List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
+                    .eq("matnr", matNo).orderBy("appe_time", false));
+            List<MobileLocDetlVo> res = new ArrayList<>();
+            locDetls.forEach(locDetl -> {
+                MobileLocDetlVo vo = new MobileLocDetlVo();
+                List<WrkDetl> wrkDetlsList = wrkDetlService.queryWrkDetl(locDetl.getMatnr(), locDetl.getLocNo());
+                final Double[] pickNum = {0.0};
+                wrkDetlsList.forEach(item -> {
+                    pickNum[0] = pickNum[0] + item.getAnfme();
+                });
+                vo.setPickNum(pickNum[0]);
+                vo.setLocNo(locDetl.getLocNo());
+                vo.setMatnr(locDetl.getMatnr());
+                vo.setMaktx(locDetl.getMaktx());
+                vo.setCount(locDetl.getAnfme());
+                res.add(vo);
+            });
+            return R.ok().add(res);
+        }
+        return R.parse(BaseRes.PARAM);
+    }
+
+    /**
      *  鏍规嵁搴撲綅鍙锋煡鎵惧簱瀛樻槑缁�
      */
     @RequestMapping("/locDetl")
diff --git a/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java b/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
index 6193859..6b8171c 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
@@ -2,11 +2,14 @@
 
 import com.baomidou.mybatisplus.mapper.BaseMapper;
 import com.zy.asrs.entity.WrkDetl;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Repository;
+
+import java.util.List;
 
 @Mapper
 @Repository
 public interface WrkDetlMapper extends BaseMapper<WrkDetl> {
-
+    List<WrkDetl> queryWrkDetl(@Param("matnr") String matnr,@Param("locNo") String locNo);
 }
diff --git a/src/main/java/com/zy/asrs/service/WrkDetlService.java b/src/main/java/com/zy/asrs/service/WrkDetlService.java
index 13ed68b..4553313 100644
--- a/src/main/java/com/zy/asrs/service/WrkDetlService.java
+++ b/src/main/java/com/zy/asrs/service/WrkDetlService.java
@@ -10,4 +10,5 @@
 
     void createWorkDetail(Integer workNo, List<MatCodeCountDto> matCodeCountDtos, String barcode, Long userId);
 
+    List<WrkDetl> queryWrkDetl(String matnr, String locNo);
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
index 3f4e893..ff87134 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
@@ -50,4 +50,10 @@
             }
         }
     }
+
+    @Override
+    @Transactional
+    public List<WrkDetl> queryWrkDetl(String matnr, String locNo) {
+        return baseMapper.queryWrkDetl(matnr, locNo);
+    }
 }
diff --git a/src/main/java/com/zy/common/model/MobileLocDetlVo.java b/src/main/java/com/zy/common/model/MobileLocDetlVo.java
index 5e8eed2..09a3f84 100644
--- a/src/main/java/com/zy/common/model/MobileLocDetlVo.java
+++ b/src/main/java/com/zy/common/model/MobileLocDetlVo.java
@@ -13,6 +13,8 @@
 
     private Double count;
 
+    private Double pickNum;
+
     public String getLocNo() {
         return locNo;
     }
@@ -44,4 +46,12 @@
     public void setCount(Double count) {
         this.count = count;
     }
+
+    public Double getPickNum() {
+        return pickNum;
+    }
+
+    public void setPickNum(Double pickNum) {
+        this.pickNum = pickNum;
+    }
 }
diff --git a/src/main/resources/mapper/WrkDetlMapper.xml b/src/main/resources/mapper/WrkDetlMapper.xml
index a4d6384..e84ef63 100644
--- a/src/main/resources/mapper/WrkDetlMapper.xml
+++ b/src/main/resources/mapper/WrkDetlMapper.xml
@@ -25,4 +25,9 @@
         <result column="appe_time" property="appeTime" />
     </resultMap>
 
+    <select id="queryWrkDetl" resultMap="BaseResultMap">
+        select a.wrk_no, a.matnr, a.maktx, a.anfme
+        from asr_wrk_detl a left join asr_wrk_mast b on a.wrk_no = b.wrk_no
+        where 1=1 and a.matnr = #{matnr,jdbcType=VARCHAR} and (b.loc_no = #{locNo,jdbcType=VARCHAR} or b.source_loc_no = #{locNo,jdbcType=VARCHAR})
+    </select>
 </mapper>
diff --git a/src/main/webapp/views/pda/index.html b/src/main/webapp/views/pda/index.html
index 50ecb47..e3bfa61 100644
--- a/src/main/webapp/views/pda/index.html
+++ b/src/main/webapp/views/pda/index.html
@@ -76,6 +76,7 @@
     <li><a id="comb" onclick="nav(this.id)" class="nav-select" href="#">缁勬墭</a></li>
     <li><a id="stockIn" onclick="nav(this.id)" class="nav-unselect" href="#">鍏ュ簱</a></li>
     <li><a id="stockOut" onclick="nav(this.id)" class="nav-unselect" href="#">鍑哄簱</a></li>
+    <li><a id="stockQuery" onclick="nav(this.id)" class="nav-unselect" href="#">搴撳瓨鏌ヨ</a></li>
 </ul>
 
 <!-- 涓讳綋鍐呭 -->
diff --git a/src/main/webapp/views/pda/locDetlIframe.html b/src/main/webapp/views/pda/locDetlIframe.html
index dfdef87..40aaa60 100644
--- a/src/main/webapp/views/pda/locDetlIframe.html
+++ b/src/main/webapp/views/pda/locDetlIframe.html
@@ -2,7 +2,8 @@
 <html lang="en">
 <head>
     <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, target-densitydpi=high-dpi, initial-scale=1.0, user-scalable=no"/>
+    <meta name="viewport"
+          content="width=device-width, target-densitydpi=high-dpi, initial-scale=1.0, user-scalable=no"/>
     <title>搴撳瓨鏄庣粏璇︽儏</title>
     <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
     <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
@@ -26,15 +27,16 @@
             text-align: right;
             width: 70px;
         }
+
         .form-box input {
             width: 120px;
             margin-left: 10px;
             padding-left: 5px;
             height: 30px;
             border: 1px solid #777777;
-            overflow:hidden;
-            white-space:nowrap;
-            text-overflow:ellipsis;
+            overflow: hidden;
+            white-space: nowrap;
+            text-overflow: ellipsis;
         }
 
         .number-tool {
@@ -43,11 +45,13 @@
             display: inline-block;
             width: 120px;
         }
+
         .number-tool:after {
             clear: both;
             content: "";
             display: table;
         }
+
         .number-tool button {
             background-color: #fff;
             margin-top: 3px;
@@ -57,6 +61,7 @@
             width: 25px;
             border: 1px solid #777777;
         }
+
         .number-tool input {
             text-align: center;
             height: 30px;
@@ -89,9 +94,9 @@
     <div class="form-item">
         <span style="vertical-align: middle">鏁伴噺</span>
         <div class="number-tool" style="vertical-align: middle">
-            <button onclick="reduce()">-</button>
+            <button id="reduceBtn" onclick="reduce()">-</button>
             <input id="count" type="number">
-<!--            <button onclick="add()">+</button>-->
+            <!--            <button onclick="add()">+</button>-->
         </div>
     </div>
     <button class="form-button" id="save" onclick="save()">淇濆瓨</button>
@@ -100,6 +105,26 @@
 </body>
 <script>
     var countDom = $('#count');
+    var flag = getQueryVariable("flag");
+
+    if (flag == '1') {
+        console.log('闅愯棌閮ㄥ垎鍔熻兘');
+        $("#reduceBtn").css("display", "none");
+        $("#remove").css("display", "none");
+        $("#count").attr("disabled", "true");
+    }
+
+    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);
+    }
 
     function save() {
         console.log(countDom.val())
@@ -126,6 +151,7 @@
     function add() {
         countDom.val(Number(countDom.val()) + 1);
     }
+
     function reduce() {
         if (countDom.val() <= 1) {
             return;
diff --git a/src/main/webapp/views/pda/stockQuery.html b/src/main/webapp/views/pda/stockQuery.html
new file mode 100644
index 0000000..e1dadb2
--- /dev/null
+++ b/src/main/webapp/views/pda/stockQuery.html
@@ -0,0 +1,204 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>搴撳瓨鏌ヨ</title>
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/pda.css" media="all">
+    <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+    <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
+</head>
+<body>
+<!-- 澶撮儴 -->
+<header class="layui-form">
+    <div class="layui-input-inline">
+        <label class="layui-form-label">搴撲綅</label>
+        <div class="layui-input-block">
+            <input class="layui-input" type="number" id="locNo" onkeyup="findByLocNo(this)" autocomplete="off">
+        </div>
+
+    </div>
+    <div class="layui-input-inline">
+        <label class="layui-form-label">浜у搧</label>
+        <div class="layui-input-block">
+            <input class="layui-input" type="text" id="matNo" onkeyup="findByMatNo(this)" autocomplete="off">
+        </div>
+    </div>
+</header>
+<!-- 涓讳綋 -->
+<main>
+    <table class="layui-table" id="dataByLoc" lay-filter="dataByLoc"></table>
+</main>
+<!-- 灏鹃儴 -->
+<footer>
+    <div class="layui-btn-container">
+        <button id="reset" type="button" class="layui-btn layui-btn-primary" onclick="reset()">閲嶇疆</button>
+        <span id="tips"></span>
+    </div>
+</footer>
+</body>
+<script>
+    window.onload = function(){
+        document.getElementById("locNo").focus();
+    }
+
+    /**
+     * 鏍规嵁搴撲綅鍙锋煡鎵惧簱瀛樻槑缁�
+     */
+    function findByLocNo(el){
+        if (isEmpty(el.value)) {
+            return;
+        }
+        $("#matNo").val("");
+        find(el.value, $("#matNo").val());
+    }
+
+    /**
+     * 鏍规嵁浜у搧鍙锋煡鎵惧簱瀛樻槑缁�
+     */
+    function findByMatNo(el){
+        if (isEmpty(el.value)) {
+            return;
+        }
+        $("#locNo").val("");
+        find($("#locNo").val(), el.value);
+    }
+    function find(locNo, matNo) {
+        $.ajax({
+            url: baseUrl + "/mobile/locDetl/stockQuery",
+            headers: {'token': localStorage.getItem('token')},
+            data: {
+                locNo: locNo,
+                matNo: matNo
+            },
+            method: 'POST',
+            success: function (res) {
+                if (res.code === 200) {
+                    if (res.data != null) {
+                        locDetlData = res.data;
+                        tableIns.reload({data: locDetlData});
+                    }
+                    $('#pakOut').focus();
+                } else if (res.code === 403) {
+                    top.location.href = baseUrl + "/pda";
+                } else {
+                    locDetlData = [];
+                    tableIns.reload({data: locDetlData});
+                }
+            }
+        })
+    }
+
+    // 琛ㄦ牸
+    var locDetlData = [];
+    var tableIns;
+    layui.use(['table','laydate', 'form'], function() {
+        var table = layui.table;
+        var $ = layui.jquery;
+        var layer = layui.layer;
+        var form = layui.form;
+
+        tableIns = table.render({
+            id: 'tableIdx',
+            elem: '#dataByLoc',
+            data: [],
+            limit: 500,
+            cellMinWidth: 50,
+            cols: [[
+                {field: 'matnr', align: 'center', title: '缂栫爜', event: 'detail'},
+                {field: 'maktx', align: 'center', title: '鍚嶇О', event: 'detail'},
+                {field: 'locNo', align: 'center', title: '搴撲綅', event: 'detail'},
+                {field: 'count', align: 'center', title: '鏁伴噺', event: 'detail', style:'color: blue', width:50},
+                {field: 'pickNum', align: 'center', title: '鎷f枡', event: 'detail', width:50},
+            ]],
+            done: function (res, curr, count) {
+            }
+        });
+
+        // 鐩戝惉琛屽伐鍏蜂簨浠�
+        table.on('tool(dataByLoc)', function(obj) {
+            var data = obj.data;
+            switch (obj.event) {
+                // 璇︽儏
+                case 'detail':
+                    layer.open({
+                        type: 2,
+                        title: '搴撳瓨鏄庣粏',
+                        shade: [0.3,'#000'],
+                        area: ['90%', '70%'],
+                        content: 'locDetlIframe.html?flag=1',
+                        success: function(layero, index){
+                            // 璁剧疆寮圭獥鏍峰紡
+                            $('.layui-layer-title').css('font-size', '16px');
+                            // 娉ㄥ叆鍊�
+                            let el = layer.getChildFrame('.form-box', index);
+                            for (var val in data) {
+                                var find = el.find(":input[id='" + val + "']");
+                                find.val(data[val]);
+                            }
+                        },
+                        end: function () {
+                            $('#pakOut').focus();
+                        }
+                    });
+                    break;
+            }
+        })
+    });
+
+    // 淇敼琛ㄦ牸鏁版嵁
+    function updateTableData(data) {
+        for (var i=0;i<locDetlData.length;i++) {
+            if (data.matnr === locDetlData[i].matnr && data.locNo === locDetlData[i].locNo) {
+                locDetlData[i].count = data.count;
+                break
+            }
+        }
+        tableIns.reload({data: locDetlData});
+    }
+
+    // 鍒犻櫎琛ㄦ牸琛�
+    function removeTableData(data) {
+        for (var i = locDetlData.length - 1; i >= 0; i--) {
+            if (locDetlData[i].locNo === data.locNo && locDetlData[i].matnr === data.matnr) {
+                locDetlData.splice(i, 1);
+            }
+        }
+        tableIns.reload({data: locDetlData});
+    }
+
+    // 閲嶇疆
+    function reset() {
+        $("#matNo").val("");
+        $("#locNo").val("");
+        locDetlData = [];
+        tableIns.reload({data: locDetlData});
+        layui.form.render('select');
+    }
+
+    /**
+     * 鎻愮ず淇℃伅
+     * @param msg 鎻愮ず鍐呭
+     * @param warn true锛氱孩鑹瞯ar瀛椾綋
+     */
+    function tips(msg, warn) {
+        layer.msg(msg, {icon: warn?2:1})
+    }
+
+    document.onkeyup = function (e) {
+        if (window.event)//濡傛灉window.event瀵硅薄瀛樺湪锛屽氨浠ユ浜嬩欢瀵硅薄涓哄噯
+            e = window.event;
+        var key = e.charCode || e.keyCode;
+        if (key === 115) {
+            $("#pakOut").focus();
+            pakOut();
+        } else if (key === 113) {
+            $("#locNo").val("");
+            $("#locNo").focus();
+        }
+    }
+</script>
+</html>
\ No newline at end of file

--
Gitblit v1.9.1