From 1285aeec470dfa1b953878a714e3bc58bba83dec Mon Sep 17 00:00:00 2001
From: lss <Lss@HanInfo>
Date: 星期五, 13 六月 2025 17:31:06 +0800
Subject: [PATCH] 优化

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs | 2336 ++++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 1,358 insertions(+), 978 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 5ed6fd0..ed520ca 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs
@@ -11,8 +11,12 @@
 using System;
 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;
+using System.Web.UI.WebControls;
 using static HH.WCS.JiaTong.api.ApiModel;
 using static HH.WCS.JiaTong.api.OtherModel;
 using static HH.WCS.JiaTong.LISTA.process.HttpModel;
@@ -31,11 +35,15 @@
 
 
         #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 = "鍒涘缓鎴愬姛" };
@@ -62,60 +70,48 @@
                 }
                 string Start = ""; //鍙栬揣鐐�                 string End = "";
-                string areacode = "";
                 string note = ""; //绔嬪簱涓嬪彂浠诲姟闇�閫氱煡mes鎺ュ彛鐗╂枡鍒颁綅锛岀敤澶囨敞鑷姩杩涜鍖哄垎
                                   //鏍规嵁鐗╂枡鑾峰彇瀵瑰簲搴撳尯
-                #region 鏍规嵁鐗╂枡纭鍑哄簱鏉ユ簮
-                var iteminfo = db.Queryable<TN_Material>().Where(a => a.S_ITEM_CODE.Trim() == ItemCode).First();
-                if (iteminfo != null)
-                {
-                    //LogHelper.Info($"Createtask==>鐗╂枡鏁版嵁:{JsonConvert.SerializeObject(iteminfo)}");
-                    areacode = iteminfo.S_WH_CODE;
-                }
-
-                if (string.IsNullOrEmpty(areacode))
-                {
-                    LogHelper.Info($"Createtask==>鏍规嵁鐗╂枡缂栫爜:{ItemCode}鏈兘鎵惧埌鐗╂枡鏉ユ簮锛岄渶鍚屾鐗╂枡鏁版嵁");
-                    result.code = "1";
-                    result.msg = $"鏍规嵁鐗╂枡缂栫爜:{ItemCode}鏈兘鎵惧埌鐗╂枡鏉ユ簮锛岄渶鍚屾鐗╂枡鏁版嵁";
-                    AddErrorInfo("瀵绘壘鍑哄簱鍖哄け璐�, result.msg);
-                    return result;
-                }
-                //var task = db.Queryable<WCSTask>().Where(a => a.S_EQ_NO.Trim() == taskData.taskNum).First();
-                //if (task != null)
+                #region 鏍规嵁浠诲姟鏉ユ簮瀛楁鍒ゆ柇搴撳尯鏉ユ簮鏉ユ簮
+                //var iteminfo = db.Queryable<TN_Material>().Where(a => a.S_ITEM_CODE.Trim() == ItemCode).First();
+                //if (iteminfo != null)
                 //{
-                //    LogHelper.Info($"Createtask==> 浠诲姟鍙穥taskData.taskNum},璇ヤ换鍔″凡缁忓瓨鍦紝涓嶅厑璁稿垱寤轰换鍔�);
+                //    //LogHelper.Info($"Createtask==>鐗╂枡鏁版嵁:{JsonConvert.SerializeObject(iteminfo)}");
+                //    areacode = iteminfo.S_WH_CODE;
+                //}
+
+                //if (string.IsNullOrEmpty(areacode))
+                //{
+                //    LogHelper.Info($"Createtask==>鏍规嵁鐗╂枡缂栫爜:{ItemCode}鏈兘鎵惧埌鐗╂枡鏉ユ簮锛岄渶鍚屾鐗╂枡鏁版嵁");
                 //    result.code = "1";
-                //    result.msg = $"浠诲姟鍙穥taskData.taskNum},璇ヤ换鍔″凡缁忓瓨鍦紝涓嶅厑璁稿垱寤轰换鍔�;
+                //    result.msg = $"鏍规嵁鐗╂枡缂栫爜:{ItemCode}鏈兘鎵惧埌鐗╂枡鏉ユ簮锛岄渶鍚屾鐗╂枡鏁版嵁";
+                //    AddErrorInfo("瀵绘壘鍑哄簱鍖哄け璐�, result.msg);
                 //    return result;
                 //}
-                int n_type = 0;  //浠诲姟鏉ユ簮 1.閽笣绔嬪簱  2.鑳剁墖搴� 3.棰勫搴�,4.鍘熸潗鏂欏簱,閫氳繃鐗╂枡纭浠诲姟鏉ユ簮
+
+                int n_type = 0;  //浠诲姟鏉ユ簮 1.瀵嗙偧绔嬪簱  3.棰勫搴�,4.鍘熸潗鏂欏簱
                 string Source = "";
-                switch (areacode)
+                switch (taskData.source)
                 {
                     case "ML":
                         n_type = 1;
                         Source = "瀵嗙偧";
                         break;
-                    case "JP":
-                        n_type = 2;
-                        Source = "浜曟澗";
-                        break;
                     case "YBK":
                         n_type = 3;
                         Source = "棰勫搴�;
                         break;
-                    case "wmwhse1":
+                    case "YCL":
                         n_type = 4;
                         Source = "鍘熸潗鏂�;
                         break;
                 }
-                LogHelper.Info($"Createtask==>浠诲姟绫诲瀷:{n_type}");
+                Console.WriteLine($"Createtask==>浠诲姟鏉ユ簮:{n_type}");
                 if (n_type == 0)
                 {
                     result.code = "1";
-                    result.msg = $"鐗╂枡搴撳尯:{areacode}灞炰簬鏈畾涔夊簱鍖猴紝璇锋鏌ョ墿鏂欒〃閲嶆柊瀹氫箟鐗╂枡搴撳尯";
-                    AddErrorInfo("鐗╂枡搴撳尯鏈畾涔�, result.msg);
+                    result.msg = $"浠诲姟鏉ユ簮:{taskData.source}灞炰簬鏈畾涔夊簱鍖猴紝璇锋鏌ョ墿鏂欐潵婧愭槸鍚﹀睘浜庣害瀹氬瓧娈�;
+                    AddErrorInfo("浠诲姟鏉ユ簮鏈畾涔�, result.msg);
                     return result;
                 }
 
@@ -124,242 +120,95 @@
 
                 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(Start, CntrCode, ItemCode, partData.partDesc, partData.partType, partData.lotNumber, partData.unit, partData.weight, taskData.carrierType, taskData.grade))
+                        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);
+                            result.msg = $"Putin==> 浠诲姟璧风偣:{taskData.pickStation}鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
+                            LogHelper.Info($"Putin==> {result.msg}");
+                            AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
                             return result;
                         }
                     }
-                    else
+                    else if (taskData.taskType == 2)//鍏ュ簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛岃捣鐐归渶瑕佹湁鎵樼洏
                     {
-
-                        result.code = "1";
-                        result.msg = $"Putin==> 浠诲姟璧风偣:{taskData.pickStation}鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
-                        LogHelper.Info($"Putin==> {result.msg}");
-                        AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source);
-                    }
-                }
-                else if (taskData.taskType == 2)//鍏ュ簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛岃捣鐐归渶瑕佹湁鎵樼洏
-                {
-                    startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First();
-                    if (startloc != null)
-                    {
-                        var CntrRel = LocationHelper.GetLocCntrRel(startloc.S_CODE).FirstOrDefault();
-                        if (CntrRel != null)
+                        note = "鍏ュ簱";
+                        startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First();
+                        if (startloc != null)
                         {
                             Start = startloc.S_CODE;
-                            CntrCode = CntrRel.S_CNTR_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 = $"鏍规嵁璧风偣{Start},鏈壘鍒版墭鐩樿揣浣嶇粦瀹氬叧绯�;
-                            AddErrorInfo("鎵樼洏鏌ユ壘澶辫触", result.msg, Source);
-                            return result;
-                        }
-
-                    }
-                    //鍒ゆ柇鏄惁鏄┖鎵樺洖搴�-                    var CntrItem = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == CntrCode).First();
-                    if (CntrItem == null)
-                    {
-                        note = "绌烘墭鍥炲簱";//浜曟澗绌烘墭鍥炲簱锛岄渶瑕佷笌鍙犵洏鏈哄畨鍏ㄤ氦浜�-                    }
-                    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)//绉诲簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛�-                {
-                    //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅
-
-                    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 = $"鏍规嵁璧风偣{taskData.pickStation},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
                             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(Start, 2);
 
-                                LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
-                            }
+                        endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.dropStation).First();
+                        if (endloc != null)
+                        {
+                            End = taskData.dropStation;
                         }
-                        else if (startArea.N_FLOOR != endArea.N_FLOOR)
+                        else
                         {
-                            //妤煎眰鐢垫鍒嗛厤
-                            var endloc1 = Settings.elevatorLoc.Find(a => a.Floor == startArea.N_FLOOR);
-                            var startloc1 = Settings.elevatorLoc.Find(a => a.Floor == endArea.N_FLOOR);
-
-                            //鍒涘缓wcs鍒嗘浠诲姟
-                            var wcsTask = new WCSTask
-                            {
-                                S_CODE = WCSHelper.GenerateTaskNo(),
-                                S_TYPE = "鐢垫1",
-                                S_EQ_NO = taskData.taskNum,
-                                S_START_LOC = Start,
-                                S_END_LOC = endloc1.Location[0],
-                                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
-                            };
-                            var wcsTask1 = new WCSTask
-                            {
-                                S_CODE = WCSHelper.GenerateTaskNo(),
-                                S_TYPE = "鐢垫2",
-                                S_EQ_NO = taskData.taskNum,
-                                S_START_LOC = startloc1.Location[0],
-                                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,
-                                S_WMS_NO = taskData.wmsTaskNo,
-                                N_START_LAYER = 1,
-                                N_END_LAYER = 1,
-                                Z_TYPE = n_type
-
-
-                            };
-
-                            LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask");
-                            if (WCSHelper.CreateTask(wcsTask) && WCSHelper.CreateTask(wcsTask1))
-                            {
-
-                                LocationHelper.LockLoc(endloc.S_CODE, 1);
-                                LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
-                            }
+                            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)//绉诲簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛屽苟缁戝畾鎵樼洏
-                {
-                    //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅
-                    if (CreateCntrIteminfo(taskData.pickStation, CntrCode, ItemCode, partData.partDesc, partData.partType, partData.lotNumber, partData.unit, partData.weight, taskData.carrierType, taskData.grade))
-                    {
+                        note = "鍑哄簱";
+                        //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅
                         startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First();
                         if (startloc != null)
                         {
@@ -385,188 +234,373 @@
                             return result;
                         }
                     }
-                    else
-                    {
-                        result.code = "1";
-                        result.msg = "鍒涘缓鎵樼洏鐗╂枡淇℃伅澶辫触";
-                        AddErrorInfo("鍒涘缓鎵樼洏澶辫触", result.msg, Source);
-                        return result;
-                    }
-
-                }
-                //鏆傚瓨浣嶅洖搴�-                else if (taskData.taskType == 6)//鍏ュ簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟
-                {
-                    //鏍规嵁鎵樼洏鍙锋壘璐т綅
-                    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(taskData.pickStation, CntrCode, ItemCode, partData.partDesc, partData.partType, partData.lotNumber, partData.unit, partData.weight, taskData.carrierType, taskData.grade))
+                    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 = endloc.S_CODE;
-                            }
-                            else
+                            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 = $"缁堢偣搴撳尯锛歿taskData.dropStation}鏃犲彲鐢ㄨ揣浣�;
-                                AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                                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 = $"鏍规嵁缁堢偣搴撳尯锛歿taskData.dropStation},鏈壘鍒板搴旇揣浣�;
-                            AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                            result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
                             return result;
                         }
                     }
