From 8f392cc88b0768b74efca3b68785cf5aa1c38e70 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期三, 06 十一月 2024 14:28:20 +0800
Subject: [PATCH] 代码更新

---
 wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/Z_GFSB_DownTask.cs |  709 ++++++++++++++++++++++++++++++-----------------------------
 1 files changed, 360 insertions(+), 349 deletions(-)

diff --git a/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/Z_GFSB_DownTask.cs b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/Z_GFSB_DownTask.cs
index 40a98c6..cf1dc42 100644
--- a/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/Z_GFSB_DownTask.cs
+++ b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/Z_GFSB_DownTask.cs
@@ -6,6 +6,7 @@
 using System.Linq;
 using System.Security.Policy;
 using System.Threading;
+using System.Threading.Tasks;
 using WIDESEA_Common;
 using WIDESEA_Common.LoctionEnum;
 using WIDESEA_Common.Tools;
@@ -30,206 +31,105 @@
         {
             if (Interlocked.Exchange(ref _readGFBUPSignalso, 1) == 0)
             {
-                try
+                Task.Run(() =>
                 {
-                    VOLContext Context = new VOLContext();
-                    Ibase_ware_locationRepository locRepository = new base_ware_locationRepository(Context);
-                    Ibase_routing_tableRepository routingRepository = new base_routing_tableRepository(Context);
-                    Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context);
-                    Idt_agvtask_htyRepository agvhtyRepository = new dt_agvtask_htyRepository(Context);
-                    List<string> GFSBS = new List<string> { "杈婂垎鏈烘鏋�1", "杈婂垎鏈烘鏋�2", "杈婂垎鏈烘鏋�3", "杈婂垎鏈烘鏋�4" };
-                    //WriteLog.GetLog($"{GFSBS}涓嬫枡鍛煎彨").Write($"--------------寮�濮�----------- 鏃堕棿璁板綍:{DateTime.Now}", $"{GFSBS}涓嬫枡鍛煎彨");
-                    foreach (var GFSB in GFSBS)
+                    try
                     {
-                        //string SBID = GFSB.Replace("杈婂垎鏈烘鏋�", "");//璁惧鍙�
-                        PLCClient plc = WCSService.Clients.Find(v => v.PLCName == GFSB);
-                        if (plc == null)
+                        VOLContext Context = new VOLContext();
+                        Ibase_ware_locationRepository locRepository = new base_ware_locationRepository(Context);
+                        Ibase_routing_tableRepository routingRepository = new base_routing_tableRepository(Context);
+                        Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context);
+                        Idt_agvtask_htyRepository agvhtyRepository = new dt_agvtask_htyRepository(Context);
+                        List<string> GFSBS = new List<string> { "杈婂垎鏈烘鏋�1", "杈婂垎鏈烘鏋�2", "杈婂垎鏈烘鏋�3", "杈婂垎鏈烘鏋�4" };
+                        //WriteLog.GetLog($"{GFSBS}涓嬫枡鍛煎彨").Write($"--------------寮�濮�----------- 鏃堕棿璁板綍:{DateTime.Now}", $"{GFSBS}涓嬫枡鍛煎彨");
+                        foreach (var GFSB in GFSBS)
                         {
-                            //WriteLog.GetLog($"{GFSBS}涓嬫枡鍛煎彨").Write($"璁惧锛歿GFSB} 鍐呭锛氭湭杩炴帴PLC 鏃堕棿璁板綍:{DateTime.Now}", $"{GFSBS}涓嬫枡鍛煎彨");
-                            //WriteLog.GetLog($"{GFSBS}涓嬫枡鍛煎彨").Write($"--------------缁撴潫----------- 鏃堕棿璁板綍:{DateTime.Now}{Environment.NewLine}", $"{GFSBS}涓嬫枡鍛煎彨");
-                            continue;
-                        }
-                        //bool GYC_RFX1 = Convert.ToBoolean(plc.ReadValue("R_Feedingrequest1".ToString(), plc.PLCDescroption));//涓嬫枡鍙d竴涓嬫枡淇″彿
-                        //bool GYC_RFX2 = Convert.ToBoolean(plc.ReadValue("R_Feedingrequest2".ToString(), plc.PLCDownLoc));//涓嬫枡鍙d簩涓嬫枡淇″彿
-                        OperateResult<bool> GYC_RFX1 = plc.MelsecPLCClient.MelsecMcNetClient.ReadBool("D5693.0");
-                        if (!GYC_RFX1.IsSuccess)
-                        {
-                            //WriteLog.GetLog($"{GFSBS}涓嬫枡鍛煎彨").Write($"{GFSBS}涓嬫枡涓�鍙f柇寮�杩炴帴  鏃堕棿锛歿DateTime.Now}  -------------- {Environment.NewLine}", $"{GFSBS}涓嬫枡鍛煎彨");
-                            continue;
-                        }
-
-                        if (GYC_RFX1.Content)
-                        {
-                            //WriteLog.GetLog($"{GFSBS}涓嬫枡鍛煎彨").Write($"璇诲彇 璁惧锛歿GFSB}涓嬫枡涓�鍙� DB鍋忕Щ鍊�:D5693.0,璇诲彇鍊硷細{GYC_RFX1.Content} 鏃堕棿璁板綍:{DateTime.Now}", $"{GFSBS}涓嬫枡鍛煎彨");
-                            //鏌ョ湅褰撳墠杈婂垎鏈鸿澶囨槸鍚︽湁AGV浠诲姟
-                            var SBtask = agvRepository.FindFirst(f => f.agv_fromaddress == plc.PLCDescroption && (f.agv_taskstate == AGVTaskStateEnum.Create.ToString() || f.agv_taskstate == AGVTaskStateEnum.SendOut.ToString() || f.agv_taskstate == AGVTaskStateEnum.Executing.ToString() || f.agv_taskstate == AGVTaskStateEnum.Complete.ToString()));
-                            //鏈夌粨鏉熸湰娆″惊鐜�
-                            if (SBtask != null) {
-                                //WriteLog.GetLog($"{GFSBS}涓嬫枡鍛煎彨").Write($"璇诲彇 璁惧锛歿GFSB}涓嬫枡涓�鍙o紝AGV浠诲姟鍒楄〃涓瓨鍦ㄤ换鍔★紝鏃犳硶缁х画涓嬪彂浠诲姟锛屾椂闂磋褰�:{DateTime.Now}", $"{GFSBS}涓嬫枡鍛煎彨");
-                            }
-                            else
+                            //string SBID = GFSB.Replace("杈婂垎鏈烘鏋�", "");//璁惧鍙�
+                            PLCClient plc = WCSService.Clients.Find(v => v.PLCName == GFSB);
+                            if (plc == null)
                             {
-                                List<base_routing_table> Routing_Table = routingRepository.Find(d => d.route_began == plc.PLCDescroption);
+                                //WriteLog.GetLog($"{GFSBS}涓嬫枡鍛煎彨").Write($"璁惧锛歿GFSB} 鍐呭锛氭湭杩炴帴PLC 鏃堕棿璁板綍:{DateTime.Now}", $"{GFSBS}涓嬫枡鍛煎彨");
+                                //WriteLog.GetLog($"{GFSBS}涓嬫枡鍛煎彨").Write($"--------------缁撴潫----------- 鏃堕棿璁板綍:{DateTime.Now}{Environment.NewLine}", $"{GFSBS}涓嬫枡鍛煎彨");
+                                continue;
+                            }
+                            //bool GYC_RFX1 = Convert.ToBoolean(plc.ReadValue("R_Feedingrequest1".ToString(), plc.PLCDescroption));//涓嬫枡鍙d竴涓嬫枡淇″彿
+                            //bool GYC_RFX2 = Convert.ToBoolean(plc.ReadValue("R_Feedingrequest2".ToString(), plc.PLCDownLoc));//涓嬫枡鍙d簩涓嬫枡淇″彿
+                            OperateResult<bool> GYC_RFX1 = plc.MelsecPLCClient.MelsecMcNetClient.ReadBool("D5693.0");
+                            if (!GYC_RFX1.IsSuccess)
+                            {
+                                //WriteLog.GetLog($"{GFSBS}涓嬫枡鍛煎彨").Write($"{GFSBS}涓嬫枡涓�鍙f柇寮�杩炴帴  鏃堕棿锛歿DateTime.Now}  -------------- {Environment.NewLine}", $"{GFSBS}涓嬫枡鍛煎彨");
+                                continue;
+                            }
 
-                                base_ware_location Location = null; //缁戝畾璁惧鐨勮揣鏋�
-                                foreach (var item in Routing_Table)
+                            if (GYC_RFX1.Content)
+                            {
+                                //WriteLog.GetLog($"{GFSBS}涓嬫枡鍛煎彨").Write($"璇诲彇 璁惧锛歿GFSB}涓嬫枡涓�鍙� DB鍋忕Щ鍊�:D5693.0,璇诲彇鍊硷細{GYC_RFX1.Content} 鏃堕棿璁板綍:{DateTime.Now}", $"{GFSBS}涓嬫枡鍛煎彨");
+                                //鏌ョ湅褰撳墠杈婂垎鏈鸿澶囨槸鍚︽湁AGV浠诲姟
+                                var SBtask = agvRepository.FindFirst(f => f.agv_fromaddress == plc.PLCDescroption && (f.agv_taskstate == AGVTaskStateEnum.Create.ToString() || f.agv_taskstate == AGVTaskStateEnum.SendOut.ToString() || f.agv_taskstate == AGVTaskStateEnum.Executing.ToString() || f.agv_taskstate == AGVTaskStateEnum.Complete.ToString()));
+                                //鏈夌粨鏉熸湰娆″惊鐜�
+                                if (SBtask != null)
                                 {
-                                    //鏌ユ壘缁戝畾璁惧鐨勮揣鏋�
-                                    base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.light_color == plc.PLCName.ToString());
-                                    if (ware_Locations != null)
-                                    {
-                                        Location = ware_Locations;
-                                        break;
-                                    }
+                                    //WriteLog.GetLog($"{GFSBS}涓嬫枡鍛煎彨").Write($"璇诲彇 璁惧锛歿GFSB}涓嬫枡涓�鍙o紝AGV浠诲姟鍒楄〃涓瓨鍦ㄤ换鍔★紝鏃犳硶缁х画涓嬪彂浠诲姟锛屾椂闂磋褰�:{DateTime.Now}", $"{GFSBS}涓嬫枡鍛煎彨");
                                 }
-                                if (Location != null)
+                                else
                                 {
-                                    if (Location.gd1 == 1 && Location.gd4 == 1)//浠h〃涓嬫枡1,2鍙d笅鐨勬枡鏃犳硶鍦ㄨ繖涓揣鏋惰鏂欎簡锛岃揣鏋跺氨鍙栨秷璁惧缁戝畾
-                                    {
-                                        var upper_code = Location.upper_code.Split('-');
-                                        string tasknum = upper_code[0] + "-" + upper_code[1];
-                                        var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress.Contains(tasknum));
-                                        if (loctionNUM == null)
-                                        {
-                                            Location.light_color = "鏃�";
-                                            locRepository.Update(Location,d=>d.light_color, true);
-                                        }
+                                    #region 璁板綍涓嬫枡璇锋眰淇″彿
+                                    WriteLog.GetLog().Write($"涓嬫枡鍙�1璇锋眰锛歿GYC_RFX1.Content}---{DateTime.Now}", $"{plc.PLCName}涓嬫枡璇锋眰");
+                                    #endregion
+                                    List<base_routing_table> Routing_Table = routingRepository.Find(d => d.route_began == plc.PLCDescroption);
 
-                                    }
-                                    else if (Location.gd1 == 0)//浠h〃杩欎釜璐ф灦杩樿兘缁欎笅鏂�1鍙h鏂�
+                                    base_ware_location Location = null; //缁戝畾璁惧鐨勮揣鏋�
+                                    foreach (var item in Routing_Table)
                                     {
-                                        var a = "";
-                                        var upper_code = Location.upper_code.Split('-');
-                                        if (Location.gd1 == 0 && Location.gd2 == 0 && a == "")//鍐呬晶澶栦晶閮芥病鏈夋枡浼樺厛鏀惧唴渚�
+                                        //鏌ユ壘缁戝畾璁惧鐨勮揣鏋�
+                                        base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.light_color == plc.PLCName.ToString());
+                                        if (ware_Locations != null)
                                         {
-                                            //string tasknumwc = upper_code[0] + "-" + upper_code[1] + "-2";//澶栦晶 1-1 闃叉寮傚父鎯呭喌锛圓GV鎵ц涓紓甯革紝鎶婂厜鐢垫尅浜嗘垨鎵嬪姩閫佹枡鍦ㄨ繖涓伐浣嶄笂锛屽鑷村渚т换鍔℃湭瀹屾垚锛屽氨涓嬪彂鍐呬晶浠诲姟锛�
-                                            //var loctionwc = agvRepository.FindFirst(f => f.agv_toaddress == tasknumwc);
-                                            //if (loctionwc == null)
-                                            //{
-                                            string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-2";//澶栦晶 1-2
-                                            var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum);
-                                            if (WCloctionNUM == null)
-                                            {
-                                                string tasknum = upper_code[0] + "-" + upper_code[1] + "-1";//鍐呬晶 1-1
-                                                var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
-                                                if (loctionNUM == null)
-                                                {
-                                                    a = tasknum;
-                                                }
-                                            }
-                                            //}
-
-                                        }
-                                      else  if (Location.gd2 == 1 && Location.gd1 == 0 && a == "")//鍐呬晶鏈夋枡鏃舵斁澶栦晶
-                                        {
-                                            string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-1";//鍐呬晶 1-1
-                                            var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum);
-                                            if (NCloctionNUM == null)
-                                            {
-                                                string tasknum = upper_code[0] + "-" + upper_code[1] + "-2";//澶栦晶 1-2
-                                                var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
-                                                if (loctionNUM == null)
-                                                {
-                                                    a = tasknum;
-                                                }
-                                            }
-                                        }
-                                        if (a != "")
-                                        {
-                                            dt_agvtask_hty agvtask_Hty = agvhtyRepository.Find(d => d.agv_toaddress == a && d.agv_taskstate == AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d => d.agv_finishedtime ).FirstOrDefault();
-                                            if (agvtask_Hty != null)
-                                            {
-                                                bool interval = (DateTime.Now - agvtask_Hty.agv_finishedtime).Value.TotalSeconds < 100;
-                                                if (interval)
-                                                {
-                                                    continue;
-                                                }
-                                            }
-                                            //鐢熸垚杈婂垎鏈轰笅鏂欎换鍔�
-                                            dt_agvtask agvtask = new dt_agvtask()
-                                            {
-                                                agv_id = Guid.NewGuid(),
-                                                agv_tasknum = "KH-" + IdenxManager.GetTaskNo(),
-                                                agv_fromaddress = plc.PLCDescroption,
-                                                agv_toaddress = a,
-                                                agv_code = "缁勮AGV璋冨害",
-                                                agv_remark = "杈婂垎涓嬫枡浠诲姟",
-                                                agv_taskstate = AGVTaskStateEnum.Create.ToString(),
-                                                agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(),
-                                                agv_worktype = 1,//宸ヤ綔绫诲瀷
-                                                agv_materielid = "",
-                                                agv_qty = 1,
-                                                agv_createtime = DateTime.Now,
-                                                agv_grade = 0,//浠诲姟浼樺厛绾�
-                                                agv_userid = "WCS",
-                                                agv_barcode = "",
-                                            };
-                                         
-                                            //Location.update_time = DateTime.Now;
-                                            Location.task = 1;
-                                            Location.logic_col = 0;
-                                            var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
-                                            if (entry != null)
-                                            {
-                                                entry.State = EntityState.Detached;
-                                            }
-                                           int zone= locRepository.Update(Location, d => new { d.task, d.logic_col }, true);
-                                            if (zone==1)
-                                            {
-                                                agvRepository.Add(agvtask, true);
-                                                WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�").Write($"鐢熸垚浠诲姟:{agvtask.agv_tasknum},缁堢偣璐т綅銆恵a}銆戠姸鎬侊細鎵樼洏鍏夌數妫�娴嬶細{Location.tpgd},-1鍏夌數锛歿Location.gd2}锛�-2鍏夌數:{Location.gd1},-3鍏夌數锛歿Location.gd4}锛�-4鍏夌數锛歿Location.gd3},鐘舵�侊細{Location.location_state},璁惧缁戝畾锛歿Location.light_color},鏇存柊鏃堕棿锛歿Location.wireless_time}", $"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�");
-                                                WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�").Write($"----------------浠诲姟鐢熸垚鎴愬姛  {DateTime.Now} -------------- {Environment.NewLine}", $"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�");
-                                            }
-                                    
+                                            Location = ware_Locations;
                                             break;
                                         }
                                     }
