From 8674dabad31db77cba438ab1746235fa41c08716 Mon Sep 17 00:00:00 2001
From: lss <Lss@HanInfo>
Date: 星期五, 06 六月 2025 17:23:53 +0800
Subject: [PATCH] 合肥佳通问题优化

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs |  932 +++++++++++++++++++++++++++++++---------------------------
 1 files changed, 496 insertions(+), 436 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 c86d343..b36f7c1 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs
@@ -34,6 +34,8 @@
 
 
         #region 浣抽�鍚堣偉鎺ュ彛涓氬姟
+
+       
         /// <summary>
         /// 绔嬪簱浠诲姟涓嬪彂=銆嬪垱寤轰换鍔�         /// </summary>
@@ -177,6 +179,13 @@
                         //}
 
                     }
+                    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)
@@ -273,7 +282,7 @@
                             LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask");
                             if (WCSHelper.CreateTask(wcsTask))
                             {
-                             //   LocationHelper.LockLoc(End, 2);
+                                //   LocationHelper.LockLoc(End, 2);
 
                                 LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
                             }
@@ -566,7 +575,7 @@
                         LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask");
                         if (WCSHelper.CreateTask(wcsTask))
                         {
-                           // LocationHelper.LockLoc(Start, 2);
+                            // LocationHelper.LockLoc(Start, 2);
                             //LocationHelper.LockLoc(End, 1);
                             LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
                         }
@@ -1089,6 +1098,7 @@
                         N_START_LAYER = 1,
                         N_END_LAYER = 1,
                         Z_TYPE = n_type
+
                     };
                     LogHelper.Info("鍒涘缓鍑哄钩搴撲换鍔★細" + JsonConvert.SerializeObject(wcsTask));
                     if (WCSHelper.CreateTask(wcsTask))
@@ -1125,6 +1135,7 @@
 
         }
 
+        public static object _lockEmpty = new object();
         /// <summary>
         /// 绌哄伐瑁呭洖搴�         /// </summary>
