From 8b05ae0960f7f6de3fbc99e4af9ba03ff75ec6e1 Mon Sep 17 00:00:00 2001
From: hudong <Administrator@PC-20250329JZUF>
Date: 星期一, 26 五月 2025 08:49:29 +0800
Subject: [PATCH] 与现场实施测试出入库流程 入库任务下发参数修改测试 称重高度会议讨论重新计算货位 变更终点下发联调

---
 wms/LocationHelper.cs  |    3 
 api/WmsSpaHelper.cs    |    2 
 api/AgvController.cs   |   18 +-
 wms/WMSHelper.cs       |   10 +
 models/WCSTask.cs      |    2 
 api/ApiHelper.cs       |   44 ++--
 api/ApiModel.cs        |    1 
 process/TaskProcess.cs |  456 ++++++++++++++++++++++++++++---------------------
 core/WCSCore.cs        |    3 
 9 files changed, 308 insertions(+), 231 deletions(-)

diff --git a/api/AgvController.cs b/api/AgvController.cs
index 7a53466..a200e98 100644
--- a/api/AgvController.cs
+++ b/api/AgvController.cs
@@ -74,15 +74,15 @@
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        [HttpPost]
-        [Route("PlcCallbackState")]
-        public PlcSendTaskres PlcCallbackState(PlcState model)
-        {
-            LogHelper.Info("PlcCallbackState Request锛� + JsonConvert.SerializeObject(model), "HosttoagvTask");
-            var result = ApiHelper.PlcCallbackState(model);
-            LogHelper.Info("PlcCallbackState Return锛� + JsonConvert.SerializeObject(result), "HosttoagvTask");
-            return result;
-        }
+        //[HttpPost]
+        //[Route("PlcCallbackState")]
+        //public PlcSendTaskres PlcCallbackState(PlcState model)
+        //{
+        //    LogHelper.Info("PlcCallbackState Request锛� + JsonConvert.SerializeObject(model), "HosttoagvTask");
+        //    //var result = ApiHelper.PlcCallbackState(model);
+        //    LogHelper.Info("PlcCallbackState Return锛� + JsonConvert.SerializeObject(result), "HosttoagvTask");
+        //    return result;
+        //}
 
 
 
diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs
index e6c6f6e..076688b 100644
--- a/api/ApiHelper.cs
+++ b/api/ApiHelper.cs
@@ -58,7 +58,7 @@
         }
 
 
-    
+
 
         internal static WeiLiResult AddTask(AddTaskModel model)
         {
@@ -162,14 +162,14 @@
         internal static TaskStateresutl GetTaskState(GetTaskStateModel model)
         {
             var db = new SqlHelper<object>().GetInstance();
-            TaskStateresutl result = new TaskStateresutl { success = false, code = 0};
+            TaskStateresutl result = new TaskStateresutl { success = false, code = 0 };
             if (!string.IsNullOrEmpty(model.taskNo))
             {
                 var info = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.taskNo).First();
-                if (info!=null)
+                if (info != null)
                 {
                     var TaskStates = db.Queryable<TaskAction>().Where(a => a.S_TASK_CODE == info.S_CODE).ToList();
-                    TaskStates=TaskStates.OrderBy(a => a.T_CREATE).ToList();
+                    TaskStates = TaskStates.OrderBy(a => a.T_CREATE).ToList();
                     for (int i = 0; i < TaskStates.Count; i++)
                     {
                         TaskState task = new TaskState
@@ -179,13 +179,13 @@
                             taskNo = model.taskNo,
                             transferTime = TaskStates[i].T_CREATE.ToString()
                         };
-                        if (!string.IsNullOrEmpty(TaskStates[i].S_EQ_CODE)) 
+                        if (!string.IsNullOrEmpty(TaskStates[i].S_EQ_CODE))
                         {
                             task.agvNo = int.Parse(TaskStates[i].S_EQ_CODE);
                         }
                         result.data.Add(task);
                     }
-                    result.success = true ;
+                    result.success = true;
                 }
                 else
                 {
@@ -201,11 +201,11 @@
             return result;
         }
 
-     
-       
 
-       
-       
+
+
+
+
         internal static PlcSendTaskres PlcCallbackState(PlcState model)
         {
             var db = new SqlHelper<object>().GetInstance();
@@ -444,11 +444,11 @@
         }
 
 
-        
 
-     
 
-        
+
+
+
         internal static WeiLiResult CancelOrder(CancelOrderModel model)
         {
             WeiLiResult result = new WeiLiResult();
@@ -503,7 +503,7 @@
             return result;
         }
 
-       
+
 
         internal static WeiLiResult ChangeOrderPrioryty(ChangeOrderPriorytyModel model)
         {
@@ -546,17 +546,17 @@
             return result;
         }
 
-      
 
-      
 
-       
-        
-        
 
-        
 
-        
+
+
+
+
+
+
+
 
         internal static SimpleResult PalletSorting(PalletSorting model)
         {
@@ -598,7 +598,7 @@
             return result;
         }
 
-        
+
 
 
         public class ReceivingNoteSerialNo
diff --git a/api/ApiModel.cs b/api/ApiModel.cs
index dc31677..828d8cf 100644
--- a/api/ApiModel.cs
+++ b/api/ApiModel.cs
@@ -28,6 +28,7 @@
         {
             public int State { get; set; }
             public string No { get; set; }
+        
             public string ForkliftNo { get; set; }
             public string ErrCode { get; set; }
             public string LockNo { get; set; }
diff --git a/api/WmsSpaHelper.cs b/api/WmsSpaHelper.cs
index fbd8f0f..b054b44 100644
--- a/api/WmsSpaHelper.cs
+++ b/api/WmsSpaHelper.cs
@@ -1941,7 +1941,7 @@
                         };
                         if (WMSHelper.CreateWmsTask(wmsTask))
                         {
-                            LocationHelper.LockLoc(start.S_CODE, 1);
+                            LocationHelper.LockLoc(start.S_CODE, 2);
                             result.resultMsg = $"鍒涘缓浣滀笟鎴愬姛锛屼綔涓氬彿{wmsTask.S_CODE}";
                         }
 
diff --git a/core/WCSCore.cs b/core/WCSCore.cs
index 97b99fb..4bcd182 100644
--- a/core/WCSCore.cs
+++ b/core/WCSCore.cs
@@ -69,6 +69,7 @@
                             case 7:
                                 TaskProcess.OperateStatus(TN_Task, 7);
                                 WCSHelper.Fail(TN_Task);
+                                WMSHelper.Fail(TN_Task);
                                 //sendsencondtask(TN_Task);
                                 //WMSHelper.End(TN_Task);
                                 break;
@@ -83,7 +84,7 @@
                     }
                     else {
                         //瀹夊叏璇锋眰绛�-                        TaskProcess.OperateReq( TN_Task, model.State, model.ForkliftNo, model.ExtData, model.Ext1);
+                        TaskProcess.OperateReq( TN_Task, model.State, model.ForkliftNo, model.ExtData);
                     }
                 }
             }
