From 3a9b5dcd5dd6ed033f80f1696b07135635b3e9f8 Mon Sep 17 00:00:00 2001
From: Demo <Demo@DESKTOP-CPA90BF>
Date: 星期三, 17 七月 2024 15:35:07 +0800
Subject: [PATCH] Merge branch 'master' into csc

---
 Wms/Model/ModelVm/DataVm/DataStockInfoVM.cs      |  286 +++---
 Wms/WMS.BLL/DataServer/StockInfoServer.cs        |  622 ++++++++++++++
 Wms/WMS.IBLL/IDataServer/IStockInfoServer.cs     |   35 
 Wms/Wms/Controllers/PdaCrController.cs           |   11 
 Wms/Wms/Tools/ApiUrlConfig.cs                    |   21 
 Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs |    2 
 Wms/Wms/DailyTaskService.cs                      |  100 ++
 Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs          |    4 
 HTML/views/StatisticalReport/PeriodicReport.html |  340 ++++++++
 Wms/Wms/Startup.cs                               |    3 
 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs    |   80 +
 Wms/Wms/appsettings.json                         |   11 
 Wms/Wms/Controllers/StatisticalController.cs     |   35 
 HTML/views/HouseWithinSetting/CRLogTask.html     |    6 
 Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs          |  141 ++
 Wms/Wms/Controllers/BllSoController.cs           |    4 
 HTML/views/SOSetting/ExportLogTask.html          |    3 
 Wms/Model/InterFaceModel/HttpModel.cs            |  485 +++++++++++
 Wms/WMS.Entity/DataEntity/DataStockInfo.cs       |  175 ++++
 Wms/Wms/Controllers/DownApiController.cs         |  127 ++
 20 files changed, 2,265 insertions(+), 226 deletions(-)

