From 663ffc09a8fc33eb7d2346e6ed10c08679f0006c Mon Sep 17 00:00:00 2001
From: lss <Lss@HanInfo>
Date: 星期一, 16 六月 2025 17:25:10 +0800
Subject: [PATCH] 新增任务推送限制

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs |  971 ++++++++++++++++++++++++++++++---------------------------
 1 files changed, 510 insertions(+), 461 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs
index b36f7c1..5bb4768 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs
@@ -12,6 +12,7 @@
 using System.Collections.Generic;
 using System.Linq;
 using System.Reflection.Emit;
+using System.Runtime.CompilerServices;
 using System.ServiceModel;
 using System.Threading;
 using System.Threading.Tasks;
@@ -35,12 +36,14 @@
 
         #region 浣抽�鍚堣偉鎺ュ彛涓氬姟
 
-       
+
+        public static object _lockCreateTask = new object();
         /// <summary>
         /// 绔嬪簱浠诲姟涓嬪彂=銆嬪垱寤轰换鍔�         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
+
         internal static Result Createtask(CreateTask model)
         {
             Result result = new Result() { code = "0", msg = "鍒涘缓鎴愬姛" };
@@ -117,267 +120,106 @@
 
                 Location endloc = new Location();
                 Location startloc = new Location();
-
-                if (taskData.taskType == 1) //鍑哄簱娴佺▼锛岄�杩囩墿鏂欐満鍙拌绠楃嚎杈硅揣浣�+                lock (_lockCreateTask)
                 {
-                    note = "鍑哄簱";
-                    startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First();
-                    if (startloc != null)
+                    if (taskData.taskType == 1) //鍑哄簱娴佺▼锛岄�杩囩墿鏂欐満鍙拌绠楃嚎杈硅揣浣�                     {
-                        //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅
-                        Start = taskData.pickStation;
-                        if (CreateCntrIteminfo(partData, taskData))
+                        note = "鍑哄簱";
+                        startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First();
+                        if (startloc != null)
                         {
-                            endloc = Computeloc(CntrCode, taskData.dropStation, taskData.carrierType);
-                            if (endloc != null)
+                            //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅
+                            Start = taskData.pickStation;
+                            if (CreateCntrIteminfo(partData, taskData))
                             {
-                                End = endloc.S_CODE;
+                                endloc = Computeloc(CntrCode, taskData.dropStation, taskData.carrierType);
+                                if (endloc != null)
+                                {
+                                    End = endloc.S_CODE;
+                                }
+                                else
+                                {
+                                    result.code = "1";
+                                    result.msg = $"鏈哄彴缂栫爜:{taskData.dropStation}锛屾湭鎵惧埌鍙敤璐т綅";
+                                    AddErrorInfo("瀵绘壘鍑哄簱璐т綅澶辫触", result.msg, Source);
+                                    return result;
+                                }
                             }
                             else
                             {
                                 result.code = "1";
-                                result.msg = $"鏈哄彴缂栫爜:{taskData.dropStation}锛屾湭鎵惧埌鍙敤璐т綅";
-                                AddErrorInfo("瀵绘壘鍑哄簱璐т綅澶辫触", result.msg, Source);
+                                result.msg = "鍒涘缓鎵樼洏鐗╂枡淇℃伅澶辫触";
+                                AddErrorInfo("鍒涘缓鎵樼洏澶辫触", result.msg, Source);
                                 return result;
                             }
                         }
                         else
                         {
+
                             result.code = "1";
-                            result.msg = "鍒涘缓鎵樼洏鐗╂枡淇℃伅澶辫触";
-                            AddErrorInfo("鍒涘缓鎵樼洏澶辫触", result.msg, Source);
-                            return result;
-                        }
-                    }
-                    else
-                    {
-
-                        result.code = "1";
-                        result.msg = $"Putin==> 浠诲姟璧风偣:{taskData.pickStation}鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
-                        LogHelper.Info($"Putin==> {result.msg}");
-                        AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
-                    }
-                }
-                else if (taskData.taskType == 2)//鍏ュ簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛岃捣鐐归渶瑕佹湁鎵樼洏
-                {
-                    note = "鍏ュ簱";
-                    startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First();
-                    if (startloc != null)
-                    {
-                        Start = startloc.S_CODE;
-                        var CntrRel = LocationHelper.GetLocCntrRel(startloc.S_CODE).FirstOrDefault();
-                        if (CntrRel != null)
-                        {
-                            CntrCode = CntrRel.S_CNTR_CODE;
-                        }
-                        //else
-                        //{
-                        //    result.code = "1";
-                        //    result.msg = $"鏍规嵁璧风偣{Start},鏈壘鍒版墭鐩樿揣浣嶇粦瀹氬叧绯�;
-                        //    AddErrorInfo("鎵樼洏鏌ユ壘澶辫触", result.msg, Source);
-                        //    return result;
-                        //}
-
-                    }
-                    else
-                    {
-                        result.code = "1";
-                        result.msg = $"鏍规嵁璧风偣{taskData.pickStation},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
-                        AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
-                        return result;
-                    }
-
-                    endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.dropStation).First();
-                    if (endloc != null)
-                    {
-                        End = taskData.dropStation;
-                    }
-                    else
-                    {
-                        result.code = "1";
-                        result.msg = $"鏍规嵁缁堢偣{End},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
-                        AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
-                        return result;
-                    }
-                }
-                else if (taskData.taskType == 3)//绉诲簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛�-                {
-                    note = "鍑哄簱";
-                    //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅
-                    startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First();
-                    if (startloc != null)
-                    {
-                        Start = taskData.pickStation;
-                    }
-                    else
-                    {
-                        result.code = "1";
-                        result.msg = $"鏍规嵁璧风偣{taskData.pickStation},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
-                        AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
-                        return result;
-                    }
-                    endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.dropStation).First();
-                    if (endloc != null)
-                    {
-                        End = taskData.dropStation;
-                    }
-                    else
-                    {
-                        result.code = "1";
-                        result.msg = $"鏍规嵁缁堢偣{taskData.dropStation},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
-                        AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
-                        return result;
-                    }
-                }
-                else if (taskData.taskType == 4)//鍘熸潗鏂欏簱闇�鍒ゆ柇鏄惁闇�鍒嗛厤鐢垫浠诲姟,鍒涘缓鍒嗘。浠诲姟
-                {
-                    startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First();
-                    if (startloc != null)
-                    {
-                        Start = taskData.pickStation;
-                    }
-                    endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.dropStation).First();
-                    if (endloc != null)
-                    {
-                        End = taskData.dropStation;
-                    }
-
-                    //鍒ゆ柇妤煎眰鏄惁鐩哥瓑锛屽鏋滀笉鐩稿悓闇�鐢熸垚鍒嗘浠诲姟杩涜鐢垫璋冪敤
-                    if (!string.IsNullOrEmpty(Start) && !string.IsNullOrEmpty(End))
-                    {
-                        var startArea = db.Queryable<Area>().Where(a => a.S_CODE.Trim() == startloc.S_AREA_CODE).First();
-                        var endArea = db.Queryable<Area>().Where(a => a.S_CODE.Trim() == endloc.S_AREA_CODE).First();
-                        if (startArea == null || endArea == null)
-                        {
-                            result.code = "1";
-                            result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐�{startloc.S_AREA_CODE},缁堢偣锛歿endloc.S_AREA_CODE}鏈壘鍒板搴斿簱鍖�;
+                            result.msg = $"Putin==> 浠诲姟璧风偣:{taskData.pickStation}鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
+                            LogHelper.Info($"Putin==> {result.msg}");
                             AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
                             return result;
                         }