-                                    else
+                                    if (Location != null)
                                     {
-                                        //浠h〃杩欎釜璐ф灦鏃犳硶瑁呬笅鏂�1鍙g殑鏂欎簡锛屼絾鏄笅鏂�2鍙h繕鍙互瑁呮枡鍦ㄨ繖涓揣鏋朵笂锛岃揣鏋朵笉鑳藉彇娑堣澶囩粦瀹�
-                                    }
-                                }//浠h〃鏈夎繖涓澶囩粦瀹氱殑璐ф灦
-                                else //浠h〃娌℃湁杩欎釜璁惧缁戝畾鐨勮揣鏋讹紝杩涜鎵句竴涓病鏈夎澶囩粦瀹氱殑璐ф灦杩涜缁戝畾锛屾潵缁欒繖鍙拌澶囪鏂�
-                                {
-                                    List<base_ware_location> loctionList = new List<base_ware_location>();
-                                    foreach (var item in Routing_Table)
-                                    {
-                                        base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.gd1 == 0 && d.gd2 == 0 && d.gd3 == 0 && d.gd4 == 0 && d.light_color == "鏃�");
-                                        if (ware_Locations == null)
+                                        if (Location.gd1 == 1 && Location.gd4 == 1)//浠h〃涓嬫枡1,2鍙d笅鐨勬枡鏃犳硶鍦ㄨ繖涓揣鏋惰鏂欎簡锛岃揣鏋跺氨鍙栨秷璁惧缁戝畾
                                         {
-                                            continue;
-                                        }
-                                        loctionList.Add(ware_Locations);
-                                    }
+                                            var upper_code = Location.upper_code.Split('-');
+                                            string tasknum = upper_code[0] + "-" + upper_code[1];
+                                            var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress.Contains(tasknum));
+                                            if (loctionNUM == null)
+                                            {
+                                                Location.light_color = "鏃�";
+                                                locRepository.Update(Location, d => d.light_color, true);
+                                            }
 
