From 09a482e8fb4d4dac63aed1503fd91e738ddb070d Mon Sep 17 00:00:00 2001 From: whycq <10027870+whycq@user.noreply.gitee.com> Date: 星期四, 04 七月 2024 10:42:24 +0800 Subject: [PATCH] # 并板出库 --- src/main/java/com/zy/asrs/service/WorkService.java | 6 src/main/webapp/views/mergeStore/mergeStore.html | 132 ++++++++ src/main/webapp/views/mergeStore/locDetlCheckQuery.html | 242 ++++++++++++++++ src/main/webapp/static/js/mergeStore/mergeStore.js | 138 +++++++++ src/main/webapp/views/pakStore/pakComb.html | 3 src/main/java/com/zy/common/model/enums/IoWorkType.java | 1 src/main/java/com/zy/asrs/controller/MobileController.java | 26 + src/main/java/com/zy/asrs/controller/WorkController.java | 17 + src/main/resources/mapper/WrkDetlMapper.xml | 9 src/main/webapp/views/pakStore/bomMatQuery.html | 193 ++++++++++++ src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 23 + src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 56 +++ src/main/webapp/static/js/common.js | 8 src/main/webapp/static/js/pakStore/pakComb.js | 17 + src/main/java/com/zy/asrs/service/MobileService.java | 5 15 files changed, 871 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java index 630bdd7..fd09a48 100644 --- a/src/main/java/com/zy/asrs/controller/MobileController.java +++ b/src/main/java/com/zy/asrs/controller/MobileController.java @@ -106,6 +106,23 @@ return R.ok().add(orderDetls); } + @RequestMapping("/check/mergeStore/barcode") + @ManagerAuth + public R mergeStoreBarcode(@RequestParam String barcode){ + WrkMast wrkMast = wrkMastService.selectByBarcode(barcode); + if (Cools.isEmpty(wrkMast)) { + throw new CoolException("褰撳墠鎵樼洏鐮�" + barcode + "娌℃湁浠诲姟锛岃妫�鏌ワ紒"); + } + if (wrkMast.getIoType() != 104) { + throw new CoolException("褰撳墠鎵樼洏鐮�" + barcode + "闈炲苟鏉垮嚭搴�"); + } + if (wrkMast.getWrkSts() != 14L) { + throw new CoolException("褰撳墠鎵樼洏鐮�" + barcode + "鍑哄簱鏈畬鎴�"); + } + WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); + return R.ok().add(wrkDetl.getBomCode()); + } + @RequestMapping("/comb/auth") @ManagerAuth(memo = "缁勬墭") public R comb(@RequestBody CombParam combParam){ @@ -117,6 +134,13 @@ @ManagerAuth(memo = "缁勬墭") public R comb2(@RequestBody CombParam combParam){ mobileService.comb2(combParam, getUserId()); + return R.ok("缁勬墭鎴愬姛"); + } + + @RequestMapping("/merge/comb/auth") + @ManagerAuth(memo = "缁勬墭") + public R mergeComb(@RequestBody CombParam combParam){ + mobileService.mergeComb(combParam, getUserId()); return R.ok("缁勬墭鎴愬姛"); } @@ -133,7 +157,7 @@ return R.ok().add(bomMat); } else { // 妫�鏌ユ槸鍚﹀湪bom娓呭崟鍐� - bomMat = bomMatService.selectOne(new EntityWrapper<BomMat>().eq("unit_num", checkBom.getBomCode()).eq("element_num", checkBom.getMatnr())); + bomMat = bomMatService.selectOne(new EntityWrapper<BomMat>().eq("bom_num", checkBom.getBomCode()).eq("element_num", checkBom.getMatnr())); if (Cools.isEmpty(bomMat)) { throw new CoolException("褰撳墠鐗╂枡" + checkBom.getMatnr() + "涓嶅湪Bom娓呭崟鍐�"); } else { diff --git a/src/main/java/com/zy/asrs/controller/WorkController.java b/src/main/java/com/zy/asrs/controller/WorkController.java index 09acbae..c5218ff 100644 --- a/src/main/java/com/zy/asrs/controller/WorkController.java +++ b/src/main/java/com/zy/asrs/controller/WorkController.java @@ -70,6 +70,12 @@ return R.ok().add(basDevpService.getAvailableOutSite(107)); } + @RequestMapping("/available/take/merge/site") + @ManagerAuth() + public R availableTakeMergeSite(){ + return R.ok().add(basDevpService.getAvailableOutSite(104)); + } + @RequestMapping("/available/empty/take/site") @ManagerAuth() public R availableEmptyTakeSite(){ @@ -109,6 +115,13 @@ return R.ok("鍑哄簱鍚姩鎴愬姛"); } + @RequestMapping("/locMerge/out/start") + @ManagerAuth(memo = "骞舵澘鍑哄簱") + public R locMergeOutStart(@RequestBody StockOutParam param) { + workService.locMergeOut(param, getUserId()); + return R.ok("鍑哄簱鍚姩鎴愬姛"); + } + @RequestMapping("/loc/move/start") @ManagerAuth(memo = "搴撲綅绉昏浆") public R locMoveStart(@RequestParam String sourceLocNo, @@ -116,17 +129,21 @@ workService.locMove(sourceLocNo, targetLocNo, getUserId()); return R.ok("绉诲簱鍚姩鎴愬姛"); } + @RequestMapping("/locCombOutStartCheckSite/site") @ManagerAuth(memo = "骞舵澘鍑哄簱绔欑偣鏌ヨ") public R locCombOutStartCheckSite(){ + return R.ok().add(basDevpService.getAvailableOutSite(104)); } + @RequestMapping("/locComb/out/start") @ManagerAuth(memo = "骞舵澘鍑哄簱") public R locCombOutStart(@RequestBody ReplenishmentParam param) { workService.locCombOut(param,getUserId()); return R.ok("琛ユ枡鍑哄簱鍚姩鎴愬姛"); } + @RequestMapping("/locDdetl/adjust/start") @ManagerAuth(memo = "搴撳瓨璋冩暣") public R locDetlAdjustStart(@RequestBody LocDetlAdjustParam param) { diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java index 6b219d3..134500d 100644 --- a/src/main/java/com/zy/asrs/service/MobileService.java +++ b/src/main/java/com/zy/asrs/service/MobileService.java @@ -25,6 +25,11 @@ void comb2(CombParam param, Long userId); /** + * 缁勬墭 + */ + void mergeComb(CombParam param, Long userId); + + /** * 鏍¢獙bom */ R checkBom(CheckBom param, Long userId); diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java index d35dd1f..3e371bd 100644 --- a/src/main/java/com/zy/asrs/service/WorkService.java +++ b/src/main/java/com/zy/asrs/service/WorkService.java @@ -58,6 +58,12 @@ void locCheckOut(StockOutParam param, Long userId); /** + * 骞舵澘鍑哄簱 + */ + void locMergeOut(StockOutParam param, Long userId); + + + /** * 搴撲綅绉昏浆 */ void locMove(String sourceLocNo, String locNo, Long userId); diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java index 18fdaa5..4e4bafc 100644 --- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java @@ -296,7 +296,7 @@ } // 鏍¢獙鏄惁涓篵om鍏ュ簱 bom鍏ュ簱鐨勬暟閲忎笉鑳借秴杩囧簱瀛樺師鏈夋暟閲� if (!Cools.isEmpty(param.getBomCode())) { - BomMat bomMat = bomMatService.selectOne(new EntityWrapper<BomMat>().eq("unit_num", param.getBomCode()).eq("element_num", detlDto.getMatnr())); + BomMat bomMat = bomMatService.selectOne(new EntityWrapper<BomMat>().eq("bom_num", param.getBomCode()).eq("element_num", detlDto.getMatnr())); Double bomQyt = locDetlService.getBomQyt(param.getBomCode(), detlDto.getMatnr()); if (!Cools.isEmpty(bomQyt)) { bomMat.setZpalletAnfme(bomMat.getZpalletAnfme() - bomQyt); @@ -391,6 +391,60 @@ @Override @Transactional + public void mergeComb(CombParam param, Long userId) { + + if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) { + throw new CoolException(BaseRes.PARAM); + } + if(param.getCombMats().stream().anyMatch(obj -> obj.getAnfme() == null)){ + throw new CoolException("鍏ュ簱鐗╂枡鏁伴噺涓嶈兘涓虹┖"); + } + // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁 + if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). + eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) { + throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱"); + } + + int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode())); + WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode()); + + + //璁剧疆闈瀗ull鎵瑰彿锛� + for (CombParam.CombMat combMat : param.getCombMats()) { + if (combMat.getBatch() == null){ + combMat.setBatch(""); + } + } + + + + + Date now = new Date(); + for (CombParam.CombMat combMat : param.getCombMats()) { + Mat mat = matService.selectByMatnr(combMat.getMatnr()); + + + LocDetl locDetl = new LocDetl(); + locDetl.sync(mat); + locDetl.setLocNo(wrkMast.getSourceLocNo()); + locDetl.setZpallet(param.getBarcode()); + locDetl.setBomCode(param.getBomCode()); + locDetl.setAnfme(combMat.getAnfme()); + locDetl.setAppeTime(now); + locDetl.setAppeUser(userId); + locDetl.setModiTime(now); + locDetl.setModiUser(userId); + locDetlService.insert(locDetl); + } + + + + + + } + + @Override + @Transactional public R checkBom(CheckBom param, Long userId) { 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 c804b6c..c6fff83 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -201,6 +201,8 @@ ioType = dto.isAll() ? 101 : 103; } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) { ioType = 107; + } else if (ioWorkType.equals(IoWorkType.MERGE_OUT)) { + ioType = 104; } assert ioType != null; // 鑾峰彇搴撲綅 @@ -559,6 +561,27 @@ @Override @Transactional + public void locMergeOut(StockOutParam param, Long userId) { + // 鐩爣绔欑偣鐘舵�佹娴� + BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite()); + // 鑾峰彇搴撲綅鏄庣粏 + List<LocDetlDto> locDetlDtos = new ArrayList<>(); + for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { + if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { + LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch()); + if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); + } + } + if (!locDetlDtos.isEmpty()) { + // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱 + stockOut(staNo, locDetlDtos, IoWorkType.MERGE_OUT, userId); + } else { + throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�"); + } + } + + @Override + @Transactional public void locMove(String sourceLocNo, String locNo, Long userId) { LocMast sourceLoc = locMastService.selectById(sourceLocNo); List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); diff --git a/src/main/java/com/zy/common/model/enums/IoWorkType.java b/src/main/java/com/zy/common/model/enums/IoWorkType.java index 0077d5c..03806e0 100644 --- a/src/main/java/com/zy/common/model/enums/IoWorkType.java +++ b/src/main/java/com/zy/common/model/enums/IoWorkType.java @@ -7,6 +7,7 @@ ALL_OUT, PICK_OUT, CHECK_OUT, + MERGE_OUT, ; } diff --git a/src/main/resources/mapper/WrkDetlMapper.xml b/src/main/resources/mapper/WrkDetlMapper.xml index 6b1c11b..d9691ed 100644 --- a/src/main/resources/mapper/WrkDetlMapper.xml +++ b/src/main/resources/mapper/WrkDetlMapper.xml @@ -111,9 +111,12 @@ <select id="getBomQty" resultType="double"> select SUM(anfme) anfme - from asr_wrk_detl - where bom_code = #{bomCode} - and matnr = #{matnr} + from asr_wrk_detl awd + left join asr_wrk_mast awm on awd.wrk_no = awm.wrk_no + where 1=1 + and awm.io_type != 104 + and awd.bom_code = #{bomCode} + and awd.matnr = #{matnr} </select> </mapper> diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js index bd21907..0aad53f 100644 --- a/src/main/webapp/static/js/common.js +++ b/src/main/webapp/static/js/common.js @@ -257,4 +257,12 @@ ,{field: 'check$', align: 'center',title: '瑕佹眰妫�楠�', hide: true} ,{field: 'danger$', align: 'center',title: '鍗遍櫓鍝�', hide: true} ] +var bomMatCols = [ + {field: 'unitNum', align: 'center',title: '閮ㄤ欢鍝佸彿', width: 180} + ,{field: 'unitName', align: 'center',title: '閮ㄤ欢鍝佸悕', width: 200} + ,{field: 'bomNum', align: 'center',title: '缁勪欢鍝佸彿'} + ,{field: 'bomName', align: 'center',title: '缁勪欢鍝佸悕'} + ,{field: 'elementNum', align: 'center',title: '鍏冧欢鍝佸彿'} + ,{field: 'elementName', align: 'center',title: '鍏冧欢鍝佸悕'} +] diff --git a/src/main/webapp/static/js/mergeStore/mergeStore.js b/src/main/webapp/static/js/mergeStore/mergeStore.js new file mode 100644 index 0000000..c60d61e --- /dev/null +++ b/src/main/webapp/static/js/mergeStore/mergeStore.js @@ -0,0 +1,138 @@ +var locDetlLayerIdx; +var tableIns; +var locDetlData = []; +function getCol() { + var cols = [ + {field: 'locNo', align: 'center',title: '搴撲綅鍙�', merge: true, style: 'font-weight: bold'} + ]; + cols.push.apply(cols, detlCols); + return cols; +} + +layui.config({ + base: baseUrl + "/static/layui/lay/modules/" +}).use(['table','laydate', 'form', 'admin', 'tableMerge'], function() { + var table = layui.table; + var $ = layui.jquery; + var layer = layui.layer; + var layDate = layui.laydate; + var form = layui.form; + var admin = layui.admin; + var tableMerge = layui.tableMerge; + + tableIns = table.render({ + elem: '#chooseData', + headers: {token: localStorage.getItem('token')}, + data: [], + even: true, + toolbar: '#toolbar', + cellMinWidth: 50, + cols: [getCol()], + done: function(res, curr, count) { + tableMerge.render(this); + limit(); + getOutBound(); + } + }); + + // 鐩戝惉澶村伐鍏锋爮浜嬩欢 + table.on('toolbar(chooseData)', function (obj) { + switch (obj.event) { + case 'outbound': + if (locDetlData.length === 0){ + layer.msg('璇峰厛娣诲姞骞舵澘搴撳瓨', {icon: 2}); + } else { + var staNo = $("#staNoSelect").val(); + if (staNo === "" || staNo === null){ + layer.msg("璇烽�夋嫨骞舵澘绔�", {icon: 2}); + return; + } + let param = { + outSite: staNo, + locDetls: locDetlData + } + $.ajax({ + url: baseUrl+"/locMerge/out/start", + headers: {'token': localStorage.getItem('token')}, + data: JSON.stringify(param), + contentType:'application/json;charset=UTF-8', + method: 'POST', + success: function (res) { + if (res.code === 200){ + locDetlData = []; + tableIns.reload({data: locDetlData}); + layer.msg(res.msg, {icon: 1}); + } else if (res.code === 403){ + top.location.href = baseUrl+"/"; + } else { + layer.msg(res.msg, {icon: 2}) + } + } + }); + } + break; + } + }); + + // 鑾峰彇鍑哄簱鍙� + function getOutBound(){ + $.ajax({ + url: baseUrl+"/available/take/merge/site", + headers: {'token': localStorage.getItem('token')}, + method: 'POST', + async: false, + success: function (res) { + if (res.code === 200){ + var tpl = $("#takeSiteSelectTemplate").html(); + var template = Handlebars.compile(tpl); + var html = template(res); + $('#staNoSelect').append(html); + form.render('select'); + } else if (res.code === 403){ + top.location.href = baseUrl+"/"; + }else { + layer.msg(res.msg) + } + } + }) + } + + $(document).on('click','#mat-query', function () { + let loadIndex = layer.msg('璇锋眰涓�...', {icon: 16, shade: 0.01, time: false}); + locDetlLayerIdx = layer.open({ + type: 2, + title: false, + closeBtn: false, + maxmin: false, + area: ['90%', '85%'], + shadeClose: true, + content: 'locDetlCheckQuery.html', + success: function(layero, index){ + layer.close(loadIndex); + } + }); + }) + +}) + +// 娣诲姞琛ㄦ牸鏁版嵁 +function addTableData(data) { + for (let i=0;i<data.length;i++){ + let pass = false; + for (let j=0;j<locDetlData.length;j++){ + if (data[i].matnr === locDetlData[j].matnr && data[i].batch === locDetlData[j].batch && data[i].locNo$ === locDetlData[j].locNo$) { + pass = true; + break; + } + } + if (pass) { + data.splice(i--, 1); + } else { + data[i]["count"] = data[i]["anfme"]; + } + + } + locDetlData.push.apply(locDetlData, data); + tableIns.reload({data: locDetlData}); + layer.close(locDetlLayerIdx); +} diff --git a/src/main/webapp/static/js/pakStore/pakComb.js b/src/main/webapp/static/js/pakStore/pakComb.js index 8520192..ea27a5b 100644 --- a/src/main/webapp/static/js/pakStore/pakComb.js +++ b/src/main/webapp/static/js/pakStore/pakComb.js @@ -232,6 +232,23 @@ }); } +// 鎵撳紑鍟嗗搧寮圭獥 +function getBomMat() { + matCodeLayerIdx = layer.open({ + type: 2, + title: 'Bom鐗╂枡', + shade: [0.3, '#000'], + area: ['90%', '80%'], + content: 'bomMatQuery.html', + success: function (layero, index) { + $('.layui-layer-title').css('font-size', '16px'); + }, + end: function () { + $('#addBomMatnr').focus(); + } + }); +} + // 娣诲姞琛ㄦ牸鏁版嵁 var matData = []; diff --git a/src/main/webapp/views/mergeStore/locDetlCheckQuery.html b/src/main/webapp/views/mergeStore/locDetlCheckQuery.html new file mode 100644 index 0000000..a664d6d --- /dev/null +++ b/src/main/webapp/views/mergeStore/locDetlCheckQuery.html @@ -0,0 +1,242 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title></title> + <meta name="renderer" content="webkit"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> + <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> + <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all"> + <link rel="stylesheet" href="../../static/css/cool.css" media="all"> + <link rel="stylesheet" href="../../static/css/common.css" media="all"> + <style> + body { + padding: 0 20px; + } + .layui-table-box { + border-right: 1px solid #9F9F9F; + border-left: 1px solid #9F9F9F; + } + + #search-box { + padding: 30px 0 20px 0; + } + #search-box .layui-inline:first-child { + margin-left: 30px; + } + #search-box .layui-inline { + margin-right: 5px; + } + + #data-search-btn { + margin-left: 10px; + display: inline-block; + } + #data-search-btn.layui-btn-container .layui-btn { + margin-right: 20px; + } + + </style> +</head> +<body> + +<!-- 鎼滅储鏍� --> +<fieldset class="layui-elem-field site-demo-button" style="margin: 20px;"> + <legend>鎼滅储鏍�</legend> + <!-- 鎼滅储鏍� --> + <div id="search-box" class="layui-form layui-card-header"> +<!-- <div class="layui-input-inline" style="margin-top: -10px">--> +<!-- <select id="crnNo" name="crnNo">--> +<!-- <option value="" style="display: none">璇烽�夋嫨宸烽亾</option>--> +<!-- <option value="1">1鍙�</option>--> +<!-- <option value="2">2鍙�</option>--> +<!-- <option value="3">3鍙�</option>--> +<!-- <option value="4">4鍙�</option>--> +<!-- </select>--> +<!-- </div>--> + <div class="layui-inline"> + <div class="layui-input-inline cool-auto-complete"> + <input id="crnNo" class="layui-input" name="crnNo" type="text" placeholder="璇疯緭鍏�" autocomplete="off" style="display: none"> + <input id="crnNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="鍫嗗灈鏈哄彿" onfocus=this.blur()> + <div class="cool-auto-complete-window"> + <input class="cool-auto-complete-window-input" data-key="basCrnpQueryBycrnNo" onkeyup="autoLoad(this.getAttribute('data-key'))"> + <select class="cool-auto-complete-window-select" data-key="basCrnpQueryBycrnNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> + </select> + </div> + </div> + </div> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input class="layui-input" type="text" name="loc_no" placeholder="搴撲綅鍙�" autocomplete="off"> + </div> + </div> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input class="layui-input" type="text" name="matnr" placeholder="鍟嗗搧缂栧彿" autocomplete="off"> + </div> + </div> +<!-- <div class="layui-inline">--> +<!-- <div class="layui-input-inline">--> +<!-- <input class="layui-input" type="text" name="maktx" placeholder="鐗╂枡鎻忚堪" autocomplete="off">--> +<!-- </div>--> +<!-- </div>--> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input class="layui-input" type="text" name="batch" placeholder="鎵瑰彿" autocomplete="off"> + </div> + </div> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input class="layui-input" type="text" name="zpallet" placeholder="鎵樼洏鐮�" autocomplete="off"> + </div> + </div> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input class="layui-input" type="text" name="bomCode" placeholder="Bom鍙�" autocomplete="off"> + </div> + </div> + <!-- 寰呮坊鍔� --> + <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block"> + <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button> + <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button> + </div> + </div> +</fieldset> + +<script type="text/html" id="toolbar"> + <div class="layui-btn-container"> + <button class="layui-btn" id="btn-confirm" lay-event="confirm" style="">鎻愬彇</button> + </div> +</script> + +<div class="layui-form"> + <table class="layui-hide" id="stockOut" lay-filter="stockOut"></table> +</div> + +<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> + +</body> +<script> + + function getCol() { + let cols = [ + {type: 'checkbox', merge: ['locNo']} + ,{field: 'locNo', align: 'center',title: '搴撲綅鍙�', merge: true, style: 'font-weight: bold'} + ]; + cols.push.apply(cols, detlCols); + cols.push({field: 'modiUser$', align: 'center',title: '淇敼浜哄憳', hide: true} + ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'}) + return cols; + } + + layui.config({ + base: baseUrl + "/static/layui/lay/modules/" + }).use(['table','laydate', 'form', 'admin', 'tableMerge'], function() { + var table = layui.table; + var $ = layui.jquery; + var layer = layui.layer; + var layDate = layui.laydate; + var form = layui.form; + var admin = layui.admin; + var tableMerge = layui.tableMerge; + + // 鏁版嵁娓叉煋 + locDetlTableIns = table.render({ + elem: '#stockOut', + headers: {token: localStorage.getItem('token')}, + url: baseUrl+'/stock/out/list/auth', + page: true, + limit: 20, + limits: [20, 50, 100, 200, 500], + even: true, + toolbar: '#toolbar', + cellMinWidth: 50, + cols: [getCol()], + request: { + pageName: 'curr', + pageSize: 'limit' + }, + parseData: function (res) { + return { + 'code': res.code, + 'msg': res.msg, + 'count': res.data.total, + 'data': res.data.records + } + }, + response: { + statusCode: 200 + }, + done: function(res, curr, count) { + tableMerge.render(this); + if (res.code === 403) { + top.location.href = baseUrl+"/"; + } + } + }); + + // 鐩戝惉澶村伐鍏锋爮浜嬩欢 + table.on('toolbar(stockOut)', function (obj) { + var checkStatus = table.checkStatus(obj.config.id); + var data = checkStatus.data; + switch(obj.event) { + case 'confirm': + if (data.length === 0){ + layer.msg("璇烽�夋嫨鏁版嵁", {icon: 2}); + return; + } + let locNos = []; + data.forEach(function(elem) { + locNos.push(elem.locNo); + }); + $.ajax({ + url: baseUrl+"/locDetl/auth", + headers: {'token': localStorage.getItem('token')}, + data: {locNos:locNos}, + method: 'POST', + async: false, + success: function (res) { + if (res.code === 200) { + data = res.data; + } else if (res.code === 403) { + top.location.href = baseUrl + "/"; + } else { + layer.msg(res.msg) + } + } + }) + parent.addTableData(data); + break; + } + }); + + // 鎼滅储鏍忔悳绱簨浠� + form.on('submit(search)', function (data) { + tableReload(); + }); + + layDate.render({ + elem: '.layui-laydate-range' + ,type: 'datetime' + ,range: true + }); + }) + + function tableReload() { + var searchData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + searchData[this.name] = this.value; + }); + locDetlTableIns.reload({ + where: searchData + }); + } + +</script> +</html> + diff --git a/src/main/webapp/views/mergeStore/mergeStore.html b/src/main/webapp/views/mergeStore/mergeStore.html new file mode 100644 index 0000000..8b20868 --- /dev/null +++ b/src/main/webapp/views/mergeStore/mergeStore.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title></title> + <meta name="renderer" content="webkit"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> + <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> + <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all"> + <link rel="stylesheet" href="../../static/css/cool.css" media="all"> + <link rel="stylesheet" href="../../static/css/common.css" media="all"> + <style> + html { + height: 100%; + padding: 10px; + background-color: #f1f1f1; + box-sizing: border-box; + } + body { + background-color: #fff; + border-radius: 5px; + box-shadow: 0 0 3px rgba(0,0,0,.3); + } + #staNoSpan { + text-align: center; + display: inline-block; + width: 100px; + font-size: 13px; + } + .layui-btn-container .layui-form-select { + display: inline-block; + width: 150px; + height: 30px; + } + .layui-btn-container .layui-form-select.layui-form-selected { + display: inline-block; + width: 150px; + } + .layui-btn-container .layui-select-title input { + font-size: 13px; + } + .layui-btn-container .layui-anim.layui-anim-upbit dd { + font-size: 13px; + } + + #btn-outbound { + margin-left: 60px; + } + + /*----------------------------------*/ + .function-area { + padding: 20px 50px; + } + .function-btn { + font-size: 16px; + padding: 1px 2px; + width: 100px; + height: 50px; + border-color: #2b425b; + border-radius: 4px; + border-width: 2px; + background: none; + border-style: solid; + transition: 0.4s; + cursor: pointer; + letter-spacing: 1.5px; + } + .function-btn:hover { + background-color: #2b425b; + color: #fff; + } + + #mat-query { + display: none; + } + #btn-outbound { + display: none; + } + </style> +</head> +<body style="padding-bottom: 30px"> + +<!-- 鍔熻兘鍖� --> +<div class="function-area"> + <button id="mat-query" class="function-btn">鎻愬彇搴撳瓨</button> +</div> + +<hr> + +<!-- 琛ㄦ牸 --> +<div style="padding-bottom: 5px; margin-bottom: 45px"> + + <!-- 澶撮儴 --> + <script type="text/html" id="toolbar"> + <div class="layui-form"> + <div class="layui-btn-container"> + <!-- 1.閫夋嫨鍑哄簱鍙� --> + <span id="staNoSpan">浣滀笟绔欙細</span> + <select id="staNoSelect" lay-verify="required"> + <option value="">璇烽�夋嫨绔欑偣</option> + </select> + <!-- 2.鍚姩鍑哄簱 --> + <button class="layui-btn layui-btn-lg" id="btn-outbound" lay-event="outbound">骞舵澘鍑哄簱</button> + </div> + </div> + </script> + + <!-- 琛� --> + <script type="text/html" id="operate"> + <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="remove">绉婚櫎</a> + </script> + + <table class="layui-table" id="chooseData" lay-filter="chooseData"></table> +</div> + +<script type="text/template" id="takeSiteSelectTemplate"> + {{#each data}} + <option value="{{this}}">{{this}}</option> + {{/each}} +</script> + +<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> +<script type="text/javascript" src="../../static/js/mergeStore/mergeStore.js" charset="utf-8"></script> + +</body> +</html> + diff --git a/src/main/webapp/views/pakStore/bomMatQuery.html b/src/main/webapp/views/pakStore/bomMatQuery.html new file mode 100644 index 0000000..cb70357 --- /dev/null +++ b/src/main/webapp/views/pakStore/bomMatQuery.html @@ -0,0 +1,193 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title></title> + <meta name="renderer" content="webkit"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> + <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> + <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all"> + <link rel="stylesheet" href="../../static/css/cool.css" media="all"> + <link rel="stylesheet" href="../../static/css/common.css" media="all"> + <style> + body { + /*overflow: hidden;*/ + } + .layui-table-box { + border-right: 1px solid #9F9F9F; + border-left: 1px solid #9F9F9F; + } + </style> +</head> +<body> +<div style="padding: 25px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;"> + <span style="font-size: large; font-weight: bold">閫夋嫨鍟嗗搧</span> +</div> +<div class="layui-card" style="padding: 0 20px; overflow: scroll;"> + <fieldset class="layui-elem-field site-demo-button" style="margin: 20px;"> + <legend>鎼滅储鏍�</legend> + <div id="search-box" class="layui-form layui-card-header"> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input class="layui-input" type="text" name="unit_num" placeholder="閮ㄤ欢鍝佸彿" autocomplete="off"> + </div> + </div> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input class="layui-input" type="text" name="bom_num" placeholder="缁勪欢鍝佸彿" autocomplete="off"> + </div> + </div> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input class="layui-input" type="text" name="element_num" placeholder="鍏冧欢鍝佸彿" autocomplete="off"> + </div> + </div> + <!-- 鏃ユ湡鑼冨洿 --> + <div class="layui-inline" style="width: 300px"> + <div class="layui-input-inline"> + <input class="layui-input layui-laydate-range" name="modi_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px"> + </div> + </div> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off"> + </div> + </div> + <!-- 寰呮坊鍔� --> + <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block"> + <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button> + </div> + </div> + </fieldset> + + <div class="layui-form"> + <table class="layui-hide" id="mat" lay-filter="mat"></table> + </div> +</div> + +<script type="text/html" id="toolbar"> + <div class="layui-btn-container"> + <button class="layui-btn" id="btn-confirm" lay-event="confirm" style="">鎻愬彇</button> + </div> +</script> + +<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> + +</body> +<script> + function getCol() { + let cols = [ + {type: 'checkbox', fixed: 'left'} + ]; + cols.push.apply(cols, bomMatCols); + cols.push( + {field: 'modiUser$', align: 'center',title: '淇敼浜哄憳', hide: true}, + {field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'} + ) + return cols; + } + + layui.config({ + base: baseUrl + "/static/layui/lay/modules/" + }).use(['table','laydate', 'form', 'admin'], function() { + var table = layui.table; + var $ = layui.jquery; + var layer = layui.layer; + var layDate = layui.laydate; + var form = layui.form; + var admin = layui.admin; + + // 鐗╂枡鏌ヨ鏁版嵁琛� + matQueryTable = table.render({ + elem: '#mat', + headers: {token: localStorage.getItem('token')}, + url: baseUrl + '/bomMat/list/auth', + page: true, + limit: 7, + limits: [7, 10, 30,50,100], + even: true, + cellMinWidth: 50, + toolbar: '#toolbar', + cols: [getCol()], + request: { + pageName: 'curr', + pageSize: 'limit' + }, + parseData: function (res) { + return { + 'code': res.code, + 'msg': res.msg, + 'count': res.data.total, + 'data': res.data.records + } + }, + response: { + statusCode: 200 + }, + done: function (res, curr, count) { + if (res.code === 403) { + top.location.href = baseUrl + "/"; + } + } + }); + + // 鐩戝惉澶村伐鍏锋爮浜嬩欢 + table.on('toolbar(mat)', function (obj) { + let checkStatus = table.checkStatus(obj.config.id); + let data = checkStatus.data; + switch(obj.event) { + case 'confirm': + if (data.length === 0){ + layer.msg("璇烽�夋嫨鏁版嵁", {icon: 2}); + return; + } + let matData = [] + for (let k of data) { + $.ajax({ + url: baseUrl+"/mat/list/auth", + headers: {'token': localStorage.getItem('token')}, + method: 'GET', + data: {matnr:k.elementNum}, + async: false, + success: function (res) { + if (res.code === 200) { + matData.push(res.data.records[0]) + } + } + }); + } + parent.addTableData(matData); + break; + } + }); + + // 鎼滅储鏍忔悳绱簨浠� + form.on('submit(search)', function (data) { + tableReload(); + }); + + layDate.render({ + elem: '.layui-laydate-range' + ,type: 'datetime' + ,range: true + }); + }) + + function tableReload() { + var searchData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + searchData[this.name] = this.value; + }); + matQueryTable.reload({ + where: searchData + }); + } + +</script> +</html> + diff --git a/src/main/webapp/views/pakStore/pakComb.html b/src/main/webapp/views/pakStore/pakComb.html index 2da04ce..a26903b 100644 --- a/src/main/webapp/views/pakStore/pakComb.html +++ b/src/main/webapp/views/pakStore/pakComb.html @@ -37,6 +37,9 @@ <div class="layui-col-md1"> <button class="layui-btn layui-btn-primary layui-border" id="addmatnr" onclick="getMat()">鏂板鐗╂枡</button> </div> + <div class="layui-col-md1"> + <button class="layui-btn layui-btn-primary layui-border" id="addBomMatnr" onclick="getBomMat()">鏂板Bom鐗╂枡</button> + </div> </div> <div class="layui-row"> -- Gitblit v1.9.1