@@ -1155,200 +1166,204 @@
 
             try
             {
-                #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)
+                lock (_lockEmpty)
                 {
-                    if (startloc.N_LAYER == 3)
+                    #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)
                     {
-                        //鍙犵洏璐т綅璁$畻鍙犵洏璐т綅
-                        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_LAYER == 3)
                         {
-                            // 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)
+                            //鍙犵洏璐т綅璁$畻鍙犵洏璐т綅
+                            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)
                             {
-                                result.code = "1";
-                                result.msg = $"鍙犵洏璐т綅涓嶅彲鐢�;
-                                AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
-                                return result;
+                                // 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
                             {
-                                endlayer = loc.N_CURRENT_NUM + 1;
+
+                                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)
+                                {
+                                    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($"Putin==> {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 (startloc != null && loc != null)
+                    {
+                        if (startloc.N_LOCK_STATE != 0 && loc.N_LOCK_STATE != 0)
+                        {
                             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 == "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)
+                        //鍒涘缓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 鏍规嵁璧风偣璐т綅绫诲瀷锛岃幏寰楀洖搴撳簱鍖�-                        //鏍规嵁浠撳簱 璁$畻搴撳尯
-                        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($"Putin==> {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 (startloc != null && loc != null)
-                {
-                    if (startloc.N_LOCK_STATE != 0 && loc.N_LOCK_STATE != 0)
-                    {
                         result.code = "1";
-                        result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐硅揣浣嶇姸鎬亄startloc.N_LOCK_STATE},璧风偣璐т綅鐘舵�锛歿loc.N_LOCK_STATE}";
-                        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 = 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
-                    {
-                        result.code = "1";
-                        result.msg = $"浠诲姟鍒涘缓澶辫触";
-                        AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
-                        return result;
-                    }
+                    #endregion
                 }
-                else
-                {
-                    result.code = "1";
-                    result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
-                    return result;
-                }
-                #endregion
+
             }
             catch (Exception ex)
             {
@@ -1360,6 +1375,8 @@
 
             return result;
         }
+
+        public static object _lockcallfixture = new object();
 
         /// <summary>
         /// 绌哄伐瑁呭懠鍙�@@ -1382,7 +1399,7 @@
             #region 鍙橀噺
             string Start = "";
             string End = model.TargetLocation;
-            string itemcode = "";
+            
             string areacode = "";
             string cntrcode = "";
             Location startloc = new Location();
@@ -1390,113 +1407,117 @@
 
             try
             {
-                #region 鏍规嵁浠撳簱缂栫爜鍒ゆ柇搴撳尯 骞惰绠楀嚭搴撹揣浣�-                var endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == End).First();
-                //鏍规嵁浠撳簱 璁$畻搴撳尯
-
-                if (endloc != null)
+                lock (_lockcallfixture)
                 {
-                    var whcode = Settings.wareLoc.Where(a => a.AreaCode == endloc.S_WH_CODE).FirstOrDefault();
-                    if (whcode != null)
-                    {
-                        areacode = whcode.PMK;
-                    }
-                    else
-                    {
-                        result.code = "1";
-                        result.msg = $"鏍规嵁璧风偣浠撳簱缂栫爜锛歿endloc.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�;
-                        LogHelper.Info($"Putin==> {result.msg}");
-                        AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
-                        return result;
-                    }
+                    #region 鏍规嵁浠撳簱缂栫爜鍒ゆ柇搴撳尯 骞惰绠楀嚭搴撹揣浣�+                    var endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == End).First();
+                    //鏍规嵁浠撳簱 璁$畻搴撳尯
 
-
-                    //璁$畻鍑哄簱鎵樼洏
-                    startloc = LocationHelper.GetLocByAreacode(areacode);
-                    if (startloc != null)
+                    if (endloc != 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}鏈壘鍒版墭鐩樿揣浣嶇粦瀹氬叧绯�;
-                            LogHelper.Info($"callfixture:{result.msg}");
-                            AddErrorInfo("鏌ユ壘鎵樼洏澶辫触", result.msg, Source);
+                            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 = $"浠诲姟璧风偣:{End}鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃";
-                    LogHelper.Info($"callfixture:{result.msg}");
-                    AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
-                    return result;
-                }
-                #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 = $"浠诲姟鍒涘缓澶辫触";
-                        AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
+                        result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
                         return result;
                     }
-                }
-                else
-                {
-                    result.code = "1";
-                    result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
                     return result;
+                    #endregion
                 }
-                return result;
-                #endregion
+
 
             }
             catch (Exception ex)
@@ -1511,6 +1532,7 @@
 
         }
 
+        public static object _lockItemBack = new object();
         /// <summary>
         /// 浣欐枡杩斿洖
         /// </summary>
@@ -1542,214 +1564,242 @@
 
             try
             {
-                #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)
+                lock (_lockItemBack)
                 {
-                    var whcode = Settings.wareLoc.Where(a => a.AreaCode == startloc.S_WH_CODE).FirstOrDefault();
-                    if (whcode != null)
+                    #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)
                     {
-                        //绮夋枡鐩存帴鍥炲簱锛屽叾浠栫墿鏂欓渶瑕佸幓瀵瑰簲鐨勬殏瀛樺尯
-                        #region 鏍规嵁鐗╂枡鍒ゆ柇鍥炲簱搴撳尯
-                        if (model.PartNumber.StartsWith("4X"))
+                        if (CntrLoc.S_LOC_CODE != Start)
                         {
-                            areacode = whcode.PMK;
-                            //loc = StorageCompute(itemcode, areacode);
-                            //if (loc == null)
-                            //{
-                            //    loc = emptyRow(areacode);
-                            //}
+
+                            result.code = "1";
+                            result.msg = $"鍒涘缓浠诲姟澶辫触锛屾墭鐩�{model.Rfid}缁戝畾浣嶇疆涓嶆槸璧风偣锛歿Start}";
+                            LogHelper.Info($"ItemBack锛歿result.msg}");
+                            AddErrorInfo("鎵樼洏缁戝畾浣嶇疆涓嶅悓", result.msg, Source);
+                            return result;
                         }
-                        else
+                    }
+                    else
+                    {
+                        if (db.Updateable(new LocCntrRel() { S_CNTR_CODE = model.Rfid, S_LOC_CODE = Start }).UpdateColumns().ExecuteCommand() <= 0)
                         {
-                            #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;
+                        }
+
+                    }
+                    #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)
+                        {
+                            //绮夋枡鐩存帴鍥炲簱锛屽叾浠栫墿鏂欓渶瑕佸幓瀵瑰簲鐨勬殏瀛樺尯
+                            #region 鏍规嵁鐗╂枡鍒ゆ柇鍥炲簱搴撳尯
+                            if (model.PartNumber.StartsWith("4X"))
                             {
-                                if (CntrLoc.S_LOC_CODE != Start)
+                                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.Rfid}缁戝畾浣嶇疆涓嶆槸璧风偣锛歿Start}";
+                                    result.msg = $"鍒涘缓浠诲姟澶辫触锛岀墿鏂欏彿{model.PartNumber}涓嶅睘浜庤瀹氱墿鏂�;
                                     LogHelper.Info($"ItemBack锛歿result.msg}");
-                                    AddErrorInfo("鎵樼洏缁戝畾浣嶇疆涓嶅悓", result.msg, Source);
+                                    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
 
-                            if (model.PartNumber.StartsWith("3"))
+
+                            var EndLocs = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == areacode).ToList();
+                            //鏌ユ壘璐т綅搴撳尯
+                            if (EndLocs.Count > 0)
                             {
-                                areacode = whcode.ZCW;
+                                //loc =  EndLocs.Find(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0);
+                                loc = FindEndcolByLocList(EndLocs);
+
+
                             }
                             else
                             {
-
                                 result.code = "1";
-                                result.msg = $"鍒涘缓浠诲姟澶辫触锛岀墿鏂欏彿{model.PartNumber}涓嶅睘浜庤瀹氱墿鏂�;
-                                LogHelper.Info($"ItemBack锛歿result.msg}");
-                                AddErrorInfo("鐗╂枡缂栫爜鏍煎紡閿欒", result.msg, Source);
+                                result.msg = $"鏍规嵁缁堢偣搴撳尯锛歿areacode},鏈壘鍒板搴旇揣浣�;
+                                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);
-
+                            if (loc != null)
+                            {
+                                End = loc.S_CODE;
+                            }
+                            else
+                            {
+                                result.code = "1";
+                                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;
                         }
 
-                        if (loc != null)
+                    }
+                    else
+                    {
+
+                        result.code = "1";
+                        result.msg = $"璐т綅:{Start}鎵句笉鍒板搴旇揣浣�;
+                        AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
+                        return result;
+                    }
+
+                    #endregion
+
+                    #region 鍒涘缓浠诲姟
+                    if (!string.IsNullOrEmpty(Start) && !string.IsNullOrEmpty(End))
+                    {
+                        if (startloc.N_LOCK_STATE != 0)
                         {
-                            End = loc.S_CODE;
+                            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
+
+                        };
+                        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 = $"搴撳尯:{areacode}鏃犲彲鐢ㄨ揣浣�;
-                            AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
+                            result.msg = $"浠诲姟鍒涘缓澶辫触";
+                            AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
                             return result;
                         }
-
-                    }
-                    else
-                    {
-
-                        result.code = "1";
-                        result.msg = $"鏍规嵁璧风偣浠撳簱缂栫爜锛歿startloc.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�;
-                        LogHelper.Info($"Putin==> {result.msg}");
-                        AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source);
-                        return result;
-                    }
-
-                }
-                else
-                {
-
-                    result.code = "1";
-                    result.msg = $"璐т綅:{Start}鎵句笉鍒板搴旇揣浣�;
-                    AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source);
-                    return result;
-                }
-
-                #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
-
-                    };
-                    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("鍒涘缓浠诲姟鎴愬姛");
                     }
                     else
                     {
                         result.code = "1";
-                        result.msg = $"浠诲姟鍒涘缓澶辫触";
-                        AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source);
+                        result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
                         return result;
                     }