-                                    if (loctionList.Count != 0)
-                                    {
-                                        List<base_ware_location> Locationlist = loctionList.OrderBy(d => d.update_time).ToList();
-                                        foreach (var xLocation in Locationlist)
+                                        }
+                                        else if (Location.gd1 == 0)//浠h〃杩欎釜璐ф灦杩樿兘缁欎笅鏂�1鍙h鏂�
                                         {
                                             var a = "";
-                                            var upper_code = xLocation.upper_code.Split('-');
-                                            if (xLocation.gd1 == 0 && xLocation.gd2 == 0 && a == "")//鍐呬晶澶栦晶閮芥病鏈夋枡浼樺厛鏀惧唴渚�
+                                            var upper_code = Location.upper_code.Split('-');
+                                            if (Location.gd1 == 0 && Location.gd2 == 0 && a == "")//鍐呬晶澶栦晶閮芥病鏈夋枡浼樺厛鏀惧唴渚�
                                             {
-
+                                                //string tasknumwc = upper_code[0] + "-" + upper_code[1] + "-2";//澶栦晶 1-1 闃叉寮傚父鎯呭喌锛圓GV鎵ц涓紓甯革紝鎶婂厜鐢垫尅浜嗘垨鎵嬪姩閫佹枡鍦ㄨ繖涓伐浣嶄笂锛屽鑷村渚т换鍔℃湭瀹屾垚锛屽氨涓嬪彂鍐呬晶浠诲姟锛�
+                                                //var loctionwc = agvRepository.FindFirst(f => f.agv_toaddress == tasknumwc);
+                                                //if (loctionwc == null)
+                                                //{
                                                 string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-2";//澶栦晶 1-2
                                                 var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum);
                                                 if (WCloctionNUM == null)
                                                 {
                                                     string tasknum = upper_code[0] + "-" + upper_code[1] + "-1";//鍐呬晶 1-1
-
                                                     var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
                                                     if (loctionNUM == null)
                                                     {
                                                         a = tasknum;
                                                     }
                                                 }
+                                                //}
 
                                             }