-                        if (startArea.N_FLOOR == endArea.N_FLOOR)
+                    }
+                    else if (taskData.taskType == 2)//鍏ュ簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛岃捣鐐归渶瑕佹湁鎵樼洏
+                    {
+                        note = "鍏ュ簱";
+                        startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First();
+                        if (startloc != null)
                         {
-                            //鍒涘缓wcs浠诲姟
-                            var wcsTask = new WCSTask
+                            Start = startloc.S_CODE;
+                            var CntrRel = LocationHelper.GetLocCntrRel(startloc.S_CODE).FirstOrDefault();
+                            if (CntrRel != null)
                             {
-                                S_CODE = WCSHelper.GenerateTaskNo(),
-                                S_TYPE = startArea.S_NAME + "->" + endArea.S_NAME,
-                                S_EQ_NO = taskData.taskNum,
-                                S_START_LOC = Start,
-                                S_END_LOC = End,
-                                N_CNTR_COUNT = 1,
-                                S_START_WH = startloc.S_WH_CODE,
-                                S_START_AREA = startloc.S_AREA_CODE,
-                                S_END_WH = endloc.S_WH_CODE,
-                                S_END_AREA = endloc.S_AREA_CODE,
-                                N_SCHEDULE_TYPE = 1,
-                                S_CNTR_CODE = CntrCode,
-                                N_PRIORITY = taskData.priority,
-                                N_START_LAYER = 1,
-                                N_END_LAYER = 1,
-                                S_WMS_NO = taskData.wmsTaskNo,
-                                Z_TYPE = n_type,
-
-
-                            };
-                            LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask");
-                            if (WCSHelper.CreateTask(wcsTask))
-                            {
-                                //   LocationHelper.LockLoc(End, 2);
-
-                                LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
-                            }
-                            else
-                            {
-                                result.code = "1";
-                                result.msg = $"浠诲姟鍒涘缓澶辫触";
-                                AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
-                                return result;
-                            }
-                        }
-                        else if (startArea.N_FLOOR != endArea.N_FLOOR)
-                        {
-                            //妤煎眰鐢垫鍒嗛厤
-                            var elevatorLoc = LocationHelper.GetElevatorLoc();
-
-                            if (elevatorLoc != null)
-                            {  //鍒涘缓wcs鍒嗘浠诲姟
-                                var wcsTask = new WCSTask
+                                if (CntrRel.S_CNTR_CODE!= partData.rfid)
                                 {
-                                    S_CODE = WCSHelper.GenerateTaskNo(),
-                                    S_TYPE = "鐢垫1",
-                                    S_EQ_NO = taskData.taskNum,
-                                    S_START_LOC = Start,
-                                    S_END_LOC = elevatorLoc.S_CODE,
-                                    N_CNTR_COUNT = 1,
-                                    S_START_WH = startloc.S_WH_CODE,
-                                    S_START_AREA = startloc.S_AREA_CODE,
-                                    S_END_WH = elevatorLoc.S_WH_CODE,
-                                    S_END_AREA = elevatorLoc.S_AREA_CODE,
-                                    N_SCHEDULE_TYPE = 1,
-                                    S_CNTR_CODE = CntrCode,
-                                    N_PRIORITY = taskData.priority,
-                                    N_START_LAYER = 1,
-                                    N_END_LAYER = 1,
-                                    S_WMS_NO = taskData.wmsTaskNo,
-                                    Z_TYPE = n_type,
-                                    S_MES_NO = taskData.mesTaskNo
-                                };
-                                var wcsTask1 = new WCSTask
-                                {
-                                    S_CODE = WCSHelper.GenerateTaskNo(),
-                                    S_TYPE = "鐢垫2",
-                                    S_EQ_NO = taskData.taskNum,
-                                    S_START_LOC = elevatorLoc.S_CODE,
-                                    S_END_LOC = End,
-                                    N_CNTR_COUNT = 1,
-                                    S_START_WH = elevatorLoc.S_WH_CODE,
-                                    S_START_AREA = elevatorLoc.S_AREA_CODE,
-                                    S_END_WH = endloc.S_WH_CODE,
-                                    S_END_AREA = endloc.S_AREA_CODE,
-                                    N_SCHEDULE_TYPE = 1,
-                                    S_CNTR_CODE = CntrCode,
-                                    N_PRIORITY = taskData.priority,
-                                    S_WMS_NO = taskData.wmsTaskNo,
-                                    N_START_LAYER = 1,
-                                    N_END_LAYER = 1,
-                                    Z_TYPE = n_type,
-                                    S_MES_NO = taskData.mesTaskNo
-
-                                };
-                                LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask");
-                                if (WCSHelper.CreateTask(wcsTask) && WCSHelper.CreateTask(wcsTask1))
-                                {
-
-                                    // LocationHelper.LockLoc(Start, 1);
-                                    //LocationHelper.LockLoc(End, 2);
-                                    LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
+                                    result.code = "1";
+                                    result.msg = $"鏍规嵁璧风偣锛歿Start}鑾峰彇鎵樼洏:{CntrRel.S_CNTR_CODE}涓庝笅鍙戞墭鐩橈細{partData.rfid}涓嶄竴鑷达紝璇锋鏌ユ墭鐩樼爜鏄惁姝g‘";
+                                    AddErrorInfo("鎵樼洏鐮佹牎妫�け璐�, result.msg, Source);
+                                    return result;
                                 }
                                 else
                                 {
-                                    result.code = "1";
-                                    result.msg = $"浠诲姟鍒涘缓澶辫触";
-                                    AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
-                                    return result;
+                                    CntrCode = CntrRel.S_CNTR_CODE;
                                 }
+                                   
                             }
-
-
+                            //else
+                            //{
+                            //    result.code = "1";
+                            //    result.msg = $"鏍规嵁璧风偣{Start},鏈壘鍒版墭鐩樿揣浣嶇粦瀹氬叧绯�;
+                            //    AddErrorInfo("鎵樼洏鏌ユ壘澶辫触", result.msg, Source);
+                            //    return result;
+                            //}
 
                         }
+                        else
+                        {
+                            result.code = "1";
+                            result.msg = $"鏍规嵁璧风偣{taskData.pickStation},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
+                            AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
+                            return result;
+                        }
+
+                        endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.dropStation).First();
+                        if (endloc != null)
+                        {
+                            End = taskData.dropStation;
+                        }
+                        else
+                        {
+                            result.code = "1";
+                            result.msg = $"鏍规嵁缁堢偣{End},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
+                            AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
+                            return result;
+                        }
                     }
