From 35e3dae48db445e66c9614ee55dba062659e33d7 Mon Sep 17 00:00:00 2001
From: zhaowc <526854230@qq.com>
Date: 星期二, 16 十二月 2025 08:27:23 +0800
Subject: [PATCH] 程序修改

---
 Wms/WMS.BLL/BllTransServer/RcsServer.cs                 |  125 ++++
 Wms/Wms/Tools/ApiUrlConfig.cs                           |    5 
 HTML/.vscode/settings.json                              |    2 
 HTML/views/WareHouseSetting/PalletsPrintFrom.html       |   19 
 Wms/Wms/Controllers/BllCheckController.cs               |    2 
 HTML/views/WareHouseSetting/FlatLibraryLegend.html      |  259 +++-------
 Wms/WMS.IBLL/IDataServer/IStockDetailServer.cs          |    2 
 Wms/Wms/appsettings.json                                |   12 
 Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs              |    4 
 Wms/Wms/Controllers/BllQualityController.cs             |   19 
 Wms/WMS.IBLL/IBllTransServer/IHopperTransportServer.cs  |    9 
 Wms/Wms/Controllers/StatisticalController.cs            |    4 
 HTML/views/WareHouseSetting/Pallets.html                |    4 
 Wms/WMS.BLL/SysServer/PalletsServer.cs                  |   67 +
 Wms/Model/ModelVm/DataVm/DataStockInfoVM.cs             |    9 
 HTML/views/QualityControl/QualityInformationFrom.html   |   44 -
 Wms/WMS.BLL/BllQualityServer/QualityInspectServer.cs    |   40 +
 Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs     |  363 ++++++++++++-
 HTML/views/HouseWithinSetting/HopperTransport.html      |  111 +++
 HTML/views/StatisticalReport/BoxInfor.html              |  137 ++--
 Wms/Utility/Tools/RcsHelper.cs                          |   12 
 HTML/views/WareHouseSetting/Locate.html                 |    4 
 Wms/WMS.IBLL/IBllQualityServer/IQualityInspectServer.cs |    6 
 Wms/WMS.BLL/DataServer/StockDetailServer.cs             |   17 
 HTML/views/QualityControl/QualityInformation.html       |    2 
 Wms/Model/InterFaceModel/HttpModel.cs                   |   65 --
 Wms/Model/InterFaceModel/HopperTransportModel.cs        |    7 
 Wms/Wms/Controllers/DownApiController.cs                |   99 +++
 28 files changed, 983 insertions(+), 466 deletions(-)

diff --git a/HTML/.vscode/settings.json b/HTML/.vscode/settings.json
index a0de46f..85245c9 100644
--- a/HTML/.vscode/settings.json
+++ b/HTML/.vscode/settings.json
@@ -1,3 +1,3 @@
 {
-    "liveServer.settings.port": 5504
+    "liveServer.settings.port": 5505
 }
\ No newline at end of file
diff --git a/HTML/views/HouseWithinSetting/HopperTransport.html b/HTML/views/HouseWithinSetting/HopperTransport.html
index 8d51500..982ff02 100644
--- a/HTML/views/HouseWithinSetting/HopperTransport.html
+++ b/HTML/views/HouseWithinSetting/HopperTransport.html
@@ -53,7 +53,7 @@
             <ul class="layui-tab-title" id="tab">
               <li class="layui-this">鍙枡</li>
               <li>鍙溅</li>
-              <!-- <li>杞﹂棿鍒拌溅闂�</li> -->
+              <li>鐐瑰埌鐐逛换鍔�</li>
             </ul>
 
             <div class="layui-tab-content">
@@ -291,7 +291,7 @@
               <div class="layui-tab-item">
                 <div class="flesDiv">
                   <form class="layui-form" action="" style="width: 40%">
-                    <div class="layui-form-item">
+                    <!-- <div class="layui-form-item">
                       <label class="layui-form-label" style="width: 80px"
                         >璧峰鍖哄煙</label
                       >
@@ -303,22 +303,23 @@
                           <option value=""></option>
                         </select>
                       </div>
-                    </div>
+                    </div> -->
 
                     <div class="layui-form-item">
                       <label class="layui-form-label" style="width: 80px"
                         >璧峰浣嶇疆</label
                       >
                       <div class="layui-input-block">
-                        <select
+                        <input
+                         type="text"
                           id="LocateSelect3"
                           name="LocateSelect3"
-                          lay-filter="LocateSelect3">
-                          <option value=""></option>
-                        </select>
+                          placeholder=""
+                          autocomplete="off"
+                          class="layui-input"/>
                       </div>
                     </div>
-                    <div class="layui-form-item">
+                    <!-- <div class="layui-form-item">
                       <label class="layui-form-label" style="width: 80px"
                         >鐩爣鍖哄煙</label
                       >
@@ -330,22 +331,22 @@
                           <option value=""></option>
                         </select>
                       </div>
-                    </div>
-
+                    </div> -->
                     <div class="layui-form-item">
                       <label class="layui-form-label" style="width: 80px"
                         >鐩爣浣嶇疆</label
                       >
                       <div class="layui-input-block">
-                        <select
+                        <input
+                         type="text"
                           id="LocateSelect4"
                           name="LocateSelect4"
-                          lay-filter="LocateSelect4">
-                          <option value=""></option>
-                        </select>
+                          placeholder=""
+                          autocomplete="off"
+                          class="layui-input"/>
                       </div>
                     </div>
-                    <div class="layui-form-item">
+                    <!-- <div class="layui-form-item">
                       <label class="layui-form-label" style="width: 80px"
                         >妗剁被鍨�</label
                       >
@@ -360,8 +361,8 @@
                           <option value="3">鑴忔《</option>
                         </select>
                       </div>
-                    </div>
-                    <div class="layui-form-item" id="SkuSelectDiv2">
+                    </div> -->
+                    <!-- <div class="layui-form-item" id="SkuSelectDiv2">
                       <label class="layui-form-label" style="width: 80px"
                         >鐗╂枡</label
                       >
@@ -373,8 +374,8 @@
                           <option value=""></option>
                         </select>
                       </div>
-                    </div>
-                    <div class="layui-form-item" id="LotNoSelectDiv2">
+                    </div> -->
+                    <!-- <div class="layui-form-item" id="LotNoSelectDiv2">
                       <label class="layui-form-label" style="width: 80px"
                         >鎵规</label
                       >
@@ -387,8 +388,8 @@
                           autocomplete="off"
                           class="layui-input" />
                       </div>
-                    </div>
-                    <div class="layui-form-item" id="WeightSelectDiv2">
+                    </div> -->
+                    <!-- <div class="layui-form-item" id="WeightSelectDiv2">
                       <label class="layui-form-label" style="width: 80px"
                         >閲嶉噺</label
                       >
@@ -401,7 +402,7 @@
                           autocomplete="off"
                           class="layui-input" />
                       </div>
-                    </div>
+                    </div> -->
                     <div class="layui-form-item">
                       <div class="layui-input-block">
                         <button
@@ -433,6 +434,9 @@
     <script src="../../js/jquery.cookie.js"></script>
     <script type="text/javascript"></script>
     <script>
+       var id = localStorage.getItem('keyUserName');
+       console.log("id:"+id);
+       
       layui
         .config({
           base: "../../layuiadmin/", //闈欐�佽祫婧愭墍鍦ㄨ矾寰�
@@ -482,7 +486,7 @@
                 Standard: field.Standard,
                 SkuNo: field.SkuSelect,
                 LotNo: field.LotNoSelect,
-              };
+              }; 
               sendData(
                 IP + "/DownApi/jiaoLiaoHopper",
                 param,
@@ -563,6 +567,67 @@
               return false; // 闃绘榛樿 form 璺宠浆
             });
 
+
+             // 鐐瑰鐐逛换鍔℃彁浜や簨浠�
+            form.on("submit(demo3)", function (data) {
+              var field = data.field; // 鑾峰彇琛ㄥ崟瀛楁鍊�
+              
+              console.log("璧峰浣嶇疆锛�"+field.LocateSelect3+",鐩爣浣嶇疆锛�"+field.LocateSelect4+",鐢ㄦ埛ID:"+id);
+              var begin = field.LocateSelect3
+              var end = field.LocateSelect4
+              if (begin.length = 0) {
+                layer.msg("璇峰厛杈撳叆璧峰鍌ㄤ綅!", {
+                  icon: 2,
+                  time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+                  });
+                  return;
+              }
+              if (end.length = 0) {
+                layer.msg("璇峰厛杈撳叆鐩爣鍌ㄤ綅!", {
+                  icon: 2,
+                  time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+                  });
+                  return;
+              }
+              var param = {
+                BeginPoint: begin,
+                EndPoint: end,
+                ID:id
+              };
+              console.log(param);
+
+              sendData(
+                IP + "/DownApi/PointToPointRequest",
+                param,
+                "post",
+                function (res) {
+                  if (res.code == 0) {
+                    //鎴愬姛
+                    layer.msg(
+                      res.message,
+                      {
+                        icon: 1,
+                        time: 1000, //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+                      },
+                      function () {}
+                    );
+                  } else {
+                    //涓嶆垚鍔�
+                    layer.msg(
+                      res.message,
+                      {
+                        icon: 2,
+                        time: 2000, //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+                      },
+                      function () {}
+                    );
+                  }
+                }
+              );
+              return false; // 闃绘榛樿 form 璺宠浆
+            });
+
+
             GetArea();
 
             form.on("select(AreaSelect)", function (data) {
diff --git a/HTML/views/QualityControl/QualityInformation.html b/HTML/views/QualityControl/QualityInformation.html
index 1646cfa..56e26da 100644
--- a/HTML/views/QualityControl/QualityInformation.html
+++ b/HTML/views/QualityControl/QualityInformation.html
@@ -363,7 +363,7 @@
 									InspectNo: field.InspectNo,        
 									//ASNNo: field.ASNNo,        
 									LotNo: field.LotNo,
-									//SkuNo: field.SkuNo,
+									SkuNo: field.SkuNo,
 									IsQualified: field.IsQualified,
 								};
 								if(doing)
diff --git a/HTML/views/QualityControl/QualityInformationFrom.html b/HTML/views/QualityControl/QualityInformationFrom.html
index 2a29a4d..e96a3be 100644
--- a/HTML/views/QualityControl/QualityInformationFrom.html
+++ b/HTML/views/QualityControl/QualityInformationFrom.html
@@ -16,32 +16,20 @@
 					<input type="text" name="InspectNo" placeholder="璇疯緭鍏ユ楠屽彿" lay-verify="required" autocomplete="off" class="layui-input">
 				</div>
 			</div>
-			<!-- <div class="layui-form-item">
-				<label class="layui-form-label">鍏ュ簱鍗曞彿</label>
-				<div class="layui-input-block" style="width: 70%;">
-					<input type="text" name="ASNNo" placeholder="璇疯緭鍏ュ叆搴撳崟鍙�" autocomplete="off" class="layui-input">
-				</div>
-			</div> -->
-			<!-- <div class="layui-form-item">
-				<label class="layui-form-label">鎵规鍙�</label>
-				<div class="layui-input-block" style="width: 70%;">
-					<input type="text" name="LotNo" placeholder="璇疯緭鍏ユ壒娆″彿" lay-verify="required" autocomplete="off" class="layui-input">
-				</div>
-			</div> -->
 			<div class="layui-form-item">
-				<label class="layui-form-label">鎵规鍙�</label>
+				<label class="layui-form-label">鐗╂枡缂栫爜</label>
 				<div class="layui-input-block" style="width: 70%;">
-					<select name="LotNo" id="LotNo" lay-filter="LotNo" lay-verify="">
+					<select name="SkuNo" id="SkuNo" lay-filter="SkuNo" lay-verify="">
 						<option value=""></option>
 					</select>
 				</div>
 			</div>
-			<!-- <div class="layui-form-item">
-				<label class="layui-form-label">鐗╂枡鍙�</label>
+			<div class="layui-form-item">
+				<label class="layui-form-label">鎵规鍙�</label>
 				<div class="layui-input-block" style="width: 70%;">
-					<input type="text" name="SkuNo" placeholder="璇疯緭鍏ョ墿鏂欏彿" lay-verify="required" autocomplete="off" class="layui-input">
+					<input type="text" name="LotNo" placeholder="璇疯緭鍏ユ壒娆″彿" lay-verify="required" class="layui-input">
 				</div>
-			</div> -->
+			</div>
 			<div class="layui-form-item">
 					<label class="layui-form-label">瀹℃牳鐘舵��</label>
 					<div class="layui-input-block" style="width: 70%;">
@@ -70,7 +58,6 @@
 				var $ = layui.$,
 					form = layui.form,
 					layer = layui.layer;
-
 				});
 
 				//鑾峰彇娴忚鍣ㄥ弬鏁�
@@ -80,15 +67,20 @@
 					if (r != null) return unescape(r[2]);
 					return null;
 				}
-
+				getsku();
+				function getsku(res){
 				//鑾峰彇鎵规涓嬫媺妗嗕俊鎭�
-				sendData(IP + "/BllQuality/GetLotNoList", {}, 'get', function(res) {
+				var param = {                 
+					SkuNo:  $("#SkuNo").val(),
+				};
+				
+				sendData(IP + "/BllQuality/GetLotNoList",  param,"post", function(res) {
 					if (res.code == 0) { //鎴愬姛
+						
+						
 					for (var i = 0; i < res.data.length; i++) {
-						$("#LotNo").append('<option value =' + res.data[i].LotNo + '>' + res.data[i].LotNo + '</option>');
-					}
-					
-					form.render('select');
+						$("#SkuNo").append('<option value =' + res.data[i].SkuNo + '>' + res.data[i].SkuNo + '</option>');
+					};
 					} else { //涓嶆垚鍔�
 						layer.msg(res.msg, {
 							icon: 2,
@@ -96,7 +88,7 @@
 						}, function() {});
 					}
 				});
-				
+			}
 		</script>
 	</body>
 </html>
diff --git a/HTML/views/StatisticalReport/BoxInfor.html b/HTML/views/StatisticalReport/BoxInfor.html
index 4a15210..2a38654 100644
--- a/HTML/views/StatisticalReport/BoxInfor.html
+++ b/HTML/views/StatisticalReport/BoxInfor.html
@@ -92,6 +92,18 @@
 								<input type="text" id="LotNo"  name="LotNo" placeholder="鎵规鍙�" autocomplete="off" class="layui-input">
 							</div>
 						</div>
+						 <div class="layui-inline zhijian">
+							<label class="layui-form-label" style="width: 60px;">妗剁姸鎬�</label>
+							<div class="layui-input-inline" style="width: 170px; margin-right: 0px;">
+								<select name="PalletStatus" id="PalletStatus" lay-filter="PalletStatus"
+									lay-search> =
+									<option value=""></option>
+									<option value="0">鍑�妗�</option>
+									<option value="2">婊℃《</option>
+									<option value="3">鑴忔《</option>
+								</select>
+							</div>
+						</div>
 
 						<!-- 绠辩爜 绠辨敮鐘舵�� 妫�楠屾爣璁� 闆剁鏍囪 璐ㄩ噺鐘舵�� -->
 
@@ -113,17 +125,7 @@
 								</select>
 							</div>
 						</div> -->
-						<!-- <div class="layui-inline zhijian">
-							<label class="layui-form-label" style="width: 60px;">鎶芥鏍囪</label>
-							<div class="layui-input-inline" style="width: 170px; margin-right: 0px;">
-								<select name="InspectMark" id="InspectMark" lay-filter="InspectMark"
-									lay-search>
-									<option value=""></option>
-									<option value="0">鍚�</option>
-									<option value="1">鏄�</option>
-								</select>
-							</div>
-						</div>
+						<!-- 
 						<div class="layui-inline zhijian">
 							<label class="layui-form-label" style="width: 60px;">闆舵墭鏍囪</label>
 							<div class="layui-input-inline" style="width: 170px; margin-right: 0px;">
@@ -198,6 +200,18 @@
 						</div>
 						<!-- #endregion -->
 					</div>
+
+						<script type="text/html" id="buttonTpl">
+						{{# function GetBtn1(d){
+								var html = '';
+								html =`<a class="layui-btn layui-btn-xs" lay-event="del"><i
+										class="layui-icon layui-icon-ok"></i>鍒犻櫎</a>`;
+								
+								return html;
+							} 
+						}}
+						{{ GetBtn1(d) }}
+					</script>
 					
                     <script type="text/html" id="InspectMarkStatus">
                         {{#  if(d.InspectMark=='0'){ }}
@@ -352,14 +366,22 @@
                     {field: 'LockQty', title: '閿佸畾鏁伴噺', align: 'center',},
                     {field: 'FrozenQty', title: '鍐荤粨鏁伴噺', align: 'center'},
 					{field: 'InspectStatus', title: '璐ㄦ鐘舵��', align: 'center', templet: '#InspectStatus1'}, 
-					{field: 'UDF1', title: '鎵�灞炶澶囩紪鐮�', align: 'center'},
+					{field: 'UDF1', title: '鎵�灞炶澶囩紪鐮�', align: 'center'}
+					, {
+						field: 'caozuo',
+						title: '鎿嶄綔',
+						fixed: 'right',
+						align: 'center',
+						width: 205,
+						toolbar: '#buttonTpl'
+					}
                     //{field: 'InspectMark', title: '鎶芥鏍囪', align: 'center', templet: '#InspectMarkStatus'},
                     //{field: 'BitPalletMark', title: '闆舵墭鏍囪', align: 'center', templet: '#BitPalletMarkStatus'},
 				]];
 				var TotalColsSysArr=encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArr)))//灏嗚〃澶存暟鎹繘琛寀rl缂栫爜
 				//#endregion
 				//鑾峰彇鎵樼洏鏄庣粏
