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