-                    else
+                    else if (taskData.taskType == 3)//绉诲簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛�                     {
-                        result.code = "1";
-                        result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
-                        return result;
-                    }
-                }
-                else if (taskData.taskType == 5)//绉诲簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛屽苟缁戝畾鎵樼洏
-                {
-                    note = "鍑哄簱";
-                    //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅
-                    if (CreateCntrIteminfo(partData, taskData))
-                    {
+                        note = "鍑哄簱";
+                        //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅
                         startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First();
                         if (startloc != null)
                         {
@@ -403,197 +245,373 @@
                             return result;
                         }
                     }
-                    else
-                    {
-                        result.code = "1";
-                        result.msg = "鍒涘缓鎵樼洏鐗╂枡淇℃伅澶辫触";
-                        AddErrorInfo("鍒涘缓鎵樼洏澶辫触", result.msg, Source);
-                        return result;
-                    }
-
-                }
-                //鏆傚瓨浣嶅洖搴�-                else if (taskData.taskType == 6)//鍏ュ簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟
-                {
-                    note = "鍏ュ簱";
-                    //鏍规嵁鎵樼洏鍙锋壘璐т綅
-                    var CntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE == partData.rfid).First();
-                    if (CntrRel != null)
-                    {
-                        startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == CntrRel.S_LOC_CODE).First();
-                        if (startloc != null)
-                        {
-                            Start = startloc.S_CODE;
-                            CntrCode = CntrRel.S_CNTR_CODE;
-                        }
-                        else
-                        {
-                            result.code = "1";
-                            result.msg = $"鏍规嵁鎵樼洏{partData.rfid},鏈壘鍒版墭鐩樿揣浣嶇粦瀹氬叧绯�;
-                            AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
-                            return result;
-                        }
-                    }
-                    endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.dropStation).First();
-                    if (endloc != null)
-                    {
-                        End = taskData.dropStation;
-                    }
-                    else
-                    {
-                        result.code = "1";
-                        result.msg = $"鏍规嵁缁堢偣{End},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
-                        AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
-                        return result;
-                    }
-                }
-                //鐐瑰搴撳尯
-                else if (taskData.taskType == 7)//寮傚父浣�-                {
-                    note = "寮傚父搴撳尯鍏ュ簱";
-                    //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅
-                    if (CreateCntrIteminfo(partData, taskData))
+                    else if (taskData.taskType == 4)//鍘熸潗鏂欏簱闇�鍒ゆ柇鏄惁闇�鍒嗛厤鐢垫浠诲姟,鍒涘缓鍒嗘。浠诲姟
                     {
                         startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First();
                         if (startloc != null)
                         {
                             Start = taskData.pickStation;
                         }
-                        var EndLocs = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == taskData.dropStation).ToList();
-                        if (EndLocs.Count > 0)
+                        endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.dropStation).First();
+                        if (endloc != null)
                         {
-                            endloc = EndLocs.Find(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0);
-                            if (endloc != null)
+                            End = taskData.dropStation;
+                        }
+
+                        //鍒ゆ柇妤煎眰鏄惁鐩哥瓑锛屽鏋滀笉鐩稿悓闇�鐢熸垚鍒嗘浠诲姟杩涜鐢垫璋冪敤
+                        if (!string.IsNullOrEmpty(Start) && !string.IsNullOrEmpty(End))
+                        {
+                            var startArea = db.Queryable<Area>().Where(a => a.S_CODE.Trim() == startloc.S_AREA_CODE).First();
+                            var endArea = db.Queryable<Area>().Where(a => a.S_CODE.Trim() == endloc.S_AREA_CODE).First();
+                            if (startArea == null || endArea == null)
                             {
-                                End = endloc.S_CODE;
+                                result.code = "1";
+                                result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐�{startloc.S_AREA_CODE},缁堢偣锛歿endloc.S_AREA_CODE}鏈壘鍒板搴斿簱鍖�;
+                                AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
+                                return result;
+                            }
+                            if (startArea.N_FLOOR == endArea.N_FLOOR)
+                            {
+                                //鍒涘缓wcs浠诲姟
+                                var wcsTask = new WCSTask
+                                {
+                                    S_CODE = WCSHelper.GenerateTaskNo(),
+                                    S_TYPE = startArea.S_NAME + "->" + endArea.S_NAME,
+                                    S_EQ_NO = taskData.taskNum,
+                                    S_START_LOC = Start,
+                                    S_END_LOC = End,
+                                    N_CNTR_COUNT = 1,
+                                    S_START_WH = startloc.S_WH_CODE,
+                                    S_START_AREA = startloc.S_AREA_CODE,
+                                    S_END_WH = endloc.S_WH_CODE,
+                                    S_END_AREA = endloc.S_AREA_CODE,
+                                    N_SCHEDULE_TYPE = 1,
+                                    S_CNTR_CODE = CntrCode,
+                                    N_PRIORITY = taskData.priority,
+                                    N_START_LAYER = 1,
+                                    N_END_LAYER = 1,
+                                    S_WMS_NO = taskData.wmsTaskNo,
+                                    Z_TYPE = n_type,
+
+
+                                };
+                                LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask");
+                                if (WCSHelper.CreateTask(wcsTask))
+                                {
+                                    //   LocationHelper.LockLoc(End, 2);
+
+                                    LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
+                                }
+                                else
+                                {
+                                    result.code = "1";
+                                    result.msg = $"浠诲姟鍒涘缓澶辫触";
+                                    AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
+                                    return result;
+                                }
+                            }
+                            else if (startArea.N_FLOOR != endArea.N_FLOOR)
+                            {
+                                //妤煎眰鐢垫鍒嗛厤
+                                var elevatorLoc = LocationHelper.GetElevatorLoc();
+
+                                if (elevatorLoc != null)
+                                {  //鍒涘缓wcs鍒嗘浠诲姟
+                                    var wcsTask = new WCSTask
+                                    {
+                                        S_CODE = WCSHelper.GenerateTaskNo(),
+                                        S_TYPE = "鐢垫1",
+                                        S_EQ_NO = taskData.taskNum,
+                                        S_START_LOC = Start,
+                                        S_END_LOC = elevatorLoc.S_CODE,
+                                        N_CNTR_COUNT = 1,
+                                        S_START_WH = startloc.S_WH_CODE,
+                                        S_START_AREA = startloc.S_AREA_CODE,
+                                        S_END_WH = elevatorLoc.S_WH_CODE,
+                                        S_END_AREA = elevatorLoc.S_AREA_CODE,
+                                        N_SCHEDULE_TYPE = 1,
+                                        S_CNTR_CODE = CntrCode,
+                                        N_PRIORITY = taskData.priority,
+                                        N_START_LAYER = 1,
+                                        N_END_LAYER = 1,
+                                        S_WMS_NO = taskData.wmsTaskNo,
+                                        Z_TYPE = n_type,
+                                        S_MES_NO = taskData.mesTaskNo
+                                    };
+                                    var wcsTask1 = new WCSTask
+                                    {
+                                        S_CODE = WCSHelper.GenerateTaskNo(),
+                                        S_TYPE = "鐢垫2",
+                                        S_EQ_NO = taskData.taskNum,
+                                        S_START_LOC = elevatorLoc.S_CODE,
+                                        S_END_LOC = End,
+                                        N_CNTR_COUNT = 1,
+                                        S_START_WH = elevatorLoc.S_WH_CODE,
+                                        S_START_AREA = elevatorLoc.S_AREA_CODE,
+                                        S_END_WH = endloc.S_WH_CODE,
+                                        S_END_AREA = endloc.S_AREA_CODE,
+                                        N_SCHEDULE_TYPE = 1,
+                                        S_CNTR_CODE = CntrCode,
+                                        N_PRIORITY = taskData.priority,
+                                        S_WMS_NO = taskData.wmsTaskNo,
+                                        N_START_LAYER = 1,
+                                        N_END_LAYER = 1,
+                                        Z_TYPE = n_type,
+                                        S_MES_NO = taskData.mesTaskNo
+
+                                    };
+                                    LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask");
+                                    if (WCSHelper.CreateTask(wcsTask) && WCSHelper.CreateTask(wcsTask1))
+                                    {
+
+                                        // LocationHelper.LockLoc(Start, 1);
+                                        //LocationHelper.LockLoc(End, 2);
+                                        LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
+                                    }
+                                    else
+                                    {
+                                        result.code = "1";
+                                        result.msg = $"浠诲姟鍒涘缓澶辫触";
+                                        AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
+                                        return result;
+                                    }
+                                }
+
+
+
+                            }
+                        }
+                        else
+                        {
+                            result.code = "1";
+                            result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
+                            return result;
+                        }
+                    }
+                    else if (taskData.taskType == 5)//绉诲簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛屽苟缁戝畾鎵樼洏
+                    {
+                        note = "鍑哄簱";
+                        //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅
+                        if (CreateCntrIteminfo(partData, taskData))
+                        {
+                            startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First();
+                            if (startloc != null)
+                            {
+                                Start = taskData.pickStation;
                             }
                             else
                             {
                                 result.code = "1";
-                                result.msg = $"缁堢偣搴撳尯锛歿taskData.dropStation}鏃犲彲鐢ㄨ揣浣�;
+                                result.msg = $"鏍规嵁璧风偣{taskData.pickStation},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
+                                AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
+                                return result;
+                            }
+                            endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.dropStation).First();
+                            if (endloc != null)
+                            {
+                                End = taskData.dropStation;
+                            }
+                            else
+                            {
+                                result.code = "1";
+                                result.msg = $"鏍规嵁缁堢偣{taskData.dropStation},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
+                                AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
+                                return result;
+                            }
+                        }
+                        else
+                        {
+                            result.code = "1";
+                            result.msg = "鍒涘缓鎵樼洏鐗╂枡淇℃伅澶辫触";
+                            AddErrorInfo("鍒涘缓鎵樼洏澶辫触", result.msg, Source);
+                            return result;
+                        }
+
+                    }
+                    //鏆傚瓨浣嶅洖搴�+                    else if (taskData.taskType == 6)//鍏ュ簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟
+                    {
+                        note = "鍏ュ簱";
+                        //鏍规嵁鎵樼洏鍙锋壘璐т綅
+                        var CntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE == partData.rfid).First();
+                        if (CntrRel != null)
+                        {
+                            startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == CntrRel.S_LOC_CODE).First();
+                            if (startloc != null)
+                            {
+                                Start = startloc.S_CODE;
+                                CntrCode = CntrRel.S_CNTR_CODE;
+                            }
+                            else
+                            {
+                                result.code = "1";
+                                result.msg = $"鏍规嵁鎵樼洏{partData.rfid},鏈壘鍒版墭鐩樿揣浣嶇粦瀹氬叧绯�;
+                                AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
+                                return result;
+                            }
+                        }
+                        endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.dropStation).First();
+                        if (endloc != null)
+                        {
+                            End = taskData.dropStation;
+                        }
+                        else
+                        {
+                            result.code = "1";
+                            result.msg = $"鏍规嵁缁堢偣{End},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
+                            AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
+                            return result;
+                        }
+                    }
+                    //鐐瑰搴撳尯
+                    else if (taskData.taskType == 7)//寮傚父浣�+                    {
+                        note = "寮傚父搴撳尯鍏ュ簱";
+                        //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅
+                        if (CreateCntrIteminfo(partData, taskData))
+                        {
+                            startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First();
+                            if (startloc != null)
+                            {
+                                Start = taskData.pickStation;
+                            }
+                            var EndLocs = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == taskData.dropStation).ToList();
+                            if (EndLocs.Count > 0)
+                            {
+                                endloc = EndLocs.Find(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0);
+                                if (endloc != null)
+                                {
+                                    End = endloc.S_CODE;
+                                }
+                                else
+                                {
+                                    result.code = "1";
+                                    result.msg = $"缁堢偣搴撳尯锛歿taskData.dropStation}鏃犲彲鐢ㄨ揣浣�;
+                                    AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                                    return result;
+                                }
+
+                            }
+                            else
+                            {
+                                result.code = "1";
+                                result.msg = $"鏍规嵁缁堢偣搴撳尯锛歿taskData.dropStation},鏈壘鍒板搴旇揣浣�;
                                 AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
                                 return result;
                             }