-                                            if (xLocation.gd2 == 1 && xLocation.gd1 == 0 && a == "")//鍐呬晶鏈夋枡鏃舵斁澶栦晶
+                                            else if (Location.gd2 == 1 && Location.gd1 == 0 && a == "")//鍐呬晶鏈夋枡鏃舵斁澶栦晶
                                             {
                                                 string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-1";//鍐呬晶 1-1
-
                                                 var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum);
                                                 if (NCloctionNUM == null)
                                                 {
@@ -241,11 +141,10 @@
                                                     }
                                                 }
                                             }
-
                                             if (a != "")
                                             {
-                                                dt_agvtask_hty agvtask_Hty= agvhtyRepository.Find(d => d.agv_toaddress== a && d.agv_taskstate == AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d=>d.agv_finishedtime).FirstOrDefault();
-                                                if (agvtask_Hty!=null)
+                                                dt_agvtask_hty agvtask_Hty = agvhtyRepository.Find(d => d.agv_toaddress == a && d.agv_taskstate == AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d => d.agv_finishedtime).FirstOrDefault();
+                                                if (agvtask_Hty != null)
                                                 {
                                                     bool interval = (DateTime.Now - agvtask_Hty.agv_finishedtime).Value.TotalSeconds < 100;
                                                     if (interval)
@@ -253,8 +152,8 @@
                                                         continue;
                                                     }
                                                 }
-                                               //鐢熸垚杈婂垎鏈轰笅鏂欎换鍔�
-                                               dt_agvtask agvtask = new dt_agvtask()
+                                                //鐢熸垚杈婂垎鏈轰笅鏂欎换鍔�
+                                                dt_agvtask agvtask = new dt_agvtask()
                                                 {
                                                     agv_id = Guid.NewGuid(),
                                                     agv_tasknum = "KH-" + IdenxManager.GetTaskNo(),
@@ -272,185 +171,196 @@
                                                     agv_userid = "WCS",
                                                     agv_barcode = "",
                                                 };
-                                               
+
                                                 //Location.update_time = DateTime.Now;
-                                                xLocation.task = 1;
-                                                xLocation.logic_col = 0;
-                                                xLocation.light_color = plc.PLCName;
+                                                Location.task = 1;
+                                                Location.logic_col = 0;
                                                 var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
                                                 if (entry != null)
                                                 {
                                                     entry.State = EntityState.Detached;
                                                 }
-                                              int zone=  locRepository.Update(xLocation, d => new { d.task, d.light_color, d.logic_col }, true);
-                                                if (zone==1)
+                                                int zone = locRepository.Update(Location, d => new { d.task, d.logic_col }, true);
+                                                if (zone == 1)
                                                 {
                                                     agvRepository.Add(agvtask, true);
-                                                    WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�").Write($"鐢熸垚浠诲姟:{agvtask.agv_tasknum},缁堢偣璐т綅銆恵a}銆戠姸鎬侊細鎵樼洏鍏夌數妫�娴嬶細{xLocation.tpgd},-1鍏夌數锛歿xLocation.gd2}锛�-2鍏夌數:{xLocation.gd1},-3鍏夌數锛歿xLocation.gd4}锛�-4鍏夌數锛歿xLocation.gd3},鐘舵�侊細{xLocation.location_state},璁惧缁戝畾锛歿xLocation.light_color}锛屾洿鏂版椂闂达細{Location.wireless_time}", $"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�");
-                                                    WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�").Write($"----------------浠诲姟鐢熸垚鎴愬姛  {DateTime.Now} -------------- {Environment.NewLine}", $"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�");
+                                                    //WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�").Write($"鐢熸垚浠诲姟:{agvtask.agv_tasknum},缁堢偣璐т綅銆恵a}銆戠姸鎬侊細鎵樼洏鍏夌數妫�娴嬶細{Location.tpgd},-1鍏夌數锛歿Location.gd2}锛�-2鍏夌數:{Location.gd1},-3鍏夌數锛歿Location.gd4}锛�-4鍏夌數锛歿Location.gd3},鐘舵�侊細{Location.location_state},璁惧缁戝畾锛歿Location.light_color},鏇存柊鏃堕棿锛歿Location.wireless_time}", $"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�");
+                                                    //WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�").Write($"----------------浠诲姟鐢熸垚鎴愬姛  {DateTime.Now} -------------- {Environment.NewLine}", $"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�");
                                                 }
+
                                                 break;
                                             }
