From bb0b78e7ef5317a38adc18a648e41aa8cc4711bc Mon Sep 17 00:00:00 2001
From: zhaowc <526854230@qq.com>
Date: 星期四, 24 七月 2025 15:54:22 +0800
Subject: [PATCH] 程序修改

---
 HTML/js/public.js                                   |    6 
 Wms/WMS.BLL/BllTransServer/RcsServer.cs             |   92 +++---
 Wms/WMS.Entity/DataEntity/DataStockDetail.cs        |    2 
 Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs |  362 +++++++++++++++++++--------
 HTML/views/HouseWithinSetting/HopperTransport.html  |  123 ++++++++
 Wms/WMS.DAL/Common.cs                               |    6 
 HTML/.vscode/settings.json                          |    2 
 HTML/views/StatisticalReport/BoxInfor.html          |    6 
 Wms/Utility/Tools/RcsHelper.cs                      |   31 +
 Wms/Wms/Properties/launchSettings.json              |    4 
 Wms/Wms/appsettings.json                            |    4 
 Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs          |    2 
 Wms/Model/InterFaceModel/HttpModel.cs               |   19 +
 Wms/WMS.BLL/SysServer/PalletsServer.cs              |    1 
 Wms/Wms/Controllers/DownApiController.cs            |   79 ++++-
 15 files changed, 527 insertions(+), 212 deletions(-)

diff --git a/HTML/.vscode/settings.json b/HTML/.vscode/settings.json
index 155422b..a0de46f 100644
--- a/HTML/.vscode/settings.json
+++ b/HTML/.vscode/settings.json
@@ -1,3 +1,3 @@
 {
-    "liveServer.settings.port": 5503
+    "liveServer.settings.port": 5504
 }
\ No newline at end of file
diff --git a/HTML/js/public.js b/HTML/js/public.js
index ed629a9..d299da4 100644
--- a/HTML/js/public.js
+++ b/HTML/js/public.js
@@ -1,9 +1,9 @@
 //var IP = "http://47.104.149.73:1991";//鎺ュ彛IP
 // var IP = "http://172.16.71.101:8082/";//鎺ュ彛IP
-//var IP = "http://localhost:13243/api";
-var IP = "http://localhost:50515/api";  //鏈湴
+//var IP = "http://192.168.10.203:8090/api";
+// var IP = "https://localhost:44323/api";  //鏈湴
 //var IP = "http://172.16.105.10:8086/api";
-// var IP = "http://localhost:44318/api";
+var IP = "http://localhost:58787/api";
 //var IP = "http://192.168.1.6:8017";
 //var IP = "http://192.168.1.226:8086";  
 // var IP = "http://192.168.62.200:8888/api";  //bkl鏈嶅姟鍣�
diff --git a/HTML/views/HouseWithinSetting/HopperTransport.html b/HTML/views/HouseWithinSetting/HopperTransport.html
index 6c075df..34badbf 100644
--- a/HTML/views/HouseWithinSetting/HopperTransport.html
+++ b/HTML/views/HouseWithinSetting/HopperTransport.html
@@ -50,6 +50,7 @@
                         <ul class="layui-tab-title" id="tab">
                             <li class="layui-this">鍙枡</li>
                             <li>鍙溅</li>
+                            <li>杞﹂棿鍒拌溅闂�</li>
                         </ul>
  
                         <div class="layui-tab-content">
@@ -70,7 +71,7 @@
                                         <div class="layui-form-item">
                                             <label class="layui-form-label" style="width: 80px;">鍖哄煙</label>
                                             <div class="layui-input-block">
-                                                <select id="AreaSelect" name="AreaSelect" lay-filter="AreaSelect" lay-search>
+                                                <select id="AreaSelect" name="AreaSelect" lay-filter="AreaSelect" >
                                                     <option value=""></option>
                                                 </select>
                                                 
@@ -80,7 +81,7 @@
                                         <div class="layui-form-item">
                                             <label class="layui-form-label" style="width: 80px;">鐩爣浣嶇疆</label>
                                             <div class="layui-input-block"> 
-                                                <select id="LocateSelect" name="LocateSelect" lay-filter="LocateSelect" lay-search>
+                                                <select id="LocateSelect" name="LocateSelect" lay-filter="LocateSelect" >
                                                     <option value=""></option> 
                                                 </select>
                                             </div>
@@ -88,7 +89,7 @@
                                         <div class="layui-form-item">
                                             <label class="layui-form-label" style="width: 80px;">妗剁被鍨�</label>
                                             <div class="layui-input-block">
-                                                <select id="PalletStatus" name="PalletStatus" lay-filter="PalletStatus" lay-search>
+                                                <select id="PalletStatus" name="PalletStatus" lay-filter="PalletStatus" >
                                                     <option value=""></option>
                                                     <option value="0">鍑�妗�</option>
                                                     <option value="2">婊℃《</option> 
@@ -99,7 +100,7 @@
                                         <div class="layui-form-item" id="StandardDiv">
                                             <label class="layui-form-label" style="width: 80px;">瑙勬牸</label>
                                             <div class="layui-input-block">
-                                                <select name="Standard" lay-filter="Standard" lay-search>
+                                                <select name="Standard" lay-filter="Standard" >
                                                     <option value="400L">400L</option> 
                                                     <option value="800L">800L</option> 
                                                     <option value="1000L">1000L</option> 
@@ -109,7 +110,7 @@
                                         <div class="layui-form-item" id="SkuSelectDiv">
                                             <label class="layui-form-label" style="width: 80px;">鐗╂枡</label>
                                             <div class="layui-input-block">
-                                                <select id="SkuSelect" name="SkuSelect" lay-filter="SkuSelect" lay-search>
+                                                <select id="SkuSelect" name="SkuSelect" lay-filter="SkuSelect" >
                                                     <option value=""></option>
                                                 </select>
                                             </div>
@@ -117,7 +118,7 @@
                                         <div class="layui-form-item" id="LotNoSelectDiv">
                                             <label class="layui-form-label" style="width: 80px;">鎵规</label>
                                             <div class="layui-input-block">
-                                                <select id="LotNoSelect" name="LotNoSelect" lay-filter="LotNoSelect" lay-search>
+                                                <select id="LotNoSelect" name="LotNoSelect" lay-filter="LotNoSelect" >
                                                     <option value=""></option>
                                                 </select>
                                             </div>
@@ -141,7 +142,7 @@
                                         <div class="layui-form-item">
                                             <label class="layui-form-label" style="width: 80px;">鍖哄煙</label>
                                             <div class="layui-input-block">
-                                                <select id="AreaSelect2" name="AreaSelect2" lay-filter="AreaSelect2" lay-search>
+                                                <select id="AreaSelect2" name="AreaSelect2" lay-filter="AreaSelect2" >
                                                     <option value=""></option>
                                                 </select>
                                                 
@@ -151,7 +152,7 @@
                                         <div class="layui-form-item">
                                             <label class="layui-form-label" style="width: 80px;">璧峰浣嶇疆</label>
                                             <div class="layui-input-block"> 
-                                                <select id="LocateSelect2" name="LocateSelect2" lay-filter="LocateSelect2" lay-search>
+                                                <select id="LocateSelect2" name="LocateSelect2" lay-filter="LocateSelect2" >
                                                     <option value=""></option> 
                                                 </select>
                                             </div>
@@ -159,9 +160,9 @@
                                         <div class="layui-form-item">
                                             <label class="layui-form-label" style="width: 80px;">妗剁被鍨�</label>
                                             <div class="layui-input-block">
-                                                <select id="PalletStatus2" name="PalletStatus2" lay-filter="PalletStatus2" lay-search>
+                                                <select id="PalletStatus2" name="PalletStatus2" lay-filter="PalletStatus2" >
                                                     <option value=""></option>
-                                                    <!-- <option value="0">鍑�妗�</option> -->
+                                                     <option value="0">鍑�妗�</option> 
                                                     <option value="2">婊℃《</option> 
                                                     <option value="3">鑴忔《</option> 
                                                 </select>
@@ -180,7 +181,7 @@
                                         <div class="layui-form-item" id="SkuSelectDiv2">
                                             <label class="layui-form-label" style="width: 80px;">鐗╂枡</label>
                                             <div class="layui-input-block">
-                                                <select id="SkuSelect2" name="SkuSelect2" lay-filter="SkuSelect2" lay-search>
+                                                <select id="SkuSelect2" name="SkuSelect2" lay-filter="SkuSelect2" >
                                                     <option value=""></option>
                                                 </select>
                                             </div>
@@ -212,6 +213,94 @@
                                 
 
                             </div>
