增加年度报表页面,修改年度报表自适应代码,编写后台获取单据总表与明细方法。
New file |
| | |
| | | <!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"> |
| | | <label class="layui-form-label">开始日期</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" autocomplete="off" name="StartTime" id="StartTime" class="layui-input" |
| | | placeholder="开始日期"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">结束日期</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" autocomplete="off" name="EndTime" 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> |
| | | |
| | | <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 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> |
| | | <!-- 单据明细 --> |
| | | <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="InspectASNWeight"> |
| | | {{# function GetBtn(d){ |
| | | return (d.ASNQty * d.Weight).toFixed(4); |
| | | } |
| | | }} |
| | | {{ GetBtn(d) }} |
| | | </script> |
| | | |
| | | <!-- 出库重量 --> |
| | | <script type="text/html" id="InspectSOWeight"> |
| | | {{# function GetBtn1(d){ |
| | | return (d.SOQty * d.Weight).toFixed(4); |
| | | } |
| | | }} |
| | | {{ GetBtn1(d) }} |
| | | </script> |
| | | |
| | | <!-- 结存重量 --> |
| | | <script type="text/html" id="InspectASNSOWeight"> |
| | | {{# function GetBtn2(d){ |
| | | return (d.ASNSOQty * d.Weight).toFixed(4); |
| | | } |
| | | }} |
| | | {{ GetBtn2(d) }} |
| | | </script> |
| | | <!-- #endregion --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | <!-- 类型 --> |
| | | <script type="text/html" id="buttonType"> |
| | | {{# if(d.Type=='0'){ }} |
| | | <p>原料</p> |
| | | {{# } else if(d.Type=='1') { }} |
| | | <p>包材</p> |
| | | {{# } else if(d.Type=='2') { }} |
| | | <p>成品</p> |
| | | {{# } else if(d.Type=='3') { }} |
| | | <p>耗材</p> |
| | | {{# } else if(d.Type=='4') { }} |
| | | <p>中间品</p> |
| | | {{# } }} |
| | | </script> |
| | | |
| | | </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; |
| | | |
| | | |
| | | 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 infoOptions; |
| | | var infoOptions2; |
| | | |
| | | 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; |
| | | |
| | | |
| | | var h1 = GetTableTabHeight(); |
| | | refreshTable("",""); |
| | | //获取出入库总量 |
| | | function refreshTable(StartTime,EndTime) { |
| | | //#region 自定义表头 |
| | | var colsJson |
| | | var param1={ |
| | | Href:'Statistical/GetAssSoInfo' |
| | | }; |
| | | 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 |
| | | } |
| | | 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/GetAssSoInfo',TotalColsSysArr); |
| | | }, |
| | | cols:colsJson |
| | | }; |
| | | |
| | | var param = { |
| | | StartTime:$("#StartTime").val(), |
| | | EndTime:$("#EndTime").val(), |
| | | }; |
| | | sendData(IP + "/Statistical/GetAssSoInfo", 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 |
| | | |
| | | } |
| | | //#region 自定义表头 |
| | | var TotalColsArr = [[ |
| | | {field: '',title: '序号',type:'numbers',align: 'center',fixed: 'left', "disabled": true}, |
| | | {field: 'SkuNo', title: '物料编码', align: 'center'}, |
| | | {field: 'SkuName', title: '物料名称', align: 'center',}, |
| | | {field: 'Standard', title: '规格', align: 'center',}, |
| | | {field: 'Type', title: '类型', align: 'center',templet: '#buttonType',}, |
| | | {field: 'Demo',title: '备注',align: 'center',width: 200}, |
| | | ]]; |
| | | var TotalColsSysArr=encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArr)))//将表头数据进行url编码 |
| | | //#endregion |
| | | // 表单需要的变量 |
| | | /*var 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: 'SkuNo', |
| | | title: '物料编码', |
| | | align: 'center' |
| | | }, |
| | | { |
| | | field: 'SkuName', |
| | | title: '物料名称', |
| | | align: 'center', |
| | | }, |
| | | { |
| | | field: 'Standard', |
| | | title: '规格', |
| | | align: 'center', |
| | | }, |
| | | { |
| | | field: 'Type', |
| | | title: '类型', |
| | | align: 'center', |
| | | templet: '#buttonType', |
| | | }, |
| | | { |
| | | field: 'Demo', |
| | | title: '备注', |
| | | align: 'center', |
| | | width: 200 |
| | | }, |
| | | |
| | | ]] |
| | | };*/ |
| | | |
| | | |
| | | |
| | | //获取单据明细 |
| | | function refreshTable2(SkuNo,StartTime,EndTime) { |
| | | //#region 自定义表头 |
| | | var colsJson; |
| | | var param1={ |
| | | Href:'Statistical/GetAssSoInfoDetail' |
| | | }; |
| | | sendData(IP + "/Sys/GetTableColsByUserId", param1, 'post', function(res) { |
| | | if (res.code == 0){ |
| | | if(res.data=='' || res.data==undefined || res.data==null){ |
| | | colsJson=DetailColsArr |
| | | }else{ |
| | | colsJson= eval(res.data); |
| | | } |
| | | }else{ |
| | | colsJson=DetailColsArr |
| | | } |
| | | |
| | | infoOptions2 = { |
| | | elem: '#LAY-app-content-list2', |
| | | height: h1, |
| | | id: 'LAY-app-content-list2', |
| | | page: true, |
| | | limit: pageCnt, |
| | | limits: pageLimits, |
| | | cellMinWidth: 60, //全局定义常规单元格的最小宽度,layui 2.2.1 新增 |
| | | done: function(){ |
| | | //自定义列宽 |
| | | SetTableColW('LAY-app-content-list2','Statistical/GetAssSoInfoDetail',DetailColsSysArr); |
| | | }, |
| | | cols:colsJson |
| | | }; |
| | | |
| | | var param = { |
| | | skuNo:SkuNo, |
| | | StartTime:StartTime, |
| | | EndTime:EndTime, |
| | | } |
| | | //console.log(param) |
| | | sendData(IP + "/Statistical/GetAssSoInfoDetail", 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 |
| | | |
| | | } |
| | | |
| | | //#region 自定义表头 |
| | | var DetailColsArr = [[ |
| | | {field: '',title: '序号',type:'numbers',fixed: 'left',width:65, "disabled": true}, |
| | | {field: 'SkuNo', title: '物料编码', align: 'center', }, |
| | | {field: 'SkuName', title: '物料名称', align: 'center',}, |
| | | {field: 'NoticeDateTime', title: '单据日期', align: 'center',}, |
| | | {field: 'ASNNo', title: '入库单号', align: 'center',}, |
| | | {field: 'SONo', title: '出库单号', align: 'center',}, |
| | | {field: 'NoticeType', title: '统计类别', align: 'center',}, |
| | | {field: 'ASNQty', title: '入库数量', align: 'center',}, |
| | | {field: 'ASNWeight',title: '入库重量(吨)',align: 'center', templet: '#InspectASNWeight'}, |
| | | {field: 'SOQty',title: '出库数量', align: 'center',}, |
| | | {field: 'SOWeight',title: '出库重量(吨)',align: 'center', templet: '#InspectSOWeight' }, |
| | | {field: 'ASNSOQty',title: '结存数量', align: 'center',}, |
| | | {field: 'ASNSOWeight',title: '结存重量(吨)',align: 'center', emplet: '#InspectASNSOWeight'}, |
| | | {field: 'Weight',title: '理论重量',align: 'center',}, |
| | | ]]; |
| | | var DetailColsSysArr=encodeURIComponent(encodeURIComponent(JSON.stringify(DetailColsArr)))//将表头数据进行url编码 |
| | | //#endregion |
| | | |
| | | // 表单需要的变量 |
| | | /*var 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', |
| | | }, |
| | | { |
| | | field: 'SkuNo', |
| | | title: '物料编码', |
| | | align: 'center', |
| | | }, |
| | | { |
| | | field: 'SkuName', |
| | | title: '物料名称', |
| | | align: 'center', |
| | | }, |
| | | { |
| | | field: 'NoticeDateTime', |
| | | title: '单据日期', |
| | | align: 'center', |
| | | }, |
| | | { |
| | | field: 'ASNNo', |
| | | title: '入库单号', |
| | | align: 'center', |
| | | }, |
| | | { |
| | | field: 'SONo', |
| | | title: '出库单号', |
| | | align: 'center', |
| | | }, |
| | | { |
| | | field: 'NoticeType', |
| | | title: '统计类别', |
| | | align: 'center', |
| | | }, |
| | | { |
| | | field: 'ASNQty', |
| | | title: '入库数量', |
| | | align: 'center', |
| | | }, |
| | | { |
| | | field: 'ASNWeight', |
| | | title: '入库重量(吨)', |
| | | align: 'center', |
| | | templet: function (d) { |
| | | return (d.ASNQty * d.Weight).toFixed(4); |
| | | } |
| | | }, |
| | | { |
| | | field: 'SOQty', |
| | | title: '出库数量', |
| | | align: 'center', |
| | | }, |
| | | { |
| | | field: 'SOWeight', |
| | | title: '出库重量(吨)', |
| | | align: 'center', |
| | | templet: function (d) { |
| | | return (d.SOQty * d.Weight).toFixed(4); |
| | | } |
| | | }, |
| | | { |
| | | field: 'ASNSOQty', |
| | | title: '结存数量', |
| | | align: 'center', |
| | | }, |
| | | { |
| | | field: 'ASNSOWeight', |
| | | title: '结存重量(吨)', |
| | | align: 'center', |
| | | templet: function (d) { |
| | | return (d.ASNSOQty * d.Weight).toFixed(4); |
| | | } |
| | | }, |
| | | { |
| | | field: 'Weight', |
| | | title: '理论重量', |
| | | align: 'center', |
| | | }, |
| | | ]] |
| | | };*/ |
| | | //var url = IP + "/Statistical/GetInventoryList1"; |
| | | |
| | | |
| | | |
| | | //接受全局变量 |
| | | let quanjuskuNo = ''; |
| | | //监听搜索 |
| | | form.on('submit(LAY-app-contlist-search)', function(data) { |
| | | var EndTime = $("#EndTime").val(); |
| | | var StartTime = $("#StartTime").val(); |
| | | |
| | | |
| | | if(yemianid == 0){ |
| | | quanjuskuNo = ''; |
| | | refreshTable(StartTime,EndTime); |
| | | }else if(yemianid == 1){ |
| | | refreshTable2(quanjuskuNo,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') |
| | | //onsole.log(obj.data.SkuNo); |
| | | quanjuskuNo = obj.data.SkuNo; |
| | | refreshTable2(quanjuskuNo,$("#StartTime").val(),$("#EndTime").val()); |
| | | yemianid=1; |
| | | }); |
| | | |
| | | //监听Tab切换,以改变地址hash值 |
| | | element.on('tab(docDemoTabBrief)', function(data){ |
| | | //console.log(data); |
| | | yemianid = data.index; |
| | | if(yemianid == 0){ |
| | | //console.log("总单"); |
| | | refreshTable($("#StartTime").val(),$("#EndTime").val()); |
| | | }else if(yemianid == 1){ |
| | | //console.log("明细"); |
| | | refreshTable2(quanjuskuNo,$("#StartTime").val(),$("#EndTime").val()); |
| | | } |
| | | }); |
| | | |
| | | form.on('submit(daochu)', function () { |
| | | layer.confirm('确定导出当前数据吗?', function(index) { |
| | | if(yemianid == 0){ |
| | | //console.log("总单"); |
| | | var param = { |
| | | // skuNo:SkuNo, |
| | | StartTime:$("#StartTime").val(), |
| | | EndTime:$("#EndTime").val(), |
| | | }; |
| | | sendData(IP + "/Statistical/GetAssSoInfo", param, 'get', function (res) { |
| | | //console.log(res); |
| | | if (res.code == 0) { //成功 |
| | | var list = res.data; |
| | | list.forEach(item => { |
| | | if (item.SkuName.split(',')) |
| | | { |
| | | item.SkuName = '"'+item.SkuName+'"' |
| | | } |
| | | switch(item.Type) |
| | | { |
| | | case '0': |
| | | item.Type = "原料" |
| | | break; |
| | | case '1': |
| | | item.Type = "包材" |
| | | break; |
| | | case '2': |
| | | item.Type = "成品" |
| | | break; |
| | | case '3': |
| | | item.Type = "耗材" |
| | | break; |
| | | case '4': |
| | | item.Type = "中间品" |
| | | break; |
| | | default: |
| | | item.Type = "" |
| | | break; |
| | | } |
| | | }); |
| | | 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:quanjuskuNo, |
| | | StartTime:$("#StartTime").val(), |
| | | EndTime:$("#EndTime").val(), |
| | | }; |
| | | sendData(IP + "/Statistical/GetAssSoInfoDetail", param, 'get', function (res) { |
| | | //console.log(res); |
| | | if (res.code == 0) { //成功 |
| | | var list = res.data; |
| | | list.forEach(item => { |
| | | if (item.SkuName.split(',')) |
| | | { |
| | | item.SkuName = '"'+item.SkuName+'"' |
| | | } |
| | | item.ASNWeight = (item.ASNQty * item.Weight).toFixed(4); // 入库重量 |
| | | item.SOWeight = (item.SOQty * item.Weight).toFixed(4); // 出库重量 |
| | | item.ASNSOWeight = (item.ASNSOQty * item.Weight).toFixed(4); // 结存重量 |
| | | }); |
| | | 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/GetAssSoInfo&ColsSysArr='+TotalColsSysArr, |
| | | maxmin: false, |
| | | resize: false, |
| | | area: ['970px', '650px'] |
| | | }); |
| | | }, |
| | | customCols2: function(){ |
| | | layer.open({ |
| | | type: 2, |
| | | title: '自定义列', |
| | | content: '../SystemSettings/HeaderSetting.html?Href=Statistical/GetAssSoInfoDetail&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> |
New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | |
| | | namespace Model.ModelDto.DataDto |
| | | { |
| | | public class AssSoDateStockInfoDto |
| | | { |
| | | /// <summary> |
| | | /// Desc:入库单号 |
| | | /// Default: |
| | | /// Nullable:False |
| | | /// </summary> |
| | | public string ASNNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:出库单号 |
| | | /// Default: |
| | | /// Nullable:False |
| | | /// </summary> |
| | | public string SONo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:物料编码 |
| | | /// Default: |
| | | /// Nullable:False |
| | | /// </summary> |
| | | public string SkuNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:物料名称 |
| | | /// Default: |
| | | /// Nullable:False |
| | | /// </summary> |
| | | public string SkuName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:入库数量 |
| | | /// Default: |
| | | /// Nullable:False |
| | | /// </summary> |
| | | public int ASNQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:出库数量 |
| | | /// Default: |
| | | /// Nullable:False |
| | | /// </summary> |
| | | public int SOQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:结存数量 |
| | | /// Default: |
| | | /// Nullable:False |
| | | /// </summary> |
| | | public int ASNSOQty { get; set; } |
| | | |
| | | |
| | | /// <summary> |
| | | /// Desc:单据时间 |
| | | /// Default: |
| | | /// Nullable:False |
| | | /// </summary> |
| | | public string NoticeDateTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 月 |
| | | /// </summary> |
| | | public string month { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 统计类型 |
| | | /// </summary> |
| | | public string NoticeType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 理论重量 |
| | | /// </summary> |
| | | public decimal Weight { get; set; } |
| | | |
| | | public DateTime CreateTime { get; set; } |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | |
| | | namespace Model.ModelVm.DataVm |
| | | { |
| | | public class DataStockInfoVM |
| | | { |
| | | public int Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 创建日期 |
| | | /// </summary> |
| | | public DateTime CreateTime { get; set; } = DateTime.Now; |
| | | |
| | | /// <summary> |
| | | /// 更新日期 |
| | | /// </summary> |
| | | public DateTime? UpdateTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否删除 |
| | | /// </summary> |
| | | public string IsDel { get; set; } = "0"; |
| | | |
| | | /// <summary> |
| | | /// 创建人 |
| | | /// </summary> |
| | | public int CreateUser { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 更新人 |
| | | /// </summary> |
| | | public int? UpdateUser { get; set; } |
| | | /// <summary> |
| | | /// Desc:物料编码 |
| | | /// Default: |
| | | /// Nullable:True |
| | | /// </summary> |
| | | public string SkuNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:物料名称 |
| | | /// Default: |
| | | /// Nullable:True |
| | | /// </summary> |
| | | public string SkuName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:规格 |
| | | /// Default: |
| | | /// Nullable:True |
| | | /// </summary> |
| | | public string Standard { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:类型 |
| | | /// 0,4:吨袋 1:公斤袋 2:罐装满桶 3:罐装桶 5:母托盘 6,7:子托盘 |
| | | /// Default: |
| | | /// Nullable:True |
| | | /// </summary> |
| | | public string Type { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:入库数量 |
| | | /// Default: |
| | | /// Nullable:False |
| | | /// </summary> |
| | | public int ArrivalQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:入库数量(月) |
| | | /// Default: |
| | | /// Nullable:False |
| | | /// </summary> |
| | | public int YearArrivalQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:出库数量 |
| | | /// Default: |
| | | /// Nullable:False |
| | | /// </summary> |
| | | public int ExportQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:出库数量(月) |
| | | /// Default: |
| | | /// Nullable:False |
| | | /// </summary> |
| | | public int YearExportQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:结存数量 |
| | | /// Default: |
| | | /// Nullable:False |
| | | /// </summary> |
| | | public int BalanceQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:期出数量 |
| | | /// Default: |
| | | /// Nullable:False |
| | | /// </summary> |
| | | public int ExpectedQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:结存数量(月) |
| | | /// Default: |
| | | /// Nullable:False |
| | | /// </summary> |
| | | public int YearBalanceQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:期出数量(月) |
| | | /// Default: |
| | | /// Nullable:False |
| | | /// </summary> |
| | | public int YearExpectedQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:批次号 |
| | | /// Default: |
| | | /// Nullable:True |
| | | /// </summary> |
| | | public string LotNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:批次描述 |
| | | /// Default: |
| | | /// Nullable:True |
| | | /// </summary> |
| | | public string LotText { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:供货批次 |
| | | /// Default: |
| | | /// Nullable:True |
| | | /// </summary> |
| | | public string SupplierLot { get; set; } |
| | | |
| | | |
| | | /// <summary> |
| | | /// Desc:所属仓库 |
| | | /// Default: |
| | | /// Nullable:True |
| | | /// </summary> |
| | | public string WareHouseNo { get; set; } |
| | | |
| | | |
| | | /// <summary> |
| | | /// Desc:所属巷道 |
| | | /// Default: |
| | | /// Nullable:True |
| | | /// </summary> |
| | | public string RoadwayNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 重量 |
| | | /// </summary> |
| | | public decimal Weight { get; set; } |
| | | } |
| | | } |
| | |
| | | using System.Text; |
| | | using Model.ModelDto; |
| | | using Model.ModelDto.DataDto; |
| | | using Model.ModelVm.DataVm; |
| | | using SqlSugar; |
| | | using WMS.DAL; |
| | | using WMS.Entity.Context; |
| | | using WMS.Entity.DataEntity; |
| | | using WMS.Entity.SysEntity; |
| | | using WMS.IBLL.IDataServer; |
| | | |
| | | namespace WMS.BLL.DataServer |
| | |
| | | |
| | | #endregion |
| | | |
| | | #region 年度报表 |
| | | |
| | | /// <summary> |
| | | /// 获取年报表总表 |
| | | /// </summary> |
| | | /// <param name="StartTime"></param> |
| | | /// <param name="EndTime"></param> |
| | | /// <returns></returns> |
| | | public List<SysMaterials> GetAssSoInfo(string StartTime, string EndTime) |
| | | { |
| | | try |
| | | { |
| | | string str = "select* from SysMaterials where SkuNo in (select a.SkuNo from BllArrivalNoticeDetail a inner join BllExportNoticeDetail b on a.SkuNo = b.SkuNo"; |
| | | |
| | | //判断开始时间是否为空 |
| | | if (!string.IsNullOrWhiteSpace(StartTime)) |
| | | { |
| | | str += $" and a.CompleteTime >= '{StartTime}' and b.UpdateTime >= '{StartTime}'"; |
| | | } |
| | | //判断结束时间是否为空 |
| | | if (!string.IsNullOrWhiteSpace(EndTime)) |
| | | { |
| | | EndTime = (Convert.ToDateTime(EndTime).AddDays(1)).ToString(); |
| | | str += $" and a.CompleteTime < '{EndTime}' and b.UpdateTime < '{EndTime}'"; |
| | | } |
| | | |
| | | str += " group by a.SkuNo,b.SkuNo)"; |
| | | |
| | | var sku = Db.Ado.SqlQuery<SysMaterials>(str); |
| | | return sku; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取年报表明细 |
| | | /// </summary> |
| | | /// <param name="skuNo"></param> |
| | | /// <param name="StartTime"></param> |
| | | /// <param name="EndTime"></param> |
| | | /// <returns></returns> |
| | | public List<AssSoDateStockInfoDto> GetAssSoInfoDetail(string skuNo, string StartTime, string EndTime) |
| | | { |
| | | try |
| | | { |
| | | //用于合并数据 |
| | | List<AssSoDateStockInfoDto> infolist = new List<AssSoDateStockInfoDto>(); |
| | | //获取开始时间当天的结存数量 |
| | | //DataStockInfo stockInfo = new DataStockInfo(); |
| | | //获取物料理论重量 |
| | | string weightstr = $"select Weight from SysMaterials where SkuNo = '{skuNo}'"; |
| | | var weight = Db.Ado.SqlQuerySingle<decimal>(weightstr); |
| | | |
| | | //判断开始时间是否为空 |
| | | if (!string.IsNullOrWhiteSpace(StartTime)) |
| | | { |
| | | //string str = $"select * from DataStockInfo where IsDel = '0' and CONVERT(date,CreateTime) = '{StartTime}'"; |
| | | //获取当天库存信息 |
| | | //stockInfo = Db.Ado.SqlQuerySingle<DataStockInfo>(str); |
| | | } |
| | | //判断结束时间是否为空 |
| | | if (!string.IsNullOrWhiteSpace(EndTime)) |
| | | { |
| | | EndTime = (Convert.ToDateTime(EndTime).AddDays(1)).ToString(); |
| | | } |
| | | int countjie = 0; //统计结存数量 |
| | | ////判断库存信息是否为空 |
| | | //if (stockInfo != null) |
| | | //{ |
| | | // countjie = stockInfo.BalanceQty; //统计结存数量 |
| | | //} |
| | | //else if (stockInfo == null) |
| | | //{ |
| | | //判断开始时间是否为空 |
| | | if (!string.IsNullOrWhiteSpace(StartTime)) |
| | | { |
| | | //string StartTimelin = (Convert.ToDateTime(StartTime).AddDays(1)).ToString(); |
| | | //获取出库数量 |
| | | string str = $"select SUM(CompleteQty) as CompleteQtyc from BllExportNoticeDetail where IsDel = '0' and SkuNo = '{skuNo}' and Status != '0' and CreateTime < '{StartTime}'"; |
| | | string CompleteQtyc = Db.Ado.SqlQuerySingle<string>(str); |
| | | //获取入库数量 |
| | | str = $"select SUM(CompleteQty) as CompleteQtyr from BllArrivalNoticeDetail where IsDel = '0' and SkuNo = '{skuNo}' and Status != '0' and CreateTime < '{StartTime}'"; |
| | | string CompleteQtyr = Db.Ado.SqlQuerySingle<string>(str); |
| | | |
| | | //计算结存数量 |
| | | countjie = int.Parse(CompleteQtyr) - int.Parse(CompleteQtyc); |
| | | |
| | | } |
| | | |
| | | //} |
| | | int yeara = 0; //年入库 |
| | | int years = 0; //年出库 |
| | | int montha = 0; //月入库 |
| | | int months = 0; //月出库 |
| | | DateTime createTime = DateTime.Now.AddYears(-1000); //时间 |
| | | |
| | | //获取有多少年 |
| | | string yearstr = "select DATEPART(YEAR, CreateTime) SkuName from BllArrivalNoticeDetail where IsDel = '0' and Status = '2' "; |
| | | if (!string.IsNullOrWhiteSpace(StartTime)) |
| | | { |
| | | yearstr += $" and CreateTime >= '{StartTime}'"; |
| | | } |
| | | if (!string.IsNullOrWhiteSpace(EndTime)) |
| | | { |
| | | |
| | | yearstr += $" and CreateTime < '{EndTime}'"; |
| | | } |
| | | yearstr += "group by DATEPART(YEAR, CreateTime)"; |
| | | var yearlist = Db.Ado.SqlQuery<AssSoDateStockInfoDto>(yearstr); |
| | | if (!string.IsNullOrWhiteSpace(StartTime) && !string.IsNullOrWhiteSpace(EndTime)) |
| | | { |
| | | //判断开始时间年与结束时间年是否相等 |
| | | var startyear = StartTime.Split('-'); |
| | | var endyear = EndTime.Split("-"); |
| | | } |
| | | foreach (var yearcount in yearlist) |
| | | { |
| | | //获取当前物料每年入库单据明细 |
| | | string ruyearstr = $"select ASNNo,SkuNo,SkuName,CompleteQty as ASNQty,0 as ASNSOQty,CONVERT(date,CreateTime) as NoticeDateTime,DATEPART(MONTH,CreateTime) as month,CreateTime from BllArrivalNoticeDetail where IsDel = '0' and Status != '0' and SkuNo = '{skuNo}' and DATEPART(YEAR, CreateTime) = '{yearcount.SkuName}'"; |
| | | //获取当前物料每年出库单据明细 |
| | | string chuyearstr = $"select SONo,SkuNo,SkuName,CompleteQty as SOQty,0 as ASNSOQty,CONVERT(date,CreateTime) as NoticeDateTime,DATEPART(MONTH,CreateTime) as month,CreateTime from BllExportNoticeDetail where IsDel = '0' and Status != '0' and SkuNo = '{skuNo}' and DATEPART(YEAR, CreateTime) = '{yearcount.SkuName}'"; |
| | | |
| | | if (!string.IsNullOrWhiteSpace(StartTime)) |
| | | { |
| | | ruyearstr += $" and CreateTime >= '{StartTime}'"; |
| | | chuyearstr += $" and CreateTime >= '{StartTime}'"; |
| | | } |
| | | if (!string.IsNullOrWhiteSpace(EndTime)) |
| | | { |
| | | //EndTime = (Convert.ToDateTime(EndTime).AddDays(1)).ToString(); |
| | | ruyearstr += $" and CreateTime < '{EndTime}'"; |
| | | chuyearstr += $" and CreateTime < '{EndTime}'"; |
| | | } |
| | | |
| | | ruyearstr += " order by CreateTime"; |
| | | chuyearstr += " order by CreateTime"; |
| | | //每年入库 |
| | | List<AssSoDateStockInfoDto> ruinfolist = Db.Ado.SqlQuery<AssSoDateStockInfoDto>(ruyearstr); |
| | | //每年出库 |
| | | List<AssSoDateStockInfoDto> chuinfolist = Db.Ado.SqlQuery<AssSoDateStockInfoDto>(chuyearstr); |
| | | |
| | | //循环12个月 |
| | | for (int i = 1; i <= 12; i++) |
| | | { |
| | | //临时入 |
| | | List<AssSoDateStockInfoDto> linshiru = new List<AssSoDateStockInfoDto>(); |
| | | //临时出 |
| | | List<AssSoDateStockInfoDto> linshichu = new List<AssSoDateStockInfoDto>(); |
| | | |
| | | if (ruinfolist.Count > 0) |
| | | { |
| | | linshiru = ruinfolist.Where(a => a.month == i.ToString()).ToList(); //获取当月入库信息 |
| | | } |
| | | if (chuinfolist.Count > 0) |
| | | { |
| | | linshichu = chuinfolist.Where(a => a.month == i.ToString()).ToList(); //获取当月出库信息 |
| | | } |
| | | if (linshichu.Count > 0) |
| | | { |
| | | foreach (var h in linshichu) |
| | | { |
| | | linshiru.Add(h); |
| | | } |
| | | } |
| | | var data = linshiru.OrderBy(a => a.CreateTime).ToList(); |
| | | |
| | | //判断是否存在当月入库信息 |
| | | if (linshiru.Count > 0) |
| | | { |
| | | |
| | | foreach (var item in data) |
| | | { |
| | | item.NoticeDateTime = Convert.ToDateTime(item.NoticeDateTime).ToString("yyyy-MM-dd"); |
| | | //总计结存数量 |
| | | if (item.ASNNo != null) |
| | | { |
| | | //入库 |
| | | countjie += item.ASNQty; |
| | | montha += item.ASNQty; //月入库 |
| | | yeara += item.ASNQty; //年入库 |
| | | } |
| | | else if (item.SONo != null) |
| | | { |
| | | //出库 |
| | | countjie -= item.SOQty; |
| | | months += item.SOQty; //月出库 |
| | | years += item.SOQty; //年出库 |
| | | } |
| | | item.ASNSOQty = countjie; //结存数量 |
| | | item.Weight = weight; //重量 |
| | | infolist.Add(item); |
| | | |
| | | if (createTime < item.CreateTime) |
| | | { |
| | | createTime = item.CreateTime; //时间 |
| | | } |
| | | } |
| | | } |
| | | //判断是否存在当月出库信息 |
| | | //if (linshichu.Count > 0) |
| | | //{ |
| | | // //出库 |
| | | // foreach (var item in linshichu) |
| | | // { |
| | | // item.NoticeDateTime = Convert.ToDateTime(item.NoticeDateTime).ToString("yyyy-MM-dd"); |
| | | // countjie -= item.SOQty; //总计结存数量 |
| | | // item.ASNSOQty = countjie; //结存数量 |
| | | // item.Weight = weight; //重量 |
| | | // infolist.Add(item); |
| | | // months += item.SOQty; //月出库 |
| | | // years += item.SOQty; //年出库 |
| | | // if (createTime < item.CreateTime) |
| | | // { |
| | | // createTime = item.CreateTime; //时间 |
| | | // } |
| | | // } |
| | | //} |
| | | |
| | | //判断是否有月出入库 |
| | | if (linshiru.Count > 0 || linshichu.Count > 0) |
| | | { |
| | | //月信息 |
| | | var addmonthinfo = new AssSoDateStockInfoDto() |
| | | { |
| | | ASNNo = "", // 入库单据 |
| | | SONo = "", // 出库单据 |
| | | |
| | | SkuNo = "", // 物料编码 |
| | | SkuName = "", // 物料名称 |
| | | |
| | | NoticeType = "本月累计", //统计类别 |
| | | |
| | | ASNQty = montha, // 入库数量 |
| | | SOQty = months, // 出库数量 |
| | | ASNSOQty = countjie, // 结存数量 |
| | | |
| | | Weight = weight, // 理论重量 |
| | | |
| | | NoticeDateTime = yearcount.SkuName + "年" + i + "月", // 单据时间 |
| | | CreateTime = createTime, //时间 |
| | | }; |
| | | infolist.Add(addmonthinfo); |
| | | } |
| | | montha = 0; //月入库 |
| | | months = 0; //月出库 |
| | | } |
| | | //判断是否有年出入库 |
| | | if (ruinfolist.Count > 0 || chuinfolist.Count > 0) |
| | | { |
| | | //年信息 |
| | | var addyearinfo = new AssSoDateStockInfoDto() |
| | | { |
| | | ASNNo = "", // 入库单据 |
| | | SONo = "", // 出库单据 |
| | | |
| | | SkuNo = "", // 物料编码 |
| | | SkuName = "", // 物料名称 |
| | | |
| | | NoticeType = "本年累计", //统计类别 |
| | | |
| | | ASNQty = yeara, // 入库数量 |
| | | SOQty = years, // 出库数量 |
| | | ASNSOQty = countjie, // 结存数量 |
| | | |
| | | Weight = weight, // 理论重量 |
| | | |
| | | NoticeDateTime = yearcount.SkuName + "年", // 单据时间 |
| | | CreateTime = createTime, //时间 |
| | | }; |
| | | infolist.Add(addyearinfo); |
| | | } |
| | | yeara = 0; //年入库 |
| | | years = 0; //年出库 |
| | | } |
| | | |
| | | infolist = infolist.OrderBy(x => x.CreateTime).ToList(); |
| | | return infolist; |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region 导出库存 |
| | | /// <summary> |
| | | /// 导出库存总量 |
| | |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | using WMS.Entity.DataEntity; |
| | | using WMS.Entity.SysEntity; |
| | | |
| | | namespace WMS.IBLL.IDataServer |
| | | { |
| | |
| | | |
| | | #endregion |
| | | |
| | | #region 年度报表 |
| | | |
| | | /// <summary> |
| | | /// 获取年报表 |
| | | /// </summary> |
| | | /// <param name="StartTime"></param> |
| | | /// <param name="EndTime"></param> |
| | | /// <returns></returns> |
| | | List<SysMaterials> GetAssSoInfo(string StartTime, string EndTime); |
| | | |
| | | /// <summary> |
| | | /// 获取年报表明细 |
| | | /// </summary> |
| | | /// <param name="skuNo"></param> |
| | | /// <param name="StartTime"></param> |
| | | /// <param name="EndTime"></param> |
| | | /// <returns></returns> |
| | | List<AssSoDateStockInfoDto> GetAssSoInfoDetail(string skuNo, string StartTime, string EndTime); |
| | | |
| | | #endregion |
| | | |
| | | #region 导出库存 |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | private readonly IStockServer _stock; //统计报表 |
| | | private readonly IStockDetailServer _stockDetail; //统计报表 |
| | | private readonly IDataBoxInfoServer _dataBoxInfo; //统计报表 |
| | | private readonly IDataBoxInfoServer _dataBoxInfo; //导出 |
| | | /// <summary> |
| | | /// 构造函数 |
| | | /// </summary> |
| | | /// <param name="stock">统计报表</param> |
| | | /// <param name="stockDetail">库存箱码明细</param> |
| | | /// <param name="dataBoxInfo">库存箱码明细</param> |
| | | /// <param name="dataBoxInfo">导出</param> |
| | | public StatisticalController(IStockServer stock, IStockDetailServer stockDetail, IDataBoxInfoServer dataBoxInfo) |
| | | { |
| | | _stock = stock; //统计报表 |
| | |
| | | |
| | | #endregion |
| | | |
| | | #region 年度报表 |
| | | |
| | | /// <summary> |
| | | /// 获取年报表 |
| | | /// </summary> |
| | | /// <param name="StartTime"></param> |
| | | /// <param name="EndTime"></param> |
| | | /// <returns></returns> |
| | | [HttpGet] |
| | | public IActionResult GetAssSoInfo(string StartTime, string EndTime) |
| | | { |
| | | try |
| | | { |
| | | var skulist = _stock.GetAssSoInfo(StartTime, EndTime); |
| | | return Ok(new { code = 0, count = 0, data = skulist, msg = "获取总量成功" }); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | return Ok(new { code = 1, count = 0, msg = ex.Message }); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取年报表明细 |
| | | /// </summary> |
| | | /// <param name="skuNo"></param> |
| | | /// <param name="StartTime"></param> |
| | | /// <param name="EndTime"></param> |
| | | /// <returns></returns> |
| | | [HttpGet] |
| | | public IActionResult GetAssSoInfoDetail(string skuNo, string StartTime, string EndTime) |
| | | { |
| | | try |
| | | { |
| | | var infolist = _stock.GetAssSoInfoDetail(skuNo, StartTime, EndTime); |
| | | return Ok(new { code = 0, count = 0, data = infolist, msg = "获取明细成功" }); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return Ok(new { code = 1, count = 0, msg = ex.Message }); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 导出 |
| | | /// <summary> |
| | | /// 导出库存总量 |