diff --git a/models/WCSTask.cs b/models/WCSTask.cs
index 29e3739..838efc1 100644
--- a/models/WCSTask.cs
+++ b/models/WCSTask.cs
@@ -41,7 +41,9 @@
         public string S_CODE { get; set; }
         //1鍓嶇Щ杞�2 鍫嗗灈杞�   
         public int N_ERR { get; set; }
+        //楂樺害
         public string S_EQ_TASK_CODE { get; set; }
+        //閲嶉噺
         public string S_STATE_PRE { get; set; }
         public int N_REVIEW_RESULT { get; set; }
 
diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs
index 2df9515..7a7e1ba 100644
--- a/process/TaskProcess.cs
+++ b/process/TaskProcess.cs
@@ -80,211 +80,273 @@
         /// <param name="forkliftNo">杞﹀彿</param>
         /// <param name="extData">閲嶉噺</param>
         /// <param name="Ext1">楂樺害</param>
-        internal static void OperateReq(WCSTask TN_Task, int state, string forkliftNo, string extData,string Ext1)
+        internal static void OperateReq(WCSTask TN_Task, int state, string forkliftNo, string extData)
         {
             if (state == 1002)//淇″彿
             {
-                LogHelper.Info($"绉伴噸鍒嗛厤鍏ュ簱缁堢偣璐т綅楂樺害閲嶉噺{extData}锛岄珮搴Ext1}");
-                var db = new SqlHelper<object>().GetInstance();
-                var WMStask= db.Queryable<WMSTask>().Where(s=>s.S_CODE==TN_Task.S_OP_CODE).First();
-                if (WMStask==null)
-                {
-                    LogHelper.Info($"鏈壘鍒版浠诲姟瀵瑰簲鐨勪綔涓�);
-                }
-                try
-                {
-                    Location result = null;
-                    //var TN_Task = WCSHelper.GetTask(no);
-                    //鍒ゆ柇褰撳墠瀹瑰櫒涓烘墭鐩樿繕鏄枡妗�-                    //鎵樼洏鍙兘鏀惧湪1-2灞�鏂欑3-9灞� 
-                    //鑾峰彇闆嗗悎
-                    var locklist = db.Queryable<Location>();
-
-                    
-                    if (TN_Task.S_CNTR_CODE.Substring(0, 2) == "TP")//鎵樼洏
-                    {
-                        var endlist = locklist
-                                   .Where(it => it.N_CURRENT_NUM < it.N_CAPACITY && it.N_LAYER < 3 && it.S_AREA_CODE == "HJQ")
-                                   .OrderBy(it => it.N_COL)
-                                   .PartitionBy(it => it.N_ROW)
-                                   .PartitionBy(it => it.N_LAYER)
-                                   .Take(1)
-                                   .ToList();
-                        foreach (var item in endlist)
-                        {
-                            LogHelper.Info($"閲嶉噺{decimal.Parse(extData)}");
-                            //澶т簬800kg
-                            if (decimal.Parse(extData) > 800)
-                            {
-                                LogHelper.Info($"楂樺害{decimal.Parse(Ext1)}");
-                                //楂樺害澶т簬1050mm 鍙斁鍦ㄧ涓�眰
-                                if (decimal.Parse(Ext1) <= 1050)
-                                {
-                                    var lockinfo = locklist.Where(it => it.N_LOCK_STATE != 0 && it.N_LOCK_STATE != 0 && it.N_ROW == item.N_ROW
-                                                    && it.N_LAYER == 1).First();
-                                    if (lockinfo == null)
-                                    {
-                                        result = item;
-                                        break;
-                                    }
-                                    else {
-                                        LogHelper.Info($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�);
-                                        throw new Exception($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�);
-                                    }
-                                }
-                                else
-                                {
-                                    LogHelper.Info($"楂樺害{decimal.Parse(Ext1)}杩囬珮 鑱旂郴浜哄伐澶勭悊");
-                                    throw new Exception($"楂樺害{decimal.Parse(Ext1)}杩囬珮 鑱旂郴浜哄伐澶勭悊");
-                                    
-                                }
-
-                            }
-                            else//涓嶈秴閲�鍗�涓嶈秴杩�00kg
-                            {
-                                //楂樺害<450mm 2-9灞�-                                if (decimal.Parse(Ext1) < 450)
-                                {
-                                    var lockinfo = locklist.Where(it => it.N_LOCK_STATE != 0 && it.N_ROW == item.N_ROW
-                                                    && it.N_LAYER == 2).First();
-                                    if (lockinfo == null)
-                                    {
-                                        result = item;
-
-                                        break;
-                                    }
-                                    else {
-                                        LogHelper.Info($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�);
-                                        throw new Exception($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�);
-                                    }
-                                }
-                                else if (decimal.Parse(Ext1) >= 450 && decimal.Parse(Ext1) < 1050)
-                                {
-                                    var lockinfo = locklist.Where(it => it.N_LOCK_STATE != 0 && it.N_ROW == item.N_ROW
-                                                   && it.N_LAYER >= 1 && it.N_LAYER <= 2).First();
-                                    if (lockinfo == null)
-                                    {
-                                        result = item;
-
-
-                                        db.Updateable<WMSTask>(TN_Task).UpdateColumns(a => new { a.S_END_LOC, a.S_END_AREA, a.S_END_WH }).ExecuteCommand();
-
-                                        break;
-                                    }
-                                    else
-                                    {
-                                        LogHelper.Info($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�);
-                                        throw new Exception($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�);
-                                    }
-                                }
-                                else
-                                {
-                                    LogHelper.Info($"鎵樼洏楂樺害{decimal.Parse(Ext1)}杩囬珮 鑱旂郴浜哄伐澶勭悊");
-                                    throw new Exception($"鎵樼洏楂樺害{decimal.Parse(Ext1)}杩囬珮 鑱旂郴浜哄伐澶勭悊");
-                                   
-                                }
-                            }
-                        }
-                    }
-                    else
-                    { //瀹瑰櫒涓烘枡绠�鍒欐斁鍒�-9灞�-
-                        var endlist = locklist
-                                   .Where(it => it.N_CURRENT_NUM < it.N_CAPACITY && it.N_LAYER >=3&&it.S_AREA_CODE== "HJQ")
-                                   .OrderBy(it => it.N_COL)
-                                   .PartitionBy(it => it.N_ROW)
-                                   .PartitionBy(it => it.N_LAYER)
-                                   .Take(1)
-                                   .ToList();
-                        foreach (var item in endlist)
-                        {
-                            LogHelper.Info($"閲嶉噺{decimal.Parse(extData)}");
-                            //澶т簬800kg
-                            if (decimal.Parse(extData) > 800)
-                            {
-                                LogHelper.Info($"鏂欑閲嶉噺瓒呰繃800kg");
-                                throw new Exception($"鏂欑閲嶉噺瓒呰繃800kg");
-                            }
-                            else
-                            {
-                                if (decimal.Parse(Ext1) < 1050)
-                                {
-                                    var lockinfo = locklist.Where(it => it.N_LOCK_STATE != 0 && it.N_LOCK_STATE != 0 && it.S_AREA_CODE == item.S_AREA_CODE && it.N_ROW == item.N_ROW
-                                                   && it.N_LAYER >= 3 && it.N_LAYER <= 9).First();
-                                    if (lockinfo == null)
-                                    {
-                                        result = item;
-                                        TN_Task.S_END_LOC = item.S_CODE;
-                                        db.Updateable<WMSTask>(TN_Task).UpdateColumns(a => new { a.S_END_LOC }).ExecuteCommand();
-
-                                        break;
-                                    }
-                                    else {
-                                        LogHelper.Info($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�);
-                                        throw new Exception($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�);
-                                    }
-                                }
-                                else
-                                {
-                                    LogHelper.Info($"鏂欑楂樺害 {decimal.Parse(Ext1)} 杩囬珮 鑱旂郴浜哄伐澶勭悊");
-                                    throw new Exception($"鏂欑楂樺害 {decimal.Parse(Ext1)} 杩囬珮 鑱旂郴浜哄伐澶勭悊");
-                                }
-                            }
-                        }
-                    }
-
-
-                    if (result==null)
-                    {
-                        LogHelper.Info($"灏忚溅鍥炶皟鏈壘鍒板彲鐢ㄥ簱浣�);
-                        throw new Exception($"灏忚溅鍥炶皟鏈壘鍒板彲鐢ㄥ簱浣�);
-                    }
-                    TN_Task.S_END_LOC = result.S_CODE;
-                    TN_Task.S_END_AREA = result.S_AREA_CODE;
-                    TN_Task.S_END_WH = result.S_WH_CODE;
-
-                    db.Updateable<WCSTask>(TN_Task).UpdateColumns(a => new { a.S_END_LOC, a.S_END_AREA, a.S_END_WH }).ExecuteCommand();
-                    WMStask.S_END_LOC = result.S_CODE;
-                    WMStask.S_END_AREA = result.S_AREA_CODE;
-                    WMStask.S_END_WH = result.S_WH_CODE;
-
-                    db.Updateable<WMSTask>(WMStask).UpdateColumns(a => new { a.S_END_LOC, a.S_END_AREA, a.S_END_WH }).ExecuteCommand();
-
-                    //璇锋眰鍗歌揣锛�-                    var dic = new Dictionary<string, string>();
-                    dic.Add("No", TN_Task.S_CODE);
-                    dic.Add("ParamNo", "2");
-                    dic.Add("Param1", TN_Task.S_END_LOC);
-               
-
-                    var res = NDC.ChangeOrder(dic);
-                    LogHelper.Info($"淇敼缁堢偣璐т綅"+ JsonConvert.SerializeObject(res));
-                    if (res.Res.ErrCode != -1)
-                    {
-                        var dics = new Dictionary<string, string>();
-                        dics.Add("No", TN_Task.S_CODE);
-                        dics.Add("ParamNo", "6");
-                        dics.Add("Param1", "2");
-                      var ss=  NDC.ChangeOrder(dics);
-                        LogHelper.Info($"灏忚溅鍓嶅線鏂板簱浣� + JsonConvert.SerializeObject(ss));
-                        LocationHelper.BindingLoc(TN_Task.S_END_LOC, TN_Task.S_CNTR_CODE.Split(',').ToList());
-                    }
-                    db.CommitTran();
-                }
-                catch (Exception)
-                {
-                    db.RollbackTran();
-                    throw;
-                }
-
-             
             }
-            if (state == 1103)
+            else if (state == 2000)//淇″彿
+            {
+                var db = new SqlHelper<object>().GetInstance();
+                TN_Task.S_EQ_TASK_CODE = extData;//楂樺害
+                db.Updateable<WCSTask>(TN_Task).UpdateColumns(a => new { a.S_EQ_TASK_CODE }).ExecuteCommand();
+                db.CommitTran();
+                if (!string.IsNullOrEmpty(TN_Task.S_STATE_PRE) && !string.IsNullOrEmpty(TN_Task.S_EQ_TASK_CODE))
+                {
+                    weight(TN_Task);
+                }
+
+
+
+            }
+            else if (state == 2001)//淇″彿
+            {
+                var db = new SqlHelper<object>().GetInstance();
+                TN_Task.S_STATE_PRE = extData;//楂樺害
+                db.Updateable<WCSTask>(TN_Task).UpdateColumns(a => new { a.S_STATE_PRE }).ExecuteCommand();
+                db.CommitTran();
+                if (!string.IsNullOrEmpty(TN_Task.S_STATE_PRE) && !string.IsNullOrEmpty(TN_Task.S_EQ_TASK_CODE))
+                {
+                    weight(TN_Task);
+                }
+
+            }
+            
+                if (state == 1103)
             {
                 //澶ч搧妗嗗弶璧颁互鍚庨�鐭ワ紝鎴戜滑瑕侀�鐭ヨ緭閫佺嚎
             }
         }
+
+
+
+        internal static void weight(WCSTask TN_Task)
+        {
+           
+       
+                if (!string.IsNullOrEmpty(TN_Task.S_STATE_PRE) && !string.IsNullOrEmpty(TN_Task.S_EQ_TASK_CODE))
+                {
+                string extData = TN_Task.S_STATE_PRE;
+                string Ext1 = TN_Task.S_EQ_TASK_CODE;
+                    LogHelper.Info($"绉伴噸鍒嗛厤鍏ュ簱缁堢偣璐т綅楂樺害閲嶉噺{extData}锛岄珮搴Ext1},瀹瑰櫒{TN_Task.S_CNTR_CODE}");
+                    var db = new SqlHelper<object>().GetInstance();
+                    var WMStask = db.Queryable<WMSTask>().Where(s => s.S_CODE == TN_Task.S_OP_CODE).First();
+                    if (WMStask == null)
+                    {
+                        LogHelper.Info($"鏈壘鍒版浠诲姟瀵瑰簲鐨勪綔涓�);
+                    }
+                    try
+                    {
+                        Location result = null;
+                        //var TN_Task = WCSHelper.GetTask(no);
+                        //鍒ゆ柇褰撳墠瀹瑰櫒涓烘墭鐩樿繕鏄枡妗�+                        //鎵樼洏鍙兘鏀惧湪1-2灞�鏂欑3-9灞�+
+                        //鑾峰彇闆嗗悎
+                        var locklist = db.Queryable<Location>();
+
+
+                        if (TN_Task.S_CNTR_CODE.Substring(0, 2) == "TP")//鎵樼洏
+                        {
+                            var endlist = locklist
+                                       .Where(it => it.N_CURRENT_NUM < it.N_CAPACITY && it.N_LAYER < 3 && it.N_LOCK_STATE ==0 && it.S_AREA_CODE == "HJQ")
+                                       .OrderBy(it => it.N_COL)
+                                       .PartitionBy(it => it.N_ROW)
+                                       .PartitionBy(it => it.N_LAYER)
+                                       .Take(1)
+                                       .ToList();
+                            foreach (var item in endlist)
+                            {
+                                LogHelper.Info($"閲嶉噺{decimal.Parse(extData)}");
+                                //澶т簬800kg
+                                if (decimal.Parse(extData) > 1)
+                                {
+                                    LogHelper.Info($"楂樺害{Ext1}");
+                                    //楂樺害澶т簬1050mm 鍙斁鍦ㄧ涓�眰
+                                    if (decimal.Parse(Ext1) <=3)
+                                    {
+                                        var lockinfo = locklist.Where(it => it.N_LOCK_STATE != 0 && it.N_LOCK_STATE != 0 && it.N_ROW == item.N_ROW
+                                                        && it.N_LAYER == 1).First();
+                                        if (lockinfo == null)
+                                        {
+                                            result = item;
+                                            break;
+                                        }
+                                        else
+                                        {
+                                            LogHelper.Info($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�);
+                                            //throw new Exception($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�);
+                                        }
+                                    }
+                                    else
+                                    {
+                                        LogHelper.Info($"楂樺害{decimal.Parse(Ext1)}杩囬珮 鑱旂郴浜哄伐澶勭悊");
+                                        throw new Exception($"楂樺害{decimal.Parse(Ext1)}杩囬珮 鑱旂郴浜哄伐澶勭悊");
+
+                                    }
+
+                                }
+                                else//涓嶈秴閲�鍗�涓嶈秴杩�00kg
+                                {
+                                    //楂樺害<450mm 2-9灞�+                                    if (decimal.Parse(Ext1) < 2)
+                                {
+                                    LogHelper.Info($"楂樺害<450mm 2-9灞�);
+                                    var lockinfo = locklist.Where(it => it.N_LOCK_STATE != 0 && it.N_ROW == item.N_ROW
+                                                        && it.N_LAYER == 2).First();
+                                        if (lockinfo == null)
+                                        {
+                                            result = item;
+
+                                            break;
+                                        }
+                                        else
+                                        {
+                                            LogHelper.Info($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�);
+                                            //throw new Exception($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�);
+                                        }
+                                    }
+                                    else if (decimal.Parse(Ext1) >= 2 && decimal.Parse(Ext1) < 4)
+                                    {
+                                        var lockinfo = locklist.Where(it => it.N_LOCK_STATE != 0 && it.N_ROW == item.N_ROW
+                                                       && it.N_LAYER >= 1 && it.N_LAYER <= 2).First();
+                                        if (lockinfo == null)
+                                        {
+                                            result = item;
+
+
+                                            db.Updateable<WMSTask>(TN_Task).UpdateColumns(a => new { a.S_END_LOC, a.S_END_AREA, a.S_END_WH }).ExecuteCommand();
+
+                                            break;
+                                        }
+                                        else
+                                        {
+                                            LogHelper.Info($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�);
+                                            //throw new Exception($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�);
+                                        }
+                                    }
+                                    else
+                                    {
+                                        LogHelper.Info($"鎵樼洏楂樺害{decimal.Parse(Ext1)}杩囬珮 鑱旂郴浜哄伐澶勭悊");
+                                        throw new Exception($"鎵樼洏楂樺害{decimal.Parse(Ext1)}杩囬珮 鑱旂郴浜哄伐澶勭悊");
+
+                                    }
+                                }
+                            }
+                        }
+                        else
+                        { //瀹瑰櫒涓烘枡绠�鍒欐斁鍒�-9灞�+
+                            var endlist = locklist
+                                       .Where(it => it.N_CURRENT_NUM < it.N_CAPACITY && it.N_LAYER >= 3 && it.N_LOCK_STATE == 0 && it.S_AREA_CODE == "HJQ")
+                                       .OrderBy(it => it.N_COL)
+                                       .PartitionBy(it => it.N_ROW)
+                                       .PartitionBy(it => it.N_LAYER)
+                                       .Take(1)
+                                       .ToList();
+                            foreach (var item in endlist)
+                            {
+                                LogHelper.Info($"閲嶉噺{decimal.Parse(extData)}");
+                                //澶т簬800kg
+                                if (decimal.Parse(extData) > 1)
+                                {
+                                    LogHelper.Info($"鏂欑閲嶉噺瓒呰繃800kg");
+                                    throw new Exception($"鏂欑閲嶉噺瓒呰繃800kg");
+                                }
+                                else
+                                {
+                                    if (decimal.Parse(Ext1) < 4)
+                                    {
+                                        var lockinfo = locklist.Where(it => it.N_LOCK_STATE != 0 && it.N_LOCK_STATE != 0 && it.S_AREA_CODE == item.S_AREA_CODE && it.N_ROW == item.N_ROW
+                                                       && it.N_LAYER >= 3 && it.N_LAYER <= 9).First();
+                                        if (lockinfo == null)
+                                        {
+                                            result = item;
+                                            TN_Task.S_END_LOC = item.S_CODE;
+                                            db.Updateable<WMSTask>(TN_Task).UpdateColumns(a => new { a.S_END_LOC }).ExecuteCommand();
+
+                                            break;
+                                        }
+                                        else
+                                        {
+                                            LogHelper.Info($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�);
+                                            throw new Exception($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�);
+                                        }
+                                    }
+                                    else
+                                    {
+                                        LogHelper.Info($"鏂欑楂樺害 {decimal.Parse(Ext1)} 杩囬珮 鑱旂郴浜哄伐澶勭悊");
+                                        throw new Exception($"鏂欑楂樺害 {decimal.Parse(Ext1)} 杩囬珮 鑱旂郴浜哄伐澶勭悊");
+                                    }
+                                }
+                            }
+                        }
+
+
+                        if (result == null)
+                        {
+                            LogHelper.Info($"灏忚溅鍥炶皟鏈壘鍒板彲鐢ㄥ簱浣�);
+                            throw new Exception($"灏忚溅鍥炶皟鏈壘鍒板彲鐢ㄥ簱浣�);
+                        }
+                        TN_Task.S_END_LOC = result.S_CODE;
+                        TN_Task.S_END_AREA = result.S_AREA_CODE;
+                        TN_Task.S_END_WH = result.S_WH_CODE;
+
+                        db.Updateable<WCSTask>(TN_Task).UpdateColumns(a => new { a.S_END_LOC, a.S_END_AREA, a.S_END_WH }).ExecuteCommand();
+                        WMStask.S_END_LOC = result.S_CODE;
+                        WMStask.S_END_AREA = result.S_AREA_CODE;
+                        WMStask.S_END_WH = result.S_WH_CODE;
+
+                        db.Updateable<WMSTask>(WMStask).UpdateColumns(a => new { a.S_END_LOC, a.S_END_AREA, a.S_END_WH }).ExecuteCommand();
+                    var S_AGV_SITE = "";
+                    if (TN_Task.N_ERR==1)//鍓嶇Щ杞�+                    {
+                        //鍓嶇Щ杞�+                         S_AGV_SITE = LocationHelper.GetAgvSite(TN_Task.S_END_LOC);
+                    }
+                    else //鍫嗗灈杞�+                    {
+
+                        //鍫嗗灈杞�+                         S_AGV_SITE = db.Queryable<TN_Location_Ext>().Where(a => a.S_LOC_CODE == TN_Task.S_END_LOC).First()?.S_AGV_SITE;
+                    }
+                        var dic = new Dictionary<string, string>();
+                        dic.Add("No", TN_Task.S_CODE);
+                        dic.Add("ParamNo", "3");
+                        dic.Add("Param1", S_AGV_SITE);
+                    //dic.Add("Pri", TN_Task.N_PRIORITY.ToString());
+                    //dic.Add("No", TN_Task.S_CODE.Trim());
+                    //dic.Add("From", TN_Task.S_START_LOC);
+                    //dic.Add("To", TN_Task.S_END_LOC);
+                    //dic.Add("Func", "0");
+                    //dic.Add("Data", "512");
+                    //dic.Add("FRow", "0");
+
+                    var res = NDC.ChangeOrder(dic);
+                        LogHelper.Info($"淇敼缁堢偣璐т綅" + JsonConvert.SerializeObject(res));
+                        if (res.Res.ErrCode != -1)
+                        {
+                            var dics = new Dictionary<string, string>();
+                            dics.Add("No", TN_Task.S_CODE);
+                            dics.Add("ParamNo", "6");
+                            dics.Add("Param1", "2");
+                            var ss = NDC.ChangeOrder(dics);
+                            LogHelper.Info($"灏忚溅鍓嶅線鏂板簱浣� + JsonConvert.SerializeObject(ss));
+                            LocationHelper.BindingLoc(TN_Task.S_END_LOC, TN_Task.S_CNTR_CODE.Split(',').ToList());
+                            LocationHelper.LockLoc(TN_Task.S_END_LOC,1);
+                        }
+                        db.CommitTran();
+                    }
+                    catch (Exception)
+                    {
+                        db.RollbackTran();
+                        throw;
+                    }
+                }
+
+        }
+
 
         internal static void UpdateAgvNo(WCSTask mst, string forkliftNo)
         {
@@ -555,7 +617,7 @@
                             dic1.Add("Func", "0");
                             if (mst.S_TYPE.Contains("鍏ュ簱"))
                             {
-                                dic1.Add("Data", "0x200");
+                                dic1.Add("Data", "512");
                             }
                             else
                             {
diff --git a/wms/LocationHelper.cs b/wms/LocationHelper.cs
index 2310a2a..bbe4a15 100644
--- a/wms/LocationHelper.cs
+++ b/wms/LocationHelper.cs
@@ -285,7 +285,8 @@
             var res = false;
             var db = new SqlHelper<object>().GetInstance();
             var model = db.Queryable<Location>().Where(a => a.S_CODE == loc).First();
-            if (model != null && model.S_LOCK_STATE.Trim() == "鏃�)
+           // if (model != null && model.S_LOCK_STATE.Trim() == "鏃�)
+            if (model != null && model.N_LOCK_STATE==0)
             {
                 model.N_LOCK_STATE = lockState;
                 model.S_LOCK_STATE = Location.GetLockStateStr(lockState);
diff --git a/wms/WMSHelper.cs b/wms/WMSHelper.cs
index 8702291..ff45bca 100644
--- a/wms/WMSHelper.cs
+++ b/wms/WMSHelper.cs
@@ -918,7 +918,17 @@
             WMSHelper.UpdateTaskState(wmsTask);
             WCSHelper.UpdateStorStatus(task.S_CNTR_CODE, 4);
         }
+        internal static void Fail(WCSTask task)
+        {
+            var db = new SqlHelper<object>().GetInstance();
+            var wmsTask = db.Queryable<WMSTask>().Where(a => a.S_CODE == task.S_OP_CODE).First();
 
+            //淇敼浣滀笟鐘舵� 閲嶆柊鍚姩
+            wmsTask.N_B_STATE = 5;
+            wmsTask.S_B_STATE = "鍙栨秷";
+            WMSHelper.UpdateTaskState(wmsTask);
+           //WCSHelper.UpdateStorStatus(task.S_CNTR_CODE, 4);
+        }
         internal static void EndTn(string S_CNTR_CODE)
         {
             var db = new SqlHelper<object>().GetInstance();

--
Gitblit v1.9.1