+
+                            <div class="layui-tab-item">
+                                <div class="flesDiv" >
+                                    <form class="layui-form" action="" style="width: 40%;">
+                                        
+                                        <div class="layui-form-item">
+                                            <label class="layui-form-label" style="width: 80px;">璧峰鍖哄煙</label>
+                                            <div class="layui-input-block">
+                                                <select id="AreaSelect3" name="AreaSelect3" lay-filter="AreaSelect3" >
+                                                    <option value=""></option>
+                                                </select>
+                                                
+                                            </div>
+                                        </div>
+                                           
+                                        <div class="layui-form-item">
+                                            <label class="layui-form-label" style="width: 80px;">璧峰浣嶇疆</label>
+                                            <div class="layui-input-block"> 
+                                                <select id="LocateSelect3" name="LocateSelect3" lay-filter="LocateSelect3" >
+                                                    <option value=""></option> 
+                                                </select>
+                                            </div>
+                                        </div>
+                                        <div class="layui-form-item">
+                                            <label class="layui-form-label" style="width: 80px;">鐩爣鍖哄煙</label>
+                                            <div class="layui-input-block">
+                                                <select id="AreaSelect4" name="AreaSelect4" lay-filter="AreaSelect4" >
+                                                    <option value=""></option>
+                                                </select>
+                                                
+                                            </div>
+                                        </div>
+                                           
+                                        <div class="layui-form-item">
+                                            <label class="layui-form-label" style="width: 80px;">鐩爣浣嶇疆</label>
+                                            <div class="layui-input-block"> 
+                                                <select id="LocateSelect4" name="LocateSelect4" lay-filter="LocateSelect4" >
+                                                    <option value=""></option> 
+                                                </select>
+                                            </div>
+                                        </div>
+                                        <div class="layui-form-item">
+                                            <label class="layui-form-label" style="width: 80px;">妗剁被鍨�</label>
+                                            <div class="layui-input-block">
+                                                <select id="PalletStatus2" name="PalletStatus2" lay-filter="PalletStatus2" >
+                                                    <option value=""></option>
+                                                     <option value="0">鍑�妗�</option> 
+                                                    <option value="2">婊℃《</option> 
+                                                    <option value="3">鑴忔《</option> 
+                                                </select>
+                                            </div>
+                                        </div>
+                                        <div class="layui-form-item" id="SkuSelectDiv2">
+                                            <label class="layui-form-label" style="width: 80px;">鐗╂枡</label>
+                                            <div class="layui-input-block">
+                                                <select id="SkuSelect2" name="SkuSelect2" lay-filter="SkuSelect2" >
+                                                    <option value=""></option>
+                                                </select>
+                                            </div>
+                                        </div>
+                                        <div class="layui-form-item" id="LotNoSelectDiv2">
+                                            <label class="layui-form-label" style="width: 80px;">鎵规</label>
+                                            <div class="layui-input-block">
+                                                <input type="text" id="LotNoInput" name="LotNoInput" placeholder="" autocomplete="off"
+								                    class="layui-input">
+                                            </div>
+                                        </div>
+                                        <div class="layui-form-item" id="WeightSelectDiv2">
+                                            <label class="layui-form-label" style="width: 80px;">閲嶉噺</label>
+                                            <div class="layui-input-block"> 
+                                                <input type="text" id="WeightInput" name="WeightInput" placeholder="" autocomplete="off"
+								                    class="layui-input">
+                                            </div>
+                                        </div>
+                                        <div class="layui-form-item" >
+                                            <div class="layui-input-block">
+                                                <button type="submit" class="layui-btn" lay-submit
+                                                    lay-filter="demo3">绔嬪嵆鎻愪氦</button>
+                                                <button type="reset" class="layui-btn layui-btn-primary">閲嶇疆</button>
+                                            </div>
+                                        </div>
+
+                                    </form>
+                                </div>
+                                
+
+                            </div>
+
                         </div>
                     </div>
             </div>
@@ -237,6 +326,7 @@
             var laypage = layui.laypage;
             var layer = layui.layer;
             var laydate = layui.laydate;
+            var a = 0;
 
             var bodyHeight = $("#body").outerHeight(); 
 
@@ -289,17 +379,26 @@
                 });
                 return false; // 闃绘榛樿 form 璺宠浆
             });