-
                         }
                         else
                         {
                             result.code = "1";
-                            result.msg = $"鏍规嵁缁堢偣搴撳尯锛歿taskData.dropStation},鏈壘鍒板搴旇揣浣�;
-                            AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                            result.msg = "鍒涘缓鎵樼洏鐗╂枡淇℃伅澶辫触";
+                            AddErrorInfo("鍒涘缓鎵樼洏澶辫触", result.msg, Source);
                             return result;
                         }
                     }
-                    else
+                    else if (taskData.taskType == 8)//鍙犵洏鏈虹┖鎵樺洖搴�                     {
-                        result.code = "1";
-                        result.msg = "鍒涘缓鎵樼洏鐗╂枡淇℃伅澶辫触";
-                        AddErrorInfo("鍒涘缓鎵樼洏澶辫触", result.msg, Source);
-                        return result;
-                    }
-                }
-                else if (taskData.taskType == 8)//鍙犵洏鏈虹┖鎵樺洖搴�-                {
-                    note = "绌烘墭鍥炲簱";//浜曟澗绌烘墭鍥炲簱锛岄渶瑕佷笌鍙犵洏鏈哄畨鍏ㄤ氦浜�-                    startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First();
-                    if (startloc != null)
-                    {
-                        Start = startloc.S_CODE;
-                    }
-                    else
-                    {
-                        result.code = "1";
-                        result.msg = $"鏍规嵁璧风偣:{taskData.pickStation},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
-                        AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
-                        return result;
-                    }
-                    endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.dropStation).First();
-                    if (endloc != null)
-                    {
-                        End = taskData.dropStation;
-                    }
-                    else
-                    {
-                        result.code = "1";
-                        result.msg = $"鏍规嵁缁堢偣:{End},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
-                        AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
-                        return result;
-                    }
-                }
-                else
-                {
-                    LogHelper.Info($"Createtask==> 浠诲姟绫诲瀷鏈夎");
-                    result.code = "1";
-                    result.msg = "浠诲姟绫诲瀷锛歿taskData.taskType}涓嶅湪瑙勫畾鑼冨洿鍐�;
-                    AddErrorInfo("浠诲姟绫诲瀷閿欒", result.msg, Source);
-                }
-                if (taskData.taskType != 4)
-                {
-                    if (!string.IsNullOrEmpty(Start) && !string.IsNullOrEmpty(End))
-                    {
-                        if (startloc.N_LOCK_STATE != 0)
+                        note = "绌烘墭鍥炲簱";//浜曟澗绌烘墭鍥炲簱锛岄渶瑕佷笌鍙犵洏鏈哄畨鍏ㄤ氦浜�+                        startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First();
+                        if (startloc != null)
                         {
-                            result.code = "1";
-                            result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐箋Start}鏈夐攣";
-                            AddErrorInfo("璐т綅鏈夐攣", result.msg);
-                            return result;
-                        }
-                        var startArea = db.Queryable<Area>().Where(a => a.S_CODE.Trim() == startloc.S_AREA_CODE.Trim()).First();
-                        var endArea = db.Queryable<Area>().Where(a => a.S_CODE.Trim() == endloc.S_AREA_CODE.Trim()).First();
-                        if (startArea == null || endArea == null)
-                        {
-                            LogHelper.Info($"璧风偣锛歿JsonConvert.SerializeObject(startArea)}");
-                            LogHelper.Info($"缁堢偣锛歿JsonConvert.SerializeObject(endArea)}");
-                            result.code = "1";
-                            result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐�{startloc.S_AREA_CODE},缁堢偣{endloc.S_AREA_CODE}鏈壘鍒板搴斿簱鍖�;
-                            AddErrorInfo("搴撳尯鏌ユ壘澶辫触", result.msg);
-                            return result;
-                        }
-                        //鍒涘缓wcs浠诲姟
-                        var wcsTask = new WCSTask
-                        {
-                            S_CODE = WCSHelper.GenerateTaskNo(),
-                            S_TYPE = startArea.S_NAME + "->" + endArea.S_NAME,
-                            S_EQ_NO = taskData.taskNum,
-                            S_START_LOC = Start,
-                            S_END_LOC = End,
-                            N_CNTR_COUNT = 1,
-                            S_START_WH = startloc.S_WH_CODE,
-                            S_END_WH = endloc.S_WH_CODE,
-                            S_END_AREA = endloc.S_AREA_CODE,
-                            N_SCHEDULE_TYPE = 1,
-                            S_CNTR_CODE = CntrCode,
-                            N_PRIORITY = taskData.priority,
-                            Z_TYPE = n_type,
-                            N_START_LAYER = 1,
-                            N_END_LAYER = 1,
-                            S_WMS_NO = taskData.wmsTaskNo,
-                            S_NOTE = note,
-                            S_MES_NO = taskData.mesTaskNo
-
-                        };
-                        LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask");
-                        if (WCSHelper.CreateTask(wcsTask))
-                        {
-                            // LocationHelper.LockLoc(Start, 2);
-                            //LocationHelper.LockLoc(End, 1);
-                            LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
+                            Start = startloc.S_CODE;
                         }
                         else
                         {
                             result.code = "1";
-                            result.msg = $"浠诲姟鍒涘缓澶辫触";
-                            AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
+                            result.msg = $"鏍规嵁璧风偣:{taskData.pickStation},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
+                            AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
+                            return result;
+                        }
+                        endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.dropStation).First();
+                        if (endloc != null)
+                        {
+                            End = taskData.dropStation;
+                        }
+                        else
+                        {
+                            result.code = "1";
+                            result.msg = $"鏍规嵁缁堢偣:{End},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
+                            AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
                             return result;
                         }
                     }
                     else
                     {
+                        LogHelper.Info($"Createtask==> 浠诲姟绫诲瀷鏈夎");
                         result.code = "1";
-                        result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
-                        return result;
+                        result.msg = "浠诲姟绫诲瀷锛歿taskData.taskType}涓嶅湪瑙勫畾鑼冨洿鍐�;
+                        AddErrorInfo("浠诲姟绫诲瀷閿欒", result.msg, Source);
+                    }
+                    if (taskData.taskType != 4)
+                    {
+                        if (!string.IsNullOrEmpty(Start) && !string.IsNullOrEmpty(End))
+                        {
+                            if (startloc.N_LOCK_STATE != 0)
+                            {
+                                result.code = "1";
+                                result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐箋Start}鏈夐攣";
+                                AddErrorInfo("璐т綅鏈夐攣", result.msg);
+                                return result;
+                            }
+                            var startArea = db.Queryable<Area>().Where(a => a.S_CODE.Trim() == startloc.S_AREA_CODE.Trim()).First();
+                            var endArea = db.Queryable<Area>().Where(a => a.S_CODE.Trim() == endloc.S_AREA_CODE.Trim()).First();
+                            if (startArea == null || endArea == null)
+                            {
+                                LogHelper.Info($"璧风偣锛歿JsonConvert.SerializeObject(startArea)}");
+                                LogHelper.Info($"缁堢偣锛歿JsonConvert.SerializeObject(endArea)}");
+                                result.code = "1";
+                                result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐�{startloc.S_AREA_CODE},缁堢偣{endloc.S_AREA_CODE}鏈壘鍒板搴斿簱鍖�;
+                                AddErrorInfo("搴撳尯鏌ユ壘澶辫触", result.msg);
+                                return result;
+                            }
+                            //鍒涘缓wcs浠诲姟
+                            var wcsTask = new WCSTask
+                            {
+                                S_CODE = WCSHelper.GenerateTaskNo(),
+                                S_TYPE = startArea.S_NAME + "->" + endArea.S_NAME,
+                                S_EQ_NO = taskData.taskNum,
+                                S_START_LOC = Start,
+                                S_END_LOC = End,
+                                N_CNTR_COUNT = 1,
+                                S_START_WH = startloc.S_WH_CODE,
+                                S_END_WH = endloc.S_WH_CODE,
+                                S_END_AREA = endloc.S_AREA_CODE,
+                                N_SCHEDULE_TYPE = 1,
+                                S_CNTR_CODE = CntrCode,
+                                N_PRIORITY = taskData.priority,
+                                Z_TYPE = n_type,
+                                N_START_LAYER = 1,
+                                N_END_LAYER = 1,
+                                S_WMS_NO = taskData.wmsTaskNo,
+                                S_NOTE = note,
+                                S_MES_NO = taskData.mesTaskNo
+
+                            };
+                            LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask");
+                            if (WCSHelper.CreateTask(wcsTask))
+                            {
+                                // LocationHelper.LockLoc(Start, 2);
+                                //LocationHelper.LockLoc(End, 1);
+                                LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
+                            }
+                            else
+                            {
+                                result.code = "1";
+                                result.msg = $"浠诲姟鍒涘缓澶辫触";
+                                AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
+                                return result;
+                            }
+                        }
+                        else
+                        {
+                            result.code = "1";
+                            result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
+                            return result;
+                        }
                     }
                 }