-                    else
+                    else if (taskData.taskType == 5)//绉诲簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛屽苟缁戝畾鎵樼洏
                     {
-                        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 = "鍑哄簱";
+                        //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅
+                        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.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 = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐箋Start}鏈夐攣";
-                            AddErrorInfo("璐т綅鏈夐攣", result.msg);
+                            result.msg = "鍒涘缓鎵樼洏鐗╂枡淇℃伅澶辫触";
+                            AddErrorInfo("鍒涘缓鎵樼洏澶辫触", result.msg, Source);
                             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
 
-                        };
-                        LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask");
-                        if (WCSHelper.CreateTask(wcsTask))
+                    }
+                    //鏆傚瓨浣嶅洖搴�+                    else if (taskData.taskType == 6)//鍏ュ簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟
+                    {
+                        note = "鍏ュ簱";
+                        //鏍规嵁鎵樼洏鍙锋壘璐т綅
+                        var CntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE == partData.rfid).First();
+                        if (CntrRel != null)
                         {
-                            LocationHelper.LockLoc(Start, 2);
-                            LocationHelper.LockLoc(End, 1);
-                            LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
+                            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 = "鍒涘缓鎵樼洏鐗╂枡淇℃伅澶辫触";
+                            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 = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
-                        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;
             }
@@ -581,8 +615,6 @@
 
 
         }
-
-
 
         /// <summary>
         /// 棰勫搴撲换鍔$姸鎬佷笅鍙�@@ -697,7 +729,7 @@
             try
             {
                 //鍒涘缓鎵樼洏鏁版嵁缁戝畾鍏崇郴
-                if (ContainerHelper.CreateCntrItem(model.Rfid, model.PartNumber, model.PartDesc, model.LotNumber, model.Weight, model.Qty))
+                if (ContainerHelper.CreateCntrItem(model.Rfid, model.PartNumber, model.PartDesc, model.LotNumber, model.Weight, model.Qty, model.ProductionTime, model.MaturityTime))
                 {
                     //鍒涘缓鎴愬姛娴佺▼
                 }
@@ -750,6 +782,18 @@
             string areacode = "";
             try
             {
+
+                #region 鍏ュ簱妫�煡鎵樼洏鐗╂枡琛ㄦ湁鏃犳暟鎹�+                var cntritem = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First();
+                if (cntritem == null)
+                {
+                    result.code = "1";
+                    result.msg = $"鍒涘缓浠诲姟澶辫触锛屾墭鐩�{model.Rfid}鏃犵粦瀹氱墿鏂欐暟鎹�;
+                    LogHelper.Info($"ItemBack锛歿result.msg}");
+                    AddErrorInfo("鎵樼洏缁戝畾鐗╂枡鏁版嵁涓虹┖", result.msg, Source);
+                    return result;
+                }
+                #endregion
 
                 #region 鍒ゆ柇鎵樼洏缁戝畾璐т綅鏄惁鍜屼笅鍙戠粦瀹氳捣鐐圭浉鍚�濡傛灉娌$粦瀹氭墭鐩樺垯缁戝畾鎵樼洏
                 var CntrLoc = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First();
@@ -805,23 +849,27 @@
                 if (startloc != null)
                 {
                     //鏍规嵁浠撳簱 璁$畻搴撳尯
-                    if (startloc.S_WH_CODE == "101")
+                    var whcode = Settings.wareLoc.Where(a => a.AreaCode == startloc.S_WH_CODE).FirstOrDefault();
+                    if (whcode != null)
                     {
-                        areacode = "PMGQ";
+                        areacode = whcode.PMK;
                     }
                     else
                     {
-                        areacode = "PK2";
+                        result.code = "1";
+                        result.msg = $"鏍规嵁璧风偣浠撳簱缂栫爜锛歿startloc.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�;
+                        LogHelper.Info($"Putin==> {result.msg}");
+                        AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                        return result;
                     }
-                    areacode = "FLPK";
 
                     //鍒ゆ柇鏈夋棤鐩稿悓鐗╂枡鎺�                     loc = StorageCompute(itemcode, areacode);
-                    if (loc == null)
-                    {
-                        //鏃犵浉鍚岀墿鏂欐帓鎵剧┖鎺�-                        loc = emptyRow(areacode);
-                    }
+                    //if (loc == null)
+                    //{
+                    //    //鏃犵浉鍚岀墿鏂欐帓鎵剧┖鎺�+                    //    loc = emptyRow(areacode);
+                    //}
                     if (loc != null)
                     {
                         End = loc.S_CODE;
@@ -833,6 +881,7 @@
                         result.msg = $"搴撳尯:{areacode}鏃犲彲鐢ㄨ揣浣�;
                         LogHelper.Info($"Putin==> {result.msg}");
                         AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                        return result;
                     }
                 }
                 else
@@ -842,6 +891,7 @@
                     result.msg = $"浠诲姟璧风偣:{Start}鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
                     LogHelper.Info($"Putin==> {result.msg}");
                     AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
+                    return result;
                 }
                 #endregion
 
@@ -877,9 +927,16 @@
                     LogHelper.Info("鍒涘缓鍏ュ钩搴撲换鍔★細" + JsonConvert.SerializeObject(wcsTask));
                     if (WCSHelper.CreateTask(wcsTask))
                     {
-                        LocationHelper.LockLoc(Start, 2);
-                        LocationHelper.LockLoc(End, 1);
+                        //LocationHelper.LockLoc(Start, 2);
+                        //LocationHelper.LockLoc(End, 1);
                         LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
+                    }
+                    else
+                    {
+                        result.code = "1";
+                        result.msg = $"浠诲姟鍒涘缓澶辫触";
+                        AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
+                        return result;
                     }
                 }
                 else
@@ -899,7 +956,6 @@
                 LogHelper.Error("Putin Error锛� + ex.ToString(), ex);
                 return result;
             }
-
         }
 
         /// <summary>
@@ -934,53 +990,55 @@
             string areacode = "";
             var db = new SqlHelper<object>().GetInstance();
             #endregion
-
             try
             {
 
                 #region 鏍规嵁鐗╂枡缂栫爜瑙勫垯 璁$畻鍑哄簱搴撳尯
                 //绮夋枡浠庡钩搴撳嚭搴擄紝鍏朵粬鐗╂枡闇�浠庢殏瀛樺尯鍑哄簱
-                if (model.PartNumber.StartsWith("4X"))
+                var locJt = db.Queryable<Location>().Where(a => a.S_AREA_CODE == model.WorkCenter).First();
+                if (locJt == null)
                 {
-                    areacode = "FLPK";
-                    cntrType = "PM";
+                    result.code = "1";
+                    result.msg = $"鏍规嵁鏈哄彴缂栫爜锛歿model.WorkCenter}鏈壘鍒板搴旇揣浣�;
+                    LogHelper.Info($"Putin==> {result.msg}");
+                    AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                    return result;
                 }
-                else
+                //鏍规嵁浠撳簱 璁$畻搴撳尯
+                var whcode = Settings.wareLoc.Where(a => a.AreaCode == locJt.S_WH_CODE).FirstOrDefault();
+                if (whcode != null)
                 {
-
-                    if (model.PartNumber.StartsWith("3"))
+                    if (model.PartNumber.StartsWith("4X"))
                     {
-                        cntrType = "RC";
-                        areacode = "KJZCW";
+                        areacode = whcode.PMK;
+                        cntrType = "PM";
                     }
                     else
                     {
+                        if (model.PartNumber.StartsWith("3"))
+                        {
+                            cntrType = "RC";
+                            areacode = whcode.ZCW;
+                        }
+                        else
+                        {
 
-                        result.code = "1";
-                        result.msg = $"鍒涘缓浠诲姟澶辫触锛岀墿鏂欏彿{model.PartNumber}涓嶅睘浜庤瀹氱墿鏂�;
-                        LogHelper.Info($"ItemBack锛歿result.msg}");
-                        AddErrorInfo("鐗╂枡缂栫爜鏍煎紡閿欒", result.msg, Source);
-                        return result;
+                            result.code = "1";
+                            result.msg = $"鍒涘缓浠诲姟澶辫触锛岀墿鏂欏彿{model.PartNumber}涓嶅睘浜庤瀹氱墿鏂�;
+                            LogHelper.Info($"ItemBack锛歿result.msg}");
+                            AddErrorInfo("鐗╂枡缂栫爜鏍煎紡閿欒", result.msg, Source);
+                            return result;
+                        }
                     }
                 }
-                //鏍规嵁鐗╂枡鑾峰彇瀵瑰簲搴撳尯
-                //    var iteminfo = db.Queryable<TN_Material>().Where(a => a.S_ITEM_CODE.Trim() == itemcode).First();
-                //if (iteminfo != null)
-                //{
-                //    areacode = iteminfo.S_WH_CODE;
-                //}
-                //areacode = computeArea(itemcode);
-                //if (string.IsNullOrEmpty(areacode))
-                //{
-                //    LogHelper.Info($"PutOut==> 鏍规嵁鐗╂枡缂栫爜:{itemcode}鎵句笉鍒板搴斿簱鍖猴紝璇锋鏌ラ厤缃枃浠�);
-                //    result.code = "1";
-                //    result.msg = $"鏍规嵁鐗╂枡缂栫爜:{itemcode}鎵句笉鍒板搴斿簱鍖猴紝鐗╂枡琛ㄩ厤缃�;
-                //    AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg);
-                //}
-                //if (itemcode == "娴嬭瘯1")
-                //{
-                //    areacode = "PMJP";
-                //}
+                else
+                {
+                    result.code = "1";
+                    result.msg = $"鏍规嵁缁堢偣搴撳尯浠撳簱缂栫爜锛歿locJt.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�;
+                    LogHelper.Info($"Putin==> {result.msg}");
+                    AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                    return result;
+                }
                 #endregion
 
                 #region 鏍规嵁鐗╂枡缂栫爜璁$畻鍑哄簱璐т綅锛岄�寰�嚎杈逛綅缃�@@ -998,6 +1056,14 @@
                     {
                         End = Endloc.S_CODE;
                     }
+                    else
+                    {
+                        result.code = "1";
+                        result.msg = $"Computeloc==銆嬫牴鎹満鍙扮紪鐮侊細{model.WorkCenter},宸ヨ绫诲瀷锛歿cntrType} 鏈壘鍒扮┖璐т綅鏁版嵁锛岃妫�煡璐т綅琛�;
+                        LogHelper.Info($"ItemBack锛歿result.msg}");
+                        AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                        return result;
+                    }
                 }
                 else
                 {
@@ -1006,52 +1072,65 @@
                     result.msg = $"浠诲姟鐗╂枡:{itemcode}鎵句笉鍒板搴斿簱瀛�;
                     LogHelper.Info($"ItemBack锛歿result.msg}");
                     AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                    return result;
                 }
                 #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