+                                        }
+                                        else
+                                        {
+                                            //浠h〃杩欎釜璐ф灦鏃犳硶瑁呬笅鏂�1鍙g殑鏂欎簡锛屼絾鏄笅鏂�2鍙h繕鍙互瑁呮枡鍦ㄨ繖涓揣鏋朵笂锛岃揣鏋朵笉鑳藉彇娑堣澶囩粦瀹�
+                                        }
+                                    }//浠h〃鏈夎繖涓澶囩粦瀹氱殑璐ф灦
+                                    else //浠h〃娌℃湁杩欎釜璁惧缁戝畾鐨勮揣鏋讹紝杩涜鎵句竴涓病鏈夎澶囩粦瀹氱殑璐ф灦杩涜缁戝畾锛屾潵缁欒繖鍙拌澶囪鏂�
+                                    {
+                                        List<base_ware_location> loctionList = new List<base_ware_location>();
+                                        foreach (var item in Routing_Table)
+                                        {
+                                            base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.gd1 == 0 && d.gd2 == 0 && d.gd3 == 0 && d.gd4 == 0 && d.light_color == "鏃�");
+                                            if (ware_Locations == null)
+                                            {
+                                                continue;
+                                            }
+                                            loctionList.Add(ware_Locations);
+                                        }
+
+                                        if (loctionList.Count != 0)
+                                        {
+                                            List<base_ware_location> Locationlist = loctionList.OrderBy(d => d.update_time).ToList();
+                                            foreach (var xLocation in Locationlist)
+                                            {
+                                                var a = "";
+                                                var upper_code = xLocation.upper_code.Split('-');
+                                                if (xLocation.gd1 == 0 && xLocation.gd2 == 0 && a == "")//鍐呬晶澶栦晶閮芥病鏈夋枡浼樺厛鏀惧唴渚�
+                                                {
+
+                                                    string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-2";//澶栦晶 1-2
+                                                    var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum);
+                                                    if (WCloctionNUM == null)
+                                                    {
+                                                        string tasknum = upper_code[0] + "-" + upper_code[1] + "-1";//鍐呬晶 1-1
+
+                                                        var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
+                                                        if (loctionNUM == null)
+                                                        {
+                                                            a = tasknum;
+                                                        }
+                                                    }
+
+                                                }
+                                                if (xLocation.gd2 == 1 && xLocation.gd1 == 0 && a == "")//鍐呬晶鏈夋枡鏃舵斁澶栦晶
+                                                {
+                                                    string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-1";//鍐呬晶 1-1
+
+                                                    var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum);
+                                                    if (NCloctionNUM == null)
+                                                    {
+                                                        string tasknum = upper_code[0] + "-" + upper_code[1] + "-2";//澶栦晶 1-2
+                                                        var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
+                                                        if (loctionNUM == null)
+                                                        {
+                                                            a = tasknum;
+                                                        }
+                                                    }
+                                                }
+
+                                                if (a != "")
+                                                {
+                                                    dt_agvtask_hty agvtask_Hty = agvhtyRepository.Find(d => d.agv_toaddress == a && d.agv_taskstate == AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d => d.agv_finishedtime).FirstOrDefault();
+                                                    if (agvtask_Hty != null)
+                                                    {
+                                                        bool interval = (DateTime.Now - agvtask_Hty.agv_finishedtime).Value.TotalSeconds < 100;
+                                                        if (interval)
+                                                        {
+                                                            continue;
+                                                        }
+                                                    }
+                                                    //鐢熸垚杈婂垎鏈轰笅鏂欎换鍔�
+                                                    dt_agvtask agvtask = new dt_agvtask()
+                                                    {
+                                                        agv_id = Guid.NewGuid(),
+                                                        agv_tasknum = "KH-" + IdenxManager.GetTaskNo(),
+                                                        agv_fromaddress = plc.PLCDescroption,
+                                                        agv_toaddress = a,
+                                                        agv_code = "缁勮AGV璋冨害",
+                                                        agv_remark = "杈婂垎涓嬫枡浠诲姟",
+                                                        agv_taskstate = AGVTaskStateEnum.Create.ToString(),
+                                                        agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(),
+                                                        agv_worktype = 1,//宸ヤ綔绫诲瀷
+                                                        agv_materielid = "",
+                                                        agv_qty = 1,
+                                                        agv_createtime = DateTime.Now,
+                                                        agv_grade = 0,//浠诲姟浼樺厛绾�
+                                                        agv_userid = "WCS",
+                                                        agv_barcode = "",
+                                                    };
+
+                                                    //Location.update_time = DateTime.Now;
+                                                    xLocation.task = 1;
+                                                    xLocation.logic_col = 0;
+                                                    xLocation.light_color = plc.PLCName;
+                                                    var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
+                                                    if (entry != null)
+                                                    {
+                                                        entry.State = EntityState.Detached;
+                                                    }
+                                                    int zone = locRepository.Update(xLocation, d => new { d.task, d.light_color, d.logic_col }, true);
+                                                    if (zone == 1)
+                                                    {
+                                                        agvRepository.Add(agvtask, true);
+                                                        ////WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�").Write($"鐢熸垚浠诲姟:{agvtask.agv_tasknum},缁堢偣璐т綅銆恵a}銆戠姸鎬侊細鎵樼洏鍏夌數妫�娴嬶細{xLocation.tpgd},-1鍏夌數锛歿xLocation.gd2}锛�-2鍏夌數:{xLocation.gd1},-3鍏夌數锛歿xLocation.gd4}锛�-4鍏夌數锛歿xLocation.gd3},鐘舵�侊細{xLocation.location_state},璁惧缁戝畾锛歿xLocation.light_color}锛屾洿鏂版椂闂达細{Location.wireless_time}", $"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�");
+                                                        //WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�").Write($"----------------浠诲姟鐢熸垚鎴愬姛  {DateTime.Now} -------------- {Environment.NewLine}", $"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�");
+                                                    }
+                                                    break;
+                                                }
+
+                                            }
 
                                         }
 
                                     }
-                              
                                 }
                             }