+
 
                 return result;
             }
@@ -983,7 +1001,6 @@
             string areacode = "";
             var db = new SqlHelper<object>().GetInstance();
             #endregion
-
             try
             {
 
@@ -1071,56 +1088,60 @@
                 #endregion
 
                 #region 浠诲姟鍒涘缓
-                if (!string.IsNullOrEmpty(Start) && !string.IsNullOrEmpty(End))
+                if (string.IsNullOrEmpty(Start))
                 {
-                    if (loc.N_LOCK_STATE != 0)
-                    {
-                        result.code = "1";
-                        result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐箋Start}鏈夐攣";
-                        AddErrorInfo("璐т綅鏈夐攣", result.msg, Source);
-                        return result;
-                    }
-                    //鍒涘缓wcs浠诲姟
-                    var wcsTask = new WCSTask
-                    {
-                        S_CODE = WCSHelper.GenerateTaskNo(),
-                        S_TYPE = "鍑哄钩搴�,
-                        S_EQ_NO = model.TaskNumber,
-                        S_START_LOC = Start,
-                        S_END_LOC = End,
-                        S_START_WH = loc.S_WH_CODE,
-                        S_START_AREA = loc.S_AREA_CODE,
-                        S_END_WH = Endloc.S_WH_CODE,
-                        S_END_AREA = Endloc.S_AREA_CODE,
-                        N_CNTR_COUNT = 1,
-                        N_SCHEDULE_TYPE = 1,
-                        S_CNTR_CODE = CntrCode,
-                        N_START_LAYER = 1,
-                        N_END_LAYER = 1,
-                        Z_TYPE = n_type
+                    result.code = "1";
+                    result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣";
+                    return result;
+                }
+                if (string.IsNullOrEmpty(End))
+                {
+                    result.code = "1";
+                    result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫嵏璐х偣";
+                    return result;
+                }
+                if (loc.N_LOCK_STATE != 0)
+                {
+                    result.code = "1";
+                    result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐箋Start}鏈夐攣";
+                    AddErrorInfo("璐т綅鏈夐攣", result.msg, Source);
+                    return result;
+                }
+                //鍒涘缓wcs浠诲姟
+                var wcsTask = new WCSTask
+                {
+                    S_CODE = WCSHelper.GenerateTaskNo(),
+                    S_TYPE = "鍑哄钩搴�,
+                    S_EQ_NO = model.TaskNumber,
+                    S_START_LOC = Start,
+                    S_END_LOC = End,
+                    S_START_WH = loc.S_WH_CODE,
+                    S_START_AREA = loc.S_AREA_CODE,
+                    S_END_WH = Endloc.S_WH_CODE,
+                    S_END_AREA = Endloc.S_AREA_CODE,
+                    N_CNTR_COUNT = 1,
+                    N_SCHEDULE_TYPE = 1,
+                    S_CNTR_CODE = CntrCode,
+                    N_START_LAYER = 1,
+                    N_END_LAYER = 1,
+                    Z_TYPE = n_type
 
-                    };
-                    LogHelper.Info("鍒涘缓鍑哄钩搴撲换鍔★細" + JsonConvert.SerializeObject(wcsTask));
-                    if (WCSHelper.CreateTask(wcsTask))
-                    {
-                        LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
-                        //LocationHelper.LockLoc(Start, 2);
-                        //LocationHelper.LockLoc(End, 1);
-                    }
-                    else
-                    {
-                        result.code = "1";
-                        result.msg = $"浠诲姟鍒涘缓澶辫触";
-                        AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
-                        return result;
-                    }
+                };
+                LogHelper.Info("鍒涘缓鍑哄钩搴撲换鍔★細" + JsonConvert.SerializeObject(wcsTask));
+                if (WCSHelper.CreateTask(wcsTask))
+                {
+                    LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
+                    //LocationHelper.LockLoc(Start, 2);
+                    //LocationHelper.LockLoc(End, 1);
                 }
                 else
                 {
                     result.code = "1";
-                    result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
+                    result.msg = $"浠诲姟鍒涘缓澶辫触";
+                    AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
                     return result;
                 }
