From 9538400404d7a6a1acb036aa0ce8463400e8f497 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 21 六月 2021 14:05:16 +0800 Subject: [PATCH] 盘点上传 --- version/v1.0.3/addMenu | 1 src/main/webapp/static/js/check/checkUpload.js | 177 +++++++++++++++++++++++++++++ src/main/java/zy/cloud/wms/manager/controller/WorkController.java | 56 ++++++++ src/main/java/zy/cloud/wms/manager/entity/param/CheckUploadParam.java | 16 ++ src/main/webapp/views/check/check_upload.html | 61 ++++++++++ 5 files changed, 305 insertions(+), 6 deletions(-) diff --git a/src/main/java/zy/cloud/wms/manager/controller/WorkController.java b/src/main/java/zy/cloud/wms/manager/controller/WorkController.java index f14b33e..5d79466 100644 --- a/src/main/java/zy/cloud/wms/manager/controller/WorkController.java +++ b/src/main/java/zy/cloud/wms/manager/controller/WorkController.java @@ -1,16 +1,21 @@ package zy.cloud.wms.manager.controller; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.ManagerAuth; import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.R; import com.core.common.SnowflakeIdWorker; +import com.core.exception.CoolException; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import zy.cloud.wms.common.model.BillDto; +import zy.cloud.wms.common.service.erp.ErpService; import zy.cloud.wms.common.web.BaseController; import zy.cloud.wms.manager.entity.*; import zy.cloud.wms.manager.entity.param.*; @@ -23,6 +28,7 @@ /** * Created by vincent on 2021/2/25 */ +@Slf4j @RestController @RequestMapping("/work") public class WorkController extends BaseController { @@ -37,6 +43,9 @@ private SnowflakeIdWorker snowflakeIdWorker; @Autowired private OrderService orderService; + @Autowired + private ErpService erpService; + @RequestMapping("/stock/pakin") @ManagerAuth(memo = "鍏ュ簱") @@ -89,7 +98,7 @@ @RequestMapping("/pakout/get") @ManagerAuth(memo = "鑾峰彇鍑哄簱鍗�") public R getPakout(@RequestParam String docNumber) { - List<Pakout> pakouts = pakoutService.selectList(new EntityWrapper<Pakout>().eq("doc_num", docNumber).in("wrk_sts", 1,2)); + List<Pakout> pakouts = pakoutService.selectList(new EntityWrapper<Pakout>().eq("doc_num", docNumber).in("wrk_sts", 1, 2)); if (Cools.isEmpty(pakouts)) { return R.parse(BaseRes.EMPTY); } @@ -101,8 +110,8 @@ return R.ok().add(Cools .add("number", pakouts.get(0).getDocNum()) .add("wrkSts", pakouts.get(0).getWrkSts()) - .add("wrkSts$", wrkSts==null?"鏈煡":wrkSts.getStsName()) - .add("custName", Cools.isEmpty(pakouts.get(0).getCustName())?"-":pakouts.get(0).getCustName()) + .add("wrkSts$", wrkSts == null ? "鏈煡" : wrkSts.getStsName()) + .add("custName", Cools.isEmpty(pakouts.get(0).getCustName()) ? "-" : pakouts.get(0).getCustName()) .add("pakouts", pakouts) ); } @@ -121,7 +130,7 @@ @RequestMapping("/hand/control/pakout") @ManagerAuth(memo = "鎵嬪姩澶勭悊鎷h揣鍗�") - public R handControlWrkMast(@RequestParam String wrkNo, @RequestParam Integer type){ + public R handControlWrkMast(@RequestParam String wrkNo, @RequestParam Integer type) { if (type == 1) { return workService.completePakout(wrkNo, getUserId()); } else if (type == 2) { @@ -178,10 +187,46 @@ for (Long checkId : checkIds) { R r = workService.stockCheckAuditing(checkId, getUserId()); if (String.valueOf(r.get("code")).equals("200")) { - success ++; + success++; } } return R.ok("瀹℃牳鎴愬姛鏁伴噺锛�" + success); + } + + // 鐩樼偣涓婁紶 + @RequestMapping("/check/upload") + @ManagerAuth(memo = "鐩樼偣涓婁紶") + public R checkUpload(@RequestBody CheckUploadParam params) { + List<BillDto> dtos = new ArrayList<>(); + if (params.getMats().size() > 0) { + for (Mat matList : params.getMats()) { + BillDto dto = new BillDto(); + dto.setMatnr(matList.getMatnr()); + dto.setQty(matList.getCount().doubleValue()); + dtos.add(dto); + } + } else { + throw new CoolException("鏁版嵁寮傚父"); + } + int docId; + String docNum; + if (params.getType().equals("1")) { // 鐩樼泩 + docNum = "CS-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15); + docId = 14; // 鎶ユ孩鍗� + } else if (params.getType().equals("2")) { // 鐩樹簭 + docNum = "CD-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15); + docId = 9; // 鎶ユ崯鍗� + } else { + throw new CoolException("鏁版嵁寮傚父"); + } + // erp涓婁紶鐩樼泩鐩樹簭 + if (!erpService.uploadBill(dtos, docId, docNum)) { + throw new CoolException("鏃犳硶涓婃姤鑷砮rp"); + } + String dotsStr = JSON.toJSONString(dtos); + log.info("鐩樼偣涓婁紶锛岀被鍨嬶細" + (docId == 14 ? "鐩樼泩" : "鐩樹簭") + "锛屽崟鍙凤細" + docNum + "锛屼笂浼犵墿鏂欐竻鍗�:" + dotsStr); + log.info("==============================================================================================="); + return R.ok().add("涓婃姤鑷砮rp鎴愬姛"); } /******************************************************************************************************/ @@ -231,6 +276,7 @@ List<Item> items = itemService.selectList(new EntityWrapper<Item>().eq("status", 1).orderBy("create_time", false)); return R.ok().add(items); } + // 鑾峰彇鎵�鏈夐」鐩� @RequestMapping("/item/all/get/kv") @ManagerAuth diff --git a/src/main/java/zy/cloud/wms/manager/entity/param/CheckUploadParam.java b/src/main/java/zy/cloud/wms/manager/entity/param/CheckUploadParam.java new file mode 100644 index 0000000..1fb8b33 --- /dev/null +++ b/src/main/java/zy/cloud/wms/manager/entity/param/CheckUploadParam.java @@ -0,0 +1,16 @@ +package zy.cloud.wms.manager.entity.param; + +import lombok.Data; +import zy.cloud.wms.manager.entity.Mat; + +import java.util.List; + +/** + * Created by vincent on 2021/6/21 + */ +@Data +public class CheckUploadParam { + private String type; + + private List<Mat> mats; +} diff --git a/src/main/webapp/static/js/check/checkUpload.js b/src/main/webapp/static/js/check/checkUpload.js index e69de29..03fd34e 100644 --- a/src/main/webapp/static/js/check/checkUpload.js +++ b/src/main/webapp/static/js/check/checkUpload.js @@ -0,0 +1,177 @@ +matCodeData = []; +var tableIns; + +function getCol() { + var cols = [ + { + fixed: 'left', + field: 'count', + title: '鏁伴噺(蹇呭~)', + align: 'center', + edit: 'text', + width: 120, + style: 'color: blue;font-weight: bold' + } + ]; + cols.push.apply(cols, matCols); + cols.push({fixed: 'right', title: '鎿嶄綔', align: 'center', toolbar: '#operate', width: 80}) + return cols; +} + +layui.use(['table', 'laydate', 'form'], function () { + var table = layui.table; + var $ = layui.jquery; + var layer = layui.layer; + var layDate = layui.laydate; + var form = layui.form; + + tableIns = table.render({ + elem: '#chooseData', + data: [], + even: true, + limit: 500, + cellMinWidth: 50, + toolbar: '#toolbar', + cols: [getCol()], + done: function (res, curr, count) { + limit(); + } + }); + + // 鐩戝惉琛屽伐鍏蜂簨浠�-绉婚櫎 + table.on('tool(chooseData)', function (obj) { + var data = obj.data; + switch (obj.event) { + case 'remove': + for (var i = matCodeData.length - 1; i >= 0; i--) { + if (matCodeData[i].matnr === data.matnr) { + matCodeData.splice(i, 1); + } + } + tableIns.reload({ + data: matCodeData, done: function (res) { + limit(); + // 瑕嗙洊render鏂规硶鐨刣one + } + }); + break; + } + }); + + // 椤甸潰淇敼 + table.on('edit(chooseData)', function (obj) { + updateMatCodeData(obj.data.matnr, Number(obj.value)); + }); + + // 鎿嶄綔鏍忛噸缃簨浠� + form.on('submit(reset)', function (data) { + $("#type").val(""); + form.render(); + matCodeData = []; + tableIns.reload({data: []}); + }); + + // 鎿嶄綔鏍忔彁浜や簨浠� + form.on('submit(submit)', function (data) { + var type = $("#type").val(); + if (isEmpty(type)) { + layer.msg("璇烽�夋嫨鐩堜簭鎯呭喌"); + return; + } + if (!matCodeData || matCodeData.length == 0) { + layer.msg("鍟嗗搧淇℃伅涓嶅彲涓虹┖"); + return; + } + for (var i = 0; i < matCodeData.length; i++) { + if (matCodeData[i].count == 0) { + layer.msg("鍟嗗搧" + matCodeData[i].maktx + "鏁伴噺涓嶅彲涓虹┖"); + return; + } + } + // 璋冪敤涓婁紶erp鎺ュ彛 + console.log('matCodeData:', matCodeData, ";type:", type); + $.ajax({ + url : baseUrl+'/work/check/upload', + headers: {'token': localStorage.getItem('token')}, + method: 'POST', + contentType: 'application/json;charset=UTF-8', + data: JSON.stringify({ + mats: matCodeData, + type: type, + }), + success : function(res) { + if (res.code == 200) { + layer.msg(res.data) + matCodeData = []; + tableIns.reload({data: []}); + } else if (res.code === 403) { + top.location.href = baseUrl + "/"; + } else { + layer.msg(res.msg, {icon: 2}); + } + } + }); + }); + +}); + + +// 鎻愬彇鐗╂枡 +var matCodeLayerIdx; + +function getMat() { + matCodeLayerIdx = layer.open({ + type: 2, + title: '鎻愬彇鐗╂枡', + maxmin: true, + area: [top.detailWidth, top.detailHeight], + shadeClose: true, + content: '../ioWorks/matQuery.html', + success: function (layero, index) { + } + }); +} + +// 娣诲姞琛ㄦ牸鏁版嵁 +function addTableData(data) { + for (var i = 0; i < data.length; i++) { + let pass = false; + for (var j = 0; j < matCodeData.length; j++) { + if (data[i].matnr === matCodeData[j].matnr) { + pass = true; + break; + } + } + if (pass) { + data.splice(i--, 1); + } else { + data[i]["count"] = 0; + } + } + matCodeData.push.apply(matCodeData, data); + tableIns.reload({data: matCodeData}); + layer.close(matCodeLayerIdx); +} + +function updateMatCodeData(matnr, count) { + if (isNaN(count)) { + layer.msg("璇疯緭鍏ユ暟瀛�"); + } else { + if (count > 0) { + for (var i = 0; i < matCodeData.length; i++) { + if (matCodeData[i]["matnr"] === matnr) { + matCodeData[i]["count"] = count; + } + } + } else { + layer.msg("鏁伴噺蹇呴』澶т簬闆�"); + } + } + + tableIns.reload({ + data: matCodeData, done: function (res) { + limit(); + // 瑕嗙洊render鏂规硶鐨刣one + } + }); +} diff --git a/src/main/webapp/views/check/check_upload.html b/src/main/webapp/views/check/check_upload.html index 48221d7..0cf8cce 100644 --- a/src/main/webapp/views/check/check_upload.html +++ b/src/main/webapp/views/check/check_upload.html @@ -10,8 +10,67 @@ <link rel="stylesheet" href="../../static/css/cool.css" media="all"> <link rel="stylesheet" href="../../static/css/common.css" media="all"> </head> +<style> + .function-btn { + font-size: 16px; + padding: 1px 1px 1px 1px; + 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: 3px; + } + + .function-btn:hover { + background-color: #2b425b; + color: #fff; + } + + .function-area { + padding: 20px 50px; + } +</style> <body> -<div>鐩樼偣涓婁紶</div> + +<div> + <!-- 鎿嶄綔鏍� --> + <div id="search-box" class="layui-form layui-card-header"> + <div class="layui-inline"> + <select id="type"> + <option value="">鐩堜簭鎯呭喌</option> + <option value="1">鐩樼泩</option> + <option value="2">鐩樹簭</option> + </select> + </div> + + <!-- 寰呮坊鍔� --> + <div id="data-search-btn" class="layui-btn-container layui-form-item"> + <button style="margin-top: -5px" id="submit" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit + lay-filter="submit">鎻愪氦 + </button> + <button style="margin-top: -5px" id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button> + </div> + </div> + <!-- 鍔熻兘鍖� --> + <div class="function-area"> + <button id="mat-query" class="function-btn" onclick="getMat()">鏂板</button> + </div> +</div> +<!-- 琛ㄦ牸鍖� --> +<div> + <table class="layui-table" id="chooseData" lay-filter="chooseData"></table> +</div> + +<!-- 琛� --> +<script type="text/html" id="operate"> + <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="remove">绉婚櫎</a> +</script> + </body> <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> diff --git a/version/v1.0.3/addMenu b/version/v1.0.3/addMenu new file mode 100644 index 0000000..6199ce0 --- /dev/null +++ b/version/v1.0.3/addMenu @@ -0,0 +1 @@ +insert into sys_resource(code, name, resource_id, [level], sort, status) values ('check/check_upload.html', '鐩樼偣涓婁紶', 20428, 2, 10, 1) -- Gitblit v1.9.1