-                        }
-                        OperateResult<bool> GYC_RFX2 = plc.MelsecPLCClient.MelsecMcNetClient.ReadBool("D5893.0");
-                        if (!GYC_RFX2.IsSuccess)
-                        {
-                            //WriteLog.GetLog($"{GFSBS}涓嬫枡鍛煎彨").Write($"{GFSBS}浜屽彛鏂紑杩炴帴  鏃堕棿锛歿DateTime.Now}  -------------- {Environment.NewLine}", $"{GFSBS}涓嬫枡鍛煎彨");
-                            continue;
-                      
-                        }
-                        if (GYC_RFX2.Content)
-                        {
-
-                            //鏌ョ湅褰撳墠杈婂垎鏈鸿澶囨槸鍚︽湁AGV浠诲姟
-                            var SBtask = agvRepository.FindFirst(f => f.agv_fromaddress == plc.PLCDownLoc && (f.agv_taskstate == AGVTaskStateEnum.Create.ToString() || f.agv_taskstate == AGVTaskStateEnum.SendOut.ToString() || f.agv_taskstate == AGVTaskStateEnum.Executing.ToString() || f.agv_taskstate == AGVTaskStateEnum.Complete.ToString()));
-                            //鏈夌粨鏉熸湰娆″惊鐜�
-                            if (SBtask != null) { }
-                            else
+                            OperateResult<bool> GYC_RFX2 = plc.MelsecPLCClient.MelsecMcNetClient.ReadBool("D5893.0");
+                            if (!GYC_RFX2.IsSuccess)
                             {
-                                List<base_routing_table> Routing_Table = routingRepository.Find(d => d.route_began == plc.PLCDownLoc);
+                                //WriteLog.GetLog($"{GFSBS}涓嬫枡鍛煎彨").Write($"{GFSBS}浜屽彛鏂紑杩炴帴  鏃堕棿锛歿DateTime.Now}  -------------- {Environment.NewLine}", $"{GFSBS}涓嬫枡鍛煎彨");
+                                continue;
 
-                                base_ware_location Location = null; //鎵剧粦瀹氳澶囩殑璐ф灦
-                                foreach (var item in Routing_Table)
+                            }
+                            if (GYC_RFX2.Content)
+                            {
+
+                                //鏌ョ湅褰撳墠杈婂垎鏈鸿澶囨槸鍚︽湁AGV浠诲姟
+                                var SBtask = agvRepository.FindFirst(f => f.agv_fromaddress == plc.PLCDownLoc && (f.agv_taskstate == AGVTaskStateEnum.Create.ToString() || f.agv_taskstate == AGVTaskStateEnum.SendOut.ToString() || f.agv_taskstate == AGVTaskStateEnum.Executing.ToString() || f.agv_taskstate == AGVTaskStateEnum.Complete.ToString()));
+                                //鏈夌粨鏉熸湰娆″惊鐜�
+                                if (SBtask != null) { }
+                                else
                                 {
-                                    //缁戝畾璁惧鐨勮揣鏋�
-                                    base_ware_location ware_Locations = locRepository.FindFirst(d => d.upper_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.light_color == plc.PLCName.ToString());
-                                    if (ware_Locations != null)
-                                    {
-                                        Location = ware_Locations;
-                                        break;
-                                    }
-                                }
-                                if (Location != null)
-                                {
-                                    if (Location.gd1 == 1 && Location.gd4 == 1)//浠h〃涓嬫枡1,2鍙d笅鐨勬枡鏃犳硶鍦ㄨ繖涓揣鏋惰鏂欎簡锛岃揣鏋跺氨鍙栨秷璁惧缁戝畾
-                                    {
-                                        var upper_code = Location.upper_code.Split('-');
-                                        string tasknum = upper_code[0] + "-" + upper_code[1];
-                                        var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress.Contains(tasknum));
-                                        if (loctionNUM == null)
-                                        {
-                                            Location.light_color = "鏃�";
-                                            locRepository.Update(Location,d=>d.light_color, true);
-                                        }
-                                    }
-                                    else if (Location.gd4 == 0)//浠h〃杩欎釜璐ф灦杩樿兘缁欎笅鏂�1鍙h鏂�
-                                    {
-                                        var a = "";
-                                        var upper_code = Location.upper_code.Split('-');
+                                    #region 璁板綍涓嬫枡璇锋眰淇″彿
+                                    WriteLog.GetLog().Write($"涓嬫枡鍙�2璇锋眰锛歿GYC_RFX2.Content}---{DateTime.Now}", $"{plc.PLCName}涓嬫枡璇锋眰");
+                                    #endregion
+                                    List<base_routing_table> Routing_Table = routingRepository.Find(d => d.route_began == plc.PLCDownLoc);
 
-                                        if (Location.gd4 == 0 && Location.gd3 == 0 && a == "")
+                                    base_ware_location Location = null; //鎵剧粦瀹氳澶囩殑璐ф灦
+                                    foreach (var item in Routing_Table)
+                                    {
+                                        //缁戝畾璁惧鐨勮揣鏋�
+                                        base_ware_location ware_Locations = locRepository.FindFirst(d => d.upper_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.light_color == plc.PLCName.ToString());
+                                        if (ware_Locations != null)
                                         {
-                                            string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-3";//澶栦晶
-                                            var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum);
-                                            if (WCloctionNUM == null)
-                                            {
-                                                string tasknum = upper_code[0] + "-" + upper_code[1] + "-4";//鍐呬晶
-                                                var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
-                                                if (loctionNUM == null)
-                                                {
-                                                    a = tasknum;
-                                                }
-                                            }
-                                            //}
-                                        }
-                                        if (Location.gd3 == 1 && Location.gd4 == 0 && a == "")
-                                        {
-                                            string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-4";//鍐呬晶
-                                            var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum);
-                                            if (NCloctionNUM == null)
-                                            {
-                                                string tasknum = upper_code[0] + "-" + upper_code[1] + "-3";//澶栦晶
-                                                var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
-                                                if (loctionNUM == null)
-                                                {
-                                                    a = tasknum;
-                                                }
-
-                                            }
-                                        }
-                                        if (a != "")
-                                        {
-                                            dt_agvtask_hty agvtask_Hty = agvhtyRepository.Find(d => d.agv_toaddress == a && d.agv_taskstate == AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d => d.agv_finishedtime).FirstOrDefault();
-                                            if (agvtask_Hty != null)
-                                            {
-                                                bool interval = (DateTime.Now - agvtask_Hty.agv_finishedtime).Value.TotalSeconds < 100;
-                                                if (interval)
-                                                {
-                                                    continue;
-                                                }
-                                            }
-                                            //鐢熸垚杈婂垎鏈轰笅鏂欎换鍔�
-                                            dt_agvtask agvtask = new dt_agvtask()
-                                            {
-                                                agv_id = Guid.NewGuid(),
-                                                agv_tasknum = "KH-" + IdenxManager.GetTaskNo(),
-                                                agv_fromaddress = plc.PLCDownLoc,
-                                                agv_toaddress = a,
-                                                agv_code = "缁勮AGV璋冨害",
-                                                agv_remark = "杈婂垎涓嬫枡浠诲姟",
-                                                agv_taskstate = AGVTaskStateEnum.Create.ToString(),
-                                                agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(),
-                                                agv_worktype = 1,//宸ヤ綔绫诲瀷
-                                                agv_materielid = "",
-                                                agv_qty = 1,
-                                                agv_createtime = DateTime.Now,
-                                                agv_grade = 0,//浠诲姟浼樺厛绾�
-                                                agv_userid = "WCS",
-                                                agv_barcode = "",
-                                            };
-                                            //Location.update_time = DateTime.Now;
-                                            Location.task = 1;
-                                            Location.logic_col = 0;
-                                            var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
-                                            if (entry != null)
-                                            {
-                                                entry.State = EntityState.Detached;
-                                            }
-                                          int ztwo=  locRepository.Update(Location, d => new { d.task, d.logic_col }, true);
-                                            if (ztwo==1)
-                                            {
-                                                    agvRepository.Add(agvtask, true);
-                                                    WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�").Write($"鐢熸垚浠诲姟:{agvtask.agv_tasknum},缁堢偣璐т綅銆恵a}銆戠姸鎬侊細鎵樼洏鍏夌數妫�娴嬶細{Location.tpgd},-1鍏夌數锛歿Location.gd2}锛�-2鍏夌數:{Location.gd1},-3鍏夌數锛歿Location.gd4}锛�-4鍏夌數锛歿Location.gd3},鐘舵�侊細{Location.location_state},璁惧缁戝畾锛歿Location.light_color}锛屾洿鏂版椂闂达細{Location.wireless_time}", $"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�");
-                                                    WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�").Write($"----------------浠诲姟鐢熸垚鎴愬姛  {DateTime.Now} -------------- {Environment.NewLine}", $"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�");
-                                            }
+                                            Location = ware_Locations;
                                             break;
                                         }
                                     }