+
                 #endregion
 
                 return result;
@@ -1205,8 +1226,9 @@
                                 loc = dploc.FindAll(a => a.N_LOCK_STATE == 0 && a.N_CURRENT_NUM < 6).OrderByDescending(a => a.N_CURRENT_NUM).FirstOrDefault();
                                 if (loc == null)
                                 {
+                                    LogHelper.Info($"涓夋ゼ璐т綅鍙犵洏浣嶏紝閮藉凡缁忔湁閿佹垨鑰呭凡缁忓彔婊★紝璇锋鏌ヨ揣浣嶇姸鎬�);
                                     result.code = "1";
-                                    result.msg = $"鍙犵洏璐т綅涓嶅彲鐢�;
+                                    result.msg = $"鍙犵洏璐т綅涓嶅彲鐢紝缁堢偣搴撳尯娌℃湁鍙敤璐т綅锛岃妫�煡閿佺姸鎬佸拰鏁伴噺";
                                     AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
                                     return result;
                                 }
@@ -1217,9 +1239,9 @@
                             }
                             else
                             {
-
+                                // LogHelper.Info($"鏍规嵁璐т綅妤煎眰锛歿startloc.N_LAYER}锛屼粨搴撶紪鐮侊細{startloc.S_WH_CODE}锛岃揣浣嶅娉細鍙犵洏锛屾湭鎵惧埌鍙犵洏璐т綅");
                                 result.code = "1";
-                                result.msg = $"鍙犵洏璐т綅涓嶅彲鐢�;
+                                result.msg = $"鍙犵洏璐т綅涓嶅彲鐢紝鏈壘鍒板彲鍙犵洏璐т綅";
                                 LogHelper.Info($"鏍规嵁璐т綅澶囨敞锛氬彔鐩橈紝璐т綅妤煎眰:{startloc.N_LAYER},璐т綅浠撳簱:{startloc.S_WH_CODE}锛屾壘涓嶅埌鍙犵洏璐т綅");
                                 AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
                                 return result;
@@ -1234,8 +1256,9 @@
                                 loc = KjDploc.FindAll(a => a.N_LOCK_STATE == 0 && a.N_CURRENT_NUM < 6).OrderByDescending(a => a.N_CURRENT_NUM).FirstOrDefault();
                                 if (loc == null)
                                 {
+                                    LogHelper.Info($"鐗囪兌鍫嗗彔浣嶏紝閮藉凡缁忔湁閿佹垨鑰呭凡缁忓彔婊★紝璇锋鏌ヨ揣浣嶇姸鎬�);
                                     result.code = "1";
-                                    result.msg = $"鍙犵洏璐т綅涓嶅彲鐢�;
+                                    result.msg = $"鍙犵洏璐т綅涓嶅彲鐢紝缁堢偣搴撳尯娌℃湁鍙敤璐т綅锛岃妫�煡閿佺姸鎬佸拰鏁伴噺";
                                     AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
                                     return result;
                                 }
@@ -1269,7 +1292,7 @@
                             {
                                 result.code = "1";
                                 result.msg = $"鏍规嵁璧风偣浠撳簱缂栫爜锛歿startloc.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�;
-                                LogHelper.Info($"Putin==> {result.msg}");
+                                LogHelper.Info($" {result.msg}");
                                 AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
                                 return result;
                             }
@@ -1277,14 +1300,18 @@
 
                             //鍥炲簱璐т綅璁$畻搴撳尯璐т綅
                             loc = StorageCompute(itemcode, areacode);
-                            //if (loc == null)
-                            //{
-                            //    loc = emptyRow(areacode);
-                            //    if (loc == null)
-                            //    {
-                            //        LogHelper.Info($"搴撳尯锛歿areacode}娌℃湁绌烘帓");
-                            //    }
-                            //}
+                            if (loc == null)
+                            {
+                                loc = emptyRow(areacode);
+                                if (loc == null)
+                                {
+                                    result.code = "1";
+                                    result.msg = $"搴撳尯锛歿areacode}娌℃湁鍙敤璐т綅";
+                                    LogHelper.Info($" {result.msg}");
+                                    AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                                    // LogHelper.Info($"搴撳尯锛歿areacode}娌℃湁鍙敤璐т綅");
+                                }
+                            }
                             //else
                             //{
 
@@ -1399,10 +1426,11 @@
             #region 鍙橀噺
             string Start = "";
             string End = model.TargetLocation;
-            
+
             string areacode = "";
             string cntrcode = "";
             Location startloc = new Location();
+            //  startloc = LocationHelper.GetLocByAreacode(areacode, model.CarrierType);
             #endregion
 
             try
@@ -1412,7 +1440,6 @@
                     #region 鏍规嵁浠撳簱缂栫爜鍒ゆ柇搴撳尯 骞惰绠楀嚭搴撹揣浣�                     var endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == End).First();
                     //鏍规嵁浠撳簱 璁$畻搴撳尯
-
                     if (endloc != null)
                     {
                         var whcode = Settings.wareLoc.Where(a => a.AreaCode == endloc.S_WH_CODE).FirstOrDefault();
@@ -1428,10 +1455,9 @@
                             AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
                             return result;
                         }
-                        
 
                         //璁$畻鍑哄簱鎵樼洏
-                        startloc = LocationHelper.GetLocByAreacode(areacode,model.CarrierType);
+                        startloc = LocationHelper.GetLocByAreacode(areacode, model.CarrierType);
                         if (startloc != null)
                         {
                             var cntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == startloc.S_CODE).First();
@@ -1448,7 +1474,14 @@
                                 AddErrorInfo("鏌ユ壘鎵樼洏澶辫触", result.msg, Source);
                                 return result;
                             }
-
+                        }
+                        else
+                        {
+                            result.code = "1";
+                            result.msg = $"鍒涘缓绌哄伐瑁呭懠鍙换鍔�=>鏍规嵁搴撳尯锛歿areacode}锛屾墭鐩樼被鍨嬶細{model.CarrierType}鎵句笉鍒板搴旂┖鎵�;
+                            LogHelper.Info($"callfixture:{result.msg}");
+                            AddErrorInfo("鏌ユ壘鎵樼洏澶辫触", result.msg, Source);
+                            return result;
                         }
 
                     }