-                    };
-                    LogHelper.Info("鍒涘缓鍑哄钩搴撲换鍔★細" + JsonConvert.SerializeObject(wcsTask));
-                    if (WCSHelper.CreateTask(wcsTask))
-                    {
-                        LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
-                        LocationHelper.LockLoc(Start, 2);
-                        LocationHelper.LockLoc(End, 1);
-                    }
+                    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 = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
+                    result.msg = $"浠诲姟鍒涘缓澶辫触";
+                    AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
                     return result;
                 }
+
                 #endregion
 
                 return result;
@@ -1066,6 +1145,7 @@
 
         }
 
+        public static object _lockEmpty = new object();
         /// <summary>
         /// 绌哄伐瑁呭洖搴�         /// </summary>
@@ -1096,205 +1176,210 @@
 
             try
             {
-                #region 鍒ゆ柇鎵樼洏缁戝畾璐т綅鏄惁鍜屼笅鍙戠粦瀹氳捣鐐圭浉鍚�-                var CntrLoc = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First();
-                if (CntrLoc != null)
+                lock (_lockEmpty)
                 {
-                    if (CntrLoc.S_LOC_CODE != Start)
+                    #region 鍒ゆ柇鎵樼洏缁戝畾璐т綅鏄惁鍜屼笅鍙戠粦瀹氳捣鐐圭浉鍚�+                    //var CntrLoc = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First();
+                    //if (CntrLoc != null)
+                    //{
+                    //    if (CntrLoc.S_LOC_CODE != Start)
+                    //    {
+                    //        LogHelper.Info($"ItemBack锛氬垱寤轰换鍔″け璐ワ紝鎵樼洏:{model.Rfid}缁戝畾浣嶇疆涓嶆槸璧风偣锛歿Start}");
+                    //        result.code = "1";
+                    //        result.msg = $"鍒涘缓浠诲姟澶辫触锛屾墭鐩�{model.Rfid}缁戝畾浣嶇疆涓嶆槸璧风偣锛歿Start}";
+                    //        AddErrorInfo("鎵樼洏缁戝畾浣嶇疆涓嶅悓", result.msg);
+                    //        return result;
+                    //    }
+                    //}
+                    //else
+                    //{
+                    //    LogHelper.Info($"ItemBack锛氬垱寤轰换鍔″け璐ワ紝鎵樼洏:{model.Rfid}鏈壘鍒扮粦瀹氳揣浣�);
+                    //    result.code = "1";
+                    //    result.msg = $"鍒涘缓浠诲姟澶辫触锛屾墭鐩�{model.Rfid}鏈壘鍒扮粦瀹氳揣浣�;
+                    //    AddErrorInfo("鏌ユ壘鎵樼洏璐т綅澶辫触", result.msg);
+                    //    return result;
+                    //}
+                    #endregion
+
+                    #region 鏍规嵁璐т綅妤煎眰鍒ゆ柇锛�妤煎幓寰�彔鐩樹綅 鍏朵粬鐨勫洖搴�+                    var startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == Start).First();
+                    if (startloc != null)
                     {
-                        LogHelper.Info($"ItemBack锛氬垱寤轰换鍔″け璐ワ紝鎵樼洏:{model.Rfid}缁戝畾浣嶇疆涓嶆槸璧风偣锛歿Start}");
+                        if (startloc.N_LAYER == 3)
+                        {
+                            //鍙犵洏璐т綅璁$畻鍙犵洏璐т綅
+                            var dploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鍙犵洏" && a.N_LAYER == startloc.N_LAYER && a.S_WH_CODE.Trim() == startloc.S_WH_CODE).ToList();
+                            if (dploc.Count > 0)
+                            {
+                                // LogHelper.Info($"鑾峰彇鍙犵洏璐т綅:{JsonConvert.SerializeObject(dploc)}");
+                                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 = $"鍙犵洏璐т綅涓嶅彲鐢紝缁堢偣搴撳尯娌℃湁鍙敤璐т綅锛岃妫�煡閿佺姸鎬佸拰鏁伴噺";
+                                    AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                                    return result;
+                                }
+                                else
+                                {
+                                    endlayer = loc.N_CURRENT_NUM + 1;
+                                }
+                            }
+                            else
+                            {
+                                // LogHelper.Info($"鏍规嵁璐т綅妤煎眰锛歿startloc.N_LAYER}锛屼粨搴撶紪鐮侊細{startloc.S_WH_CODE}锛岃揣浣嶅娉細鍙犵洏锛屾湭鎵惧埌鍙犵洏璐т綅");
+                                result.code = "1";
+                                result.msg = $"鍙犵洏璐т綅涓嶅彲鐢紝鏈壘鍒板彲鍙犵洏璐т綅";
+                                LogHelper.Info($"鏍规嵁璐т綅澶囨敞锛氬彔鐩橈紝璐т綅妤煎眰:{startloc.N_LAYER},璐т綅浠撳簱:{startloc.S_WH_CODE}锛屾壘涓嶅埌鍙犵洏璐т綅");
+                                AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
+                                return result;
+                            }
+                        }
+                        else if (startloc.S_NOTE == "PB")
+                        {
+                            //鎵惧潡鑳跺爢鍙犲尯
+                            var KjDploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鐗囪兌鍫嗗彔浣� && a.S_WH_CODE.Trim() == startloc.S_WH_CODE).ToList();
+                            if (KjDploc.Count > 0)
+                            {
+                                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 = $"鍙犵洏璐т綅涓嶅彲鐢紝缁堢偣搴撳尯娌℃湁鍙敤璐т綅锛岃妫�煡閿佺姸鎬佸拰鏁伴噺";
+                                    AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                                    return result;
+                                }
+                                else
+                                {
+                                    endlayer = loc.N_CURRENT_NUM + 1;
+                                }
+                            }
+                            else
+                            {
+                                LogHelper.Info($"鏍规嵁璐т綅澶囨敞锛氱墖鑳跺爢鍙犱綅,璐т綅浠撳簱:{startloc.S_WH_CODE}锛屾壘涓嶅埌鍙犵洏璐т綅");
+                                result.code = "1";
+                                result.msg = $"鍙犵洏璐т綅涓嶅彲鐢�;
+                                AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
+                                return result;
+                            }
+                        }
+                        else
+                        {
+                            #region 鏍规嵁璧风偣璐т綅绫诲瀷锛岃幏寰楀洖搴撳簱鍖�+                            //鏍规嵁浠撳簱 璁$畻搴撳尯
+                            var whcode = Settings.wareLoc.Where(a => a.AreaCode == startloc.S_WH_CODE).FirstOrDefault();
+                            if (whcode != null)
+                            {
+                                if (string.IsNullOrEmpty(startloc.S_NOTE))
+                                {
+                                    areacode = whcode.PMK;
+                                }
+                            }
+                            else
+                            {
+                                result.code = "1";
+                                result.msg = $"鏍规嵁璧风偣浠撳簱缂栫爜锛歿startloc.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�;
+                                LogHelper.Info($" {result.msg}");
+                                AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                                return result;
+                            }
+                            #endregion
+
+                            //鍥炲簱璐т綅璁$畻搴撳尯璐т綅
+                            loc = StorageCompute(itemcode, 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
+                            //{
+
+                            //    result.code = "1";
+                            //    result.msg = $"搴撳尯:{areacode}鏃犲彲鐢ㄨ揣浣�;
+                            //    LogHelper.Info($"{result.msg}");
+                            //    AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
+                            //    return result;
+                            //}
+                        }
+
+                    }
+                    else
+                    {
+
                         result.code = "1";
-                        result.msg = $"鍒涘缓浠诲姟澶辫触锛屾墭鐩�{model.Rfid}缁戝畾浣嶇疆涓嶆槸璧风偣锛歿Start}";
-                        AddErrorInfo("鎵樼洏缁戝畾浣嶇疆涓嶅悓", result.msg);
+                        result.msg = $"Empty==> 浠诲姟璧风偣:{Start}鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
+                        LogHelper.Info($"{result.msg}");
+                        AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
                         return result;
                     }