-                                 
-                                }//浠h〃鏈夎繖涓澶囩粦瀹氱殑璐ф灦
-                                else //浠h〃娌℃湁杩欎釜璁惧缁戝畾鐨勮揣鏋讹紝杩涜鎵句竴涓病鏈夎澶囩粦瀹氱殑璐ф灦杩涜缁戝畾锛屾潵缁欒繖鍙拌澶囪鏂�
-                                {
-                                    List<base_ware_location> loctionList = new List<base_ware_location>();
-                                    foreach (var item in Routing_Table)
+                                    if (Location != null)
                                     {
-                                        base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.gd1 == 0 && d.gd2 == 0 && d.gd3 == 0 && d.gd4 == 0 && d.light_color == "鏃�");
-                                        if (ware_Locations == null)
+                                        if (Location.gd1 == 1 && Location.gd4 == 1)//浠h〃涓嬫枡1,2鍙d笅鐨勬枡鏃犳硶鍦ㄨ繖涓揣鏋惰鏂欎簡锛岃揣鏋跺氨鍙栨秷璁惧缁戝畾
                                         {
-                                            continue;
+                                            var upper_code = Location.upper_code.Split('-');
+                                            string tasknum = upper_code[0] + "-" + upper_code[1];
+                                            var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress.Contains(tasknum));
+                                            if (loctionNUM == null)
+                                            {
+                                                Location.light_color = "鏃�";
+                                                locRepository.Update(Location, d => d.light_color, true);
+                                            }
                                         }
-                                        loctionList.Add(ware_Locations);
-                                    }
-
-                                    if (loctionList.Count != 0)
-                                    {
-                                        List<base_ware_location> Locationlist = loctionList.OrderBy(d => d.update_time).ToList();
-                                        foreach (var xLocation in Locationlist)
+                                        else if (Location.gd4 == 0)//浠h〃杩欎釜璐ф灦杩樿兘缁欎笅鏂�1鍙h鏂�
                                         {
                                             var a = "";
-                                            var upper_code = xLocation.upper_code.Split('-');
-                                            if (xLocation.gd4 == 0 && xLocation.gd3 == 0 && a == "")
+                                            var upper_code = Location.upper_code.Split('-');
+
+                                            if (Location.gd4 == 0 && Location.gd3 == 0 && a == "")
                                             {
-                                                string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-3";//澶栦晶
-                                                var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum);
-                                                if (NCloctionNUM == null)
+                                                string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-3";//澶栦晶
+                                                var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum);
+                                                if (WCloctionNUM == null)
                                                 {
                                                     string tasknum = upper_code[0] + "-" + upper_code[1] + "-4";//鍐呬晶
                                                     var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
@@ -461,11 +371,11 @@
                                                 }
                                                 //}
                                             }
-                                            if (xLocation.gd3 == 1 && xLocation.gd4 == 0 && a == "")
+                                            if (Location.gd3 == 1 && Location.gd4 == 0 && a == "")
                                             {
-                                                string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-4";//鍐呬晶
-                                                var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum);
-                                                if (WCloctionNUM == null)
+                                                string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-4";//鍐呬晶
+                                                var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum);
+                                                if (NCloctionNUM == null)
                                                 {
                                                     string tasknum = upper_code[0] + "-" + upper_code[1] + "-3";//澶栦晶
                                                     var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
@@ -473,9 +383,9 @@
                                                     {
                                                         a = tasknum;
                                                     }
+
                                                 }
                                             }
-
                                             if (a != "")
                                             {
                                                 dt_agvtask_hty agvtask_Hty = agvhtyRepository.Find(d => d.agv_toaddress == a && d.agv_taskstate == AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d => d.agv_finishedtime).FirstOrDefault();
@@ -506,51 +416,152 @@
                                                     agv_userid = "WCS",
                                                     agv_barcode = "",
                                                 };
-                                   
                                                 //Location.update_time = DateTime.Now;
-                                                xLocation.task = 1;
-                                                xLocation.logic_col = 0;
-                                                xLocation.light_color = plc.PLCName;
+                                                Location.task = 1;
+                                                Location.logic_col = 0;
                                                 var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
                                                 if (entry != null)
                                                 {
                                                     entry.State = EntityState.Detached;
                                                 }
-                                               int ztwo= locRepository.Update(xLocation, d => new { d.task, d.light_color, d.logic_col }, true);
+                                                int ztwo = locRepository.Update(Location, d => new { d.task, d.logic_col }, true);
                                                 if (ztwo == 1)
                                                 {
                                                     agvRepository.Add(agvtask, true);
-                                                    WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�").Write($"鐢熸垚浠诲姟:{agvtask.agv_tasknum},缁堢偣璐т綅銆恵a}銆戠姸鎬侊細鎵樼洏鍏夌數妫�娴嬶細{xLocation.tpgd},-1鍏夌數锛歿xLocation.gd2}锛�-2鍏夌數:{xLocation.gd1},-3鍏夌數锛歿xLocation.gd4}锛�-4鍏夌數锛歿xLocation.gd3},鐘舵�侊細{xLocation.location_state},璁惧缁戝畾锛歿xLocation.light_color}锛屾洿鏂版椂闂达細{xLocation.wireless_time}", $"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�");
-
-                                                    //base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == xLocation.upper_code );
-                                                    //if (ware_Locations!=null)
-                                                    //{
-                                                    //    WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎换鍔$敓鎴�").Write($"璐т綅銆恵ware_Locations.upper_code}銆�:璐т綅浠诲姟鐘舵�侊細{ware_Locations.task}", $"銆恵GFSB}銆戜笅鏂欎换鍔$敓鎴�");
-                                                    //}
-                                                    WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�").Write($"----------------浠诲姟鐢熸垚鎴愬姛  {DateTime.Now} -------------- {Environment.NewLine}", $"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�");
+                                                    //WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�").Write($"鐢熸垚浠诲姟:{agvtask.agv_tasknum},缁堢偣璐т綅銆恵a}銆戠姸鎬侊細鎵樼洏鍏夌數妫�娴嬶細{Location.tpgd},-1鍏夌數锛歿Location.gd2}锛�-2鍏夌數:{Location.gd1},-3鍏夌數锛歿Location.gd4}锛�-4鍏夌數锛歿Location.gd3},鐘舵�侊細{Location.location_state},璁惧缁戝畾锛歿Location.light_color}锛屾洿鏂版椂闂达細{Location.wireless_time}", $"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�");
+                                                    //WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�").Write($"----------------浠诲姟鐢熸垚鎴愬姛  {DateTime.Now} -------------- {Environment.NewLine}", $"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�");
                                                 }
                                                 break;