+                    #endregion
                 }
-                else
-                {
-                    result.code = "1";
-                    result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣";
-                    return result;
-                }
-                #endregion
+
+
+
 
                 return result;
             }
@@ -2263,7 +2313,8 @@
             }
 
             return result;
-        }  /// <summary>
+        }
+        /// <summary>
         /// 搴撲綅娓呯┖
         /// </summary>
         /// <param name="model"></param>
@@ -2286,42 +2337,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 });
-                            // 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)
+                            var CntrItem = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == cntrcode).First();
+                            if (CntrItem != null)
                             {
-                                LogHelper.Info($"ClearLoc 搴撲綅娓呴櫎鎴愬姛");
+                                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($"ClearLoc 搴撲綅娓呴櫎澶辫触");
-                                result.code = "1";
-                                result.msg = "搴撲綅娓呴櫎澶辫触";
-                                AddErrorInfo("搴撲綅娓呴櫎澶辫触", result.msg, Source);
-                                return result;
+                                LogHelper.Info($"搴撳尯娓呯┖=銆嬫墭鐩�{cntrcode}鏃犵墿鏂欐暟鎹�);
+
                             }
-
                         }
-                        else
-                        {
-                            LogHelper.Info($"ClearLoc 鎵樼洏{cntrcode}鏃犵墿鏂欑粦瀹氬叧绯�);
-                        }
-
+                       
                     }
                     else
                     {
-                        LogHelper.Info($"ClearLoc 璐т綅{loc}鏃犳墭鐩樿揣浣嶇粦瀹氬叧绯�);
+                        result.code = "1";
+                        result.msg = $" ClearLoc 璐т綅{loc}鏃犳墭鐩樿揣浣嶇粦瀹氬叧绯�;
+                        AddErrorInfo("搴撲綅娓呴櫎澶辫触", result.msg, Source);
+                        return result;
+
                     }
+
                 }
                 else
                 {
@@ -2439,6 +2496,8 @@
         #endregion
 
         #region 鍚堣偉浣抽�涓氬姟鏂规硶
+
+        
         /// <summary>
         /// 鎵樼洏鍏ュ簱绠楁硶 
         /// </summary>
@@ -2496,6 +2555,7 @@
             //}
             return result;
         }
+
 
         /// <summary>
         /// 鏍规嵁鐗╂枡璁$畻鎵樼洏鍑哄簱
@@ -2629,7 +2689,7 @@
 
             lock (_lockLocation)
             {
-                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();
+                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;
@@ -2702,7 +2762,7 @@
                         Location other = null;
                         //褰撳墠鎺掓病鏈夐攣骞朵笖鏈夌┖浣嶇疆
                         //鍏堟壘婊′綅锛岀劧鍚庡悗闈竴灞傝涔堟槸绌猴紝瑕佷箞涓嶅瓨鍦�-                        other = rowList.OrderBy(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)
                         //{
                         //    //娌℃湁婊′綅锛岄偅灏辨壘鏈�皬鐨勭┖浣�
--
Gitblit v1.9.1