-                }
-                else
-                {
-                    LogHelper.Info($"ItemBack锛氬垱寤轰换鍔″け璐ワ紝鎵樼洏:{model.Rfid}鏈壘鍒扮粦瀹氳揣浣�);
-                    result.code = "1";
-                    result.msg = $"鍒涘缓浠诲姟澶辫触锛屾墭鐩�{model.Rfid}鏈壘鍒扮粦瀹氳揣浣�;
-                    AddErrorInfo("鏌ユ壘鎵樼洏璐т綅澶辫触", result.msg);
-                    return result;
-                }
-                #endregion
+                    #endregion
 
-                #region 鏍规嵁璐т綅妤煎眰鍒ゆ柇锛�妤煎幓寰�彔鐩樹綅 鍏朵粬鐨勫洖搴�-                var startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == Start).First();
-                if (startloc != null)
-                {
-                    if (startloc.N_LAYER == 3)
+                    #region 鍒涘缓浠诲姟
+                    if (startloc != null && loc != null)
                     {
-                        //鍙犵洏璐т綅璁$畻鍙犵洏璐т綅
-                        var dploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鍙犵洏" && a.N_LAYER == startloc.N_LAYER && a.S_WH_CODE.Trim() == startloc.S_WH_CODE).ToList();
-                        if (dploc.Count > 0)
+                        if (startloc.N_LOCK_STATE != 0 && loc.N_LOCK_STATE != 0)
                         {
-                            // LogHelper.Info($"鑾峰彇鍙犵洏璐т綅:{JsonConvert.SerializeObject(dploc)}");
-                            loc = dploc.FindAll(a => a.N_LOCK_STATE == 0 && a.N_CURRENT_NUM < 6).OrderByDescending(a => a.N_CURRENT_NUM).FirstOrDefault();
-                            if (loc == null)
-                            {
-                                result.code = "1";
-                                result.msg = $"鍙犵洏璐т綅涓嶅彲鐢�;
-                                AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
-                                return result;
-                            }
-                            else
-                            {
-                                endlayer = loc.N_CURRENT_NUM + 1;
-                            }
-                        }
-                        else
-                        {
-
                             result.code = "1";
-                            result.msg = $"鍙犵洏璐т綅涓嶅彲鐢�;
-                            LogHelper.Info($"鏍规嵁璐т綅澶囨敞锛氬彔鐩橈紝璐т綅妤煎眰:{startloc.N_LAYER},璐т綅浠撳簱:{startloc.S_WH_CODE}锛屾壘涓嶅埌鍙犵洏璐т綅");
-                            AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
+                            result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐硅揣浣嶇姸鎬亄startloc.N_LOCK_STATE},璧风偣璐т綅鐘舵�锛歿loc.N_LOCK_STATE}";
+                            AddErrorInfo("璐т綅鏈夐攣", result.msg);
                             return result;
                         }
-                    }
-                    else if (startloc.S_NOTE == "PM")
-                    {
-                        //鎵惧潡鑳跺爢鍙犲尯
-                        var KjDploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鐗囪兌鍫嗗彔浣� && a.S_WH_CODE.Trim() == startloc.S_WH_CODE).ToList();
-                        if (KjDploc.Count > 0)
+                        //鍒涘缓wcs浠诲姟
+                        var wcsTask = new WCSTask
                         {
-                            loc = KjDploc.FindAll(a => a.N_LOCK_STATE == 0 && a.N_CURRENT_NUM < 6).OrderByDescending(a => a.N_CURRENT_NUM).FirstOrDefault();
-                            if (loc == null)
-                            {
-                                result.code = "1";
-                                result.msg = $"鍙犵洏璐т綅涓嶅彲鐢�;
-                                AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
-                                return result;
-                            }
-                            else
-                            {
-                                endlayer = loc.N_CURRENT_NUM + 1;
-                            }
+                            S_CODE = WCSHelper.GenerateTaskNo(),
+                            S_TYPE = "绌哄伐瑁呭洖搴�,
+                            S_EQ_NO = model.TaskNumber,
+                            S_START_LOC = startloc.S_CODE,
+                            S_END_LOC = loc.S_CODE,
+                            S_START_WH = startloc.S_WH_CODE,
+                            S_START_AREA = startloc.S_AREA_CODE,
+                            S_END_WH = loc.S_WH_CODE,
+                            S_END_AREA = loc.S_AREA_CODE,
+                            N_CNTR_COUNT = 1,
+                            N_SCHEDULE_TYPE = 1,
+                            S_CNTR_CODE = model.Rfid,
+                            N_START_LAYER = 1,
+                            N_END_LAYER = endlayer,
+                            Z_TYPE = 5
+                        };
+                        LogHelper.Info("鍒涘缓绌烘墭鍥炲簱浠诲姟锛� + JsonConvert.SerializeObject(wcsTask));
+                        if (WCSHelper.CreateTask(wcsTask))
+                        {
+                            //LocationHelper.LockLoc(startloc.S_CODE, 2);
+                            //LocationHelper.LockLoc(loc.S_CODE, 1);
+                            //  绌烘墭鍥炲簱鍒ゆ柇鎵樼洏鏈夋棤缁戝畾鐗╂枡淇℃伅 濡傛灉鏈夊垯鍒犻櫎
+                            var itemcntr = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First();
+                            if (itemcntr != null) { db.Deleteable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).ExecuteCommand(); }
+                            LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
                         }
                         else
                         {
-                            LogHelper.Info($"鏍规嵁璐т綅澶囨敞锛氱墖鑳跺爢鍙犱綅,璐т綅浠撳簱:{startloc.S_WH_CODE}锛屾壘涓嶅埌鍙犵洏璐т綅");
                             result.code = "1";
-                            result.msg = $"鍙犵洏璐т綅涓嶅彲鐢�;
-                            AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
+                            result.msg = $"浠诲姟鍒涘缓澶辫触";
+                            AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
                             return result;
                         }
                     }
                     else
                     {
-                        #region 鏍规嵁鎵樼洏鎵惧懠鍙┖鎵樹换鍔★紝骞惰幏寰楀嚭搴撳簱鍖�-                        msts = WCSHelper.GetTaskBycntrcode(model.Rfid.Trim());
-                        if (msts.Count() > 0)
-                        {
-                            msts.RemoveAll(a => string.IsNullOrEmpty(a.S_CNTR_CODE));
-                            mst = msts.OrderByDescending(a => a.T_CREATE).FirstOrDefault();
-                        }
-                        if (mst != null)
-                        {
-                            LogHelper.Info($"鎵惧埌鍑哄簱浠诲姟锛歿JsonConvert.SerializeObject(mst)}");
-                            areacode = mst.S_START_AREA;
-                        }
-                        else
-                        {
-
-                            result.code = "1";
-                            result.msg = $"鍒涘缓浠诲姟澶辫触锛屾牴鎹墭鐩樼紪鐮亄model.Rfid}鏈壘鍒版墭鐩樺嚭搴撲换鍔�;
-                            LogHelper.Info($"{result.msg}");
-                            AddErrorInfo("鏌ユ壘浠诲姟澶辫触", result.msg, Source);
-                            return result;
-                        }
-                        if (string.IsNullOrEmpty(areacode))
-                        {
-
-                            result.code = "1";
-                            result.msg = $"鍒涘缓浠诲姟澶辫触锛屾牴鎹墭鐩樼紪鐮亄model.Rfid}鎵惧埌鍑哄簱浠诲姟{mst.S_CODE}鐨勮捣鐐瑰簱鍖轰负绌�;
-                            LogHelper.Info($"{result.msg}");
-                            AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
-                            return result;
-                        }
-                        #endregion
-
-                        //鍥炲簱璐т綅璁$畻搴撳尯璐т綅
-                        loc = StorageCompute(itemcode, areacode);
-                        if (loc == null)
-                        {
-                            loc = emptyRow(areacode);
-                            if (loc == null)
-                            {
-                                LogHelper.Info($"搴撳尯锛歿areacode}娌℃湁绌烘帓");
-                            }
-                        }
-                        else
-                        {
-
-                            result.code = "1";
-                            result.msg = $"搴撳尯:{areacode}鏃犲彲鐢ㄨ揣浣�;
-                            LogHelper.Info($"{result.msg}");
-                            AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
-                            return result;
-                        }
-                    }
-
-                }
-                else
-                {
-
-                    result.code = "1";
-                    result.msg = $"Empty==> 浠诲姟璧风偣:{Start}鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
-                    LogHelper.Info($"{result.msg}");
-                    AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
-                    return result;
-                }
-                #endregion
-
-                #region 鍒涘缓浠诲姟
-                if (!string.IsNullOrEmpty(Start) && loc != null)
-                {
-                    if (startloc.N_LOCK_STATE != 0)
-                    {
                         result.code = "1";
-                        result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐箋Start}鏈夐攣";
-                        AddErrorInfo("璐т綅鏈夐攣", result.msg);
+                        result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
                         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 = loc.S_CODE,
-                        S_START_WH = startloc.S_WH_CODE,
-                        S_START_AREA = startloc.S_AREA_CODE,
-                        S_END_WH = loc.S_WH_CODE,
-                        S_END_AREA = loc.S_AREA_CODE,
-                        N_CNTR_COUNT = 1,
-                        N_SCHEDULE_TYPE = 1,
-                        S_CNTR_CODE = model.Rfid,
-                        N_START_LAYER = 1,
-                        N_END_LAYER = endlayer,
-                        Z_TYPE = 5
-                    };
-                    LogHelper.Info("鍒涘缓鍑哄钩搴撲换鍔★細" + JsonConvert.SerializeObject(wcsTask));
-                    if (WCSHelper.CreateTask(wcsTask))
-                    {
-                        LocationHelper.LockLoc(Start, 2);
-                        LocationHelper.LockLoc(loc.S_CODE, 1);
-                        //  绌烘墭鍥炲簱鍒ゆ柇鎵樼洏鏈夋棤缁戝畾鐗╂枡淇℃伅 濡傛灉鏈夊垯鍒犻櫎
-                        var itemcntr = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First();
-                        if (itemcntr != null) { db.Deleteable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).ExecuteCommand(); }
-                        LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
-                    }
+                    #endregion
                 }
-                else
-                {
-                    result.code = "1";
-                    result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
-                    return result;
-                }
-                #endregion
+
             }
             catch (Exception ex)
             {
@@ -1306,6 +1391,8 @@
 
             return result;
         }
+
+        public static object _lockcallfixture = new object();
 
         /// <summary>
         /// 绌哄伐瑁呭懠鍙�@@ -1328,108 +1415,131 @@
             #region 鍙橀噺
             string Start = "";
             string End = model.TargetLocation;
-            string itemcode = "";
+
             string areacode = "";
             string cntrcode = "";
             Location startloc = new Location();
+            //  startloc = LocationHelper.GetLocByAreacode(areacode, model.CarrierType);
             #endregion
 
             try
             {
-                #region 鏍规嵁浠撳簱缂栫爜鍒ゆ柇搴撳尯 骞惰绠楀嚭搴撹揣浣�-                var endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == End).First();
-                if (endloc != null)
+                lock (_lockcallfixture)
                 {
-                    if (endloc.S_WH_CODE == "101")
+                    #region 鏍规嵁浠撳簱缂栫爜鍒ゆ柇搴撳尯 骞惰绠楀嚭搴撹揣浣�+                    var endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == End).First();
+                    //鏍规嵁浠撳簱 璁$畻搴撳尯
+                    if (endloc != null)
                     {
-                        // itemcode = "TP";
-                        areacode = "PMGQ";
-                    }
-                    else
-                    {
-                        //itemcode = "TP";
-                        areacode = "PK2";
-                    }
-                    areacode = "FLPK";
-                    //璁$畻鍑哄簱鎵樼洏
-                    startloc = airlift(areacode, itemcode);
-                    if (startloc != null)
-                    {
-                        var cntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == startloc.S_CODE).First();
-                        if (cntr != null)
+                        var whcode = Settings.wareLoc.Where(a => a.AreaCode == endloc.S_WH_CODE).FirstOrDefault();
+                        if (whcode != null)
                         {
-                            Start = cntr.S_LOC_CODE;
-                            cntrcode = cntr.S_CNTR_CODE;
+                            areacode = whcode.PMK;
                         }
                         else
                         {
                             result.code = "1";
-                            result.msg = $"鍒涘缓绌哄伐瑁呭懠鍙换鍔�=>鏍规嵁璐т綅{endloc.S_CODE}鏈壘鍒版墭鐩樿揣浣嶇粦瀹氬叧绯�;
+                            result.msg = $"鏍规嵁璧风偣浠撳簱缂栫爜锛歿endloc.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�;
+                            LogHelper.Info($"Putin==> {result.msg}");
+                            AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                            return result;
+                        }
+
+                        //璁$畻鍑哄簱鎵樼洏
+                        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();
+                            if (cntr != null)
+                            {
+                                Start = cntr.S_LOC_CODE;
+                                cntrcode = cntr.S_CNTR_CODE;
+                            }
+                            else
+                            {
+                                result.code = "1";
+                                result.msg = $"鍒涘缓绌哄伐瑁呭懠鍙换鍔�=>鏍规嵁璐т綅{endloc.S_CODE}鏈壘鍒版墭鐩樿揣浣嶇粦瀹氬叧绯�;
+                                LogHelper.Info($"callfixture:{result.msg}");
+                                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;
                         }
 
                     }
-
-                }
-                else
-                {
-
-                    result.code = "1";
-                    result.msg = $"浠诲姟璧风偣:{End}鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
-                    LogHelper.Info($"callfixture:{result.msg}");
-                    AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
-
-                }
-                #endregion
-
-                #region 鍒涘缓浠诲姟
-                if (!string.IsNullOrEmpty(Start) && !string.IsNullOrEmpty(End))
-                {
-                    if (startloc.N_LOCK_STATE != 0)
+                    else
                     {
+
                         result.code = "1";
-                        result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐箋Start}鏈夐攣";
-                        AddErrorInfo("璐т綅鏈夐攣", result.msg);
+                        result.msg = $"浠诲姟璧风偣:{End}鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
+                        LogHelper.Info($"callfixture:{result.msg}");
+                        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 = 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_CNTR_COUNT = 1,
-                        N_SCHEDULE_TYPE = 1,
-                        S_CNTR_CODE = cntrcode,
-                        N_START_LAYER = 1,
-                        N_END_LAYER = 1,
-                        Z_TYPE = 5
+                    #endregion
 
-                    };
-                    LogHelper.Info("鍒涘缓鍑哄钩搴撲换鍔★細" + JsonConvert.SerializeObject(wcsTask));
-                    if (WCSHelper.CreateTask(wcsTask))
+                    #region 鍒涘缓浠诲姟
+                    if (!string.IsNullOrEmpty(Start) && !string.IsNullOrEmpty(End))
                     {
-                        LocationHelper.LockLoc(Start, 2);
-                        LocationHelper.LockLoc(End, 1);
-                        LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
+                        if (startloc.N_LOCK_STATE != 0)
+                        {
+                            result.code = "1";
+                            result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐箋Start}鏈夐攣";
+                            AddErrorInfo("璐т綅鏈夐攣", result.msg);
+                            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 = 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_CNTR_COUNT = 1,
+                            N_SCHEDULE_TYPE = 1,
+                            S_CNTR_CODE = cntrcode,
+                            N_START_LAYER = 1,
+                            N_END_LAYER = 1,
+                            Z_TYPE = 5,
+                            S_NOTE = "绮夋枡"
+                        };
+                        LogHelper.Info("鍒涘缓鍛煎彨绌烘墭浠诲姟锛� + JsonConvert.SerializeObject(wcsTask));
+                        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 = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
+                    else
+                    {
+                        result.code = "1";
+                        result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
+                        return result;
+                    }
                     return result;
+                    #endregion
                 }