+                                            }
+                                        }
+
+                                    }//浠h〃鏈夎繖涓澶囩粦瀹氱殑璐ф灦
+                                    else //浠h〃娌℃湁杩欎釜璁惧缁戝畾鐨勮揣鏋讹紝杩涜鎵句竴涓病鏈夎澶囩粦瀹氱殑璐ф灦杩涜缁戝畾锛屾潵缁欒繖鍙拌澶囪鏂�
+                                    {
+                                        List<base_ware_location> loctionList = new List<base_ware_location>();
+                                        foreach (var item in Routing_Table)
+                                        {
+                                            base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.gd1 == 0 && d.gd2 == 0 && d.gd3 == 0 && d.gd4 == 0 && d.light_color == "鏃�");
+                                            if (ware_Locations == null)
+                                            {
+                                                continue;
+                                            }
+                                            loctionList.Add(ware_Locations);
+                                        }
+
+                                        if (loctionList.Count != 0)
+                                        {
+                                            List<base_ware_location> Locationlist = loctionList.OrderBy(d => d.update_time).ToList();
+                                            foreach (var xLocation in Locationlist)
+                                            {
+                                                var a = "";
+                                                var upper_code = xLocation.upper_code.Split('-');
+                                                if (xLocation.gd4 == 0 && xLocation.gd3 == 0 && a == "")
+                                                {
+                                                    string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-3";//澶栦晶
+                                                    var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum);
+                                                    if (NCloctionNUM == null)
+                                                    {
+                                                        string tasknum = upper_code[0] + "-" + upper_code[1] + "-4";//鍐呬晶
+                                                        var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
+                                                        if (loctionNUM == null)
+                                                        {
+                                                            a = tasknum;
+                                                        }
+                                                    }
+                                                    //}
+                                                }
+                                                if (xLocation.gd3 == 1 && xLocation.gd4 == 0 && a == "")
+                                                {
+                                                    string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-4";//鍐呬晶
+                                                    var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum);
+                                                    if (WCloctionNUM == null)
+                                                    {
+                                                        string tasknum = upper_code[0] + "-" + upper_code[1] + "-3";//澶栦晶
+                                                        var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
+                                                        if (loctionNUM == null)
+                                                        {
+                                                            a = tasknum;
+                                                        }
+                                                    }
+                                                }
+
+                                                if (a != "")
+                                                {
+                                                    dt_agvtask_hty agvtask_Hty = agvhtyRepository.Find(d => d.agv_toaddress == a && d.agv_taskstate == AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d => d.agv_finishedtime).FirstOrDefault();
+                                                    if (agvtask_Hty != null)
+                                                    {
+                                                        bool interval = (DateTime.Now - agvtask_Hty.agv_finishedtime).Value.TotalSeconds < 100;
+                                                        if (interval)
+                                                        {
+                                                            continue;
+                                                        }
+                                                    }
+                                                    //鐢熸垚杈婂垎鏈轰笅鏂欎换鍔�
+                                                    dt_agvtask agvtask = new dt_agvtask()
+                                                    {
+                                                        agv_id = Guid.NewGuid(),
+                                                        agv_tasknum = "KH-" + IdenxManager.GetTaskNo(),
+                                                        agv_fromaddress = plc.PLCDownLoc,
+                                                        agv_toaddress = a,
+                                                        agv_code = "缁勮AGV璋冨害",
+                                                        agv_remark = "杈婂垎涓嬫枡浠诲姟",
+                                                        agv_taskstate = AGVTaskStateEnum.Create.ToString(),
+                                                        agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(),
+                                                        agv_worktype = 1,//宸ヤ綔绫诲瀷
+                                                        agv_materielid = "",
+                                                        agv_qty = 1,
+                                                        agv_createtime = DateTime.Now,
+                                                        agv_grade = 0,//浠诲姟浼樺厛绾�
+                                                        agv_userid = "WCS",
+                                                        agv_barcode = "",
+                                                    };
+
+                                                    //Location.update_time = DateTime.Now;
+                                                    xLocation.task = 1;
+                                                    xLocation.logic_col = 0;
+                                                    xLocation.light_color = plc.PLCName;
+                                                    var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
+                                                    if (entry != null)
+                                                    {
+                                                        entry.State = EntityState.Detached;
+                                                    }
+                                                    int ztwo = locRepository.Update(xLocation, d => new { d.task, d.light_color, d.logic_col }, true);
+                                                    if (ztwo == 1)
+                                                    {
+                                                        agvRepository.Add(agvtask, true);
+                                                        //WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�").Write($"鐢熸垚浠诲姟:{agvtask.agv_tasknum},缁堢偣璐т綅銆恵a}銆戠姸鎬侊細鎵樼洏鍏夌數妫�娴嬶細{xLocation.tpgd},-1鍏夌數锛歿xLocation.gd2}锛�-2鍏夌數:{xLocation.gd1},-3鍏夌數锛歿xLocation.gd4}锛�-4鍏夌數锛歿xLocation.gd3},鐘舵�侊細{xLocation.location_state},璁惧缁戝畾锛歿xLocation.light_color}锛屾洿鏂版椂闂达細{xLocation.wireless_time}", $"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�");
+
+                                                        //base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == xLocation.upper_code );
+                                                        //if (ware_Locations!=null)
+                                                        //{
+                                                        //    //WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎换鍔$敓鎴�").Write($"璐т綅銆恵ware_Locations.upper_code}銆�:璐т綅浠诲姟鐘舵�侊細{ware_Locations.task}", $"銆恵GFSB}銆戜笅鏂欎换鍔$敓鎴�");
+                                                        //}
+                                                        //WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�").Write($"----------------浠诲姟鐢熸垚鎴愬姛  {DateTime.Now} -------------- {Environment.NewLine}", $"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�");
+                                                    }
+                                                    break;
+                                                }
+
                                             }
 
                                         }
 
                                     }
-                           
                                 }
                             }
-                        }
-                
-                    }
-                }
-                catch (Exception)
-                {
 
-                    throw;
-                }
-                finally
-                {
-                    Interlocked.Exchange(ref _readGFBUPSignalso, 0);
-                }
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        WriteLog.GetLog().Write($"姝f瀬妫嶅垎涓嬫枡锛歿DateTime.Now} --------------{ex}", $"姝f瀬妫嶅垎涓嬫枡");
+                    }
+                    finally
+                    {
+                        Interlocked.Exchange(ref _readGFBUPSignalso, 0);
+                    }
+                });
+               
             }
 
 

--
Gitblit v1.9.3