-                function refreshTable(WareHouseName,AreaName,LocatNo,PalletNo,LotNo) {
+                function refreshTable(WareHouseName,AreaName,LocatNo,PalletNo,LotNo,PalletStatus) {
 					//#region 鑷畾涔夎〃澶�
 					var colsJson
 					var param1={
@@ -399,7 +421,7 @@
 							locatNo:LocatNo,
 							palletNo:PalletNo, //鎵樼洏鍙�
 							LotNo:LotNo, //鎵规鍙�
-							
+							PalletStatus:PalletStatus,
 						};
 						sendData(IP + "/Statistical/GetBindList", param, 'get', function(res) { 
 							console.log(res)                       
@@ -424,64 +446,40 @@
 					//#endregion                    
                 }     
 				
-				//澶村伐鍏锋爮浜嬩欢
-				table.on('toolbar(LAY-app-content-list)', function (obj) {
-					var checkStatus = table.checkStatus(obj.config.id);
-					if (obj.event == "add") {
-						layer.open({
-							type: 2,
-							title: '娣诲姞鎵樼洏搴撳瓨鏄庣粏',
-							content: 'PalletAddFrom.html',
-							maxmin: true,
-							area: ['530px', '530px'],
-							btn: ['纭畾', '鍙栨秷'],
-							yes: function(index, layero) {
-								var iframeWindow = window['layui-layer-iframe' + index],
-									submitID = 'layuiadmin-app-form-submit',
-									submit = layero.find('iframe').contents().find('#' + submitID);
-								//鐩戝惉鎻愪氦
-								iframeWindow.layui.form.on('submit(' + submitID + ')', function(data) {
-									var field = data.field; //鑾峰彇鎻愪氦鐨勫瓧娈�
-									//鎻愪氦 Ajax 鎴愬姛鍚庯紝闈欐�佹洿鏂拌〃鏍间腑鐨勬暟鎹�
-									var param = {
-										PalletNo:field.PalletNo,//鎵樼洏鐮�
-										WareHouseNo: field.WareHouseNo, //鎵�灞炰粨搴�
-										AreaNo: field.AreaNo, //鎵�灞炲尯鍩�
-										LocatNo:field.LocatNo,//鎵�灞炲偍浣�
-										PalletStatus: field.PalletStatus, //鎵樼洏绫诲埆
-										SkuNo:field.SkuNo,
-										SkuName:field.SkuName,
-										LotNo:field.LotNo
-									};
-									if(doing){
-										doing = false;
-										sendData(IP + "/Statistical/InsertStockDetail", param, 'post',function(res) {
-											console.log(res);
-											if (res.code == 0) { //鎴愬姛
-												layer.msg(res.msg, {
-													icon: 1,
-													time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
-												}, function() {
-													layer.close(index); //鍏抽棴寮瑰眰
-													refreshTable("","","","","","","","","","","","","","");
-													doing = true;
-												});
-											}
-											else
-											{ //涓嶆垚鍔�
-												layer.msg(res.msg, {
-													icon: 2,
-													time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
-												}, function() {doing = true;});
+				table.on('tool(LAY-app-content-list)', function (obj) {
+					
+					var data = obj.data;
+					console.log(data)
+					if (obj.event === 'del') {
+						layer.confirm('纭畾鍒犻櫎褰撳墠鎵樼洏搴撳瓨锛�', function (index) {
+							var param = {
+								id: uid,
+								StockId:data.Id
+							};
+							var postUrl='/DownApi/DelStockWms'
+							sendData(IP + postUrl, param, 'post', function (res) {
+								console.log(res);
+								if (res.code == 0) { //鎴愬姛
+									layer.msg(res.msg, {
+										icon: 1,
+										time: 1000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+									}, function () {
+										tableIns.reload({
+											page: {
+												curr: 1
 											}
 										});
-									}
-								});
-								submit.trigger('click');
-							}
+									});
+								} else { //涓嶆垚鍔�
+									layer.msg(res.msg, {
+										icon: 2,
+										time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+									}, function () { });
+								}
+							});
 						});
 					}
-				});
+				})
 				//鑾峰彇浠撳簱涓嬫媺妗嗕俊鎭�
 				sendData(IP + "/Sys/GetWarehouseDic", {}, 'get', function(res) {
 					if (res.code == 0) { //鎴愬姛
@@ -534,8 +532,9 @@
 					var LocatNo = $("#LocatNo").val();
 					var PalletNo = $("#PalletNo").val();
 					var LotNo = $("#LotNo").val();
+					var PalletStatus =  $("#PalletStatus").val();
 
-					refreshTable(WareHouseName,AreaName,LocatNo,PalletNo,LotNo);
+					refreshTable(WareHouseName,AreaName,LocatNo,PalletNo,LotNo,PalletStatus);
 					
 				});
 
diff --git a/HTML/views/WareHouseSetting/FlatLibraryLegend.html b/HTML/views/WareHouseSetting/FlatLibraryLegend.html
index 7e5e2df..f07467f 100644
--- a/HTML/views/WareHouseSetting/FlatLibraryLegend.html
+++ b/HTML/views/WareHouseSetting/FlatLibraryLegend.html
@@ -283,7 +283,6 @@
                                     <table class="">
                                         <tr>
                                             <td><button id="C1200101" value="C1200101" class="btnShow " ></button></td>
-                                            <td><button id="C1200102" value="C1200102" class="btnShow " ></button></td>
                                         </tr>
                                         <tr>
                                             <td><button id="C1200201" value="C1200201" class="btnShow " ></button></td>
@@ -304,7 +303,6 @@
                                     <table class="">
                                         <tr>
                                             <td><button id="C1400101" value="C1400101" class="btnShow " ></button></td>
-                                            
                                         </tr>
                                         <tr>
                                             <td><button id="C1400201" value="C1400201" class="btnShow " ></button></td>
@@ -339,108 +337,66 @@
                         <div class="solidDiv"  style="width: 59%; height: 100%;">
                             <p>涓棿绔�</p>
                             <div id="C01" style="display: flex; height: 85%;" >
-                                <div class="flesDiv" style="width: 35%;height: 100%;">
+                                <div class="flesDiv" style="width: 65%;height: 100%;">
                                     <table class="">
                                         <tr>
-                                            <td><button id="C0100101" value="C0100101" class="btnShow " ></button></td>
-                                            <td><button id="C0100102" value="C0100102" class="btnShow " ></button></td>
-                                            <td><button id="C0100103" value="C0100103" class="btnShow " ></button></td>
+                                            <td><button id="C0100115" value="C0100115" class="btnShow " ></button></td>
+                                            <td style="width: 30px;"></td>
+                                            <td><button id="C0100116" value="C0100116" class="btnShow " ></button></td>
+                                            <td style="width: 30px;"></td>
+                                            <td><button id="C0100117" value="C0100117" class="btnShow " ></button></td>
+                                            <td style="width: 20px;"></td>
+                                            <td><button id="C0100118" value="C0100118" class="btnShow " ></button></td>
+                                            <td style="width: 20px;"></td>
+                                            <td><button id="C0100119" value="C0100119" class="btnShow " ></button></td>
+                                            <td style="width: 20px;"></td>
+                                            <td><button id="C0100120" value="C0100120" class="btnShow " ></button></td>
+                                            <td style="width: 20px;"></td>
+                                            <td><button id="C0100121" value="C0100121" class="btnShow " ></button></td>
+                                            <td style="width: 20px;"></td>
+                                            <td><button id="C0100122" value="C0100122" class="btnShow " ></button></td>
                                         </tr>
                                         <tr>
-                                            <td><button id="C0100201" value="C0100201" class="btnShow " ></button></td>
-                                            <td><button id="C0100202" value="C0100202" class="btnShow " ></button></td>
-                                            <td><button id="C0100203" value="C0100203" class="btnShow " ></button></td>
+                                            <td style="height: 60px;"></td>
                                         </tr>
                                         <tr>
-                                            <td><button id="C0100301" value="C0100301" class="btnShow " ></button></td>
-                                            <td><button id="C0100302" value="C0100302" class="btnShow " ></button></td>
-                                            <td><button id="C0100303" value="C0100303" class="btnShow " ></button></td>
-                                        </tr> 
-                                        <tr>
-                                            <td style="height: 20px;"></td>
+                                            <td><button id="C0100114" value="C0100114" class="btnShow " ></button></td>
+                                            <td style="width: 20px;"></td>
+                                            <td><button id="C0100113" value="C0100113" class="btnShow " ></button></td>
+                                            <td style="width: 20px;"></td>
+                                            <td><button id="C0100112" value="C0100112" class="btnShow " ></button></td>
+                                            <td style="width: 20px;"></td>
+                                            <td><button id="C0100111" value="C0100111" class="btnShow " ></button></td>
+                                            <td style="width: 20px;"></td>
+                                            <td><button id="C0100110" value="C0100110" class="btnShow " ></button></td>
+                                            <td style="width: 20px;"></td>
+                                            <td><button id="C0100109" value="C0100109" class="btnShow " ></button></td>
+                                            <td style="width: 20px;"></td>
+                                            <td><button id="C0100108" value="C0100108" class="btnShow " ></button></td>
+                                            <td style="width: 20px;"></td>
+                                            <td><button id="C0100107" value="C0100107" class="btnShow " ></button></td>
                                         </tr>
-                                        <tr>
-                                            <td><button id="C0100401" value="C0100401" class="btnShow " ></button></td>
-                                            <td><button id="C0100402" value="C0100402" class="btnShow " ></button></td>
-                                            <td><button id="C0100403" value="C0100403" class="btnShow " ></button></td>
-                                        </tr>
-                                        <tr>
-                                            <td><button id="C0100501" value="C0100501" class="btnShow " ></button></td>
-                                            <td><button id="C0100502" value="C0100502" class="btnShow " ></button></td>
-                                            <td><button id="C0100503" value="C0100503" class="btnShow " ></button></td>
-                                        </tr>
-                                        <tr>
-                                            <td><button id="C0100601" value="C0100601" class="btnShow " ></button></td>
-                                            <td><button id="C0100602" value="C0100602" class="btnShow " ></button></td>
-                                            <td><button id="C0100603" value="C0100603" class="btnShow " ></button></td>
-                                        </tr> 
                                     </table>
-                                </div>
-                                <div class="flesDiv" style="width: 30%;height: 100%;">
-                                    <table class="" >
-                                        <tr>
-                                            <td><button id="C0100701" value="C0100701" class="btnShow " ></button></td>
-                                            <td><button id="C0100702" value="C0100702" class="btnShow " ></button></td>
-                                        </tr>
-                                        <tr>
-                                            <td><button id="C0100801" value="C0100801" class="btnShow " ></button></td>
-                                            <td><button id="C0100802" value="C0100802" class="btnShow " ></button></td>
-                                        </tr>
-                                        <tr>
-                                            <td><button id="C0100901" value="C0100901" class="btnShow " ></button></td>
-                                            <td><button id="C0100902" value="C0100902" class="btnShow " ></button></td>
-                                        </tr> 
-                                        <tr>
-                                            <td style="height: 20px;"></td>
-                                        </tr>
-                                        <tr>
-                                            <td><button id="C0101001" value="C0101001" class="btnShow " ></button></td>
-                                            <td><button id="C0101002" value="C0101002" class="btnShow " ></button></td>
-                                        </tr>
-                                        <tr>
-                                            <td><button id="C0101101" value="C0101101" class="btnShow " ></button></td>
-                                            <td><button id="C0101102" value="C0101102" class="btnShow " ></button></td>
-                                        </tr>
-                                        <tr>
-                                            <td><button id="C0101201" value="C0101201" class="btnShow " ></button></td>
-                                            <td><button id="C0101202" value="C0101202" class="btnShow " ></button></td>
-                                        </tr> 
-                                    </table>	
                                 </div>
                                 <div class="flesDiv" style="width: 35%;height: 100%;">
                                     <table>
                                         <tr>
-                                            <td><button id="C0101301" value="C0101301" class="btnShow " ></button></td>
-                                            <td><button id="C0101302" value="C0101302" class="btnShow " ></button></td>
-                                            <td><button id="C0101303" value="C0101303" class="btnShow " ></button></td>
+                                            <td><button id="C0100101" value="C0100101" class="btnShow " ></button></td>
                                         </tr>
                                         <tr>
-                                            <td><button id="C0101401" value="C0101401" class="btnShow " ></button></td>
-                                            <td><button id="C0101402" value="C0101402" class="btnShow " ></button></td>
-                                            <td><button id="C0101403" value="C0101403" class="btnShow " ></button></td>
+                                            <td><button id="C0100102" value="C0100102" class="btnShow " ></button></td>
                                         </tr>
                                         <tr>
-                                            <td><button id="C0101501" value="C0101501" class="btnShow " ></button></td>
-                                            <td><button id="C0101502" value="C0101502" class="btnShow " ></button></td>
-                                            <td><button id="C0101503" value="C0101503" class="btnShow " ></button></td>
+                                            <td><button id="C0100103" value="C0100103" class="btnShow " ></button></td>
                                         </tr> 
                                         <tr>
-                                            <td style="height: 20px;"></td>
+                                            <td><button id="C0100104" value="C0100104" class="btnShow " ></button></td>
                                         </tr>
                                         <tr>
-                                            <td><button id="C0101601" value="C0101601" class="btnShow " ></button></td>
-                                            <td><button id="C0101602" value="C0101602" class="btnShow " ></button></td>
-                                            <td><button id="C0101603" value="C0101603" class="btnShow " ></button></td>
+                                            <td><button id="C0100105" value="C0100105" class="btnShow " ></button></td>
                                         </tr>
                                         <tr>
-                                            <td><button id="C0101701" value="C0101701" class="btnShow " ></button></td>
-                                            <td><button id="C0101702" value="C0101702" class="btnShow " ></button></td>
-                                            <td><button id="C0101703" value="C0101703" class="btnShow " ></button></td>
-                                        </tr>
-                                        <tr>
-                                            <td><button id="C0101801" value="C0101801" class="btnShow " ></button></td>
-                                            <td><button id="C0101802" value="C0101802" class="btnShow " ></button></td>
-                                            <td><button id="C0101803" value="C0101803" class="btnShow " ></button></td>
+                                            <td><button id="C0100106" value="C0100106" class="btnShow " ></button></td>
                                         </tr> 
                                     </table>
                                 </div>
@@ -459,17 +415,11 @@
                                         <tr>
                                             <td><button id="C1800201" value="C1800201" class="btnShow " ></button></td>
                                         </tr>
-                                        <tr>
-                                            <td><button id="C1800301" value="C1800301" class="btnShow " ></button></td>
-                                        </tr> 
                                     </table>
                                 </div>
                                 <div class="flesDiv" style="width: 50%;height: 100%;">
                                     <table class="" >
-                                        
-                                        <tr>
-                                            <td><button id="C1800501" value="C1800501" class="btnShow " ></button></td>
-                                        </tr>
+                                       
                                         <tr>
                                             <td><button id="C1800601" value="C1800601" class="btnShow " ></button></td>
                                         </tr> 
@@ -485,11 +435,6 @@
                                     <tr>
                                         <td><button id="C2000101" value="C2000101" class="btnShow " ></button></td>
                                         <td><button id="C2000102" value="C2000102" class="btnShow " ></button></td>
-                                        
-                                    </tr>
-                                    <tr>
-                                        <td><button id="C2000201" value="C2000201" class="btnShow " ></button></td>
-                                        <td><button id="C2000202" value="C2000202" class="btnShow " ></button></td>
                                         
                                     </tr>
                                         
@@ -519,6 +464,8 @@
                                 <p>骞叉硶鍒剁矑</p>
                                 <div id="C17" class="flesDiv" style="height:85%; justify-content: space-around;">
                                     <button id="C1700101" value="C1700101" class="btnShow " ></button>
+                                    
+                                    <button id="C1700201" value="C1700201" class="btnShow " ></button>
                                 </div>	
                             </div>
                            
@@ -527,8 +474,9 @@
                         <div class="solidDiv"  style="width: 19%; height: 100%;">	
                             <p>婀挎硶鍒剁矑3</p>
                             <div id="C16" class="flesDiv" style="height:85%; justify-content: space-around;">
-                                <button id="C1600101" value="C1700101" class="btnShow " ></button>
-                                <button id="C1600201" value="C1700201" class="btnShow " ></button>
+                                <button id="C1600101" value="C1600101" class="btnShow " ></button>
+                                <button id="C1600201" value="C1600201" class="btnShow " ></button>
+                                <button id="C1600301" value="C1600301" class="btnShow " ></button>
                             </div>
                         </div>
                     </div>	
@@ -552,6 +500,7 @@
                         <div id="C28" style="height:75%; display: flex; justify-content: space-around;">
                             <div class="flesDiv">
                                 <button id="C2800301" value="C2800301" class="btnShow" ></button>
+                                <button id="C2800302" value="C2800302" class="btnShow" ></button>
                             </div>
                             <div class="flesDiv">
                                 <table class="">
@@ -572,6 +521,7 @@
                         <div id="C29" style="height:75%;  display: flex; justify-content: space-around;">
                             <div class="flesDiv">
                                 <button id="C2900301" value="C2900301" class="btnShow" ></button>
+                                <button id="C2900302" value="C2900302" class="btnShow" ></button>
                             </div>
                             <div class="flesDiv">
                                 <table class="">
@@ -592,6 +542,7 @@
                         <div id="C30" style="height:75%;  display: flex; justify-content: space-around;">
                             <div class="flesDiv">
                                 <button id="C3000301" value="C3000301" class="btnShow" ></button>
+                                <button id="C3000302" value="C3000302" class="btnShow" ></button>
                             </div>
                             <div class="flesDiv">
                                 <table class="">
@@ -612,6 +563,7 @@
                         <div id="C34" style="height:75%;  display: flex; justify-content: space-around;">
                             <div class="flesDiv">
                                 <button id="C3400301" value="C3400301" class="btnShow" ></button>
+                                <button id="C3400302" value="C3400302" class="btnShow" ></button>
                             </div>
                             <div class="flesDiv">
                                 <table class="">
@@ -632,6 +584,7 @@
                         <div id="C35" style="height:75%;  display: flex; justify-content: space-around;">
                             <div class="flesDiv">
                                 <button id="C3500301" value="C3500301" class="btnShow" ></button>
+                                <button id="C3500302" value="C3500302" class="btnShow" ></button>
                             </div>
                             <div class="flesDiv">
                                 <table class="">
@@ -652,6 +605,7 @@
                         <div id="C36" style="height:75%; display: flex; justify-content: space-around;">
                             <div class="flesDiv">
                                 <button id="C3600301" value="C3600301" class="btnShow" ></button>
+                                <button id="C3600302" value="C3600302" class="btnShow" ></button>
                             </div>
                             <div class="flesDiv">
                                 <table class="">
@@ -672,6 +626,7 @@
                         <div id="C37" style="height:75%;  display: flex; justify-content: space-around;">
                             <div class="flesDiv">
                                 <button id="C3700301" value="C3700301" class="btnShow" ></button>
+                                <button id="C3700302" value="C3700302" class="btnShow" ></button>
                             </div>
                             <div class="flesDiv">
                                 <table class="">
@@ -697,13 +652,12 @@
                             <div id="C43" class="flesDiv" style="height:85%; justify-content: space-around;">
                                 <table class="">
                                     <tr>
-                                        <td class="btnShow"></td>
+                                        <td><button id="C4300201" value="C4300201" class="btnShow " ></button></td>
                                         <td><button id="C4300202" value="C4300202" class="btnShow " ></button></td>
-                                        <!-- <td><button id="C4300302" value="C4300302" class="btnShow " ></button></td> -->
                                     </tr>
                                     <tr>
                                         <td><button id="C4300101" value="C4300101" class="btnShow " ></button></td>
-                                        <td><button id="C4300201" value="C4300201" class="btnShow " ></button></td>
+                                        <td><button id="C4300102" value="C4300102" class="btnShow " ></button></td>
                                         <!-- <td><button id="C4300301" value="C4300301" class="btnShow " ></button></td> -->
                                     </tr>
                                      
@@ -796,11 +750,11 @@
                             <p>鎶曟枡鍖�6</p>
                             <div id="C48" class="flesDiv" style="height:85%; justify-content: space-around;">
                                 <table class="">
-                                    <tr>
+                                    <!-- <tr>
                                         <td><button id="C4800102" value="C4800102" class="btnShow " ></button></td>
                                         <td><button id="C4800202" value="C4800202" class="btnShow " ></button></td>
-                                        <!-- <td><button id="C4800302" value="C4800302" class="btnShow " ></button></td> -->
-                                    </tr>
+                                        <td><button id="C4800302" value="C4800302" class="btnShow " ></button></td> 
+                                    </tr> -->
                                     <tr>
                                         <td><button id="C4800101" value="C4800101" class="btnShow " ></button></td>
                                         <td><button id="C4800201" value="C4800201" class="btnShow " ></button></td>
@@ -815,11 +769,11 @@
                             <p>鎶曟枡鍖�7</p>
                             <div id="C49" class="flesDiv" style="height:85%; justify-content: space-around;">
                                 <table class="">
-                                    <tr>
+                                    <!-- <tr>
                                         <td><button id="C4900102" value="C4900102" class="btnShow " ></button></td>
                                         <td><button id="C4900202" value="C4900202" class="btnShow " ></button></td>
-                                        <!-- <td><button id="C4900302" value="C4900302" class="btnShow " ></button></td> -->
-                                    </tr>
+                                        <td><button id="C4900302" value="C4900302" class="btnShow " ></button></td>
+                                    </tr> -->
                                     <tr>
                                         <td><button id="C4900101" value="C4900101" class="btnShow " ></button></td>
                                         <td><button id="C4900201" value="C4900201" class="btnShow " ></button></td>
@@ -834,11 +788,11 @@
                             <p>鎶曟枡鍖�8</p>
                             <div id="C50" class="flesDiv" style="height:85%; justify-content: space-around;">
                                 <table class="">
-                                    <tr>
+                                    <!-- <tr>
                                         <td><button id="C5000102" value="C5000102" class="btnShow " ></button></td>
                                         <td><button id="C5000202" value="C5000202" class="btnShow " ></button></td>
-                                        <!-- <td><button id="C5000302" value="C5000302" class="btnShow " ></button></td> -->
-                                    </tr>
+                                        <td><button id="C5000302" value="C5000302" class="btnShow " ></button></td>
+                                    </tr> -->
                                     <tr>
                                         <td><button id="C5000101" value="C5000101" class="btnShow " ></button></td>
                                         <td><button id="C5000201" value="C5000201" class="btnShow " ></button></td>
@@ -1015,39 +969,15 @@
                                 <div style="width: 80%; height: 100%;">
                                     <div class="flesDiv" style="width: 100%; height: 25%;">
                                         <table>
-                                            <!-- <tr>
-                                                <td><button id="C2400104" value="C2400104" class="btnShow1 " ></button></td>
-                                                <td><button id="C2400204" value="C2400204" class="btnShow1 " ></button></td>
-                                                <td><button id="C2400304" value="C2400304" class="btnShow1 " ></button></td>
-                                                <td><button id="C2400404" value="C2400404" class="btnShow1 " ></button></td>
-                                                <td><button id="C2400504" value="C2400504" class="btnShow1 " ></button></td>
-                                                <td class="btnShow1"></td>
-                                                <td><button id="C2400704" value="C2400704" class="btnShow1 " ></button></td>
-                                                <td><button id="C2400804" value="C2400804" class="btnShow1 " ></button></td>
-                                                <td><button id="C2400904" value="C2400904" class="btnShow1 " ></button></td>
-                                                <td class="btnShow1"></td>
-                                                <td><button id="C2401104" value="C2401104" class="btnShow1 " ></button></td>
-                                                <td><button id="C2401204" value="C2401204" class="btnShow1 " ></button></td>
-                                                <td><button id="C2401304" value="C2401304" class="btnShow1 " ></button></td>
-                                                <td class="btnShow1"></td>
-                                                <td><button id="C2401504" value="C2401504" class="btnShow1 " ></button></td>
-                                                <td><button id="C2401604" value="C2401604" class="btnShow1 " ></button></td>
-                                                <td><button id="C2401704" value="C2401704" class="btnShow1 " ></button></td>
-                                                <td><button id="C2401804" value="C2401804" class="btnShow1 " ></button></td>
-                                                <td><button id="C2401904" value="C2401904" class="btnShow1 " ></button></td>
-
-                                            </tr> -->
                                             <tr>
                                                 <td><button id="C2400103" value="C2400103" class="btnShow1 " ></button></td>
                                                 <td><button id="C2400203" value="C2400203" class="btnShow1 " ></button></td>
                                                 <td><button id="C2400303" value="C2400303" class="btnShow1 " ></button></td>
                                                 <td><button id="C2400403" value="C2400403" class="btnShow1 " ></button></td>
-                                                <td><button id="C2400503" value="C2400503" class="btnShow1 " ></button></td>
                                                 <td class="btnShow1"></td>
-                                                <td><button id="C2400703" value="C2400703" class="btnShow1 " ></button></td>
                                                 <td><button id="C2400803" value="C2400803" class="btnShow1 " ></button></td>
                                                 <td><button id="C2400903" value="C2400903" class="btnShow1 " ></button></td>
-                                                <td><button id="C2401002" value="C2401002" class="btnShow1 " ></button></td>
+                                                 <td class="btnShow1"></td>
                                                 <td><button id="C2401103" value="C2401103" class="btnShow1 " ></button></td>
                                                 <td><button id="C2401203" value="C2401203" class="btnShow1 " ></button></td>
                                                 <td><button id="C2401303" value="C2401303" class="btnShow1 " ></button></td>
@@ -1063,16 +993,14 @@
                                                 <td><button id="C2400202" value="C2400202" class="btnShow1 " ></button></td>
                                                 <td><button id="C2400302" value="C2400302" class="btnShow1 " ></button></td>
                                                 <td><button id="C2400402" value="C2400402" class="btnShow1 " ></button></td>
-                                                <td><button id="C2400502" value="C2400502" class="btnShow1 " ></button></td> 
-                                                <td><button id="C2400602" value="C2400602" class="btnShow1 " ></button></td> 
-                                                <td><button id="C2400702" value="C2400702" class="btnShow1 " ></button></td>
+                                                <td class="btnShow1"></td>
                                                 <td><button id="C2400802" value="C2400802" class="btnShow1 " ></button></td>
                                                 <td><button id="C2400902" value="C2400902" class="btnShow1 " ></button></td>
-                                                <td><button id="C2401001" value="C2401001" class="btnShow1 " ></button></td>
+                                                 <td class="btnShow1"></td>
                                                 <td><button id="C2401102" value="C2401102" class="btnShow1 " ></button></td>
                                                 <td><button id="C2401202" value="C2401202" class="btnShow1 " ></button></td>
                                                 <td><button id="C2401302" value="C2401302" class="btnShow1 " ></button></td>
-                                                <td><button id="C2401402" value="C2401402" class="btnShow1 " ></button></td>
+                                                <td class="btnShow1"></td>
                                                 <td><button id="C2401502" value="C2401502" class="btnShow1 " ></button></td>
                                                 <td><button id="C2401602" value="C2401602" class="btnShow1 " ></button></td>
                                                 <td><button id="C2401702" value="C2401702" class="btnShow1 " ></button></td>
@@ -1084,16 +1012,14 @@
                                                 <td><button id="C2400201" value="C2400201" class="btnShow1 " ></button></td>
                                                 <td><button id="C2400301" value="C2400301" class="btnShow1 " ></button></td>
                                                 <td><button id="C2400401" value="C2400401" class="btnShow1 " ></button></td>
-                                                <td><button id="C2400501" value="C2400501" class="btnShow1 " ></button></td> 
-                                                <td><button id="C2400601" value="C2400601" class="btnShow1 " ></button></td> 
-                                                <td><button id="C2400701" value="C2400701" class="btnShow1 " ></button></td>
+                                                <td class="btnShow1"></td>
                                                 <td><button id="C2400801" value="C2400801" class="btnShow1 " ></button></td>
                                                 <td><button id="C2400901" value="C2400901" class="btnShow1 " ></button></td>
-                                                <td class="btnShow1"></td>
+                                                 <td class="btnShow1"></td>
                                                 <td><button id="C2401101" value="C2401101" class="btnShow1 " ></button></td>
                                                 <td><button id="C2401201" value="C2401201" class="btnShow1 " ></button></td>
                                                 <td><button id="C2401301" value="C2401301" class="btnShow1 " ></button></td>
-                                                <td><button id="C2401401" value="C2401401" class="btnShow1 " ></button></td>
+                                                <td class="btnShow1"></td>
                                                 <td><button id="C2401501" value="C2401501" class="btnShow1 " ></button></td>
                                                 <td><button id="C2401601" value="C2401601" class="btnShow1 " ></button></td>
                                                 <td><button id="C2401701" value="C2401701" class="btnShow1 " ></button></td>
@@ -1152,7 +1078,7 @@
                                                 <td><button id="C2402201" value="C2402201" class="btnShow1 " ></button></td>
                                                 <td><button id="C2402301" value="C2402301" class="btnShow1 " ></button></td>
                                                 <td><button id="C2402401" value="C2402401" class="btnShow1 " ></button></td> 
-                                                <td><button id="C2402501" value="C2402501" class="btnShow1 " ></button></td>
+                                                 <td class="btnShow1"></td>
                                                 <td><button id="C2402601" value="C2402601" class="btnShow1 " ></button></td>
                                                 <td><button id="C2402701" value="C2402701" class="btnShow1 " ></button></td>
                                                 <td><button id="C2402801" value="C2402801" class="btnShow1 " ></button></td>
@@ -1171,27 +1097,7 @@
                                     </div>
                                     <div class="flesDiv" style="width: 100%; height: 25%;">
                                         <table>
-                                            <!-- <tr>
-                                                <td><button id="C2403904" value="C2403904" class="btnShow1 " ></button></td>
-                                                <td><button id="C2404004" value="C2404004" class="btnShow1 " ></button></td>
-                                                <td><button id="C2404104" value="C2404104" class="btnShow1 " ></button></td>
-                                                <td><button id="C2404204" value="C2404204" class="btnShow1 " ></button></td>
-                                                <td class="btnShow1"></td>
-                                                <td><button id="C2404401" value="C2404401" class="btnShow1 " ></button></td>
-                                                <td><button id="C2404604" value="C2404604" class="btnShow1 " ></button></td>
-                                                <td><button id="C2404704" value="C2404704" class="btnShow1 " ></button></td>
-                                                <td><button id="C2404804" value="C2404804" class="btnShow1 " ></button></td>
-                                                <td><button id="C2404904" value="C2404904" class="btnShow1 " ></button></td>
-                                                <td><button id="C2405004" value="C2405004" class="btnShow1 " ></button></td>
-                                                <td><button id="C2405104" value="C2405104" class="btnShow1 " ></button></td>
-                                                <td><button id="C2405203" value="C2405203" class="btnShow1 " ></button></td>
-                                                <td class="btnShow1"></td>
-                                                <td><button id="C2405404" value="C2405404" class="btnShow1 " ></button></td>
-                                                <td><button id="C2405504" value="C2405504" class="btnShow1 " ></button></td>
-                                                <td><button id="C2405604" value="C2405604" class="btnShow1 " ></button></td>
-                                                <td><button id="C2405704" value="C2405704" class="btnShow1 " ></button></td>
-                                                <td><button id="C2405804" value="C2405804" class="btnShow1 " ></button></td>
-                                            </tr> -->
+                                            
                                             <tr>
                                                 <td><button id="C2403903" value="C2403903" class="btnShow1 " ></button></td>
                                                 <td><button id="C2404003" value="C2404003" class="btnShow1 " ></button></td>
@@ -1219,16 +1125,15 @@
                                                 <td><button id="C2404102" value="C2404102" class="btnShow1 " ></button></td>
                                                 <td><button id="C2404202" value="C2404202" class="btnShow1 " ></button></td>
                                                 <td><button id="C2404302" value="C2404302" class="btnShow1 " ></button></td> 
-                                                 
-                                                <td><button id="C2404502" value="C2404502" class="btnShow1 " ></button></td>
+                                                  <td class="btnShow1"></td>
                                                 <td><button id="C2404602" value="C2404602" class="btnShow1 " ></button></td>
                                                 <td><button id="C2404702" value="C2404702" class="btnShow1 " ></button></td>
                                                 <td><button id="C2404802" value="C2404802" class="btnShow1 " ></button></td>
                                                 <td><button id="C2404902" value="C2404902" class="btnShow1 " ></button></td>
                                                 <td><button id="C2405002" value="C2405002" class="btnShow1 " ></button></td>
                                                 <td><button id="C2405102" value="C2405102" class="btnShow1 " ></button></td>
-                                                <td><button id="C2405201" value="C2405201" class="btnShow1 " ></button></td>
-                                                <td><button id="C2405302" value="C2405302" class="btnShow1 " ></button></td>
+                                                <td><button id="C2405201" value="C2405201" class="btnShow1 " ></button></td> 
+                                                <td class="btnShow1"></td>
                                                 <td><button id="C2405402" value="C2405402" class="btnShow1 " ></button></td>
                                                 <td><button id="C2405502" value="C2405502" class="btnShow1 " ></button></td>
                                                 <td><button id="C2405602" value="C2405602" class="btnShow1 " ></button></td>
@@ -1241,8 +1146,7 @@
                                                 <td><button id="C2404101" value="C2404101" class="btnShow1 " ></button></td>
                                                 <td><button id="C2404201" value="C2404201" class="btnShow1 " ></button></td>
                                                 <td><button id="C2404301" value="C2404301" class="btnShow1 " ></button></td> 
-                                                 
-                                                <td><button id="C2404501" value="C2404501" class="btnShow1 " ></button></td>
+                                                  <td class="btnShow1"></td>
                                                 <td><button id="C2404601" value="C2404601" class="btnShow1 " ></button></td>
                                                 <td><button id="C2404701" value="C2404701" class="btnShow1 " ></button></td>
                                                 <td><button id="C2404801" value="C2404801" class="btnShow1 " ></button></td>
@@ -1250,7 +1154,7 @@
                                                 <td><button id="C2405001" value="C2405001" class="btnShow1 " ></button></td>
                                                 <td><button id="C2405101" value="C2405101" class="btnShow1 " ></button></td>
                                                 <td class="btnShow1"></td>
-                                                <td><button id="C2405301" value="C2405301" class="btnShow1 " ></button></td>
+                                                <td class="btnShow1"></td>
                                                 <td><button id="C2405401" value="C2405401" class="btnShow1 " ></button></td>
                                                 <td><button id="C2405501" value="C2405501" class="btnShow1 " ></button></td>
                                                 <td><button id="C2405601" value="C2405601" class="btnShow1 " ></button></td>
@@ -1280,14 +1184,13 @@
                                                 <td><button id="C2407403" value="C2407403" class="btnShow1 " ></button></td>
                                                 <td><button id="C2407503" value="C2407503" class="btnShow1 " ></button></td>
                                                 <td><button id="C2407603" value="C2407603" class="btnShow1 " ></button></td>
-                                                <td><button id="C2407703" value="C2407703" class="btnShow1 " ></button></td>
                                             </tr>
                                             <tr>
                                                 <td><button id="C2405902" value="C2405902" class="btnShow1 " ></button></td>
                                                 <td><button id="C2406002" value="C2406002" class="btnShow1 " ></button></td>
                                                 <td><button id="C2406102" value="C2406102" class="btnShow1 " ></button></td>
                                                 <td><button id="C2406202" value="C2406202" class="btnShow1 " ></button></td>
-                                                <td><button id="C2406302" value="C2406302" class="btnShow1 " ></button></td> 
+                                                 <td class="btnShow1"></td>
                                                 <td class="btnShow1"></td>
                                                 <td><button id="C2406502" value="C2406502" class="btnShow1 " ></button></td>
                                                 <td><button id="C2406602" value="C2406602" class="btnShow1 " ></button></td>
@@ -1301,15 +1204,14 @@
                                                 <td><button id="C2407402" value="C2407402" class="btnShow1 " ></button></td>
                                                 <td><button id="C2407502" value="C2407502" class="btnShow1 " ></button></td>
                                                 <td><button id="C2407602" value="C2407602" class="btnShow1 " ></button></td>
-                                                <td><button id="C2407702" value="C2407702" class="btnShow1 " ></button></td>
                                             </tr>
                                             <tr>
                                                 <td><button id="C2405901" value="C2405901" class="btnShow1 " ></button></td>
                                                 <td><button id="C2406001" value="C2406001" class="btnShow1 " ></button></td>
                                                 <td><button id="C2406101" value="C2406101" class="btnShow1 " ></button></td>
                                                 <td><button id="C2406201" value="C2406201" class="btnShow1 " ></button></td>
-                                                <td><button id="C2406301" value="C2406301" class="btnShow1 " ></button></td> 
-                                                <td><button id="C2406401" value="C2406401" class="btnShow1 " ></button></td>
+                                                <td class="btnShow1"></td> 
+                                                <td class="btnShow1"></td>
                                                 <td><button id="C2406501" value="C2406501" class="btnShow1 " ></button></td>
                                                 <td><button id="C2406601" value="C2406601" class="btnShow1 " ></button></td>
                                                 <td><button id="C2406701" value="C2406701" class="btnShow1 " ></button></td>
@@ -1317,12 +1219,11 @@
                                                 <td><button id="C2406901" value="C2406901" class="btnShow1 " ></button></td>
                                                 <td><button id="C2407001" value="C2407001" class="btnShow1 " ></button></td>
                                                 <td><button id="C2407101" value="C2407101" class="btnShow1 " ></button></td>
-                                                <td><button id="C2407201" value="C2407201" class="btnShow1 " ></button></td>
+                                                <td class="btnShow1"></td>
                                                 <td><button id="C2407301" value="C2407301" class="btnShow1 " ></button></td>
                                                 <td><button id="C2407401" value="C2407401" class="btnShow1 " ></button></td>
                                                 <td><button id="C2407501" value="C2407501" class="btnShow1 " ></button></td>
                                                 <td><button id="C2407601" value="C2407601" class="btnShow1 " ></button></td>
-                                                <td><button id="C2407701" value="C2407701" class="btnShow1 " ></button></td>
                                             </tr>
                                         </table>
                                     </div>
diff --git a/HTML/views/WareHouseSetting/Locate.html b/HTML/views/WareHouseSetting/Locate.html
index 0213ea4..2e2711c 100644
--- a/HTML/views/WareHouseSetting/Locate.html
+++ b/HTML/views/WareHouseSetting/Locate.html
@@ -109,12 +109,12 @@
 								<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>鎼滅储
 							</button>
 						</div>
-						<div class="layui-inline">
+						<!-- <div class="layui-inline">
 							<button style="margin-right: 10px;" class="layui-btn layui-btn-normal layui-btn-sm layuiadmin-btn-list editClass"
 								data-type="editList" id="approvalBtn">
 								<i class="layui-icon layui-icon-edit layuiadmin-button-btn"> </i>鎵归噺缂栬緫
 							</button>
-						</div>
+						</div> -->
 					</div>
 				</div>
 				<div id="center"></div>
diff --git a/HTML/views/WareHouseSetting/Pallets.html b/HTML/views/WareHouseSetting/Pallets.html
index 827a75d..5e50472 100644
--- a/HTML/views/WareHouseSetting/Pallets.html
+++ b/HTML/views/WareHouseSetting/Pallets.html
@@ -164,7 +164,7 @@
 									default:
 										return ""; 
 								}
-							}
+							} 
 						}, {
 							field: 'CreateUserName',
 							title: '鍒涘缓浜�',
@@ -251,7 +251,7 @@
 										var param = {
 											PalletNo:field.StockCode,
 											LocatNo:field.LocatNo,
-											DeviceCode:field.DeviceCode
+											DeviceCode:field.Status
 										};
 										synData(IP + "/Sys/AddPallets", param, 'post', function(res) {
 											console.log(res);
diff --git a/HTML/views/WareHouseSetting/PalletsPrintFrom.html b/HTML/views/WareHouseSetting/PalletsPrintFrom.html
index a0c4fce..187b972 100644
--- a/HTML/views/WareHouseSetting/PalletsPrintFrom.html
+++ b/HTML/views/WareHouseSetting/PalletsPrintFrom.html
@@ -13,23 +13,28 @@
 		<div class="layui-form" lay-filter="layuiadmin-app-form-list" id="layuiadmin-app-form-list" style="padding: 20px 30px 0 0;">
 			<div class="layui-form-item">
 				<label class="layui-form-label">妗跺彿</label>
-				<div class="layui-input-block">
+				<div class="layui-input-block"  style="width: 70%;">
 					<input type="text" name="StockCode" placeholder="璇疯緭鍏ユ《鍙�" lay-verify="required" autocomplete="off" class="layui-input">
 				</div>
 			</div>			
 			<div class="layui-form-item">
 				<label class="layui-form-label">鍌ㄤ綅鍦板潃</label>
-				<div class="layui-input-block">
+				<div class="layui-input-block"  style="width: 70%;">
 					<input type="text" name="LocatNo" placeholder="璇疯緭鍏ュ偍浣嶅湴鍧�" lay-verify="required" autocomplete="off" class="layui-input">
 				</div>
 			</div>
 			<div class="layui-form-item">
-				<label class="layui-form-label">妗惰鏍�(L)</label>
-				<div class="layui-input-block">
-					<input type="text" name="DeviceCode" placeholder="璇疯緭鍏ユ《瑙勬牸" lay-verify="required" autocomplete="off" class="layui-input">
-				</div>
-			</div>
+					<label class="layui-form-label">妗剁被鍨�</label>
+					<div class="layui-input-block" style="width: 70%;">
+						<select name="Status" id="Status" lay-verify="">
+							<option value=""></option>
+									<option value="0">鍑�妗�</option>
+									<option value="3">鑴忔《</option>
+						</select>
+					</div>
+            </div>
 			<div class="layui-form-item layui-hide">
+				
 				<input type="button" lay-submit lay-filter="layuiadmin-app-form-submit" id="layuiadmin-app-form-submit" value="纭娣诲姞">
 				<input type="button" lay-submit lay-filter="layuiadmin-app-form-edit" id="layuiadmin-app-form-edit" value="纭缂栬緫">
 			</div>
diff --git a/Wms/Model/InterFaceModel/HopperTransportModel.cs b/Wms/Model/InterFaceModel/HopperTransportModel.cs
index 5b73558..34b163a 100644
--- a/Wms/Model/InterFaceModel/HopperTransportModel.cs
+++ b/Wms/Model/InterFaceModel/HopperTransportModel.cs
@@ -22,6 +22,13 @@
         public decimal Weight { get; set; }
 
     }
+    public class PointTask
+    {
+        public string ID { get; set; }
+        public string BeginPoint { get; set; }
+        public string EndPoint { get; set; }
+    
 
+    }
 
 }
diff --git a/Wms/Model/InterFaceModel/HttpModel.cs b/Wms/Model/InterFaceModel/HttpModel.cs
index cd50900..7b14e5a 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.Data;
 using System.Text;
 
 namespace Model.InterFaceModel
@@ -592,64 +593,6 @@
     }
 
     /// <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
@@ -683,6 +626,12 @@
         public ExtraModelView values { get; set; }
 
     }
+    public class AgvCancelTask
+    {
+        public string robotTaskCode {  get; set; }
+        public string cancelType {  get; set; }
+       
+    }
 
 
     /// <summary>
diff --git a/Wms/Model/ModelVm/DataVm/DataStockInfoVM.cs b/Wms/Model/ModelVm/DataVm/DataStockInfoVM.cs
index a37925e..c602f48 100644
--- a/Wms/Model/ModelVm/DataVm/DataStockInfoVM.cs
+++ b/Wms/Model/ModelVm/DataVm/DataStockInfoVM.cs
@@ -193,4 +193,13 @@
         /// </summary>
         public int? UpdateUser { get; set; }
     }
+    public class DelStockInfo
+    {
+        /// <summary>
+        /// Desc:搴撳瓨鏄庣粏ID
+        /// Default:
+        /// Nullable:False
+        /// </summary>           
+        public int StockId { get; set; }
+    }
 }
diff --git a/Wms/Utility/Tools/RcsHelper.cs b/Wms/Utility/Tools/RcsHelper.cs
index 88d44ab..2c7164e 100644
--- a/Wms/Utility/Tools/RcsHelper.cs
+++ b/Wms/Utility/Tools/RcsHelper.cs
@@ -29,7 +29,7 @@
             switch (taskDetial.Crtype)
             {
                 case "1":  //鍙《
-                    tasktype = "F12";
+                    tasktype = "F16";
                     break;
                 case "2":  //鍙溅
                     tasktype = "F12";
@@ -43,13 +43,11 @@
                 default:
                     break;
             }
-
-            //璺ㄦゼ灞備换鍔asktype鍊艰祴鍊尖�︹��
-            if (taskDetial.Endport.Substring(0,3) == "C01")
+            //鍙栧噣妗惰法妤煎眰浠诲姟tasktype鍊艰祴鍊�
+            if (taskDetial.Endport.Substring(0,3) == "C01" && taskDetial.Startport.Substring(0,1) == "1")
             {
                 tasktype = "F23";
             }
-            
 
             List<targetRoute> pahtList = new List<targetRoute>();
             //璧峰浣嶇疆
@@ -165,10 +163,10 @@
 
             // 姝e紡杩愯绋嬪簭鏀惧紑
             var jsonData = JsonConvert.SerializeObject(carrierInfo);
-            string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV缁戝畾杞藉叿鍛戒护", "AGV", key);
+            string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV瑙i櫎缁戝畾杞藉叿鍛戒护", "AGV", key);
             //瑙f瀽杩斿洖鏁版嵁 
             var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
-            if (agvModel.Code == "0")
+            if (agvModel.Code == "SUCCESS")
             {
                 result = true;//缁欎笅杞︿笅鍙戜换鍔℃垚鍔�
 
diff --git a/Wms/WMS.BLL/BllQualityServer/QualityInspectServer.cs b/Wms/WMS.BLL/BllQualityServer/QualityInspectServer.cs
index 959b073..f7ce021 100644
--- a/Wms/WMS.BLL/BllQualityServer/QualityInspectServer.cs
+++ b/Wms/WMS.BLL/BllQualityServer/QualityInspectServer.cs
@@ -96,6 +96,11 @@
                 throw new Exception("璐ㄦ鍙蜂笉鍙负绌猴紝璇锋牳鏌ワ紒");
             }
             //楠岃瘉鎵规鍙锋槸鍚︿负绌�
+            if (string.IsNullOrEmpty(model.SkuNo))
+            {
+                throw new Exception("鐗╂枡缂栫爜涓嶅彲涓虹┖锛岃鏍告煡锛�");
+            }
+            //楠岃瘉鎵规鍙锋槸鍚︿负绌�
             if (string.IsNullOrEmpty(model.LotNo))
             {
                 throw new Exception("鎵规鍙蜂笉鍙负绌猴紝璇锋牳鏌ワ紒");
@@ -103,14 +108,17 @@
 
             model.Origin = "WMS"; //鏉ユ簮
             model.CreateTime = Db.GetDate(); //鍒涘缓鏃ユ湡
-            model.SkuNo = ""; //鐗╂枡鍙�
             model.SkuName = ""; //鐗╂枡鍚嶇О
             model.PassQty = 0; //鍚堟牸鏁伴噺
             model.FailQty = 0; //涓嶅悎鏍兼暟閲�
             model.Standard = ""; //瑙勬牸
 
             //鏌ユ壘搴撳瓨鏄庣粏淇℃伅
-            List<DataStockDetail> detail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.LotNo == model.LotNo).ToList();
+            List<DataStockDetail> detail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.SkuNo == model.SkuNo && m.LotNo == model.LotNo).ToList();
+            if (detail.Count == 0)
+            {
+                throw new Exception("鏈壘鍒板綋鍓嶇墿鏂欏綋鍓嶆壒娆$殑搴撳瓨");
+            }
             foreach (var item in detail)
             {
                 //鍒ゆ柇鍚堟牸鐘舵�佹槸鍚﹀悎鏍�
@@ -151,6 +159,34 @@
                 throw new Exception(ex.Message);
             }
         }
+
+        /// <summary>
+        /// 鑾峰彇搴撳瓨鎵规鍙烽泦鍚�
+        /// </summary>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        public List<DataStockDetail> GetLotNoList(string skuNo)
+        {
+            try
+            {
+                string str = "select skuNo from DataStockDetail where isDel = '0'";
+                if (!string.IsNullOrEmpty(skuNo))
+                {
+                    str += " and skuNo = @skuNo";
+                }
+
+                str += " group by skuNo";
+                List<DataStockDetail> skulist = Db.Ado.SqlQuery<DataStockDetail>(str, new
+                {
+                    SkuNo = "%" + skuNo + "%", //鐗╂枡鍙�
+                });
+                return skulist;
+            }
+            catch (Exception ex)
+            {
+                throw new Exception(ex.Message);
+            }
+        }
         #endregion
 
     }