@@ -2043,7 +2076,7 @@
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        internal static Result CreatelevatorTask(Elevator model)
+        internal static Result CreatelevatorTask(ElevatorModel model)
         {
             Result result = new Result() { code = "200", msg = "鐐瑰鐐逛换鍔″垱寤烘垚鍔� };
             string Source = "MES";
@@ -2273,19 +2306,20 @@
 
                     if (loccntr != null)
                     {
-
                         string cntrcode = loccntr.S_CNTR_CODE;
                         var CntrItem = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == cntrcode).First();
                         if (CntrItem != null)
                         {
-                            if (LocationHelper.UnBindingLoc(loc, new List<string>() { cntrcode }))
-                            {
-                                LogHelper.Info($"娓呴櫎鎵樼洏璐т綅鍏崇郴鎴愬姛");
-                            }
+                            //娓呴櫎鎵樼洏鐗╂枡缁戝畾鍏崇郴
+                            db.Deleteable<CntrItemDetail>().Where(it => it.S_CNTR_CODE.Trim() == CntrItem.S_CNTR_CODE).ExecuteCommand();
                         }
                         else
                         {
                             LogHelper.Info($"ClearLocCntr 鎵樼洏{cntrcode}鏃犵墿鏂欑粦瀹氬叧绯�);
+                        }
+                        if (LocationHelper.UnBindingLoc(loc, new List<string>() { cntrcode }))
+                        {
+                            LogHelper.Info($"娓呴櫎鎵樼洏璐т綅鍏崇郴鎴愬姛");
                         }
 
                     }
@@ -2368,7 +2402,7 @@
 
                             }
                         }
