From b4da29719745324c4cb214caa49c5c69171919a6 Mon Sep 17 00:00:00 2001 From: erdanergou Date: Thu, 6 Apr 2023 15:57:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A7=BB=E5=8A=A8=E7=AB=AF?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E7=9B=98=E7=82=B9=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MaterialController.java | 2 +- .../controller/PageController.java | 57 ++- .../controller/StockTakingController.java | 55 +- .../depository_manage/pojo/InventoryP.java | 5 + .../service/impl/MaterialServiceImpl.java | 2 +- .../stockTaking/stockTakingForLocationCard.js | 4 +- .../js/stockTaking/stockTakingForMaterial.js | 61 ++- .../stockTakingForMaterial_mobile.js | 475 ++++++++++++++++++ .../application/application-in_back.html | 2 +- .../pages/application/application-out.html | 4 +- .../application/application-out_back.html | 2 +- .../application-out.html | 30 +- .../application-out_back.html | 2 +- .../pages/material/selectMaterial.html | 12 +- .../templates/pages/split/split_add.html | 2 +- .../pages/stockTaking/stockTaking.html | 4 +- .../pages/stockTaking/stockTakingDetail.html | 141 ++++++ .../stockTakingInfoForInventory.html | 265 ++++++++++ .../pages/stockTaking/stockTaking_mobile.html | 50 +- .../stockTaking/stockTakingForLocationCard.js | 4 +- .../js/stockTaking/stockTakingForMaterial.js | 61 ++- .../application/application-in_back.html | 2 +- .../pages/application/application-out.html | 4 +- .../application/application-out_back.html | 2 +- .../application-out.html | 30 +- .../application-out_back.html | 2 +- .../pages/material/selectMaterial.html | 12 +- .../showInventoryForLocation.html | 6 +- .../templates/pages/split/split_add.html | 2 +- .../pages/stockTaking/stockTaking.html | 4 +- 30 files changed, 1196 insertions(+), 108 deletions(-) create mode 100644 src/main/resources/static/js/stockTaking/stockTakingForMaterial_mobile.js create mode 100644 src/main/resources/templates/pages/stockTaking/stockTakingDetail.html create mode 100644 src/main/resources/templates/pages/stockTaking/stockTakingInfoForInventory.html diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java index 0458be91..bc69567b 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java @@ -1621,7 +1621,7 @@ public class MaterialController { MaterialAndPlace placeAndMaterialByMidAndPid = placeService.findPlaceAndMaterialByMidAndPid(placeId, id); if ("-1".equals(unit)) { // 如果盘点的是默认单位 - quantity = placeAndMaterialByMidAndPid.getQuantity(); + quantity = placeAndMaterialByMidAndPid.getQuantity() / 100.0; } else { // 如果不是 diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java index 4b32a3c0..3906884c 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java @@ -645,9 +645,10 @@ public class PageController { // 物料树形菜单页面 @GetMapping("/selectMaterial") - public ModelAndView selectMaterial(String mname) { + public ModelAndView selectMaterial(@RequestParam Map map) { ModelAndView mv = new ModelAndView(); - mv.addObject("mname", mname); + mv.addObject("mname", map.get("mname")); + mv.addObject("type", map.get("type")); mv.setViewName("pages/material/selectMaterial"); return mv; } @@ -2751,9 +2752,9 @@ public class PageController { UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); // 获取当前key值存储在redis中的值 List range = redisTemplateForHash.opsForList().range("WMS_temporaryValue_In" + userByPort.getNumber(), 0, -1); - if( range != null && range.size() > 0){ + if (range != null && range.size() > 0) { mv.setViewName("pages/application/application-in_temporaryValue"); - }else{ + } else { mv.setViewName("pages/application/application-in"); } return mv; @@ -2896,6 +2897,12 @@ public class PageController { mv.addObject("departmentHeadName", departmentHeadName.toString()); mv.addObject("departmentHeadId", departmentHeadId.toString()); mv.setViewName("pages/stockTaking/stockTaking"); + String userAgent = request.getHeader("user-agent"); + // 判断当前使用的设备为移动端还是pc端 + boolean b = DeviceUtil.checkAgentIsMobile(userAgent); + if (b) { + mv.setViewName("pages/stockTaking/stockTaking_mobile"); + } return mv; } @@ -3130,6 +3137,7 @@ public class PageController { return mv; } + // 用于展示库存数据 @GetMapping("/toShowInventory") public ModelAndView toShowInventory(@RequestParam Map param) { ModelAndView mv = new ModelAndView(); @@ -3152,4 +3160,45 @@ public class PageController { } } + + // 用于跳转到库存盘点时编辑页面 + @GetMapping("/stockTakingInfoForInventory") + public ModelAndView stockTakingInfoForInventory(@RequestParam Map param, HttpServletRequest request) { + ModelAndView mv = new ModelAndView(); + mv.setViewName("pages/stockTaking/stockTakingInfoForInventory"); + Integer id = ObjectFormatUtil.toInteger(param.get("id")); + Integer pid = ObjectFormatUtil.toInteger(param.get("pid")); + // 获取库存记录 + InventoryP inventoryById = new InventoryP(materialService.findInventoryById(id)); + // 获取当前物料与库位的对应关系 + MaterialAndPlace placeAndMaterialByMidAndPid = placeService.findPlaceAndMaterialByMidAndPid(pid, id); + inventoryById.setQuantity(placeAndMaterialByMidAndPid.getQuantity() / 100.0); + // 获取库位信息 + Place placeById = placeService.findPlaceById(pid); + inventoryById.setPid(pid); + if (Integer.compare(0, pid) != 0) { + inventoryById.setDepositoryCode(inventoryById.getDepositoryName() + "-" + placeById.getKingdeecode()); + } else { + inventoryById.setDepositoryCode(inventoryById.getDepositoryName()); + } + // 获取当前物料的拆单记录 + List splitInfoByMid = splitUnitService.findSplitInfoByMid(inventoryById.getMid()); + Map splitInfoForInventory = new HashMap<>(); + splitInfoForInventory.put(inventoryById.getUnit(), placeAndMaterialByMidAndPid.getQuantity().doubleValue()); + inventoryById.setSplitInfoList(splitInfoByMid); + if (splitInfoByMid != null && splitInfoByMid.size() > 0) { + for (SplitInfo splitInfo : splitInfoByMid + ) { + // 获取当前拆单库存记录 + SplitInventory splitInventory = splitUnitService.findSplitInventoryByIidAndSid(placeAndMaterialByMidAndPid.getId(), splitInfo.getId()); + splitInfoForInventory.put(splitInfo.getNewUnit(), splitInventory.getSaveQuantity().doubleValue()); + } + inventoryById.setShowQuantity(splitInfoForInventory); + } + + mv.addObject("record", inventoryById); + mv.addObject("mpId", placeAndMaterialByMidAndPid.getId()); + return mv; + } + } diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/StockTakingController.java b/src/main/java/com/dreamchaser/depository_manage/controller/StockTakingController.java index e2a5897f..7b0d1645 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/StockTakingController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/StockTakingController.java @@ -56,7 +56,7 @@ public class StockTakingController { public RestResponse addStockTakingRecord(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -207,7 +207,7 @@ public class StockTakingController { @GetMapping("/myTask") public RestResponse myTask(@RequestParam Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -222,7 +222,7 @@ public class StockTakingController { String header = request.getHeader("user-agent"); String crypt = Md5.crypt(header); String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -241,7 +241,7 @@ public class StockTakingController { @PostMapping("/complete") public RestResponse complete(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -260,7 +260,7 @@ public class StockTakingController { @GetMapping("/myApply") public RestResponse myApply(@RequestParam Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -274,7 +274,7 @@ public class StockTakingController { @PostMapping("/findInventoryByLocation") public RestResponse findInventoryByLocation(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -293,7 +293,7 @@ public class StockTakingController { public RestResponse stockTransfer(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -319,7 +319,7 @@ public class StockTakingController { public void temporaryStorageForTakingResult(@RequestBody Map map, HttpServletRequest request) { // 获取当前盘点人 String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -332,11 +332,37 @@ public class StockTakingController { } + /** + * 获取当前用户当前库存的盘点记录 + * + * @param map + * @param request + * @return + */ + @PostMapping("/getTemporaryStorageForTakingResult") + public RestResponse getTemporaryStorageForTakingResult(@RequestBody Map map, HttpServletRequest request) { + String token = request.getHeader("user-token"); + if (token == null) { + token = (String) request.getSession().getAttribute("userToken"); + } + UserByPort userToken = AuthenticationTokenPool.getUserToken(token); + MaterialAndPlace mpv = placeService.findPlaceAndMaterialById(ObjectFormatUtil.toInteger(map.get("mpId"))); + String key = "wms_stockTaking_" + userToken.getId() + "_" + DateUtil.getNowTime() + "_" + mpv.getId(); + // 设置结果集 + // 获取存储在redis中盘点记录的key + Map entries = redisTemplateForHash.opsForHash().entries(key); + if (entries.size() > 0) { + return new RestResponse(entries); + }else{ + return new RestResponse(null); + } + } + @PostMapping("/submitStockTaking") public RestResponse submitStockTaking(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -401,8 +427,7 @@ public class StockTakingController { mainId = param.get("mainId"); redisTemplateForHash.opsForHash().put(key, "flagForSubmit", "true"); } - } - else{ + } else { // 如果是非指定位置 success = stockTakingService.insertStockTakingByMaterial(map, keys, userToken); @@ -420,10 +445,10 @@ public class StockTakingController { // QyWxDepartmentManager.append(departmentManager.getWorkwechat()+","); } QyWxDepartmentManager.append("PangFuZhen"); - if(map.containsKey("mainIdList")){ + if (map.containsKey("mainIdList")) { List mainIdList = (List) map.get("mainIdList"); - for (Object main:mainIdList - ) { + for (Object main : mainIdList + ) { new Thread(new Runnable() { @Override public void run() { @@ -438,7 +463,7 @@ public class StockTakingController { } }).start(); } - }else{ + } else { // 用于发送审批 Object finalMainId = mainId; new Thread(new Runnable() { diff --git a/src/main/java/com/dreamchaser/depository_manage/pojo/InventoryP.java b/src/main/java/com/dreamchaser/depository_manage/pojo/InventoryP.java index a0d31201..e0dec3e9 100644 --- a/src/main/java/com/dreamchaser/depository_manage/pojo/InventoryP.java +++ b/src/main/java/com/dreamchaser/depository_manage/pojo/InventoryP.java @@ -31,6 +31,11 @@ public class InventoryP { */ private Integer depositoryId; + /** + * 库位id + */ + private Integer pid; + /** * 物料名称 */ diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java index eb376205..08efd6ab 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java @@ -2756,7 +2756,7 @@ public class MaterialServiceImpl implements MaterialService { mpv.setStockTakingQuantity((int) (splitInventory.get(unit) + ObjectFormatUtil.toDouble(number))); } else { // 如果正常 - mpv.setStockTakingQuantity((int) (splitInventory.get(unit) * 100)); + mpv.setStockTakingQuantity(splitInventory.get(unit).intValue()); } } diff --git a/src/main/resources/static/js/stockTaking/stockTakingForLocationCard.js b/src/main/resources/static/js/stockTaking/stockTakingForLocationCard.js index 8df68019..356e51b4 100644 --- a/src/main/resources/static/js/stockTaking/stockTakingForLocationCard.js +++ b/src/main/resources/static/js/stockTaking/stockTakingForLocationCard.js @@ -79,7 +79,7 @@ layui.use(['form', 'step', 'flow', 'laydate', 'inputTag'], function () {
@@ -580,7 +580,7 @@ layui.use(['form', 'step', 'flow', 'laydate', 'inputTag'], function () {
diff --git a/src/main/resources/static/js/stockTaking/stockTakingForMaterial.js b/src/main/resources/static/js/stockTaking/stockTakingForMaterial.js index df5d12b1..39bf195b 100644 --- a/src/main/resources/static/js/stockTaking/stockTakingForMaterial.js +++ b/src/main/resources/static/js/stockTaking/stockTakingForMaterial.js @@ -74,6 +74,53 @@ layui.use(['form', 'step', 'flow', 'table', 'inputTag'], function () { } }); + // 用于实现点击搜索按钮 + selectMaterial = function (obj) { + var mname = $("#mname").val(); + mname = mname.split(",")[0]; + layer.open({ + type: 2, + title: '弹窗内容', + skin: 'layui-layer-rim', + maxmin: true, + shadeClose: true, //点击遮罩关闭层 + area: ['70%', '70%'], + content: '/selectMaterial?mname=' + mname + '&type=2', + move: '.layui-layer-title', + fixed: false, + success: function (layero, index) { + var children = layero.children(); + var content = $(children[1]); + var iframeChildren = $(content.children()); + content.css('height', '100%'); + iframeChildren.css('height', '100%'); + }, + end: function () { + var mid = $("#mid").val(); + if (mid !== '') { + let loading2 = layer.open({ type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); + $.ajax({ + url: "/material/findMatrialById?mid=" + mid + "&type=out", + type: "get", + dataType: 'json', + contentType: "application/json;charset=utf-8", + success: function (d) { + var material = d.data.materialById; + $("#mname").val(material.mname); + $("#code").val(material.code); + $("#version").val(material.version); + $("#mtype").val(material.typeName); + $("#texture").val(material.texture); + $("#brand").val(material.brand); + layer.close(loading2); + form.render(); + } + }); + } + } + }); + }; + updateTableShowForMaterial = function () { @@ -268,19 +315,19 @@ layui.use(['form', 'step', 'flow', 'table', 'inputTag'], function () { success: function (d) { if (d.count > 1) { layer.msg("请点击右侧搜索确定物品"); - $("#openSonByMaterial").val(""); + $("#mname").val(""); $("#mid").val(""); $("#code").val(""); return false; } else if (d.count === 0) { layer.msg("没有该物品,请确认输入是否正确"); - $("#openSonByMaterial").val(""); + $("#mname").val(""); $("#mid").val(""); $("#code").val(""); return false; } else { var material = d.data[0]; - $("#openSonByMaterial").val(material.mname); + $("#mname").val(material.mname); $("#mid").val(material.mid); $("#code").val(material.code); form.render(); @@ -314,14 +361,14 @@ layui.use(['form', 'step', 'flow', 'table', 'inputTag'], function () { icon: 0, time: 1000 }, function () { - $("#openSonByMaterial").val(""); + $("#mname").val(""); $("#mid").val(""); $("#code").val(""); updateTableShowForMaterial(); }); } else { - $("#openSonByMaterial").val(d.mname); + $("#mname").val(d.mname); $("#mid").val(d.mid); form.render(); updateTableShowForMaterial(); @@ -365,13 +412,13 @@ layui.use(['form', 'step', 'flow', 'table', 'inputTag'], function () { icon: 0, time: 1000 //0.5秒关闭(如果不配置,默认是3秒) }, function () { - $("#openSonByMaterial").val(""); + $("#mname").val(""); $("#mid").val(""); $("#code").val(""); updateTableShowForMaterial(); }) } else { - $("#openSonByMaterial").val(data.mname); + $("#mname").val(data.mname); $("#mid").val(data.id); $("#code").val(data.code); updateTableShowForMaterial(); diff --git a/src/main/resources/static/js/stockTaking/stockTakingForMaterial_mobile.js b/src/main/resources/static/js/stockTaking/stockTakingForMaterial_mobile.js new file mode 100644 index 00000000..5eab6e18 --- /dev/null +++ b/src/main/resources/static/js/stockTaking/stockTakingForMaterial_mobile.js @@ -0,0 +1,475 @@ +// 用于扫描条形码或二维码 +function scanCode(obj) { +} + +// 用于加载物料选择菜单 +function selectMaterial() { + +} + +// 用于通过物料名称获取物料 +function selectMaterialByName() { + +} + +// 用于编码查询 +function selectCode(obj) { +} + + +// 用于扫描物料码 +function scanCodeForMaterial() { + +} + +// 用于计算盘点结果 +function calculateForMaterial(obj) { + +} + + +function updateFlowShowForMaterial() { + +} + +// 用于展示具体库存数据 +function showDetail() { + +} + + +layui.use(['form', 'step', 'flow', 'table', 'inputTag'], function () { + var $ = layui.$, + form = layui.form, + table = layui.table, + inputTag = layui.inputTag, + dropdown = layui.dropdown, //下拉菜单 + flow = layui.flow; + departmentManagerIdForMaterial = $("#departmentManagerIdForMaterial").val(); + + let takingPre = 0; + + + let tagData = []; + let tempData = $("#departmentManagerForMaterial").val().split(","); + $.each(tempData, function (index, item) { + if (item !== "") { + tagData.push(item) + } + }); + $("#departmentManagerForMaterial").val(""); + + + let tagLabel = inputTag.render({ + elem: '#departmentManagerForMaterial', + data: tagData,//初始值 + removeKeyNum: 8,//删除按键编号 默认,BackSpace 键 + createKeyNum: 13,//创建按键编号 默认,Enter 键 + onChange: function (data, value, type, index) { + if (type === "remove") { + let split = departmentManagerIdForMaterial.split(","); + split.splice(index, 1); + departmentManagerIdForMaterial = split.toString(); + $("#departmentManagerIdForMaterial").val(departmentManagerIdForMaterial); + } + } + }); + + + updateFlowShowForMaterial = function () { + let req = {}; + req.mid = $("#mid").val(); + req.size = size; + flow.load({ + elem: '#LAY_FlowForMaterial' //流加载容器 + , done: function (page, next) { //执行下一页的回调 + let result; + let lis = []; + req.page = page; + $.ajax({ + url: '/material/findMaterialByConditionForStockTaking', + data: req, + type: 'get', + dataType: 'json', + contentType: "application/json;charset=utf-8", + success: function (res) { + result = res.data; + lis.push("
"); + for (let i = 0; i < result.length; i++) { + let splitInventory = result[i].splitInventory; + let keys = Object.keys(splitInventory); + let InventoryItem = ""; + for (let j = 0; j < keys.length; j++) { + let key = keys[j]; + let item = '

' + "计量单位:" + key + ";库存数量:" + splitInventory[key] + '

'; + InventoryItem += item; + } + lis.push('
  • ' + + '

    ' + "所处位置:" + result[i].dname + "-" + result[i].kingdeecode + '

    '); + lis.push('
    ' + + InventoryItem + + '
  • '); + } + lis.push('
    '); + takingPre += result.length; + //执行下一页渲染,第二参数为:满足“加载更多”的条件,即后面仍有分页 + //pages为Ajax返回的总页数,只有当前页小于总页数的情况下,才会继续出现加载更多 + next(lis.join(''), takingPre < res.count); + } + }); + } + }); + }; + + + // 用于打开负责人树形菜单 + $("#selectdepartmentManagerForMaterial").on('click', function () { + layer.open({ + type: 2, + title: '弹窗内容', + skin: 'layui-layer-rim', + maxmin: true, + shadeClose: true, //点击遮罩关闭层 + area: ['70%', '70%'], + move: '.layui-layer-title', + fixed: false, + content: '/selectManager?type=Material', + end: function () { + departmentManagerIdForMaterial = $("#departmentManagerIdForMaterial").val(); + tagLabel.createItem(); + }, + success: function (layero, index) { + var children = layero.children(); + var content = $(children[1]); + var iframeChildren = $(content.children()); + content.css('height', '100%'); + iframeChildren.css('height', '100%'); + } + }); + }); + + + table.on('edit(currentTableFilterForMaterial)', function (obj) { + obj.update({stockTakingQuantity: obj.value});//修改当前行数据 + calculateForMaterial(obj); + }); + // 用于监听下拉菜单 + table.on('tool(currentTableFilterForMaterial)', function (obj) { //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值" + var data = obj.data //获得当前行数据 + , layEvent = obj.event; //获得 lay-event 对应的值 + if (layEvent === 'more') { + let splitInfoList = obj.data.splitInfoList; + if (splitInfoList.length > 0) { + let dropDownDataList = []; + for (var i = 0; i < splitInfoList.length; i++) { + let dropDownData = {}; + dropDownData.title = splitInfoList[i].newUnit; + dropDownData.id = obj.data.id; + dropDownDataList.push(dropDownData); + } + dropdown.render({ + elem: this //触发事件的 DOM 对象 + , show: true //外部事件触发即显示 + , data: dropDownDataList + , click: function (unit) { + this.elem[0].childNodes[0].data = unit.title; + obj.tr[0].childNodes[7].childNodes[0].innerText = obj.data.splitInventory[unit.title]; + } + , align: 'right' //右对齐弹出(v2.6.8 新增) + , style: 'box-shadow: 1px 1px 10px rgb(0 0 0 / 12%);' //设置额外样式 + }) + } + //下拉菜单 + + } + }); + + // 用于计算盘点结果 + calculateForMaterial = function (obj) { + let oldInventory = Number(obj.tr[0].childNodes[7].childNodes[0].innerText); + let nowInventory = Number(obj.value); + let number = 0; + let takingResult = ''; + let takingResultString = ''; + let req = {}; + if ((oldInventory) > (nowInventory)) { + number = oldInventory - nowInventory; + takingResult = "Inventory_down"; + takingResultString = "盘亏"; + } else if ((oldInventory) < (nowInventory)) { + number = nowInventory - oldInventory; + takingResult = "Inventory_up"; + takingResultString = "盘盈"; + } else { + takingResult = "Inventory_normal"; + takingResultString = "正常"; + } + obj.tr[0].childNodes[9].childNodes[0].innerText = takingResultString; + obj.tr[0].childNodes[10].childNodes[0].innerText = number; + obj.update({takingResult: takingResult}); + obj.update({takingInventory: number}); + req.number = number + ""; + req.takingResult = takingResult; + req.takingResultString = takingResultString; + req.id = obj.data.id + ""; + req.unit = obj.tr[0].childNodes[6].childNodes[0].innerText; + req.oldInventory = oldInventory + ""; + $.ajax({ + url: "/stockTaking/temporaryStorageForTakingResult", + dataType: "json", + data: JSON.stringify(req), + type: "POST", + contentType: "application/json;charset=utf-8" + }); + }; + + // 用于通过物料名称获取物料 + selectMaterialByName = function (obj) { + // 输入code + var data = obj.value; + var req = {}; + data = data.split(",")[0]; + if (data !== "") { + req.mname = data; + let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); + $.ajax({ + url: "/material/findMaterialByCondition", + type: "post", + dataType: 'json', + data: JSON.stringify(req), + contentType: "application/json;charset=utf-8", + success: function (d) { + if (d.count > 1) { + layer.msg("请点击右侧搜索确定物品",{ + icon:0, + time:1000 + },function () { + $("#mname").val(""); + $("#mid").val(""); + $("#code").val(""); + $("#version").val(""); + $("#mtype").val(""); + $("#texture").val(""); + $("#brand").val(""); + layer.close(loading2); + }); + + return false; + } else if (d.count === 0) { + layer.msg("没有该物品,请确认输入是否正确",{ + icon:0, + time:1000 + },function () { + $("#mname").val(""); + $("#mid").val(""); + $("#code").val(""); + $("#version").val(""); + $("#mtype").val(""); + $("#texture").val(""); + $("#brand").val(""); + layer.close(loading2); + }); + return false; + } else { + var material = d.data[0]; + $("#mname").val(material.mname); + $("#mid").val(material.mid); + $("#code").val(material.code); + $("#version").val(material.version); + $("#mtype").val(material.typeName); + $("#texture").val(material.texture); + $("#brand").val(material.brand); + form.render(); + updateFlowShowForMaterial(); + layer.close(loading2); + } + } + }); + } + + }; + + + // 用于实现点击搜索按钮 + selectMaterial = function (obj) { + var mname = $("#mname").val(); + mname = mname.split(",")[0]; + layer.open({ + type: 2, + title: '弹窗内容', + skin: 'layui-layer-rim', + maxmin: true, + shadeClose: true, //点击遮罩关闭层 + area: ['70%', '70%'], + content: '/selectMaterial?mname=' + mname + '&type=2', + move: '.layui-layer-title', + fixed: false, + success: function (layero, index) { + var children = layero.children(); + var content = $(children[1]); + var iframeChildren = $(content.children()); + content.css('height', '100%'); + iframeChildren.css('height', '100%'); + }, + end: function () { + var mid = $("#mid").val(); + if (mid !== '') { + let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); + $.ajax({ + url: "/material/findMatrialById?mid=" + mid + "&type=out", + type: "get", + dataType: 'json', + contentType: "application/json;charset=utf-8", + success: function (d) { + var material = d.data.materialById; + $("#mid").val(material.mid); + $("#mname").val(material.mname); + $("#code").val(material.code); + $("#version").val(material.version); + $("#mtype").val(material.typeName); + $("#texture").val(material.texture); + $("#brand").val(material.brand); + layer.close(loading2); + updateFlowShowForMaterial(); + form.render(); + } + }); + + } + else{ + updateFlowShowForMaterial() + } + } + }); + }; + + + // 用于实现通过编码查询物料 + selectCode = function (obj) { + // 输入code + var code = obj.value; + var req = {}; + req.code = code; + req.type = "out"; + if (code !== "") { + let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); + $.ajax({ + url: "/material/findMatrialByCode", + type: "get", + dataType: 'json', + data: (req), + contentType: "application/json;charset=utf-8", + success: function (d) { + var d = d.data; + if (d == null) { + layer.msg("仓库中暂无该物料", { + icon: 0, + time: 1000 + }, function () { + $("#mname").val(""); + $("#mid").val(""); + $("#code").val(""); + $("#version").val(""); + $("#mtype").val(""); + $("#texture").val(""); + $("#brand").val(""); + updateFlowShowForMaterial(); + layer.close(loading2); + }); + + } else { + $("#mname").val(d.mname); + $("#mid").val(d.mid); + $("#version").val(d.version); + $("#mtype").val(d.typeName); + $("#texture").val(d.texture); + $("#brand").val(d.brand); + form.render(); + updateFlowShowForMaterial(); + layer.close(loading2); + + } + } + }); + } + + }; + + + scanCodeForMaterial = function () { + let wxScan = parent; + + if (wxScan.wx === undefined) { + wxScan = wxScan.parent.wx; + } else { + wxScan = wxScan.wx; + } + wxScan.scanQRCode({ + desc: 'scanQRCode desc', + needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果, + scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有 + success: function (res) { + // 回调 + var result = res.resultStr;//当needResult为1时返回处理结果 + var req = {}; + req.qrCode = result; + req.codeFlag = 2; + let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); + $.ajax({ + url: "/material/qywxApplicationOutScanQrCode", + type: "post", + dataType: 'json', + data: JSON.stringify(req), + contentType: "application/json;charset=utf-8", + success: function (d) { + var data = d.data; + if (data === null) { + layer.msg("对于编码:" + result + ",并未发现仓库中存在对应的物料", { + icon: 0, + time: 1000 //0.5秒关闭(如果不配置,默认是3秒) + }, function () { + $("#mname").val(""); + $("#mid").val(""); + $("#code").val(""); + $("#version").val(""); + $("#mtype").val(""); + $("#texture").val(""); + $("#brand").val(""); + updateFlowShowForMaterial(); + layer.close(loading2); + }) + } else { + $("#mname").val(data.mname); + $("#mid").val(data.id); + $("#code").val(data.code); + $("#version").val(data.version); + $("#mtype").val(data.typeName); + $("#texture").val(data.texture); + $("#brand").val(data.brand); + updateFlowShowForMaterial(); + layer.close(loading2); + } + } + }) + } + }) + }; + + showDetail = function (obj) { + let pid = $(obj).attr("pid"); + let iid = $(obj).attr("iid"); + layer.open({ + type: 2, + title: '盘点详情', + skin: 'layui-layer-rim', + maxmin: true, + shadeClose: true, //点击遮罩关闭层 + area: ['100%', '100%'], + content: '/stockTakingInfoForInventory?id=' + iid + '&pid='+pid, + move: '.layui-layer-title', + fixed: false + }) + } + + +}); diff --git a/src/main/resources/templates/pages/application/application-in_back.html b/src/main/resources/templates/pages/application/application-in_back.html index a9606d58..3e38710d 100644 --- a/src/main/resources/templates/pages/application/application-in_back.html +++ b/src/main/resources/templates/pages/application/application-in_back.html @@ -270,7 +270,7 @@ move : '.layui-layer-title', fixed:false, // content: '/selectMaterial?mname='+mname+'&type=1', - content: '/getMaterialAll?mname=' + mname + '&type=1', + content: '/selectMaterial?mname=' + mname + '&type=1', end: function () { var mid = $("#mid").val(); let loading2 = layer.open({ type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); diff --git a/src/main/resources/templates/pages/application/application-out.html b/src/main/resources/templates/pages/application/application-out.html index 10d690d8..24bae6d6 100644 --- a/src/main/resources/templates/pages/application/application-out.html +++ b/src/main/resources/templates/pages/application/application-out.html @@ -954,9 +954,10 @@ iframeChildren.css('height', '100%'); }, end: function () { - let loading2 = layer.open({ type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); + var mid = materialId.value; if (mid !== '') { + let loading2 = layer.open({ type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); $.ajax({ url: "/material/findMatrialById?mid=" + mid + "&type=out", type: "get", @@ -1011,6 +1012,7 @@ } }); } + } }); }; diff --git a/src/main/resources/templates/pages/application/application-out_back.html b/src/main/resources/templates/pages/application/application-out_back.html index 8a133295..cbae4bc3 100644 --- a/src/main/resources/templates/pages/application/application-out_back.html +++ b/src/main/resources/templates/pages/application/application-out_back.html @@ -276,7 +276,7 @@ area: ['70%', '70%'], move: '.layui-layer-title', fixed: false, - content: '/selectMaterial?mname=' + mname, + content: '/selectMaterial?type=2&mname=' + mname, success: function (layero, index) { var children = layero.children(); var content = $(children[1]); diff --git a/src/main/resources/templates/pages/applicationForStorageCenter/application-out.html b/src/main/resources/templates/pages/applicationForStorageCenter/application-out.html index 855501b8..e438601a 100644 --- a/src/main/resources/templates/pages/applicationForStorageCenter/application-out.html +++ b/src/main/resources/templates/pages/applicationForStorageCenter/application-out.html @@ -684,7 +684,7 @@
    -
    @@ -745,7 +745,7 @@
    -
    @@ -1056,8 +1056,8 @@ }, end: function () { var mid = materialId.value; - let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); if (mid !== '') { + let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); $.ajax({ url: "/material/findMatrialById?mid=" + mid + "&type=out", type: "get", @@ -1713,29 +1713,29 @@ content.css('height', '100%'); iframeChildren.css('height', '100%'); }, - end:function () { - let val = $("#"+id).val(); - if(val !== ""){ - if(id.indexOf("ForGroup") !== -1){ + end: function () { + let val = $("#" + id).val(); + if (val !== "") { + if (id.indexOf("ForGroup") !== -1) { // 如果是组合 $("#stepForm2").find('input[id*="project"]').each(function () { - $(this).attr("lay-verify","required") + $(this).attr("lay-verify", "required") }) - }else{ + } else { // 如果是物料 - $("#stepForm").find('input[id*="project"]').each(function () { - $(this).attr("lay-verify","required") - }) + $("#stepForm").find('input[id*="project"]').each(function () { + $(this).attr("lay-verify", "required") + }) } - }else{ - if(id.indexOf("ForGroup") !== -1){ + } else { + if (id.indexOf("ForGroup") !== -1) { // 如果是组合 $("#stepForm2").find('input[id*="project"]').each(function () { $(this).removeAttr("lay-verify") }) - }else{ + } else { // 如果是物料 $("#stepForm").find('input[id*="project"]').each(function () { $(this).removeAttr("lay-verify") diff --git a/src/main/resources/templates/pages/applicationForStorageCenter/application-out_back.html b/src/main/resources/templates/pages/applicationForStorageCenter/application-out_back.html index a36fde1f..fcb9fd04 100644 --- a/src/main/resources/templates/pages/applicationForStorageCenter/application-out_back.html +++ b/src/main/resources/templates/pages/applicationForStorageCenter/application-out_back.html @@ -333,7 +333,7 @@ area: ['70%', '70%'], move: '.layui-layer-title', fixed: false, - content: '/selectMaterial?mname=' + mname, + content: '/selectMaterial?type=2&mname=' + mname, success: function (layero, index) { var children = layero.children(); var content = $(children[1]); diff --git a/src/main/resources/templates/pages/material/selectMaterial.html b/src/main/resources/templates/pages/material/selectMaterial.html index b69e9ab6..b7027092 100644 --- a/src/main/resources/templates/pages/material/selectMaterial.html +++ b/src/main/resources/templates/pages/material/selectMaterial.html @@ -12,23 +12,23 @@
    + + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/pages/stockTaking/stockTakingInfoForInventory.html b/src/main/resources/templates/pages/stockTaking/stockTakingInfoForInventory.html new file mode 100644 index 00000000..bb331264 --- /dev/null +++ b/src/main/resources/templates/pages/stockTaking/stockTakingInfoForInventory.html @@ -0,0 +1,265 @@ + + + + + 仓库盘点 + + + + + + + + +
    +
    + +
    +
    + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/pages/stockTaking/stockTaking_mobile.html b/src/main/resources/templates/pages/stockTaking/stockTaking_mobile.html index 1a2cff75..8ba6aa3b 100644 --- a/src/main/resources/templates/pages/stockTaking/stockTaking_mobile.html +++ b/src/main/resources/templates/pages/stockTaking/stockTaking_mobile.html @@ -70,7 +70,7 @@
    + + +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    @@ -124,9 +154,7 @@
    -
    +
      @@ -257,7 +285,7 @@ - - - +