diff --git a/Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs b/Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs
index 29fb576..821fbdf 100644
--- a/Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs
+++ b/Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs
@@ -240,6 +240,7 @@
                 {
                     throw new Exception("婊℃《璇烽�夋嫨鐗╂枡涓庢壒娆�");
                 }
+                
                 //鍒ゆ柇鐩爣鍙枡鍌ㄤ綅鐘舵��
                 var endLocateInfo = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.LocatNo == endLocate && m.AreaNo == areaNo);
                 if (endLocateInfo == null)
@@ -274,7 +275,12 @@
                 {
                     if (house.WareHouseNo == "M01")
                     {
-                        stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.Status == "0" && m.PalletStatus == "0" && m.Standard == standard && !string.IsNullOrWhiteSpace(m.LocatNo)).OrderBy(m => m.LocatNo).ToList();
+                        stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.Status == "0" && m.PalletStatus == "0" && m.WareHouseNo == "M01" && m.Standard == standard && !string.IsNullOrWhiteSpace(m.LocatNo)).OrderBy(m => m.LocatNo).ToList();
+                        if (stockDetail.Count() == 0)
+                        {
+                            stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.Status == "0" && m.PalletStatus == "0" && m.Standard == standard && !string.IsNullOrWhiteSpace(m.LocatNo)).OrderBy(m => m.LocatNo).ToList();
+                        }
+                        
                     }
                     else
                     {
@@ -285,7 +291,8 @@
                 //婊℃《
                 else if (plnStatus == "2") 
                 {
-                    stockDetail = stockDetail.Where(m => m.PalletStatus == "2" && m.SkuNo == skuNo && m.LotNo == lotNo).OrderBy(m => m.LocatNo).ToList();
+                    stockDetail = stockDetail.Where(m => m.PalletStatus == "2" && m.SkuNo == skuNo && m.LotNo == lotNo && m.InspectStatus == "1").OrderBy(m => m.LocatNo).ToList();
+                   
                 }
                 else
                 {
@@ -305,25 +312,45 @@
                 //鐩爣浠撳簱鎵�鏈夊偍浣�
                 var locatList = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Flag=="0" && w.WareHouseNo == house.WareHouseNo).OrderBy(w=>w.Column).ToList();
                 //鐩爣浠撳簱鎵�鏈夋渶澶栦晶鐨勫偍浣�
-                var locatListWai = locatList.Where(w => string.IsNullOrEmpty(w.AisleOne)).Select(s => s.LocatNo);
-
-                //鍏堟壘涓嶉渶瑕佺Щ搴撶殑妗�
-                var palletModel = stockDetail.Where(w => locatListWai.Contains(w.LocatNo) && w.Status == "0").OrderByDescending(w => w.UpdateTime).FirstOrDefault();
-                if (palletModel == null)
+                var locatListWai = locatList.Where(w => string.IsNullOrEmpty(w.AisleOne) && w.Flag == "0").Select(s => s.LocatNo);
+                var locatListNei = locatList.Where(w => !string.IsNullOrEmpty(w.AisleOne) && w.Flag == "0").Select(s => s.LocatNo);
+                var palletModel = new DataStockDetail();
+                if (plnStatus == "0") //鍑�妗惰幏鍙栧簱浣�
                 {
-                    //鎵鹃渶瑕佺Щ搴撶殑妗�
-                    palletModel= stockDetail.Where(w => !locatListWai.Contains(w.LocatNo)).OrderByDescending(w => w.UpdateTime).FirstOrDefault();
+                    //鍏堟壘涓嶉渶瑕佺Щ搴撶殑妗�
+                    palletModel = stockDetail.Where(w => locatListWai.Contains(w.LocatNo) && w.Status == "0" && w.Standard == standard).OrderByDescending(w => w.UpdateTime).FirstOrDefault();
                     if (palletModel == null)
                     {
-                        throw new Exception("鏈壘鍒板搴旀《淇℃伅");
+                        //鎵鹃渶瑕佺Щ搴撶殑妗�
+                        palletModel = stockDetail.Where(w => locatListNei.Contains(w.LocatNo) && w.Standard == standard).OrderByDescending(w => w.UpdateTime).FirstOrDefault();
+                        if (palletModel == null)
+                        {
+                            throw new Exception("鏈壘鍒板搴旀《淇℃伅");
+                        }
+                        resultYi = YikuTask(palletModel.PalletNo, taskNo, url, bindUrl);
                     }
-                    resultYi = YikuTask(palletModel.PalletNo, taskNo, url,bindUrl);
                 }
+                else   //婊℃《鑾峰彇搴撲綅
+                {
+                    //鍏堟壘涓嶉渶瑕佺Щ搴撶殑妗�
+                    palletModel = stockDetail.Where(w => locatListWai.Contains(w.LocatNo) && w.Status == "0").OrderByDescending(w => w.UpdateTime).FirstOrDefault();
+                    if (palletModel == null)
+                    {
+                        //鎵鹃渶瑕佺Щ搴撶殑妗�
+                        palletModel = stockDetail.Where(w => locatListNei.Contains(w.LocatNo)).OrderByDescending(w => w.UpdateTime).FirstOrDefault();
+                        if (palletModel == null)
+                        {
+                            throw new Exception("鏈壘鍒板搴旀《淇℃伅");
+                        }
+                        resultYi = YikuTask(palletModel.PalletNo, taskNo, url, bindUrl);
+                    }
+                }
+                
                 palletModel.Status = "2";
                 Db.Updateable(palletModel).ExecuteCommand();
                 #endregion
                 //璧峰鍌ㄤ綅鍦板潃淇℃伅
-                var startLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.Status == "1" && w.LocatNo == palletModel.LocatNo);
+                var startLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletModel.LocatNo);
                 if (startLoction == null)
                 {
                     throw new Exception($"璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿palletModel.LocatNo}");
@@ -332,6 +359,12 @@
                 if (resultYi)
                 {
                     taskNo = taskNo + "-1";
+                }
+                //妫�楠屽綋鍓嶆墭鐩樻槸鍚︽湁浠诲姟鏈畬鎴�
+                var checkTask = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && (w.Status == "1" || w.Status == "0") && w.PalletNo == palletModel.PalletNo);
+                if (checkTask != null)
+                {
+                    throw new Exception("褰撳墠鎵樼洏鏈夋鍦ㄦ墽琛岀殑浠诲姟锛�");
                 }
                 //娣诲姞浠诲姟
                 var logTaskEntry = new LogTask