-                       
+
                     }
                     else
                     {
@@ -2410,14 +2444,14 @@
             DeviceInfoModel device = new DeviceInfoModel();
 
             List<DeviceInfos> deviceInfos = new List<DeviceInfos>();//鍙犵洏鏈烘姤閿欎俊鎭�-            List<AgvInfos> agvInfos = new List<AgvInfos>();//agv鎶ラ敊淇℃伅
+                                                                    // List<AgvInfos> agvInfos = new List<AgvInfos>();//agv鎶ラ敊淇℃伅
 
             //鑾峰彇鍐呭瓨涓彔鐩樻満鐨勬姤閿欎俊鎭�             foreach (var dpjInfo in DeviceProcess.DpjInfoDirectory)
             {
                 deviceInfos.Add(new DeviceInfos() { Device = dpjInfo.Value.DeviceName, DeviceInfo = dpjInfo.Value.ErrorInfo });
             }
-            device.DeviceInfos = deviceInfos;
+            //  device.DeviceInfos = deviceInfos;
             //鑾峰彇杞﹁締鎶ヨ淇℃伅
             var agvDeviceInfo = db.Queryable<HangChaAGV>().ToList();
             if (agvDeviceInfo.Count > 0)
@@ -2429,10 +2463,10 @@
                 foreach (var agv in agvDeviceInfo)
                 {
                     string agvErrorInfo = GetAgvAlarmSendCodeTwo(agv.agvErrCode, agv.errCode2, agv.faildCode);
-                    agvInfos.Add(new AgvInfos() { AgvNo = agv.agvNo, AgvInfo = agvErrorInfo });
+                    deviceInfos.Add(new DeviceInfos() { AgvNo = agv.agvNo, AgvInfo = agvErrorInfo });
                 }
             }
-            device.AgvInfos = agvInfos;
+            device.DeviceInfos = deviceInfos;
 
             return device;
         }
@@ -2497,7 +2531,7 @@
 
         #region 鍚堣偉浣抽�涓氬姟鏂规硶
 
-        
+
         /// <summary>
         /// 鎵樼洏鍏ュ簱绠楁硶 
         /// </summary>
@@ -2671,6 +2705,21 @@
             }
 
         }
+
+        //internal static bool CreateCntrLoc(taskData taskData)
+        //{
+        //    if ( taskData == null)
+        //    {
+        //        LogHelper.Info($"CreateCntrIteminfo==> 绔嬪簱浠诲姟涓嬪彂鍙傛暟鏈夌┖锛屽垱寤虹墿鏂欐墭鐩樼粦瀹氬叧绯诲け璐�);
+        //        return false;
+        //    }
+        //    else
+        //    {
+        //        LocationHelper.BindingLoc(taskData.pickStation,new  List<string>() { taskData.rfid });
+
+        //    }
+
+        //}
         private static object _lockLocation = new object();
         /// <summary>
         /// 鏍规嵁鎵樼洏缂栫爜锛屾満鍙扮紪鐮侊紝宸ヨ绫诲瀷璁$畻鏈哄彴绾胯竟鍖哄煙

--
Gitblit v1.9.1