-                return result;
-                #endregion
+
 
             }
             catch (Exception ex)
@@ -1444,6 +1554,7 @@
 
         }
 
+        public static object _lockItemBack = new object();
         /// <summary>
         /// 浣欐枡杩斿洖
         /// </summary>
@@ -1475,93 +1586,123 @@
 
             try
             {
-                #region 鍒ゆ柇鎵樼洏缁戝畾璐т綅鏄惁鍜屼笅鍙戠粦瀹氳捣鐐圭浉鍚�-                var CntrLoc = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First();
-                if (CntrLoc != null)
+                lock (_lockItemBack)
                 {
-                    if (CntrLoc.S_LOC_CODE != Start)
+                    #region 浣欐枡杩斿洖鏍规嵁鎵樼洏鎵惧嚭搴撲换鍔�+                    //浣欐枡杩斿洖鏍规嵁鎵樼洏鎵惧嚭搴撲换鍔�+                    //msts = WCSHelper.GetTaskBycntrcode(model.Rfid);
+                    //if (msts.Count() > 0)
+                    //{
+                    //    msts.RemoveAll(a => string.IsNullOrEmpty(a.S_CNTR_CODE));
+                    //    mst = msts.OrderByDescending(a => a.T_CREATE).FirstOrDefault();
+                    //}
+                    //if (mst != null)
+                    //{
+                    //    areacode = mst.S_START_AREA;
+                    //}
+                    //else
+                    //{
+                    //    result.code = "1";
+                    //    result.msg = $"鍒涘缓浠诲姟澶辫触锛屾牴鎹墭鐩樼紪鐮亄model.Rfid}鏈壘鍒版墭鐩樺嚭搴撲换鍔�;
+                    //    AddErrorInfo("鏌ユ壘浠诲姟澶辫触", result.msg);
+                    //    return result;
+                    //}
+                    //if (string.IsNullOrEmpty(areacode))
+                    //{
+                    //    LogHelper.Info($"鍒涘缓浠诲姟澶辫触锛屾牴鎹墭鐩樼紪鐮亄model.Rfid}鎵惧埌鍑哄簱浠诲姟{mst.S_CODE}鐨勮捣鐐瑰簱鍖轰负绌�);
+                    //    result.code = "1";
+                    //    result.msg = $"鍒涘缓浠诲姟澶辫触锛屾牴鎹墭鐩樼紪鐮亄model.Rfid}鎵惧埌鍑哄簱浠诲姟{mst.S_CODE}鐨勮捣鐐瑰簱鍖轰负绌�;
+                    //    AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg);
+                    //    return result;
+                    //}
+                    #endregion
+
+                    #region 鍒ゆ柇鎵樼洏缁戝畾璐т綅鏄惁鍜屼笅鍙戠粦瀹氳捣鐐圭浉鍚�+                    var CntrLoc = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First();
+                    if (CntrLoc != null)
                     {
-
-                        result.code = "1";
-                        result.msg = $"鍒涘缓浠诲姟澶辫触锛屾墭鐩�{model.Rfid}缁戝畾浣嶇疆涓嶆槸璧风偣锛歿Start}";
-                        LogHelper.Info($"ItemBack锛歿result.msg}");
-                        AddErrorInfo("鎵樼洏缁戝畾浣嶇疆涓嶅悓", result.msg, Source);
-                        return result;
-                    }
-                }
-                else
-                {
-
-                    result.code = "1";
-                    result.msg = $"鍒涘缓浠诲姟澶辫触锛屾墭鐩�{model.Rfid}鏈壘鍒扮粦瀹氳揣浣�;
-                    LogHelper.Info($"ItemBack锛歿result.msg}");
-                    AddErrorInfo("鏌ユ壘鎵樼洏璐т綅澶辫触", result.msg, Source);
-                    return result;
-                }
-                #endregion
-
-                #region 浣欐枡杩斿洖鏍规嵁鎵樼洏鎵惧嚭搴撲换鍔�-                //浣欐枡杩斿洖鏍规嵁鎵樼洏鎵惧嚭搴撲换鍔�-                //msts = WCSHelper.GetTaskBycntrcode(model.Rfid);
-                //if (msts.Count() > 0)
-                //{
-                //    msts.RemoveAll(a => string.IsNullOrEmpty(a.S_CNTR_CODE));
-                //    mst = msts.OrderByDescending(a => a.T_CREATE).FirstOrDefault();
-                //}
-                //if (mst != null)
-                //{
-                //    areacode = mst.S_START_AREA;
-                //}
-                //else
-                //{
-                //    result.code = "1";
-                //    result.msg = $"鍒涘缓浠诲姟澶辫触锛屾牴鎹墭鐩樼紪鐮亄model.Rfid}鏈壘鍒版墭鐩樺嚭搴撲换鍔�;
-                //    AddErrorInfo("鏌ユ壘浠诲姟澶辫触", result.msg);
-                //    return result;
-                //}
-                //if (string.IsNullOrEmpty(areacode))
-                //{
-                //    LogHelper.Info($"鍒涘缓浠诲姟澶辫触锛屾牴鎹墭鐩樼紪鐮亄model.Rfid}鎵惧埌鍑哄簱浠诲姟{mst.S_CODE}鐨勮捣鐐瑰簱鍖轰负绌�);
-                //    result.code = "1";
-                //    result.msg = $"鍒涘缓浠诲姟澶辫触锛屾牴鎹墭鐩樼紪鐮亄model.Rfid}鎵惧埌鍑哄簱浠诲姟{mst.S_CODE}鐨勮捣鐐瑰簱鍖轰负绌�;
-                //    AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg);
-                //    return result;
-                //}
-                #endregion
-
-                #region 鏍规嵁鐗╂枡缂栫爜 鍒ゆ柇鍥炲簱杩樻槸鍥炲埌瀵瑰簲鏆傚瓨鍖�
-                var startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == Start).First();
-                if (startloc != null)
-                {
-                    //绮夋枡鐩存帴鍥炲簱锛屽叾浠栫墿鏂欓渶瑕佸幓瀵瑰簲鐨勬殏瀛樺尯
-                    if (model.PartNumber.StartsWith("4X"))
-                    {
-                        areacode = "FLPK";
-                        loc = StorageCompute(itemcode, areacode);
-                        if (loc == null)
+                        if (CntrLoc.S_LOC_CODE != Start)
                         {
-                            loc = emptyRow(areacode);
+
+                            result.code = "1";
+                            result.msg = $"鍒涘缓浠诲姟澶辫触锛屾墭鐩�{model.Rfid}缁戝畾浣嶇疆涓嶆槸璧风偣锛歿Start}";
+                            LogHelper.Info($"ItemBack锛歿result.msg}");
+                            AddErrorInfo("鎵樼洏缁戝畾浣嶇疆涓嶅悓", result.msg, Source);
+                            return result;
                         }
                     }
                     else
                     {
-                        if (model.PartNumber.StartsWith("3"))
+                        if (db.Updateable(new LocCntrRel() { S_CNTR_CODE = model.Rfid, S_LOC_CODE = Start }).UpdateColumns().ExecuteCommand() <= 0)
                         {
-                            areacode = "KJYLZCW";
-                        }
-                        else
-                        {
-
                             result.code = "1";
-                            result.msg = $"鍒涘缓浠诲姟澶辫触锛岀墿鏂欏彿{model.PartNumber}涓嶅睘浜庤瀹氱墿鏂�;
+                            result.msg = $"鍒涘缓浠诲姟澶辫触锛屾墭鐩�{model.Rfid}缁戝畾璐т綅{Start}澶辫触";
                             LogHelper.Info($"ItemBack锛歿result.msg}");
-                            AddErrorInfo("鐗╂枡缂栫爜鏍煎紡閿欒", result.msg, Source);
+                            AddErrorInfo("鎵樼洏缁戝畾璐т綅澶辫触", result.msg, Source);
                             return result;
                         }
-                        var EndLocs = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == areacode).ToList();
-                        if (EndLocs.Count > 0)
+
+                    }
+                    #endregion
+
+                    #region 鏍规嵁鐗╂枡缂栫爜 鍒ゆ柇鍥炲簱杩樻槸鍥炲埌瀵瑰簲鏆傚瓨鍖�
+                    var startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == Start).First();
+                    if (startloc != null)
+                    {
+                        var whcode = Settings.wareLoc.Where(a => a.AreaCode == startloc.S_WH_CODE).FirstOrDefault();
+                        if (whcode != null)
                         {
-                            loc = EndLocs.Find(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0);
+                            //绮夋枡鐩存帴鍥炲簱锛屽叾浠栫墿鏂欓渶瑕佸幓瀵瑰簲鐨勬殏瀛樺尯
+                            #region 鏍规嵁鐗╂枡鍒ゆ柇鍥炲簱搴撳尯
+                            if (model.PartNumber.StartsWith("4X"))
+                            {
+                                areacode = whcode.PMK;
+                                //loc = StorageCompute(itemcode, areacode);
+                                //if (loc == null)
+                                //{
+                                //    loc = emptyRow(areacode);
+                                //}
+                            }
+                            else
+                            {
+
+
+                                if (model.PartNumber.StartsWith("3"))
+                                {
+                                    areacode = whcode.ZCW;
+                                }
+                                else
+                                {
+
+                                    result.code = "1";
+                                    result.msg = $"鍒涘缓浠诲姟澶辫触锛岀墿鏂欏彿{model.PartNumber}涓嶅睘浜庤瀹氱墿鏂�;
+                                    LogHelper.Info($"ItemBack锛歿result.msg}");
+                                    AddErrorInfo("鐗╂枡缂栫爜鏍煎紡閿欒", result.msg, Source);
+                                    return result;
+                                }
+
+
+                            }
+                            #endregion
+
+
+                            var EndLocs = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == areacode).ToList();
+                            //鏌ユ壘璐т綅搴撳尯
+                            if (EndLocs.Count > 0)
+                            {
+                                //loc =  EndLocs.Find(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0);
+                                loc = FindEndcolByLocList(EndLocs);
+
+
+                            }
+                            else
+                            {
+                                result.code = "1";
+                                result.msg = $"鏍规嵁缁堢偣搴撳尯锛歿areacode},鏈壘鍒板搴旇揣浣�;
+                                AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                                return result;
+                            }
+
                             if (loc != null)
                             {
                                 End = loc.S_CODE;
@@ -1569,105 +1710,118 @@
                             else
                             {
                                 result.code = "1";
-                                result.msg = $"缁堢偣搴撳尯锛歿areacode}鏃犲彲鐢ㄨ揣浣�;
-                                AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
+                                result.msg = $"搴撳尯:{areacode}鏃犲彲鐢ㄨ揣浣�;
+                                AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
                                 return result;
                             }
 
                         }
                         else
                         {
+
                             result.code = "1";
-                            result.msg = $"鏍规嵁缁堢偣搴撳尯锛歿areacode},鏈壘鍒板搴旇揣浣�;
+                            result.msg = $"鏍规嵁璧风偣浠撳簱缂栫爜锛歿startloc.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�;
+                            LogHelper.Info($"Putin==> {result.msg}");
                             AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
                             return result;
                         }
-                        //loc = StorageCompute(itemcode, areacode);
-                        //if (loc == null)
-                        //{
-                        //    loc = emptyRow(areacode);
-                        //}
-                    }
-                    if (loc != null)
-                    {
-                        End = loc.S_CODE;
+
                     }
                     else
                     {
 
                         result.code = "1";
-                        result.msg = $"搴撳尯:{areacode}鏃犲彲鐢ㄨ揣浣�;
+                        result.msg = $"璐т綅:{Start}鎵句笉鍒板搴旇揣浣�;
                         AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
                         return result;
                     }