@@ -430,8 +463,8 @@
         {
             try
             {
+                string type = "1";//鍙枡妯℃澘
                 #region 鍒ゆ柇
-
                 if (string.IsNullOrWhiteSpace(areaNo) || string.IsNullOrWhiteSpace(StartLocate) || string.IsNullOrWhiteSpace(plnStatus))
                 {
                     throw new Exception("鍖哄煙/璧峰浣�/妗剁被鍨嬩笉鑳戒负绌�");
@@ -480,6 +513,10 @@
                 //鐩爣妤煎眰
                 var layer = startLoction.Layer;
                 var houseStr = layer == 3 ? "3妤间腑闂寸珯" : layer == 4 ? "4妤间腑闂寸珯" : "";
+                if (layer == 3 && plnStatus == "2")
+                {
+                    type = "2"; 
+                }
                 //閫氳繃浠撳簱鍚嶇О鏌ヨ浠撳簱淇℃伅
                 var house = Db.Queryable<SysWareHouse>().First(m => m.IsDel == "0" && m.WareHouseName == houseStr);
                 if (house == null)
@@ -516,7 +553,7 @@
                         Status = "2",
                         InspectMark = "0",
                         BitPalletMark = "0",
-                        InspectStatus = "1",
+                        InspectStatus = "0",
                     };
                     Db.Updateable(stockDetailNew).ExecuteCommand();
                 }
@@ -538,7 +575,12 @@
                 {
                     throw new Exception("娌℃湁鎵惧埌鍚堥�傜殑鐩爣鍌ㄤ綅");
                 }
-
+                //妫�楠屽綋鍓嶆墭鐩樻槸鍚︽湁浠诲姟鏈畬鎴�
+                var checkTask = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && (w.Status == "1" || w.Status == "0") && w.PalletNo == plnNo);
+                if (checkTask != null)
+                {
+                    throw new Exception("褰撳墠鎵樼洏鏈夋鍦ㄦ墽琛岀殑浠诲姟锛�");
+                }
                 var taskNo = new Common().GetMaxNo("TK");
                 //娣诲姞浠诲姟
                 var logTaskEntry = new LogTask
