| | |
| | | <!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" href="../../layuiadmin/style/admin.css" media="all"> |
| | | <link rel="stylesheet" href="../../css/public.css" media="all"> |
| | | <style type="text/css"> |
| | | .layui-form-item .layui-inline { |
| | | margin-bottom: 1px; |
| | | margin-right: 1px; |
| | | } |
| | | |
| | | </style> |
| | | |
| | | <script> |
| | | // 这里是需要在页面渲染之前执行的代码 |
| | | document.addEventListener("DOMContentLoaded", function() { |
| | | //获取table默认显示数 |
| | | pageCntFirst(); |
| | | //判断是否开启table列表列宽调整功能。 |
| | | GetIsSetColW(); |
| | | }); |
| | | </script> |
| | | </head> |
| | | <body id="body"> |
| | | |
| | | <div class="layui-fluid" style="padding-bottom: 0;"> |
| | | <div class="layui-card"> |
| | | <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 zongdan" > |
| | | <label class="layui-form-label" style="width: 60px;">物料编码</label> |
| | | <div class="layui-input-inline" style="width: 170px; margin-right: 0px;"> |
| | | <input type="text" id="SkuNo" name="SkuNo" placeholder="物料编码" autocomplete="off" class="layui-input"> |
| | | </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;"> |
| | | <input type="text" id="SkuName" name="SkuName" placeholder="物料名称" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <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="LotNo" name="LotNo" placeholder="批次号" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <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="PalletNo" name="PalletNo" placeholder="托盘号" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <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" href="../../layuiadmin/style/admin.css" media="all"> |
| | | <link rel="stylesheet" href="../../css/public.css" media="all"> |
| | | <style type="text/css"> |
| | | .layui-form-item .layui-inline { |
| | | margin-bottom: 1px; |
| | | margin-right: 1px; |
| | | } |
| | | </style> |
| | | |
| | | <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" |
| | | placeholder="开始时间"> |
| | | </div> |
| | | </div> |
| | | <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="EndTime" class="layui-input" |
| | | placeholder="结束时间"> |
| | | </div> |
| | | </div> |
| | | <script> |
| | | // 这里是需要在页面渲染之前执行的代码 |
| | | document.addEventListener("DOMContentLoaded", function () { |
| | | //获取table默认显示数 |
| | | pageCntFirst(); |
| | | //判断是否开启table列表列宽调整功能。 |
| | | GetIsSetColW(); |
| | | }); |
| | | </script> |
| | | </head> |
| | | |
| | | <div class="layui-inline sousuo"> |
| | | <button class="layui-btn layui-btn-sm layuiadmin-btn-list" lay-submit lay-filter="LAY-app-contlist-search"> |
| | | <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>搜索 |
| | | </button> |
| | | <button class="layui-btn layui-btn-sm layuiadmin-btn-list" lay-submit |
| | | lay-filter="daochu"> |
| | | <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>导出 |
| | | </button> |
| | | <body id="body"> |
| | | |
| | | <div class="layui-fluid" style="padding-bottom: 0;"> |
| | | <div class="layui-card"> |
| | | <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 zongdan"> |
| | | <label class="layui-form-label" style="width: 60px;">物料编码</label> |
| | | <div class="layui-input-inline" style="width: 170px; margin-right: 0px;"> |
| | | <input type="text" id="SkuNo" name="SkuNo" placeholder="物料编码" autocomplete="off" |
| | | class="layui-input"> |
| | | </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;"> |
| | | <input type="text" id="SkuName" name="SkuName" placeholder="物料名称" autocomplete="off" |
| | | class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <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="LotNo" name="LotNo" placeholder="批次号" autocomplete="off" |
| | | class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <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="PalletNo" name="PalletNo" placeholder="托盘号" autocomplete="off" |
| | | class="layui-input"> |
| | | </div> |
| | | </div> |
| | | |
| | | <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" placeholder="开始时间"> |
| | | </div> |
| | | </div> |
| | | <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="EndTime" class="layui-input" placeholder="结束时间"> |
| | | </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"> |
| | | <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>搜索 |
| | | </button> |
| | | <button class="layui-btn layui-btn-sm layuiadmin-btn-list" lay-submit lay-filter="daochu"> |
| | | <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>导出 |
| | | </button> |
| | | </div> |
| | | |
| | | |
| | | </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> |
| | | |
| | | <div id="center"></div> |
| | | |
| | | <div class="layui-tab-content"> |
| | | <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 自定义表头 --> |
| | | <div class="headerSetIcon"> |
| | | <button class="layui-btn layui-btn-primary layui-btn-sm" data-type="customCols"> |
| | | <i class="layui-icon"></i> |
| | | </button> |
| | | </div> |
| | | <!-- #endregion --> |
| | | <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 class="layui-tab-content"> |
| | | <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 自定义表头 --> |
| | | <div class="headerSetIcon"> |
| | | <button class="layui-btn layui-btn-primary layui-btn-sm" data-type="customCols"> |
| | | <i class="layui-icon"></i> |
| | | </button> |
| | | </div> |
| | | <!-- #endregion --> |
| | | </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 --> |
| | | </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"> |
| | | <!-- #region 自定义表头 --> |
| | | <script type="text/html" id="templetCompleteTime"> |
| | | {{# function GetBtn(d){ |
| | | return formatDate(d.CompleteTime); |
| | | } |
| | |
| | | {{ GetBtn(d) }} |
| | | </script> |
| | | |
| | | <script type="text/html" id="templetCCreateTime"> |
| | | <script type="text/html" id="templetCCreateTime"> |
| | | {{# function GetBtn1(d){ |
| | | return formatDate(d.CCreateTime); |
| | | } |
| | | }} |
| | | {{ GetBtn1(d) }} |
| | | </script> |
| | | <!-- #endregion --> |
| | | </div> |
| | | <!-- #endregion --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <script src="../../layuiadmin/layui/layui.js"></script> |
| | | <script src="../../js/public.js"></script> |
| | | <script src="../../js/jquery-3.5.1.min.js"></script> |
| | | <script src="../../js/jquery.cookie.js"></script> |
| | | <script> |
| | | var uid = $.cookie('userId'); |
| | | layui.config({ |
| | | base: '../../layuiadmin/' //静态资源所在路径 |
| | | }).extend({ |
| | | index: 'lib/index' //主入口模块 |
| | | }).use(['index', 'table', 'laypage', 'layer','element','laydate'], function() { |
| | | var table = layui.table, |
| | | form = layui.form, |
| | | laypage = layui.laypage, |
| | | layer = layui.layer; |
| | | element = layui.element; |
| | | laydate = layui.laydate; |
| | | <script src="../../layuiadmin/layui/layui.js"></script> |
| | | <script src="../../js/public.js"></script> |
| | | <script src="../../js/jquery-3.5.1.min.js"></script> |
| | | <script src="../../js/jquery.cookie.js"></script> |
| | | <script> |
| | | var uid = $.cookie('userId'); |
| | | layui.config({ |
| | | base: '../../layuiadmin/' //静态资源所在路径 |
| | | }).extend({ |
| | | index: 'lib/index' //主入口模块 |
| | | }).use(['index', 'table', 'laypage', 'layer', 'element', 'laydate'], function () { |
| | | var table = layui.table, |
| | | form = layui.form, |
| | | laypage = layui.laypage, |
| | | layer = layui.layer; |
| | | element = layui.element; |
| | | laydate = layui.laydate; |
| | | |
| | | var h1 = GetTableTabHeight(); |
| | | |
| | | laydate.render({ |
| | | elem: '#StartTime', |
| | | format: 'yyyy-MM-dd' //可任意组合 |
| | | }); |
| | | laydate.render({ |
| | | elem: '#EndTime', |
| | | format: 'yyyy-MM-dd' //可任意组合 |
| | | }); |
| | | //获取当前时间 |
| | | function getNowTime() { |
| | | var date = new Date(); |
| | | //年 getFullYear():四位数字返回年份 |
| | | var year = date.getFullYear(); //getFullYear()代替getYear() |
| | | //月 getMonth():0 ~ 11 |
| | | var month = date.getMonth() + 1; |
| | | //日 getDate():(1 ~ 31) |
| | | var day = date.getDate(); |
| | | //时 getHours():(0 ~ 23) |
| | | var hour = date.getHours(); |
| | | //分 getMinutes(): (0 ~ 59) |
| | | var minute = date.getMinutes(); |
| | | //秒 getSeconds():(0 ~ 59) |
| | | var second = date.getSeconds(); |
| | | |
| | | var time = year + addZero(month) + addZero(day) + addZero(hour) + addZero(minute) + addZero(second); |
| | | return time; |
| | | |
| | | //小于10的拼接上0字符串 |
| | | |
| | | }; |
| | | function addZero(s) { |
| | | return s < 10 ? ('0' + s) : s; |
| | | }; |
| | | |
| | | var myDate = new Date(); |
| | | console.log(myDate.getFullYear()+'-'+(myDate.getMonth() + 1)+'-'+myDate.getDate()+' 00:00:00') |
| | | myDate.getFullYear(); //获取完整的年份(4位,1970-????) |
| | | myDate.getMonth(); //获取当前月份(0-11,0代表1月) |
| | | myDate.getDate(); //获取当前日(1-31) |
| | | // 每日初始时间 |
| | | var chudate = myDate.getFullYear()+'-'+(myDate.getMonth() + 1)+'-'+myDate.getDate()+' 00:00:00' |
| | | var jiedate = myDate.getFullYear()+'-'+(myDate.getMonth() + 1)+'-'+myDate.getDate()+' 23:59:59' |
| | | var $ = layui.$; |
| | | var yemianid =0; |
| | | refreshTable("","","","",""); |
| | | var h1 = GetTableTabHeight(); |
| | | |
| | | // 表单需要的变量 |
| | | var infoOptions; |
| | | //#region 原始非自定义列 |
| | | // infoOptions = { |
| | | // elem: '#LAY-app-content-list', |
| | | // height: 'full-164', |
| | | // id: 'LAY-app-content-list', |
| | | // page: true, |
| | | // limit: pageCnt, |
| | | // limits: pageLimits, |
| | | // even: true, |
| | | // cellMinWidth: 80, //全局定义常规单元格的最小宽度,layui 2.2.1 新增 |
| | | // cols: |
| | | // [[ |
| | | // { |
| | | // title: '序号', type: 'numbers', fixed: 'left' |
| | | // }, |
| | | // { |
| | | // field: 'LotNo', title: '批次号', align: 'center', |
| | | // }, |
| | | // { |
| | | // field: 'SkuNo', title: '物料编码', align: 'center' |
| | | // }, |
| | | // { |
| | | // field: 'SkuName', title: '物料名称', align: 'center', |
| | | // }, |
| | | // { |
| | | // field: 'RQty', title: '入库数量', align: 'center' |
| | | // }, |
| | | // { |
| | | // field: 'RFactQty', title: '已组数量', align: 'center', |
| | | // }, |
| | | // { |
| | | // field: 'RCompleteQty', title: '完成数量', align: 'center' |
| | | // }, |
| | | // { |
| | | // field: 'CQty', title: '出库数量', align: 'center' |
| | | // }, |
| | | // { |
| | | // field: 'CAllotQty', title: '分配数量', align: 'center' |
| | | // }, |
| | | // { |
| | | // field: 'CFactQty', title: '下架数量', align: 'center', |
| | | // }, |
| | | // { |
| | | // field: 'CompleteQty', title: '拣货数量', align: 'center' |
| | | // }, |
| | | |
| | | // ]] |
| | | // }; |
| | | //#endregion |
| | | |
| | | laydate.render({ |
| | | elem: '#StartTime', |
| | | format: 'yyyy-MM-dd' //可任意组合 |
| | | }); |
| | | laydate.render({ |
| | | elem: '#EndTime', |
| | | format: 'yyyy-MM-dd' //可任意组合 |
| | | }); |
| | | //获取当前时间 |
| | | function getNowTime() { |
| | | var date = new Date(); |
| | | //年 getFullYear():四位数字返回年份 |
| | | var year = date.getFullYear(); //getFullYear()代替getYear() |
| | | //月 getMonth():0 ~ 11 |
| | | var month = date.getMonth() + 1; |
| | | //日 getDate():(1 ~ 31) |
| | | var day = date.getDate(); |
| | | //时 getHours():(0 ~ 23) |
| | | var hour = date.getHours(); |
| | | //分 getMinutes(): (0 ~ 59) |
| | | var minute = date.getMinutes(); |
| | | //秒 getSeconds():(0 ~ 59) |
| | | var second = date.getSeconds(); |
| | | |
| | | var time = year + addZero(month) + addZero(day) + addZero(hour) + addZero(minute) + addZero(second); |
| | | return time; |
| | | |
| | | //小于10的拼接上0字符串 |
| | | |
| | | }; |
| | | function addZero(s) { |
| | | return s < 10 ? ('0' + s) : s; |
| | | }; |
| | | |
| | | var myDate = new Date(); |
| | | console.log(myDate.getFullYear() + '-' + (myDate.getMonth() + 1) + '-' + myDate.getDate() + ' 00:00:00') |
| | | myDate.getFullYear(); //获取完整的年份(4位,1970-????) |
| | | myDate.getMonth(); //获取当前月份(0-11,0代表1月) |
| | | myDate.getDate(); //获取当前日(1-31) |
| | | // 每日初始时间 |
| | | var chudate = myDate.getFullYear() + '-' + (myDate.getMonth() + 1) + '-' + myDate.getDate() + ' 00:00:00' |
| | | var jiedate = myDate.getFullYear() + '-' + (myDate.getMonth() + 1) + '-' + myDate.getDate() + ' 23:59:59' |
| | | var $ = layui.$; |
| | | var yemianid = 0; |
| | | refreshTable("", "", "", "", ""); |
| | | |
| | | // 表单需要的变量 |
| | | var infoOptions; |
| | | //#region 自定义表头 |
| | | var TotalColsArr = [[ |
| | | { field: '', title: '序号', type: 'numbers', fixed: 'left', "disabled": true }, |
| | | { field: 'LotNo', title: '批次号', align: 'center' }, |
| | | { field: 'SkuNo', title: '物料编码', align: 'center' }, |
| | | { field: 'SkuName', title: '物料名称', align: 'center' }, |
| | | { field: 'RQty', title: '入库数量', align: 'center' }, |
| | | { field: 'RFactQty', title: '已组数量', align: 'center' }, |
| | | { field: 'RCompleteQty', title: '完成数量', align: 'center' }, |
| | | { field: 'CQty', title: '出库数量', align: 'center' }, |
| | | { field: 'CAllotQty', title: '分配数量', align: 'center' }, |
| | | { field: 'CFactQty', title: '下架数量', align: 'center' }, |
| | | { field: 'CompleteQty', title: '拣货数量', align: 'center' } |
| | | ]]; |
| | | var TotalColsSysArr = encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArr)))//将表头数据进行url编码 |
| | | //#endregion |
| | | //获取出入库总量 |
| | | function refreshTable(SkuNo, SkuName, LotNo, StartTime, EndTime) { |
| | | //#region 自定义表头 |
| | | var TotalColsArr = [[ |
| | | {field: '',title: '序号',type:'numbers',fixed: 'left', "disabled": true}, |
| | | {field: 'LotNo', title: '批次号', align: 'center'}, |
| | | {field: 'SkuNo', title: '物料编码', align: 'center'}, |
| | | {field: 'SkuName', title: '物料名称', align: 'center'}, |
| | | {field: 'RQty', title: '入库数量', align: 'center'}, |
| | | {field: 'RFactQty', title: '已组数量', align: 'center'}, |
| | | {field: 'RCompleteQty', title: '完成数量', align: 'center'}, |
| | | {field: 'CQty', title: '出库数量', align: 'center'}, |
| | | {field: 'CAllotQty', title: '分配数量', align: 'center'}, |
| | | {field: 'CFactQty', title: '下架数量', align: 'center'}, |
| | | {field: 'CompleteQty', title: '拣货数量', align: 'center'} |
| | | ]]; |
| | | var TotalColsSysArr=encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArr)))//将表头数据进行url编码 |
| | | //#endregion |
| | | //获取出入库总量 |
| | | function refreshTable(SkuNo,SkuName,LotNo,StartTime,EndTime) { |
| | | //#region 自定义表头 |
| | | var colsJson |
| | | var param1={ |
| | | Href:'Statistical/GetTotalRecord' |
| | | }; |
| | | sendData(IP + "/Sys/GetTableColsByUserId", param1, 'post', function(res) { |
| | | if (res.code == 0){ |
| | | if(res.data=='' || res.data==undefined || res.data==null){ |
| | | colsJson=TotalColsArr |
| | | }else{ |
| | | colsJson= eval(res.data); |
| | | } |
| | | }else{ |
| | | colsJson=TotalColsArr |
| | | var colsJson |
| | | var param1 = { |
| | | Href: 'Statistical/GetTotalRecord' |
| | | }; |
| | | sendData(IP + "/Sys/GetTableColsByUserId", param1, 'post', function (res) { |
| | | if (res.code == 0) { |
| | | if (res.data == '' || res.data == undefined || res.data == null) { |
| | | colsJson = TotalColsArr |
| | | } else { |
| | | colsJson = eval(res.data); |
| | | } |
| | | infoOptions = { |
| | | elem: '#LAY-app-content-list', |
| | | height: h1, |
| | | id: 'LAY-app-content-list', |
| | | page: true, |
| | | limit: pageCnt, |
| | | limits: pageLimits, |
| | | even: true, |
| | | cellMinWidth: 80, //全局定义常规单元格的最小宽度,layui 2.2.1 新增 |
| | | done: function(){ |
| | | //自定义列宽 |
| | | SetTableColW('LAY-app-content-list','Statistical/GetTotalRecord',TotalColsSysArr); |
| | | }, |
| | | cols:colsJson |
| | | }; |
| | | } else { |
| | | colsJson = TotalColsArr |
| | | } |
| | | infoOptions = { |
| | | elem: '#LAY-app-content-list', |
| | | height: h1, |
| | | id: 'LAY-app-content-list', |
| | | page: true, |
| | | limit: pageCnt, |
| | | limits: pageLimits, |
| | | even: true, |
| | | cellMinWidth: 80, //全局定义常规单元格的最小宽度,layui 2.2.1 新增 |
| | | done: function () { |
| | | //自定义列宽 |
| | | SetTableColW('LAY-app-content-list', 'Statistical/GetTotalRecord', TotalColsSysArr); |
| | | }, |
| | | cols: colsJson |
| | | }; |
| | | |
| | | var param = { |
| | | SkuNo: SkuNo, //物料号 |
| | | SkuName: SkuName, //物料名称 |
| | | LotNo: LotNo, //批次号 |
| | | StartTime: StartTime, //开始时间 |
| | | EndTime: EndTime, //结束时间 |
| | | //StartTime:StartTime?""=chudate:StartTime, //开始时间 |
| | | //EndTime:EndTime?""=jiedate:EndTime, //结束时间 |
| | | }; |
| | | // if(StartTime == "") |
| | | // { |
| | | // param.StartTime = chudate; |
| | | // } |
| | | // if(EndTime == "") |
| | | // { |
| | | // param.EndTime = jiedate; |
| | | // } |
| | | console.log(param) |
| | | //sendData(IP + "/Statistical/GetBindList?SkuNo="+$("#SkuNo").val()+"&&SkuName="+$("#SkuName").val()+"&&PalletNo="+$("#PalletNo").val()+"&&LotNo="+$("#LotNo").val()+"&&BoxNo="+$("#BoxNo").val()+"&&Status="+$("#Status").val()+"&&InspectMark="+$("#InspectMark").val()+"&&BitPalletMark="+$("#BitPalletMark").val()+"&&BitBoxMark="+$("#BitBoxMark").val()+"&&InspectStatus="+$("#InspectStatus").val(), {}, 'post', function(res) { |
| | | sendData(IP + "/Statistical/GetTotalRecord", param, 'get', function (res) { |
| | | console.log(res) |
| | | if (res.code == 0) { //成功 |
| | | var list = res.data; |
| | | $.extend(infoOptions, { |
| | | data: list |
| | | }); |
| | | infoOptions.page = { |
| | | curr: 1 |
| | | } |
| | | tableIns = table.render(infoOptions); |
| | | } |
| | | else { //不成功 |
| | | layer.msg('获取总量列表信息失败!', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { }); |
| | | } |
| | | }); |
| | | }); |
| | | //#endregion |
| | | |
| | | } |
| | | |
| | | // 表单需要的变量 |
| | | var infoOptions2; |
| | | |
| | | //获取明细信息 |
| | | //#region 自定义表头 |
| | | var DetailColsArr = [[ |
| | | { field: '', title: '序号', type: 'numbers', width: 70, fixed: 'left', "disabled": true }, |
| | | { field: 'ASNNo', title: '入库单号', align: 'center', width: 100 }, |
| | | { field: 'SONo', title: '出库单号', align: 'center', width: 100 }, |
| | | { field: 'LotNo', title: '批次号', align: 'center', width: 100 }, |
| | | { field: 'SupplierLot', title: '供货批次', align: 'center', width: 100 }, |
| | | { field: 'SkuNo', title: '物料编码', align: 'center', width: 100 }, |
| | | { field: 'SkuName', title: '物料名称', align: 'center', width: 100 }, |
| | | { field: 'PalletNo', title: '托盘号', align: 'center', width: 100 }, |
| | | { field: 'LotText', title: '批次描述', align: 'center', width: 100 }, |
| | | { field: 'CompleteTime', title: '入库时间', align: 'center', width: 160, templet: '#templetCompleteTime' }, |
| | | { field: 'RQty', title: '入库数量', align: 'center', width: 100 }, |
| | | { field: 'RFactQty', title: '已组数量', align: 'center' }, |
| | | { field: 'RCompleteQty', title: '完成数量', align: 'center', width: 100 }, |
| | | { field: 'CCreateTime', title: '拣货时间', align: 'center', width: 160, templet: '#templetCCreateTime' }, |
| | | { field: 'CQty', title: '出库数量', align: 'center', width: 100 }, |
| | | { field: 'CAllotQty', title: '分配数量', align: 'center', width: 100 }, |
| | | { field: 'CFactQty', title: '下架数量', align: 'center', width: 100 }, |
| | | { field: 'CompleteQty', title: '拣货数量', align: 'center', width: 100 }, |
| | | ]]; |
| | | var DetailColsSysArr = encodeURIComponent(encodeURIComponent(JSON.stringify(DetailColsArr)))//将表头数据进行url编码 |
| | | //#endregion |
| | | function refreshTable2(SkuNo, SkuName, LotNo, PalletNo, StartTime, EndTime) { |
| | | //#region 自定义表头 |
| | | var colsJson2 |
| | | var param1 = { |
| | | Href: 'Statistical/GetDetailedRecord' |
| | | }; |
| | | 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/GetDetailedRecord', DetailColsSysArr); |
| | | }, |
| | | cols: colsJson2 |
| | | }; |
| | | |
| | | var param = { |
| | | SkuNo: SkuNo, |
| | | SkuName: SkuName, |
| | | LotNo: LotNo, |
| | | PalletNo: PalletNo, |
| | | StartTime: StartTime, |
| | | EndTime: EndTime |
| | | } |
| | | //sendData(IP + "/Statistical/GetBoxInfor?Id="+Id+"&&SkuNo="+$("#SkuNo").val()+"&&SkuName="+$("#SkuName").val()+"&&PalletNo="+$("#PalletNo").val()+"&&LotNo="+$("#LotNo").val()+"&&BoxNo="+$("#BoxNo").val()+"&&Status="+$("#Status").val()+"&&InspectMark="+$("#InspectMark").val()+"&&BitBoxMark="+$("#BitBoxMark").val()+"&&InspectStatus="+$("#InspectStatus").val(), {}, 'get', function(res) { |
| | | sendData(IP + "/Statistical/GetDetailedRecord", param, 'get', function (res) { |
| | | console.log(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 quanlotno = ''; |
| | | let quanskuno = ''; |
| | | let quanskuname = ''; |
| | | //监听搜索 |
| | | form.on('submit(LAY-app-contlist-search)', function (data) { |
| | | var SkuNo = $("#SkuNo").val(); |
| | | var SkuName = $("#SkuName").val(); |
| | | var LotNo = $("#LotNo").val(); |
| | | var StartTime = $("#StartTime").val(); |
| | | var EndTime = $("#EndTime").val(); |
| | | var PalletNo = $("#PalletNo").val(); |
| | | |
| | | |
| | | if (yemianid == 0) { |
| | | console.log("总单"); |
| | | refreshTable(SkuNo, SkuName, LotNo, StartTime, EndTime); |
| | | } else if (yemianid == 1) { |
| | | quanlotno = ''; |
| | | quanskuno = ''; |
| | | quanskuname = ''; |
| | | console.log("明细"); |
| | | refreshTable2(quanskuno, quanskuname, quanlotno, PalletNo, StartTime, EndTime); |
| | | } |
| | | |
| | | }); |
| | | //触发行双击事件 |
| | | 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.data); |
| | | quanlotno = obj.data.LotNo; |
| | | quanskuno = obj.data.SkuNo; |
| | | quanskuname = obj.data.SkuName; |
| | | refreshTable2(obj.data.SkuNo, obj.data.SkuName, obj.data.LotNo, "", "", ""); |
| | | yemianid = 1; |
| | | }); |
| | | |
| | | //监听Tab切换,以改变地址hash值 |
| | | element.on('tab(docDemoTabBrief)', function (data) { |
| | | console.log(data.index); |
| | | yemianid = data.index |
| | | if (yemianid == 0) { |
| | | console.log("总单"); |
| | | refreshTable("", "", "", "", ""); |
| | | } else if (yemianid == 1) { |
| | | console.log("明细"); |
| | | refreshTable2(quanskuno, quanskuname, quanlotno, "", "", ""); |
| | | } |
| | | }); |
| | | var doing = true; |
| | | // ------------------------------------详情--------------------------------------------------- |
| | | table.on('tool(LAY-app-content-list2)', function (obj) { |
| | | console.log(obj) |
| | | var data = obj.data; |
| | | //详情 |
| | | if (obj.event === 'edit') { |
| | | BoxNo = data.BoxNo; |
| | | console.log(data) |
| | | layer.open({ |
| | | type: 2, |
| | | title: '箱支详情信息', |
| | | content: 'BoxSupportInfor.html?BoxNo=' + BoxNo, |
| | | maxmin: true, |
| | | area: ['80%', '85%'], |
| | | btn: ['关闭'], |
| | | yes: function (index, layero) { |
| | | var iframeWindow = window['layui-layer-iframe' + index], |
| | | submitID = 'layuiadmin-app-form-edit', |
| | | submit = layero.find('iframe').contents().find('#' + submitID); |
| | | if (doing) { |
| | | doing = false; |
| | | |
| | | layer.close(index); //关闭弹层 |
| | | refreshTable(); |
| | | doing = true; |
| | | |
| | | |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | form.on('submit(daochu)', function () { |
| | | layer.confirm('确定导出当前数据吗?', function (index) { |
| | | if (yemianid == 0) { |
| | | //console.log("总单"); |
| | | var param = { |
| | | SkuNo:SkuNo, //物料号 |
| | | SkuName:SkuName, //物料名称 |
| | | LotNo:LotNo, //批次号 |
| | | StartTime:StartTime, //开始时间 |
| | | EndTime:EndTime, //结束时间 |
| | | //StartTime:StartTime?""=chudate:StartTime, //开始时间 |
| | | //EndTime:EndTime?""=jiedate:EndTime, //结束时间 |
| | | SkuNo: $("#SkuNo").val(), |
| | | SkuName: $("#SkuName").val(), |
| | | LotNo: $("#LotNo").val(), |
| | | StartTime: $("#StartTime").val(), |
| | | EndTime: $("#EndTime").val(), |
| | | }; |
| | | // if(StartTime == "") |
| | | // { |
| | | // param.StartTime = chudate; |
| | | // } |
| | | // if(EndTime == "") |
| | | // { |
| | | // param.EndTime = jiedate; |
| | | // } |
| | | console.log(param) |
| | | //sendData(IP + "/Statistical/GetBindList?SkuNo="+$("#SkuNo").val()+"&&SkuName="+$("#SkuName").val()+"&&PalletNo="+$("#PalletNo").val()+"&&LotNo="+$("#LotNo").val()+"&&BoxNo="+$("#BoxNo").val()+"&&Status="+$("#Status").val()+"&&InspectMark="+$("#InspectMark").val()+"&&BitPalletMark="+$("#BitPalletMark").val()+"&&BitBoxMark="+$("#BitBoxMark").val()+"&&InspectStatus="+$("#InspectStatus").val(), {}, 'post', function(res) { |
| | | sendData(IP + "/Statistical/GetTotalRecord", param, 'get', function(res) { |
| | | console.log(res) |
| | | sendData(IP + "/Statistical/GetTotalRecord", param, 'get', function (res) { |
| | | //console.log(res); |
| | | if (res.code == 0) { //成功 |
| | | var list = res.data; |
| | | $.extend(infoOptions, { |
| | | data: list |
| | | table.exportFile(tableIns.config.id, list, 'xls', "出入库报表总表" + getNowTime(),); //data 为该实例中的任意数量的数据 |
| | | layer.msg('导出成功!', { |
| | | icon: 1, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { |
| | | |
| | | }); |
| | | infoOptions.page = { |
| | | curr: 1 |
| | | } |
| | | tableIns = table.render(infoOptions); |
| | | } |
| | | else { //不成功 |
| | | layer.msg('获取总量列表信息失败!', { |
| | | |
| | | } else { //不成功 |
| | | layer.msg('获取信息失败!', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function() {}); |
| | | }, function () { }); |
| | | } |
| | | }); |
| | | }); |
| | | //#endregion |
| | | |
| | | } |
| | | |
| | | // 表单需要的变量 |
| | | var infoOptions2; |
| | | //#region 原始非自定义列 |
| | | // infoOptions2 = { |
| | | // elem: '#LAY-app-content-list2', |
| | | // height: 'full-164', |
| | | // id: 'LAY-app-content-list2', |
| | | // page: true, |
| | | // limit: pageCnt, |
| | | // limits: pageLimits, |
| | | // even: true, |
| | | // cellMinWidth: 80, //全局定义常规单元格的最小宽度,layui 2.2.1 新增 |
| | | // cols: |
| | | // [[ |
| | | // { |
| | | // title: '序号', type: 'numbers', fixed: 'left', width: 70 |
| | | // }, |
| | | // { |
| | | // field: 'ASNNo', title: '入库单号', align: 'center', width: 100 |
| | | // }, |
| | | // { |
| | | // field: 'SONo', title: '出库单号', align: 'center', width: 100 |
| | | // }, |
| | | // { |
| | | // field: 'LotNo', title: '批次号', align: 'center', width: 100 |
| | | // }, |
| | | // { |
| | | // field: 'SupplierLot', title: '供货批次', align: 'center', width: 100 |
| | | // }, |
| | | // { |
| | | // field: 'SkuNo', title: '物料编码', align: 'center', width: 100 |
| | | // }, |
| | | // { |
| | | // field: 'SkuName', title: '物料名称', align: 'center', width: 100 |
| | | // }, |
| | | // { |
| | | // field: 'PalletNo', title: '托盘号', align: 'center', width: 100 |
| | | // }, |
| | | // { |
| | | // field: 'LotText', title: '批次描述', align: 'center', width: 100 |
| | | // }, |
| | | // { |
| | | // field: 'CompleteTime', title: '入库时间', align: 'center', width: 160, |
| | | // templet: function(d) { |
| | | // return formatDate(d.CompleteTime); |
| | | // }, |
| | | // }, |
| | | // { |
| | | // field: 'RQty', title: '入库数量', align: 'center', width: 100 |
| | | // }, |
| | | // { |
| | | // field: 'RFactQty', title: '已组数量', align: 'center', |
| | | // }, |
| | | // { |
| | | // field: 'RCompleteQty', title: '完成数量', align: 'center', width: 100 |
| | | // }, |
| | | // { |
| | | // field: 'CCreateTime', title: '拣货时间', align: 'center',width: 160, |
| | | // templet: function(d) { |
| | | // return formatDate(d.CCreateTime); |
| | | // }, |
| | | // }, |
| | | // { |
| | | // field: 'CQty', title: '出库数量', align: 'center', width: 100 |
| | | // }, |
| | | // { |
| | | // field: 'CAllotQty', title: '分配数量', align: 'center', width: 100 |
| | | // }, |
| | | // { |
| | | // field: 'CFactQty', title: '下架数量', align: 'center', width: 100 |
| | | // }, |
| | | // { |
| | | // field: 'CompleteQty', title: '拣货数量', align: 'center', width: 100 |
| | | // }, |
| | | // ]] |
| | | // }; |
| | | //#endregion |
| | | |
| | | //获取明细信息 |
| | | //#region 自定义表头 |
| | | var DetailColsArr = [[ |
| | | {field: '',title: '序号',type:'numbers',width: 70,fixed: 'left', "disabled": true}, |
| | | {field: 'ASNNo', title: '入库单号', align: 'center', width: 100}, |
| | | {field: 'SONo', title: '出库单号', align: 'center', width: 100}, |
| | | {field: 'LotNo', title: '批次号', align: 'center', width: 100}, |
| | | {field: 'SupplierLot', title: '供货批次', align: 'center', width: 100}, |
| | | {field: 'SkuNo', title: '物料编码', align: 'center', width: 100}, |
| | | {field: 'SkuName', title: '物料名称', align: 'center', width: 100}, |
| | | {field: 'PalletNo', title: '托盘号', align: 'center', width: 100}, |
| | | {field: 'LotText', title: '批次描述', align: 'center', width: 100}, |
| | | {field: 'CompleteTime', title: '入库时间', align: 'center', width: 160,templet: '#templetCompleteTime'}, |
| | | {field: 'RQty', title: '入库数量', align: 'center', width: 100}, |
| | | {field: 'RFactQty', title: '已组数量', align: 'center'}, |
| | | {field: 'RCompleteQty', title: '完成数量', align: 'center', width: 100}, |
| | | {field: 'CCreateTime', title: '拣货时间', align: 'center',width: 160,templet: '#templetCCreateTime'}, |
| | | {field: 'CQty', title: '出库数量', align: 'center', width: 100}, |
| | | {field: 'CAllotQty', title: '分配数量', align: 'center', width: 100}, |
| | | {field: 'CFactQty', title: '下架数量', align: 'center', width: 100}, |
| | | {field: 'CompleteQty', title: '拣货数量', align: 'center', width: 100}, |
| | | ]]; |
| | | var DetailColsSysArr=encodeURIComponent(encodeURIComponent(JSON.stringify(DetailColsArr)))//将表头数据进行url编码 |
| | | //#endregion |
| | | function refreshTable2(SkuNo,SkuName,LotNo,PalletNo,StartTime,EndTime) { |
| | | //#region 自定义表头 |
| | | var colsJson2 |
| | | var param1={ |
| | | Href:'Statistical/GetDetailedRecord' |
| | | }; |
| | | 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/GetDetailedRecord',DetailColsSysArr); |
| | | }, |
| | | cols:colsJson2 |
| | | }; |
| | | |
| | | } else if (yemianid == 1) { |
| | | //console.log("记录"); |
| | | var param = { |
| | | SkuNo:SkuNo, |
| | | SkuName:SkuName, |
| | | LotNo:LotNo, |
| | | PalletNo:PalletNo, |
| | | StartTime:StartTime, |
| | | EndTime:EndTime |
| | | } |
| | | //sendData(IP + "/Statistical/GetBoxInfor?Id="+Id+"&&SkuNo="+$("#SkuNo").val()+"&&SkuName="+$("#SkuName").val()+"&&PalletNo="+$("#PalletNo").val()+"&&LotNo="+$("#LotNo").val()+"&&BoxNo="+$("#BoxNo").val()+"&&Status="+$("#Status").val()+"&&InspectMark="+$("#InspectMark").val()+"&&BitBoxMark="+$("#BitBoxMark").val()+"&&InspectStatus="+$("#InspectStatus").val(), {}, 'get', function(res) { |
| | | sendData(IP + "/Statistical/GetDetailedRecord", param, 'get', function(res) { |
| | | console.log(res) |
| | | if (res.code == 0) //成功 |
| | | { |
| | | var list = res.data; |
| | | $.extend(infoOptions2, { |
| | | data: list |
| | | skuNo: quanskuno, |
| | | SkuName: $("#SkuName").val(), |
| | | LotNo: $("#LotNo").val(), |
| | | PalletNo: $("#PalletNo").val(), |
| | | StartTime: $("#StartTime").val(), |
| | | EndTime: $("#EndTime").val(), |
| | | |
| | | }; |
| | | sendData(IP + "/Statistical/GetDetailedRecord", param, 'get', function (res) { |
| | | //console.log(res); |
| | | if (res.code == 0) { //成功 |
| | | var list = res.data; 7 |
| | | table.exportFile(tableIns2.config.id, list, 'xls', "出入库报表明细" + getNowTime(),); //data 为该实例中的任意数量的数据 |
| | | layer.msg('导出成功!', { |
| | | icon: 1, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { |
| | | |
| | | }); |
| | | infoOptions2.page = { |
| | | curr: 1 |
| | | } |
| | | tableIns2 = table.render(infoOptions2); |
| | | } |
| | | else //不成功 |
| | | { |
| | | layer.msg('获取明细列表信息失败!', { |
| | | |
| | | } else { //不成功 |
| | | layer.msg('获取信息失败!', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function() {}); |
| | | } |
| | | }) |
| | | }); |
| | | //#endregion |
| | | } |
| | | |
| | | //var url = IP + "/Statistical/GetInventoryList1"; |
| | | |
| | | |
| | | |
| | | //接受全局变量 |
| | | let quanlotno = ''; |
| | | let quanskuno = ''; |
| | | let quanskuname = ''; |
| | | //监听搜索 |
| | | form.on('submit(LAY-app-contlist-search)', function(data) { |
| | | var SkuNo = $("#SkuNo").val(); |
| | | var SkuName = $("#SkuName").val(); |
| | | var LotNo = $("#LotNo").val(); |
| | | var StartTime = $("#StartTime").val(); |
| | | var EndTime = $("#EndTime").val(); |
| | | var PalletNo = $("#PalletNo").val(); |
| | | |
| | | |
| | | if(yemianid == 0){ |
| | | console.log("总单"); |
| | | refreshTable(SkuNo,SkuName,LotNo,StartTime,EndTime); |
| | | }else if(yemianid == 1){ |
| | | quanlotno = ''; |
| | | quanskuno = ''; |
| | | quanskuname = ''; |
| | | console.log("明细"); |
| | | refreshTable2(quanskuno,quanskuname,quanlotno,PalletNo,StartTime,EndTime); |
| | | } |
| | | |
| | | }); |
| | | //触发行双击事件 |
| | | 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.data); |
| | | quanlotno = obj.data.LotNo; |
| | | quanskuno = obj.data.SkuNo; |
| | | quanskuname = obj.data.SkuName; |
| | | refreshTable2(obj.data.SkuNo,obj.data.SkuName,obj.data.LotNo,"","",""); |
| | | yemianid=1; |
| | | }); |
| | | |
| | | //监听Tab切换,以改变地址hash值 |
| | | element.on('tab(docDemoTabBrief)', function(data){ |
| | | console.log(data.index); |
| | | yemianid = data.index |
| | | if(yemianid == 0){ |
| | | console.log("总单"); |
| | | refreshTable("","","","",""); |
| | | }else if(yemianid == 1){ |
| | | console.log("明细"); |
| | | refreshTable2(quanskuno,quanskuname,quanlotno,"","",""); |
| | | } |
| | | }); |
| | | var doing = true; |
| | | // ------------------------------------详情--------------------------------------------------- |
| | | table.on('tool(LAY-app-content-list2)', function(obj) { |
| | | console.log(obj) |
| | | var data = obj.data; |
| | | //详情 |
| | | if (obj.event === 'edit') { |
| | | BoxNo = data.BoxNo; |
| | | console.log(data) |
| | | layer.open({ |
| | | type: 2, |
| | | title: '箱支详情信息', |
| | | content: 'BoxSupportInfor.html?BoxNo=' + BoxNo, |
| | | maxmin: true, |
| | | area: ['80%', '85%'], |
| | | btn: ['关闭'], |
| | | yes: function(index, layero) { |
| | | var iframeWindow = window['layui-layer-iframe' + index], |
| | | submitID = 'layuiadmin-app-form-edit', |
| | | submit = layero.find('iframe').contents().find('#' + submitID); |
| | | if(doing) |
| | | { |
| | | doing = false; |
| | | |
| | | layer.close(index); //关闭弹层 |
| | | refreshTable(); |
| | | doing = true; |
| | | |
| | | |
| | | } |
| | | }, function () { }); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | form.on('submit(daochu)', function () { |
| | | layer.confirm('确定导出当前数据吗?', function(index) { |
| | | if(yemianid == 0){ |
| | | //console.log("总单"); |
| | | var param = { |
| | | SkuNo:$("#SkuNo").val(), |
| | | SkuName:$("#SkuName").val(), |
| | | LotNo:$("#LotNo").val(), |
| | | StartTime:$("#StartTime").val(), |
| | | EndTime:$("#EndTime").val(), |
| | | }; |
| | | sendData(IP + "/Statistical/GetTotalRecord", 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 param = { |
| | | skuNo:quanskuno, |
| | | SkuName:$("#SkuName").val(), |
| | | LotNo:$("#LotNo").val(), |
| | | PalletNo:$("#PalletNo").val(), |
| | | StartTime:$("#StartTime").val(), |
| | | EndTime:$("#EndTime").val(), |
| | | |
| | | }; |
| | | sendData(IP + "/Statistical/GetDetailedRecord", param, 'get', function (res) { |
| | | //console.log(res); |
| | | if (res.code == 0) { //成功 |
| | | var list = res.data;7 |
| | | 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 () { }); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | |
| | | //#region 自定义表头 |
| | | //自定义表头 |
| | | active = { |
| | | customCols: function(){ |
| | | layer.open({ |
| | | type: 2, |
| | | title: '自定义列', |
| | | content: '../SystemSettings/HeaderSetting.html?Href=Statistical/GetTotalRecord&ColsSysArr='+TotalColsSysArr, |
| | | maxmin: false, |
| | | resize: false, |
| | | area: ['970px', '650px'] |
| | | }); |
| | | }, |
| | | customCols2: function(){ |
| | | layer.open({ |
| | | type: 2, |
| | | title: '自定义列', |
| | | content: '../SystemSettings/HeaderSetting.html?Href=Statistical/GetDetailedRecord&ColsSysArr='+DetailColsSysArr, |
| | | maxmin: false, |
| | | resize: false, |
| | | area: ['970px', '650px'] |
| | | }); |
| | | } |
| | | |
| | | }; |
| | | $('.layui-btn').on('click', function() { |
| | | var type = $(this).data('type'); |
| | | active[type] ? active[type].call(this) : ''; |
| | | }); |
| | | //#endregion |
| | | }); |
| | | </script> |
| | | </body> |
| | | </html> |
| | | |
| | | |
| | | //#region 自定义表头 |
| | | //自定义表头 |
| | | active = { |
| | | customCols: function () { |
| | | layer.open({ |
| | | type: 2, |
| | | title: '自定义列', |
| | | content: '../SystemSettings/HeaderSetting.html?Href=Statistical/GetTotalRecord&ColsSysArr=' + TotalColsSysArr, |
| | | maxmin: false, |
| | | resize: false, |
| | | area: ['970px', '650px'] |
| | | }); |
| | | }, |
| | | customCols2: function () { |
| | | layer.open({ |
| | | type: 2, |
| | | title: '自定义列', |
| | | content: '../SystemSettings/HeaderSetting.html?Href=Statistical/GetDetailedRecord&ColsSysArr=' + DetailColsSysArr, |
| | | maxmin: false, |
| | | resize: false, |
| | | area: ['970px', '650px'] |
| | | }); |
| | | } |
| | | |
| | | }; |
| | | $('.layui-btn').on('click', function () { |
| | | var type = $(this).data('type'); |
| | | active[type] ? active[type].call(this) : ''; |
| | | }); |
| | | //#endregion |
| | | }); |
| | | </script> |
| | | </body> |
| | | |
| | | </html> |
| | |
| | | <tr> |
| | | <td> |
| | | <div id="" class="layui-form-item layout-boxinfo"> |
| | | <label class="layui-form-label" lang>整托数量:</label> |
| | | <div class="layui-input-block"> |
| | | <input id="FullQty" type="text" disabled placeholder="" autocomplete="off" |
| | | class="layui-input"> |
| | | </div> |
| | | </div> |
| | | </td> |
| | | <td></td> |
| | | </tr> |
| | | <tr> |
| | | <td> |
| | | <div id="" class="layui-form-item layout-boxinfo"> |
| | | <label class="layui-form-label" lang>规格/型号:</label> |
| | | <div class="layui-input-block"> |
| | | <input id="Standard1" type="text" disabled placeholder="" autocomplete="off" |
| | |
| | | $("#Standard").val(""); |
| | | $("#ImportFactQuantity").val(""); |
| | | $("#BoxQty").val(""); |
| | | // $("#STOCKCODE").val(""); |
| | | //$("#FullQty").val("123"); |
| | | // $("#BOXCODE").val(""); |
| | | |
| | | var param = { |
| | |
| | | }); |
| | | } |
| | | else if (xianshiyemian == 1) { |
| | | // 数量 |
| | | $("#ImportQuantity1").val(""); |
| | | $("#Standard1").val(""); |
| | | $("#ImportFactQuantity1").val(""); |
| | | $("#FullQty").val(""); |
| | | |
| | | var param = { |
| | | Id: parseInt($("#goodSelect1").val()) |
| | |
| | | $("#ImportQuantity1").val(res.data.Qty); |
| | | $("#Standard1").val(res.data.Standard); |
| | | $("#ImportFactQuantity1").val(res.data.FactQty + ""); |
| | | $("#FullQty").val(res.data.UDF1); |
| | | } |
| | | else { } |
| | | }); |
| | |
| | | #region 采购计划,若是采购订单根据采购计划单自动生成入库单信息 |
| | | if (notice.Type == "1" && !string.IsNullOrEmpty(notice.OrderCode)) |
| | | { |
| | | // 获取采购总单信息 |
| | | var planOrd = Db.Queryable<BllProcurePlanNotice>().First(it => it.OrderCode == notice.OrderCode && it.IsDel == "0"); |
| | | //入库单明细 |
| | | var noticeDetailList = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo).ToList(); |
| | | var noticeDetailList = Db.Queryable<BllArrivalNoticeDetail>() |
| | | .Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo).ToList(); |
| | | foreach (var item in noticeDetailList) |
| | | { |
| | | //采购单明细 |
| | | var planDetail = Db.Queryable<BllProcurePlanNoticeDetail>().First(it => it.OrderDetailCode == item.OrderDetailCode && it.IsDel == "0"); |
| | | var planDetail = Db.Queryable<BllProcurePlanNoticeDetail>() |
| | | .First(it => it.ParentId == planOrd.Id && it.SkuNo == item.SkuNo && it.IsDel == "0"); |
| | | planDetail.CompleteQty += item.CompleteQty; |
| | | if (planDetail.CompleteQty >= planDetail.Qty) |
| | | { |
| | |
| | | } |
| | | Db.Updateable(planDetail).ExecuteCommand(); |
| | | } |
| | | //采购总单信息 |
| | | var planOrd = Db.Queryable<BllProcurePlanNotice>().First(it => it.OrderCode == notice.OrderCode && it.IsDel == "0"); |
| | | // 维护采购总单信息 |
| | | var planDetailNum = Db.Queryable<BllProcurePlanNoticeDetail>().Count(m => m.IsDel == "0" && m.ParentId == planOrd.Id && m.Status != "2"); |
| | | if (planDetailNum == 0) |
| | | { |
| | |
| | | } |
| | | } |
| | | //采购单明细 |
| | | var planDetailList = Db.Queryable<BllProcurePlanNoticeDetail>().Where(it => it.ParentId == planOrd.Id && it.IsDel == "0" && it.CompleteQty < it.Qty).ToList(); |
| | | var planDetailList = Db.Queryable<BllProcurePlanNoticeDetail>() |
| | | .Where(it => it.ParentId == planOrd.Id && it.IsDel == "0" && it.CompleteQty < it.Qty).ToList(); |
| | | foreach (var item in planDetailList) |
| | | { |
| | | //判断有无正在执行的 |
| | |
| | | |
| | | if (modelList.Count > 0) |
| | | { |
| | | if (!string.IsNullOrWhiteSpace(modelList[0].PackagNo)) |
| | | { |
| | | // 查询整托数量 此处UDF1用来存储整托数量。 |
| | | var packagModel = Db.Queryable<SysPackag>().Where(m => m.PackagNo == modelList[0].PackagNo && m.IsDel == "0").First(); |
| | | switch (packagModel.Level.ToString()) |
| | | { |
| | | case "1": modelList[0].UDF1 = packagModel.L1Num.ToString(); break; |
| | | case "2": modelList[0].UDF1 = packagModel.L2Num.ToString(); break; |
| | | case "3": modelList[0].UDF1 = packagModel.L3Num.ToString(); break; |
| | | case "4": modelList[0].UDF1 = packagModel.L4Num.ToString(); break; |
| | | default: modelList[0].UDF1 = packagModel.L5Num.ToString(); break; |
| | | } |
| | | } |
| | | return modelList[0]; |
| | | } |
| | | |
| | |
| | | try |
| | | { |
| | | string sqlString = string.Empty; |
| | | sqlString = "select b.SkuNo,b.SkuName,a.LotNo,a.Qty,a.PalletNo,a.Id from BllPalletBind a left join BllArrivalNoticeDetail b on a.ASNDetailNo = b.Id where a.IsDel = '0' and b.IsDel = '0' "; |
| | | sqlString = "select b.SkuNo,b.SkuName,a.LotNo,a.Qty,a.PalletNo,a.Id from BllPalletBind a " + |
| | | "left join BllArrivalNoticeDetail b on a.ASNDetailNo = b.Id where a.IsDel = '0' and b.IsDel = '0' "; |
| | | if (!string.IsNullOrEmpty(model.PalletNo)) |
| | | { |
| | | sqlString += $"and PalletNo = '{model.PalletNo}' and a.Status = '0' "; |
| | |
| | | using Model.ModelDto.SysDto; |
| | | using Model.ModelVm.DataVm; |
| | | using Model.ModelVm.SysVm; |
| | | using MySqlConnector; |
| | | using SqlSugar; |
| | | using WMS.DAL; |
| | | using WMS.Entity.BllAsnEntity; |
| | | using WMS.Entity.BllQualityEntity; |
| | | using WMS.Entity.BllSoEntity; |
| | | using WMS.Entity.Context; |
| | | using WMS.Entity.DataEntity; |
| | | using WMS.Entity.SysEntity; |
| | |
| | | /// <returns></returns> |
| | | public List<TotalRecordDto> GetTotalRecord(string skuNo, string skuName, string lotNo, string startTime, string endTime) |
| | | { |
| | | //入库 |
| | | string rstr = "select LotNo,SkuNo,SkuName,SUM(Qty) RQty,SUM(FactQty) RFactQty,SUM(CompleteQty) RCompleteQty from BllArrivalNoticeDetail where IsDel = '0' "; |
| | | //出库 |
| | | string cstr = "select LotNo,SkuNo,SkuName,SUM(Qty) CQty,SUM(FactQty) CFactQty,SUM(CompleteQty) CompleteQty,SUM(AllotQty) CAllotQty from BllExportNoticeDetail where IsDel = '0' "; |
| | | |
| | | //判断物料号是否为空 |
| | | if (!string.IsNullOrEmpty(skuNo)) |
| | | { |
| | | rstr += " and SkuNo like @skuno"; |
| | | cstr += " and SkuNo like @skuno"; |
| | | } |
| | | //判断物料名称是否为空 |
| | | if (!string.IsNullOrEmpty(skuName)) |
| | | { |
| | | rstr += " and SkuName like @skuname"; |
| | | cstr += " and SkuName like @skuname"; |
| | | } |
| | | //判断批次号是否为空 |
| | | if (!string.IsNullOrEmpty(lotNo)) |
| | | { |
| | | rstr += " and LotNo like @lotno"; |
| | | cstr += " and LotNo like @lotno"; |
| | | } |
| | | // liudl 时间不准确 暂时注释。 |
| | | if (!string.IsNullOrWhiteSpace(startTime)) |
| | | { |
| | | rstr += " and UpdateTime >= @startTime"; |
| | | cstr += " and UpdateTime >= @startTime"; |
| | | } |
| | | if (!string.IsNullOrWhiteSpace(endTime)) |
| | | { |
| | | endTime = DateTime.Parse(endTime).AddDays(1).ToString(); |
| | | rstr += " and UpdateTime < @endTime"; |
| | | cstr += " and UpdateTime < @endTime"; |
| | | } |
| | | |
| | | rstr += " group by LotNo,SkuNo,SkuName"; |
| | | cstr += " group by LotNo,SkuNo,SkuName"; |
| | | //入库 |
| | | List<TotalRecordDto> totalHListData = Db.Ado.SqlQuery<TotalRecordDto>(rstr, new |
| | | { |
| | | skuno = "%" + skuNo + "%", //物料号 |
| | | skuname = "%" + skuName + "%", //物料名称 |
| | | lotno = "%" + lotNo + "%", //批次号 |
| | | startTime, //开始时间 |
| | | endTime //结束时间 |
| | | |
| | | }); |
| | | List<TotalRecordDto> totalCListData = Db.Ado.SqlQuery<TotalRecordDto>(cstr, new |
| | | { |
| | | skuno = "%" + skuNo + "%", //物料号 |
| | | skuname = "%" + skuName + "%", //物料名称 |
| | | lotno = "%" + lotNo + "%", //批次号 |
| | | startTime, //开始时间 |
| | | endTime //结束时间 |
| | | }); |
| | | |
| | | //合并数据 |
| | | int a = 0; |
| | | foreach (var h in totalHListData) |
| | | { |
| | | if (a >= totalCListData.Count) |
| | | // 获取入库单明细信息 |
| | | var asnList = Db.Queryable<BllArrivalNoticeDetail>() |
| | | .Where(m => m.IsDel == "0") |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), a => a.SkuNo.Contains(skuNo)) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), a => a.SkuName.Contains(skuName)) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), a => a.LotNo.Contains(lotNo)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(startTime), a => a.CreateTime >= Convert.ToDateTime(startTime)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(endTime), a => a.CreateTime <= Convert.ToDateTime(endTime).AddDays(1)) |
| | | .GroupBy(a => new { a.LotNo, a.SkuNo, a.SkuName }) |
| | | .Select(a => new TotalRecordDto() |
| | | { |
| | | continue; |
| | | } |
| | | foreach (var c in totalCListData) |
| | | LotNo=a.LotNo, |
| | | SkuNo=a.SkuNo, |
| | | SkuName=a.SkuName, |
| | | RQty = SqlFunc.AggregateSumNoNull(a.Qty), |
| | | RFactQty = (decimal)SqlFunc.AggregateSum(a.FactQty), |
| | | RCompleteQty = (decimal)SqlFunc.AggregateSum(a.CompleteQty), |
| | | CQty = 0, |
| | | CFactQty = 0, |
| | | CAllotQty = 0, |
| | | CompleteQty = 0 |
| | | }); |
| | | |
| | | // 获取出库单明细信息 |
| | | var soList = Db.Queryable<BllExportNoticeDetail>() |
| | | .Where(m => m.IsDel == "0") |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), a => a.SkuNo.Contains(skuNo)) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), a => a.SkuName.Contains(skuName)) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), a => a.LotNo.Contains(lotNo)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(startTime), a => a.CreateTime >= Convert.ToDateTime(startTime)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(endTime), a => a.CreateTime <= Convert.ToDateTime(endTime).AddDays(1)) |
| | | .GroupBy(a => new { a.LotNo, a.SkuNo, a.SkuName }) |
| | | .Select(a => new TotalRecordDto() |
| | | { |
| | | //判断出库是否拥有相同批次 且物料相同 |
| | | if (h.LotNo == c.LotNo || h.LotNo.Contains(c.LotNo) && h.SkuNo == c.SkuNo && h.SkuName == c.SkuName) |
| | | { |
| | | h.CQty = c.CQty; //出库数量 |
| | | h.CAllotQty = c.CAllotQty; //分配数量 |
| | | h.CFactQty = c.CFactQty; //下架数量 |
| | | h.CompleteQty = c.CompleteQty; //拣货数量 |
| | | //h.SONo = c.SONo; //出库单号 |
| | | LotNo = a.LotNo, |
| | | SkuNo = a.SkuNo, |
| | | SkuName = a.SkuName, |
| | | RQty = 0, |
| | | RFactQty = 0, |
| | | RCompleteQty = 0, |
| | | CQty = SqlFunc.AggregateSumNoNull(a.Qty), |
| | | CFactQty = (decimal)SqlFunc.AggregateSum(a.FactQty), |
| | | CAllotQty = (decimal)SqlFunc.AggregateSum(a.AllotQty), |
| | | CompleteQty = (decimal)SqlFunc.AggregateSum(a.CompleteQty), |
| | | }); |
| | | // 获取取样拣货信息 |
| | | var samplingList = Db.Queryable<BllSamplingDetails>() |
| | | .Where(m => m.IsDel == "0") |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), a => a.SkuNo.Contains(skuNo)) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), a => a.SkuName.Contains(skuName)) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), a => a.LotNo.Contains(lotNo)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(startTime), a => a.CreateTime >= Convert.ToDateTime(startTime)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(endTime), a => a.CreateTime <= Convert.ToDateTime(endTime).AddDays(1)) |
| | | .GroupBy(a => new { a.LotNo, a.SkuNo, a.SkuName }) |
| | | .Select(a => new TotalRecordDto() |
| | | { |
| | | LotNo = a.LotNo, |
| | | SkuNo = a.SkuNo, |
| | | SkuName = a.SkuName, |
| | | RQty = 0, |
| | | RFactQty = 0, |
| | | RCompleteQty = 0, |
| | | CQty = (decimal)SqlFunc.AggregateSum(a.CompleteQty), |
| | | CFactQty = 0, |
| | | CAllotQty = 0, |
| | | CompleteQty = (decimal)SqlFunc.AggregateSum(a.CompleteQty), |
| | | }); |
| | | |
| | | a += 1; |
| | | // 合并集合 |
| | | var dataList = Db.UnionAll(asnList, soList, samplingList) |
| | | .GroupBy(a => new { a.LotNo, a.SkuNo, a.SkuName }) |
| | | .Select(a => new TotalRecordDto() |
| | | { |
| | | LotNo = a.LotNo, |
| | | SkuNo = a.SkuNo, |
| | | SkuName = a.SkuName, |
| | | RQty = SqlFunc.AggregateSumNoNull(a.RQty), |
| | | RFactQty = (decimal)SqlFunc.AggregateSum(a.RFactQty), |
| | | RCompleteQty = (decimal)SqlFunc.AggregateSum(a.RCompleteQty), |
| | | CQty = SqlFunc.AggregateSumNoNull(a.CQty), |
| | | CFactQty = (decimal)SqlFunc.AggregateSum(a.CFactQty), |
| | | CAllotQty = (decimal)SqlFunc.AggregateSum(a.CAllotQty), |
| | | CompleteQty = (decimal)SqlFunc.AggregateSum(a.CompleteQty) |
| | | }).ToList(); |
| | | |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | return totalHListData; |
| | | return dataList; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// <param name="startTime">开始时间</param> |
| | | /// <param name="endTime">结束时间</param> |
| | | /// <returns></returns> |
| | | public List<TotalRecordDto> GetDetailedRecord(string skuNo, string skuName, string lotNo, string palletNo, |
| | | string startTime, string endTime) |
| | | public List<TotalRecordDto> GetDetailedRecord(string skuNo, string skuName, string lotNo, string palletNo,string startTime, string endTime) |
| | | { |
| | | //入库 |
| | | string rstr = "select notice.ASNNo,bind.LotNo,notice.SkuNo,notice.SkuName,bind.PalletNo,bind.Qty RQty,bind.Qty RFactQty,bind.Qty RCompleteQty,bind.CompleteTime,notice.LotText,notice.SupplierLot,bind.CompleteTime from BllPalletBind bind left join BllArrivalNoticeDetail notice on bind.ASNDetailNo = notice.Id where bind.IsDel = '0' and notice.IsDel = '0' "; |
| | | //出库 |
| | | string cstr = "select notice.SONo,allot.LotNo,allot.TaskNo CTaskNo,allot.SkuNo,allot.SkuName,allot.PalletNo," + |
| | | "allot.UpdateTime CCreateTime,allot.Qty CQty,allot.Qty CAllotQty,Allot.Qty CFactQty,Allot.CompleteQty CompleteQty," + |
| | | "allot.LotText,allot.SupplierLot " + |
| | | "from BllExportAllot allot left join BllExportNoticeDetail notice on allot.SODetailNo = notice.Id " + |
| | | "where allot.IsDel = '0' and notice.IsDel = '0' "; |
| | | |
| | | //判断物料号是否为空 |
| | | if (!string.IsNullOrEmpty(skuNo)) |
| | | { |
| | | rstr += " and notice.SkuNo like @skuno"; |
| | | cstr += " and allot.SkuNo like @skuno"; |
| | | } |
| | | //判断物料名称是否为空 |
| | | if (!string.IsNullOrEmpty(skuName)) |
| | | { |
| | | rstr += " and notice.SkuName like @skuname"; |
| | | cstr += " and allot.SkuName like @skuname"; |
| | | } |
| | | //判断批次号是否为空 |
| | | if (!string.IsNullOrEmpty(lotNo)) |
| | | { |
| | | rstr += " and notice.LotNo like @lotno"; |
| | | cstr += " and allot.LotNo like @lotno"; |
| | | } |
| | | //判断托盘是否为空 |
| | | if (!string.IsNullOrEmpty(palletNo)) |
| | | { |
| | | rstr += " and bind.PalletNo like @palletno"; |
| | | cstr += " and allot.PalletNo like @palletno"; |
| | | } |
| | | if (!string.IsNullOrWhiteSpace(startTime)) |
| | | { |
| | | rstr += " and bind.CompleteTime >= @startTime"; |
| | | cstr += " and allot.UpdateTime >= @startTime"; |
| | | } |
| | | if (!string.IsNullOrWhiteSpace(endTime)) |
| | | { |
| | | endTime = DateTime.Parse(endTime).AddDays(1).ToString(); |
| | | rstr += " and bind.CompleteTime < @endTime"; |
| | | cstr += " and allot.UpdateTime < @endTime"; |
| | | } |
| | | |
| | | //rstr += " group by bind.LotNo,bind.SkuNo,bind.SkuName"; |
| | | //cstr += " group by LotNo,SkuNo,SkuName"; |
| | | //入库 |
| | | List<TotalRecordDto> totalRList = Db.Ado.SqlQuery<TotalRecordDto>(rstr, new |
| | | { |
| | | isdel = "0", //是否删除 |
| | | skuno = "%" + skuNo + "%", //物料号 |
| | | skuname = "%" + skuName + "%", //物料名称 |
| | | lotno = "%" + lotNo + "%", //批次号 |
| | | palletno = "%" + palletNo + "%", //托盘号 |
| | | startTime = startTime, |
| | | endTime = endTime |
| | | }); |
| | | //出库 |
| | | List<TotalRecordDto> totalCList = Db.Ado.SqlQuery<TotalRecordDto>(cstr, new |
| | | { |
| | | isdel = "0", //是否删除 |
| | | skuno = "%" + skuNo + "%", //物料号 |
| | | skuname = "%" + skuName + "%", //物料名称 |
| | | lotno = "%" + lotNo + "%", //批次号 |
| | | palletno = "%" + palletNo + "%", //托盘号 |
| | | startTime = startTime, |
| | | endTime = endTime |
| | | }); |
| | | |
| | | //合并 |
| | | foreach (var c in totalCList) |
| | | { |
| | | int i = 0; |
| | | foreach (var r in totalRList) |
| | | // 获取入库单明细信息 |
| | | var asnList = Db.Queryable<BllPalletBind,BllArrivalNoticeDetail> |
| | | ((tb1,tb2)=>new JoinQueryInfos( |
| | | JoinType.Left, tb1.ASNDetailNo == tb2.Id |
| | | )) |
| | | .Where((tb1,tb2) => tb1.IsDel == "0" && tb2.IsDel == "0") |
| | | .WhereIF(!string.IsNullOrWhiteSpace(startTime), tb1 => tb1.CompleteTime >= Convert.ToDateTime(startTime)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(endTime), tb1 => tb1.CompleteTime <= Convert.ToDateTime(endTime).AddDays(1)) |
| | | .WhereIF(!string.IsNullOrEmpty(palletNo), tb1 => tb1.PalletNo.Contains(palletNo)) |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), (tb1,tb2) => tb2.SkuNo.Contains(skuNo)) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), (tb1, tb2) => tb2.SkuName.Contains(skuName)) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), (tb1, tb2) => tb2.LotNo.Contains(lotNo)) |
| | | //.GroupBy((tb1,tb2) => new { tb2.LotNo, tb2.SkuNo, tb2.SkuName }) |
| | | .Select((tb1,tb2) => new TotalRecordDto() |
| | | { |
| | | i += 1; |
| | | //判断入库中是否存在出库中的批次物料托盘 |
| | | if (r.PalletNo == c.PalletNo && r.LotNo == c.LotNo && r.SkuNo == c.SkuNo && r.SkuName == c.SkuName) |
| | | { |
| | | if (r.SONo != null) |
| | | { |
| | | if (r.SONo != c.SONo) |
| | | { |
| | | totalRList.Add(c); |
| | | } |
| | | } |
| | | if (c.CTaskNo != "" && r.SONo == null || r.SONo == c.SONo) |
| | | { |
| | | r.SONo = c.SONo; //出库单号 |
| | | r.CQty += c.CQty; //出库数量 |
| | | r.CAllotQty += c.CAllotQty; //分配数量 |
| | | r.CFactQty += c.CFactQty; //下架数量 |
| | | r.CompleteQty += c.CompleteQty; //拣货数量 |
| | | r.CCreateTime = c.CCreateTime; //拣货时间 |
| | | } |
| | | if (r.CompleteTime == null) |
| | | { |
| | | r.RCompleteQty = 0; |
| | | } |
| | | break; |
| | | } |
| | | if (i == totalRList.Count) |
| | | { |
| | | totalRList.Add(c); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | if (totalCList.Count == 0) |
| | | { |
| | | foreach (var r in totalRList) |
| | | { |
| | | if (r.CompleteTime == null) |
| | | { |
| | | r.RCompleteQty = 0; |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | ASNNo = tb2.ASNNo, |
| | | LotNo = tb1.LotNo, |
| | | SkuNo = tb2.SkuNo, |
| | | SkuName = tb2.SkuName, |
| | | PalletNo = tb1.PalletNo, |
| | | RQty = tb1.Qty, |
| | | RFactQty = tb1.Qty, |
| | | RCompleteQty = tb1.Qty, |
| | | CompleteTime = tb1.CompleteTime, |
| | | LotText = tb1.LotText, |
| | | SupplierLot = tb2.SupplierLot, |
| | | |
| | | SONo = "", |
| | | CTaskNo = "", |
| | | CCreateTime = null, |
| | | CQty = 0, |
| | | CFactQty = 0, |
| | | CAllotQty = 0, |
| | | CompleteQty = 0 |
| | | }); |
| | | |
| | | return totalRList; |
| | | // 获取出库单明细信息 |
| | | var soList = Db.Queryable<BllExportAllot, BllExportNoticeDetail> |
| | | (((tb1, tb2) => new JoinQueryInfos( |
| | | JoinType.Left, tb1.SODetailNo == tb2.Id |
| | | ))) |
| | | .Where((tb1, tb2) => tb1.IsDel == "0" && tb2.IsDel == "0") |
| | | .WhereIF(!string.IsNullOrWhiteSpace(startTime), tb1 => tb1.UpdateTime >= Convert.ToDateTime(startTime)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(endTime), tb1 => tb1.UpdateTime <= Convert.ToDateTime(endTime).AddDays(1)) |
| | | .WhereIF(!string.IsNullOrEmpty(palletNo), tb1 => tb1.PalletNo.Contains(palletNo)) |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), tb1 => tb1.SkuNo.Contains(skuNo)) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), tb1 => tb1.SkuName.Contains(skuName)) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), tb1 => tb1.LotNo.Contains(lotNo)) |
| | | //.GroupBy(a => new { a.LotNo, a.SkuNo, a.SkuName }) |
| | | .Select((tb1, tb2) => new TotalRecordDto() |
| | | { |
| | | ASNNo = "", |
| | | LotNo = tb1.LotNo, |
| | | SkuNo = tb2.SkuNo, |
| | | SkuName = tb2.SkuName, |
| | | PalletNo = tb1.PalletNo, |
| | | RQty = 0, |
| | | RFactQty = 0, |
| | | RCompleteQty = 0, |
| | | CompleteTime = null, |
| | | LotText = tb1.LotText, |
| | | SupplierLot = tb2.SupplierLot, |
| | | |
| | | SONo = tb2.SONo, |
| | | CTaskNo = tb1.TaskNo, |
| | | CCreateTime = tb1.UpdateTime, |
| | | CQty = tb1.Qty, |
| | | CFactQty = tb1.Qty, |
| | | CAllotQty = tb1.Qty, |
| | | CompleteQty = (decimal)tb1.CompleteQty |
| | | }); |
| | | |
| | | // 获取取样拣货信息 |
| | | var samplingList = Db.Queryable<BllSamplingDetails>() |
| | | .Where(m => m.IsDel == "0") |
| | | .WhereIF(!string.IsNullOrEmpty(skuNo), a => a.SkuNo.Contains(skuNo)) |
| | | .WhereIF(!string.IsNullOrEmpty(skuName), a => a.SkuName.Contains(skuName)) |
| | | .WhereIF(!string.IsNullOrEmpty(lotNo), a => a.LotNo.Contains(lotNo)) |
| | | .WhereIF(!string.IsNullOrEmpty(palletNo), a => a.PalletNo.Contains(palletNo)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(startTime), a => a.CreateTime >= Convert.ToDateTime(startTime)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(endTime), a => a.CreateTime <= Convert.ToDateTime(endTime).AddDays(1)) |
| | | //.GroupBy(a => new { a.LotNo, a.SkuNo, a.SkuName }) |
| | | .Select(a => new TotalRecordDto() |
| | | { |
| | | ASNNo = "", |
| | | LotNo = a.LotNo, |
| | | SkuNo = a.SkuNo, |
| | | SkuName = a.SkuName, |
| | | PalletNo = a.PalletNo, |
| | | RQty = 0, |
| | | RFactQty = 0, |
| | | RCompleteQty = 0, |
| | | CompleteTime = null, |
| | | LotText = "", |
| | | SupplierLot = "", |
| | | |
| | | SONo = a.QcNo, |
| | | CTaskNo = "", |
| | | CCreateTime = a.CreateTime, |
| | | CQty = (decimal)a.CompleteQty, |
| | | CFactQty = 0, |
| | | CAllotQty = 0, |
| | | CompleteQty = (decimal)a.CompleteQty |
| | | }); |
| | | |
| | | // 合并集合 |
| | | var dataList = Db.UnionAll(asnList, soList, samplingList) |
| | | .Select(a => new TotalRecordDto() |
| | | { |
| | | ASNNo = a.ASNNo, |
| | | LotNo = a.LotNo, |
| | | SkuNo = a.SkuNo, |
| | | SkuName = a.SkuName, |
| | | PalletNo = a.PalletNo, |
| | | RQty = a.RQty, |
| | | RFactQty = a.RFactQty, |
| | | RCompleteQty = a.RCompleteQty, |
| | | CompleteTime = a.CompleteTime, |
| | | LotText = a.LotText, |
| | | SupplierLot = a.SupplierLot, |
| | | |
| | | SONo = a.SONo, |
| | | CTaskNo = a.CTaskNo, |
| | | CCreateTime = a.CCreateTime, |
| | | CQty = a.CQty, |
| | | CFactQty = a.CFactQty, |
| | | CAllotQty = a.CAllotQty, |
| | | CompleteQty = a.CompleteQty |
| | | }).ToList(); |
| | | |
| | | return dataList; |
| | | } |
| | | |
| | | #endregion |