| src/main/java/com/zy/asrs/controller/MobileController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/WrkDetlService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/model/MobileLocDetlVo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/WrkDetlMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/views/pda/index.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/views/pda/locDetlIframe.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/views/pda/stockQuery.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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") 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); } 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); } 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); } } 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; } } 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> 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> <!-- 主体内容 --> 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; src/main/webapp/views/pda/stockQuery.html
New file @@ -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: '拣料', 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:红色var字体 */ 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>