@@ -569,7 +611,7 @@
                     Startport = StartLocate,//璧峰浣嶇疆
                     Endport = endLocatInfo.LocatNo,//鐩爣浣嶇疆
                     Pallno = plnNo,//妗跺彿
-                    Crtype = "1",//鍙《
+                    Crtype = type,//鍙溅妯℃澘
                 };
                 //璋冪敤AGV鎺ュ彛涓嬪彂浠诲姟
                 string agvMsg = string.Empty;
@@ -678,19 +720,37 @@
                 {
                     throw new Exception($"璧峰鍌ㄤ綅淇℃伅涓嶅瓨鍦�");
                 }
-                startLocatInfo.Status = "0";//绌哄偍浣�
-                //淇敼璧峰鍌ㄤ綅鐘舵��
-                Db.Updateable(startLocatInfo).ExecuteCommand();
+                //startLocatInfo.Status = "0";//绌哄偍浣�
+                ////淇敼璧峰鍌ㄤ綅鐘舵��
+                //Db.Updateable(startLocatInfo).ExecuteCommand();
 
-                //鐩爣鍌ㄤ綅淇℃伅
+                //浠诲姟琛ㄤ腑鐩爣鍌ㄤ綅淇℃伅
                 var endLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.EndLocat && w.IsDel == "0");
                 if (endLocatInfo == null)
                 {
                     throw new Exception($"鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�");
                 }
+                //AGV灏忚溅杩斿洖瀹為檯瀛樻斁鐩爣鍌ㄤ綅
+                var trueLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == locateNo && w.IsDel == "0");
+                if (trueLocatInfo == null)
+                {
+                    throw new Exception($"灏忚溅鏀捐揣鍌ㄤ綅淇℃伅涓嶅瓨鍦�");
+                }
+                if (endLocatInfo.LocatNo != trueLocatInfo.LocatNo)
+                {
+                    //涓嶄竴鑷存椂浠ュ皬杞︽斁璐у偍浣嶄负鍑�
+                    endLocatInfo = trueLocatInfo;
+                    //var tasklocat = Db.Queryable<LogTask>().First(w => w.EndLocat == trueLocatInfo.LocatNo && (w.Status == "0" || w.Status == "1") && w.IsDel == "0");
+                    //if (tasklocat == null) 
+                    //{
+                    //    trueLocatInfo.Status = "0";
+                    //    Db.Updateable(trueLocatInfo).ExecuteCommand();
+                    //}
+
+                }
+                //淇敼鐩爣鍌ㄤ綅鐘舵��
                 endLocatInfo.Status = "1";//鏈夌墿鍝�
                 endLocatInfo.UpdateTime = DateTime.Now;//鏇存柊鏃堕棿
-                //淇敼鐩爣鍌ㄤ綅鐘舵��
                 Db.Updateable(endLocatInfo).ExecuteCommand();
 
                 //鐩爣鍌ㄤ綅鎵�灞炲尯鍩�
@@ -817,6 +877,7 @@
                 var startLoction = new SysStorageLocat();//璧峰鍌ㄤ綅淇℃伅
                 var endLoction = new SysStorageLocat();//鐩爣鍌ㄤ綅淇℃伅
                 var palletModel = new DataStockDetail();//鍒嗛厤妗朵俊鎭�
+                string locatno = "";
                 string type = "";//鍙枡绫诲瀷
 
                 //寮�鍚簨鍔�
@@ -847,22 +908,26 @@
                             {
                                 //鏈夎剰妗剁殑璇濓紝灏嗘洿鏀规妗剁姸鎬�(浠h〃姝ゆ《姝e湪娓呮礂涓�)
                                 var qxStock = Db.Queryable<DataStockDetail>().Where(w => w.LocatNo == endLoction.LocatNo).First();
+                                if (qxStock == null)
+                                {
+                                    throw new Exception("鍙枡浣嶇疆鐘舵�侀敊璇�");
+                                }
                                 qxStock.Status = "2"; 
-                                qxStock.UpdateTime = DateTime.Now;//娓呮礂鏃堕棿
+                                //qxStock.UpdateTime = DateTime.Now;//娓呮礂鏃堕棿
                                 Db.Updateable(qxStock).ExecuteCommand();
                                 //鏇存敼璁惧鍌ㄤ綅鐘舵�佷负绌哄偍浣�
                                 endLoction.Status = "0";
                                 Db.Updateable(endLoction).ExecuteCommand();
                             }
                             //浼樺厛鏌ユ壘鑴忔《缂撳瓨杞﹂棿
-                            palletModel = stockDetail.Where(w => w.AreaNo == "C54").FirstOrDefault();
+                            palletModel = stockDetail.Where(w => w.AreaNo == "C54").OrderByDescending(w => w.UpdateTime).FirstOrDefault();
                             if (palletModel == null)//鑴忔《缂撳瓨杞﹂棿娌℃湁鑴忔《锛屽啀浠庝笁妤间腑闂寸珯鑴忔《鍖烘煡鎵�
                             {
-                                palletModel = stockDetail.Where(w => w.WareHouseNo == "M16" && w.AreaNo == "C26").FirstOrDefault();
+                                palletModel = stockDetail.Where(w => w.WareHouseNo == "M16" && w.AreaNo == "C26").OrderByDescending(w => w.UpdateTime).FirstOrDefault();
                             }
                             if (palletModel == null)//涓夋ゼ涓棿绔欒剰妗跺尯娌℃湁鑴忔《锛屽啀浠庡洓妤间腑闂寸珯鑴忔《鍖烘煡鎵�
                             {
-                                palletModel = stockDetail.Where(w => w.WareHouseNo == "M01" && w.AreaNo == "C03").FirstOrDefault();
+                                palletModel = stockDetail.Where(w => w.WareHouseNo == "M01" && w.AreaNo == "C03").OrderByDescending(w => w.UpdateTime).FirstOrDefault();
                             }
                             if (palletModel == null)
                             {
@@ -875,7 +940,7 @@
                                 throw new Exception($"璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿palletModel.LocatNo}");
                             }
                             //璧峰妗朵俊鎭�
-                            var startDataDetil = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.Status == "0" && w.PalletStatus == "3");
+                            var startDataDetil = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.Status == "0" && w.PalletStatus == "3" && w.PalletNo == palletModel.PalletNo);
                             if (startDataDetil == null)
                             {
                                 throw new Exception($"娓呮礂鏈烘墍鍙殑妗剁姸鎬侀敊璇紝妗跺彿锛歿palletModel.LocatNo}");
@@ -898,7 +963,7 @@
                             startLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo);
                             //鑾峰彇娓呮礂鏈轰笂绗竴娆″彨鐨勮剰妗�
                             string locate = deviceID == "1002"?"1001":"1003";
-                            palletModel = Db.Queryable<DataStockDetail>().Where(w => w.LocatNo == locate && (w.Status == "2" || w.Status == "0")).OrderBy(o => o.CreateTime).First();
+                            palletModel = Db.Queryable<DataStockDetail>().Where(w => w.LocatNo == locate).OrderBy(o => o.UpdateTime).First();
                             if (palletModel == null)
                             {
                                 throw new Exception("鏈壘鍒板簱瀛樹腑姝e湪娓呮礂鐨勮剰妗�");
@@ -918,20 +983,55 @@
                             {
                                 throw new Exception("娌℃湁绌轰綑鐨勫噣妗跺偍浣�");
                             }
-                            //浼樺厛鍒嗛厤鍥涙ゼ涓棿绔欏噣妗跺尯
-                            endLoction = jtLocate.Where(w => w.WareHouseNo == "M01" && w.AreaNo == "C01")
-                                                .OrderBy(w => w.Row).OrderByDescending(w => w.Column).FirstOrDefault();
-                            if (endLoction == null)//鍥涙ゼ涓棿绔欏噣妗跺尯娌℃湁绌哄偍浣嶏紝鍐嶄粠涓夋ゼ涓棿绔欏噣妗跺尯鏌ユ壘
+                            //棣栧厛鏌ユ壘鏄惁宸叉湁鍚岃鏍煎悓宸烽亾鐨勭┖浣�
+                            var pallnoStorage = Db.Queryable<DataStockDetail>().Where(w => w.Standard == palletModel.Standard && w.PalletStatus == "0" && w.Status == "0").OrderBy(o => o.UpdateTime).ToList();
+                            if (pallnoStorage.Count()>0)
                             {
-                            endLoction = jtLocate.Where(w => w.WareHouseNo == "M16" && w.AreaNo == "C24")
-                                                .OrderBy(w => w.Row).OrderByDescending(w => w.Column).FirstOrDefault();
+                                foreach (var item in pallnoStorage)
+                                {
+                                    //鑾峰彇宸烽亾鍒楋紝鏌ユ壘鍒椾腑绌哄偍浣�
+                                    var pallnoRow = Db.Queryable<SysStorageLocat>().Where(w => w.LocatNo == item.LocatNo).First();
+                                    endLoction = jtLocate.Where(w => w.AreaNo == pallnoRow.AreaNo && w.Row == pallnoRow.Row && w.Status == "0" && w.Flag == "0" && w.Column<pallnoRow.Column).FirstOrDefault();
+                                    if (endLoction == null)
+                                    {
+                                        continue;
+                                    }
+                                    else
+                                    {
+                                        locatno = endLoction.LocatNo;
+                                        break;
+                                    }
+                                }
                             }
-                            if (endLoction == null)//涓夋ゼ涓棿绔欏噣妗跺尯娌℃湁绌哄偍浣嶏紝鍐嶄粠涓夋ゼ娓呮礂闂寸紦瀛樺尯鏌ユ壘             PS锛氬皬杞︾幇鍦ㄨ繕涓嶆敮鎸佹竻娲楁満鐩存帴閫佸線4妤煎噣妗跺尯
+                            if (palletModel.Standard != "400L" && string.IsNullOrEmpty(locatno))
+                            {
+                                //浼樺厛鍒嗛厤鍥涙ゼ涓棿绔欏噣妗跺尯
+                                endLoction = jtLocate.Where(w => w.WareHouseNo == "M01" && w.AreaNo == "C01")
+                                                    .OrderBy(w => w.Row).OrderByDescending(w => w.Column).FirstOrDefault();
+                                if (endLoction != null)
+                                {
+                                    locatno = endLoction.LocatNo;
+                                }
+                            }
+                            if (string.IsNullOrEmpty(locatno))
+                            { 
+                                endLoction = jtLocate.Where(w => w.WareHouseNo == "M16" && w.AreaNo == "C24")
+                                                    .OrderBy(w => w.Row).OrderByDescending(w => w.Column).FirstOrDefault();
+                                if (endLoction != null)
+                                {
+                                    locatno = endLoction.LocatNo;
+                                }
+                            }
+                            if (string.IsNullOrEmpty(locatno))//涓夋ゼ涓棿绔欏噣妗跺尯娌℃湁绌哄偍浣嶏紝鍐嶄粠涓夋ゼ娓呮礂闂寸紦瀛樺尯鏌ユ壘
                             {
                                 endLoction = jtLocate.Where(w => w.WareHouseNo == "M44" && w.AreaNo == "C55")
                                                 .OrderBy(w => w.Row).OrderByDescending(w => w.Column).FirstOrDefault();
+                                if (endLoction != null)
+                                {
+                                    locatno = endLoction.LocatNo;
+                                }
                             }
-                            if (endLoction == null)
+                            if (string.IsNullOrEmpty(locatno))
                             {
                                 throw new Exception("鏈煡璇㈠埌鍚堥�傚偍浣�");
                             }
@@ -952,7 +1052,12 @@
                         throw new Exception("鍙枡鐐逛綅寮傚父");
      
                 }
-                
+                //妫�楠屽綋鍓嶆墭鐩樻槸鍚︽湁浠诲姟鏈畬鎴�
+                var checkTask = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && (w.Status == "1" || w.Status == "0") && w.PalletNo == palletModel.PalletNo);
+                if (checkTask != null)
+                {
+                    throw new Exception("褰撳墠鎵樼洏鏈夋鍦ㄦ墽琛岀殑浠诲姟锛�");
+                }
                 var taskNo = new Common().GetMaxNo("TK");
                 //娣诲姞浠诲姟
                 var logTaskEntry = new LogTask
@@ -1009,6 +1114,25 @@
 
                         endLoction.Status = "2";//鍏ュ簱涓�
                         Db.Updateable(endLoction).ExecuteCommand();
+
+                        //鍑�妗剁敵璇锋垚鍔熷悗鍒ゆ柇褰撳墠娓呮礂鏈轰笂鏄惁杩樻湁妗讹紝娌℃湁妗跺垯娓呯┖娓呮礂鏈哄叆鍙e伐浣嶇姸鎬�
+                        if (deviceStation == "output") 
+                        {
+                            var rlocat = palletModel.LocatNo == "1002" ? "1001" : "1003";
+                            //鍒ゆ柇鏈夋病鏈夋鍦ㄦ墽琛岀殑鍒版竻娲楁満鍏ュ彛鐨勪换鍔�
+                            var tasklist = Db.Queryable<LogTask>().First(w => w.EndLocat == rlocat && (w.Status == "0" && w.Status == "1"));
+                            if (tasklist == null)
+                            {
+                                var stocklist = Db.Queryable<DataStockDetail>().First(w => w.LocatNo == rlocat);
+                                if (stocklist == null)
+                                {
+                                    var rdecive = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == rlocat);
+                                    rdecive.Status = "0";
+                                    Db.Updateable(rdecive).ExecuteCommand();
+                                }
+                            }
+                        }
+
                     }
                     else//澶辫触
                     {
@@ -1075,6 +1199,18 @@
                         {
                             throw new Exception("瑕佺Щ搴撶殑妗舵湁姝e湪鎵ц鐨勪换鍔★紝璇风◢鍚庡啀璇�");
                         }
+                        //鍒ゆ柇瑕佺Щ搴撶殑妗跺渚ф槸鍚︽湁妗�
+                        var locatInfoYi = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletInfoYi.LocatNo);
+                        if (locatInfo == null)
+                        {
+                            throw new Exception("鏈煡璇㈠埌瑕佺Щ搴撶殑妗舵墍鍦ㄧ殑鍌ㄤ綅淇℃伅");
+                        }
+                        var palletInfoYi2 = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LocatNo == locatInfoYi.AisleOne);
+                        if (palletInfoYi2 != null)
+                        {
+                            throw new Exception("鎵�瑕佸彨鏂欑殑妗舵棤娉曡繘琛岀Щ搴擄紝璇疯仈绯荤鐞嗗憳杩涜鎵嬪姩绉绘《");
+                        }
+
                         #region#缁欒绉诲簱鐨勬《鍏堢Щ鍒颁腑杞偍浣�
                         //鎵惧埌涓浆鍌ㄤ綅鎵�鍦ㄥ尯鍩�
                         var transfeArea = Db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.WareHouseNo == WareHouseNo && w.AreaName.Contains("杞繍鍖�"));
@@ -1112,6 +1248,7 @@
                             Msg = $"灏嗘《{palletInfoYi.PalletNo}浠巤palletInfoYi.LocatNo}绉诲埌{transferLocat.LocatNo}", //鍏抽敭淇℃伅
                             LotNo = ""//鎵规鍙�
                         };
+                        Db.Insertable(logTaskEntry).ExecuteCommand();
 
                         //缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅
                         var task = new TaskDetial
@@ -1467,10 +1604,16 @@
                             {
                                 endLocatInfo = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0" && w.Row == rowItem.Row && w.AreaNo == rowItem.AreaNo  && (w.WareHouseNo == "M01"||w.WareHouseNo == "M16"))
                                                .OrderByDescending(o => o.Column).First();
-                                if (endLocatInfo.LocatNo != null)
+                                if (endLocatInfo != null)
                                 {
                                     break;
                                 }
+                            }
+                            if (endLocatInfo == null)
+                            {
+                                endLocatInfo = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0"
+                                            && (w.AreaNo == "C02" || w.AreaNo == "C25"))
+                                           .OrderBy(o => o.Layer).OrderByDescending(o => o.Column).OrderBy(o => o.Row).First();
                             }
                             //娌℃湁鎵惧埌鐩稿悓鐗╂枡鍚岀粍鐨勭┖鍌ㄤ綅
                             if (endLocatInfo.LocatNo == null)
@@ -1483,11 +1626,12 @@
 
                         }
                         else {//鍏朵粬鍖哄煙 
+                            areaNo = houseNo == "M01" ? "C02" : "C25";
                             //鏌ュ埌鍒版弧妗跺尯鍩熺紪鍙�
                             areaNo = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.Type == "1").Select(s => s.AreaNo).First();
                             //鍒嗛厤鍌ㄤ綅
                             //鍏堟煡鍒板悓鐗╂枡鐨勭粍
-                            string sql = $@"select Row,AreaNo from SysStorageLocat where WareHouseNo='{houseNo}' and AreaNo='{areaNo}' and Status = '0' and LocatNo in(
+                            string sql = $@"select Row,AreaNo from SysStorageLocat where WareHouseNo='{houseNo}' and AreaNo='{areaNo}' and Status = '1' and LocatNo in(
 	                                                select LocatNo from DataStockDetail where SkuNo='{skuNo}' and LotNo = '{lotNo}' and Standard='{standard}' and WareHouseNo='{houseNo}' and AreaNo='{areaNo}' 
                                                 ) group by Row,AreaNo";
 
@@ -1498,13 +1642,19 @@
                                                && w.WareHouseNo == houseNo && w.AreaNo == areaNo && w.Row == rowItem.Row && w.AreaNo == rowItem.AreaNo && (w.WareHouseNo == "M01" || w.WareHouseNo == "M16"))
                                                .OrderByDescending(o => o.Column).First();
 
-                                if (endLocatInfo.LocatNo != null)
+                                if (endLocatInfo != null)
                                 {
                                     break;
                                 }
                             }
+                            if (endLocatInfo == null)
+                            {
+                                endLocatInfo = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0"
+                                              && w.WareHouseNo == houseNo && w.AreaNo == areaNo)
+                                              .OrderByDescending(o => o.Column).OrderBy(o => o.Row).First();
+                            }
                             //娌℃湁鎵惧埌鐩稿悓鐗╂枡鍚岀粍鐨勭┖鍌ㄤ綅
-                            if (endLocatInfo.LocatNo == null)
+                            if (endLocatInfo.LocatNo == null )
                             {
                             
                                 endLocatInfo = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0"
@@ -1544,5 +1694,138 @@
                 throw new Exception(ex.Message);
             }
         }
+
+        /// <summary>
+        /// 鐐瑰鐐逛换鍔′笅鍙�
+        /// </summary>
+        /// <param name="beginLocate">璧峰浣�</param>
+        /// <param name="endLocate">缁堢偣浣�</param>
+        /// <exception cref="Exception"></exception>
+        public void PointToPointRequest(string id,string beginPoint, string endPoint, string url, string bindUrl)
+        {
+            try
+            {
+                //鏉冮檺鏍¢獙
+                var user = Db.Queryable<SysUserInfor>().First(m => m.IsDel == "0" && m.UserName == id);
+                if (user == null)
+                {
+                    throw new Exception("娌℃湁鏌ヨ鍒扮敤鎴蜂俊鎭�");
+                }
+                if (user.RoleNo != "01")
+                {
+                    throw new Exception("褰撳墠鐢ㄦ埛娌℃湁鏉冮檺浣跨敤姝ゅ姛鑳�");
+                }
+                //璧峰鍌ㄤ綅淇℃伅
+                var startLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == beginPoint);
+                if (startLoction == null)
+                {
+                    throw new Exception("鏈壘鍒拌緭鍏ョ殑璧峰鍌ㄤ綅");
+                }
+                if (startLoction.Status != "1") 
+                { 
+                      throw new Exception("璧峰鍌ㄤ綅锛�"+beginPoint+"鐨勫偍浣嶇姸鎬侀敊璇紝鍌ㄤ綅鐘舵�佸簲涓猴細鈥樻湁鐗╁搧鈥�");
+                }
+                //鐩爣鍌ㄤ綅淇℃伅
+                var endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == endPoint);
+                if (endLoction == null)
+                {
+                    throw new Exception("鏈壘鍒拌緭鍏ョ殑鐩爣鍌ㄤ綅");
+                }
+                if (endLoction.Status != "0")
+                {
+                    throw new Exception("鐩爣鍌ㄤ綅锛�" + endPoint  + "鐨勫偍浣嶇姸鎬侀敊璇紝鍌ㄤ綅鐘舵�佸簲涓猴細'绌哄偍浣�'");
+                }
+                //鎵樼洏淇℃伅
+                var palletModel = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LocatNo == beginPoint);
+                if (palletModel == null)
+                {
+                    throw new Exception("鏈壘鍒板偍浣嶅搴旀墭鐩樹俊鎭紒");
+                }
+                //妫�楠屽綋鍓嶆墭鐩樻槸鍚︽湁浠诲姟鏈畬鎴�
+                var checkTask = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && (w.Status == "1" || w.Status == "0") && w.PalletNo == palletModel.PalletNo);
+                if (checkTask != null)
+                {
+                    throw new Exception("褰撳墠鎵樼洏鏈夋鍦ㄦ墽琛岀殑浠诲姟锛�");
+                }
+
+                Db.BeginTran();
+                var taskNo = new Common().GetMaxNo("TK");
+                //娣诲姞浠诲姟
+                var logTaskEntry = new LogTask
+                {
+                    TaskNo = taskNo,
+                    Sender = "WMS",
+                    Receiver = "RCS",
+                    IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+                    StartLocat = beginPoint,//璧峰浣嶇疆
+                    EndLocat = endPoint,//鐩爣浣嶇疆
+                    PalletNo = palletModel.PalletNo,//鎵樼洏鐮�
+                    IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+                    IsCancel = 1,//鏄惁鍙彇娑�
+                    IsFinish = 1,//鏄惁鍙畬鎴�
+                    Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
+                    Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+                    OrderType = "3",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
+
+                    CreateTime = DateTime.Now
+                };
+                Db.Insertable(logTaskEntry).ExecuteCommand();
+
+                //缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅
+                var task = new TaskDetial
+                {
+                    Taskno = taskNo,//浠诲姟鍙�
+                    Startport = beginPoint,//璧峰浣嶇疆
+                    Endport = endPoint,//鐩爣浣嶇疆
+                    Pallno = palletModel.PalletNo,//妗跺彿
+                    Crtype = "1",//鍙《
+                };
+
+                string agvMsg = string.Empty;
+                //缁欎笅杞︿笅鍙戜换鍔�
+                logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂�
+                //涓嬪彂杞藉叿涓庤揣浣嶇粦瀹�
+                var bind = RcsHelper.BindPalletAndSite(palletModel.PalletNo, beginPoint, bindUrl, out string agvBindMsg);
+                if (bind)
+                {
+                    var agvResult = RcsHelper.CreateTaskForAgv(task, url, out agvMsg);
+                    if (agvResult)//鎴愬姛
+                    {
+                        //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬�
+                        logTaskEntry.IsSuccess = 1;
+                        logTaskEntry.IsSend = 0;
+                        //logTaskEntry.IsCancel = 0;
+                        logTaskEntry.BackDate = DateTime.Now;
+                        logTaskEntry.Status = "1";//姝e湪鎵ц
+                        Db.Updateable(logTaskEntry).ExecuteCommand();
+
+                        startLoction.Status = "3";//鍑哄簱涓�
+                        Db.Updateable(startLoction).ExecuteCommand();
+
+                        endLoction.Status = "2";//鍏ュ簱涓�
+                        Db.Updateable(endLoction).ExecuteCommand();
+                    }
+                    else//澶辫触
+                    {
+                        throw new Exception("妗跺彿锛�" + task.Pallno + ",璋冨害灏忚溅澶辫触");
+                    }
+                }
+                else
+                {
+                    throw new Exception("妗跺彿锛�" + task.Pallno + ",缁戝畾璐т綅澶辫触");
+                }
+
+                //鎻愪氦浜嬪姟
+                Db.CommitTran();
+            }
+            catch (Exception e)
+            {
+                //鍥炴粴浜嬪姟
+                Db.RollbackTran();
+                throw new Exception(e.Message);
+            }
+        }
+
     }
 }