+            
             // 鍙溅鎻愪氦浜嬩欢
             form.on('submit(demo2)', function (data) {
                 var field = data.field; // 鑾峰彇琛ㄥ崟瀛楁鍊�
+                console.log("field.WeightInput:"+field.WeightInput);
+                
+                if(field.WeightInput.length != 0)
+                {
+                    a = parseFloat(field.WeightInput);
+                }
                 var param = {
                     AreaNo: field.AreaSelect2,
                     LocateNo : field.LocateSelect2,
                     PlnStatus:field.PalletStatus2,
                     SkuNo:field.SkuSelect2,
                     LotNo:field.LotNoInput,
-                    Weight:parseFloat(field.WeightInput)
+                    Weight:a
                 };
+                console.log(param);
+                
                 sendData(IP + "/DownApi/jiaoCheHopper", param, 'post', function(res) {
                     if (res.code == 0) { //鎴愬姛
                         layer.msg(res.msg, {
diff --git a/HTML/views/StatisticalReport/BoxInfor.html b/HTML/views/StatisticalReport/BoxInfor.html
index fd4280b..4a15210 100644
--- a/HTML/views/StatisticalReport/BoxInfor.html
+++ b/HTML/views/StatisticalReport/BoxInfor.html
@@ -219,9 +219,9 @@
 							if(d.PalletStatus=='0'){ 
 								html = `鍑�妗禶; 
 							} else if(d.PalletStatus=='1') { 
-								html = `棰勬贩`; 
+								html = `娓呮礂涓璥; 
 							} else if(d.PalletStatus=='2') { 
-								html = `鍗婃垚鍝乣; 
+								html = `婊℃《`; 
 							}else if(d.PalletStatus=='3') { 
 								html = `鑴忔《`; 
 							}
@@ -348,7 +348,7 @@
                     {field: 'LotText', title: '鎵规鎻忚堪', align: 'center'},
                     //{field: 'SupplierLot', title: '渚涜揣鎵规', align: 'center'},
 					{field: 'Status', title: '鍒嗛厤鐘舵��', align: 'center', templet: '#TempletStatus'},
-                    {field: 'Qty', title: '鏁伴噺', align: 'center'},
+                    {field: 'Qty', title: '閲嶉噺锛圞G锛�', align: 'center'},
                     {field: 'LockQty', title: '閿佸畾鏁伴噺', align: 'center',},
                     {field: 'FrozenQty', title: '鍐荤粨鏁伴噺', align: 'center'},
 					{field: 'InspectStatus', title: '璐ㄦ鐘舵��', align: 'center', templet: '#InspectStatus1'}, 
diff --git a/Wms/Model/InterFaceModel/HttpModel.cs b/Wms/Model/InterFaceModel/HttpModel.cs
index 2cb35e1..cd50900 100644
--- a/Wms/Model/InterFaceModel/HttpModel.cs
+++ b/Wms/Model/InterFaceModel/HttpModel.cs
@@ -788,20 +788,31 @@
         /// 鏄惁蹇呭~锛氭槸
         /// </summary>
         public string Message { get; set; }
+    public Data data { get; set; }
 
         /// <summary>
         /// 璇锋眰缂栧彿
         /// 鏄惁蹇呭~锛氭槸
         /// </summary>
-        public string ReqCode { get; set; }
+        public string ErrorCode { get; set; }
 
         /// <summary>
-        /// 杩斿洖鐨勬暟鎹粨鏋�
-        /// 鏄惁蹇呭~锛氬惁
+        /// 璇锋眰缂栧彿
+        /// 鏄惁蹇呭~锛氭槸
         /// </summary>
-        public string Data { get; set; }
+        public bool success { get; set; }
+
+    
     }
 
+public class AgvTaskBindBack
+{
+    public string code { get; set; }
+    public string message { get; set; }
+    public bool success { get; set; }
+}
+
+
     /// <summary>
     /// AGV鐢宠绌烘墭鐩樺灈鍏ュ簱
     /// </summary>
diff --git a/Wms/Utility/Tools/RcsHelper.cs b/Wms/Utility/Tools/RcsHelper.cs
index 568bfda..5242185 100644
--- a/Wms/Utility/Tools/RcsHelper.cs
+++ b/Wms/Utility/Tools/RcsHelper.cs
@@ -25,7 +25,24 @@
         public static bool CreateTaskForAgv(TaskDetial taskDetial, string url, out string agvMsg, string priority = null)
         {
             bool result = false;
-            var tasktype = "F12";
+            var tasktype = "";
+            switch (taskDetial.Crtype)
+            {
+                case "1":  //鍙《
+                    tasktype = "F12";
+                    break;
+                case "2":  //鍙溅
+                    tasktype = "F12";
+                    break;
+                case "3":  //娓呮礂鏈哄彨鑴忔《
+                    tasktype = "F20";
+                    break;
+                case "4":  //娓呮礂鏈哄彇鍑�妗�
+                    tasktype = "F21";
+                    break;
+                default:
+                    break;
+            }
 
             //璺ㄦゼ灞備换鍔asktype鍊艰祴鍊尖�︹��
             //tasktype = "";
@@ -50,6 +67,8 @@
             AgvCreateTaskModel taskModel = new AgvCreateTaskModel();
             taskModel.taskType = tasktype;
             taskModel.targetRoute = pahtList;
+            taskModel.initPriority = 100;
+            taskModel.robotTaskCode = taskDetial.Taskno;
 
             //AGV浠诲姟涓嬪彂鏃跺鍔爃earder:X-LR-REQUEST-ID,鍊间负闅忔満鏁�
             long ran = DateTime.Now.Ticks;
@@ -61,7 +80,7 @@
             string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV", key);
             //瑙f瀽杩斿洖鏁版嵁 
             var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
-            if (agvModel.Code == "0")
+            if (agvModel.Code == "SUCCESS")
             {
                 result = true;//缁欎笅杞︿笅鍙戜换鍔℃垚鍔�
 
@@ -102,8 +121,8 @@
             var jsonData = JsonConvert.SerializeObject(carrierInfo);
             string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV缁戝畾杞藉叿鍛戒护", "AGV", key);
             //瑙f瀽杩斿洖鏁版嵁 
-            var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
-            if (agvModel.Code == "0")
+            var agvModel = JsonConvert.DeserializeObject<AgvTaskBindBack>(response);
+            if (agvModel.code == "SUCCESS")
             {
                 result = true;//缁欎笅杞︿笅鍙戜换鍔℃垚鍔�
 
@@ -112,9 +131,9 @@
             else
             {
                 var logStr = $@".\log\AGV\涓嬪彂缁橝GV缁戝畾杞藉叿鍛戒护" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
-                LogFile.SaveLogToFile($"涓嬪彂缁橝GV缁戝畾杞藉叿鍛戒护寮傚父锛�( {agvModel.Message} ),", logStr);
+                LogFile.SaveLogToFile($"涓嬪彂缁橝GV缁戝畾杞藉叿鍛戒护寮傚父锛�( {agvModel.message} ),", logStr);
 
-                agvMsg = agvModel.Message;
+                agvMsg = agvModel.message;
             }
 
             return result;
diff --git a/Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs b/Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs
index f497068..7975829 100644
--- a/Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs
+++ b/Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs
@@ -297,17 +297,19 @@
                 var locatListWai = locatList.Where(w => string.IsNullOrEmpty(w.AisleOne)).Select(s => s.LocatNo);
 
                 //鍏堟壘涓嶉渶瑕佺Щ搴撶殑妗�
-                var palletModel = stockDetail.Where(w => locatListWai.Contains(w.LocatNo)).OrderBy(o => o.UpdateTime).FirstOrDefault();
+                var palletModel = stockDetail.Where(w => locatListWai.Contains(w.LocatNo)).OrderByDescending(w => w.UpdateTime).FirstOrDefault();
                 if (palletModel == null)
                 {
                     //鎵鹃渶瑕佺Щ搴撶殑妗�
-                    palletModel= stockDetail.Where(w => !locatListWai.Contains(w.LocatNo)).OrderBy(o => o.UpdateTime).FirstOrDefault();
+                    palletModel= stockDetail.Where(w => !locatListWai.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);
@@ -328,9 +330,9 @@
                     Receiver = "RCS",
                     IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
 
-                    StartLocat = "",//璧峰浣嶇疆
+                    StartLocat = startLoction.LocatNo,//璧峰浣嶇疆
                     EndLocat = endLocate,//鐩爣浣嶇疆
-                    PalletNo = "",//鎵樼洏鐮�
+                    PalletNo = palletModel.PalletNo,//鎵樼洏鐮�
                     IsSend = 1,//鏄惁鍙啀娆′笅鍙�
                     IsCancel = 1,//鏄惁鍙彇娑�
                     IsFinish = 1,//鏄惁鍙畬鎴�
@@ -359,7 +361,7 @@
                     //缁欎笅杞︿笅鍙戜换鍔�
                     logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂�
                     //涓嬪彂杞藉叿绫诲瀷
-                    var bind = RcsHelper.BindPalletAndSite(palletModel.PalletNo, palletModel.LocatNo, url, out string agvBindMsg);
+                    var bind = RcsHelper.BindPalletAndSite(palletModel.PalletNo, palletModel.LocatNo, bindUrl, out string agvBindMsg);
                     if (bind)
                     {
                         var agvResult = RcsHelper.CreateTaskForAgv(task, url, out agvMsg);
@@ -371,7 +373,7 @@
                             //logTaskEntry.IsCancel = 0;
                             logTaskEntry.BackDate = DateTime.Now;
                             logTaskEntry.Status = "1";//姝e湪鎵ц
-                            Db.Insertable(logTaskEntry).ExecuteCommand();
+                            Db.Updateable(logTaskEntry).ExecuteCommand();
 
                             startLoction.Status = "3";//鍑哄簱涓�
                             Db.Updateable(startLoction).ExecuteCommand();
@@ -383,14 +385,14 @@
                         {
                             logTaskEntry.IsSuccess = 0;
                             logTaskEntry.Information = agvMsg;
-                            Db.Insertable(logTaskEntry).ExecuteCommand();
+                            Db.Updateable(logTaskEntry).ExecuteCommand();
                         }
                     }
                     else 
                     {
                         logTaskEntry.IsSuccess = 0;
                         logTaskEntry.Information = "璐ф灦涓庤揣浣嶇粦瀹氬け璐ワ紝鍘熷洜锛�"+agvBindMsg;
-                        Db.Insertable(logTaskEntry).ExecuteCommand();
+                        Db.Updateable(logTaskEntry).ExecuteCommand();
                     }
                    
                 }
@@ -442,11 +444,12 @@
                 Db.BeginTran();
 
                 //妗朵俊鎭�
-                var pln = Db.Queryable<SysPallets>().First(w => w.IsDel == "0" && w.PalletNo == plnNo);
+                var pln = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LocatNo == StartLocate && w.AreaNo == areaNo);
                 if (pln == null)
                 {
                     throw new Exception("鏈煡璇㈠埌妗朵俊鎭�");
                 }
+                plnNo = pln.PalletNo;
 
                 //璧峰鍌ㄤ綅淇℃伅
                 var startLoction = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.AreaNo == areaNo && m.LocatNo == StartLocate);
@@ -461,10 +464,6 @@
                         throw new Exception("娌℃湁鏌ヨ鍒扮墿鏂欎俊鎭�");
                     }
                     skuName = sku.SkuName;
-                }
-                else if (plnStatus == "3")
-                {
-
                 }
                 //鐩爣妤煎眰
                 var layer = startLoction.Layer;
@@ -502,7 +501,7 @@
                         CompleteTime = DateTime.Now,
 
                         PalletStatus = plnStatus,
-                        Status = "0",
+                        Status = "2",
                         InspectMark = "0",
                         BitPalletMark = "0",
                         InspectStatus = "1",
@@ -513,13 +512,15 @@
                 {
                     stockDetail.PalletStatus = plnStatus;
                     stockDetail.SkuNo = skuNo;
+                    stockDetail.SkuName = skuName;
                     stockDetail.LotNo = lotNo;
                     stockDetail.Qty = weight;
+                    stockDetail.Status = "2";
                     Db.Updateable(stockDetail).ExecuteCommand();
 
                 }
                 //鍒嗛厤鍌ㄤ綅
-                var endLocatInfo = GetLocatModel(house.WareHouseNo, plnStatus, skuNo, pln.Standard);//鐩爣鍌ㄤ綅
+                var endLocatInfo = GetLocatModel(house.WareHouseNo, plnStatus, startLoction.WareHouseNo, skuNo, pln.Standard,lotNo);//鐩爣鍌ㄤ綅
                 //娌℃湁鍙敤绌哄偍浣�
                 if (endLocatInfo == null)
                 {
@@ -575,7 +576,7 @@
                         //logTaskEntry.IsCancel = 0;
                         logTaskEntry.BackDate = DateTime.Now;
                         logTaskEntry.Status = "1";//姝e湪鎵ц
-                        Db.Insertable(logTaskEntry).ExecuteCommand();
+                        Db.Updateable(logTaskEntry).ExecuteCommand();
 
                         startLoction.Status = "3";//鍑哄簱涓�
                         Db.Updateable(startLoction).ExecuteCommand();
@@ -634,10 +635,10 @@
                 {
                     throw new Exception($"浠诲姟鍙蜂负:{taskNo}鐨勪换鍔′笉瀛樺湪!");
                 }
-                if (taskInfo.Status != "1" && comeFrom != "WMS")
-                {
-                    throw new Exception($"浠诲姟鍙蜂负:{taskNo}鐨勪换鍔$姸鎬佸紓甯�");
-                }
+                //if (taskInfo.Status != "0" && comeFrom != "WMS")
+                //{
+                //    throw new Exception($"浠诲姟鍙蜂负:{taskNo}鐨勪换鍔$姸鎬佸紓甯�");
+                //}
                 #endregion
                 //寮�鍚簨鍔�
                 Db.BeginTran();
@@ -680,6 +681,7 @@
                     throw new Exception($"鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�");
                 }
                 endLocatInfo.Status = "1";//鏈夌墿鍝�
+                endLocatInfo.UpdateTime = DateTime.Now;//鏇存柊鏃堕棿
                 //淇敼鐩爣鍌ㄤ綅鐘舵��
                 Db.Updateable(endLocatInfo).ExecuteCommand();
 
@@ -702,7 +704,7 @@
                 }
                 else if (endAreaInfo.Type == "1")//婊℃《鍖�
                 {
-                    stockDetail.PalletStatus = "1";
+                    stockDetail.PalletStatus = "2";
                     stockDetail.Status = "0";//寰呭垎閰�
                 }
                 else if (endAreaInfo.Type == "2")//鑴忔《鍖�
@@ -764,6 +766,38 @@
                 {
                     throw new Exception("闈炲彨鏂欑姸鎬�");
                 }
+                switch (deviceStation)
+                {
+                    case "input"://鍙剰妗�
+                        switch (deviceID)
+                        {
+                            case "2001":
+                                deviceID = "1001";
+                                break;
+                            case "2002":
+                                deviceID = "1003";
+                                break;
+                            default:
+                                throw new Exception("鍙剰妗剁偣浣嶅紓甯�");
+                        } 
+                        break;
+                    case "output"://鍙溅鎷夊噣妗�
+                        switch (deviceID)
+                        {
+                            case "2001":
+                                deviceID = "1002";
+                                break;
+                            case "2002":
+                                deviceID = "1004";
+                                break;
+                            default:
+                                throw new Exception("鍙噣妗剁偣浣嶅紓甯�");
+                        }
+                        break;
+                    default:
+                        throw new Exception("鍙枡绫诲瀷寮傚父");
+
+                }
                 //閫氳繃璁惧鍙锋煡鎵惧埌鎵�灞炶澶囷紙鍖哄煙锛�
                 var deviceInfo = Db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.DeviceCode == deviceID);
                 if (deviceInfo == null)
@@ -775,6 +809,7 @@
                 var startLoction = new SysStorageLocat();//璧峰鍌ㄤ綅淇℃伅
                 var endLoction = new SysStorageLocat();//鐩爣鍌ㄤ綅淇℃伅
                 var palletModel = new DataStockDetail();//鍒嗛厤妗朵俊鎭�
+                string type = "";//鍙枡绫诲瀷
 
                 //寮�鍚簨鍔�
                 Db.BeginTran();
@@ -783,64 +818,117 @@
                 switch (deviceStation)
                 {
                     case "input"://鍙剰妗�
-                        //鍙《璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙鐩爣鍌ㄤ綅锛�
-                        endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo);
+                        if (deviceID == "1001" || deviceID == "1003")
+                        {
+                            type = "3";
+                            //鍙《璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙鐩爣鍌ㄤ綅锛�
+                            endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo);
 
-                        // 鎵�鏈夊緟鍒嗛厤鐨勮剰妗�
-                        var stockDetail = Db.Queryable<DataStockDetail>().Where(w => w.Status == "0" && w.PalletStatus == "3");
-                       
-                        //浼樺厛鏌ユ壘鑴忔《缂撳瓨杞﹂棿
-                        palletModel = stockDetail.Where(w => w.AreaNo == "C43").OrderByDescending(o => o.UpdateTime).First();
-                        if (palletModel == null)//鑴忔《缂撳瓨杞﹂棿娌℃湁鑴忔《锛屽啀浠庝笁妤间腑闂寸珯鑴忔《鍖烘煡鎵�
-                        {
-                            palletModel = stockDetail.Where(w =>w.WareHouseNo=="M16" && w.AreaNo == "C26").OrderByDescending(o => o.UpdateTime).First();
+                            // 鎵�鏈夊緟鍒嗛厤鐨勮剰妗�
+                            var stockDetail = Db.Queryable<DataStockDetail>().Where(w => w.Status == "0" && w.PalletStatus == "3").OrderByDescending(w => w.UpdateTime).ToList();
+
+                            //鍒ゆ柇褰撳墠娓呮礂鏈鸿澶囦笂鏈夊嚑涓剰妗讹紝status锛�2 姝e湪娓呮礂鐨勮剰妗讹紙鐘舵�佽Е鍙戝彉鏇翠负AGV鍙2涓剰妗舵椂瑙﹀彂锛�
+                            int ztQty = Db.Queryable<DataStockDetail>().Count(w => w.IsDel == "0" && w.Status == "2" && w.LocatNo == deviceID);
+                            if (ztQty == 1)
+                            {
+                                throw new Exception((deviceID == "1001"?"1":"2") + "鍙锋竻娲楁満鑴忔《宸叉弧锛岄噸澶嶅彨鏂欙紒");
+                            }
+
+                            //鍏堟煡鐪嬪彨鏂欒澶囦綅鏄惁鏈夎剰妗�
+                            if (endLoction.Status == "1")
+                            {
+                                //鏈夎剰妗剁殑璇濓紝灏嗘洿鏀规妗剁姸鎬�(浠h〃姝ゆ《姝e湪娓呮礂涓�)
+                                var qxStock = Db.Queryable<DataStockDetail>().Where(w => w.LocatNo == endLoction.LocatNo).First();
+                                qxStock.Status = "2"; 
+                                qxStock.UpdateTime = DateTime.Now;//娓呮礂鏃堕棿
+                                Db.Updateable(qxStock).ExecuteCommand();
+                                //鏇存敼璁惧鍌ㄤ綅鐘舵�佷负绌哄偍浣�
+                                endLoction.Status = "0";
+                                Db.Updateable(endLoction).ExecuteCommand();
+                            }
+                            //浼樺厛鏌ユ壘鑴忔《缂撳瓨杞﹂棿
+                            palletModel = stockDetail.Where(w => w.AreaNo == "C54").FirstOrDefault();
+                            if (palletModel == null)//鑴忔《缂撳瓨杞﹂棿娌℃湁鑴忔《锛屽啀浠庝笁妤间腑闂寸珯鑴忔《鍖烘煡鎵�
+                            {
+                                palletModel = stockDetail.Where(w => w.WareHouseNo == "M16" && w.AreaNo == "C26").FirstOrDefault();
+                            }
+                            if (palletModel == null)//涓夋ゼ涓棿绔欒剰妗跺尯娌℃湁鑴忔《锛屽啀浠庡洓妤间腑闂寸珯鑴忔《鍖烘煡鎵�
+                            {
+                                palletModel = stockDetail.Where(w => w.WareHouseNo == "M01" && w.AreaNo == "C03").FirstOrDefault();
+                            }
+                            if (palletModel == null)
+                            {
+                                throw new Exception("鏃犺剰妗跺彲鍒嗛厤");
+                            }
+                            //璧峰鍌ㄤ綅鍦板潃淇℃伅
+                            startLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.Status == "1" && w.LocatNo == palletModel.LocatNo);
+                            if (startLoction == null)
+                            {
+                                throw new Exception($"璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿palletModel.LocatNo}");
+                            }
                         }
-                        if (palletModel == null)//涓夋ゼ涓棿绔欒剰妗跺尯娌℃湁鑴忔《锛屽啀浠庡洓妤间腑闂寸珯鑴忔《鍖烘煡鎵�
+                        else
                         {
-                            palletModel = stockDetail.Where(w => w.WareHouseNo == "M01" && w.AreaNo == "C03").OrderByDescending(o => o.UpdateTime).First();
-                        }
-                        if (palletModel == null)
-                        {
-                            throw new Exception("鏃犺剰妗跺彲鍒嗛厤");
-                        }
-                        //璧峰鍌ㄤ綅鍦板潃淇℃伅
-                        startLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.Status == "1" && w.LocatNo == palletModel.LocatNo);
-                        if (startLoction == null)
-                        {
-                            throw new Exception($"璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿palletModel.LocatNo}");
+                            throw new Exception("璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�");
                         }
 
                         break;
 
                     case "output"://鍑�妗剁敵璇峰偍浣�
-                        //鍙《璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛�
-                        startLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo);
-                        //妗朵俊鎭�
-                        palletModel = Db.Queryable<DataStockDetail>().Where(w => w.WareHouseNo==houseNo && w.AreaNo==deviceInfo.AreaNo && w.LocatNo==startLoction.LocatNo).First();
-                        if (palletModel == null)
+                        if (deviceID == "1002" || deviceID == "1004")
                         {
-                            throw new Exception("鏈煡璇㈠埌鍑�妗朵俊鎭�");
+                            type = "4";
+                            //鍙《璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛�
+                            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();
+                            if (palletModel == null)
+                            {
+                                throw new Exception("鏈壘鍒板簱瀛樹腑姝e湪娓呮礂鐨勮剰妗�");
+                            }
+                            if (!string.IsNullOrEmpty(palletModel.LocatNo))
+                            {
+                                palletModel.LocatNo = startLoction.LocatNo;
+                                palletModel.PalletStatus = "0";
+                                palletModel.Status = "0";
+                                Db.Updateable(palletModel).ExecuteCommand();
+                            }
+                            //鍒嗛厤鍌ㄤ綅
+                            //鏌ユ壘鎵�鏈夊噣妗跺偍浣�
+                            var jtLocate = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0")
+                                                .OrderBy(w => w.Row).OrderByDescending(w => w.Column).ToList();
+                            if (jtLocate.Count == 0)
+                            {
+                                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)//鍥涙ゼ涓棿绔欏噣妗跺尯娌℃湁绌哄偍浣嶏紝鍐嶄粠涓夋ゼ涓棿绔欏噣妗跺尯鏌ユ壘
+                            //{
+                            endLoction = jtLocate.Where(w => w.WareHouseNo == "M16" && w.AreaNo == "C24")
+                                                .OrderBy(w => w.Row).OrderByDescending(w => w.Column).FirstOrDefault();
+                            //}
+                            if (endLoction == null)//涓夋ゼ涓棿绔欏噣妗跺尯娌℃湁绌哄偍浣嶏紝鍐嶄粠涓夋ゼ娓呮礂闂寸紦瀛樺尯鏌ユ壘             PS锛氬皬杞︾幇鍦ㄨ繕涓嶆敮鎸佹竻娲楁満鐩存帴閫佸線4妤煎噣妗跺尯
+                            {
+                                endLoction = jtLocate.Where(w => w.WareHouseNo == "M44" && w.AreaNo == "C55")
+                                                .OrderBy(w => w.Row).OrderByDescending(w => w.Column).FirstOrDefault();
+                            }
+                            if (endLoction == null)
+                            {
+                                throw new Exception("鏈煡璇㈠埌鍚堥�傚偍浣�");
+                            }
+                            //string startlono = startLoction.LocatNo == "1001" ? "1002" : "1004";//娓呮礂瀹屾垚鐐逛綅
+                            //startLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == startlono);
+                            //if (startLoction == null)
+                            //{
+                            //    throw new Exception("鏈壘鍒版竻娲楄捣濮嬬偣浣�");
+                            //}
                         }
-                        //鍒嗛厤鍌ㄤ綅
-                        //浼樺厛鍒嗛厤鍥涙ゼ涓棿绔欏噣妗跺尯
-                        endLoction= Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0"
-                                            && w.WareHouseNo == "M01" && w.AreaNo == "C01")
-                                            .OrderBy(o => o.Row).OrderByDescending(o => o.Column).First();
-                        if (endLoction == null)//鍥涙ゼ涓棿绔欏噣妗跺尯娌℃湁绌哄偍浣嶏紝鍐嶄粠涓夋ゼ涓棿绔欏噣妗跺尯鏌ユ壘
+                        else
                         {
-                            endLoction = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0"
-                                            && w.WareHouseNo == "M16" && w.AreaNo == "C24")
-                                            .OrderBy(o => o.Row).OrderByDescending(o => o.Column).First();
-                        }
-                        if (endLoction == null)//涓夋ゼ涓棿绔欏噣妗跺尯娌℃湁绌哄偍浣嶏紝鍐嶄粠涓夋ゼ娓呮礂闂寸紦瀛樺尯鏌ユ壘
-                        {
-                            endLoction = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0"
-                                            && w.WareHouseNo == "M44" && w.AreaNo == "C55")
-                                            .OrderBy(o => o.Row).OrderByDescending(o => o.Column).First();
-                        }
-                        if (endLoction == null)
-                        {
-                            throw new Exception("鏈煡璇㈠埌鍚堥�傚偍浣�");
+                            throw new Exception("璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�");
                         }
                         break;
 
@@ -848,6 +936,7 @@
                         throw new Exception("鍙枡鐐逛綅寮傚父");
      
                 }
+                
                 var taskNo = new Common().GetMaxNo("TK");
                 //娣诲姞浠诲姟
                 var logTaskEntry = new LogTask
@@ -857,9 +946,9 @@
                     Receiver = "RCS",
                     IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
 
-                    StartLocat = "",//璧峰浣嶇疆
+                    StartLocat = startLoction.LocatNo,//璧峰浣嶇疆
                     EndLocat = endLoction.LocatNo,//鐩爣浣嶇疆
-                    PalletNo = "",//鎵樼洏鐮�
+                    PalletNo = palletModel.PalletNo,//鎵樼洏鐮�
                     IsSend = 1,//鏄惁鍙啀娆′笅鍙�
                     IsCancel = 1,//鏄惁鍙彇娑�
                     IsFinish = 1,//鏄惁鍙畬鎴�
@@ -878,7 +967,7 @@
                     Startport = palletModel.LocatNo,//璧峰浣嶇疆
                     Endport = endLoction.LocatNo,//鐩爣浣嶇疆
                     Pallno = palletModel.PalletNo,//妗跺彿
-                    Crtype = "1",//鍙《
+                    Crtype = type,//鍙《
                 };
 
                 string agvMsg = string.Empty;
@@ -897,7 +986,7 @@
                         //logTaskEntry.IsCancel = 0;
                         logTaskEntry.BackDate = DateTime.Now;
                         logTaskEntry.Status = "1";//姝e湪鎵ц
-                        Db.Insertable(logTaskEntry).ExecuteCommand();
+                        Db.Updateable(logTaskEntry).ExecuteCommand();
 
                         startLoction.Status = "3";//鍑哄簱涓�
                         Db.Updateable(startLoction).ExecuteCommand();
@@ -909,14 +998,14 @@
                     {
                         logTaskEntry.IsSuccess = 0;
                         logTaskEntry.Information = agvMsg;
-                        Db.Insertable(logTaskEntry).ExecuteCommand();
+                        Db.Updateable(logTaskEntry).ExecuteCommand();
                     }
                 }
                 else
                 {
                     logTaskEntry.IsSuccess = 0;
                     logTaskEntry.Information = agvBindMsg;
-                    Db.Insertable(logTaskEntry).ExecuteCommand();
+                    Db.Updateable(logTaskEntry).ExecuteCommand();
                 }
                 
                 //鎻愪氦浜嬪姟
@@ -934,6 +1023,7 @@
         {
             try
             {
+                bool t = false;
                 //鍒嗛厤妗剁殑搴撳瓨淇℃伅
                 var palletInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo);
                 if (palletInfo == null)
@@ -1022,7 +1112,7 @@
                         string agvMsg = string.Empty;
                         //缁欎笅杞︿笅鍙戜换鍔�
                         logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂�
-                                                             //涓嬪彂杞藉叿涓庤揣浣嶇粦瀹�
+                        //涓嬪彂杞藉叿涓庤揣浣嶇粦瀹�
                         var bind = RcsHelper.BindPalletAndSite(palletInfoYi.LocatNo, palletInfoYi.PalletNo, bindUrl, out string agvBindMsg);
                         if (bind)
                         {
@@ -1062,10 +1152,15 @@
 
                             throw new Exception($"缁欏皬杞︿笅鍙戠Щ搴撲换鍔″け璐ワ紝妗跺彿锛歿palletInfoYi.PalletNo}");
                         }
-                        
+                        t = true;
+
+                    }
+                    else
+                    {
+                        return t;
                     }
                 }
-                return true;
+                return t;
             }
             catch (Exception e)
             {
@@ -1086,7 +1181,7 @@
                 Db.BeginTran();
 
                 //鏌ユ壘浠诲姟淇℃伅
-                var logTaskInfo = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.Status == "1" && w.TaskNo == taskNo);
+                var logTaskInfo = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.Status == "0" && w.TaskNo == taskNo);
                 if (logTaskInfo == null)
                 {
                     throw new Exception("鏈煡璇㈠埌璇ヤ换鍔�");
@@ -1173,6 +1268,7 @@
                     }
                     
                 }
+                Db.CommitTran();
             }
             catch (Exception e)
             {
@@ -1220,7 +1316,7 @@
                             continue;
                         }
                         //鍒嗛厤鍌ㄤ綅
-                        var endLocatInfo = GetLocatModel(itemHouseNo,detailInfo.PalletStatus,detailInfo.SkuNo,detailInfo.Standard);//鐩爣鍌ㄤ綅
+                        var endLocatInfo = GetLocatModel(itemHouseNo,detailInfo.PalletStatus,"",detailInfo.SkuNo,detailInfo.Standard,detailInfo.LotNo);//鐩爣鍌ㄤ綅
                         //娌℃湁鍙敤绌哄偍浣�
                         if (endLocatInfo == null)
                         {
@@ -1260,7 +1356,7 @@
                             Crtype = "2"//鍙《
                         };
                         string agvMsg = string.Empty;
-                        //缁欎笅杞︿笅鍙戜换鍔�
+                        //缁欎笅杞︿笅鍙戜换鍔�            s
                         logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂�
                         //涓嬪彂杞藉叿涓庤揣浣嶇粦瀹�
                         var bind = RcsHelper.BindPalletAndSite(detailInfo.PalletNo, detailInfo.LocatNo, bindUrl, out string agvBindMsg);
@@ -1325,7 +1421,7 @@
         /// <param name="standard">妗惰鏍�</param>
         /// <returns></returns>
         /// <exception cref="Exception"></exception>
-        private SysStorageLocat GetLocatModel(string houseNo, string palletStatus,string skuNo="",string standard="")
+        private SysStorageLocat GetLocatModel(string houseNo, string palletStatus,string zonghong,string skuNo="",string standard="",string lotNo = "")
         {
             try
             {
@@ -1342,44 +1438,88 @@
                                             .OrderBy(o => o.Row).OrderByDescending(o => o.Column).First();
                         break;
                     case "2"://婊℃《
-                             //鏌ュ埌鍒版弧妗跺尯鍩熺紪鍙�
-                        areaNo = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.Type == "1").Select(s => s.AreaNo).First();
-                        //鍒嗛厤鍌ㄤ綅
-                        //鍏堟煡鍒板悓鐗╂枡鐨勭粍
-                        string sql = $@"select Row from SysStorageLocat where WareHouseNo='{houseNo}' and AreaNo='{areaNo}' and LocatNo in(
-	                                            select LocatNo from DataStockDetail where SkuNo='{skuNo}' and Standard='{standard}' and WareHouseNo='{houseNo}' and AreaNo='{areaNo}' 
-                                            ) group by Row";
-
-                        List<int> RowList = Db.Ado.SqlQuery<int>(sql).ToList();
-                        foreach (var rowItem in RowList)
+                        //鎬绘贩鍒嗛厤鍌ㄤ綅 锛堜粨搴撶紪鐮丮12,M13锛夛紝鍒嗛厤閫昏緫锛氫紭鍏堝垎閰嶅悓鐗╂枡鐨勭粍锛屽啀鍒嗛厤鍒�3妤间腑闂寸珯锛屾渶鍚庡垎閰嶅埌4妤间腑闂寸珯
+                        if (zonghong == "M12" || zonghong == "M13")
                         {
-                            endLocatInfo = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0"
-                                           && w.WareHouseNo == houseNo && w.AreaNo == areaNo && w.Row == rowItem)
-                                           .OrderByDescending(o => o.Column).First();
+                            //鍏堟煡鍒板悓鐗╂枡鐨勭粍
+                            string sql = $@"select Row from SysStorageLocat where LocatNo in(
+	                                                select LocatNo from DataStockDetail where SkuNo='{skuNo}' and LotNo = '{lotNo}' and Standard='{standard}' 
+                                                    and AreaNo in ('C02','C25')
+                                                ) group by Row";
 
-                            if (endLocatInfo != null)
+                            List<int> RowList = Db.Ado.SqlQuery<int>(sql).ToList();
+                            foreach (var rowItem in RowList)
                             {
-                                break;
+                                endLocatInfo = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0" && w.Row == rowItem)
+                                               .OrderByDescending(o => o.Column).First();
+                                if (endLocatInfo.LocatNo != null)
+                                {
+                                    break;
+                                }
+                            }
+                            //娌℃湁鎵惧埌鐩稿悓鐗╂枡鍚岀粍鐨勭┖鍌ㄤ綅
+                            if (endLocatInfo.LocatNo == 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();
+                            }
+
+                        }
+                        else {//鍏朵粬鍖哄煙 
+                            //鏌ュ埌鍒版弧妗跺尯鍩熺紪鍙�
+                            areaNo = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.Type == "1").Select(s => s.AreaNo).First();
+                            //鍒嗛厤鍌ㄤ綅
+                            //鍏堟煡鍒板悓鐗╂枡鐨勭粍
+                            string sql = $@"select Row from SysStorageLocat where WareHouseNo='{houseNo}' and AreaNo='{areaNo}' and Status = '0' 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";
+
+                            List<int> RowList = Db.Ado.SqlQuery<int>(sql).ToList();
+                            foreach (var rowItem in RowList)
+                            {
+                                endLocatInfo = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0"
+                                               && w.WareHouseNo == houseNo && w.AreaNo == areaNo && w.Row == rowItem)
+                                               .OrderByDescending(o => o.Column).First();
+
+                                if (endLocatInfo.LocatNo != null)
+                                {
+                                    break;
+                                }
+                            }
+                            //娌℃湁鎵惧埌鐩稿悓鐗╂枡鍚岀粍鐨勭┖鍌ㄤ綅
+                            if (endLocatInfo.LocatNo == 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 == null)
-                        {
-                            endLocatInfo = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0"
-                                           && w.WareHouseNo == houseNo && w.AreaNo == areaNo)
-                                           .OrderBy(o => o.Row).OrderByDescending(o => o.Column).First();
-                        }
-
                         break;
                     case "3"://鑴忔《
-                             //鏌ュ埌鍒拌剰妗跺尯鍩熺紪鍙�
-                        areaNo = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.Type == "2").Select(s => s.AreaNo).First();
+                        //鏌ュ埌鍒拌剰妗跺尯鍩熺紪鍙凤紝瀛樻斁椤哄簭锛孋54 鏂欐枟娓呮礂鏆傚瓨闂达紝C26 3妤间腑闂寸珯鑴忔《鍖猴紝C03 4妤间腑闂寸珯鑴忔《鍖�
+                        var ztAreaNo = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Type == "2").Select(w => w.AreaNo).ToList();
+                        //鏌ユ壘鎵�鏈夊彲鐢ㄨ剰妗跺簱浣�
+                        var ztLocat = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0" && ztAreaNo.Contains(w.AreaNo))
+                            .OrderBy(o => o.Row).OrderByDescending(o => o.Column).ToList();
+                        //areaNo = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.Type == "2").Select(s => s.AreaNo).First();
                         //鍒嗛厤鍌ㄤ綅
-                        endLocatInfo = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0"
-                                            && w.WareHouseNo == houseNo && w.AreaNo == areaNo)
-                                            .OrderBy(o => o.Row).OrderByDescending(o => o.Column).First();
-
-
+                        //鏂欐枟娓呮礂鏆傚瓨闂�
+                        endLocatInfo = ztLocat.Where(w => w.AreaNo == "C54").FirstOrDefault();
+                        if (string.IsNullOrEmpty(endLocatInfo.LocatNo))
+                        {
+                            endLocatInfo = ztLocat.Where(w => w.AreaNo == "C26").FirstOrDefault();
+                            if (string.IsNullOrEmpty(endLocatInfo.LocatNo))
+                            {
+                                endLocatInfo = ztLocat.Where(w => w.AreaNo == "C03").FirstOrDefault();
+                                if (string.IsNullOrEmpty(endLocatInfo.LocatNo))
+                                {
+                                    throw new Exception("鏃犲彲鐢ㄨ剰妗跺簱浣�");
+                                }
+                            }
+                        }
                         break;
                 }
                 return endLocatInfo;
diff --git a/Wms/WMS.BLL/BllTransServer/RcsServer.cs b/Wms/WMS.BLL/BllTransServer/RcsServer.cs
index 0417f22..3db34c0 100644
--- a/Wms/WMS.BLL/BllTransServer/RcsServer.cs
+++ b/Wms/WMS.BLL/BllTransServer/RcsServer.cs
@@ -7,6 +7,8 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Numerics;
+using System.Reflection;
 using System.Security.Policy;
 using System.Text;
 using System.Threading.Tasks;
@@ -941,17 +943,12 @@
                     stockDetail.PalletStatus = "0";
                     stockDetail.Status = "0";//寰呭垎閰�
                 }
-                else if (endAreaInfo.Type == "1")//棰勬贩鍖�
-                {
-                    stockDetail.PalletStatus = "1";
-                    stockDetail.Status = "0";//寰呭垎閰�
-                }
-                else if (endAreaInfo.Type == "2")//鍗婃垚鍝佸尯
+                else if (endAreaInfo.Type == "1")//婊℃《
                 {
                     stockDetail.PalletStatus = "2";
                     stockDetail.Status = "0";//寰呭垎閰�
                 }
-                else if (endAreaInfo.Type == "3")//鑴忔《鍖�
+                else if (endAreaInfo.Type == "2")//鑴忔《鍖�
                 {
                     stockDetail.PalletStatus = "3";
                     stockDetail.LotNo = "";//鎵规
@@ -1097,18 +1094,16 @@
                 }
                 locatEnd.Status = "0"; //绌哄偍浣�
                 Db.Updateable(locatEnd).ExecuteCommand();
-
-                if (task.Type == "1")//鍑哄簱浠诲姟
+                
+                //淇敼搴撳瓨鏄庣粏
+                var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == task.PalletNo);
+                if (stockDetail == null)
                 {
-                    //淇敼搴撳瓨鏄庣粏
-                    var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == task.PalletNo && w.Status == "2");
-                    if (stockDetail == null)
-                    {
-                        throw new Exception("鏈煡璇㈠埌璇ユ《搴撳瓨淇℃伅,璇锋鏌�!");
-                    }
-                    stockDetail.Status = "0";//寰呭垎閰�
-                    Db.Updateable(stockDetail).ExecuteCommand();
+                    throw new Exception("鏈煡璇㈠埌璇ユ《搴撳瓨淇℃伅,璇锋鏌�!");
                 }
+                stockDetail.Status = "0";//寰呭垎閰�
+                Db.Updateable(stockDetail).ExecuteCommand();
+                
                 //娣诲姞鎿嶄綔鏃ュ織璁板綍
                 var k = new OperationCrServer().AddLogOperationCr("搴撳唴浣滀笟", "搴撳唴鏃ュ織", taskNo, "鍙栨秷", $"鐐瑰嚮鍙栨秷鎸夐挳銆佸彇娑堜簡浠诲姟鍙蜂负锛歿taskNo}鐨勪换鍔�", userId);
                 Db.CommitTran();
@@ -1125,7 +1120,7 @@
         /// <param name="taskNo"></param>
         /// <param name="userId"></param>
         /// <exception cref="Exception"></exception>
-        public void DownTask(string taskNo, int userId,string url)
+        public void DownTask(string taskNo, int userId,string url,string bindUrl)
         {
             try
             {
@@ -1142,7 +1137,7 @@
                     throw new Exception("鍙湁绛夊緟鎵ц鐨勪换鍔℃墠鍙墜鍔ㄤ笅鍙�");
                 }
                 //鏌ユ壘璇ユ《鏈夋病鏈夋鍦ㄦ墽琛岀殑浠诲姟
-                var tasking = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.Status == "1" && w.PalletNo == logTaskEntry.PalletNo);
+                var tasking = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.Status == "1"  && w.PalletNo == logTaskEntry.PalletNo);
                 if (tasking != null)
                 {
                     throw new Exception($"璇ユ《鏈夋鍦ㄦ墽琛岀殑浠诲姟");
@@ -1153,20 +1148,20 @@
                 {
                     throw new Exception($"鏈煡璇㈠埌璧峰鍌ㄤ綅淇℃伅");
                 }
-                if (startLocatInfo.Status != "1")
-                {
-                    throw new Exception($"璧峰鍌ㄤ綅鐘舵�佸紓甯�");
-                }
+                //if (startLocatInfo.Status != "1")
+                //{
+                //    throw new Exception($"璧峰鍌ㄤ綅鐘舵�佸紓甯�");
+                //}
                 //鐩爣鍌ㄤ綅淇℃伅
                 var endLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == logTaskEntry.EndLocat);
                 if (endLocatInfo == null)
                 {
                     throw new Exception($"鏈煡璇㈠埌鐩爣鍌ㄤ綅淇℃伅");
                 }
-                if (endLocatInfo.Status != "0")
-                {
-                    throw new Exception($"鐩爣鍌ㄤ綅鐘舵�佸紓甯�");
-                }
+                //if (endLocatInfo.Status != "0")
+                //{
+                //    throw new Exception($"鐩爣鍌ㄤ綅鐘舵�佸紓甯�");
+                //}
                 //缁勭粐缁欏皬杞︿笅鍙戜换鍔′俊鎭�
                 var task = new TaskDetial
                 {
@@ -1179,30 +1174,33 @@
                 string agvMsg = string.Empty;
                 //缁欎笅杞︿笅鍙戜换鍔�
                 logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂�
-                var agvResult = CreateTaskForAgv(task, url, out agvMsg);
-                if (agvResult)//鎴愬姛
+                //鍏堢粰璐т綅缁戝畾杞藉叿
+                var bind = RcsHelper.BindPalletAndSite(logTaskEntry.PalletNo, logTaskEntry.StartLocat, bindUrl, out string agvBindMsg);
+                if (bind)
                 {
-                    //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬�
-                    logTaskEntry.IsSuccess = 1;
-                    logTaskEntry.IsSend = 0;
-                    logTaskEntry.IsCancel = 0;
-                    logTaskEntry.BackDate = DateTime.Now;
-                    logTaskEntry.Status = "1";//姝e湪鎵ц
-                    Db.Insertable(logTaskEntry).ExecuteCommand();
+                    var agvResult = CreateTaskForAgv(task, url, out agvMsg);
+                    if (agvResult)//鎴愬姛
+                    {
+                        //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬�
+                        logTaskEntry.IsSuccess = 1;
+                        logTaskEntry.IsSend = 1;
+                        logTaskEntry.IsCancel = 1;
+                        logTaskEntry.BackDate = DateTime.Now;
+                        Db.Updateable(logTaskEntry).ExecuteCommand();
 
-                    startLocatInfo.Status = "3";//鍑哄簱涓�
-                    Db.Updateable(startLocatInfo).ExecuteCommand();
+                        startLocatInfo.Status = "3";//鍑哄簱涓�
+                        Db.Updateable(startLocatInfo).ExecuteCommand();
 
-                    endLocatInfo.Status = "2";//鍏ュ簱涓�
-                    Db.Updateable(endLocatInfo).ExecuteCommand();
+                        endLocatInfo.Status = "2";//鍏ュ簱涓�
+                        Db.Updateable(endLocatInfo).ExecuteCommand();
+                    }
+                    else//澶辫触
+                    {
+                        logTaskEntry.IsSuccess = 0;
+                        logTaskEntry.Information = agvMsg;
+                        Db.Updateable(logTaskEntry).ExecuteCommand();
+                    }
                 }
-                else//澶辫触
-                {
-                    logTaskEntry.IsSuccess = 0;
-                    logTaskEntry.Information = agvMsg;
-                    Db.Insertable(logTaskEntry).ExecuteCommand();
-                }
-
                 //娣诲姞鎿嶄綔鏃ュ織璁板綍
                 var k = new OperationCrServer().AddLogOperationCr("搴撳唴浣滀笟", "搴撳唴鏃ュ織", taskNo, "涓嬪彂", $"鐐瑰嚮涓嬪彂鎸夐挳銆佷换鍔″彿涓猴細{taskNo}鐨勪换鍔�", userId);
                 Db.CommitTran();
diff --git a/Wms/WMS.BLL/SysServer/PalletsServer.cs b/Wms/WMS.BLL/SysServer/PalletsServer.cs
index dc5f08f..ad876d7 100644
--- a/Wms/WMS.BLL/SysServer/PalletsServer.cs
+++ b/Wms/WMS.BLL/SysServer/PalletsServer.cs
@@ -254,6 +254,7 @@
 
                 //鏇存柊鍌ㄤ綅鐘舵��
                 locatModel.Status = "1";//鏈夌墿鍝�
+                locatModel.UpdateTime = DateTime.Now;
                 db.Updateable(locatModel).ExecuteCommand();
 
                 //涓嬪彂AGV缁戝畾杞藉叿鎺ュ彛
diff --git a/Wms/WMS.DAL/Common.cs b/Wms/WMS.DAL/Common.cs
index 44f6d0c..30c2830 100644
--- a/Wms/WMS.DAL/Common.cs
+++ b/Wms/WMS.DAL/Common.cs
@@ -232,9 +232,9 @@
                     var list = DataContext.Db.Queryable<BllStockCheck>().Where(m => m.CRNo.StartsWith("CR")).ToList();
                     orderNo = list.Select(a => a.CRNo).Max();
                 }
-                else if (codeFlag == InOutFlag.TN.ToString())//浠诲姟
+                else if (codeFlag == InOutFlag.TK.ToString())//浠诲姟
                 {
-                    var list = DataContext.Db.Queryable<LogTask>().Where(m => m.TaskNo.StartsWith("TN")).ToList();
+                    var list = DataContext.Db.Queryable<LogTask>().Where(m => m.TaskNo.StartsWith("TK")).ToList();
                     orderNo = list.Max(m=>m.TaskNo);
                 }
                 else if (codeFlag == InOutFlag.EX.ToString())//寮傚父
@@ -478,7 +478,7 @@
         /// 浠诲姟
         /// </summary>
         [Description("浠诲姟")]
-        TN,
+        TK,
 
         /// <summary>
         /// 寮傚父鍙� 
diff --git a/Wms/WMS.Entity/DataEntity/DataStockDetail.cs b/Wms/WMS.Entity/DataEntity/DataStockDetail.cs
index 731b449..a118b8d 100644
--- a/Wms/WMS.Entity/DataEntity/DataStockDetail.cs
+++ b/Wms/WMS.Entity/DataEntity/DataStockDetail.cs
@@ -209,7 +209,7 @@
 
         /// <summary>
         /// 鎵樼洏鐘舵��
-        /// Default:0锛氬噣妗� 1锛氶娣� 2锛氬崐鎴愬搧 3锛氳剰妗�
+        /// Default:0锛氬噣妗� 1锛氭竻娲椾腑 2锛氭弧妗� 3锛氳剰妗�
         /// </summary>
         public string PalletStatus { get; set; }
 
diff --git a/Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs b/Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs
index 66235fe..1557420 100644
--- a/Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs
+++ b/Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs
@@ -57,6 +57,6 @@
         /// <param name="taskNo"></param>
         /// <param name="userId"></param>
         /// <exception cref="Exception"></exception>
-        void DownTask(string taskNo, int userId, string url);
+        void DownTask(string taskNo, int userId, string url,string bindurl);
     }
 }
diff --git a/Wms/Wms/Controllers/DownApiController.cs b/Wms/Wms/Controllers/DownApiController.cs
index 5b12903..11c49eb 100644
--- a/Wms/Wms/Controllers/DownApiController.cs
+++ b/Wms/Wms/Controllers/DownApiController.cs
@@ -912,9 +912,10 @@
                 //鍏蜂綋澶勭悊鏂规硶
                 _hopper.OutBinAgv(model.robotTaskCode, _config.AgvHost + _config.GenAgvSchedulingTask,_config.AgvHost+_config.AGVBindPallets);
 
-                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);
                 return Ok(resultModel);
@@ -923,10 +924,10 @@
             {
                 LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-璧板嚭鍌ㄤ綅-寮傚父锛�( {ex.Message} ),", logStr);
 
-                
-                resultModel.code = "1";
-                resultModel.message = ex.Message;
-                resultModel.da.robotTaskCode = model.robotTaskCode;
+                Data data = new Data();
+                data.robotTaskCode = model.robotTaskCode;
+                resultModel = new AgvResultModel2 { code = "1", message = ex.Message, da = data };
+               
                 var jsonData2 = JsonConvert.SerializeObject(resultModel);
                 LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-璧板嚭鍌ㄤ綅-杩斿洖鎶ユ枃锛�( {jsonData2} ),", logStr);
                 return Ok(resultModel);
@@ -957,9 +958,9 @@
                 //鍏蜂綋澶勭悊鏂规硶
                 _hopper.RCSFinishTask(model.robotTaskCode, "1", "AGV");
 
-                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);
@@ -969,9 +970,9 @@
             {
                 LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟缁撴潫-寮傚父锛�( {ex.Message} ),", logStr);
 
-                resultModel.code = "1";
-                resultModel.message = ex.Message;
-                resultModel.da.robotTaskCode = model.robotTaskCode;
+                Data data = new Data();
+                data.robotTaskCode = model.robotTaskCode;
+                resultModel = new AgvResultModel2 { code = "1", message = ex.Message, da = data };
                 var jsonData2 = JsonConvert.SerializeObject(resultModel);
                 LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟缁撴潫-杩斿洖鎶ユ枃锛�( {jsonData2} ),", logStr);
                 return Ok(resultModel);
@@ -1015,7 +1016,51 @@
                 LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟鍗曞彇娑�-杩斿洖鎶ユ枃锛�( {jsonData2} ),", logStr);
                 return Ok(resultModel);
             }
-        }        
+        }
+
+        /// <summary>
+        /// 璧板嚭鍌ㄤ綅
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult AGVCallback(AgvTaskDto model)
+        {
+            //璁板綍log
+            var logStr = $@".\log\AGV\浠诲姟鎵ц閫氱煡" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+            AgvResultModel2 resultModel = null;//杩斿洖淇℃伅
+            try
+            {
+                var extraValue = new ExtraModel();
+                extraValue = model.extra;
+                switch (extraValue.values.method)
+                {
+                    case "outbin":
+                        var a = outbin(model);
+                        break;
+                    case "end":
+                        var b = end(model);
+                        break;
+                    default:
+                        break;
+                }
+                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);
+                return Ok(resultModel);
+            }
+            catch (Exception ex)
+            {
+                Data data = new Data();
+                data.robotTaskCode = model.robotTaskCode;
+                resultModel = new AgvResultModel2 { code = "1", message = ex.Message, da = data };
+                var jsonData2 = JsonConvert.SerializeObject(resultModel);
+                LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-杩斿洖鎶ユ枃锛�( {jsonData2} ),", logStr);
+                return Ok(resultModel);
+            }
+        }
 
         #endregion
 
@@ -1072,7 +1117,7 @@
                 {
                     return Ok(new { code = 1, msg = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" });
                 }
-                _rcsserver.DownTask(model.taskNo, int.Parse(userId), _config.AgvHost + _config.GenAgvSchedulingTask);
+                _rcsserver.DownTask(model.taskNo, int.Parse(userId), _config.AgvHost + _config.GenAgvSchedulingTask,_config.AgvHost + _config.AGVBindPallets);
 
                 return Ok(new { code = 0, msg = "閲嶆柊涓嬪彂宸插畬鎴�", data = "" });
             }
@@ -1106,7 +1151,7 @@
                 //鍏蜂綋澶勭悊鏂规硶
                 _rcsserver.RCSFinishTask(model.taskNo, "1", "WMS");
 
-                return Ok(new { code = 0, msg = "閲嶆柊涓嬪彂宸插畬鎴�", data = "" });
+                return Ok(new { code = 0, msg = "浠诲姟宸叉墜鍔ㄥ畬鎴�", data = "" });
             }
             catch (Exception e)
             {
@@ -1373,6 +1418,8 @@
                 return Ok(resultModel);
             }
         }
+
+       
         #endregion
 
     }
diff --git a/Wms/Wms/Properties/launchSettings.json b/Wms/Wms/Properties/launchSettings.json
index 93e8fe8..8ec21eb 100644
--- a/Wms/Wms/Properties/launchSettings.json
+++ b/Wms/Wms/Properties/launchSettings.json
@@ -21,8 +21,8 @@
     "windowsAuthentication": false,
     "anonymousAuthentication": true,
     "iisExpress": {
-      "applicationUrl": "http://192.168.10.201",
-      "sslPort": 44363
+      "applicationUrl": "http://localhost:58787/",
+      "sslPort": 44323
     }
   }
 }
\ No newline at end of file
diff --git a/Wms/Wms/appsettings.json b/Wms/Wms/appsettings.json
index 37d4dc2..8324399 100644
--- a/Wms/Wms/appsettings.json
+++ b/Wms/Wms/appsettings.json
@@ -12,8 +12,8 @@
     //"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.62.200;Database=WMS_JC37;User ID=sa;Password=sql2019;Integrated Security=False;"
-    "ConnectionString": "Server=.;Database=WMS_JC37;User ID=sa;Password=sa@123456;Integrated Security=False;"
-    //"ConnectionString": "Data Source=DESKTOP-0EJDG95\\MSSQLSERVER1;Initial Catalog=WMS_V01;Integrated Security=True;"
+    //"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=.\\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;"

--
Gitblit v1.8.0