-                }
-                else
-                {
 
-                    result.code = "1";
-                    result.msg = $"璐т綅:{Start}鎵句笉鍒板搴旇揣浣�;
-                    AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
-                    return result;
-                }
+                    #endregion
 
-                #endregion
+                    #region 鍒涘缓浠诲姟
+                    if (!string.IsNullOrEmpty(Start) && !string.IsNullOrEmpty(End))
+                    {
+                        if (startloc.N_LOCK_STATE != 0)
+                        {
+                            result.code = "1";
+                            result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐箋Start}鏈夐攣";
+                            AddErrorInfo("璐т綅鏈夐攣", result.msg);
+                            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 = startloc.S_WH_CODE,
+                            S_START_AREA = startloc.S_AREA_CODE,
+                            S_END_WH = loc.S_WH_CODE,
+                            S_END_AREA = loc.S_AREA_CODE,
+                            N_CNTR_COUNT = 1,
+                            N_SCHEDULE_TYPE = 1,
+                            S_CNTR_CODE = model.Rfid,
+                            N_START_LAYER = 1,
+                            N_END_LAYER = 1,
+                            Z_TYPE = 5
 
-                #region 鍒涘缓浠诲姟
-                if (!string.IsNullOrEmpty(Start) && !string.IsNullOrEmpty(End))
-                {
-                    if (startloc.N_LOCK_STATE != 0)
+                        };
+                        LogHelper.Info("鍒涘缓鍑哄钩搴撲换鍔★細" + JsonConvert.SerializeObject(wcsTask));
+                        if (WCSHelper.CreateTask(wcsTask))
+                        {
+                            //LocationHelper.LockLoc(Start, 2);
+                            //LocationHelper.LockLoc(End, 1);
+                            //鍒涘缓浠诲姟鎴愬姛 鏇存柊浣欐枡淇℃伅
+                            var CntrItem = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First();
+                            if (CntrItem != null)
+                            {
+                                CntrItem.F_WEIGHT = model.LotList[0].Weight.ToString();
+                                CntrItem.S_BS_TYPE = "浣欐枡";
+                                CntrItem.F_QTY = float.Parse(model.LotList[0].qty);
+                                CntrItem.S_ITEM_STATE = model.LotList[0].QualityStatus;
+
+                                db.Updateable(CntrItem).UpdateColumns(a => new { a.F_WEIGHT, a.S_BS_TYPE }).ExecuteCommand();
+                            }
+                            else
+                            {
+                                var cir = new CntrItemDetail
+                                {
+                                    S_CNTR_CODE = model.Rfid,
+                                    S_ITEM_CODE = itemcode,
+                                    S_ITEM_NAME = model.PartNumber,
+                                    S_ITEM_SPEC = model.PartDesc,
+                                    F_QTY = float.Parse(model.LotList[0].qty),
+                                    S_BS_TYPE = "浣欐枡",
+                                    F_WEIGHT = model.LotList[0].Weight.ToString(),
+                                    S_ITEM_STATE = model.LotList[0].QualityStatus,
+                                    D_EXP_DATE = model.LotList[0].MaturityTime,
+                                    D_PRD_DATE = model.LotList[0].ProductionTime
+                                };
+                                db.Insertable<CntrItemDetail>(cir).ExecuteCommand();
+                            }
+                            LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
+                        }
+                        else
+                        {
+                            result.code = "1";
+                            result.msg = $"浠诲姟鍒涘缓澶辫触";
+                            AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
+                            return result;
+                        }
+                    }
+                    else
                     {
                         result.code = "1";
-                        result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐箋Start}鏈夐攣";
-                        AddErrorInfo("璐т綅鏈夐攣", result.msg);
+                        result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
                         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 = startloc.S_WH_CODE,
-                        S_START_AREA = startloc.S_AREA_CODE,
-                        S_END_WH = loc.S_WH_CODE,
-                        S_END_AREA = loc.S_AREA_CODE,
-                        N_CNTR_COUNT = 1,
-                        N_SCHEDULE_TYPE = 1,
-                        S_CNTR_CODE = model.Rfid,
-                        N_START_LAYER = 1,
-                        N_END_LAYER = 1,
-                        Z_TYPE = 5
-
-                    };
-                    LogHelper.Info("鍒涘缓鍑哄钩搴撲换鍔★細" + JsonConvert.SerializeObject(wcsTask));
-                    if (WCSHelper.CreateTask(wcsTask))
-                    {
-                        LocationHelper.LockLoc(Start, 2);
-                        LocationHelper.LockLoc(End, 1);
-                        //鍒涘缓浠诲姟鎴愬姛 鏇存柊浣欐枡淇℃伅
-                        var CntrItem = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First();
-                        if (CntrItem != null)
-                        {
-                            CntrItem.F_WEIGHT = model.LotList[0].Weight.ToString();
-                            CntrItem.S_BS_TYPE = "浣欐枡";
-                            CntrItem.F_QTY = float.Parse(model.LotList[0].qty);
-                            CntrItem.S_ITEM_STATE = model.LotList[0].QualityStatus;
-
-                            db.Updateable(CntrItem).UpdateColumns(a => new { a.F_WEIGHT, a.S_BS_TYPE }).ExecuteCommand();
-                        }
-                        LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
-                    }
+                    #endregion
                 }
-                else
-                {
-                    result.code = "1";
-                    result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
-                    return result;
-                }
-                #endregion
+
+
+
 
                 return result;
             }
@@ -1753,7 +1907,7 @@
             {
                 result.code = "1";
                 result.msg = "鍙傛暟涓簄ull";
-                AddErrorInfo("鍙傛暟涓虹┖", result.msg,Source);
+                AddErrorInfo("鍙傛暟涓虹┖", result.msg, Source);
                 return result;
             }
             try
@@ -1762,24 +1916,27 @@
                 if (db.Queryable<TN_Material>().Where(a => a.S_ITEM_CODE == model.PartNumber).Count() > 0)
                 {
                     result.code = "1";
-                    result.msg = "鐗╂枡涓绘暟鎹凡瀛樺湪";
-                    AddErrorInfo("鐗╂枡涓绘暟鎹凡瀛樺湪", result.msg,Source);
+                    result.msg = $"鐗╂枡缂栫爜:{model.PartNumber}鐨勭墿鏂欎富鏁版嵁宸插瓨鍦�;
+                    //  AddErrorInfo("鐗╂枡涓绘暟鎹凡瀛樺湪", result.msg, Source);
+                    LogHelper.Info($"add:{result.msg}");
                     return result;
                 }
                 TN_Material itemInfo = new TN_Material();
                 itemInfo.S_ITEM_CODE = model.PartNumber;
                 itemInfo.ITEM_TYPE = model.PartClass;
                 itemInfo.S_ITEM_NAME = model.PartDesc;
-                itemInfo.REMARK1 = model.StewingTime.ToString("yyyy-MM-dd");
-                itemInfo.REMARK2 = model.OverdueTime.ToString("yyyy-MM-dd");
+                itemInfo.REMARK1 = model.StewingTime;
+                itemInfo.REMARK2 = model.OverdueTime;
                 itemInfo.S_MP_TYPE = model.Unit;
-
-                db.Insertable<TN_Material>(itemInfo).ExecuteCommand();
+                if (db.Insertable<TN_Material>(itemInfo).ExecuteCommand() > 0)
+                {
+                    LogHelper.Info($"add:鐗╂枡缂栫爜:{model.PartNumber}鐨勭墿鏂欎富鏁版嵁宸插悓姝�);
+                }
+                ;
                 return result;
             }
             catch (Exception ex)
             {
-
                 result.code = "1";
                 result.msg = $"鐗╂枡涓绘暟鎹垱寤哄け璐�閿欒淇℃伅锛歿ex}";
                 LogHelper.Error("add Error锛� + ex.ToString(), ex);
@@ -1869,9 +2026,16 @@
                     LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask");
                     if (WCSHelper.CreateTask(wcsTask))
                     {
-                        LocationHelper.LockLoc(Start, 2);
-                        LocationHelper.LockLoc(End, 1);
+                        //LocationHelper.LockLoc(Start, 2);
+                        //LocationHelper.LockLoc(End, 1);
                         LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
+                    }
+                    else
+                    {
+                        result.code = "1";
+                        result.msg = $"浠诲姟鍒涘缓澶辫触";
+                        AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
+                        return result;
                     }
                 }
                 else
@@ -1909,7 +2073,7 @@
             {
                 result.code = "1";
                 result.msg = "鍙傛暟涓簄ull";
-                AddErrorInfo("鍙傛暟涓虹┖", result.msg,Source);
+                AddErrorInfo("鍙傛暟涓虹┖", result.msg, Source);
                 return result;
             }
 
@@ -1929,14 +2093,14 @@
                     {
                         result.code = "1";
                         result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐箋startloc.S_CODE}鏈夐攣";
-                        AddErrorInfo("璐т綅鏈夐攣", result.msg,Source);
+                        AddErrorInfo("璐т綅鏈夐攣", result.msg, Source);
                         return result;
                     }
 
                     var cntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == startloc.S_CODE).First();
                     if (cntr == null)
                     {
-                      
+
                         result.code = "1";
                         result.msg = $"璧风偣{model.Data.start_loc_code}鏈煡璇㈢粦瀹氭墭鐩�;
                         LogHelper.Info($"callfixture:鍒涘缓绌哄伐瑁呭懠鍙换鍔�=>{result.msg}");
@@ -1947,18 +2111,19 @@
                     // 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();
 
-                    string dtcode = "DT-01";
-                    //妤煎眰鐢垫鍒嗛厤
-                    var Diantiloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == dtcode).First();
-                    if (Diantiloc == null)
-                    {
-                        result.code = "1";
-                        result.msg = $"鍒涘缓浠诲姟澶辫触锛屾牴鎹揣浣嶇紪鐮�{dtcode}鏈壘鍒扮數姊揣浣�;
-                        AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg,Source);
-                        return result;
-                    }
+                    //string dtcode = "DT-01";
+                    ////妤煎眰鐢垫鍒嗛厤
+                    //var Diantiloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == dtcode).First();
+                    //if (Diantiloc == null)
+                    //{
+                    //    result.code = "1";
+                    //    result.msg = $"鍒涘缓浠诲姟澶辫触锛屾牴鎹揣浣嶇紪鐮�{dtcode}鏈壘鍒扮數姊揣浣�;
+                    //    AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
+                    //    return result;
+                    //}
 
