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