diff --git a/Wms/WMS.BLL/BllTransServer/RcsServer.cs b/Wms/WMS.BLL/BllTransServer/RcsServer.cs
index 26b58f2..3744350 100644
--- a/Wms/WMS.BLL/BllTransServer/RcsServer.cs
+++ b/Wms/WMS.BLL/BllTransServer/RcsServer.cs
@@ -1052,7 +1052,7 @@
         /// <param name="taskNo"></param>
         /// <param name="userId"></param>
         /// <exception cref="Exception"></exception>
-        public void CancelTask(string taskNo, int userId)
+        public void CancelTask(string taskNo, string url, int userId)
         {
             try
             {
@@ -1063,6 +1063,20 @@
                 if (task == null)
                 {
                     throw new Exception("鏈煡璇㈠埌浠诲姟淇℃伅");
+                }
+                //鏍¢獙璧风偣鏄惁宸茬粡鐢熸垚浠诲姟
+                var taskHave = Db.Queryable<LogTask>().First(m => m.EndLocat == task.StartLocat && m.IsDel == "0" && (m.Status == "0"|| m.Status == "1"));
+                if (taskHave == null)
+                {
+                    var locateHave = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat);
+                    if (locateHave.Status != "3")
+                    {
+                        throw new Exception("璧峰鍌ㄤ綅宸叉湁鍏朵粬鏂欐枟瀛樺湪锛屾棤娉曞彇娑堝綋鍓嶄换鍔★紒");
+                    }
+                }
+                else
+                {
+                    throw new Exception("璧峰鍌ㄤ綅宸叉湁浠诲姟鐢熸垚锛屾棤娉曞彇娑堝綋鍓嶄换鍔★紒");
                 }
                 //if (task.Status != "0")
                 //{
@@ -1103,10 +1117,19 @@
                 }
                 stockDetail.Status = "0";//寰呭垎閰�
                 Db.Updateable(stockDetail).ExecuteCommand();
-                
-                //娣诲姞鎿嶄綔鏃ュ織璁板綍
-                var k = new OperationCrServer().AddLogOperationCr("搴撳唴浣滀笟", "搴撳唴鏃ュ織", taskNo, "鍙栨秷", $"鐐瑰嚮鍙栨秷鎸夐挳銆佸彇娑堜簡浠诲姟鍙蜂负锛歿taskNo}鐨勪换鍔�", userId);
-                Db.CommitTran();
+
+                string agvMsg = "";
+                bool t = CancleTaskForAgv(taskNo, url, out agvMsg);
+                if (t)
+                {
+                    //娣诲姞鎿嶄綔鏃ュ織璁板綍
+                    var k = new OperationCrServer().AddLogOperationCr("搴撳唴浣滀笟", "搴撳唴鏃ュ織", taskNo, "鍙栨秷", $"鐐瑰嚮鍙栨秷鎸夐挳銆佸彇娑堜簡浠诲姟鍙蜂负锛歿taskNo}鐨勪换鍔�", userId);
+                    Db.CommitTran();
+                }
+                else
+                {
+                    throw new Exception("涓嬪彂鍙栨秷灏忚溅浠诲姟澶辫触");
+                }
             }
             catch (Exception e)
             {
@@ -1327,6 +1350,43 @@
         }
 
         /// <summary>
+        /// 涓嬪彂鍙栨秷浠诲姟缁橝GV
+        /// </summary>
+        /// <param name="req"></param>
+        /// <returns></returns>
+        public bool CancleTaskForAgv(string taskno, string url, out string agvMsg, string priority = null)
+        {
+            bool result = false;
+            #region 鍛煎彨灏忚溅浠g爜
+            AgvCancelTask cancelTask = new AgvCancelTask();
+            cancelTask.robotTaskCode = taskno;
+            cancelTask.cancelType = "DROP";
+
+            // 姝e紡杩愯绋嬪簭鏀惧紑
+            //AGV浠诲姟涓嬪彂鏃跺鍔爃earder:X-LR-REQUEST-ID,鍊间负闅忔満鏁�
+            long ran = DateTime.Now.Ticks;
+            Dictionary<string, string> key = new Dictionary<string, string>();
+            key.Add("X-LR-REQUEST-ID", ran.ToString());
+            var jsonData = JsonConvert.SerializeObject(cancelTask);
+            string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV", key);
+            //瑙f瀽杩斿洖鏁版嵁 
+            var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
+            if (agvModel.Code == "SUCCESS")
+            {
+                result = true;//缁欎笅杞︿笅鍙戜换鍔℃垚鍔�
+                agvMsg = "";
+            }
+            else
+            {
+                var logStr = $@".\log\AGV\AGV鍙栨秷浠诲姟" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+                LogFile.SaveLogToFile($"AGV鍙栨秷浠诲姟寮傚父锛�( {agvModel.Message} ),", logStr);
+                agvMsg = agvModel.Message;
+            }
+            return result;
+            #endregion
+        }
+
+        /// <summary>
         /// 鍒嗛厤妗跺悗鍒ゆ柇璇ユ《澶栦晶鍌ㄤ綅鏄惁闇�瑕佺Щ搴�
         /// </summary>
         /// <param name="palletNo"></param>
@@ -1484,5 +1544,60 @@
                 throw new Exception(e.Message);
             }
         }
+
+        public bool DelStockWms(int stockId,string url,int userId,out string errMsg)
+        {
+            try
+            {
+                errMsg = "";
+                //鑾峰彇褰撳墠搴撳瓨淇℃伅
+                var stock = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.Id == stockId);
+                if (stock == null)
+                {
+                    throw new Exception("鏈湪搴撳瓨涓壘鍒板綋鍓嶆枡妗�");
+                }
+                //鑾峰彇褰撳墠鏂欐枟浠诲姟淇℃伅
+                var taskInfo = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.PalletNo == stock.PalletNo && (w.Status == "0" || w.Status == "1"));
+                if (taskInfo != null)
+                {
+                    throw new Exception("褰撳墠鏂欐《鏈夌瓑寰呮墽琛屾垨姝e湪鎵ц鐨勪换鍔�");
+                }
+                //鑾峰彇褰撳墠鏂欐枟鍌ㄤ綅鐘舵��
+                var locatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == stock.LocatNo && w.Status == "1");
+                if (locatInfo == null)
+                {
+                    throw new Exception("褰撳墠鏂欐《鍌ㄤ綅鐘舵�侀敊璇�");
+                }
+                var pallnoInfo = Db.Queryable<SysPallets>().First(w => w.IsDel == "0" && w.PalletNo == stock.PalletNo);
+                if (pallnoInfo == null)
+                {
+                    throw new Exception("鏈壘鍒板綋鍓嶆枡妗舵潯鐮�");
+                }
+                Db.BeginTran();
+                //涓嬪彂缁橝GV瑙g粦淇℃伅
+                bool t = RcsHelper.UnBindPalletAndSite(stock.PalletNo, stock.LocatNo, url,out errMsg);
+                if (t)
+                {
+                    //鍒犻櫎搴撳瓨
+                    Db.Deleteable(stock).ExecuteCommand();
+                    Db.Deleteable(pallnoInfo).ExecuteCommand();
+                    locatInfo.Status = "0";
+                    Db.Updateable(locatInfo).ExecuteCommand();
+
+                    
+                    //娣诲姞鎿嶄綔鏃ュ織璁板綍
+                    var k = new OperationCrServer().AddLogOperationCr("缁熻鎶ヨ〃", "妗舵槑缁�", "", "鍒犻櫎", $"鐐瑰嚮鍒犻櫎鎸夐挳銆佸垹闄や簡妗跺彿锛歿stock.PalletNo}", userId);
+                }
+                Db.CommitTran();
+                return t;
+            }
+            catch (Exception e)
+            {
+
+                Db.RollbackTran();
+                throw new Exception(e.Message);
+            }
+            
+        }
     }
 }
diff --git a/Wms/WMS.BLL/DataServer/StockDetailServer.cs b/Wms/WMS.BLL/DataServer/StockDetailServer.cs
index f2f2563..09e77ee 100644
--- a/Wms/WMS.BLL/DataServer/StockDetailServer.cs
+++ b/Wms/WMS.BLL/DataServer/StockDetailServer.cs
@@ -38,7 +38,7 @@
         /// <param name="bitBoxMark">闆剁鏍囪</param>
         /// <param name="inspectStatus">璐ㄩ噺鐘舵��</param>
         /// <returns></returns>
-        public List<StockDetailDto> GetBindList(string wareHouseName, string areaName, string locatNo, string palletNo, string lotNo)
+        public List<StockDetailDto> GetBindList(string wareHouseName, string areaName, string locatNo, string palletNo, string lotNo,string palletStatus)
         {
             string str = $@"select 
                                 detail.*,
@@ -76,9 +76,24 @@
             {
                 str += $" and detail.LotNo like  '%{lotNo}%'";
             }
+            if (!string.IsNullOrEmpty(palletStatus))
+            {
+                str += $" and detail.PalletStatus like  '%{palletStatus}%'";
+            }
             //鎺掑簭
             str += " order by PalletNo";
             List<StockDetailDto> boxInforList = Db.Ado.SqlQuery<StockDetailDto>(str).ToList();
+            foreach (var item in boxInforList)
+            {
+                if (item.LocatNo == "1004" || item.LocatNo == "1002")
+                {
+                    item.PalletStatus = "0";
+                }
+                if (item.LocatNo == "1001" || item.LocatNo == "1003")
+                {
+                    item.PalletStatus = "3";
+                }
+            }
 
             return boxInforList;
         }
diff --git a/Wms/WMS.BLL/SysServer/PalletsServer.cs b/Wms/WMS.BLL/SysServer/PalletsServer.cs
index f4e202a..223b7ab 100644
--- a/Wms/WMS.BLL/SysServer/PalletsServer.cs
+++ b/Wms/WMS.BLL/SysServer/PalletsServer.cs
@@ -123,7 +123,7 @@
         /// <param name="locatNo"></param>
         /// <param name="userId"></param>
         /// <exception cref="Exception"></exception>
-        public void AddPallets(string palletNo,string locatNo, string deviceCode, string url, int userId)
+        public void AddPallets(string palletNo,string locatNo, string status, string url, int userId)
         {
             var db = DataContext.Db;
             try
@@ -146,6 +146,18 @@
                 {
                     throw new Exception("鍌ㄤ綅鍦板潃涓嶅瓨鍦�");
                 }
+                if (locatModel.Flag == "1") 
+                {
+                    throw new Exception("璇ュ偍浣嶅凡灞忚斀");
+                }
+                var nlocat = db.Queryable<SysStorageLocat>().First(w => w.AisleOne == locatModel.LocatNo && w.IsDel == "0");
+                if (nlocat != null)
+                {
+                    if (nlocat.Status == "0")
+                    {
+                        throw new Exception("璇蜂粠鍐呬晶搴撲綅寮�濮嬬粦瀹�");
+                    }
+                }
                 if (locatModel.Status != "0")
                 {
                     throw new Exception("璇ュ偍浣嶅湴鍧�闈炵┖闂茬姸鎬�");
@@ -155,14 +167,28 @@
                 {
                     throw new Exception("鍌ㄤ綅鍦板潃鎵�灞炲尯鍩熶笉瀛樺湪");
                 }
-                if (!areaModel.AreaName.Contains("鍑�妗�"))
+                switch (status)
                 {
-                    throw new Exception("鏂版坊鍔犵殑妗跺彧鑳界粦瀹氬噣妗跺尯");
+                    case "0":
+                        if (!areaModel.AreaName.Contains("鍑�妗�"))
+                        {
+                            throw new Exception("璇烽�夋嫨鍑�妗跺尯鍩熻繘琛岀粦瀹�");
+                        }
+                        break;
+                    case "3":
+                        if (!areaModel.AreaName.Contains("鑴忔《"))
+                        {
+                            throw new Exception("璇烽�夋嫨鑴忔《鍖哄煙杩涜缁戝畾");
+                        }
+                        break;
+                    default:
+                        throw new Exception("璇烽�夋嫨妗剁被鍨嬶紒");
+                        break;
                 }
-               
-                if (!string.IsNullOrEmpty(deviceCode))
+                string deviceCode = "";
+                if (!string.IsNullOrEmpty(palletNo))
                 {
-                    switch (deviceCode)
+                    switch (palletNo.Substring(2,3))
                     {
                         case "400":
                             deviceCode = "400L";
@@ -170,11 +196,11 @@
                         case "800":
                             deviceCode = "800L";
                             break;
-                        case "1000":
+                        case "100":
                             deviceCode = "1000L";
                             break;
                         default:
-                            throw new Exception("涓嶈兘褰曞叆400锛�800锛�1000浠ュ鐨勫��");
+                            throw new Exception("妗跺彿褰曞叆閿欒锛岃鏍稿疄锛�");
                     }
 
                 }
@@ -189,6 +215,7 @@
                 palletModel.CreateUser = userId;
                 //娣诲姞妗�
                 db.Insertable(palletModel).ExecuteCommand();
+
 
                 var comTime = DateTime.Now;
                 var model = new DataStockDetail()
@@ -221,7 +248,7 @@
                     SkuName = "",
                     LotNo = "",
 
-                    PalletStatus = "0",//鍑�妗�
+                    PalletStatus = status,
 
                     Standard = deviceCode,  //瑙勬牸
 
@@ -240,17 +267,17 @@
 
                 //涓嬪彂AGV缁戝畾杞藉叿鎺ュ彛
                 //璋冪敤AGV鎺ュ彛涓嬪彂浠诲姟
-                //string agvMsg = string.Empty;
-                ////缁欎笅杞︿笅鍙戜换鍔�
-                //var agvResult = RcsHelper.BindPalletAndSite(palletNo, locatNo,url, out agvMsg);
-                //if (agvResult)//鎴愬姛
-                //{
-                //     //澧炲姞鏃ュ織
-                //}
-                //else//澶辫触
-                //{
-                //    throw new Exception("灏忚溅杞藉叿鍜屽簱浣嶅叧绯荤粦瀹氬け璐ワ紝鍘熷洜锛�"+agvMsg);
-                //}
+                string agvMsg = string.Empty;
+                //缁欎笅杞︿笅鍙戜换鍔�
+                var agvResult = RcsHelper.BindPalletAndSite(palletNo, locatNo, url, out agvMsg);
+                if (agvResult)//鎴愬姛
+                {
+                    //澧炲姞鏃ュ織
+                }
+                else//澶辫触
+                {
+                    throw new Exception("灏忚溅杞藉叿鍜屽簱浣嶅叧绯荤粦瀹氬け璐ワ紝鍘熷洜锛�" + agvMsg);
+                }
 
                 //鎻愪氦浜嬪姟
                 db.CommitTran();
diff --git a/Wms/WMS.IBLL/IBllQualityServer/IQualityInspectServer.cs b/Wms/WMS.IBLL/IBllQualityServer/IQualityInspectServer.cs
index 98896f6..7636061 100644
--- a/Wms/WMS.IBLL/IBllQualityServer/IQualityInspectServer.cs
+++ b/Wms/WMS.IBLL/IBllQualityServer/IQualityInspectServer.cs
@@ -31,6 +31,12 @@
         /// </summary>
         /// <returns></returns>
         public List<DataStockDetail> GetLotNoList();
+
+        /// <summary>
+        /// 鑾峰彇搴撳瓨鎵规鍙烽泦鍚�
+        /// </summary>
+        /// <returns></returns>
+        public List<DataStockDetail> GetLotNoList(string skuNo);
         #endregion
     }
 }