-                    //鏍规嵁鐢垫鏁伴噺鍒ゆ柇閫佸線鍝釜鐢垫 锛堝叿浣撶數姊祦绋嬫牴鎹幇鍦虹數姊暟閲忥級
+                    //鏍规嵁浠诲姟鏁伴噺鍒ゆ柇閫佸線鍝釜鐢垫 锛堝叿浣撶數姊祦绋嬫牴鎹幇鍦虹數姊暟閲忥級
+                    var elevatorLoc = LocationHelper.GetElevatorLoc();
 
                     //鍒涘缓wcs鍒嗘浠诲姟
                     var wcsTask = new WCSTask
@@ -1968,12 +2133,12 @@
                         S_TYPE = "鐢垫1",
                         S_EQ_NO = model.Data.task_no,
                         S_START_LOC = startloc.S_CODE,
-                        S_END_LOC = Diantiloc.S_CODE,
+                        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 = endloc.S_WH_CODE,
-                        S_END_AREA = endloc.S_AREA_CODE,
+                        S_END_WH = elevatorLoc.S_WH_CODE,
+                        S_END_AREA = elevatorLoc.S_AREA_CODE,
                         N_SCHEDULE_TYPE = 1,
                         S_CNTR_CODE = cntr.S_CNTR_CODE,
                         N_END_LAYER = 1,
@@ -1984,11 +2149,11 @@
                         S_CODE = WCSHelper.GenerateTaskNo(),
                         S_TYPE = "鐢垫2",
                         S_EQ_NO = model.Data.task_no,
-                        S_START_LOC = Diantiloc.S_CODE,
+                        S_START_LOC = elevatorLoc.S_CODE,
                         S_END_LOC = endloc.S_CODE,
                         N_CNTR_COUNT = 1,
-                        S_START_WH = startloc.S_WH_CODE,
-                        S_START_AREA = startloc.S_AREA_CODE,
+                        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,
@@ -2001,9 +2166,16 @@
                     if (WCSHelper.CreateTask(wcsTask) && WCSHelper.CreateTask(wcsTask1))
                     {
 
-                        LocationHelper.LockLoc(startloc.S_CODE, 2);
-                        LocationHelper.LockLoc(endloc.S_CODE, 1);
+                        //LocationHelper.LockLoc(startloc.S_CODE, 2);
+                        //LocationHelper.LockLoc(endloc.S_CODE, 1);
                         LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
+                    }
+                    else
+                    {
+                        result.code = "1";
+                        result.msg = $"浠诲姟鍒涘缓澶辫触";
+                        AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
+                        return result;
                     }
 
                 }
@@ -2026,8 +2198,6 @@
             }
 
         }
-
-
 
         /// <summary>
         /// 璐т綅淇℃伅涓婁紶
@@ -2098,7 +2268,75 @@
             return result;
         }
 
+        /// <summary>
+        /// 搴撲綅娓呯┖
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        internal static Result ClearLocCntr(ClearTask model)
+        {
+            Result result = new Result() { code = "200", msg = "搴撲綅娓呴櫎鎴愬姛" };
+            string Source = "MES";
+            if (model == null)
+            {
+                result.code = "1";
+                result.msg = "鍙傛暟涓簄ull";
+                AddErrorInfo("鍙傛暟涓虹┖", result.msg, Source);
+                return result;
+            }
+            string loc = model.LocationNum;
+            var db = new SqlHelper<object>().GetInstance();
+            try
+            {
+                var location = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == loc).First();
+                if (location != null)
+                {
+                    var loccntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == loc).First();
 
+                    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)
+                        {
+                            //娓呴櫎鎵樼洏鐗╂枡缁戝畾鍏崇郴
+                            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($"娓呴櫎鎵樼洏璐т綅鍏崇郴鎴愬姛");
+                        }
+
+                    }
+                    else
+                    {
+                        LogHelper.Info($"ClearLocCntr 璐т綅{loc}鏃犳墭鐩樿揣浣嶇粦瀹氬叧绯�);
+                    }
+                }
+                else
+                {
+                    result.code = "1";
+                    result.msg = $"鏍规嵁璐т綅:{loc}鎵句笉鍒拌揣浣嶅叧绯�;
+                    AddErrorInfo("璐т綅涓虹┖", result.msg, Source);
+                    return result;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Info($"ClearLocCntr Error锛歿ex}");
+                db.Ado.CommitTran();
+                result.code = "1";
+                result.msg = $"Error锛歿ex}";
+                return result;
+
+            }
+
+            return result;
+        }
         /// <summary>
         /// 搴撲綅娓呯┖
         /// </summary>
@@ -2122,31 +2360,48 @@
                 var location = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == loc).First();
                 if (location != null)
                 {
-                    var loccntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == loc).First();
-
-                    if (loccntr != null)
+                    var loccntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == loc).ToList();
+                    if (loccntr.Count > 0)
                     {
-
-                        string cntrcode = loccntr.S_CNTR_CODE;
-                        var CntrItem = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == cntrcode).First();
-                        if (CntrItem != null)
+                        foreach (var item in loccntr)
                         {
+                            string cntrcode = item.S_CNTR_CODE;
+                            LocationHelper.UnBindingLoc(loc, new List<string>() { cntrcode });
+                            var CntrItem = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == cntrcode).First();
+                            if (CntrItem != null)
+                            {
+                                db.Deleteable<Container>().Where(it => it.S_CODE == item.S_CNTR_CODE).ExecuteCommand();
+                                // db.Deleteable<LocCntrRel>().Where(it => it.S_LOC_CODE.Trim() == loc).ExecuteCommand();
+                                if (db.Deleteable<CntrItemDetail>().Where(it => it.S_CNTR_CODE == cntrcode).ExecuteCommand() > 0)
+                                {
+                                    LogHelper.Info($"ClearLoc 搴撲綅娓呴櫎鎴愬姛");
+                                }
+                                else
+                                {
+                                    LogHelper.Info($"ClearLoc 搴撲綅娓呴櫎澶辫触");
+                                    result.code = "1";
+                                    result.msg = "搴撲綅娓呴櫎澶辫触";
+                                    AddErrorInfo("搴撲綅娓呴櫎澶辫触", result.msg, Source);
+                                    return result;
+                                }
+                            }
+                            else
+                            {
+                                LogHelper.Info($"搴撳尯娓呯┖=銆嬫墭鐩�{cntrcode}鏃犵墿鏂欐暟鎹�);
 
-                            LocationHelper.UnBindingLoc(loc, new List<string>() { "cntrcode" });
-                            //  db.Deleteable<LocCntrRel>().Where(it => it.S_LOC_CODE.Trim() == loc).ExecuteCommand();
-                            db.Deleteable<CntrItemDetail>().Where(it => it.S_CNTR_CODE.Trim() == cntrcode).ExecuteCommand();
-
-                        }
-                        else
-                        {
-                            LogHelper.Info($"ClearLoc 鎵樼洏{cntrcode}鏃犵墿鏂欑粦瀹氬叧绯�);
+                            }
                         }
 
                     }
                     else
                     {
-                        LogHelper.Info($"ClearLoc 璐т綅{loc}鏃犳墭鐩樿揣浣嶇粦瀹氬叧绯�);
+                        result.code = "1";
+                        result.msg = $" ClearLoc 璐т綅{loc}鏃犳墭鐩樿揣浣嶇粦瀹氬叧绯�;
+                        AddErrorInfo("搴撲綅娓呴櫎澶辫触", result.msg, Source);
+                        return result;
+
                     }
+
                 }
                 else
                 {
@@ -2168,10 +2423,104 @@
 
             return result;
         }
+        /// <summary>
+        /// 璁惧鐘舵�涓婃姤
+        /// </summary>
+        /// <returns></returns>
+        internal static DeviceInfoModel Device()
+        {
+            var db = new SqlHelper<HangChaAGV>().GetInstance();
+            DeviceInfoModel device = new DeviceInfoModel();
 
+            List<DeviceInfos> deviceInfos = new List<DeviceInfos>();//鍙犵洏鏈烘姤閿欎俊鎭�+                                                                    // 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;
+            //鑾峰彇杞﹁締鎶ヨ淇℃伅
+            var agvDeviceInfo = db.Queryable<HangChaAGV>().ToList();
+            if (agvDeviceInfo.Count > 0)
+            {
+                device.AgvQty = agvDeviceInfo.Count;
+                device.AgvErrorQty = agvDeviceInfo.FindAll(a => a.agvErrCode != "0" || a.agvErrCode != "0" || a.faildCode != "0").Count;
+                device.AgvChargeQty = agvDeviceInfo.FindAll(a => a.agvErrCode == "1").Count;
+                device.AgvRunQty = agvDeviceInfo.FindAll(a => a.agvErrCode == "1").Count;
+                foreach (var agv in agvDeviceInfo)
+                {
+                    string agvErrorInfo = GetAgvAlarmSendCodeTwo(agv.agvErrCode, agv.errCode2, agv.faildCode);
+                    deviceInfos.Add(new DeviceInfos() { AgvNo = agv.agvNo, AgvInfo = agvErrorInfo });
+                }
+            }
+            device.DeviceInfos = deviceInfos;
+
+            return device;
+        }
+
+        /// <summary>
+        /// agv灏忚溅鏁呴殰鐮佸鐞�+        /// </summary>
+        /// <param name="errCode1">閿欒鐮�</param>
+        /// <param name="errCode2">閿欒鐮�</param>
+        /// <param name="faildCode">閿欒鐮�</param>
+        /// <returns></returns>
+        private static string GetAgvAlarmSendCodeTwo(string errCode1, string errCode2, string faildCode)
+        {
+            string result = "";
+            //灏嗘姤璀︿俊鎭暣鍚�+            string binSW1 = Convert.ToString(int.Parse(errCode1), 2).PadLeft(22, '0');
+            string binSW2 = Convert.ToString(int.Parse(errCode1), 2).PadLeft(20, '0');
+            string binFc = Convert.ToString(int.Parse(errCode1), 2).PadLeft(16, '0');
+            var arr1 = binSW1.ToArray();
+            var arr2 = binSW2.ToArray();
+            var arr3 = binFc.ToArray();
+
+            for (int i = 0; i <= arr1.Length; i++)
+            {
+                if (arr1[i] == '1')
+                {
+                    var ErrorInfo = Settings.agvErrorCode1.Where(a => a.ErrorCode == i).FirstOrDefault();
+                    if (ErrorInfo != null)
+                    {
+                        result = result + "," + $"{ErrorInfo.ErrorInfo}";
+                    }
+
+                }
+            }
+            for (int i = 0; i <= arr2.Length; i++)
+            {
+                if (arr1[i] == '1')
+                {
+                    var ErrorInfo = Settings.agvErrorCode2.Where(a => a.ErrorCode == i).FirstOrDefault();
+                    if (ErrorInfo != null)
+                    {
+                        result = result + "," + $"{ErrorInfo.ErrorInfo}";
+                    }
+
+                }
+            }
+            for (int i = 0; i <= arr3.Length; i++)
+            {
+                if (arr1[i] == '1')
+                {
+                    var ErrorInfo = Settings.agvFaildCode.Where(a => a.ErrorCode == i).FirstOrDefault();
+                    if (ErrorInfo != null)
+                    {
+                        result = result + "," + $"{ErrorInfo.ErrorInfo}";
+                    }
+
+                }
+            }
+            return result;
+        }
         #endregion
 
         #region 鍚堣偉浣抽�涓氬姟鏂规硶
