From be4bb3387730ebe095283399c77a88b5534c09e3 Mon Sep 17 00:00:00 2001
From: yuyou_x <2336760928@qq.com>
Date: 星期六, 16 三月 2024 15:46:52 +0800
Subject: [PATCH] 增加年度报表页面,修改年度报表自适应代码,编写后台获取单据总表与明细方法。

---
 Wms/Model/ModelVm/DataVm/DataStockInfoVM.cs          |  162 +++++++
 Wms/Model/ModelDto/DataDto/AssSoDateStockInfoDto.cs  |   84 +++
 HTML/views/StatisticalReport/PeriodicReportYear.html |  701 +++++++++++++++++++++++++++++++
 Wms/Wms/Controllers/StatisticalController.cs         |   50 ++
 Wms/WMS.IBLL/IDataServer/IStockServer.cs             |   21 
 HTML/views/StatisticalReport/PeriodicReport.html     |    0 
 Wms/WMS.BLL/DataServer/StockServer.cs                |  295 +++++++++++++
 7 files changed, 1,311 insertions(+), 2 deletions(-)

diff --git a/HTML/views/StatisticalReport/PeriodicReport.html b/HTML/views/StatisticalReport/PeriodicReport.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/HTML/views/StatisticalReport/PeriodicReport.html
diff --git a/HTML/views/StatisticalReport/PeriodicReportYear.html b/HTML/views/StatisticalReport/PeriodicReportYear.html
new file mode 100644
index 0000000..98befab
--- /dev/null
+++ b/HTML/views/StatisticalReport/PeriodicReportYear.html
@@ -0,0 +1,701 @@
+<!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();
+				//鍒ゆ柇鏄惁寮�鍚痶able鍒楄〃鍒楀璋冩暣鍔熻兘銆�
+				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">&#xe610;</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">&#xe610;</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' //涓诲叆鍙fā鍧�
+			}).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()浠f浛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浠h〃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)))//灏嗚〃澶存暟鎹繘琛寀rl缂栫爜
+				//#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)))//灏嗚〃澶存暟鎹繘琛寀rl缂栫爜
+				//#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>
diff --git a/Wms/Model/ModelDto/DataDto/AssSoDateStockInfoDto.cs b/Wms/Model/ModelDto/DataDto/AssSoDateStockInfoDto.cs
new file mode 100644
index 0000000..1beb9aa
--- /dev/null
+++ b/Wms/Model/ModelDto/DataDto/AssSoDateStockInfoDto.cs
@@ -0,0 +1,84 @@
+锘縰sing 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; }
+
+    }
+}
diff --git a/Wms/Model/ModelVm/DataVm/DataStockInfoVM.cs b/Wms/Model/ModelVm/DataVm/DataStockInfoVM.cs
new file mode 100644
index 0000000..ffd5bf4
--- /dev/null
+++ b/Wms/Model/ModelVm/DataVm/DataStockInfoVM.cs
@@ -0,0 +1,162 @@
+锘縰sing 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; }
+    }
+}
diff --git a/Wms/WMS.BLL/DataServer/StockServer.cs b/Wms/WMS.BLL/DataServer/StockServer.cs
index 6c0ff69..00dd6d4 100644
--- a/Wms/WMS.BLL/DataServer/StockServer.cs
+++ b/Wms/WMS.BLL/DataServer/StockServer.cs
@@ -7,10 +7,12 @@
 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
@@ -456,6 +458,299 @@
 
         #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>
         /// 瀵煎嚭搴撳瓨鎬婚噺
diff --git a/Wms/WMS.IBLL/IDataServer/IStockServer.cs b/Wms/WMS.IBLL/IDataServer/IStockServer.cs
index 3580bb1..b175bae 100644
--- a/Wms/WMS.IBLL/IDataServer/IStockServer.cs
+++ b/Wms/WMS.IBLL/IDataServer/IStockServer.cs
@@ -3,6 +3,7 @@
 using System.Collections.Generic;
 using System.Text;
 using WMS.Entity.DataEntity;
+using WMS.Entity.SysEntity;
 
 namespace WMS.IBLL.IDataServer
 {
@@ -74,6 +75,26 @@
 
         #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>
diff --git a/Wms/Wms/Controllers/StatisticalController.cs b/Wms/Wms/Controllers/StatisticalController.cs
index c6e3391..f115099 100644
--- a/Wms/Wms/Controllers/StatisticalController.cs
+++ b/Wms/Wms/Controllers/StatisticalController.cs
@@ -17,13 +17,13 @@
         /// </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; //缁熻鎶ヨ〃
@@ -261,6 +261,52 @@
 
         #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>
         /// 瀵煎嚭搴撳瓨鎬婚噺

--
Gitblit v1.8.0