From e75362cc5d11d900068a26232eb97ebd30203d48 Mon Sep 17 00:00:00 2001 From: chengsc <Demo@DESKTOP-CPA90BF> Date: 星期日, 21 七月 2024 10:00:15 +0800 Subject: [PATCH] Merge branch 'master' into csc --- HTML/js/public.js | 6 HTML/views/HouseWithinSetting/images/1920x400.jpg | 0 HTML/layuiadmin/dragMove/dragMove.js | 261 ++++++++++ HTML/views/HouseWithinSetting/StockCheck.html | 37 + Wms/WMS.BLL/Logic/AllotSku.cs | 77 ++ HTML/views/HouseWithinSetting/ViewPicture.html | 104 ++++ HTML/views/HouseWithinSetting/images/1920x1080.jpg | 0 Wms/WMS.BLL/BllSoServer/WaveMageServer.cs | 2 HTML/views/HouseWithinSetting/images/400x400.jpg | 0 HTML/views/SystemSettings/PrintModule.html | 153 ++++++ HTML/views/HouseWithinSetting/images/400x900.jpg | 0 Wms/WMS.BLL/DataServer/StockServer.cs | 328 ++++++++++--- Wms/Model/ModelDto/DataDto/MateDataStockDto.cs | 12 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 4 HTML/layuiadmin/dragMove/dragMove.css | 20 HTML/views/StatisticalReport/InventoryStatistics.html | 398 ++-------------- Wms/Wms/Controllers/StatisticalController.cs | 23 Wms/WMS.IBLL/IDataServer/IStockServer.cs | 9 18 files changed, 975 insertions(+), 459 deletions(-) diff --git a/HTML/js/public.js b/HTML/js/public.js index 7438589..f209f46 100644 --- a/HTML/js/public.js +++ b/HTML/js/public.js @@ -203,9 +203,9 @@ var bodyHeight = $("#body").outerHeight(); var topHeight = $("#top").outerHeight(); var centerHeight = $("#center").outerHeight(); -// console.log(bodyHeight); -// console.log(topHeight); -// console.log(centerHeight); + console.log(bodyHeight); + console.log(topHeight); + console.log(centerHeight); var hh = bodyHeight - topHeight-centerHeight - 26 ;//6鏄痓ody涓婂唴杈硅窛 return hh; diff --git a/HTML/layuiadmin/dragMove/dragMove.css b/HTML/layuiadmin/dragMove/dragMove.css new file mode 100644 index 0000000..e3fee1e --- /dev/null +++ b/HTML/layuiadmin/dragMove/dragMove.css @@ -0,0 +1,20 @@ +/** + @ Name锛歭ayui.dragMove 鍥剧墖鏌ョ湅鍣� + @ Author锛欶QSong + @ License锛歁IT + */ + +/* 鏍峰紡鍔犺浇瀹屾瘯鐨勬爣璇� */ +html #layuicss-dragMove{display: none; position: absolute; width: 1989px;} + + +/* 缁勪欢鏍峰紡 */ +.dragMove-skin .layui-layer-content {overflow: hidden !important;} +.layui-dragMove {position: relative; width: 100%; height: 100%; display: -webkit-flex; display: flex; flex-direction:column;} +.layui-dragMove .dragMove-img {position: relative; width: 100%; height: 100%; overflow: hidden; -webkit-flex: 1; flex: 1; background-color:#eee;} +.layui-dragMove .dragMove-img img {position: absolute; left: 0; top: 0; user-select:none; cursor: grab;} +.layui-dragMove .dragMove-btn {width:100%; padding: 10px 0; text-align:center; -webkit-flex: none; flex: none;} +.layui-dragMove .dragMove-btn .layui-btn {height: 28px; line-height: 28px;} +.layui-icon-loading {position: absolute; left: 50%; top: 50%; display: block; width: 36px; height: 36px; font-size: 36px; line-height: 36px; } + +.transitioning {-webkit-transition: -webkit-transform .24s ease-out; transition: transform .24s ease-out;} \ No newline at end of file diff --git a/HTML/layuiadmin/dragMove/dragMove.js b/HTML/layuiadmin/dragMove/dragMove.js new file mode 100644 index 0000000..1c5d2d4 --- /dev/null +++ b/HTML/layuiadmin/dragMove/dragMove.js @@ -0,0 +1,261 @@ +/** + @ Name锛歭ayui.dragMove 鍥剧墖鏌ョ湅鍣� + @ Author锛欶QSong + @ License锛歁IT + */ + +layui.define('layer', function(exports){ + var $ = layui.$ + ,layer = layui.layer + + //瀛楃甯搁噺 + ,MOD_NAME = 'dragMove', ELEM = '.layui-dragMove' + + //澶栭儴鎺ュ彛 + ,dragMove = { + index: layui.dragMove ? (layui.dragMove.index + 10000) : 0 + + //璁剧疆鍏ㄥ眬椤� + ,set: function(options){ + var that = this; + that.config = $.extend({}, that.config, options); + return that; + } + + //浜嬩欢鐩戝惉 + ,on: function(events, callback){ + return layui.onevent.call(this, MOD_NAME, events, callback); + } + } + + //鏋勯�犲櫒 + ,Class = function(options){ + var that = this; + that.index = ++dragMove.index; + that.config = $.extend({}, that.config, dragMove.config, options); + that.render(); + }; + + //榛樿閰嶇疆 + Class.prototype.config = { + layerArea: ["960px","720px"], + layerShade: 0.6, + layerMove: 0, + maxZoom: 1 + }; + + //娓叉煋瑙嗗浘 + Class.prototype.render = function(){ + var that = this + ,options = that.config + ,dragMoveView = "<div class='layui-dragMove'>" + + "<div class='dragMove-img'>" + + "<span class='layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop'></span>" + + "</div>" + + "<div class='dragMove-btn'>" + + "<button type='button' class='layui-btn layui-btn-sm' data-method='default'>榛樿澶у皬</button>" + + "<button type='button' class='layui-btn layui-btn-sm' data-method='real'>瀹為檯澶у皬</button>" + + "<button type='button' class='layui-btn layui-btn-sm' data-method='zoomin'>鏀惧ぇ</button>" + + "<button type='button' class='layui-btn layui-btn-sm' data-method='zoomout'>缂╁皬</button>" + + "</div>" + + "</div>"; + + options.elem = $(options.elem); + + options.elem.on("click","img",function(e){ + let imgObj = $(this), + imgSrc = imgObj.attr("src"), + imgTitle = imgObj.attr("alt") || imgSrc.replace(/(.*\/)*([^.]+).*/ig,"$2"); + + layer.open({ + type: 1, + resize: 0, + btn: 0, + skin: "dragMove-skin", + move: options.layerMove, + area: options.layerArea, + shade: options.layerShade, + title: imgTitle, + content: dragMoveView, + success: function(layero){ + var imgbox = layero.find(".dragMove-img"); + options.imgboxWidth = imgbox.innerWidth(); + options.imgboxHeight = imgbox.innerHeight(); + + var nImg = new Image(); + nImg.src = imgSrc; + if (nImg.complete) { + imgbox.empty().append(nImg); + that.init(nImg) + } else { + nImg.onload = function () { + imgbox.empty().append(nImg); + that.init(nImg) + } + } + } + }); + }); + } + + // + Class.prototype.init = function(img){ + var that = this + ,options = that.config; + + let $img = $(img), + parent = $img.closest(".layui-dragMove"), + zoomData = {}; + + zoomData.img = img; + zoomData.imgWidth = img.width; + zoomData.imgHeight = img.height; + + zoomData.zoomSize = Math.min(Math.min(options.imgboxWidth / zoomData.imgWidth, options.imgboxHeight / zoomData.imgHeight), 1); + zoomData.left = (options.imgboxWidth - zoomData.imgWidth * zoomData.zoomSize) / 2; + zoomData.top = (options.imgboxHeight - zoomData.imgHeight * zoomData.zoomSize) / 2; + zoomData.defaultZoom = zoomData.zoomSize; + + that.zoomData = zoomData; + $img.css({ "transform-origin": "0 0", "transform": "matrix(" + zoomData.zoomSize + ",0,0," + zoomData.zoomSize + "," + zoomData.left + "," + zoomData.top + ")" }); + + $img.on("mousedown", function (e) { + e.preventDefault(); + let currentX = e.clientX, + currentY = e.clientY; + $img.removeClass("transitioning").css({"cursor": "grabbing"}); + + $(document).on("mousemove", function (even) { + let moveX = even.clientX - currentX, + moveY = even.clientY - currentY; + $img.css({ "transform": "matrix(" + zoomData.zoomSize + ",0,0," + zoomData.zoomSize + "," + (zoomData.left + moveX) + "," + (zoomData.top + moveY) + ")" }); + }); + $(document).on("mouseup", function (even) { + var matrix = $img.css("transform").slice(7, -1).split(','), + center = that.getCenter(parseFloat(matrix[4]), parseFloat(matrix[5]), zoomData); + + zoomData.left = center.left; + zoomData.top = center.top; + + $img.addClass("transitioning").css({ + "transform": "matrix(" + zoomData.zoomSize + ",0,0," + zoomData.zoomSize + "," + zoomData.left + "," + zoomData.top + ")", + "cursor": "grab" + }); + + $(document).off("mousemove"); + $(document).off("mouseup"); + }); + }); + + parent.on("click", "button", function (e) { + e.preventDefault(); + var method = $(this).attr("data-method"), + scaleSize = 0; + switch (method) { + case "default": + scaleSize = zoomData.defaultZoom; + break; + case "real": + scaleSize = 1; + break; + case "zoomin": + scaleSize = zoomData.zoomSize * 1.2; + scaleSize = scaleSize > options.maxZoom ? options.maxZoom : scaleSize; + break; + case "zoomout": + scaleSize = zoomData.zoomSize / 1.2; + scaleSize = scaleSize < zoomData.defaultZoom ? zoomData.defaultZoom : scaleSize; + break; + + default: + break; + } + scaleSize && that.scaleZoom(scaleSize); + }); + + //榧犳爣婊氳疆 + parent.on("mousewheel", function (e) { + e.preventDefault(); + let scaleSize = 0; + if (e.originalEvent.wheelDelta > 0) { + scaleSize = zoomData.zoomSize * 1.2; + } else { + scaleSize = zoomData.zoomSize / 1.2; + } + scaleSize = Math.min(Math.max(scaleSize, zoomData.defaultZoom),options.maxZoom); + that.scaleZoom(scaleSize); + }); + + $img.on("transitionend webkitTransitionend", function () { + $(this).removeClass("transitioning") + }); + + }; + + Class.prototype.scaleZoom = function(index){ + var that = this + ,options = that.config + ,zoomData = that.zoomData; + + zoomData.left = zoomData.left - zoomData.imgWidth * (index - zoomData.zoomSize) / 2; + zoomData.top = zoomData.top - zoomData.imgHeight * (index - zoomData.zoomSize) / 2; + zoomData.zoomSize = index; + + var center = that.getCenter(zoomData.left,zoomData.top,zoomData); + zoomData.left = center.left; + zoomData.top = center.top; + + $(zoomData.img).addClass("transitioning").css({ + "transform":"matrix("+ zoomData.zoomSize +",0,0," + zoomData.zoomSize +","+zoomData.left+","+zoomData.top+")" + }); + }; + + Class.prototype.getCenter = function(x,y,zoomData){ + var that = this + ,options = that.config + ,zoomData = that.zoomData; + + let newleft,newtop; + newleft = (function(){ + var left; + if(zoomData.imgWidth * zoomData.zoomSize < options.imgboxWidth){ + left = (options.imgboxWidth - zoomData.imgWidth * zoomData.zoomSize) / 2; + }else{ + left = Math.max(Math.min(0,x), options.imgboxWidth - zoomData.imgWidth * zoomData.zoomSize); + } + return left; + })(); + newtop = (function(){ + var top; + if(zoomData.imgHeight * zoomData.zoomSize < options.imgboxHeight){ + top = (options.imgboxHeight - zoomData.imgHeight * zoomData.zoomSize) / 2; + }else{ + top = Math.max(Math.min(0, y), options.imgboxHeight - zoomData.imgHeight * zoomData.zoomSize); + } + return top; + })(); + return {left:newleft,top:newtop} + }; + + Class.prototype.decimal = function(num){ + var result = parseFloat(num); + if (isNaN(result)) { + return false; + } + result = Math.round(num * 100) / 100; + return result; + }; + + //鏍稿績鍏ュ彛 + dragMove.render = function(options){ + var ins = new Class(options); + return ins; + }; + + //鍔犺浇缁勪欢鎵�闇�鏍峰紡 + layui.link(layui.cache.base + 'dragMove/dragMove.css', function(){ + //鏍峰紡鍔犺浇瀹屾瘯鐨勫洖璋� + }, MOD_NAME); + + exports(MOD_NAME, dragMove); +}); \ No newline at end of file diff --git a/HTML/views/HouseWithinSetting/StockCheck.html b/HTML/views/HouseWithinSetting/StockCheck.html index 7adf894..e6dfbd0 100644 --- a/HTML/views/HouseWithinSetting/StockCheck.html +++ b/HTML/views/HouseWithinSetting/StockCheck.html @@ -188,7 +188,20 @@ }} </script> - + <script type="text/html" id="table-content-list2"> + {{# + var html = ''; + + if(d.Status >= 1){ + html += `<a class="layui-btn layui-btn-danger layui-btn-xs delClass" lay-event="viewPicture"> + <i class="layui-icon layui-icon-ok"></i>鏌ョ湅鍥剧墖 + </a>`; + } + return html; + + }} + + </script> <script type="text/html" id="toolbarDemo"> <button class="layui-btn layuiadmin-btn-list layui-btn-sm addClass" lay-event="add"> @@ -401,6 +414,7 @@ { field: 'CreateTime', title: '鍒涘缓鏃堕棿', align: 'center', width: 160, templet: '#CreateTimeButton', }, { field: 'UpdateUserName', title: '淇敼浜�', align: 'center', width: 120, hide: true }, { field: 'UpdateTime', title: '淇敼鏃堕棿', align: 'center', width: 160, hide: true, templet: '#UpdateTimeButton', }, + { field: 'caozuo', title: '鎿嶄綔', fixed: 'right', align: 'center', toolbar: '#table-content-list2', width: 100 } ]]; var TotalColsSysArrm = encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArrm)))//灏嗚〃澶存暟鎹繘琛寀rl缂栫爜 refreshTable(); @@ -783,7 +797,7 @@ } }); } else if (obj.event === 'vision') { - + layer.confirm('纭畾瑙嗚鐩樼偣', function () { if (isChongFu == true) { isChongFu = false; @@ -860,7 +874,24 @@ }); } }); - + table.on('tool(LAY-app-content-list2)', function (obj) { + var data = obj.data; + if (obj.event === 'viewPicture') {//鏌ョ湅鍥剧墖 + debugger; + layer.open({ + type: 2, + title: '鏌ョ湅鍥剧墖', + content: 'ViewPicture.html', + maxmin: true, + area: ['100%', '100%'], + success: function (layero, index) { + var body = layer.getChildFrame('body', index); + body.find('#CrNo').val(data.CrNo); + body.find('#PalletNo').val(data.PalletNo); + } + }); + } + }); var $ = layui.$, active = { customCols: function () { diff --git a/HTML/views/HouseWithinSetting/ViewPicture.html b/HTML/views/HouseWithinSetting/ViewPicture.html new file mode 100644 index 0000000..c188431 --- /dev/null +++ b/HTML/views/HouseWithinSetting/ViewPicture.html @@ -0,0 +1,104 @@ +<!DOCTYPE html> +<html> + +<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.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> + <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all"> +</head> + +<body> + <input type="hidden" id="CrNo" name="CrNo"> + <input type="hidden" id="PalletNo" name="PalletNo"> + <div class="layui-bg-gray" style="padding: 16px;" id="imgDragmove"> + <div class="layui-row layui-col-space15"> + <div class="layui-col-md2"> + <div class="layui-card"> + <div class="layui-card-header">0100101绠�</div> + <div class="layui-card-body"> + <img src="images/1920x1080.jpg" height="200" width="100%" alt="0100101绠�"> + </div> + </div> + </div> + <div class="layui-col-md2"> + <div class="layui-card"> + <div class="layui-card-header">0100102绠�</div> + <div class="layui-card-body"> + <img src="images/1920x400.jpg" height="200" width="100%" alt="0100102绠�"> + </div> + </div> + </div> + <div class="layui-col-md2"> + <div class="layui-card"> + <div class="layui-card-header">0100103绠�</div> + <div class="layui-card-body"> + <img src="images/400x400.jpg" height="200" width="100%" alt="0100103绠�"> + </div> + </div> + </div> + <div class="layui-col-md2"> + <div class="layui-card"> + <div class="layui-card-header">0100104绠�</div> + <div class="layui-card-body"> + <img src="images/400x400.jpg" height="200" width="100%" alt="0100104绠�"> + </div> + </div> + </div> + <div class="layui-col-md2"> + <div class="layui-card"> + <div class="layui-card-header">0100105绠�</div> + <div class="layui-card-body"> + <img src="images/400x400.jpg" height="200" width="100%" alt="0100105绠�"> + </div> + </div> + </div> + <div class="layui-col-md2"> + <div class="layui-card"> + <div class="layui-card-header">0100106绠�</div> + <div class="layui-card-body"> + <img src="images/400x400.jpg" height="200" width="100%" alt="0100106绠�"> + </div> + </div> + </div> + <div class="layui-col-md2"> + <div class="layui-card"> + <div class="layui-card-header">0100107绠�</div> + <div class="layui-card-body"> + <img src="images/400x400.jpg" height="200" width="100%" alt="0100107绠�"> + </div> + </div> + </div> + </div> + </div> + + + <script src="../../layuiadmin/layui/layui.js"></script> + <script src="../../js/jquery-3.5.1.min.js"></script> + <script src="../../js/jquery.cookie.js"></script> + <script src="../../js/public.js"></script> + <script> + layui.config({ + base: '../../layuiadmin/' //闈欐�佽祫婧愭墍鍦ㄨ矾寰� + }).extend({ + index: 'lib/index', //涓诲叆鍙fā鍧� + dragMove: 'dragMove/dragMove' + }).use(['dragMove'], function () { + var $ = layui.$; + var dragMove = layui.dragMove; + //鎵ц绀轰緥 + dragMove.render({ + elem: "#imgDragmove", //鎸囧悜鍥剧墖鐨勭埗瀹瑰櫒 + layerArea: ["960px", "720px"], //寮圭獥鐨勫楂橈紝鍚宭ayer鐨刟rea锛岄粯璁"960px","720px"] + layerShade: 0.6, //閬僵鐨勯�忔槑搴︼紝鍚宭ayer鐨剆hade锛岄粯璁�0.6 + layerMove: false, //瑙﹀彂鎷栧姩鐨勫厓绱狅紝鍚宭ayer鐨刴ove锛岃繖閲岄粯璁ょ姝紝鍙缃负'.layui-layer-title' + maxZoom: 1 //鍥剧墖鑳芥斁澶х殑鏈�澶у�嶆暟锛岄粯璁�1鍊� + }); + }) + </script> +</body> + +</html> \ No newline at end of file diff --git a/HTML/views/HouseWithinSetting/images/1920x1080.jpg b/HTML/views/HouseWithinSetting/images/1920x1080.jpg new file mode 100644 index 0000000..6d249ba --- /dev/null +++ b/HTML/views/HouseWithinSetting/images/1920x1080.jpg Binary files differ diff --git a/HTML/views/HouseWithinSetting/images/1920x400.jpg b/HTML/views/HouseWithinSetting/images/1920x400.jpg new file mode 100644 index 0000000..5644449 --- /dev/null +++ b/HTML/views/HouseWithinSetting/images/1920x400.jpg Binary files differ diff --git a/HTML/views/HouseWithinSetting/images/400x400.jpg b/HTML/views/HouseWithinSetting/images/400x400.jpg new file mode 100644 index 0000000..e8d4564 --- /dev/null +++ b/HTML/views/HouseWithinSetting/images/400x400.jpg Binary files differ diff --git a/HTML/views/HouseWithinSetting/images/400x900.jpg b/HTML/views/HouseWithinSetting/images/400x900.jpg new file mode 100644 index 0000000..24dc8dc --- /dev/null +++ b/HTML/views/HouseWithinSetting/images/400x900.jpg Binary files differ diff --git a/HTML/views/StatisticalReport/InventoryStatistics.html b/HTML/views/StatisticalReport/InventoryStatistics.html index dea2a48..23cecbc 100644 --- a/HTML/views/StatisticalReport/InventoryStatistics.html +++ b/HTML/views/StatisticalReport/InventoryStatistics.html @@ -36,6 +36,18 @@ <div class="layui-form layui-card-header layuiadmin-card-header-auto" id="top"> <div class="layui-form-item" style="margin-bottom: 0px;"> + <div class="layui-inline "> + <label class="layui-form-label" style="width: 60px;">鏌ヨ绫诲瀷</label> + <div class="layui-input-inline" style="width: 170px; margin-right: 0px;"> + <select name="SelectType" id="SelectType" lay-filter="SelectType" lay-search> + <option value="">姝e父</option> + <option value="0">鐗╂枡淇℃伅</option> + <option value="1">鎵规淇℃伅</option> + <option value="2">璐ㄦ淇℃伅</option> + <option value="3">璐т富淇℃伅</option> + </select> + </div> + </div> <div class="layui-inline zongdan"> <label class="layui-form-label" style="width: 60px;">鐗╂枡缂栫爜</label> <div class="layui-input-inline" style="width: 170px; margin-right: 0px;"> @@ -71,7 +83,7 @@ class="layui-input"> </div> </div> - <div class="layui-inline mingxi"> + <!-- <div class="layui-inline mingxi"> <label class="layui-form-label" style="width: 60px;">鍌ㄤ綅鍦板潃</label> <div class="layui-input-inline" style="width: 170px; margin-right: 0px;"> <input type="text" id="LocatNo" name="LocatNo" placeholder="鍌ㄤ綅鍦板潃" autocomplete="off" @@ -84,7 +96,7 @@ <input type="text" id="PalletNo" name="PalletNo" placeholder="鎵樼洏鍙�" autocomplete="off" class="layui-input"> </div> - </div> + </div> --> <div class="layui-inline "> <label class="layui-form-label" style="width: 60px;">搴撳瓨鐘舵��</label> @@ -123,7 +135,7 @@ </select> </div> </div> - <div class="layui-inline zhijian"> + <!-- <div class="layui-inline zhijian"> <label class="layui-form-label" style="width: 60px;">寮�濮嬫椂闂�</label> <div class="layui-input-inline" style="width: 170px; margin-right: 0px;"> <input type="text" autocomplete="off" id="StartTime" class="layui-input" @@ -136,7 +148,7 @@ <input type="text" autocomplete="off" id="EndTime" class="layui-input" placeholder="缁撴潫鏃堕棿"> </div> - </div> + </div> --> <div class="layui-inline sousuo"> <button class="layui-btn layui-btn-sm layuiadmin-btn-list" lay-submit lay-filter="LAY-app-contlist-search"> @@ -151,19 +163,15 @@ </div> </div> - + <div id="center"></div> <div class="layui-card-body"> <div style="position: relative;"> <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief"> - <ul class="layui-tab-title" id="tab"> - <li class="layui-this">搴撳瓨鎬婚噺</li> - <li>搴撳瓨鏄庣粏</li> - </ul> - - <div id="center"></div> + <!-- <div id="center"> + </div> --> <div class="layui-tab-content"> - <div class="layui-tab-item layui-show"> + <!-- <div class="layui-tab-item layui-show"> --> <div class="position-relative"><!-- class="position-relative" --><!-- 鑷畾涔夎〃澶村姞涓� --> <table id="LAY-app-content-list" lay-filter="LAY-app-content-list"></table> <!-- #region 鑷畾涔夎〃澶� --> @@ -174,29 +182,6 @@ </div> <!-- #endregion --> </div> - </div> - <div class="layui-tab-item"> - <div class="position-relative"><!-- class="position-relative" --><!-- 鑷畾涔夎〃澶村姞涓� --> - <table id="LAY-app-content-list2" lay-filter="LAY-app-content-list2"></table> - <!-- #region 鑷畾涔夎〃澶� --> - <div class="headerSetIcon"> - <button class="layui-btn layui-btn-primary layui-btn-sm" data-type="customCols2"> - <i class="layui-icon"></i> - </button> - </div> - <!-- #endregion --> - - <!-- #region 鑷畾涔夎〃澶� --> - <script type="text/html" id="templetCompleteTime"> - {{# function GetBtn(d){ - return formatDate(d.CompleteTime); - } - }} - {{ GetBtn(d) }} - </script> - <!-- #endregion --> - </div> - </div> </div> </div> @@ -258,7 +243,7 @@ element = layui.element; laydate = layui.laydate; - var h1 = GetTableTabHeight(); + var h1 = GetTableHeight(); laydate.render({ elem: '#StartTime', @@ -296,7 +281,7 @@ var $ = layui.$; var yemianid = 0; - refreshTable("", "","","",""); + refreshTable("", "", "", "", "", "", "", ""); // 琛ㄥ崟闇�瑕佺殑鍙橀噺 var infoOptions; @@ -361,14 +346,17 @@ {field: 'LotText',title: '鎵规鎻忚堪',align: 'center'}, {field: 'OwnerNo',title: '璐т富缂栫爜',align: 'center'}, {field: 'OwnerName',title: '璐т富鍚嶇О',align: 'center'}, + {field: 'Status',title: '搴撳瓨鐘舵��',align: 'center',templet: '#buttonTpl'}, + {field: 'InspectStatus',title: '璐ㄦ鐘舵��',align: 'center',templet: '#buttonTp2'}, {field: 'Qty',title: '搴撳瓨鏁伴噺',align: 'center',totalRow: true}, {field: 'LockQty',title: '閿佸畾鏁伴噺',align: 'center',totalRow: true}, - {field: 'FrozenQty',title: '鍐荤粨鏁伴噺',align: 'center',totalRow: true} + {field: 'FrozenQty',title: '鍐荤粨鏁伴噺',align: 'center',totalRow: true}, + {field: 'InspectQty',title: '鍙娊妫�鏁伴噺',align: 'center',totalRow: true}, ]]; var TotalColsSysArr=encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArr)))//灏嗚〃澶存暟鎹繘琛寀rl缂栫爜 //#endregion //鑾峰彇鎬婚噺淇℃伅 - function refreshTable(SkuNo,SkuName,OwnerNo,OwnerName,LotNo) { + function refreshTable(SelectType,SkuNo,SkuName,OwnerNo,OwnerName,LotNo,Status,InspectStatus) { //#region 鑷畾涔夎〃澶� var colsJson var param1={ @@ -401,11 +389,14 @@ cols:colsJson }; var param = { + SelectType:SelectType, //鏌ヨ绫诲瀷 SkuNo:SkuNo, //鐗╂枡鍙� SkuName:SkuName, //鐗╂枡鍚嶇О OwnerNo:OwnerNo, //璐т富缂栫爜 OwnerName:OwnerName, //璐т富鍚嶇О LotNo:LotNo, //鎵规鍙� + Status:Status, //搴撳瓨鐘舵�� = $("#Status").val(); + InspectStatus:InspectStatus, //璐ㄦ鐘舵�� = $("#InspectStatus").val(); }; sendData(IP + "/Statistical/GetInventoryList", param, 'get', function (res) { console.log(res) @@ -428,319 +419,47 @@ }); }); //#endregion - } - - // 琛ㄥ崟闇�瑕佺殑鍙橀噺 - var infoOptions2; - //#region 鍘熷闈炶嚜瀹氫箟鍒� - //infoOptions2 = { - // elem: '#LAY-app-content-list2', - // height: 'full-206', - // id: 'LAY-app-content-list2', - // page: true, - // limit: pageCnt, - // limits: pageLimits, - // even: true, - // cellMinWidth: 80, //鍏ㄥ眬瀹氫箟甯歌鍗曞厓鏍肩殑鏈�灏忓搴︼紝layui 2.2.1 鏂板 - // cols: - // [[ - // { - // field: 'PalletNo', - // title: '鎵樼洏鍙�', - // align: 'center', - // width: 110, - // }, { - // field: 'LocatNo', - // title: '鍌ㄤ綅鍦板潃', - // align: 'center', - // width: 100, - // }, { - // field: 'RoadwayName', - // title: '鎵�灞炲贩閬�', - // width: 90, - // align: 'center', - // }, { - // field: 'WareHouseName', - // title: '鎵�灞炰粨搴�', - // width: 90, - // align: 'center', - // }, { - // field: 'SkuNo', - // title: '鐗╂枡缂栫爜', - // width: 100, - // align: 'center', - // }, { - // field: 'SkuName', - // title: '鐗╂枡鍚嶇О', - // align: 'center', - // }, { - // field: 'Standard', - // title: '鐗╂枡瑙勬牸', - // width: 130, - // align: 'center', - // }, { - // field: 'LotNo', - // title: '鎵规鍙�', - // align: 'center', - // }, { - // field: 'Qty', - // title: '搴撳瓨鏁伴噺', - // width: 110, - // align: 'center', - // }, { - // field: 'LockQty', - // title: '閿佸畾鏁伴噺', - // width: 110, - // align: 'center', - // }, - // { - // field: 'Status', - // templet: '#buttonTpl', - // title: '搴撳瓨鐘舵��', - // width: 90, - // align: 'center', - // }, { - // field: 'InspectStatus', - // templet: '#buttonTp2', - // title: '璐ㄦ鐘舵��', - // width: 90, - // align: 'center', - // }, - // { - // field: 'CompleteTime', - // title: '鍏ュ簱鏃堕棿', - // align: 'center', - // width: 150, - // templet: function (d) { - // return formatDate(d.CompleteTime); - // }, - // }, - // ]] - //}; - //#endregion - - //鑾峰彇鏄庣粏淇℃伅 - //#region 鑷畾涔夎〃澶� - var DetailColsArr = [[ - {field: 'PalletNo',title: '鎵樼洏鍙�',align: 'center',width: 110,}, - {field: 'LocatNo',title: '鍌ㄤ綅鍦板潃',align: 'center',width: 100,}, - {field: 'WareHouseName',title: '鎵�灞炰粨搴�',width: 90,align: 'center'}, - {field: 'RoadwayName',title: '鎵�灞炲贩閬�',width: 90,align: 'center'}, - {field: 'AreaName',title: '鎵�灞炲尯鍩�',width: 90,align: 'center'}, - {field: 'SkuNo',title: '鐗╂枡缂栫爜',width: 100,align: 'center'}, - {field: 'SkuName',title: '鐗╂枡鍚嶇О',align: 'center'}, - {field: 'Standard',title: '鐗╂枡瑙勬牸',width: 130,align: 'center'}, - {field: 'LotNo',title: '鎵规鍙�',align: 'center'}, - {field: 'OwnerNo',title: '璐т富缂栫爜',align: 'center'}, - {field: 'OwnerName',title: '璐т富鍚嶇О',align: 'center'}, - {field: 'SupplierNo',title: '渚涘簲鍟嗙紪鐮�',align: 'center'}, - {field: 'SupplierName',title: '渚涘簲鍟嗗悕绉�',align: 'center'}, - {field: 'Qty',title: '搴撳瓨鏁伴噺',width: 110,align: 'center'}, - {field: 'LockQty',title: '閿佸畾鏁伴噺',width: 110,align: 'center'}, - {field: 'Status',templet: '#buttonTpl',title: '搴撳瓨鐘舵��',width: 90,align: 'center'}, - {field: 'InspectStatus',templet: '#buttonTp2',title: '璐ㄦ鐘舵��',width: 90,align: 'center'}, - {field: 'CompleteTime',title: '鍏ュ簱鏃堕棿',align: 'center',width: 150,templet: '#templetCompleteTime'}, - ]]; - var DetailColsSysArr=encodeURIComponent(encodeURIComponent(JSON.stringify(DetailColsArr)))//灏嗚〃澶存暟鎹繘琛寀rl缂栫爜 - //#endregion - function refreshTable2(SkuNo,SkuName,OwnerNo,OwnerName,LotNo,LocatNo,PalletNo,Status,InspectStatus,StartTime,EndTime) { - //#region 鑷畾涔夎〃澶� - var colsJson2 - var param1={ - Href:'Statistical/GetInventoryList1' - }; - sendData(IP + "/Sys/GetTableColsByUserId", param1, 'post', function(res) { - if (res.code == 0){ - if(res.data=='' || res.data==undefined || res.data==null){ - colsJson2=DetailColsArr - }else{ - colsJson2= eval(res.data); - } - }else{ - colsJson2=DetailColsArr - } - infoOptions2 = { - elem: '#LAY-app-content-list2', - height: h1, - id: 'LAY-app-content-list2', - page: true, - limit: pageCnt, - limits: pageLimits, - even: true, - cellMinWidth: 80, //鍏ㄥ眬瀹氫箟甯歌鍗曞厓鏍肩殑鏈�灏忓搴︼紝layui 2.2.1 鏂板 - done: function(){ - //鑷畾涔夊垪瀹� - SetTableColW('LAY-app-content-list2','Statistical/GetInventoryList1',DetailColsSysArr); - }, - cols:colsJson2 - }; - var param = { - SkuNo:SkuNo, //鐗╂枡鍙� - SkuName:SkuName, //鐗╂枡鍚嶇О - OwnerNo:OwnerNo, //璐т富缂栫爜 - OwnerName:OwnerName, //璐т富鍚嶇О - LotNo:LotNo, //鎵规鍙� - LocatNo:LocatNo,//鍌ㄤ綅鍦板潃 - PalletNo:PalletNo, //鎵樼洏鍙� - Status:Status,//搴撳瓨鐘舵�� - InspectStatus:InspectStatus, //璐ㄦ鐘舵�� - StartTime:StartTime,//寮�濮嬫椂闂� - EndTime:EndTime, //缁撴潫鏃堕棿 - }; - sendData(IP + "/Statistical/GetInventoryList1", param, 'get', function (res) { - if (res.code == 0) //鎴愬姛 - { - var list = res.data; - $.extend(infoOptions2, { - data: list - }); - infoOptions2.page = { - curr: 1 - } - tableIns2 = table.render(infoOptions2); - } - else //涓嶆垚鍔� - { - layer.msg('鑾峰彇鏄庣粏鍒楄〃淇℃伅澶辫触锛�', { - icon: 2, - time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級 - }, function () { }); - } - }) - }); - //#endregion - } + } - //var url = IP + "/Statistical/GetInventoryList1"; - - //鎺ュ彈鍏ㄥ眬鍙橀噺 - let quanSkuNo = ''; - let quanLotNo=''; //鐩戝惉鎼滅储 form.on('submit(LAY-app-contlist-search)', function (data) { + var SelectType = $("#SelectType").val(); var SkuNo = $("#SkuNo").val(); var SkuName = $("#SkuName").val(); var LotNo = $("#LotNo").val(); - var LocatNo = $("#LocatNo").val(); - var PalletNo = $("#PalletNo").val(); var OwnerNo = $("#OwnerNo").val(); var OwnerName = $("#OwnerName").val(); var Status = $("#Status").val(); var InspectStatus = $("#InspectStatus").val(); - var StartTime = $("#StartTime").val(); - var EndTime = $("#EndTime").val(); - if (yemianid == 0) { - console.log("鎬诲崟"); - refreshTable(SkuNo, SkuName,OwnerNo,OwnerName,LotNo); - } else if (yemianid == 1) { - //quanSkuNo = quanSkuNo; - //quanLotNo=''; - console.log("鏄庣粏"); - console.log(SkuNo,SkuName,OwnerNo,OwnerName,LotNo,LocatNo,PalletNo,Status,InspectStatus,StartTime,EndTime) - refreshTable2(quanSkuNo,SkuName,OwnerNo,OwnerName,quanLotNo,LocatNo,PalletNo,Status,InspectStatus,StartTime,EndTime); - } + refreshTable(SelectType,SkuNo, SkuName,OwnerNo,OwnerName,LotNo,Status,InspectStatus); - }); - //瑙﹀彂琛屽弻鍑讳簨浠� - table.on('rowDouble(LAY-app-content-list)', function (obj) { - $(".layui-tab-title>li").attr("class", ""); - $('.layui-tab-title>li').eq(1).attr('class', 'layui-this'); - $('.layui-tab-content .layui-tab-item').attr('class', 'layui-tab-item') - $('.layui-tab-content .layui-tab-item').eq(1).attr('class', 'layui-tab-item layui-show') - console.log(obj); - quanSkuNo = obj.data.SkuNo; - quanLotNo=obj.data.lotNo; - refreshTable2(obj.data.SkuNo,obj.data.SkuName,obj.data.OwnerNo,obj.data.OwnerName,obj.data.LotNo,obj.data.LocatNo,obj.data.PalletNo,obj.data.Status,obj.data.InspectStatus,obj.data.StartTime,obj.data.EndTime); - yemianid = 1; - }); - - //鐩戝惉Tab鍒囨崲锛屼互鏀瑰彉鍦板潃hash鍊� - element.on('tab(docDemoTabBrief)', function (data) { - var SkuNo = $("#SkuNo").val(); - var SkuName = $("#SkuName").val(); - var LotNo = $("#LotNo").val(); - var LocatNo = $("#LocatNo").val(); - var PalletNo = $("#PalletNo").val(); - var OwnerNo = $("#OwnerNo").val(); - var OwnerName = $("#OwnerName").val(); - var Status = $("#Status").val(); - var InspectStatus = $("#InspectStatus").val(); - console.log(data.index); - yemianid = data.index - if (yemianid == 0) { - console.log("鎬诲崟"); - refreshTable(SkuNo, SkuName,OwnerNo,OwnerName,LotNo); - } else if (yemianid == 1) { - console.log("鏄庣粏"); - refreshTable2(SkuNo,SkuName,OwnerNo,OwnerName,LotNo,LocatNo,PalletNo,Status,InspectStatus,StartTime,EndTime); - } }); form.on('submit(daochu)', function () { layer.confirm('纭畾瀵煎嚭褰撳墠鏁版嵁鍚楋紵', function (index) { - if (yemianid == 0) { - console.log("鎬诲崟"); - var param = { - SkuNo: $("#SkuNo").val(), - SkuName: $("#SkuName").val(), - }; - sendData(IP + "/Statistical/GetInventoryListDaoChu", param, 'get', function (res) { - console.log(res); - if (res.code == 0) { //鎴愬姛 - var list = res.data; - table.exportFile(tableIns.config.id, list, 'xls', "搴撳瓨淇℃伅" + getNowTime(),); //data 涓鸿瀹炰緥涓殑浠绘剰鏁伴噺鐨勬暟鎹� - layer.msg('瀵煎嚭鎴愬姛锛�', { - icon: 1, - time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級 - }, function () { + var param = { + SkuNo: $("#SkuNo").val(), + SkuName: $("#SkuName").val(), + }; + sendData(IP + "/Statistical/GetInventoryListDaoChu", param, 'get', function (res) { + console.log(res); + if (res.code == 0) { //鎴愬姛 + var list = res.data; + table.exportFile(tableIns.config.id, list, 'xls', "搴撳瓨淇℃伅" + getNowTime(),); //data 涓鸿瀹炰緥涓殑浠绘剰鏁伴噺鐨勬暟鎹� + layer.msg('瀵煎嚭鎴愬姛锛�', { + icon: 1, + time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級 + }, function () { - }); + }); - } else { //涓嶆垚鍔� - layer.msg('鑾峰彇淇℃伅澶辫触锛�', { - icon: 2, - time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級 - }, function () { }); - } - }); - } else if (yemianid == 1) { - console.log("鏄庣粏"); - var SkuNo = $("#SkuNo").val(); - if (SkuNo == '') { - SkuNo = quanSkuNo; + } else { //涓嶆垚鍔� + layer.msg('鑾峰彇淇℃伅澶辫触锛�', { + icon: 2, + time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級 + }, function () { }); } - var param = { - SkuNo: SkuNo, - SkuName: $("#SkuName").val(), - LotNo: $("#LotNo").val(), - LocatNo: $("#LocatNo").val(), - PalletNo: $("#PalletNo").val(), - Status: $("#Status").val(), - InspectStatus: $("#InspectStatus").val(), - IsSamolingTray: $("#IsSamolingTray").val(), - StartTime: $("#StartTime").val(), - EndTime: $("#EndTime").val(), - }; - sendData(IP + "/Statistical/GetInventoryList1DaoChu", param, 'get', function (res) { - console.log(res); - if (res.code == 0) { //鎴愬姛 - var list = res.data; - table.exportFile(tableIns2.config.id, list, 'xls', "搴撳瓨鏄庣粏淇℃伅" + getNowTime(),); //data 涓鸿瀹炰緥涓殑浠绘剰鏁伴噺鐨勬暟鎹� - layer.msg('瀵煎嚭鎴愬姛锛�', { - icon: 1, - time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級 - }, function () { - - }); - - } else { //涓嶆垚鍔� - layer.msg('鑾峰彇淇℃伅澶辫触锛�', { - icon: 2, - time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級 - }, function () { }); - } - }); - } + }); }); @@ -757,18 +476,7 @@ resize: false, area: ['970px', '650px'] }); - }, - customCols2: function(){ - layer.open({ - type: 2, - title: '鑷畾涔夊垪', - content: '../SystemSettings/HeaderSetting.html?Href=Statistical/GetInventoryList1&ColsSysArr='+DetailColsSysArr, - maxmin: false, - resize: false, - area: ['970px', '650px'] - }); } - }; $('.layui-btn').on('click', function() { var type = $(this).data('type'); diff --git a/HTML/views/SystemSettings/PrintModule.html b/HTML/views/SystemSettings/PrintModule.html new file mode 100644 index 0000000..5298460 --- /dev/null +++ b/HTML/views/SystemSettings/PrintModule.html @@ -0,0 +1,153 @@ +<!DOCTYPE html> +<html> + +<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.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> + <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all"> + <link rel="stylesheet" type="text/css" href="../../js/HiPrint/css/hiprint.css?t=' + Math.random() + '" /> + <link rel="stylesheet" type="text/css" href="../../js/HiPrint/css/print-lock.css" /> + <link rel="stylesheet" media="print" href="../../js/HiPrint/css/print-lock.css" /> + <!-- <link rel="stylesheet" type="text/css" href="../../js/HiPrint/css/bootstrap.min.css" > --> + <style> + .layui-form-label { + padding: 5px 1px; + text-align: center; + } + + div { + font-size: inherit; + } + </style> +</head> + +<body> + <div class="layui-card"> + <input type="hidden" id="printData" name="printData"> + <input type="hidden" id="printType" name="printType"> + <div class="row"> + + <!--宸︿晶div--> + <div class="layui-col-xs2" style="padding-right:0px;max-height:250mm;"> + <div class="small-printElement-types hiprintEpContainer"> + </div> + </div> + <!--鎵撳嵃閮ㄥ垎--> + <div class="layui-col-xs6" style="margin-right: 50px;margin-left: 30px;"> + <!--鎵撳嵃澶撮儴鍒�--> + <div class="hiprint-toolbar" style="margin-top:15px;"> + <ul> + <li><a class="hiprint-toolbar-item"><input type="number" id="customWidth" + style="width: 50px;height: 19px;border: 0px;" placeholder="瀹�/mm" /></a></li> + <li><a class="hiprint-toolbar-item"><input type="number" id="customHeight" + style="width: 50px;height: 19px;border: 0px;" placeholder="楂�/mm" /></a></li> + <li><a class="hiprint-tizee-btn" onclick="clearTemplate()">娓呯┖</a></li> + <!-- <li> <a class="btn hiprint-toolbar-item " + style="color: #fff;background-color: #d9534f;border-color: #d43f3a;" + id="preview">蹇�熼瑙�</a> </li> --> + <li> <a id="directPrint" class="btn hiprint-toolbar-item " + style="color: #fff;background-color: #d9534f; border-color: #d43f3a;">鎵撳嵃</a> + </li> + <!-- <li> + <a class="btn hiprint-toolbar-item" + style="color: #fff;background-color: #d9534f; border-color: #d43f3a;" + id="A4_getJson_toTextarea" onclick="BtnSubmit_Click()">淇濆瓨</a> + </li> --> + </ul> + <div style="clear:both;"></div> + </div> + <!--鎵撳嵃涓讳綋閮ㄥ垎--> + <div id="hiprint-printTemplate" class="hiprint-printTemplate" style="margin-top:20px;"> + + </div> + <textarea class="form-control" rows="10" id="A4_textarea_json" style="display: none;"></textarea> + </div> + <!--鍙充晶div--> + <div class="layui-col-xs2" style="margin-left: 6%;max-height:260mm; overflow-y: scroll;"> + <div id="PrintElementOptionSetting" style="margin-top: 10px;"></div> + </div> + </div> + </div> + + <script src="../../js/jquery-3.5.1.min.js"></script> + <script src="../../js/jquery.cookie.js"></script> + <script src="../../js/hiprint/content/bootstrap.min.js"></script> + <script src="../../js/HiPrint/polyfill.min.js"></script> + <script src="../../js/HiPrint/plugins/jquery.minicolors.min.js"></script> + <script src="../../js/HiPrint/plugins/JsBarcode.all.min.js"></script> + <script src="../../js/HiPrint/plugins/qrcode.js"></script> + <script src="../../js/HiPrint/hiprint.bundle.js"></script> + <script src="../../js/HiPrint/plugins/jquery.hiwprint.js"></script> + <!-- <script src="../../js/HiPrint/plugins/socket.io.js"></script> --> + <script src="../../js/HiPrint/plugins/config-etype-provider.js"></script> + <script src="../../js/HiPrint/plugins/jspdf/canvas2image.js"></script> + <script src="../../js/HiPrint/plugins/jspdf/canvg.min.js"></script> + <script src="../../js/HiPrint/plugins/jspdf/html2canvas.min.js"></script> + <script src="../../js/HiPrint/plugins/jspdf/jspdf.min.js"></script> + <script src="../../js/HiPrint/plugins/print-data-list.js"></script> + <script src="../../js/HiPrint/hiprint.config.js"></script> + <script src="../../layuiadmin/layui/layui.js"></script> + <script src="../../js/public.js"></script> + <script> + var configPrintJson; + var datalist = []; + //鍒濆鍖栨墦鍗版彃浠舵覆鏌� + $(".hiprintEpContainer").html(""); //娓呴櫎div鍐呭 + + + + var hiprintTemplate; + // var JsonData = JSON.parse('{"panels":[{"index":0,"height":50,"width":50,"paperHeader":0,"paperFooter":141.73228346456693,"printElements":[{"tid":"configModule.SkuName","options":{"left":9,"top":12,"height":9.75,"width":120}},{"tid":"configModule.SkuNo","options":{"left":9,"top":37.5,"height":78,"width":120,"textType":"qrcode"}}],"paperNumberLeft":178.5,"paperNumberTop":123}]}') + var JsonData = {}; + setTimeout(function () { + var printType = $("#printType").val(); + datalist = getPrintDataList()(printType); + synData(IP + "/sys/GetDefaultPrintTemplate?Type=" + printType, {}, 'get', function (res) { + if (res.code == 0) { //鎴愬姛 + hiprint.init({ + providers: [new configElementTypeProvider()] + }); + //璁剧疆宸︿晶鎷栨嫿浜嬩欢 + hiprint.PrintElementTypeManager.build('.hiprintEpContainer', 'testModule'); + JsonData = JSON.parse(res.data.PositionJson); + $("#customWidth").val(JsonData.panels[0].width); + $("#customHeight").val(JsonData.panels[0].height); + hiprintTemplate = new hiprint.PrintTemplate({ + template: JsonData,//妯℃澘JSON + settingContainer: '#PrintElementOptionSetting', + paginationContainer: '.hiprint-printPagination' + }); + + //鎵撳嵃璁捐 + hiprintTemplate.design('#hiprint-printTemplate'); + + //鎵撳嵃 + //杩欓噷鑾峰彇涓婄骇椤甸潰鐨刾rintData鏁版嵁鎵撳嵃 + // var printData = deepClone(parent.printData); + var printData = JSON.parse($("#printData").val()); + hiprintTemplate.print(printData, '鎵撳嵃'); + parent.layer.closeAll(); + } + else //涓嶆垚鍔� + { + layer.msg(res.msg, { + icon: 2, + time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級 + }, function () { parent.layer.closeAll(); }); + } + }); + }, 100); + + + + $('#directPrint').click(function () { + hiprintTemplate.print(printData); + }); + </script> +</body> + +</html> \ No newline at end of file diff --git a/Wms/Model/ModelDto/DataDto/MateDataStockDto.cs b/Wms/Model/ModelDto/DataDto/MateDataStockDto.cs index 84c105e..dee475d 100644 --- a/Wms/Model/ModelDto/DataDto/MateDataStockDto.cs +++ b/Wms/Model/ModelDto/DataDto/MateDataStockDto.cs @@ -38,17 +38,23 @@ /// <summary> /// 鏁伴噺 /// </summary> - public string Qty { get; set; } + public decimal? Qty { get; set; } /// <summary> /// 閿佸畾鏁伴噺 /// </summary> - public string LockQty { get; set; } + public decimal? LockQty { get; set; } /// <summary> /// 鍐荤粨鏁伴噺 /// </summary> - public string FrozenQty { get; set; } + public decimal? FrozenQty { get; set; } + + + /// <summary> + /// 鍙娊妫�鏁伴噺 + /// </summary> + public decimal? InspectQty { get; set; } /// <summary> /// 鍓╀綑鏁伴噺 diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs index e746979..f2f8ea3 100644 --- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs +++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs @@ -4380,7 +4380,7 @@ var exAllotList = new List<BllExportAllot>(); var assign = new AllotSku(); - var specialSku = new List<string>();//鐗规畩鐗╂枡闆嗗悎锛屾棤闇�鎵樼洏涓婂叏閮ㄥ垎閰嶇殑 + var specialSku = new List<string>();//鐗规畩鐗╂枡闆嗗悎锛� 鏃犻渶鎵樼洏涓婂叏閮ㄥ垎閰嶇殑 Db.BeginTran(); try { @@ -4458,7 +4458,7 @@ } else { - qty += assign.AllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic); + qty += assign.AllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic, detail.LotNo, detail.IsMixBox); } foreach (var sc in stockQtyDic) diff --git a/Wms/WMS.BLL/BllSoServer/WaveMageServer.cs b/Wms/WMS.BLL/BllSoServer/WaveMageServer.cs index 88419dd..393fd6d 100644 --- a/Wms/WMS.BLL/BllSoServer/WaveMageServer.cs +++ b/Wms/WMS.BLL/BllSoServer/WaveMageServer.cs @@ -480,7 +480,7 @@ Dictionary<string, int> zxQtyDic = new Dictionary<string, int>();//鎵樺嚭鏁寸鏁� //鍒嗛厤璐х墿 //assign.AllocatePallets(stocks, pNum, bNum, needQty, stockQtyDic, zxQtyDic); - var qty = assign.AllotPallets(stockDetail, decimal.Parse(needQty.ToString()), pNum, bNum, stockQtyDic); + var qty = assign.AllotPallets(stockDetail, decimal.Parse(needQty.ToString()), pNum, bNum, stockQtyDic, detail.LotNo, detail.IsMixBox); foreach (var sc in stockQtyDic) { diff --git a/Wms/WMS.BLL/DataServer/StockServer.cs b/Wms/WMS.BLL/DataServer/StockServer.cs index 8259a64..ebf208d 100644 --- a/Wms/WMS.BLL/DataServer/StockServer.cs +++ b/Wms/WMS.BLL/DataServer/StockServer.cs @@ -5,9 +5,12 @@ using System.Runtime.Intrinsics.X86; using System.Security.Claims; using System.Text; +using System.Threading.Tasks; using Model.ModelDto; using Model.ModelDto.DataDto; +using Model.ModelDto.SysDto; using Model.ModelVm.DataVm; +using Model.ModelVm.SysVm; using SqlSugar; using WMS.DAL; using WMS.Entity.Context; @@ -31,92 +34,255 @@ /// <summary> /// 鏌ヨ搴撳瓨鎬婚噺 /// </summary> + /// <param name="selectType">鏌ヨ绫诲瀷 0锛氱墿鏂欎俊鎭� 1锛氭壒娆′俊鎭� 2锛氳川妫�淇℃伅 3锛氳揣涓讳俊鎭�</param> /// <param name="skuNo">鐗╂枡缂栫爜</param> /// <param name="skuName">鐗╂枡鍚嶇О</param> + /// <param name="ownerNo">璐т富缂栫爜</param> + /// <param name="ownerName">璐т富鍚嶇О</param> + /// <param name="lotNo">鎵规</param> + /// <param name="status">搴撳瓨鐘舵��</param> + /// <param name="inspectStatus">璐ㄦ鐘舵��</param> /// <returns></returns> - public List<MateDataStockDto> GetDataStockList(string skuNo, string skuName, string ownerNo, string ownerName, string lotNo) + public async Task<List<MateDataStockDto>> GetDataStockList(string selectType, string skuNo, string skuName, string ownerNo, string ownerName, string lotNo, string status, string inspectStatus) { - string str = "select stock.SkuNo,stock.SkuName,stock.LotNo,stock.LotText,stock.Standard,stock.Qty," + - "stock.LockQty,stock.FrozenQty,stock.OwnerNo,stock.OwnerName,(mate.Weight * stock.Qty) WeightSum " + - "from DataStock stock " + - "left join SysMaterials mate on stock.SkuNo = mate.SkuNo " + - "Where stock.IsDel = @isdel and mate.IsDel = 0 "; - //鍒ゆ柇鐗╂枡缂栫爜鏄惁涓虹┖ - if (!string.IsNullOrEmpty(skuNo)) + List<MateDataStockDto> modUser = new List<MateDataStockDto>(); + if (string.IsNullOrEmpty(selectType)) { - str += " and stock.SkuNo like @skuno"; - } - //鍒ゆ柇鐗╂枡鍚嶇О鏄惁涓虹┖ - if (!string.IsNullOrEmpty(skuName)) - { - str += " and stock.SkuName like @skuname"; - } - //鍒ゆ柇璐т富缂栫爜鏄惁涓虹┖ - if (!string.IsNullOrEmpty(ownerNo)) - { - str += " and stock.OwnerNo like @ownerNo"; - } - //鍒ゆ柇璐т富鍚嶇О鏄惁涓虹┖ - if (!string.IsNullOrEmpty(ownerName)) - { - str += " and stock.OwnerName like @ownerName"; - } - //鍒ゆ柇璐т富鍚嶇О鏄惁涓虹┖ - if (!string.IsNullOrEmpty(lotNo)) - { - str += " and stock.LotNo like @lotNo"; - } - //鎺掑簭 - str += " order by stock.SkuNo"; - List<MateDataStockDto> StockList = Db.Ado.SqlQuery<MateDataStockDto>(str, new - { - isdel = "0", //鏄惁鍒犻櫎 - skuno = "%" + skuNo + "%", //鐗╂枡缂栫爜 - skuname = "%" + skuName + "%", //鐗╂枡鍚嶇О - ownerNo = "%" + ownerNo + "%", //璐т富缂栫爜 - ownerName = "%" + ownerName + "%", //璐т富鍚嶇О - lotNo = "%" + lotNo + "%", //鎵规鍙� - }); + modUser = await Db.Queryable<DataStock>() + .WhereIF(!string.IsNullOrEmpty(skuNo), a => a.SkuNo == skuNo) + .WhereIF(!string.IsNullOrEmpty(skuName), a => a.SkuName == skuName) + .WhereIF(!string.IsNullOrEmpty(ownerNo), a => a.OwnerNo == ownerNo) + .WhereIF(!string.IsNullOrEmpty(ownerName), a => a.OwnerName == ownerName) + .WhereIF(!string.IsNullOrEmpty(lotNo), a => a.LotNo == lotNo) + .Where(a => a.IsDel == "0") + .Select(a => new MateDataStockDto() + { + SkuNo = a.SkuNo, //鐗╂枡缂栫爜 + SkuName = a.SkuName, //鐗╂枡鍚嶇О + Standard = a.Standard, //瑙勬牸 + LotNo = a.LotNo, //鎵规 + LotText = a.LotText, //鎵规鎻忚堪 + OwnerNo = a.OwnerNo, //璐т富缂栫爜 + OwnerName = a.OwnerName, //璐т富鍚嶇О + Status = status, //搴撳瓨鐘舵�� + InspectStatus = inspectStatus, //璐ㄦ鐘舵�� + Qty = SqlFunc.Subqueryable<DataStockDetail>() + .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) + .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) + .Where(s => s.IsDel == "0" && s.LotNo == a.LotNo) + .Sum(s => s.Qty), //搴撳瓨鏁伴噺 + //Qty = SqlFunc.AggregateSum(b.Qty), //搴撳瓨鏁伴噺 + LockQty = SqlFunc.Subqueryable<DataStockDetail>() + .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) + .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) + .Where(s => s.IsDel == "0" && s.LotNo == a.LotNo) + .Sum(s => s.LockQty), //閿佸畾鏁伴噺 + FrozenQty = SqlFunc.Subqueryable<DataStockDetail>() + .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) + .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) + .Where(s => s.IsDel == "0" && s.LotNo == a.LotNo) + .Sum(s => s.FrozenQty), //鍐荤粨鏁伴噺 + InspectQty = SqlFunc.Subqueryable<DataStockDetail>() + .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) + .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) + .Where(s => s.IsDel == "0" && s.LotNo == a.LotNo) + .Sum(s => s.InspectQty), //鍙娊妫�鏁伴噺 + }).ToListAsync(); - //搴撳瓨鎬婚噺 - List<MateDataStockDto> StockListDto = new List<MateDataStockDto>(); - - foreach (var item in StockList) - { - StockListDto.Add(item); - ////鍒ゆ柇搴撳瓨鎬婚噺鏄惁鎷ユ湁鐗╂枡 - //if (StockListDto.Count > 0) - //{ - // int i = 0; - // //foreach寰幆搴撳瓨鎬婚噺 - // foreach (var dto in StockListDto) - // { - // //鍒ゆ柇鐗╂枡鍜屾壒娆℃槸鍚︾浉鍚� - // if (dto.SkuNo == item.SkuNo && dto.LotNo == item.LotNo) - // { - // dto.Qty = (Convert.ToDecimal(dto.Qty) + Convert.ToDecimal(item.Qty)).ToString(); - // dto.FrozenQty = (Convert.ToDecimal(dto.FrozenQty) + Convert.ToDecimal(item.FrozenQty)).ToString(); - // dto.LockQty = (Convert.ToDecimal(dto.LockQty) + Convert.ToDecimal(item.LockQty)).ToString(); - // dto.ResidueQty= (Convert.ToDecimal(dto.ResidueQty) + Convert.ToDecimal(item.ResidueQty)).ToString(); - // break; - // } - // i += 1; - // //鍒ゆ柇宸叉湁鐩稿悓鐗╂枡 - // if (i == StockListDto.Count) - // { - // StockListDto.Add(item); - // break; - // } - // } - //} - //else - //{ - // StockListDto.Add(item); - // continue; - //} + return modUser; } + else + { + var selectList = new List<DataStockDetail>(); + switch (selectType) + { + case "0": // 鐗╂枡淇℃伅 + modUser = await Db.Queryable<DataStock>() + .Where(a => a.IsDel == "0") + .GroupBy(a => new { a.SkuNo, a.SkuName, a.Standard }) + .Select(a => new MateDataStockDto() + { + SkuNo = a.SkuNo, //鐗╂枡缂栫爜 + SkuName = a.SkuName, //鐗╂枡鍚嶇О + Standard = a.Standard, //瑙勬牸 + Qty = SqlFunc.Subqueryable<DataStockDetail>() + .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) + .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) + .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) + .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) + .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) + .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) + .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) + .Where(s => s.IsDel == "0" && s.SkuNo == a.SkuNo) + .Sum(s => s.Qty), //搴撳瓨鏁伴噺 + LockQty = SqlFunc.Subqueryable<DataStockDetail>() + .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) + .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) + .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) + .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) + .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) + .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) + .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) + .Where(s => s.IsDel == "0" && s.SkuNo == a.SkuNo) + .Sum(s => s.LockQty), //閿佸畾鏁伴噺 + FrozenQty = SqlFunc.Subqueryable<DataStockDetail>() + .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) + .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) + .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) + .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) + .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) + .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) + .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) + .Where(s => s.IsDel == "0" && s.SkuNo == a.SkuNo) + .Sum(s => s.FrozenQty), //鍐荤粨鏁伴噺 + InspectQty = SqlFunc.Subqueryable<DataStockDetail>() + .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) + .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) + .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) + .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) + .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) + .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) + .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) + .Where(s => s.IsDel == "0" && s.SkuNo == a.SkuNo) + .Sum(s => s.InspectQty), //鍙娊妫�鏁伴噺 + }) + .ToListAsync(); - return StockListDto; + return modUser; + case "1": // 鎵规淇℃伅 + + modUser = await Db.Queryable<DataStock>() + .Where(a => a.IsDel == "0") + .GroupBy(a => new { a.LotNo, a.LotText }) + .Select(a => new MateDataStockDto() + { + LotNo = a.LotNo, //鎵规 + LotText = a.LotText, //鎵规鎻忚堪 + Qty = SqlFunc.Subqueryable<DataStockDetail>() + .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) + .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) + .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) + .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) + .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) + .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) + .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) + .Where(s => s.IsDel == "0" && s.LotNo == a.LotNo) + .Sum(s => s.Qty), //搴撳瓨鏁伴噺 + LockQty = SqlFunc.Subqueryable<DataStockDetail>() + .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) + .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) + .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) + .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) + .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) + .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) + .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) + .Where(s => s.IsDel == "0" && s.LotNo == a.LotNo) + .Sum(s => s.LockQty), //閿佸畾鏁伴噺 + FrozenQty = SqlFunc.Subqueryable<DataStockDetail>() + .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) + .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) + .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) + .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) + .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) + .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) + .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) + .Where(s => s.IsDel == "0" && s.LotNo == a.LotNo) + .Sum(s => s.FrozenQty), //鍐荤粨鏁伴噺 + InspectQty = SqlFunc.Subqueryable<DataStockDetail>() + .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) + .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) + .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) + .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) + .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) + .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) + .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) + .Where(s => s.IsDel == "0" && s.LotNo == a.LotNo) + .Sum(s => s.InspectQty), //鍙娊妫�鏁伴噺 + }) + .ToListAsync(); + + return modUser; + case "2": // 璐ㄦ淇℃伅 + modUser = await Db.Queryable<DataStock>() + .LeftJoin<DataStockDetail>((a, b) => a.LotNo == b.LotNo) + .WhereIF(!string.IsNullOrEmpty(skuNo), a => a.SkuNo == skuNo) + .WhereIF(!string.IsNullOrEmpty(skuName), a => a.SkuName == skuName) + .WhereIF(!string.IsNullOrEmpty(ownerNo), a => a.OwnerNo == ownerNo) + .WhereIF(!string.IsNullOrEmpty(ownerName), a => a.OwnerName == ownerName) + .WhereIF(!string.IsNullOrEmpty(lotNo), a => a.LotNo == lotNo) + .WhereIF(!string.IsNullOrEmpty(status), (a, b) => b.Status == status) + .WhereIF(!string.IsNullOrEmpty(inspectStatus), (a, b) => b.InspectStatus == inspectStatus) + .Where(a => a.IsDel == "0") + .GroupBy((a, b) => b.InspectStatus) + .Select((a, b) => new MateDataStockDto() + { + InspectStatus = b.InspectStatus, //璐ㄦ鐘舵�� + Qty = SqlFunc.AggregateSum(b.Qty), //搴撳瓨鏁伴噺 + LockQty = SqlFunc.AggregateSum(b.LockQty), //閿佸畾鏁伴噺 + FrozenQty = SqlFunc.AggregateSum(b.FrozenQty), //鍐荤粨鏁伴噺 + InspectQty = SqlFunc.AggregateSum(b.InspectQty), //鍙娊妫�鏁伴噺 + }) + .ToListAsync(); + + return modUser; + case "3": // 璐т富淇℃伅 + + modUser = await Db.Queryable<DataStock>() + .Where(a => a.IsDel == "0") + .GroupBy(a => new { a.OwnerNo, a.OwnerName }) + .Select(a => new MateDataStockDto() + { + OwnerNo = a.OwnerNo, //璐т富缂栫爜 + OwnerName = a.OwnerName, //璐т富鍚嶇О + Qty = SqlFunc.Subqueryable<DataStockDetail>() + .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) + .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) + .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) + .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) + .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) + .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) + .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) + .Where(s => s.IsDel == "0" && s.OwnerNo == a.OwnerNo) + .Sum(s => s.Qty), //搴撳瓨鏁伴噺 + LockQty = SqlFunc.Subqueryable<DataStockDetail>() + .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) + .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) + .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) + .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) + .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) + .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) + .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) + .Where(s => s.IsDel == "0" && s.OwnerNo == a.OwnerNo) + .Sum(s => s.LockQty), //閿佸畾鏁伴噺 + FrozenQty = SqlFunc.Subqueryable<DataStockDetail>() + .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) + .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) + .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) + .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) + .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) + .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) + .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) + .Where(s => s.IsDel == "0" && s.OwnerNo == a.OwnerNo) + .Sum(s => s.FrozenQty), //鍐荤粨鏁伴噺 + InspectQty = SqlFunc.Subqueryable<DataStockDetail>() + .WhereIF(!string.IsNullOrEmpty(skuNo), s => s.SkuNo == skuNo) + .WhereIF(!string.IsNullOrEmpty(skuName), s => s.SkuName == skuName) + .WhereIF(!string.IsNullOrEmpty(ownerNo), s => s.OwnerNo == ownerNo) + .WhereIF(!string.IsNullOrEmpty(ownerName), s => s.OwnerName == ownerName) + .WhereIF(!string.IsNullOrEmpty(lotNo), s => s.LotNo == lotNo) + .WhereIF(!string.IsNullOrEmpty(status), s => s.Status == status) + .WhereIF(!string.IsNullOrEmpty(inspectStatus), s => s.InspectStatus == inspectStatus) + .Where(s => s.IsDel == "0" && s.OwnerNo == a.OwnerNo) + .Sum(s => s.InspectQty), //鍙娊妫�鏁伴噺 + }) + .ToListAsync(); + return modUser; + default: + break; + } + + return modUser; + } } /// <summary> @@ -837,9 +1003,9 @@ //鍒ゆ柇鐗╂枡鏄惁鐩稿悓 if (dto.SkuNo == item.SkuNo) { - dto.Qty = (Convert.ToInt32(dto.Qty) + Convert.ToInt32(item.Qty)).ToString(); - dto.FrozenQty = (Convert.ToInt32(dto.FrozenQty) + Convert.ToInt32(item.FrozenQty)).ToString(); - dto.LockQty = (Convert.ToInt32(dto.LockQty) + Convert.ToInt32(item.LockQty)).ToString(); + dto.Qty = Convert.ToInt32(dto.Qty) + Convert.ToInt32(item.Qty); + dto.FrozenQty = Convert.ToInt32(dto.FrozenQty) + Convert.ToInt32(item.FrozenQty); + dto.LockQty = Convert.ToInt32(dto.LockQty) + Convert.ToInt32(item.LockQty); dto.ResidueQty = (Convert.ToInt32(dto.ResidueQty) + Convert.ToInt32(item.ResidueQty)).ToString(); break; } diff --git a/Wms/WMS.BLL/Logic/AllotSku.cs b/Wms/WMS.BLL/Logic/AllotSku.cs index a995732..50235b8 100644 --- a/Wms/WMS.BLL/Logic/AllotSku.cs +++ b/Wms/WMS.BLL/Logic/AllotSku.cs @@ -20,8 +20,10 @@ /// <param name="fullPalletQty">婊℃墭鏁伴噺</param> /// <param name="fullBoxQty">婊$鏁伴噺</param> /// <param name="stockQtyDic">鎵樺嚭搴撶墿鍝佹暟 key:搴撳瓨鎵樼洏琛ㄧ殑ID銆乿al:鎵樼洏涓婄殑鏁伴噺</param> + /// <param name="lotNo">鎵规</param> + /// <param name="isMixBox">鏄惁鎺ュ彈鎷肩 0锛氬惁 1锛氭槸</param> /// <returns></returns> - public decimal AllotPallets(List<DataStockDetail> palletList, decimal needQty, int fullPalletQty, int fullBoxQty, Dictionary<int, decimal> stockQtyDic) + public decimal AllotPallets(List<DataStockDetail> palletList, decimal needQty, int fullPalletQty, int fullBoxQty, Dictionary<int, decimal> stockQtyDic,string lotNo,string isMixBox) { //浼樺厛鍏堣繘鍏堝嚭锛堝揩杩囨湡鐨勫厛鍑猴級 //浼樺厛闆剁銆侀浂鎵橈紙鍑哄畬闆剁鍑烘暣绠憋級 @@ -84,8 +86,6 @@ { var ztNum = needQty / fullPalletQty;//闇�瑕佹暣鎵樻暟 - - var zps = list.Where(s => s.Qty >= fullPalletQty).ToList();//鏁存墭 var sps = list.Where(s => s.Qty < fullPalletQty).ToList();//鏁f墭(鏈夊彲鑳芥槸琚攣瀹氫簡鏁伴噺鐨�) @@ -96,7 +96,14 @@ //鏁f墭 foreach (var s in st) { - var detailQty = decimal.Parse((s.Qty - s.LockQty - s.FrozenQty).ToString()); + decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲� + //涓嶆帴鍙楁嫾绠� + if (isMixBox == "0") + { + //鏌ユ壘鍑烘贩绠遍泦鍚� + otherLotQty = GetMixBoxQty(s.Id, lotNo); + } + var detailQty = decimal.Parse((s.Qty - s.LockQty - s.FrozenQty - otherLotQty).ToString()); if (needQty - qty < detailQty) { var num = needQty - qty; @@ -119,7 +126,14 @@ var zt = zps.OrderBy(s => s.ExpirationTime).ToList();//鎵�鏈夋湭浣跨敤鐨勬墭鐩橈紙鏈鍒嗛厤鐨勶級 foreach (var ss in zt) { - var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); + decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲� + //涓嶆帴鍙楁嫾绠� + if (isMixBox == "0") + { + //鏌ユ壘鍑烘贩绠遍泦鍚� + otherLotQty = GetMixBoxQty(ss.Id, lotNo); + } + var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString()); if (needQty - qty < detailQty) { var num = needQty - qty; @@ -135,10 +149,7 @@ break; } } - - } - } else if (allotSet == 1)//浼樺厛鏁存墭锛堝垎閰嶅悎閫傜殑鏁存墭鏁伴噺锛� { @@ -153,7 +164,14 @@ var zt = zps.OrderBy(s => s.ExpirationTime).ToList();//鎵�鏈夋湭浣跨敤鐨勬墭鐩橈紙鏈鍒嗛厤鐨勶級 foreach (var ss in zt) { - var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); + decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲� + //涓嶆帴鍙楁嫾绠� + if (isMixBox == "0") + { + //鏌ユ壘鍑烘贩绠遍泦鍚� + otherLotQty = GetMixBoxQty(ss.Id, lotNo); + } + var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString()); if (needQty - qty < detailQty) { break; @@ -174,7 +192,14 @@ foreach (var ss in zt) { - var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); + decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲� + //涓嶆帴鍙楁嫾绠� + if (isMixBox == "0") + { + //鏌ユ壘鍑烘贩绠遍泦鍚� + otherLotQty = GetMixBoxQty(ss.Id, lotNo); + } + var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString()); if (needQty - qty < detailQty) { var num = needQty - qty; @@ -197,7 +222,14 @@ var zt = zps.Where(s => !sIds.Contains(s.Id)).OrderBy(s => s.ExpirationTime).ThenBy(m => m.Qty - m.LockQty - m.FrozenQty).ToList();//鎵�鏈夋湭浣跨敤锛堟湭琚垎閰嶇殑锛� foreach (var ss in zt) { - var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); + decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲� + //涓嶆帴鍙楁嫾绠� + if (isMixBox == "0") + { + //鏌ユ壘鍑烘贩绠遍泦鍚� + otherLotQty = GetMixBoxQty(ss.Id, lotNo); + } + var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString()); if (needQty - qty < detailQty) { var num = needQty - qty; @@ -213,7 +245,6 @@ } } } - } } @@ -230,6 +261,28 @@ } } + /// <summary> + /// 鏌ユ壘鍑烘贩绠变腑鍏朵粬鎵规鎬绘暟閲� + /// </summary> + /// <param name="stockDetailId"></param> + /// <param name="lotNo"></param> + /// <returns></returns> + private decimal GetMixBoxQty(int stockDetailId,string lotNo) + { + var contextDb = DataContext.Db; + //鏌ユ壘鍑烘贩绠遍泦鍚� + List<string> mixBoxList = contextDb.Queryable<DataBoxInfo>() + .Where(w => w.IsDel == "0" && w.StockDetailId == stockDetailId) + .GroupBy(g => g.LotNo) + .Having(h => SqlFunc.AggregateCount(h.LotNo) > 1) + .Select(s => s.BoxNo).ToList(); + + decimal otherLotQty = contextDb.Queryable<DataBoxInfo>() + .Where(w => w.IsDel == "0" && w.StockDetailId == stockDetailId && mixBoxList.Contains(w.BoxNo) && w.LotNo != lotNo) + .Sum(s => s.Qty); + + return otherLotQty; + } /// <summary> /// JC23棰嗘枡鍑哄簱鍒嗛厤璐х墿锛堝垎閰嶆墭鐩樹笂鍏ㄩ儴鐗╂枡锛岄槻姝㈠洓妤间笉鍚屾姇鏂欏彛鍒嗛厤鍚屼竴鎵樼洏鐗╂枡鍐茬獊锛� diff --git a/Wms/WMS.IBLL/IDataServer/IStockServer.cs b/Wms/WMS.IBLL/IDataServer/IStockServer.cs index 5b0fd9d..6434ade 100644 --- a/Wms/WMS.IBLL/IDataServer/IStockServer.cs +++ b/Wms/WMS.IBLL/IDataServer/IStockServer.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Text; +using System.Threading.Tasks; using WMS.Entity.DataEntity; using WMS.Entity.SysEntity; @@ -14,10 +15,16 @@ /// <summary> /// 鏌ヨ搴撳瓨鎬婚噺 /// </summary> + /// <param name="selectType">鏌ヨ绫诲瀷</param> /// <param name="skuNo">鐗╂枡缂栫爜</param> /// <param name="skuName">鐗╂枡鍚嶇О</param> + /// <param name="ownerNo">璐т富缂栫爜</param> + /// <param name="ownerName">璐т富鍚嶇О</param> + /// <param name="lotNo">鎵规</param> + /// <param name="status">搴撳瓨鐘舵��</param> + /// <param name="inspectStatus">璐ㄦ鐘舵��</param> /// <returns></returns> - List<MateDataStockDto> GetDataStockList(string skuNo, string skuName, string ownerNo, string ownerName, string lotNo); + Task<List<MateDataStockDto>> GetDataStockList(string selectType, string skuNo, string skuName, string ownerNo, string ownerName, string lotNo, string status, string inspectStatus); /// <summary> /// 鑾峰彇搴撳瓨鏄庣粏 diff --git a/Wms/Wms/Controllers/StatisticalController.cs b/Wms/Wms/Controllers/StatisticalController.cs index 8a87f0e..13f01ae 100644 --- a/Wms/Wms/Controllers/StatisticalController.cs +++ b/Wms/Wms/Controllers/StatisticalController.cs @@ -6,6 +6,7 @@ using WMS.Entity.DataEntity; using WMS.IBLL.IDataServer; using System.Security.Claims; +using System.Threading.Tasks; namespace Wms.Controllers { @@ -40,13 +41,19 @@ /// <summary> /// 鑾峰彇搴撳瓨鎬婚噺 /// </summary> - /// <param name="skuNo"></param> - /// <param name="skuName"></param> + /// <param name="selectType">鏌ヨ绫诲瀷</param> + /// <param name="skuNo">鐗╂枡缂栫爜</param> + /// <param name="skuName">鐗╂枡鍚嶇О</param> + /// <param name="ownerNo">璐т富缂栫爜</param> + /// <param name="ownerName">璐т富鍚嶇О</param> + /// <param name="lotNo">鎵规</param> + /// <param name="status">搴撳瓨鐘舵��</param> + /// <param name="inspectStatus">璐ㄦ鐘舵��</param> /// <returns></returns> [HttpGet] - public IActionResult GetInventoryList(string skuNo, string skuName, string ownerNo, string ownerName, string lotNo) + public async Task<IActionResult> GetInventoryList(string selectType, string skuNo, string skuName, string ownerNo, string ownerName, string lotNo, string status, string inspectStatus) { - List<MateDataStockDto> StockList = _stock.GetDataStockList(skuNo, skuName, ownerNo, ownerName, lotNo); + List<MateDataStockDto> StockList = await _stock.GetDataStockList(selectType, skuNo, skuName, ownerNo, ownerName, lotNo, status, inspectStatus); return Ok(new { data = StockList, @@ -68,9 +75,9 @@ /// <param name="inspectStatus">璐ㄦ鐘舵��</param> /// <returns></returns> [HttpGet] - public IActionResult GetInventoryList1(string skuNo, string skuName, string lotNo, string locatNo, string palletNo, string status, string inspectStatus, string ownerNo, string ownerName,string startTime,string endTime) + public IActionResult GetInventoryList1(string skuNo, string skuName, string lotNo, string locatNo, string palletNo, string status, string inspectStatus, string ownerNo, string ownerName, string startTime, string endTime) { - List<StockDetailDto> stockDetailsList = _stock.GetInventoryList1(skuNo, skuName, lotNo, locatNo, palletNo, status, inspectStatus, ownerNo, ownerName, startTime,endTime); + List<StockDetailDto> stockDetailsList = _stock.GetInventoryList1(skuNo, skuName, lotNo, locatNo, palletNo, status, inspectStatus, ownerNo, ownerName, startTime, endTime); return Ok(new { data = stockDetailsList, @@ -98,7 +105,7 @@ /// <param name="inspectStatus">璐ㄩ噺鐘舵��</param> /// <returns></returns> [HttpGet] - public IActionResult GetBindList(string skuNo, string skuName, string palletNo, string lotNo, string boxNo, string status, string inspectMark, string bitPalletMark, string bitBoxMark, string inspectStatus, string ownerNo, string ownerName,string startTime,string endTIme) + public IActionResult GetBindList(string skuNo, string skuName, string palletNo, string lotNo, string boxNo, string status, string inspectMark, string bitPalletMark, string bitBoxMark, string inspectStatus, string ownerNo, string ownerName, string startTime, string endTIme) { try { @@ -341,7 +348,7 @@ /// <param name="inspectStatus">璐ㄦ鐘舵��</param> /// <returns></returns> [HttpGet] - public IActionResult GetInventoryList1DaoChu(string skuNo, string skuName, string lotNo, string locatNo, string palletNo, string status, string inspectStatus,string startTime,string endTime) + public IActionResult GetInventoryList1DaoChu(string skuNo, string skuName, string lotNo, string locatNo, string palletNo, string status, string inspectStatus, string startTime, string endTime) { List<StockDetailDto> stockDetailsList = _stock.GetInventoryList1DaoChu(skuNo, skuName, lotNo, locatNo, palletNo, status, inspectStatus, startTime, endTime); return Ok(new -- Gitblit v1.8.0