+
+
         /// <summary>
         /// 鎵樼洏鍏ュ簱绠楁硶 
         /// </summary>
@@ -2181,53 +2530,55 @@
         internal static Location StorageCompute(string itemcode, string areacode)
         {
             var db = new SqlHelper<object>().GetInstance();
-            Location result = null;
-            //鏌ヨ鎵�湁鏈夋墭鐩樼殑鎺�-            var list = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM > 0 && a.S_AREA_CODE.Trim() == areacode).OrderByDescending(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).ToList();
-            if (list.Count > 0)
-            {
-                for (int i = 0; i < list.Count; i++)
-                {
-                    LogHelper.Info($"鏈夋墭鐩樻帓鍙穥list[i].N_ROW}锛岀墿鏂欑紪鐮亄itemcode},搴撳尯{areacode}");
-                    //鍒ゆ柇鎵樼洏鐗╂枡鏄惁鐩稿悓鐗╂枡淇℃伅鐩稿悓
-                    var cntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == list[i].S_CODE).First();
-                    if (cntr != null)
-                    {
-                        if (string.IsNullOrEmpty(itemcode))//绌烘墭鍏ュ簱
-                        {
-                            var iteminfo = ContainerHelper.GetCntrItemRel(cntr.S_CNTR_CODE).FirstOrDefault();
-                            if (iteminfo == null)
-                            {
-                                //鐗╂枡鐩稿悓鍏ヨ揣浣嶅悗涓�綅璐т綅
-                                result = db.Queryable<Location>().OrderBy(a => a.N_COL).Where(a => a.S_AREA_CODE.Trim() == areacode && a.N_ROW == list[i].N_ROW && a.N_COL > list[i].N_COL).First();
-                            }
-                        }
-                        else//婊℃嫋鍏ュ簱
-                        {
-                            var iteminfo = ContainerHelper.GetCntrItemRel(cntr.S_CNTR_CODE).FirstOrDefault();
-                            if (iteminfo != null)
-                            {
-                                if (iteminfo.S_ITEM_CODE == itemcode)
-                                {
-                                    //鐗╂枡鐩稿悓鍏ヨ揣浣嶅悗涓�綅璐т綅
-                                    result = db.Queryable<Location>().OrderBy(a => a.N_COL).Where(a => a.S_AREA_CODE.Trim() == areacode && a.N_ROW == list[i].N_ROW && a.N_COL > list[i].N_COL).First();
+            Location result = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM == 0 && a.S_AREA_CODE.Trim() == areacode && a.N_LOCK_STATE == 0).First();
+            //鏌ヨ鎵�湁鏈夋墭鐩樼殑鎺掓病閿佺殑鎺�+            // var list = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM > 0 && a.S_AREA_CODE.Trim() == areacode && a.N_LOCK_STATE == 0).OrderByDescending(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).ToList();
+            // if (list.Count > 0)
+            //{
+            //    for (int i = 0; i < list.Count; i++)
+            //    {
+            //        LogHelper.Info($"鏈夋墭鐩樻帓鍙穥list[i].N_ROW}锛岀墿鏂欑紪鐮亄itemcode},搴撳尯{areacode}");
+            //        //鏌ヨ璐т綅缁戝畾鎵樼洏
+            //        var cntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == list[i].S_CODE).First();
+            //        if (cntr != null)
+            //        {
+            //            //鏌ヨ鎵樼洏鐗╂枡淇℃伅
+            //            var iteminfo = ContainerHelper.GetCntrItemRel(cntr.S_CNTR_CODE).FirstOrDefault();
 
-                                }
-                            }
-                        }
-                        if (result != null)
-                        {
-                            return result;
-                        }
-                    }
-                    else
-                    {
-                        LogHelper.Info($"鏍规嵁璐х墿缂栫爜{list[i].S_CODE}鏈壘鍒版墭鐩樿揣浣嶇粦瀹氬叧绯�);
-                    }
-                }
-            }
+            //            if (string.IsNullOrEmpty(itemcode))//绌烘墭鍏ュ簱
+            //            {
+            //                if (iteminfo == null)
+            //                {
+            //                    //鐗╂枡鐩稿悓鍏ヨ揣浣嶅悗涓�綅璐т綅
+            //                    result = db.Queryable<Location>().OrderBy(a => a.N_COL).Where(a => a.S_AREA_CODE.Trim() == areacode && a.N_ROW == list[i].N_ROW && a.N_COL > list[i].N_COL && a.N_LOCK_STATE == 0 && a.N_CURRENT_NUM == 0).First();
+            //                }
+            //            }
+            //            else//婊℃嫋鍏ュ簱
+            //            {
+            //                if (iteminfo != null)
+            //                {
+            //                    if (iteminfo.S_ITEM_CODE == itemcode)
+            //                    {
+            //                        //鐗╂枡鐩稿悓鍏ヨ揣浣嶅悗涓�綅璐т綅
+            //                        result = db.Queryable<Location>().OrderBy(a => a.N_COL).Where(a => a.S_AREA_CODE.Trim() == areacode && a.N_ROW == list[i].N_ROW && a.N_COL > list[i].N_COL && a.N_LOCK_STATE == 0 && a.N_CURRENT_NUM == 0).First();
+
+            //                    }
+            //                }
+            //            }
+            //            if (result != null)
+            //            {
+            //                return result;
+            //            }
+            //        }
+            //        else
+            //        {
+            //            LogHelper.Info($"鏍规嵁璐х墿缂栫爜{list[i].S_CODE}鏈壘鍒版墭鐩樿揣浣嶇粦瀹氬叧绯�);
+            //        }
+            //    }
+            //}
             return result;
         }
+
 
         /// <summary>
         /// 鏍规嵁鐗╂枡璁$畻鎵樼洏鍑哄簱
@@ -2294,7 +2645,14 @@
 
             #endregion
             var loc = LocationHelper.GetLocByItemCode(areacode, itemcode, level);
-            result = FindStartcolByLoclist(loc);
+            LogHelper.Info($"airlift=>鏍规嵁搴撳尯缂栫爜:{areacode}锛岀墿鏂欑紪鐮�{itemcode},鐗╂枡绛夌骇璁$畻鍑烘湁鎵樼洏璐т綅{JsonConvert.SerializeObject(loc)}");
+            // result = FindStartcolByLoclist(loc);
+            if (loc.Count > 0)
+            {
+                result = loc.OrderByDescending(a => a.N_COL).First();
+            }
+
+            LogHelper.Info($"airlift=>鍙敤璐т綅涓猴細{JsonConvert.SerializeObject(result)}");
             return result;
         }
 
@@ -2318,26 +2676,46 @@
             }
             return result;
         }
+
         /// <summary>
-        /// 鍒涘缓鎵樼洏鐗╂枡缁戝畾鍏崇郴
+        /// 绔嬪簱浠诲姟涓嬪彂鍒涘缓鎵樼洏鐗╂枡缁戝畾鍏崇郴
         /// </summary>
-        /// <param name="loc">璐т綅缂栫爜</param>
-        /// <param name="cntr">鎵樼洏缂栫爜</param>
-        /// <param name="partNumber">鐗╂枡缂栫爜</param>
-        /// <param name="partDesc">鐗╂枡鎻忚堪</param>
-        /// <param name="partType">鐗╂枡绫诲瀷</param>
-        /// <param name="cntrtype">鎵樼洏绫诲瀷</param>
-        /// <param name="unit">鐗╂枡鍗曚綅</param>
-        /// <param name="weight">鐗╂枡閲嶉噺</param>
-        internal static bool CreateCntrIteminfo(string loc, string cntr, string partNumber, string partDesc, string partType, string batch, string unit, string weight, string cntrtype = "1", string level = "")
+        internal static bool CreateCntrIteminfo(partData partData, taskData taskData)
         {
-            return ContainerHelper.CreateCntrItem(loc, cntr, partNumber, partDesc, partType, cntrtype, batch, weight, unit, level);
+            if (partData == null && taskData == null)
+            {
+                LogHelper.Info($"CreateCntrIteminfo==> 绔嬪簱浠诲姟涓嬪彂鍙傛暟鏈夌┖锛屽垱寤虹墿鏂欐墭鐩樼粦瀹氬叧绯诲け璐�);
+                return false;
+            }
+            else
+            {
+                return ContainerHelper.CreateCntrItem(taskData.pickStation, partData.rfid, partData.partNumber, partData.partDesc, partData.partType, taskData.carrierType, partData.lotNumber, taskData.wmsLot, partData.weight, partData.unit,
+                    taskData.tyreType, taskData.supplier, taskData.receiveLot, taskData.subpool, partData.productionTime, partData.maturityTime, taskData.level);
+            }
+
         }
+
+        //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>
         /// 鏍规嵁鎵樼洏缂栫爜锛屾満鍙扮紪鐮侊紝宸ヨ绫诲瀷璁$畻鏈哄彴绾胯竟鍖哄煙
         /// </summary>
         /// <param name="cntrcode">鎵樼洏缂栫爜</param>
         /// <param name="jtcode">鏈哄彴缂栫爜</param>
+        /// <param name="cntrType">鎵樼洏绫诲瀷</param>
         /// <returns></returns>
         internal static Location Computeloc(string cntrcode, string jtcode, string cntrType)
         {
@@ -2347,17 +2725,19 @@
 
             //  var location = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == cntrcode).First();
 
-
-            var loc = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == jtcode.Trim() && a.S_NOTE == cntrType && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0).First();
-            if (loc != null)
+            lock (_lockLocation)
             {
-                End = loc;
-            }
-            else
-            {
-                LogHelper.Info($"Computeloc==銆嬫牴鎹満鍙板垎缁勶細{jtcode},宸ヨ绫诲瀷锛歿cntrType} 鏈壘鍒扮┖璐т綅鏁版嵁锛岃妫�煡璐т綅琛�);
-            }
+                var loc = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == jtcode.Trim() && a.S_NOTE == cntrType && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃�).First();
+                if (loc != null)
+                {
+                    End = loc;
+                }
+                else
+                {
+                    LogHelper.Info($"Computeloc==銆嬫牴鎹満鍙板垎缁勶細{jtcode},宸ヨ绫诲瀷锛歿cntrType} 鏈壘鍒扮┖璐т綅鏁版嵁锛岃妫�煡璐т綅琛�);
+                }
 
+            }
             return End;
         }
 
@@ -2404,7 +2784,7 @@
         /// </summary>
         /// <param name="locations"></param>
         /// <returns></returns>
-        internal static Location FindEndcolByLocList(List<Location> locations, string itemcode)
+        internal static Location FindEndcolByLocList(List<Location> locations)
         {
             try
             {
@@ -2420,7 +2800,7 @@
                         Location other = null;
                         //褰撳墠鎺掓病鏈夐攣骞朵笖鏈夌┖浣嶇疆
                         //鍏堟壘婊′綅锛岀劧鍚庡悗闈竴灞傝涔堟槸绌猴紝瑕佷箞涓嶅瓨鍦�-                        other = rowList.OrderByDescending(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 0).FirstOrDefault();
+                        other = rowList.OrderBy(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0).FirstOrDefault();
                         //if (full == null)
                         //{
                         //    //娌℃湁婊′綅锛岄偅灏辨壘鏈�皬鐨勭┖浣�@@ -2497,9 +2877,9 @@
             }
 
         }
+
+
         #endregion
-
-
 
         internal static CodeInfo GetCodeInfo(string code, string org)
         {

--
Gitblit v1.9.1