diff --git a/Wms/WMS.IBLL/IBllTransServer/IHopperTransportServer.cs b/Wms/WMS.IBLL/IBllTransServer/IHopperTransportServer.cs
index 1b5c77e..29df1a9 100644
--- a/Wms/WMS.IBLL/IBllTransServer/IHopperTransportServer.cs
+++ b/Wms/WMS.IBLL/IBllTransServer/IHopperTransportServer.cs
@@ -46,5 +46,14 @@
         /// <param name="status"></param>
         /// <exception cref="Exception"></exception>
         void RCSCleanRequest(string deviceID, string deviceStation, string status, string url,string bindUrl);
+
+        /// <summary>
+        /// 鐐瑰鐐逛换鍔′笅鍙�
+        /// </summary>
+        ///  <param name="id">鐢ㄦ埛ID</param>
+        /// <param name="beginLocate">璧峰浣�</param>
+        /// <param name="endLocate">缁堢偣浣�</param>
+        /// <exception cref="Exception"></exception>
+        void PointToPointRequest(string id,string beginLocate, string endLocate, string url, string bindUrl);
     }
 }
diff --git a/Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs b/Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs
index 1557420..df50d97 100644
--- a/Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs
+++ b/Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs
@@ -49,7 +49,7 @@
         /// <param name="taskNo"></param>
         /// <param name="userId"></param>
         /// <exception cref="Exception"></exception>
-        void CancelTask(string taskNo, int userId);
+        void CancelTask(string taskNo,string url, int userId);
 
         /// <summary>
         /// 鎵嬪姩涓嬪彂浠诲姟
@@ -58,5 +58,7 @@
         /// <param name="userId"></param>
         /// <exception cref="Exception"></exception>
         void DownTask(string taskNo, int userId, string url,string bindurl);
+
+        public bool DelStockWms(int stockid, string url, int userId , out string errMsg);
     }
 }
diff --git a/Wms/WMS.IBLL/IDataServer/IStockDetailServer.cs b/Wms/WMS.IBLL/IDataServer/IStockDetailServer.cs
index f708f20..261560b 100644
--- a/Wms/WMS.IBLL/IDataServer/IStockDetailServer.cs
+++ b/Wms/WMS.IBLL/IDataServer/IStockDetailServer.cs
@@ -23,7 +23,7 @@
         /// <param name="bitBoxMark">闆剁鏍囪</param>
         /// <param name="inspectStatus">璐ㄩ噺鐘舵��</param>
         /// <returns></returns>
-        List<StockDetailDto> GetBindList(string wareHouseName, string areaName, string locatNo, string palletNo, string lotNo);
+        List<StockDetailDto> GetBindList(string wareHouseName, string areaName, string locatNo, string palletNo, string lotNo ,string palletStatus);
 
         /// <summary>
         /// 瀵煎嚭鎵樼洏鏄庣粏
diff --git a/Wms/Wms/Controllers/BllCheckController.cs b/Wms/Wms/Controllers/BllCheckController.cs
index 05bce06..438ec59 100644
--- a/Wms/Wms/Controllers/BllCheckController.cs
+++ b/Wms/Wms/Controllers/BllCheckController.cs
@@ -497,7 +497,7 @@
                 {
                     return Ok(new { code = 1, msg = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" });
                 }
-                _rcsserver.CancelTask(model.taskNo, int.Parse(userId));
+                _rcsserver.CancelTask(model.taskNo, _config.AgvHost + _config.CancelTask, int.Parse(userId));
 
                 return Ok(new { code = 0, msg = "鎴愬姛鍙栨秷浠诲姟", data = "" });
             }
diff --git a/Wms/Wms/Controllers/BllQualityController.cs b/Wms/Wms/Controllers/BllQualityController.cs
index 258aeec..798c9d1 100644
--- a/Wms/Wms/Controllers/BllQualityController.cs
+++ b/Wms/Wms/Controllers/BllQualityController.cs
@@ -313,5 +313,24 @@
                 return Ok(new { code = 1, msg = e.Message });
             }
         }
+
+        /// <summary>
+        /// 鑾峰彇搴撳瓨鎵规鍙烽泦鍚�
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult GetLotNoList(string SkuNo)
+        {
+            try
+            {
+                var bolls = _qualityServer.GetLotNoList(SkuNo);
+
+                return Ok(new { code = 0, msg = "鎵规鍙烽泦鍚�", data = bolls });
+            }
+            catch (Exception e)
+            {
+                return Ok(new { code = 1, msg = e.Message });
+            }
+        }
     }
 }
diff --git a/Wms/Wms/Controllers/DownApiController.cs b/Wms/Wms/Controllers/DownApiController.cs
index 93ec264..c21314f 100644
--- a/Wms/Wms/Controllers/DownApiController.cs
+++ b/Wms/Wms/Controllers/DownApiController.cs
@@ -23,6 +23,7 @@
 using Model.ModelVm.BllCheckVm;
 using Model.ModelVm.SysVm;
 using System.Security.Policy;
+using Model.ModelVm.DataVm;
 
 namespace Wms.Controllers
 {
@@ -956,7 +957,7 @@
                 LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟缁撴潫-璇锋眰鎶ユ枃锛�( {jsonData} ),", logStr);
 
                 //鍏蜂綋澶勭悊鏂规硶
-                _hopper.RCSFinishTask(model.robotTaskCode, extraValue.values.slotCode, "1", "AGV");
+                _hopper.RCSFinishTask(model.robotTaskCode, extraValue.values.slotName, "1", "AGV");
 
                 Data data = new Data();
                 data.robotTaskCode = model.robotTaskCode;
@@ -991,18 +992,22 @@
             AgvResultModel2 resultModel = null;//杩斿洖淇℃伅
             try
             {
+                var extraValue = new ExtraModel();
+                extraValue = model.extra;
+                if (!(extraValue.values.method == "cancel"))
+                {
+                    throw new Exception("灏忚溅璋冪敤鏂规硶閿欒");
+                }
                 var jsonData = JsonConvert.SerializeObject(model);
-                LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟鍗曞彇娑�-璇锋眰鎶ユ枃锛�( {jsonData} ),", logStr);
-
+                LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟鍙栨秷-璇锋眰鎶ユ枃锛�( {jsonData} ),", logStr);
                 //鍏蜂綋澶勭悊鏂规硶
+                //_rcsserver.CancelTask(model.robotTaskCode, _config.AgvHost + _config.CancelTask, 0);
 
-
-
-                resultModel.code = "0";
-                resultModel.message = "鎴愬姛";
-                resultModel.da.robotTaskCode = model.robotTaskCode;
+                Data data = new Data();
+                //data.robotTaskCode = model.robotTaskCode;
+                resultModel = new AgvResultModel2 { code = "0", message = "鎴愬姛", da = data };
                 var jsonData2 = JsonConvert.SerializeObject(resultModel);
-                LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟鍗曞彇娑�-杩斿洖鎶ユ枃锛�( {jsonData2} ),", logStr);
+                LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟鍙栨秷-杩斿洖鎶ユ枃锛�( {jsonData2} ),", logStr);
                 return Ok(resultModel);
             }
             catch (Exception ex)
@@ -1040,6 +1045,9 @@
                         break;
                     case "end":
                         var b = end(model);
+                        break;
+                    case "cancel":
+                        var c = cancel(model);
                         break;
                     default:
                         break;
@@ -1180,7 +1188,7 @@
                 {
                     return Ok(new { code = 1, msg = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" });
                 }
-                _rcsserver.CancelTask(model.taskNo, int.Parse(userId));
+                _rcsserver.CancelTask(model.taskNo, _config.AgvHost + _config.CancelTask, int.Parse(userId));
 
                 return Ok(new { code = 0, msg = "鎴愬姛鍙栨秷浠诲姟", data = "" });
             }
@@ -1419,7 +1427,76 @@
             }
         }
 
-       
+        /// <summary>
+        /// 鐐瑰鐐逛换鍔�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult PointToPointRequest(PointTask model)
+        {
+            var logStr = $@".\log\AGV\鐐瑰鐐逛换鍔′笅鍙�" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+            AgvResultModel resultModel = null;//杩斿洖淇℃伅
+            try
+            {
+                var jsonData = JsonConvert.SerializeObject(model);
+                LogFile.SaveLogToFile($"浠诲姟涓嬪彂锛�( {jsonData} ),", logStr);
+                //鍏蜂綋澶勭悊鏂规硶
+                _hopper.PointToPointRequest(model.ID, model.BeginPoint, model.EndPoint, _config.AgvHost + _config.GenAgvSchedulingTask, _config.AgvHost + _config.AGVBindPallets);
+
+                resultModel = new AgvResultModel { code = "0", message = "璇锋眰鎴愬姛!" };
+               
+                return Ok(resultModel);
+            }
+            catch (Exception e)
+            {
+                LogFile.SaveLogToFile($"涓嬪彂鐐瑰鐐逛换鍔″紓甯革細( {e.Message} ),", logStr);
+                resultModel = new AgvResultModel { code = "1", message = e.Message, data = "", reqCode = "" };
+                return Ok(resultModel);
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎褰撳墠搴撳瓨淇℃伅
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult DelStockWms(DelStockInfo model)
+        {
+            try
+            {
+                //鑾峰彇褰撳墠鐧诲綍鐨勭敤鎴稩D
+                var claimsIdentity = this.User.Identity as ClaimsIdentity;
+                if (claimsIdentity == null)
+                {
+                    return Ok(new { code = 1, msg = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" });
+                }
+                var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
+                if (string.IsNullOrWhiteSpace(userId))
+                {
+                    return Ok(new { code = 1, msg = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" });
+                }
+                string errMsg = "";
+                bool t = _rcsserver.DelStockWms(model.StockId, _config.AgvHost + _config.AGVUnBindPallets, int.Parse(userId),out errMsg);
+                if (t)
+                {
+                    return Ok(new { code = 0, msg = "鍒犻櫎鎴愬姛", data = "" });
+                }
+                else
+                {
+                    return Ok(new { code = 1, msg = "鍒犻櫎澶辫触", data = errMsg });
+                }
+
+
+                }
+            catch (Exception e)
+            {
+                return Ok(new { code = 1, msg = e.Message });
+            }
+        }
+
+
         #endregion
 
     }
diff --git a/Wms/Wms/Controllers/StatisticalController.cs b/Wms/Wms/Controllers/StatisticalController.cs
index 484963d..a21c84a 100644
--- a/Wms/Wms/Controllers/StatisticalController.cs
+++ b/Wms/Wms/Controllers/StatisticalController.cs
@@ -98,11 +98,11 @@
         /// <param name="inspectStatus">璐ㄩ噺鐘舵��</param>
         /// <returns></returns>
         [HttpGet]
-        public IActionResult GetBindList(string wareHouseName,string areaName,string locatNo,string palletNo, string lotNo)
+        public IActionResult GetBindList(string wareHouseName,string areaName,string locatNo,string palletNo, string lotNo,string palletStatus)
         {
             try
             {
-                List<StockDetailDto> boxInfoList = _stockDetail.GetBindList(wareHouseName,areaName,locatNo,palletNo, lotNo);
+                List<StockDetailDto> boxInfoList = _stockDetail.GetBindList(wareHouseName,areaName,locatNo,palletNo, lotNo, palletStatus);
                 return Ok(new { data = boxInfoList, code = 0, msg = "鑾峰彇鎵樼洏鏄庣粏鎴愬姛" });
             }
             catch (Exception e)
diff --git a/Wms/Wms/Tools/ApiUrlConfig.cs b/Wms/Wms/Tools/ApiUrlConfig.cs
index dcb129a..4d43a8f 100644
--- a/Wms/Wms/Tools/ApiUrlConfig.cs
+++ b/Wms/Wms/Tools/ApiUrlConfig.cs
@@ -97,6 +97,11 @@
         /// </summary>
         public string AGVUnBindPallets { get; set; }
 
+        /// <summary>
+        /// 鍙栨秷浠诲姟鎺ュ彛
+        /// </summary>
+        public string CancelTask { get; set; }
+
         #endregion
 
         #endregion
diff --git a/Wms/Wms/appsettings.json b/Wms/Wms/appsettings.json
index 3c0d2fc..0fbd9c0 100644
--- a/Wms/Wms/appsettings.json
+++ b/Wms/Wms/appsettings.json
@@ -11,13 +11,10 @@
     //"ConnectionString": "Server=47.95.120.93;Database=WMS_JC09;User ID=sa;password=boxline!@#; Integrated Security=True;",
     //"ConnectionString": "Server=47.95.120.53;Database=WMS_JC09;User ID=sa;Password=boxline!@#;Integrated Security=False;",
     //"ConnectionString": "Server=192.168.62.106;Database=WMS_JC24;User ID=sa;Password=sql2019;Integrated Security=False;",
-    "ConnectionString": "Server=192.168.10.201\\WMSSQLSERVER;Database=WMS_JC37;User ID=sa;Password=sa@123456;Integrated Security=False;"
-    //"ConnectionString": "Server=.;Database=WMS_JC37;User ID=sa;Password=sa@123456;Integrated Security=False;"
-    //"ConnectionString": "Data Source=192.168.10.201\\WMSSQLSERVER;Database=WMS_JC37;User ID=sa;Password=sa@123456;Integrated Security=False;"
+    //"ConnectionString": "Server=192.168.10.201\\WMSSQLSERVER;Database=WMS_JC37;User ID=sa;Password=sa@123456;Integrated Security=False;"
+    "ConnectionString": "Server=DESKTOP-H7CB0Q0\\MSSQLSERVER2019;Database=WMS_JC37;User ID=sa;Password=sql2019;Integrated Security=False;"
+    //"ConnectionString": "Server=192.168.62.200;Database=WMS_JC37;User ID=sa;Password=sql2019;Integrated Security=False;"
     //"ConnectionString": "Server=.\\MSSQLSERVER2019;Database=WMS_JC23-2;User Id=sa;Password=admin2023@;" // SqlServer 搴撹繛鎺ュ瓧绗︿覆
-    //"ConnectionString": "Server=172.16.105.10;Database=WMS_JC23-2;User ID=sa;Password=sql2019;Integrated Security=False;"
-    //"ConnectionString": "Server=172.16.105.2;Database=WMS_JC23-2;User ID=sa;Password=boxline@2024;Integrated Security=False;"
-    //"ConnectionString": "Server=.\\SQLSERVER;Database=WMS_JC23-2;User ID=sa;Password=admin2023@;Integrated Security=False;"
   },
   "JWTConfig": {
     "Issuer": "WYY", //Token锟斤拷锟斤拷锟斤拷
@@ -47,6 +44,7 @@
     "ContinueTask": "/rcs/rtas/api/robot/controller/task/extend/continue", //缁х画鎵ц浠诲姟鎺ュ彛
     "GenPreScheduleTask": "/rcms/services/rest/hikRpcService/genPreScheduleTask", // 棰勮皟搴﹀澶栨帴鍙�
     "AGVBindPallets": "/rcs/rtas/api/robot/controller/carrier/bind", //杞藉叿涓庡簱浣嶇粦瀹氭帴鍙�
-    "AGVUnBindPallets": "/rcs/rtas/api/robot/controller/carrier/bind" //杞藉叿涓庡簱浣嶈В缁戞帴鍙�
+    "AGVUnBindPallets": "/rcs/rtas/api/robot/controller/carrier/bind", //杞藉叿涓庡簱浣嶈В缁戞帴鍙�
+    "CancelTask": "/rcs/rtas/api/robot/controller/task/cancel"//鍙栨秷浠诲姟鎺ュ彛
   }
 }

--
Gitblit v1.8.0