diff --git a/HTML/views/HouseWithinSetting/CRLogTask.html b/HTML/views/HouseWithinSetting/CRLogTask.html
index 26d6a65..6d90927 100644
--- a/HTML/views/HouseWithinSetting/CRLogTask.html
+++ b/HTML/views/HouseWithinSetting/CRLogTask.html
@@ -644,7 +644,8 @@
 				if (obj.event === 'cancel') {
 					layer.confirm('纭畾鍙栨秷閫変腑鐨勫嚭搴撲换鍔★紵', function (index) {
 						var param = {
-							taskNo: data.TaskNo
+							taskNo: data.TaskNo,
+							receiver: data.Receiver
 						};
 						var postUrl="/BllCheck/CancelCheckTask"
 						if(data.OrderType=='3'){
@@ -704,7 +705,8 @@
 				} else if (obj.event === 'send') {
 					layer.confirm('纭畾瑕佷笅鍙戦�変腑鐨勫嚭搴撲换鍔★紵', function (index) {
 						var param = {
-							taskNo: data.TaskNo
+							taskNo: data.TaskNo,
+							receiver:data.Receiver
 						};
 						sendData(IP + "/DownApi/AgainSendCheckTask", param, 'get', function (res) {
 							console.log(res);
diff --git a/HTML/views/SOSetting/ExportLogTask.html b/HTML/views/SOSetting/ExportLogTask.html
index eb5a6b1..39db9e0 100644
--- a/HTML/views/SOSetting/ExportLogTask.html
+++ b/HTML/views/SOSetting/ExportLogTask.html
@@ -611,7 +611,8 @@
 					layer.confirm('纭畾瑕佷笅鍙戦�変腑鐨勫嚭搴撲换鍔★紵', function (index) {
 						
 						var param = {
-							taskNo: data.TaskNo
+							taskNo: data.TaskNo,
+							receiver: data.Receiver
 						};
 						console.log(param)
 						sendData(IP + "/DownApi/AgainSendSoTask", param, 'get', function (res) {
diff --git a/HTML/views/StatisticalReport/PeriodicReport.html b/HTML/views/StatisticalReport/PeriodicReport.html
index e69de29..15e6823 100644
--- a/HTML/views/StatisticalReport/PeriodicReport.html
+++ b/HTML/views/StatisticalReport/PeriodicReport.html
@@ -0,0 +1,340 @@
+<!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">
+							<div id="center">	
+							</div>
+
+							<div class="layui-tab-content"> 
+								<!-- 鍗曟嵁鎬昏〃 -->
+								<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 -->
+
+									<script type="text/html" id="SituationButton">
+										{{#  if(d.IsQualified=='0'){ }}
+											<p>婊¤冻</p>
+										{{#  } else if(d.IsQualified=='1'){ }}
+											<p>涓嶆弧瓒�</p>
+										{{#  } }}
+									</script>
+									<script type="text/html" id="CreateTimeButton">
+										{{# console.log(d.CreateTime);
+												return formatDate(d.CreateTime);
+										}}
+									</script>
+									<script type="text/html" id="UpdateTimeButton">
+										{{# console.log(d.CreateTime);
+												return formatDate(d.CreateTime);
+										}}
+									</script>
+
+								</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' //涓诲叆鍙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 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 h1 = GetTableHeight();
+				refreshTable("",);
+                //鑾峰彇鍑哄叆搴撴�婚噺
+                function refreshTable(StartTime,EndTime) {
+					//#region 鑷畾涔夎〃澶�
+					var colsJson
+					var param1={
+						Href:'Statistical/GetDataStockInfo'
+					};
+					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
+						}
+						console.log('h1:',h1)
+						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/GetDataStockInfo',TotalColsSysArr);
+							}, 
+							cols:colsJson
+						};
+
+						var param = {
+							StartTime:$("#StartTime").val(),
+						};
+						sendData(IP + "/Statistical/GetDataStockInfo", 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: 'Unit', title: '鍗曚綅', align: 'center'},
+					{field: 'LastMonthQty', title: '涓婃湀缁撳瓨鏁伴噺', align: 'center'},
+					{field: 'LastMonthFoldedQty', title: '涓婃湀缁撳瓨鎶樹欢', align: 'center'},
+					{field: 'ArrDayQty', title: '鍏ュ簱鏃ユ暟閲�', align: 'center'},
+					{field: 'ArrDayFoldedQty', title: '鍏ュ簱鏃ユ姌浠�', align: 'center'},
+					{field: 'ArrMonthQty', title: '鍏ュ簱鏈堟暟閲�', align: 'center'},
+					{field: 'ArrMonthFoldedQty', title: '鍏ュ簱鏈堟姌浠�', align: 'center'},
+					{field: 'ArrYearQty', title: '鍏ュ簱骞存暟閲�', align: 'center'},
+					{field: 'ArrYearFoldedQty', title: '鍏ュ簱骞存姌浠�', align: 'center'},
+					{field: 'SoDayQty', title: '鍑哄簱鏃ユ暟閲�', align: 'center'},
+					{field: 'SoDayFoldedQty', title: '鍑哄簱鏃ユ姌浠�', align: 'center'},
+					{field: 'SoMonthQty', title: '鍑哄簱鏈堟暟閲�', align: 'center'},
+					{field: 'SoMonthFoldedQty', title: '鍑哄簱鏈堟姌浠�', align: 'center'},
+					{field: 'SoYearQty', title: '鍑哄簱骞存暟閲�', align: 'center'},
+					{field: 'SoYearFoldedQty', title: '鍑哄簱骞存姌浠�', align: 'center'},
+					{field: 'MonthQty', title: '褰撴湀缁撳瓨鏁伴噺', align: 'center'},
+					{field: 'MonthFoldedQty', title: '褰撴湀缁撳瓨鎶樹欢', align: 'center'},
+					{field: 'DepositQty', title: '瀵勫瓨鏁伴噺', align: 'center'},
+					{field: 'Qty', title: '鏈湀搴撳瓨鏁伴噺', align: 'center'},
+					{field: 'SecurityQty', title: '瀹夊叏搴撳瓨', align: 'center'},
+					{field: 'Situation', title: '瀹夊叏搴撳瓨鎯呭喌', align: 'center' , templet: '#SituationButton',},
+					{field: 'CreateTime', title: '鍒涘缓鏃ユ湡', align: 'center' , templet: '#CreateTimeButton',},
+					{field: 'UpdateTime', title: '鏇存柊鏃ユ湡', align: 'center', templet: '#UpdateTimeButton',},
+				]];
+				var TotalColsSysArr=encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArr)))//灏嗚〃澶存暟鎹繘琛寀rl缂栫爜
+				//#endregion
+
+				
+				//鐩戝惉鎼滅储
+				form.on('submit(LAY-app-contlist-search)', function(data) {
+
+                    var StartTime = $("#StartTime").val();
+						refreshTable(StartTime);
+					
+				});
+				
+				form.on('submit(daochu)', function () {
+					layer.confirm('纭畾瀵煎嚭褰撳墠鏁版嵁鍚楋紵', function(index) {
+                        var param = {
+                            StartTime:$("#StartTime").val(),
+                        };
+                        sendData(IP + "/Statistical/GetDataStockInfo", 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+'"' 
+                                    }
+                                    
+                                });
+                                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 () { });
+                            }
+                        });
+					});
+				});
+				
+				//#region 鑷畾涔夎〃澶�
+				//鑷畾涔夎〃澶�			
+				active = {
+					customCols: function(){
+						layer.open({
+							type: 2,
+							title: '鑷畾涔夊垪',
+							content: '../SystemSettings/HeaderSetting.html?Href=Statistical/GetDataStockInfo&ColsSysArr='+TotalColsSysArr,
+							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/InterFaceModel/HttpModel.cs b/Wms/Model/InterFaceModel/HttpModel.cs
index 1ccbf31..43afea7 100644
--- a/Wms/Model/InterFaceModel/HttpModel.cs
+++ b/Wms/Model/InterFaceModel/HttpModel.cs
@@ -1,5 +1,6 @@
 锘縰sing System;
 using System.Collections.Generic;
+using System.Reflection.Emit;
 using System.Text;
 
 namespace Model.InterFaceModel
@@ -93,7 +94,7 @@
         /// <summary>
         /// //2锛屼换鍔″畬鎴愶紝3锛屽彇娑堬紝 
         /// </summary>
-        public string TaskStatus { get; set; }   
+        public string TaskStatus { get; set; }
         /// <summary>
         /// 0:鍏ュ簱銆�1:鍑哄簱銆�2:绉诲簱
         /// </summary>
@@ -101,4 +102,486 @@
 
     }
 
+    /// <summary>
+    /// 鐢熸垚浠诲姟鍗�
+    /// </summary>
+    public class AgvSchedulingTask
+    {
+        /// <summary>
+        /// 璇锋眰缂栧彿锛屾瘡涓姹傞兘瑕佷竴涓敮涓�缂栧彿鍚屼竴涓姹傞噸澶嶆彁浜� 浣跨敤鍚屼竴缂栧彿
+        /// 鏄惁蹇呭~锛氭槸
+        /// </summary>
+        public string ReqCode { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鏃堕棿鎴�
+        /// 鏍煎紡: 鈥測yyy-MM-ddHH:mm:ss鈥�
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string EeqTime { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛绔紪鍙凤紝濡� PDA锛孒CWMS 绛夈��
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string ClientCode { get; set; }
+
+        /// <summary>
+        /// 浠ょ墝鍙�, 鐢辫皟搴︾郴缁熼鍙戙��
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string TokenCode { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绫诲瀷锛屼笌鍦� RCS-2000 绔厤缃殑涓讳换鍔$被鍨嬬紪鍙蜂竴鑷淬��
+        /// 鍐呯疆浠诲姟绫诲瀷:
+        /// 鍘傚唴璐ф灦鎼繍: F01
+        /// 鍘傚唴璐ф灦绌烘弧浜ゆ崲: F02
+        /// 杈婄瓛鎼繍鎺ラ┏:F03
+        /// 鍘傚唴璐ф灦鍑哄簱 AGV 寰呭懡:F04
+        /// 鏃嬭浆璐ф灦: F05
+        /// 鍘傚唴鐢垫浠诲姟: F06
+        /// 浠ヤ笅涓哄弶杞︿笓鐢ㄤ换鍔$被鍨�
+        /// 楂樹綅璐ф灦鍒板伐浣滃彴: F11
+        /// 宸ヤ綔鍙板埌楂樹綅璐ф灦: F12
+        /// 宸烽亾鍒板伐浣滃彴: F13
+        /// 宸ヤ綔鍙板埌宸烽亾: F14
+        /// 楂樹綅璐ф灦鍒板伐浣滃彴(鎺ラ┏) : F15
+        /// 宸ヤ綔鍙板埌楂樹綅璐ф灦(鎺ラ┏) : F16
+        /// 宸烽亾鍒板伐浣滃彴(鎺ラ┏) : F17
+        /// 宸ヤ綔鍙板埌宸烽亾(鎺ラ┏) : F18
+        /// 鍙夎溅鐢垫涓讳换鍔�: F20
+        /// 鏄惁蹇呭~锛氭槸
+        /// </summary>
+        public string TaskTyp { get; set; }
+
+        /// <summary>
+        /// 瀹瑰櫒绫诲瀷锛堝弶杞�/CTU 涓撶敤锛�
+        /// 鍙夎溅椤圭洰蹇呬紶
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string CtnrTyp { get; set; }
+
+        /// <summary>
+        /// 瀹瑰櫒缂栧彿锛堝弶杞�/CTU 涓撶敤锛�
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string CtnrCode { get; set; }
+
+        /// <summary>
+        /// 浠诲姟妯″紡
+        /// 0-鏅�� move 
+        /// 1-鍑哄簱 move 
+        /// 2-鍏ュ簱 move 
+        /// 3-绉诲簱 move
+        /// 璇存槑锛�
+        /// 1>浠诲姟妯℃澘涓篃鍙互閰嶇疆妯″紡锛屽鏋滄帴鍙d紶浜嗗垯浼樺厛浣跨敤鎺ュ彛浼犲叆鐨勫��
+        /// 2>鍑哄簱 move 妯″紡涓嶈兘琚墦鏂紝鏅�歮ove鍜屽叆搴搈ove鍙互琚墦鏂�傚嚭搴� move 鎵ц鍚庡繀椤绘墽琛屽叆搴搈ove 鎴栬�呯Щ搴� move锛岃嫢鍚庣画鏈甫move 鏍囪瘑锛屽垯绯荤粺涓嶄細鎵ц锛屼細灏嗕换鍔℃寕璧枫��
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string TaskMode { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綔浣嶏紝涓�鑸负鏈哄彴鎴栧伐浣滃彴浣嶇疆锛屼笌 RCS-2000 绔厤缃殑浣嶇疆鍚嶇О涓�鑷�, 宸ヤ綔浣嶅悕绉颁负瀛楁瘝\鏁板瓧\鎴栫粍鍚�, 涓嶈秴杩� 32 浣嶃��
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string WbCode { get; set; }
+
+        /// <summary>
+        /// 浣嶇疆璺緞锛欰GV 鍏抽敭璺緞浣嶇疆闆嗗悎锛屼笌浠诲姟绫诲瀷涓ā鏉块厤缃殑浣嶇疆璺緞涓�涓�瀵瑰簲銆傚緟鐜板満鍦板浘閮ㄧ讲銆侀厤缃畬鎴愬悗鍙幏鍙栥��
+        /// positionCode:浣嶇疆缂栧彿, 鍗曚釜缂栧彿涓嶈秴杩� 64 浣�
+        /// type:浣嶇疆绫诲瀷璇存槑:
+        /// 00 琛ㄧず锛氫綅缃紪鍙�
+        /// 01 琛ㄧず锛氱墿鏂欐壒娆″彿
+        /// 02 琛ㄧず锛氱瓥鐣ョ紪鍙凤紙鍚涓尯鍩燂級
+        /// 濡傦細绗竴涓尯鍩熸斁涓嶄笅, 鍙互鏀剧浜屼釜鍖哄煙
+        /// 03 琛ㄧず锛氳揣鏋剁紪鍙凤紝閫氳繃璐ф灦缂栧彿鎵惧埌璐ф灦鎵�鍦ㄤ綅缃�
+        /// 04 琛ㄧず锛氬尯鍩熺紪鍙凤紝鍦ㄥ尯鍩熶腑鏌ユ壘鍙敤浣嶇疆
+        /// 05 琛ㄧず锛氫粨浣嶇紪鍙凤紙鍙夎溅/CTU 涓撶敤锛�
+        /// 06 琛ㄧず锛氬贩閬撶紪鍙�
+        /// 07 琛ㄧず锛氬鍣ㄧ紪鍙�
+        /// 08 琛ㄧず锛氬贩閬撶瓥鐣�
+        /// 09 琛ㄧず锛氬贩閬撳尯鍩�
+        /// 10 琛ㄧず锛氬贩閬撲粨浣�
+        /// 11 琛ㄧず锛氳緭閫佺嚎锛堟満鍙帮級缂栧彿
+        /// 12 琛ㄧず锛欳TU 宸ヤ綔鍙帮紙姊抽娇宸ヤ綔绔欙級缂栧彿
+        /// 13 琛ㄧず锛氭惉杩愬贩閬撴寚瀹氳揣鏋跺嚭搴�
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public Object[] PositionCodePath { get; set; }
+
+        /// <summary>
+        /// 璐ф灦缂栧彿锛屼笉鎸囧畾璐ф灦鍙互涓虹┖
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string PodCode { get; set; }
+
+        /// <summary>
+        /// 鍒搴斿湴鍥剧殑浠诲姟瀹屾垚鏃舵湁鍊�
+        /// 宸�: 180
+        /// 鍙�: 0
+        /// 涓�: 90
+        /// 涓�: -90
+        /// 涓嶆寚瀹氭柟鍚戝彲浠ヤ负绌猴紱濡傛灉缁堢偣涓嶆槸宸ヤ綔鍙版垨宸ヤ綔鍙版湭閰嶇疆鏂瑰悜鍒欎綔涓虹粓鐐规柟鍚戝鍏ュ瓙浠诲姟鎶ユ枃锛屽鏋滃伐浣滃彴閰嶆湁鏂瑰悜鍒欎袱鑰呭仛宸粨鏋滀綔涓虹粓鐐规柟鍚戝鍏ュ瓙浠诲姟鎶ユ枃
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string PodDir { get; set; }
+
+        /// <summary>
+        /// 璐ф灦绫诲瀷, 浼犵┖鏃惰〃绀洪殢鏈烘壘涓揣鏋�
+        /// 鎵剧┖璐ф灦浼犲弬鏂瑰紡濡備笅锛�
+        /// -1: 浠h〃涓嶅叧蹇冭揣鏋剁被鍨�, 鎵惧埌绌鸿揣鏋跺嵆鍙�.
+        /// -2: 浠h〃浠庡伐浣滀綅鑾峰彇鍏宠仈璐ф灦绫诲瀷, 濡傛灉鏈厤缃�, 鍙壘绌鸿揣鏋�.璐ф灦绫诲瀷缂栧彿: 鍙壘璇ヨ揣鏋剁被鍨嬬殑绌鸿揣鏋�
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string PodTyp { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵规鎴栬揣鏋朵笂鐨勭墿鏂欏敮涓�缂栫爜,鐢熸垚浠诲姟鍗曟椂,璐ф灦涓庣墿鏂欑洿鎺ョ粦瀹氭椂浣跨敤. 锛堥�氳繃鍚屾椂浼� podCode 鍜宮aterialLot鏉ョ粦瀹氭垨閫氳繃wbCode 鎵惧埌浣嶇疆涓婄殑璐ф灦鍜宮aterialLot 鏉ョ粦瀹氾級宸烽亾浠诲姟閫氳繃璇ュ瓧娈典紶鍏ョ壒寰佸��
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string MaterialLot { get; set; }
+
+        /// <summary>
+        /// 浼樺厛绾э紝浠庯紙1~127锛夌骇锛屾渶澶т紭鍏堢骇鏈�楂樸�備负绌烘椂锛岄噰鐢ㄤ换鍔℃ā鏉跨殑浼樺厛绾с��
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string Priority { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍗曞彿,閫夊~, 涓嶅~绯荤粺鑷姩鐢熸垚锛孶UID 灏忎簬绛変簬 64 浣�
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string TaskCode { get; set; }
+
+        /// <summary>
+        /// AGV 缂栧彿锛屽~鍐欒〃绀烘寚瀹氭煇涓�缂栧彿鐨� AGV 鎵ц璇ヤ换鍔�
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string AgvCode { get; set; }
+
+        /// <summary>
+        /// 缁勭紪鍙�
+        /// CTU 鍦烘櫙涓嬬敤浜庢寜缁勫嚭搴擄紝鍚岀粍浠诲姟浼樺厛鎷艰溅銆� 濡備笟鍔¢渶瑕佷换鍔$粍闂存垨缁勫唴鎸夐『搴忓嚭搴擄紝鍒欓渶璋冪敤鏂欑椤哄簭鍑哄簱锛圕TU锛夋帴鍙c�傛綔浼忓紡鍦烘櫙涓嬶紝閫氳繃缁勫彿鏉ョ鐞嗛『搴忓嚭搴撶殑椤哄簭锛岀粍鍙峰皬鐨勪紭鍏堝嚭搴撱��
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string GroupId { get; set; }
+
+        /// <summary>
+        /// 鑷畾涔夊瓧娈�.JSON 鏍煎紡
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string Data { get; set; }
+    }
+
+    /// <summary>
+    /// 缁х画鎵ц浠诲姟
+    /// </summary>
+    public class AgvContinueTask
+    {
+        /// <summary>
+        /// 璇锋眰缂栧彿锛屾瘡涓姹傞兘瑕佷竴涓敮涓�缂栧彿锛� 鍚屼竴涓姹傞噸澶嶆彁浜わ紝 浣跨敤鍚屼竴缂栧彿銆�
+        /// 鏄惁蹇呭~锛氭槸
+        /// </summary>
+        public string ReqCode { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鏃堕棿鎴� 
+        /// 鏍煎紡: 鈥測yyy-MM-dd HH:mm:ss鈥濄��
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string ReqTime { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛绔紪鍙凤紝濡� PDA锛孒CWMS 绛夈��
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string ClientCode { get; set; }
+
+        /// <summary>
+        /// 浠ょ墝鍙�, 鐢辫皟搴︾郴缁熼鍙戙��
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string TokenCode { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綔浣嶏紝涓� RCS-2000 绔厤缃殑浣嶇疆鍚嶇О涓�鑷�
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string WbCode { get; set; }
+
+        /// <summary>
+        /// 璐ф灦鍙凤紝閲囩敤璐ф灦鍙疯Е鍙戠殑鏂瑰紡銆�
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string PodCode { get; set; }
+
+        /// <summary>
+        /// AGV 缂栧彿锛岄噰鐢� AGV 缂栧彿瑙﹀彂鐨勬柟寮忋��
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string AgvCode { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍗曞彿,閫夊~, 涓嶅~绯荤粺鑷姩鐢熸垚锛屽繀椤讳负 64 浣� UUID
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string TaskCode { get; set; }
+
+        /// <summary>
+        /// 涓嬩竴涓瓙浠诲姟鐨勫簭鍒楋紝鎸囧畾绗嚑涓瓙浠诲姟寮�濮嬫墽琛岋紝鏍¢獙瀛愪换鍔℃墽琛屾槸鍚︽纭�備笉濉粯璁ゆ墽琛屼笅涓�涓瓙浠诲姟銆�
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string TaskSeq { get; set; }
+
+        /// <summary>
+        /// 涓嬩竴涓綅缃俊鎭紝鍦ㄤ换鍔$被鍨嬩腑閰嶇疆澶栭儴璁剧疆鏃堕渶瑕佷紶鍏ワ紝鍚﹀垯涓嶉渶瑕佽缃�傚緟鐜板満鍦板浘閮ㄧ讲銆侀厤缃畬鎴愬悗鍙幏鍙�
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string NextPositionCode { get; set; }
+    }
+
+    /// <summary>
+    /// 鍙栨秷浠诲姟
+    /// </summary>
+    public class AgvCancelTask
+    {
+        /// <summary>
+        /// 璇锋眰缂栧彿锛屾瘡涓姹傞兘瑕佷竴涓敮涓�缂栧彿锛� 鍚屼竴涓姹傞噸澶嶆彁浜わ紝 浣跨敤鍚屼竴缂栧彿銆�
+        /// 鏄惁蹇呭~锛氭槸
+        /// </summary>
+        public string ReqCode { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鏃堕棿鎴� 
+        /// 鏍煎紡: 鈥測yyy-MM-dd HH:mm:ss鈥濄��
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string ReqTime { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛绔紪鍙凤紝濡� PDA锛孒CWMS 绛夈��
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string ClientCode { get; set; }
+
+        /// <summary>
+        /// 浠ょ墝鍙�, 鐢辫皟搴︾郴缁熼鍙戙�� 鐢盧CS-2000 鍛婄煡涓婂眰绯荤粺
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string TokenCode { get; set; }
+
+        /// <summary>
+        /// 鍙栨秷绫诲瀷
+        /// 0 琛ㄧず锛氬彇娑堝悗璐ф灦鐩存帴鏀惧湴涓�
+        /// 1 琛ㄧず锛欰GV 浠嶇劧鑳岀潃璐ф灦锛� 鏍规嵁鍥炲簱鍖哄煙鎵ц鍥炲簱鎸囦护锛� 鍙湁娼滀紡杞﹀拰 CTU 杞︽敮鎸併��
+        /// 鑻ヤ笉浼犲�硷紝榛樿鐨勫彇娑堟ā寮忎负 0
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string ForceCancel { get; set; }
+
+        /// <summary>
+        /// forcecancel=1 鏃舵湁鎰忎箟锛屽洖搴撳尯鍩熺紪鍙凤紝濡傛灉涓虹┖锛岄噰鐢ㄨ揣鏋堕厤缃殑搴撳尯銆�
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string MatterArea { get; set; }
+
+        /// <summary>
+        /// 鍙栨秷璇� AGV 姝e湪鎵ц鐨勪换鍔″崟
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string AgvCode { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍗曠紪鍙�, 鍙栨秷璇ヤ换鍔″崟
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string TaskCode { get; set; }
+    }
+
+    /// <summary>
+    /// 浠诲姟瀹屾垚閫氱煡鍙傛暟
+    /// </summary>
+    public class AgvTaskDto
+    {
+        /// <summary>
+        /// 璇锋眰缂栧彿锛屾瘡涓姹傞兘瑕佷竴涓敮涓�缂栧彿
+        /// 鍚屼竴涓姹傞噸澶嶆彁浜� 浣跨敤鍚屼竴缂栧彿
+        /// 鏄惁蹇呭~锛氭槸
+        /// </summary>
+        public string ReqCode { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鏃堕棿鎴�
+        /// 鏍煎紡: 鈥測yyy-MM-ddHH:mm:ss鈥�
+        /// 鏄惁蹇呭~锛氭槸
+        /// </summary>
+        public string EeqTime { get; set; }
+
+        /// <summary>
+        /// 鍦扮爜 X 鍧愭爣(mm)锛氫换鍔″畬鎴愭椂鏈夊��
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public int CooX { get; set; }
+
+        /// <summary>
+        /// 鍦扮爜 Y 鍧愭爣(mm)锛氫换鍔″畬鎴愭椂鏈夊��
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public int CooY { get; set; }
+
+        /// <summary>
+        /// 褰撳墠浣嶇疆缂栧彿
+        /// 浠诲姟寮�濮嬶細璇ヤ綅缃负浠诲姟璧风偣
+        /// 璧板嚭鍌ㄤ綅锛氳浣嶇疆涓轰换鍔¤捣鐐�
+        /// 浠诲姟鍗曞彇娑堬細璇ヤ綅缃负宸ヤ綔浣嶇紪鍙�
+        /// 浠诲姟缁撴潫锛氳浣嶇疆涓轰换鍔$粓鐐�
+        /// 鍙栨斁鐢宠锛氬彇鏀炬枡绠辩殑鐐�
+        /// 鏄惁蹇呭~锛氭槸
+        /// </summary>
+        public string CurrentPositionCode { get; set; }
+
+        /// <summary>
+        /// 鑷畾涔夊瓧娈碉紝涓嶈秴杩� 2000 涓瓧绗�
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string Data { get; set; }
+
+        /// <summary>
+        /// 鍦板浘缂栧彿
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string MapCode { get; set; }
+
+        /// <summary>
+        /// 鍦扮爜缂栧彿锛氫换鍔″畬鎴愭椂鏈夊��
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string MapDataCode { get; set; }
+
+        /// <summary>
+        /// 浠撲綅缂栧彿锛氬弶杞︿笌 CTU 浠诲姟鏃舵湁鍊�
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string StgBinCode { get; set; }
+
+        /// <summary>
+        /// 鏂规硶鍚�, 鍙娇鐢ㄤ换鍔$被鍨嬪仛涓烘柟娉曞悕
+        /// 鐢� RCS-2000 浠诲姟妯℃澘閰嶇疆鍚庡苟鍛婄煡涓婂眰绯荤粺
+        /// 榛樿浣跨敤鏂瑰紡:
+        /// start : 浠诲姟寮�濮�
+        /// outbin : 璧板嚭鍌ㄤ綅
+        /// end : 浠诲姟缁撴潫
+        /// cancel : 浠诲姟鍗曞彇娑�
+        /// apply锛欳TU 鏂欑鍙栨斁鐢宠
+        /// 鏄惁蹇呭~锛氭槸
+        /// </summary>
+        public string Method { get; set; }
+
+        /// <summary>
+        /// 璐ф灦缂栧彿锛氳儗璐ф灦鏃舵湁鍊�
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string PdCode { get; set; }
+
+        /// <summary>
+        /// 鍒搴斿湴鍥剧殑浠诲姟瀹屾垚鏃舵湁鍊�
+        /// 宸�: 180
+        /// 鍙�: 0
+        /// 涓�: 90
+        /// 涓�: -90
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string PodDir { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string MaterialLot { get; set; }
+
+        /// <summary>
+        /// AGV 缂栧彿锛堝悓 agvCode 锛�
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string RobotCode { get; set; }
+
+        /// <summary>
+        /// 褰撳墠浠诲姟鍗曞彿
+        /// 鏄惁蹇呭~锛氭槸
+        /// </summary>
+        public string TaskCode { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綔浣嶏紝涓� RCS-2000 绔厤缃殑浣嶇疆鍚嶇О涓�鑷淬�備换鍔″畬鎴愭椂鏈夊�硷紝涓庣敓鎴愪换鍔″崟鎺ュ彛涓殑 wbCode 涓�鑷�
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string WbCode { get; set; }
+
+        /// <summary>
+        /// 瀹瑰櫒缂栧彿
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string CtnrCode { get; set; }
+
+        /// <summary>
+        /// 瀹瑰櫒绫诲瀷
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string CtnrType { get; set; }
+
+        /// <summary>
+        /// 宸烽亾缂栧彿
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string RoadWayCode { get; set; }
+
+        /// <summary>
+        /// 宸烽亾鍐呴『搴忓彿
+        /// 宸烽亾灏炬槸 0锛屽埌宸烽亾澶翠緷娆¢�掑 1
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string Seq { get; set; }
+
+        /// <summary>
+        /// 璁惧缂栧彿锛屽姊抽娇寮忓伐浣滅珯銆佽緭閫佺嚎绛夛紝涓�鑸娇鐢ㄤ簬 CTU 鍦烘櫙銆傜郴缁熸牴鎹粨浣嶅畾浣嶅埌鍏宠仈鐨勮澶囩紪鍙枫��
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string EqpCode { get; set; }
+    }
+
+    /// <summary>
+    /// WMS鍥炲簲AGV淇℃伅
+    /// </summary>
+    public class OutCommanAgvDto
+    {
+        /// <summary>
+        /// 杩斿洖鐮�
+        /// 0锛氭垚鍔�
+        /// 1锛氬弬鏁扮浉鍏崇殑閿欒
+        /// 6锛氶噸澶嶅彂閫侊紝涓婂眰绯荤粺涓嶉渶瑕侀噸鍙�
+        /// 99锛氬叾浠栨湭鐭ラ敊璇紝璋冪敤澶辫触鍚庯紝鍙互閲嶈瘯
+        /// 100锛� 璇ヤ换鍔′笉瀛樺湪锛屼笂灞傜郴缁熶笉闇�閲嶅彂锛岄渶瑕佷汉宸ヤ粙鍏ュ鐞�
+        /// 鏄惁蹇呭~锛氭槸
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 杩斿洖娑堟伅
+        /// 鏄惁蹇呭~锛氭槸
+        /// </summary>
+        public string Message { get; set; }
+
+        /// <summary>
+        /// 璇锋眰缂栧彿
+        /// 鏄惁蹇呭~锛氭槸
+        /// </summary>
+        public string ReqCode { get; set; }
+
+        /// <summary>
+        /// 杩斿洖鐨勬暟鎹粨鏋�
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string Data { get; set; }
+    }
 }
diff --git a/Wms/Model/ModelVm/DataVm/DataStockInfoVM.cs b/Wms/Model/ModelVm/DataVm/DataStockInfoVM.cs
index 9c35e38..e7fe8b2 100644
--- a/Wms/Model/ModelVm/DataVm/DataStockInfoVM.cs
+++ b/Wms/Model/ModelVm/DataVm/DataStockInfoVM.cs
@@ -9,6 +9,166 @@
         public int Id { 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:True
+        /// </summary>           
+        public string Standard { get; set; }
+
+        /// <summary>
+        /// Desc:鍗曚綅
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// Desc:涓婃湀缁撳瓨-搴撳瓨鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal LastMonthQty { get; set; }
+        /// <summary>
+        /// Desc:涓婃湀缁撳瓨-搴撳瓨鎶樹欢鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal LastMonthFoldedQty { get; set; }
+        
+        /// <summary>
+        /// Desc:鍏ュ簱鏁伴噺-褰撴棩鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal ArrDayQty { get; set; }
+        /// <summary>
+        /// Desc:鍏ュ簱鏁伴噺-褰撴棩鎶樹欢鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal ArrDayFoldedQty { get; set; }
+
+        /// <summary>
+        /// Desc:鍏ュ簱鏁伴噺-鏈湀鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal ArrMonthQty { get; set; }
+        /// <summary>
+        /// Desc:鍏ュ簱鏁伴噺-鏈湀鎶樹欢鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal ArrMonthFoldedQty { get; set; }
+
+        /// <summary>
+        /// Desc:鍏ュ簱鏁伴噺-鏈勾鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal ArrYearQty { get; set; }
+        /// <summary>
+        /// Desc:鍏ュ簱鏁伴噺-鏈勾鎶樹欢鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal ArrYearFoldedQty { get; set; }
+
+        /// <summary>
+        /// Desc:鍑哄簱鏁伴噺-褰撴棩鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal SoDayQty { get; set; }
+        /// <summary>
+        /// Desc:鍑哄簱鏁伴噺-褰撴棩鎶樹欢鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal SoDayFoldedQty { get; set; }
+
+        /// <summary>
+        /// Desc:鍑哄簱鏁伴噺-鏈湀鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal SoMonthQty { get; set; }
+        /// <summary>
+        /// Desc:鍑哄簱鏁伴噺-鏈湀鎶樹欢鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal SoMonthFoldedQty { get; set; }
+
+        /// <summary>
+        /// Desc:鍑哄簱鏁伴噺-鏈勾鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal SoYearQty { get; set; }
+        /// <summary>
+        /// Desc:鍑哄簱鏁伴噺-鏈勾鎶樹欢鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal SoYearFoldedQty { get; set; }
+
+        /// <summary>
+        /// Desc:褰撴湀缁撳瓨-绱鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal MonthQty { get; set; }
+        /// <summary>
+        /// Desc:褰撴湀缁撳瓨-绱鎶樹欢鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal MonthFoldedQty { get; set; }
+
+        /// <summary>
+        /// Desc:瀵勫瓨鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal DepositQty { get; set; }
+
+        /// <summary>
+        /// Desc:鏈湀搴撳瓨鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// Desc:瀹夊叏搴撳瓨
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal SecurityQty { get; set; }
+
+        /// <summary>
+        /// Desc:瀹夊叏搴撳瓨鎯呭喌
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public string Situation { get; set; }
+
+        /// <summary>
         /// 鍒涘缓鏃ユ湡
         /// </summary>
         public DateTime CreateTime { get; set; } = DateTime.Now;
@@ -32,131 +192,5 @@
         /// 鏇存柊浜�
         /// </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 decimal ArrivalQty { get; set; }
-
-        /// <summary>
-        /// Desc:鍏ュ簱鏁伴噺锛堟湀锛�
-        /// Default:
-        /// Nullable:False
-        /// </summary>           
-        public decimal YearArrivalQty { get; set; }
-
-        /// <summary>
-        /// Desc:鍑哄簱鏁伴噺
-        /// Default:
-        /// Nullable:False
-        /// </summary>           
-        public decimal ExportQty { get; set; }
-
-        /// <summary>
-        /// Desc:鍑哄簱鏁伴噺锛堟湀锛�
-        /// Default:
-        /// Nullable:False
-        /// </summary>           
-        public decimal YearExportQty { get; set; }
-
-        /// <summary>
-        /// Desc:缁撳瓨鏁伴噺
-        /// Default:
-        /// Nullable:False
-        /// </summary>           
-        public decimal BalanceQty { get; set; }
-
-        /// <summary>
-        /// Desc:鏈熷嚭鏁伴噺
-        /// Default:
-        /// Nullable:False
-        /// </summary>           
-        public decimal ExpectedQty { get; set; }
-
-        /// <summary>
-        /// Desc:缁撳瓨鏁伴噺(鏈�)
-        /// Default:
-        /// Nullable:False
-        /// </summary>           
-        public decimal YearBalanceQty { get; set; }
-
-        /// <summary>
-        /// Desc:鏈熷嚭鏁伴噺(鏈�)
-        /// Default:
-        /// Nullable:False
-        /// </summary>           
-        public decimal 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/BllPdaServer/PdaCrServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
index f2b8b13..43ca4af 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
@@ -2,9 +2,12 @@
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
+using Model.InterFaceModel;
 using Model.ModelDto.BllCheckDto;
 using Model.ModelDto.PdaDto;
+using Newtonsoft.Json;
 using SqlSugar;
+using Utility.Tools;
 using WMS.BLL.LogServer;
 using WMS.DAL;
 using WMS.Entity.BllAsnEntity;
@@ -776,7 +779,7 @@
                 var storageArea = new List<SysStorageArea>();
                 if (string.IsNullOrEmpty(palletNo))
                 {
-                    storageArea = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.WareHouseNo == "W02").OrderBy(o=>o.AreaNo).ToList();
+                    storageArea = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.WareHouseNo == "W02").OrderBy(o => o.AreaNo).ToList();
                 }
                 else
                 {
@@ -798,7 +801,7 @@
                     {
                         throw new Exception("鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!");
                     }
-                   
+
                     if (storageLocat.AreaNo.Contains("B0"))
                     {
                         storageArea = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.AreaNo.Contains("B0") && w.WareHouseNo == "W02").OrderBy(o => o.AreaNo).ToList();
@@ -807,7 +810,7 @@
                     {
                         storageArea = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.AreaNo.Contains("B1") && w.WareHouseNo == "W02").OrderBy(o => o.AreaNo).ToList();
                     }
-                }                
+                }
                 return storageArea;
             }
             catch (Exception ex)
@@ -880,7 +883,7 @@
         /// <param name="palletNo"></param>
         /// <param name="areaNo"></param>
         /// <param name="ruku"></param>
-        public void AgvTransport(string palletNo, string areaNo, string ruku, int userId)
+        public void AgvTransport(string palletNo, string areaNo, string ruku, int userId, string url)
         {
             if (string.IsNullOrEmpty(palletNo))
             {
@@ -893,7 +896,7 @@
             if (!string.IsNullOrEmpty(areaNo) && !string.IsNullOrEmpty(ruku))
             {
                 throw new Exception("鐩爣鍖哄煙鍜屽叆搴撳彛涓嶈兘鍚屾椂閫夋嫨锛�");
-            }            
+            }
             try
             {
                 string EndLocat = string.Empty;//鐩爣浣嶇疆                
@@ -902,7 +905,7 @@
                 if (log != null)
                 {
                     throw new Exception("璇ユ墭鐩樺凡鏈夊皬杞︾瓑寰呮墽琛屾垨姝e湪鎵ц鐨勪换鍔�!");
-                }                
+                }
                 var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo);
                 if (stockDetail == null)
                 {
@@ -915,7 +918,7 @@
                     {
                         throw new Exception("鎵�閫夊尯鍩熶俊鎭笉瀛樺湪,璇锋鏌�!");
                     }
-                    EndLocat = GetLocat(areaNo, stockDetail.SkuNo, stockDetail.LotNo,palletNo);
+                    EndLocat = GetLocat(areaNo, stockDetail.SkuNo, stockDetail.LotNo, palletNo);
                 }
                 else
                 {
@@ -950,7 +953,7 @@
                         throw new Exception("鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!");
                     }
                 }
-                
+
                 //寮�鍚簨鍔�
                 Db.BeginTran();
 
@@ -995,15 +998,63 @@
                 {
                     storageLocatEnd.Status = "4";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 
                     Db.Updateable(storageLocatEnd).ExecuteCommand();
-                }               
+                }
                 //娣诲姞鎿嶄綔鏃ュ織璁板綍
                 var k = new OperationCrServer().AddLogOperationCr("PDA妯″潡", "AGV杞繍", palletNo, "绉诲簱", $"PDA鍛煎彨灏忚溅瀵规墭鐩樺彿锛歿palletNo}鍙戣捣杞繍", userId);
-                //鎻愪氦浜嬪姟
-                Db.CommitTran();
 
                 #region 鍛煎彨灏忚溅浠g爜
 
+
+                List<AgvSchedulingTask> agvTaskList = new List<AgvSchedulingTask>();
+
+                AgvSchedulingTask agvTask = new AgvSchedulingTask();
+                agvTask.ReqCode = taskNo;
+                agvTask.TaskTyp = "F01";
+                agvTask.WbCode = "";
+                agvTask.PositionCodePath = null;
+                agvTask.PodCode = "-1";
+
+                agvTaskList.Add(agvTask);
+
+                var IsTrue = false;
+                while (IsTrue == true)
+                {
+                    // 姝e紡杩愯绋嬪簭鏀惧紑
+                    string str = "";
+                    var list2 = agvTaskList.Select(m => m.ReqCode).ToList();
+                    var jsonData = JsonConvert.SerializeObject(agvTaskList);
+                    string response = "";
+
+                    try
+                    {
+                        var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
+                        response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV");
+                        var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
+
+                        //////瑙f瀽杩斿洖鏁版嵁 
+                        var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
+                        if (agvModel.Code == "0")
+                        {
+                            //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
+                            new TaskServer().EditTaskIssueOk(list2, time1, time2);
+                            str += "涓嬪彂鎴愬姛";
+                            IsTrue = true;
+                        }
+                        if (agvModel.Code == "1")
+                        {
+                            new TaskServer().EditTaskIssueNo(list2, time1, time2, agvModel.Message);
+                            throw new Exception(agvModel.Message);
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        throw new Exception(ex.Message);
+                    }
+                }
                 #endregion
+
+                //鎻愪氦浜嬪姟
+                Db.CommitTran();
             }
             catch (Exception ex)
             {
@@ -1018,7 +1069,7 @@
         /// <param name="palletNo"></param>
         /// <param name="areaNo"></param>
         /// <param name="userId"></param>
-        public void AgvTransport2(string soNo,string palletNo, string areaNo, int userId)
+        public void AgvTransport2(string soNo, string palletNo, string areaNo, int userId, string url)
         {
             if (string.IsNullOrEmpty(soNo))
             {
@@ -1032,6 +1083,8 @@
             {
                 //寮�鍚簨鍔�
                 Db.BeginTran();
+                List<AgvSchedulingTask> agvTaskList = new List<AgvSchedulingTask>();
+
                 //鍑哄簱鍗曚俊鎭�
                 var notice = Db.Queryable<BllExportNotice>().First(w => w.IsDel == "0" && w.SONo == soNo);
                 if (notice == null)
@@ -1054,7 +1107,7 @@
                     string sqlStr = $"select * from DataStockDetail where PalletNo in (select PalletNo from BllExportAllot where IsDel='0' and SONo='{soNo}')";
                     stockDetailList = Db.Ado.SqlQuery<DataStockDetail>(sqlStr).ToList();
                 }
-                if (stockDetailList.Count<=0)
+                if (stockDetailList.Count <= 0)
                 {
                     throw new Exception("鎵樼洏鏄庣粏涓嶅瓨鍦�,璇锋鏌�!");
                 }
@@ -1067,7 +1120,7 @@
                 foreach (var item in stockDetailList)
                 {
                     //浠诲姟淇℃伅
-                    var logInfo = log.First(w =>w.PalletNo == item.PalletNo);
+                    var logInfo = log.First(w => w.PalletNo == item.PalletNo);
                     if (logInfo != null)
                     {
                         throw new Exception($"鎵樼洏鍙凤細{item.PalletNo}宸叉湁灏忚溅绛夊緟鎵ц鎴栨鍦ㄦ墽琛岀殑浠诲姟!");
@@ -1130,6 +1183,15 @@
                     };
                     Db.Insertable(exTask).ExecuteCommand();
 
+                    AgvSchedulingTask agvTask = new AgvSchedulingTask();
+                    agvTask.ReqCode = taskNo;
+                    agvTask.TaskTyp = "F01";
+                    agvTask.WbCode = "";
+                    agvTask.PositionCodePath = null;
+                    agvTask.PodCode = "-1";
+
+                    agvTaskList.Add(agvTask);
+
                     //淇敼搴撳瓨鏄庣粏淇℃伅
                     item.Status = "4";//绉诲簱閿佸畾
                     item.LockQty = item.Qty;//閿佸畾搴撳瓨鏁伴噺
@@ -1157,12 +1219,51 @@
                     //娣诲姞鎿嶄綔鏃ュ織璁板綍
                     var k = new OperationCrServer().AddLogOperationCr("PDA妯″潡", "AGV杞繍", palletNo, "绉诲簱", $"PDA鍛煎彨灏忚溅瀵规墭鐩樺彿锛歿palletNo}鍙戣捣杞繍", userId);
                 }
-                //鎻愪氦浜嬪姟
-                Db.CommitTran();
 
                 #region 鍛煎彨灏忚溅浠g爜
 
+                
+
+                var IsTrue = false;
+                while (IsTrue == true)
+                {
+                    // 姝e紡杩愯绋嬪簭鏀惧紑
+                    string str = "";
+                    var list2 = agvTaskList.Select(m => m.ReqCode).ToList();
+                    var jsonData = JsonConvert.SerializeObject(agvTaskList);
+                    string response = "";
+
+                    try
+                    {
+                        var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
+                        response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍙栬揣鍛戒护", "AGV");
+                        var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
+
+                        //////瑙f瀽杩斿洖鏁版嵁 
+                        var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
+                        if (agvModel.Code == "0")
+                        {
+                            //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
+                            new TaskServer().EditTaskIssueOk(list2, time1, time2);
+                            str += "涓嬪彂鎴愬姛";
+                            IsTrue = true;
+                        }
+                        if (agvModel.Code == "1")
+                        {
+                            new TaskServer().EditTaskIssueNo(list2, time1, time2, agvModel.Message);
+                            throw new Exception(agvModel.Message);
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        throw new Exception(ex.Message);
+                    }
+                }
+
                 #endregion
+
+                //鎻愪氦浜嬪姟
+                Db.CommitTran();
             }
             catch (Exception ex)
             {
@@ -1177,16 +1278,16 @@
         /// <param name="skuNo"></param>
         /// <param name="lotNo"></param>
         /// <returns></returns>
-        private string GetLocat(string areaNo,string skuNo,string lotNo,string palletNo,string hasLocatNoList="")
+        private string GetLocat(string areaNo, string skuNo, string lotNo, string palletNo, string hasLocatNoList = "")
         {
             try
             {
                 string endLocat = string.Empty;//鐩爣鍌ㄤ綅
-                //褰撶劧鍖哄煙鎵�鏈夊偍浣嶄俊鎭�
+                                               //褰撶劧鍖哄煙鎵�鏈夊偍浣嶄俊鎭�
                 var storageLocatList = Db.Queryable<SysStorageLocat>().Where(w => w.WareHouseNo == "W02" && w.AreaNo == areaNo).ToList();
                 //鍚屽尯鍩熷悓鎵规鐗╂枡鐨勫偍浣嶄俊鎭�
                 List<string> locatList = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.SkuNo == skuNo && w.LotNo == lotNo && w.WareHouseNo == "W02" && w.AreaNo == areaNo && w.PalletNo != palletNo)
-                    .OrderByDescending(o=>o.LocatNo).Select(s=>s.LocatNo).Distinct().ToList();
+                    .OrderByDescending(o => o.LocatNo).Select(s => s.LocatNo).Distinct().ToList();
                 foreach (var item in locatList)
                 {
                     var locatInfo = storageLocatList.Where(w => w.LocatNo == item).First();
@@ -1201,7 +1302,7 @@
                 if (string.IsNullOrEmpty(endLocat))
                 {
                     var locatInfo3 = storageLocatList.Where(w => w.IsDel == "0" && w.Flag == "0" && w.Status == "0" && !hasLocatNoList.Contains(w.LocatNo))
-                                .OrderByDescending(m => m.Layer).OrderByDescending(m=>m.Column).OrderByDescending(m=> m.Row).First();
+                                .OrderByDescending(m => m.Layer).OrderByDescending(m => m.Column).OrderByDescending(m => m.Row).First();
 
                     if (locatInfo3 != null)
                     {
diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index 8ee24c5..6b45a6d 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -139,8 +139,8 @@
                         }
                         else
                         {
-                            stocks = stockList.Where(m=> m.SkuNo == d.SkuNo && !string.IsNullOrWhiteSpace(m.LotNo)).OrderBy(s => s.LotNo).ToList();
-                            
+                            stocks = stockList.Where(m => m.SkuNo == d.SkuNo && !string.IsNullOrWhiteSpace(m.LotNo)).OrderBy(s => s.LotNo).ToList();
+
                             foreach (var demo in stocks)
                             {
                                 if (q1 >= d.Qty)
@@ -148,7 +148,7 @@
                                     continue;
                                 }
                                 var q2 = demo.Qty - demo.LockQty - demo.FrozenQty;
-                                 
+
                                 if (q2 > d.Qty - q1)
                                 {
                                     q1 += d.Qty - q1;
@@ -157,9 +157,9 @@
                                 else
                                 {
                                     q1 += q2;
-                                    dic.Add(demo.Id,q2);
+                                    dic.Add(demo.Id, q2);
                                 }
-                                
+
                             }
                             if (d.Qty >= q1)
                             {
@@ -185,7 +185,7 @@
                                 throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo} 搴撳瓨鏁伴噺涓嶈冻");
                             }
                         }
-                        
+
                         foreach (var s in dic)
                         {
                             var st = stockList.First(a => a.Id == s.Key);
@@ -214,12 +214,12 @@
                                 CreateUser = 0,
                             };
                             list.Add(item);
-                           
+
                             st.LockQty += s.Value;//閿佸畾鏁伴噺
                             var i = Db.Updateable(st).UpdateColumns(it => new { it.LockQty })
                                 .ExecuteCommand();
                         }
-                       
+
                     }
                     var notice = new BllExportNotice()
                     {
@@ -462,7 +462,7 @@
                     throw new Exception("鏈煡鍒板搴斿嚭搴撶被鍨嬬殑鐗╂枡");
                 }
 
-                if (type!="8")
+                if (type != "8")
                 {
                     skuList = skuList.Where(m => m != "100088").ToList();
                 }
@@ -645,7 +645,7 @@
                             //}
                             //if (d.Qty >= q1)
                             //{
-                                stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
+                            stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
                             //    if (stocks.Count == 0)
                             //    {
                             //        throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}搴撳瓨鏁伴噺涓嶈冻");
@@ -667,7 +667,7 @@
                             //    throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo} 搴撳瓨鏁伴噺涓嶈冻");
                             //}
                         }
-                        
+
                         var item = new BllExportNoticeDetail()
                         {
                             SONo = billNo,
@@ -694,7 +694,7 @@
                         };
                         list.Add(item);
 
-                        
+
                         stocks.First().LockQty += d.Qty;//閿佸畾鏁伴噺
                         var i = Db.Updateable(stocks.First()).UpdateColumns(it => new { it.LockQty })
                             .ExecuteCommand();
@@ -2177,7 +2177,7 @@
                             //var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
 
                             //////瑙f瀽杩斿洖鏁版嵁 
-                            //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
+                            var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
                             //if (wcsModel.StatusCode == 0)
                             //{
                             //    //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
@@ -2455,7 +2455,7 @@
 
 
         //閲嶆柊涓嬪彂鍑哄簱浠诲姟
-        public OutCommandDto AgainSendSoTask(string taskNo, int userId, string url)
+        public OutCommandDto AgainSendSoTask(string taskNo, string Receiver, int userId, string url)
         {
             try
             {
@@ -2506,22 +2506,42 @@
                 {
                     //绋嬪簭姝e紡鍙戝竷鍚庢斁寮�
                     var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
-                    var response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS");
+                    var response = HttpHelper.DoPost(url, jsonData, Receiver == "WCS" ? "涓嬪彂缁橶CS鍑哄簱鍛戒护" : "涓嬪彂缁橝GV鍑哄簱鍛戒护", "WCS");
                     var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
 
-                    ////瑙f瀽杩斿洖鏁版嵁 
-                    var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
-                    if (wcsModel.StatusCode == 0)
+                    if (Receiver == "WCS")
                     {
-                        //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
-                        new TaskServer().EditTaskIssueOk(list, time1, time2);
+                        ////瑙f瀽杩斿洖鏁版嵁 
+                        var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
+                        if (wcsModel.StatusCode == 0)
+                        {
+                            //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
+                            new TaskServer().EditTaskIssueOk(list, time1, time2);
 
+                        }
+                        if (wcsModel.StatusCode == -1)
+                        {
+                            new TaskServer().EditTaskIssueNo(list, time1, time2, wcsModel.Msg);
+                            throw new Exception($"wcs杩斿洖鐘舵�佸紓甯革細{wcsModel.Msg}");
+                        }
                     }
-                    if (wcsModel.StatusCode == -1)
+                    else if (Receiver == "AGV")
                     {
-                        new TaskServer().EditTaskIssueNo(list, time1, time2, wcsModel.Msg);
-                        throw new Exception($"wcs杩斿洖鐘舵�佸紓甯革細{wcsModel.Msg}");
+                        ////瑙f瀽杩斿洖鏁版嵁 
+                        var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
+                        if (agvModel.Code == "0")
+                        {
+                            //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
+                            new TaskServer().EditTaskIssueOk(list, time1, time2);
+
+                        }
+                        if (agvModel.Code == "1")
+                        {
+                            new TaskServer().EditTaskIssueNo(list, time1, time2, agvModel.Message);
+                            throw new Exception($"agv杩斿洖鐘舵�佸紓甯革細{agvModel.Message}");
+                        }
                     }
+                    
                 }
                 catch (Exception ex)
                 {
@@ -2854,11 +2874,11 @@
                             throw new Exception("搴撳瓨涓嶈冻,鏃犲彲鍑哄簱搴撳瓨");
                         }
                         //0:鎴愬搧鍑哄簱銆�1:棰嗘枡鍑哄簱銆�2:鎶芥鍑哄簱銆�3锛氱墿鏂欏彇鏍峰嚭搴撱��4:涓嶅悎鏍煎搧鍑哄簱銆�5:涓棿鍝佸嚭搴撱��6:浠e偍鍑哄簱銆�7:鍏朵粬鍑哄簱銆�8:瀵勫瓨鍑哄簱
-                        if (notice.Type == "0" || notice.Type == "1" )//鎴愬搧銆佸師杈呮枡鍑哄簱
+                        if (notice.Type == "0" || notice.Type == "1")//鎴愬搧銆佸師杈呮枡鍑哄簱
                         {
                             stockDetail = stockDetail.Where(m => m.InspectStatus == "1").ToList();
                         }
-                        else if (notice.Type == "3" )//鍙栨牱鍑哄簱
+                        else if (notice.Type == "3")//鍙栨牱鍑哄簱
                         {
                             stockDetail = stockDetail.Where(m => m.InspectStatus == "0").ToList();
                         }
@@ -2869,7 +2889,7 @@
                         else if (notice.Type == "4")//涓嶅悎鏍煎嚭搴�
                         {
                             stockDetail = stockDetail.Where(m => m.InspectStatus == "2").ToList();
-                        } 
+                        }
 
                         #region 鍖呰淇℃伅
 
@@ -2905,8 +2925,8 @@
                                 bNum = Convert.ToInt32(pack.L1Num);
                             }
                         }
-                       
-                        
+
+
                         //if (pNum == 0)
                         //{
                         //    throw new Exception("鏈煡璇㈠埌鐗╂枡鍖呰鎵樼鍏崇郴淇℃伅");
@@ -3125,7 +3145,7 @@
                         //    {
                         //        d.LotNo = "";
                         //    }
-                            
+
                         //}
                     }
                     notice.Status = "0";
@@ -3345,7 +3365,7 @@
                         bl.Qty += st.Qty;
                         Db.Updateable(bl).ExecuteCommand();
                     }
-                    
+
                     //搴撳瓨鏄庣粏
                     stock.LockQty += st.Qty;
                     stock.Status = stock.LockQty == stock.Qty ? "2" : "1";
diff --git a/Wms/WMS.BLL/DataServer/StockInfoServer.cs b/Wms/WMS.BLL/DataServer/StockInfoServer.cs
new file mode 100644
index 0000000..29ce25d
--- /dev/null
+++ b/Wms/WMS.BLL/DataServer/StockInfoServer.cs
@@ -0,0 +1,622 @@
+锘縰sing Dm;
+using Microsoft.IdentityModel.Tokens;
+using Model.ModelVm.DataVm;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using WMS.DAL;
+using WMS.Entity.Context;
+using WMS.Entity.DataEntity;
+using WMS.Entity.SysEntity;
+using WMS.IBLL.IDataServer;
+
+namespace WMS.BLL.DataServer
+{
+    public class StockInfoServer : DbHelper<DataStockInfo>, IStockInfoServer
+    {
+        private static readonly SqlSugarScope Db = DataContext.Db;
+
+        public StockInfoServer() : base(Db)
+        {
+        }
+
+        /// <summary>
+        /// 姣忔棩鍑屾櫒鑷姩鎵ц褰撳墠鏂规硶
+        /// 娣诲姞搴撳瓨鎬昏〃鍒板簱瀛樹俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        public string ByDayInsertStock()
+        {
+            try
+            {
+
+                string arr = "";
+                //鑾峰彇浠婃棩鏃堕棿涓庢槰鏃ユ椂闂�
+                var data1 = DateTime.Now.ToString("yyyy-MM-dd");
+                var data2 = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
+                //鑾峰彇褰撳墠搴撳瓨鎬昏〃淇℃伅
+                var stock = Db.Queryable<DataStock>().Where(a => a.IsDel == "0").ToList();
+                //浠ュ強鍓嶄竴澶╃殑搴撳瓨淇℃伅
+                var info = Db.Queryable<DataStockInfo>().Where(a => a.IsDel == "0" && a.CreateTime.Year == DateTime.Parse(data2).Year && a.CreateTime.Month == DateTime.Parse(data2).Month && a.CreateTime.Day == DateTime.Parse(data2).Day).ToList();
+                //鑾峰彇鐗╂枡淇℃伅
+                var sku = Db.Queryable<SysMaterials>().Where(a => a.IsDel == "0").ToList();
+                //鑾峰彇鍗曚綅淇℃伅
+                var unit = Db.Queryable<SysUnit>().Where(a => a.IsDel == "0").ToList();
+                Db.BeginTran();
+                List<DataStockInfo> list = new List<DataStockInfo>();
+                //楠岃瘉鏄惁瀛樺湪鍓嶄竴澶╃殑搴撳瓨淇℃伅
+                if (info.Count <= 0)
+                {
+                    //鏍规嵁搴撳瓨鎬昏〃娣诲姞瀵瑰簲搴撳瓨淇℃伅
+                    foreach (var item in stock)
+                    {
+
+                        //鑾峰彇瀵瑰簲鍗曚綅淇℃伅
+                        var unitNo = sku.Where(a => a.IsDel == "0" && a.SkuNo == item.SkuNo).Select(a => a.UnitNo).ToString();
+                        var unitName = unit.Where(a => a.IsDel == "0" && a.UnitNo == unitNo).Select(a => a.UnitName).ToString();
+
+                        var Folded = item.Standard.Split("*");
+                        int count = 0;
+                        var sum = 0m;
+                        //鑾峰彇瀵瑰簲鎶樹欢鏁伴噺
+                        foreach (var item1 in Folded)
+                        {
+                            if (count == 0)
+                            {
+                                if (item1.Contains(unitName))
+                                {
+                                    count = 1;
+                                    sum = Convert.ToDecimal(item1);
+                                }
+                            }
+                            if (count == 1)
+                            {
+                                sum *= Convert.ToDecimal(item1);
+                            }
+                        }
+                        DataStockInfo data = new DataStockInfo()
+                        {
+                            SkuNo = item.SkuNo,
+                            SkuName = item.SkuName,
+                            Standard = item.Standard,
+                            Unit = unitName,
+                            LastMonthQty = 0, //涓婃湀缁撳瓨-搴撳瓨鏁伴噺
+                            LastMonthFoldedQty = 0, //涓婃湀缁撳瓨-鎶樹欢鏁伴噺
+                            ArrDayQty = item.Qty, //鍏ュ簱鏁伴噺-褰撴棩鏁伴噺
+                            ArrDayFoldedQty = item.Qty / sum, //鍏ュ簱鏁伴噺-褰撴棩鎶樹欢鏁伴噺
+                            ArrMonthQty = item.Qty, //鍏ュ簱鏁伴噺-褰撴湀鏁伴噺
+                            ArrMonthFoldedQty = item.Qty / sum, //鍏ュ簱鏁伴噺-褰撴湀鎶樹欢鏁伴噺
+                            ArrYearQty = item.Qty, //鍏ュ簱鏁伴噺-鏈勾鏁伴噺
+                            ArrYearFoldedQty = item.Qty / sum, //鍏ュ簱鏁伴噺-鏈勾鎶樹欢鏁伴噺
+                            SoDayQty = 0, //鍑哄簱鏁伴噺-褰撴棩鏁伴噺
+                            SoDayFoldedQty = 0, //鍑哄簱鏁伴噺-褰撴棩鎶樹欢鏁伴噺
+                            SoMonthQty = 0, //鍑哄簱鏁伴噺-褰撴湀鏁伴噺
+                            SoMonthFoldedQty = 0, //鍑哄簱鏁伴噺-褰撴湀鎶樹欢鏁伴噺
+                            SoYearQty = 0, //鍑哄簱鏁伴噺-鏈勾鏁伴噺
+                            SoYearFoldedQty = 0, //鍑哄簱鏁伴噺-鏈勾鎶樹欢鏁伴噺
+                            MonthQty = item.Qty, //褰撴湀鏁伴噺-绱鏁伴噺 
+                            MonthFoldedQty = item.Qty / sum, //褰撴湀鏁伴噺-绱鎶樹欢鏁伴噺 
+                            DepositQty = 0,
+                            Qty = item.Qty,
+                            SecurityQty = sku[0].LowInventory, //鏆傜敤浣庡簱瀛�
+                            Situation = item.Qty < sku[0].LowInventory ? "1" : "0",
+                            IsDel = "0",
+                            CreateTime = DateTime.Now,
+                            CreateUser = 0,
+                            UpdateTime = null,
+                            UpdateUser = null,
+
+                        };
+
+
+                        list.Add(data);
+                    }
+                }
+                else
+                {
+                    //楠岃瘉浠婃棩鏄竴鍙疯繕鏄叾瀹�
+                    if (DateTime.Parse(data2).Day == 1)
+                    {
+                        //楠岃瘉鏈堜唤鏄惁涓�1鏈�
+                        if (DateTime.Parse(data2).Month == 1)
+                        {
+                            //1鏈�
+                            //1鏈堥渶瑕侀噸鏂拌绠楁墍鏈�
+                            foreach (var item in info)
+                            {
+                                var Folded = item.Standard.Split("*");
+                                int count = 0;
+                                var sum = 0m;
+                                //鑾峰彇瀵瑰簲鎶樹欢鏁伴噺
+                                foreach (var item1 in Folded)
+                                {
+                                    if (count == 0)
+                                    {
+                                        if (item1.Contains(item.Unit))
+                                        {
+                                            count = 1;
+                                            sum = Convert.ToDecimal(item1);
+                                        }
+                                    }
+                                    if (count == 1)
+                                    {
+                                        sum *= Convert.ToDecimal(item1);
+                                    }
+                                }
+
+                                DataStockInfo data = new DataStockInfo()
+                                {
+                                    SkuNo = item.SkuNo,
+                                    SkuName = item.SkuName,
+                                    Standard = item.Standard,
+                                    Unit = item.Unit,
+
+                                    LastMonthQty = item.Qty, //涓婃湀缁撳瓨-搴撳瓨鏁伴噺
+                                    LastMonthFoldedQty = item.Qty / sum, //涓婃湀缁撳瓨-鎶樹欢鏁伴噺
+                                    ArrDayQty = 0, //鍏ュ簱鏁伴噺-褰撴棩鏁伴噺
+                                    ArrDayFoldedQty = 0, //鍏ュ簱鏁伴噺-褰撴棩鎶樹欢鏁伴噺
+                                    ArrMonthQty = 0, //鍏ュ簱鏁伴噺-褰撴湀鏁伴噺
+                                    ArrMonthFoldedQty = 0, //鍏ュ簱鏁伴噺-褰撴湀鎶樹欢鏁伴噺
+                                    ArrYearQty = 0, //鍏ュ簱鏁伴噺-鏈勾鏁伴噺
+                                    ArrYearFoldedQty = 0, //鍏ュ簱鏁伴噺-鏈勾鎶樹欢鏁伴噺
+                                    SoDayQty = 0, //鍑哄簱鏁伴噺-褰撴棩鏁伴噺
+                                    SoDayFoldedQty = 0, //鍑哄簱鏁伴噺-褰撴棩鎶樹欢鏁伴噺
+                                    SoMonthQty = 0, //鍑哄簱鏁伴噺-褰撴湀鏁伴噺
+                                    SoMonthFoldedQty = 0, //鍑哄簱鏁伴噺-褰撴湀鎶樹欢鏁伴噺
+                                    SoYearQty = 0, //鍑哄簱鏁伴噺-鏈勾鏁伴噺
+                                    SoYearFoldedQty = 0, //鍑哄簱鏁伴噺-鏈勾鎶樹欢鏁伴噺
+                                    MonthQty = 0, //褰撴湀鏁伴噺-绱鏁伴噺 
+                                    MonthFoldedQty = 0, //褰撴湀鏁伴噺-绱鎶樹欢鏁伴噺 
+
+                                    DepositQty = item.DepositQty,
+                                    Qty = item.Qty,
+                                    SecurityQty = item.SecurityQty,
+                                    Situation = item.Qty < item.SecurityQty ? "1" : "0",
+                                    IsDel = "0",
+                                    CreateTime = DateTime.Now,
+                                    CreateUser = 0,
+                                    UpdateTime = null,
+                                    UpdateUser = null,
+
+                                };
+
+
+                                list.Add(data);
+                            }
+                        }
+                        else if (DateTime.Parse(data2).Month != 1)
+                        {
+                            //1鍙�
+                            //1鍙烽渶瑕侀噸鏂拌绠楀綋鏈堜笌涓婃湀銆佸綋鏃�
+                            foreach (var item in info)
+                            {
+                                var Folded = item.Standard.Split("*");
+                                int count = 0;
+                                var sum = 0m;
+                                //鑾峰彇瀵瑰簲鎶樹欢鏁伴噺
+                                foreach (var item1 in Folded)
+                                {
+                                    if (count == 0)
+                                    {
+                                        if (item1.Contains(item.Unit))
+                                        {
+                                            count = 1;
+                                            sum = Convert.ToDecimal(item1);
+                                        }
+                                    }
+                                    if (count == 1)
+                                    {
+                                        sum *= Convert.ToDecimal(item1);
+                                    }
+                                }
+
+                                DataStockInfo data = new DataStockInfo()
+                                {
+                                    SkuNo = item.SkuNo,
+                                    SkuName = item.SkuName,
+                                    Standard = item.Standard,
+                                    Unit = item.Unit,
+
+                                    LastMonthQty = item.Qty, //涓婃湀缁撳瓨-搴撳瓨鏁伴噺
+                                    LastMonthFoldedQty = item.Qty / sum, //涓婃湀缁撳瓨-鎶樹欢鏁伴噺
+                                    ArrDayQty = 0, //鍏ュ簱鏁伴噺-褰撴棩鏁伴噺
+                                    ArrDayFoldedQty = 0, //鍏ュ簱鏁伴噺-褰撴棩鎶樹欢鏁伴噺
+                                    ArrMonthQty = 0, //鍏ュ簱鏁伴噺-褰撴湀鏁伴噺
+                                    ArrMonthFoldedQty = 0, //鍏ュ簱鏁伴噺-褰撴湀鎶樹欢鏁伴噺
+                                    ArrYearQty = item.ArrYearQty, //鍏ュ簱鏁伴噺-鏈勾鏁伴噺
+                                    ArrYearFoldedQty = item.ArrYearQty / sum, //鍏ュ簱鏁伴噺-鏈勾鎶樹欢鏁伴噺
+                                    SoDayQty = 0, //鍑哄簱鏁伴噺-褰撴棩鏁伴噺
+                                    SoDayFoldedQty = 0, //鍑哄簱鏁伴噺-褰撴棩鎶樹欢鏁伴噺
+                                    SoMonthQty = 0, //鍑哄簱鏁伴噺-褰撴湀鏁伴噺
+                                    SoMonthFoldedQty = 0, //鍑哄簱鏁伴噺-褰撴湀鎶樹欢鏁伴噺
+                                    SoYearQty = item.SoYearQty, //鍑哄簱鏁伴噺-鏈勾鏁伴噺
+                                    SoYearFoldedQty = item.SoYearQty / sum, //鍑哄簱鏁伴噺-鏈勾鎶樹欢鏁伴噺
+                                    MonthQty = item.Qty, //褰撴湀鏁伴噺-绱鏁伴噺 
+                                    MonthFoldedQty = item.Qty / sum, //褰撴湀鏁伴噺-绱鎶樹欢鏁伴噺
+
+                                    DepositQty = item.DepositQty,
+                                    Qty = item.Qty,
+                                    SecurityQty = item.SecurityQty,
+                                    Situation = item.Qty < item.SecurityQty ? "1" : "0",
+                                    IsDel = "0",
+                                    CreateTime = DateTime.Now,
+                                    CreateUser = 0,
+                                    UpdateTime = null,
+                                    UpdateUser = null,
+
+                                };
+
+
+                                list.Add(data);
+                            }
+                        }
+                        #region 娉ㄩ噴渚嬪瓙
+                        ////1鍙�
+                        ////1鍙烽渶瑕侀噸鏂拌绠楀綋鏈堜笌涓婃湀銆佸綋鏃�
+                        //foreach (var item in info)
+                        //{
+                        //    DataStockInfo data = new DataStockInfo()
+                        //    {
+                        //        SkuNo = item.SkuNo,
+                        //        SkuName = item.SkuName,
+                        //        Standard = item.Standard,
+                        //        Unit = item.Unit,
+                        //        LastMonthQty = item.Qty,
+                        //        ArrDayQty = 0,
+                        //        ArrMonthQty = 0,
+                        //        ArrYearQty = item.ArrYearQty,
+                        //        SoDayQty = 0,
+                        //        SoMonthQty = 0,
+                        //        SoYearQty = item.SoYearQty,
+                        //        MonthQty = item.Qty,
+                        //        DepositQty = item.DepositQty,
+                        //        Qty = item.Qty,
+                        //        SecurityQty = item.SecurityQty,
+                        //        Situation = item.Qty >= item.SecurityQty ? "0" : "1",
+                        //        IsDel = "0",
+                        //        CreateTime = DateTime.Now,
+                        //        CreateUser = 0,
+                        //        UpdateTime = null,
+                        //        UpdateUser = null,
+
+                        //    };
+
+
+                        //    list.Add(data);
+                        //}
+
+                        #endregion
+                    }
+                    else
+                    {
+                        //鍏跺畠
+                        //闇�瑕佽绠楀綋鏃�
+                        foreach (var item in info)
+                        {
+                            var Folded = item.Standard.Split("*");
+                            int count = 0;
+                            var sum = 0m;
+                            //鑾峰彇瀵瑰簲鎶樹欢鏁伴噺
+                            foreach (var item1 in Folded)
+                            {
+                                if (count == 0)
+                                {
+                                    if (item1.Contains(item.Unit))
+                                    {
+                                        count = 1;
+                                        sum = Convert.ToDecimal(item1);
+                                    }
+                                }
+                                if (count == 1)
+                                {
+                                    sum *= Convert.ToDecimal(item1);
+                                }
+                            }
+
+                            DataStockInfo data = new DataStockInfo()
+                            {
+                                SkuNo = item.SkuNo,
+                                SkuName = item.SkuName,
+                                Standard = item.Standard,
+                                Unit = item.Unit,
+
+                                LastMonthQty = item.LastMonthQty, //涓婃湀缁撳瓨-搴撳瓨鏁伴噺
+                                LastMonthFoldedQty = item.LastMonthQty / sum, //涓婃湀缁撳瓨-鎶樹欢鏁伴噺
+                                ArrDayQty = 0, //鍏ュ簱鏁伴噺-褰撴棩鏁伴噺
+                                ArrDayFoldedQty = 0, //鍏ュ簱鏁伴噺-褰撴棩鎶樹欢鏁伴噺
+                                ArrMonthQty = item.ArrMonthQty, //鍏ュ簱鏁伴噺-褰撴湀鏁伴噺
+                                ArrMonthFoldedQty = item.ArrMonthQty / sum, //鍏ュ簱鏁伴噺-褰撴湀鎶樹欢鏁伴噺
+                                ArrYearQty = item.ArrYearQty, //鍏ュ簱鏁伴噺-鏈勾鏁伴噺
+                                ArrYearFoldedQty = item.ArrYearQty / sum, //鍏ュ簱鏁伴噺-鏈勾鎶樹欢鏁伴噺
+                                SoDayQty = 0, //鍑哄簱鏁伴噺-褰撴棩鏁伴噺
+                                SoDayFoldedQty = 0, //鍑哄簱鏁伴噺-褰撴棩鎶樹欢鏁伴噺
+                                SoMonthQty = item.SoMonthQty, //鍑哄簱鏁伴噺-褰撴湀鏁伴噺
+                                SoMonthFoldedQty = item.SoMonthQty / sum, //鍑哄簱鏁伴噺-褰撴湀鎶樹欢鏁伴噺
+                                SoYearQty = item.SoYearQty, //鍑哄簱鏁伴噺-鏈勾鏁伴噺
+                                SoYearFoldedQty = item.SoYearQty / sum, //鍑哄簱鏁伴噺-鏈勾鎶樹欢鏁伴噺
+                                MonthQty = item.MonthQty, //褰撴湀鏁伴噺-绱鏁伴噺 
+                                MonthFoldedQty = item.MonthQty / sum, //褰撴湀鏁伴噺-绱鎶樹欢鏁伴噺
+
+                                DepositQty = item.DepositQty,
+                                Qty = item.Qty,
+                                SecurityQty = item.SecurityQty,
+                                Situation = item.Qty < item.SecurityQty ? "1" : "0",
+                                IsDel = "0",
+                                CreateTime = DateTime.Now,
+                                CreateUser = 0,
+                                UpdateTime = null,
+                                UpdateUser = null,
+
+                            };
+
+
+                            list.Add(data);
+                        }
+                    }
+                }
+
+
+                //娣诲姞搴撳瓨淇℃伅
+                Db.Insertable<DataStockInfo>(list).ExecuteCommand();
+
+                Db.CommitTran();
+                return arr;
+            }
+            catch (Exception ex)
+            {
+                Db.RollbackTran();
+                throw ex;
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇瀵瑰簲澶╂暟淇℃伅
+        /// </summary>
+        /// <param name="StartDate"></param>
+        /// <returns></returns>
+        public List<DataStockInfoVM> GetDataStockInfo(string StartDate)
+        {
+            try
+            {
+                var list = Db.Queryable<DataStockInfo>().Where(a => a.IsDel == "0").ToList();
+
+                //楠岃瘉鏄惁瀛樺湪閫変腑鏃堕棿 涓嶅瓨鍦ㄥ垯璧嬪�间粖鏃ユ椂闂�
+                if (string.IsNullOrEmpty(StartDate))
+                {
+                    StartDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ff");
+                }
+
+                //鏍规嵁鏃堕棿鑾峰彇瀵瑰簲鏃ユ湡鐨勫簱瀛樹俊鎭�
+                if (!string.IsNullOrEmpty(StartDate))
+                {
+                    list = list.Where(a => a.CreateTime.Year == DateTime.Parse(StartDate).Year && a.CreateTime.Month == DateTime.Parse(StartDate).Month && a.CreateTime.Day == DateTime.Parse(StartDate).Day).ToList();
+                }
+
+                List<DataStockInfoVM> list1 = new List<DataStockInfoVM>();
+
+                foreach (var item in list)
+                {
+                    DataStockInfoVM info = new DataStockInfoVM()
+                    {
+                        SkuNo = item.SkuNo, //鐗╂枡缂栫爜
+                        SkuName = item.SkuName, //鐗╂枡鍚嶇О
+                        Standard = item.Standard, //瑙勬牸
+                        Unit = item.Unit, //鍗曚綅
+                        LastMonthQty = item.LastMonthQty, //涓婃湀缁撳瓨-搴撳瓨鏁伴噺
+                        LastMonthFoldedQty = item.LastMonthFoldedQty, //涓婃湀缁撳瓨-鎶樹欢鏁伴噺
+                        ArrDayQty = item.ArrDayQty, //鍏ュ簱鏁伴噺-褰撴棩鏁伴噺
+                        ArrDayFoldedQty = item.ArrDayFoldedQty, //鍏ュ簱鏁伴噺-褰撴棩鎶樹欢鏁伴噺
+                        ArrMonthQty = item.ArrMonthQty, //鍏ュ簱鏁伴噺-褰撴湀鏁伴噺
+                        ArrMonthFoldedQty = item.ArrMonthFoldedQty, //鍏ュ簱鏁伴噺-褰撴湀鎶樹欢鏁伴噺
+                        ArrYearQty = item.ArrYearQty, //鍏ュ簱鏁伴噺-鏈勾鏁伴噺
+                        ArrYearFoldedQty = item.ArrYearFoldedQty, //鍏ュ簱鏁伴噺-鏈勾鎶樹欢鏁伴噺
+                        SoDayQty = item.SoDayQty, //鍑哄簱鏁伴噺-褰撴棩鏁伴噺
+                        SoDayFoldedQty = item.SoDayFoldedQty, //鍑哄簱鏁伴噺-褰撴棩鎶樹欢鏁伴噺
+                        SoMonthQty = item.SoMonthQty, //鍑哄簱鏁伴噺-褰撴湀鏁伴噺
+                        SoMonthFoldedQty = item.SoMonthFoldedQty, //鍑哄簱鏁伴噺-褰撴湀鎶樹欢鏁伴噺
+                        SoYearQty = item.SoYearQty, //鍑哄簱鏁伴噺-鏈勾鏁伴噺
+                        SoYearFoldedQty = item.SoYearFoldedQty, //鍑哄簱鏁伴噺-鏈勾鎶樹欢鏁伴噺
+                        MonthQty = item.MonthQty, //褰撴湀鏁伴噺-绱鏁伴噺 
+                        MonthFoldedQty = item.MonthFoldedQty, //褰撴湀鏁伴噺-绱鎶樹欢鏁伴噺 
+                        DepositQty = item.DepositQty, //瀵勫瓨鏁伴噺
+                        Qty = item.Qty, //鏈湀搴撳瓨鏁伴噺
+                        SecurityQty = item.SecurityQty, //瀹夊叏搴撳瓨
+                        Situation = item.Situation, //瀹夊叏搴撳瓨鎯呭喌
+                        IsDel = item.IsDel, //鏄惁鍒犻櫎
+                        CreateTime = item.CreateTime, //鍒涘缓鏃堕棿
+                        CreateUser = item.CreateUser, //鍒涘缓浜�
+                        UpdateTime = item.UpdateTime, //鏇存柊鏃堕棿
+                        UpdateUser = item.UpdateUser, //鏇存柊浜�
+                    };
+                    list1.Add(info);
+                }
+
+                return list1;
+            }
+            catch (Exception ex)
+            {
+
+                throw ex;
+            }
+        }
+
+
+        /// <summary>
+        /// 鏍规嵁鍑哄叆搴撴柊澧炴垨淇敼淇℃伅
+        /// </summary>
+        /// <param name="type">绫诲瀷 0锛氬叆搴� 1锛氬嚭搴�</param>
+        /// <param name="qty">鍏ュ簱鎴栧嚭搴撴暟閲�</param>
+        /// <param name="isDeposit">鏄惁瀵勫瓨 0锛氭槸 1锛氬惁</param>
+        /// <param name="skuNo">鐗╂枡缂栫爜</param>
+        /// <returns></returns>
+        public bool AddOrUptStockInfo(string type, decimal qty, string isDeposit, string skuNo)
+        {
+            try
+            {
+                int a = 0;
+                bool isTrue = false;
+                //鑾峰彇浠婃棩鏃堕棿
+                string date = DateTime.Now.ToString("yyyy-MM-dd");
+                //鏍规嵁鐗╂枡淇℃伅鑾峰彇浠婃棩搴撳瓨淇℃伅
+                var list = Db.Queryable<DataStockInfo>().First(a => a.IsDel == "0" && a.SkuNo == skuNo && a.CreateTime.Year == DateTime.Parse(date).Year && a.CreateTime.Month == DateTime.Parse(date).Month && a.CreateTime.Day == DateTime.Parse(date).Day);
+                Db.BeginTran();
+                //楠岃瘉鏄惁瀛樺湪搴撳瓨淇℃伅
+                if (list == null)
+                {
+                    //鏍规嵁鐗╂枡缂栫爜鑾峰彇鐗╂枡淇℃伅
+                    var sku = Db.Queryable<SysMaterials>().First(a => a.IsDel == "0" && a.SkuNo == skuNo);
+                    //鏍规嵁鐗╂枡淇℃伅鑾峰彇鍗曚綅淇℃伅
+                    var unit = Db.Queryable<SysUnit>().First(a => a.IsDel == "0" && a.UnitNo == sku.UnitNo);
+                    //鑾峰彇瀵瑰簲鎶樹欢鏁伴噺
+                    var Folded = sku.Standard.Split("*");
+                    int count = 0;
+                    var sum = 0m;
+                    foreach (var item1 in Folded)
+                    {
+                        if (count == 0)
+                        {
+                            if (item1.Contains(unit.UnitName))
+                            {
+                                count = 1;
+                                sum = Convert.ToDecimal(item1);
+                            }
+                        }
+                        if (count == 1)
+                        {
+                            sum *= Convert.ToDecimal(item1);
+                        }
+                    }
+                    DataStockInfo info = new DataStockInfo()
+                    {
+                        SkuNo = sku.SkuNo,
+                        SkuName = sku.SkuName,
+                        Standard = sku.Standard,
+                        Unit = unit.UnitName,
+                        LastMonthQty = 0,
+                        ArrDayQty = 0,
+                        ArrMonthQty = 0,
+                        ArrYearQty = 0,
+                        SoDayQty = 0,
+                        SoMonthQty = 0,
+                        SoYearQty = 0,
+                        MonthQty = 0,
+                        DepositQty = 0,
+                        Qty = 0,
+                        SecurityQty = sku.LowInventory,
+                        Situation = qty < sku.LowInventory ? "1" : "0",
+                        IsDel = "0",
+                        CreateTime = DateTime.Now,
+                        CreateUser = 0,
+                        UpdateTime = null,
+                        UpdateUser = null,
+
+                    };
+
+                    if (type == "0") //鍏ュ簱
+                    {
+                        //缂栬緫瀵瑰簲搴撳瓨淇℃伅
+                        info.ArrDayQty += qty; //褰撴棩鍏ュ簱鏁伴噺
+                        info.ArrDayFoldedQty += qty; //褰撴棩鍏ュ簱鏁伴噺-鎶樹欢
+                        info.ArrMonthQty += qty; //褰撴湀鍏ュ簱鏁伴噺
+                        info.ArrMonthFoldedQty += qty; //褰撴湀鍏ュ簱鏁伴噺-鎶樹欢
+                        info.ArrYearQty += qty; //浠婂勾鍏ュ簱鏁伴噺
+                        info.ArrYearFoldedQty += qty; //浠婂勾鍏ュ簱鏁伴噺-鎶樹欢
+                        info.MonthQty += qty; //褰撴湀缁撳瓨
+                        info.MonthFoldedQty += qty; //褰撴湀缁撳瓨-鎶樹欢
+
+                        if (isDeposit == "0")
+                        {
+                            //楠岃瘉鏄惁涓哄瘎瀛樻暟閲�
+                            info.DepositQty += qty; //瀵勫瓨鏁伴噺
+                        }
+                        info.Qty = info.MonthQty + info.DepositQty; //鏈湀搴撳瓨鏁伴噺
+                    }
+                    else if (type == "1") //鍑哄簱
+                    {
+                        //缂栬緫瀵瑰簲搴撳瓨淇℃伅
+                        info.SoDayQty += qty; //褰撴棩鍑哄簱鏁伴噺
+                        info.ArrDayFoldedQty += qty; //褰撴棩鍏ュ簱鏁伴噺-鎶樹欢
+                        info.ArrMonthQty += qty; //褰撴湀鍏ュ簱鏁伴噺
+                        info.ArrMonthFoldedQty += qty; //褰撴湀鍏ュ簱鏁伴噺-鎶樹欢
+                        info.ArrYearQty += qty; //浠婂勾鍏ュ簱鏁伴噺
+                        info.ArrYearFoldedQty += qty; //浠婂勾鍏ュ簱鏁伴噺-鎶樹欢
+                        info.MonthQty += qty; //褰撴湀缁撳瓨
+                        info.MonthFoldedQty += qty; //褰撴湀缁撳瓨-鎶樹欢
+
+                        if (isDeposit == "0")
+                        {
+                            //楠岃瘉鏄惁涓哄瘎瀛樻暟閲�
+                            info.DepositQty -= qty; //瀵勫瓨鏁伴噺
+                        }
+                        info.Qty = info.MonthQty + info.DepositQty; //鏈湀搴撳瓨鏁伴噺
+                    }
+                    //鏂板搴撳瓨淇℃伅
+                    a = Db.Insertable(info).ExecuteCommand();
+                }
+                else
+                {
+                    if (type == "0") //鍏ュ簱
+                    {
+                        //缂栬緫瀵瑰簲搴撳瓨淇℃伅
+                        list.ArrDayQty += qty; //褰撴棩鍑哄簱鏁伴噺
+                        list.ArrDayFoldedQty += qty; //褰撴棩鍏ュ簱鏁伴噺-鎶樹欢
+                        list.ArrMonthQty += qty; //褰撴湀鍏ュ簱鏁伴噺
+                        list.ArrMonthFoldedQty += qty; //褰撴湀鍏ュ簱鏁伴噺-鎶樹欢
+                        list.ArrYearQty += qty; //浠婂勾鍏ュ簱鏁伴噺
+                        list.ArrYearFoldedQty += qty; //浠婂勾鍏ュ簱鏁伴噺-鎶樹欢
+                        list.MonthQty += qty; //褰撴湀缁撳瓨
+                        list.MonthFoldedQty += qty; //褰撴湀缁撳瓨-鎶樹欢
+
+                        if (isDeposit == "0")
+                        {
+                            //楠岃瘉鏄惁涓哄瘎瀛樻暟閲�
+                            list.DepositQty += qty; //瀵勫瓨鏁伴噺
+                        }
+                        list.Qty = list.MonthQty + list.DepositQty; //鏈湀搴撳瓨鏁伴噺
+                        list.Situation = list.Qty < list.SecurityQty ? "1" : "0"; //瀹夊叏搴撳瓨鎯呭喌
+
+
+                    }
+                    else if (type == "1") //鍑哄簱
+                    {
+                        //缂栬緫瀵瑰簲搴撳瓨淇℃伅
+                        list.SoDayQty += qty; //褰撴棩鍑哄簱鏁伴噺
+                        list.ArrDayFoldedQty += qty; //褰撴棩鍏ュ簱鏁伴噺-鎶樹欢
+                        list.ArrMonthQty += qty; //褰撴湀鍏ュ簱鏁伴噺
+                        list.ArrMonthFoldedQty += qty; //褰撴湀鍏ュ簱鏁伴噺-鎶樹欢
+                        list.ArrYearQty += qty; //浠婂勾鍏ュ簱鏁伴噺
+                        list.ArrYearFoldedQty += qty; //浠婂勾鍏ュ簱鏁伴噺-鎶樹欢
+                        list.MonthQty += qty; //褰撴湀缁撳瓨
+                        list.MonthFoldedQty += qty; //褰撴湀缁撳瓨-鎶樹欢
+
+                        if (isDeposit == "0")
+                        {
+                            //楠岃瘉鏄惁涓哄瘎瀛樻暟閲�
+                            list.DepositQty -= qty; //瀵勫瓨鏁伴噺
+                        }
+                        list.Qty = list.MonthQty + list.DepositQty; //鏈湀搴撳瓨鏁伴噺
+                        list.Situation = list.Qty < list.SecurityQty ? "1" : "0"; //瀹夊叏搴撳瓨鎯呭喌
+                    }
+                    a = Db.Updateable(list).ExecuteCommand();
+                }
+
+                Db.CommitTran();
+                if (a == 1)
+                {
+                    isTrue = true;
+                }
+
+                return isTrue;
+
+            }
+            catch (Exception ex)
+            {
+                Db.RollbackTran();
+                throw ex;
+            }
+        }
+
+    }
+}
diff --git a/Wms/WMS.Entity/DataEntity/DataStockInfo.cs b/Wms/WMS.Entity/DataEntity/DataStockInfo.cs
new file mode 100644
index 0000000..a79ed61
--- /dev/null
+++ b/Wms/WMS.Entity/DataEntity/DataStockInfo.cs
@@ -0,0 +1,175 @@
+锘縰sing Microsoft.IdentityModel.Tokens;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WMS.Entity.DataEntity
+{
+    ///<summary>
+    ///搴撳瓨璁板綍琛�
+    ///</summary>
+    [SugarTable("DataStockInfo")]
+    public class DataStockInfo : BaseEntity
+    {
+        /// <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:True
+        /// </summary>           
+        public string Standard { get; set; }
+
+        /// <summary>
+        /// Desc:鍗曚綅
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// Desc:涓婃湀缁撳瓨-搴撳瓨鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal LastMonthFoldedQty { get; set; }
+        /// <summary>
+        /// Desc:涓婃湀缁撳瓨-鎶樹欢鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal LastMonthQty { get; set; }
+
+        /// <summary>
+        /// Desc:鍏ュ簱鏁伴噺-褰撴棩鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal ArrDayQty { get; set; }
+        /// <summary>
+        /// Desc:鍏ュ簱鏁伴噺-褰撴棩鎶樹欢鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal ArrDayFoldedQty { get; set; }
+
+        /// <summary>
+        /// Desc:鍏ュ簱鏁伴噺-鏈湀鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal ArrMonthQty { get; set; }
+        /// <summary>
+        /// Desc:鍏ュ簱鏁伴噺-鏈湀鎶樹欢鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal ArrMonthFoldedQty { get; set; }
+
+        /// <summary>
+        /// Desc:鍏ュ簱鏁伴噺-鏈勾鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal ArrYearQty { get; set; }
+        /// <summary>
+        /// Desc:鍏ュ簱鏁伴噺-鏈勾鎶樹欢鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal ArrYearFoldedQty { get; set; }
+
+        /// <summary>
+        /// Desc:鍑哄簱鏁伴噺-褰撴棩鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal SoDayQty { get; set; }
+        /// <summary>
+        /// Desc:鍑哄簱鏁伴噺-褰撴棩鎶樹欢鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal SoDayFoldedQty { get; set; }
+
+        /// <summary>
+        /// Desc:鍑哄簱鏁伴噺-鏈湀鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal SoMonthQty { get; set; }
+        /// <summary>
+        /// Desc:鍑哄簱鏁伴噺-鏈湀鎶樹欢鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal SoMonthFoldedQty { get; set; }
+
+        /// <summary>
+        /// Desc:鍑哄簱鏁伴噺-鏈勾鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal SoYearQty { get; set; }
+        /// <summary>
+        /// Desc:鍑哄簱鏁伴噺-鏈勾鎶樹欢鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal SoYearFoldedQty { get; set; }
+
+        /// <summary>
+        /// Desc:褰撴湀缁撳瓨-绱鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal MonthQty { get; set; }
+        /// <summary>
+        /// Desc:褰撴湀缁撳瓨-绱鎶樹欢鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal MonthFoldedQty { get; set; }
+
+        /// <summary>
+        /// Desc:瀵勫瓨鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal DepositQty { get; set; }
+
+        /// <summary>
+        /// Desc:鏈湀搴撳瓨鏁伴噺
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// Desc:瀹夊叏搴撳瓨
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public decimal SecurityQty { get; set; }
+
+        /// <summary>
+        /// Desc:瀹夊叏搴撳瓨鎯呭喌
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public string Situation { get; set; }
+    }
+}
diff --git a/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs b/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
index d481333..462db76 100644
--- a/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
+++ b/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
@@ -149,7 +149,7 @@
         /// <param name="userId">鎿嶄綔浜�</param> 
         /// <param name="url">涓嬪彂璺緞</param> 
         /// <returns></returns>
-        OutCommandDto AgainSendSoTask(string taskNo, int userId,string url);
+        OutCommandDto AgainSendSoTask(string taskNo, string Receiver, int userId,string url);
         /// <summary>
         /// 鎵嬪姩鍙栨秷鍑哄簱浠诲姟
         /// </summary>
diff --git a/Wms/WMS.IBLL/IDataServer/IStockInfoServer.cs b/Wms/WMS.IBLL/IDataServer/IStockInfoServer.cs
new file mode 100644
index 0000000..d2b55b5
--- /dev/null
+++ b/Wms/WMS.IBLL/IDataServer/IStockInfoServer.cs
@@ -0,0 +1,35 @@
+锘縰sing Model.ModelVm.DataVm;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using WMS.Entity.DataEntity;
+
+namespace WMS.IBLL.IDataServer
+{
+    public interface IStockInfoServer
+    {
+        /// <summary>
+        /// 姣忔棩鍑屾櫒鑷姩鎵ц褰撳墠鏂规硶
+        /// 娣诲姞搴撳瓨鎬昏〃鍒板簱瀛樹俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        string ByDayInsertStock();
+
+        /// <summary>
+        /// 鑾峰彇瀵瑰簲澶╂暟淇℃伅
+        /// </summary>
+        /// <param name="StartDate"></param>
+        /// <returns></returns>
+        List<DataStockInfoVM> GetDataStockInfo(string StartDate);
+
+        /// <summary>
+        /// 鏍规嵁鍑哄叆搴撴柊澧炴垨淇敼淇℃伅
+        /// </summary>
+        /// <param name="type">绫诲瀷 0锛氬叆搴� 1锛氬嚭搴�</param>
+        /// <param name="qty">鍏ュ簱鎴栧嚭搴撴暟閲�</param>
+        /// <param name="isDeposit">鏄惁瀵勫瓨 0锛氭槸 1锛氬惁</param>
+        /// <param name="skuNo">鐗╂枡缂栫爜</param>
+        /// <returns></returns>
+        bool AddOrUptStockInfo(string type, decimal qty, string isDeposit, string skuNo);
+    }
+}
diff --git a/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs b/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs
index 572ea51..b125082 100644
--- a/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs
+++ b/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs
@@ -129,7 +129,7 @@
         /// <param name="palletNo"></param>
         /// <param name="areaNo"></param>
         /// <param name="ruku"></param>
-        void AgvTransport(string palletNo, string areaNo, string ruku, int userId);
+        void AgvTransport(string palletNo, string areaNo, string ruku, int userId,string url);
         /// <summary>
         ///  agv杞繍鍛煎彨灏忚溅鍙栬揣
         /// </summary>
@@ -137,7 +137,7 @@
         /// <param name="palletNo"></param>
         /// <param name="areaNo"></param>
         /// <param name="userId"></param>
-        void AgvTransport2(string soNo, string palletNo, string areaNo, int userId);
+        void AgvTransport2(string soNo, string palletNo, string areaNo, int userId, string url);
         #endregion
     }
 }
diff --git a/Wms/Wms/Controllers/BllSoController.cs b/Wms/Wms/Controllers/BllSoController.cs
index 489c5f2..f64a0bd 100644
--- a/Wms/Wms/Controllers/BllSoController.cs
+++ b/Wms/Wms/Controllers/BllSoController.cs
@@ -726,7 +726,7 @@
         /// <param name="taskNo">浠诲姟鍙�</param>
         /// <returns></returns>
         [HttpGet]
-        public IActionResult AgainSendSoTask(string taskNo)
+        public IActionResult AgainSendSoTask(string taskNo, string Receiver)
         {
             try
             {
@@ -741,7 +741,7 @@
                 {
                     return Ok(new { code = 1, msg = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" });
                 }
-                _exNoticeSvc.AgainSendSoTask(taskNo, int.Parse(userId),"");
+                _exNoticeSvc.AgainSendSoTask(taskNo,Receiver, int.Parse(userId),"");
 
                 return Ok(new { code = 0, msg = "鎴愬姛涓嬪彂浠诲姟", data = "" });
 
diff --git a/Wms/Wms/Controllers/DownApiController.cs b/Wms/Wms/Controllers/DownApiController.cs
index 558463d..48ba624 100644
--- a/Wms/Wms/Controllers/DownApiController.cs
+++ b/Wms/Wms/Controllers/DownApiController.cs
@@ -13,6 +13,7 @@
 using WMS.IBLL.IBllSoServer;
 using WMS.IBLL.ILogServer;
 using Wms.Tools;
+using System.Collections.Generic;
 
 namespace Wms.Controllers
 {
@@ -49,7 +50,7 @@
         /// <returns></returns>
         [Authorize]
         [HttpGet]
-        public IActionResult IssueOutHouse(string soNo,string unstackingMode, string outMode,string loadingAddre)
+        public IActionResult IssueOutHouse(string soNo, string unstackingMode, string outMode, string loadingAddre)
         {
             try
             {
@@ -70,10 +71,10 @@
                 //    return Ok(new { code = 1, msg = "璇烽�夋嫨鍑哄簱鍙�" });
                 //}
 
-                var list = _exNoticeSvc.IssueOutHouse(soNo,unstackingMode, outMode,loadingAddre, int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl,out string str);
-                
-                return Ok(new { code = 0, msg = str , data = list }); 
-                
+                var list = _exNoticeSvc.IssueOutHouse(soNo, unstackingMode, outMode, loadingAddre, int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl, out string str);
+
+                return Ok(new { code = 0, msg = str, data = list });
+
             }
             catch (Exception e)
             {
@@ -87,7 +88,7 @@
         /// <param name="taskNo"></param>
         /// <returns></returns>
         [HttpGet]
-        public IActionResult AgainSendSoTask(string taskNo)
+        public IActionResult AgainSendSoTask(string taskNo,string Receiver)
         {
             try
             {
@@ -102,8 +103,20 @@
                 {
                     return Ok(new { code = 1, msg = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" });
                 }
-                var list = _exNoticeSvc.AgainSendSoTask(taskNo, int.Parse(userId),_config.WcsHost + _config.IssueComApiUrl2);
-               
+                //var list = _exNoticeSvc.AgainSendSoTask(taskNo, int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl2);
+                OutCommandDto list = new OutCommandDto();
+                if (Receiver == "WCS")
+                {
+                    //闇�鍒ゆ柇AGV鎴朩CS鐨勫嚭搴撲换鍔�
+                    //wcs
+                    list = _exNoticeSvc.AgainSendSoTask(taskNo, Receiver, int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl2);
+                }
+                else if(Receiver == "AGV")
+                {
+                    //agv
+                    list = _exNoticeSvc.AgainSendSoTask(taskNo, Receiver, int.Parse(userId), _config.WcsHost + _config.ContinueTask);
+                }
+
                 return Ok(new { code = 0, msg = "閲嶆柊涓嬪彂宸插畬鎴�", data = list });
 
 
@@ -122,7 +135,7 @@
         /// <returns></returns>
         [Authorize]
         [HttpGet]
-        public IActionResult CheckOutHouse(string crNo,string outMode)
+        public IActionResult CheckOutHouse(string crNo, string outMode)
         {
             try
             {
@@ -138,7 +151,7 @@
                     return Ok(new { code = 1, msg = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" });
                 }
 
-                var list = _crCheckSvc.CheckOutHouse(crNo, outMode,int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl, out string str);
+                var list = _crCheckSvc.CheckOutHouse(crNo, outMode, int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl, out string str);
 
                 return Ok(new { code = 0, msg = str, data = list });
 
@@ -194,19 +207,19 @@
         public IActionResult RequestRoadWay(RequestLocate model)
         {
             var logStr = "";
-            
+
             logStr = $@".\log\WCS\WCS鐢宠宸烽亾" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
-            
+
             try
             {
-                 
+
                 var jsonData = JsonConvert.SerializeObject(model);
                 LogFile.SaveLogToFile($"WCS鐢宠宸烽亾锛�( {jsonData} ),", logStr);
-                
-                var list = _asnPalletBindSvc.RequestRoadWay(model.PalletNo, model.HouseNo );
+
+                var list = _asnPalletBindSvc.RequestRoadWay(model.PalletNo, model.HouseNo);
 
                 LogFile.SaveLogToFile($"WCS鐢宠宸烽亾杩斿洖锛�( {JsonConvert.SerializeObject(list)} ),", logStr);
-                new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鏃ュ織", model.PalletNo.Substring(0, 8), 
+                new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鏃ュ織", model.PalletNo.Substring(0, 8),
                     "鐢宠宸烽亾", $"鐢宠宸烽亾鎵樼洏鍙凤細{model.PalletNo.Substring(0, 8)}鐨勬垚鍔熶俊鎭�", 2);
 
                 return Ok(new { Success = 0, Message = "鐢宠鍌ㄤ綅鎴愬姛", TaskList = list });
@@ -214,7 +227,7 @@
             catch (Exception e)
             {
                 LogFile.SaveLogToFile($"WCS鐢宠宸烽亾杩斿洖锛�( {e.Message} ),", logStr);
-                new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鏃ュ織", model.PalletNo.Substring(0, 8), 
+                new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鏃ュ織", model.PalletNo.Substring(0, 8),
                     "鐢宠宸烽亾", $"鐢宠宸烽亾鎵樼洏鍙凤細{model.PalletNo.Substring(0, 8)}鐨勫け璐ヤ俊鎭�", 2);
 
                 return Ok(new ErpModel { Success = -1, Message = e.Message });
@@ -253,7 +266,7 @@
             {
                 logStr = $@".\log\WCS\WCS鐢宠鍌ㄤ綅" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
             }
-            
+
             try
             {
                 if (model.PalletNo.Length == 9)
@@ -268,11 +281,11 @@
                 }
 
                 string pallet = model.PalletNo.Substring(0, 8);
-                var list = _asnPalletBindSvc.RequestLocation(pallet, model.HouseNo,model.RoadwayNo);
+                var list = _asnPalletBindSvc.RequestLocation(pallet, model.HouseNo, model.RoadwayNo);
 
                 if (model.PalletNo.Length == 9)
                 {
-                    new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鏃ュ織", model.PalletNo.Substring(0, 8), "鐢宠鍌ㄤ綅", $"鐢宠鍌ㄤ綅鎵樼洏鍙凤細{model.PalletNo.Substring(0, 8)}鐨勬垚鍔熶俊鎭�",2);// int.Parse(userId)
+                    new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鏃ュ織", model.PalletNo.Substring(0, 8), "鐢宠鍌ㄤ綅", $"鐢宠鍌ㄤ綅鎵樼洏鍙凤細{model.PalletNo.Substring(0, 8)}鐨勬垚鍔熶俊鎭�", 2);// int.Parse(userId)
                     LogFile.SaveLogToFile($"WMS鐢宠鍌ㄤ綅鎴愬姛锛�( {JsonConvert.SerializeObject(list)} ),", logStr);
                 }
                 else if (model.PalletNo.Length == 8)
@@ -281,7 +294,7 @@
                 }
                 if (model.PalletNo.Length == 9)
                 {
-                   
+
                 }
 
                 return Ok(new { Success = 0, Message = "鐢宠鍌ㄤ綅鎴愬姛", TaskList = list });
@@ -290,14 +303,14 @@
             {
                 if (model.PalletNo.Length == 9)
                 {
-                    new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鏃ュ織", model.PalletNo.Substring(0, 8), "鐢宠鍌ㄤ綅", $"鐢宠鍌ㄤ綅鎵樼洏鍙凤細{model.PalletNo.Substring(0,8)}鐨勫け璐ヤ俊鎭�", 2);//int.Parse(userId)
+                    new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鏃ュ織", model.PalletNo.Substring(0, 8), "鐢宠鍌ㄤ綅", $"鐢宠鍌ㄤ綅鎵樼洏鍙凤細{model.PalletNo.Substring(0, 8)}鐨勫け璐ヤ俊鎭�", 2);//int.Parse(userId)
                     LogFile.SaveLogToFile($"WMS鐢宠鍌ㄤ綅澶辫触杩斿洖锛�( {e.Message} ),", logStr);
                 }
-                else if(model.PalletNo.Length == 8)
+                else if (model.PalletNo.Length == 8)
                 {
                     LogFile.SaveLogToFile($"WCS鐢宠鍌ㄤ綅杩斿洖锛�( {e.Message} ),", logStr);
                 }
-                
+
                 return Ok(new ErpModel { Success = -1, Message = e.Message });
             }
         }
@@ -328,14 +341,14 @@
                     case "0"://鍏ュ簱瀹屾垚浠诲姟
                         if (model.TaskType == "0")//0锛氬叆搴� 1锛氬嚭搴� 2锛氱Щ搴�
                         {
-                            _asnPalletBindSvc.ArrivalSuccess(model.TaskNo,0);
+                            _asnPalletBindSvc.ArrivalSuccess(model.TaskNo, 0);
                             return Ok(new WcsModel { StatusCode = 0, Msg = "鍏ュ簱瀹屾垚" });
                         }
                         break;
                     case "1"://鍑哄簱瀹屾垚浠诲姟
                         if (model.TaskType == "1")//0锛氬叆搴� 1锛氬嚭搴� 2锛氱Щ搴�
                         {
-                            _exNoticeSvc.ExportSuccess(model.TaskNo,0);
+                            _exNoticeSvc.ExportSuccess(model.TaskNo, 0);
                             return Ok(new WcsModel { StatusCode = 0, Msg = "鍑哄簱瀹屾垚" });
                         }
                         else if (model.TaskType == "2")
@@ -362,8 +375,8 @@
                             //濉啓绉诲簱瀹屾垚浠g爜
                         }
                         break;
-                    default :
-                        return Ok(new WcsModel { StatusCode = -1, Msg = "浼犻�掔殑浠诲姟鐘舵�佷负澶辫触鐘舵��" });  
+                    default:
+                        return Ok(new WcsModel { StatusCode = -1, Msg = "浼犻�掔殑浠诲姟鐘舵�佷负澶辫触鐘舵��" });
                 }
                 return Ok(new WcsModel { StatusCode = -1, Msg = "浼犻�掔殑浠诲姟鐘舵�佷负澶辫触鐘舵��" });
             }
@@ -379,7 +392,7 @@
         /// </summary>
         /// <returns></returns>
         [HttpPost]
-        public IActionResult EmptyException(ReceiveWcsSignal model) 
+        public IActionResult EmptyException(ReceiveWcsSignal model)
         {
             var logStr = $@".\log\WCS\寮傚父鍙嶉" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
             try
@@ -390,7 +403,7 @@
                 var bl = _exNoticeSvc.EmptyException(model);
 
                 LogFile.SaveLogToFile($"绌哄彇寮傚父锛�(鎵ц缁撴灉鎴愬姛),", logStr);
-                return Ok(new { Success = 0, Message = ""});
+                return Ok(new { Success = 0, Message = "" });
             }
             catch (Exception e)
             {
@@ -404,7 +417,7 @@
         /// </summary>
         /// <returns></returns>
         [HttpPost]
-        public IActionResult FullException(ReceiveWcsSignal model) 
+        public IActionResult FullException(ReceiveWcsSignal model)
         {
             var logStr = $@".\log\WCS\寮傚父鍙嶉" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
             try
@@ -476,6 +489,58 @@
 
         //杞﹂棿鍙枡
 
+
+        #region AGV
+
+        /// <summary>
+        ///  浠诲姟鎵ц閫氱煡鎺ュ彛
+        ///  AGV 鎵ц鍥炶皟鐨勬柟娉曪紝鍖呭惈浠诲姟寮�濮嬶紝璧板嚭鍌ㄤ綅锛屼换鍔″畬鎴愬強浠诲姟鍙栨秷銆�
+        ///  鍙栨秷閫氱煡涓轰换鍔″崟锛屽叾浠栭�氱煡涓哄崟涓换鍔$粍鎴栧瓙浠诲姟銆傛敞鎰忥細鏄惁閫氱煡闇�瑕佸湪浠诲姟妯℃澘閰嶇疆
+        /// </summary>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        [HttpPost]
+        public IActionResult AgvCallback(AgvContinueTask model)
+        {
+            try
+            {
+                //璁板綍log
+                var logStr = $@".\log\AGV\浠诲姟鍙嶉" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+                var jsonData = JsonConvert.SerializeObject(model);
+                LogFile.SaveLogToFile($"AGV浠诲姟鍙嶉鎵ц閫氱煡锛�( {jsonData} ),", logStr);
+
+                //鎺ユ敹鏃堕棿
+                var time1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+                var orderType = _taskSvc.GetTaskOrderType(model.TaskCode);// 鍒ゆ柇鍗曟嵁绫诲瀷鍏ュ嚭绉�
+
+                var taskType = _taskSvc.GetTaskType(model.TaskCode);//鏍规嵁浠诲姟鍙疯幏鍙栦换鍔$被鍨�
+                switch (orderType)
+                {
+                    case "0"://鍏ュ簱浠诲姟鎵ц
+                    case "1"://鍑哄簱浠诲姟鎵ц
+                    case "2"://鐩樺簱浠诲姟鎵ц
+                    case "3"://绉诲簱浠诲姟鎵ц
+                        return Ok(new OutCommanAgvDto { Code = "0", Message = "鎴愬姛", ReqCode = model.ReqCode });
+
+                    default:
+                        return Ok(new OutCommanAgvDto { Code = "1", Message = "澶辫触", ReqCode = model.ReqCode });
+                }
+
+            }
+            catch (Exception ex)
+            {
+                return Ok(new WcsModel
+                {
+                    StatusCode = -1,
+                    Msg = ex.Message
+                });
+            }
+
+        }
+
+
+        #endregion
+
         #endregion
 
 
diff --git a/Wms/Wms/Controllers/PdaCrController.cs b/Wms/Wms/Controllers/PdaCrController.cs
index b4f542b..d9629c0 100644
--- a/Wms/Wms/Controllers/PdaCrController.cs
+++ b/Wms/Wms/Controllers/PdaCrController.cs
@@ -10,6 +10,8 @@
 using WMS.IBLL.IPdaServer;
 using WMS.Entity.DataEntity;
 using WMS.Entity.SysEntity;
+using Wms.Tools;
+using Microsoft.Extensions.Options;
 
 namespace Wms.Controllers
 {
@@ -19,10 +21,11 @@
     public class PdaCrController : ControllerBase
     {
         private readonly IPdaCrServer _pdaCrSvc;
-
-        public PdaCrController(IPdaCrServer pdaCrSvc)
+        private readonly ApiUrlConfig _config; //鎺ュ彛浜や簰璺緞
+        public PdaCrController(IPdaCrServer pdaCrSvc, IOptions<ApiUrlConfig> setting)
         {
             _pdaCrSvc = pdaCrSvc;
+            _config = setting.Value;
         }
 
         #region 鐩樼偣
@@ -360,7 +363,7 @@
                 }
 
                 var uId = int.Parse(userId);
-                _pdaCrSvc.AgvTransport(model.PalletNo, model.AreaNo, model.Ruku, uId);
+                _pdaCrSvc.AgvTransport(model.PalletNo, model.AreaNo, model.Ruku, uId, _config.WcsHost + _config.GenAgvSchedulingTask);
 
                 return Ok(new { data = "", code = 0, msg = "鎴愬姛" });
             }
@@ -392,7 +395,7 @@
                 }
 
                 var uId = int.Parse(userId);
-                _pdaCrSvc.AgvTransport2(model.SoNo,model.PalletNo, model.AreaNo, uId);
+                _pdaCrSvc.AgvTransport2(model.SoNo,model.PalletNo, model.AreaNo, uId, _config.WcsHost + _config.GenAgvSchedulingTask);
 
                 return Ok(new { data = "", code = 0, msg = "鎴愬姛" });
             }
diff --git a/Wms/Wms/Controllers/StatisticalController.cs b/Wms/Wms/Controllers/StatisticalController.cs
index f115099..30131e0 100644
--- a/Wms/Wms/Controllers/StatisticalController.cs
+++ b/Wms/Wms/Controllers/StatisticalController.cs
@@ -16,19 +16,22 @@
         /// 渚濊禆娉ㄥ叆
         /// </summary>
         private readonly IStockServer _stock; //缁熻鎶ヨ〃
-        private readonly IStockDetailServer _stockDetail; //缁熻鎶ヨ〃
+        private readonly IStockDetailServer _stockDetail; //搴撳瓨绠辩爜鏄庣粏
         private readonly IDataBoxInfoServer _dataBoxInfo; //瀵煎嚭
+        private readonly IStockInfoServer _stockInfo; //搴撳瓨淇℃伅
         /// <summary>
         /// 鏋勯�犲嚱鏁�
         /// </summary>
         /// <param name="stock">缁熻鎶ヨ〃</param>
         /// <param name="stockDetail">搴撳瓨绠辩爜鏄庣粏</param>
         /// <param name="dataBoxInfo">瀵煎嚭</param>
-        public StatisticalController(IStockServer stock, IStockDetailServer stockDetail, IDataBoxInfoServer dataBoxInfo)
+        /// <param name="stockInfo">搴撳瓨淇℃伅</param>
+        public StatisticalController(IStockServer stock, IStockDetailServer stockDetail, IDataBoxInfoServer dataBoxInfo, IStockInfoServer stockInfo)
         {
             _stock = stock; //缁熻鎶ヨ〃
-            _stockDetail = stockDetail;
-            _dataBoxInfo = dataBoxInfo;
+            _stockDetail = stockDetail; //搴撳瓨绠辩爜鏄庣粏
+            _dataBoxInfo = dataBoxInfo; //瀵煎嚭
+            _stockInfo = stockInfo; //搴撳瓨淇℃伅
         }
 
         #region 搴撳瓨鏄庣粏
@@ -406,5 +409,29 @@
 
         }
         #endregion
+
+        #region 搴撳瓨淇℃伅
+
+        /// <summary>
+        /// 鏍规嵁鏃堕棿鑾峰彇鏄剧ず搴撳瓨淇℃伅
+        /// </summary>
+        /// <param name="StartTime"></param>
+        /// <returns></returns>
+        [HttpGet]
+        public IActionResult GetDataStockInfo(string StartTime)
+        {
+            try
+            {
+                var list = _stockInfo.GetDataStockInfo(StartTime);
+                return Ok(new { code = 0, count = list.Count, data = list, msg = "鑾峰彇搴撳瓨淇℃伅鎴愬姛" });
+            }
+            catch (Exception ex)
+            {
+
+                return Ok(new { code = 1, count = 0, msg = ex.Message });
+            }
+        }
+
+        #endregion
     }
 }
diff --git a/Wms/Wms/DailyTaskService.cs b/Wms/Wms/DailyTaskService.cs
new file mode 100644
index 0000000..84f5426
--- /dev/null
+++ b/Wms/Wms/DailyTaskService.cs
@@ -0,0 +1,100 @@
+锘縰sing Microsoft.Extensions.Hosting;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Utility.Tools;
+using WMS.BLL.DataServer;
+using WMS.IBLL.IDataServer;
+
+namespace Wms
+{
+    public class DailyTaskService : IHostedService, IDisposable
+    {
+        private Timer _periodicReport;
+        private IStockInfoServer _stock;
+        public DailyTaskService(IStockInfoServer stock)
+        {
+            _stock = stock;
+        }
+
+
+        //鍒涘缓瀹氭椂浠诲姟
+        public Task StartAsync(CancellationToken cancellationToken)
+        {
+            #region 姣忓ぉ0鐐规墽琛�
+            //璁$畻璺濈涓嬩竴涓� 0 鐐圭殑鏃堕棿闂撮殧
+            DateTime now = DateTime.Now;
+            DateTime nextZeroHour = now.AddDays(1).Date;
+            TimeSpan delay = nextZeroHour - now;
+
+            //鍒涘缓瀹氭椂鍣紝骞惰缃洖璋冨嚱鏁�
+            _periodicReport = new Timer(PeriodicReport, null, delay, TimeSpan.FromDays(1));
+            return Task.CompletedTask;
+            #endregion
+
+            #region 2鍒嗛挓鎵ц1娆�
+            /*// 璁$畻璺濈涓嬩竴涓� 2 鍒嗛挓鐨勬椂闂撮棿闅�
+            TimeSpan delay = TimeSpan.FromMinutes(2);
+
+            // 鍒涘缓瀹氭椂鍣紝骞惰缃洖璋冨嚱鏁�
+            _timer = new Timer(ExecuteDailyTask, null, delay, TimeSpan.FromMinutes(2));
+
+            return Task.CompletedTask;*/
+            #endregion
+        }
+
+        /// <summary>
+        /// 鍦ㄥ簲鐢ㄧ▼搴忓叧闂椂琚皟鐢紝鐢ㄤ簬鎵ц娓呯悊鎿嶄綔鍜岄噴鏀捐祫婧愩�傚湪 ASP.NET Core 搴旂敤绋嬪簭涓紝
+        /// 褰撲富鏈哄叧闂椂锛孲topAsync 鏂规硶浼氳璋冪敤鏉ュ仠姝㈠悗鍙版湇鍔★紝浠ョ‘淇濇湇鍔¤兘澶熸纭湴鍋滄骞堕噴鏀惧畠鎵�鍗犵敤鐨勮祫婧愶紝姣斿鍏抽棴瀹氭椂鍣ㄣ�侀噴鏀炬暟鎹簱杩炴帴绛夈��
+        /// </summary>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public Task StopAsync(CancellationToken cancellationToken)
+        {
+            // 鍋滄瀹氭椂鍣�
+            _periodicReport?.Change(Timeout.Infinite, 0);
+
+            return Task.CompletedTask;
+        }
+        //瀹氭椂鎵ц鍛ㄦ湡鎶ヨ〃
+        private void PeriodicReport(object state)
+        {
+            try
+            {
+                var arr = _stock.ByDayInsertStock();
+
+                var logStr = $@".\log\WMS\WMS瀹氭椂浠诲姟" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+                LogFile.SaveLogToFile($"WMS瀹氭椂浠诲姟鎵ц寮傚父锛歿arr},", logStr);
+                //閲婃斁璧勬簮
+                _periodicReport?.Dispose();
+            }
+            catch (Exception ex)
+            {
+                var logStr = $@".\log\WMS\WMS瀹氭椂浠诲姟" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+                LogFile.SaveLogToFile($"WMS瀹氭椂浠诲姟鎵ц寮傚父锛歿DateTime.Now}锛�( {ex.Message} ),", logStr);
+            }
+        }
+
+        /// <summary>
+        /// 鍦ㄦ湇鍔$粨鏉熻繍琛屾椂锛屽畾鏃跺櫒寰楀埌姝g‘鍦版竻鐞嗗拰閲婃斁
+        /// </summary>
+        public void Dispose()
+        {
+            try
+            {
+                var logStr = $@".\log\WMS\WMS瀹氭椂浠诲姟" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+                LogFile.SaveLogToFile($"娴嬭瘯鏄惁鑷姩閲婃斁锛歿DateTime.Now}", logStr);
+                //閲婃斁璧勬簮
+                _periodicReport?.Dispose();
+            }
+            catch (Exception ex)
+            {
+                var logStr = $@".\log\WMS\WMS瀹氭椂浠诲姟" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+                LogFile.SaveLogToFile($"娴嬭瘯鏄惁鑷姩閲婃斁寮傚父锛歿DateTime.Now}锛�( {ex.Message} )锛�", logStr);
+            }
+        }
+    }
+}
diff --git a/Wms/Wms/Startup.cs b/Wms/Wms/Startup.cs
index dbf35ec..0abb15e 100644
--- a/Wms/Wms/Startup.cs
+++ b/Wms/Wms/Startup.cs
@@ -28,6 +28,9 @@
         // This method gets called by the runtime. Use this method to add services to the container.
         public void ConfigureServices(IServiceCollection services)
         {
+            //调用定时任务
+            services.AddHostedService<DailyTaskService>();
+
             services.AddControllers()
                 .AddJsonOptions(options =>
                     {
diff --git a/Wms/Wms/Tools/ApiUrlConfig.cs b/Wms/Wms/Tools/ApiUrlConfig.cs
index cfee7e9..04ca867 100644
--- a/Wms/Wms/Tools/ApiUrlConfig.cs
+++ b/Wms/Wms/Tools/ApiUrlConfig.cs
@@ -43,7 +43,7 @@
         public string GetBoxUrl { get; set; }
 
         #endregion
-        
+
         #region 涓嬫父绯荤粺
 
         /// <summary>
@@ -59,6 +59,25 @@
         public string GetLog1 { get; set; }
         public string GetLog2 { get; set; }
 
+        #region AGV
+
+        /// <summary>
+        /// 鐢熸垚浠诲姟鍗曟帴鍙�
+        /// </summary>
+        public string GenAgvSchedulingTask { get; set; }
+
+        /// <summary>
+        /// 缁х画鎵ц浠诲姟鎺ュ彛
+        /// </summary>
+        public string ContinueTask { get; set; }
+
+        /// <summary>
+        /// 棰勮皟搴﹀澶栨帴鍙�
+        /// </summary>
+        public string GenPreScheduleTask { get; set; }
+
+        #endregion
+
         #endregion
 
     }
diff --git a/Wms/Wms/appsettings.json b/Wms/Wms/appsettings.json
index 24e4ff3..4ffbbb3 100644
--- a/Wms/Wms/appsettings.json
+++ b/Wms/Wms/appsettings.json
@@ -26,13 +26,22 @@
     "WcsHost": "http://localhost:57061", //wcsIPhttp://localhost:57061/
     "BoxHost": "http://10.110.24.30:8081", //boxIP
 
+    // WCS
     "IssueComApiUrl": "/api/WCSApi/AddTasks", //涓嬪彂鍛戒护(鍑哄簱銆佺Щ搴�)
     "IssueComApiUrl2": "/api/WCSApi/AddTask", //閲嶆柊涓嬪彂鍛戒护(鍑哄簱銆佺Щ搴�)
 
+    // ERP
     "AsnFinishUrl": "/api/wmsInterface/OutStockTask", //鍏ュ簱璁㈠崟鍏抽棴
     "SoFinishUrl": "/api/wmsInterface/OutStockTask", //鍑哄簱璁㈠崟鍏抽棴
     "DataChangeUrl": "/api/wmsInterface/OutStockTask", //搴撳瓨鍙樻洿鍥炰紶
-    "GetBoxUrl": "/api/wmsInterface/OutStockTask" //鑾峰彇绠辩爜淇℃伅
+    "GetBoxUrl": "/api/wmsInterface/OutStockTask", //鑾峰彇绠辩爜淇℃伅
 
+    // 璧嬬爜
+
+
+    // AGV
+    "GenAgvSchedulingTask": "http://IP:PORT/rcms/services/rest/hikRpcService/genAgvSchedulingTask", //鐢熸垚浠诲姟鍗曟帴鍙�
+    "ContinueTask": "http://IP:PORT/rcms/services/rest/hikRpcService/continueTask", //缁х画鎵ц浠诲姟鎺ュ彛
+    "GenPreScheduleTask": "http://IP:PORT/rcms/services/rest/hikRpcService/genPreScheduleTask" // 棰勮皟搴﹀澶栨帴鍙�
   }
 }

--
Gitblit v1.8.0