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_TBSB_DownTask.cs | 228 +++++++++++++++++++++++++++++---------------------------- 1 files changed, 116 insertions(+), 112 deletions(-) diff --git a/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/Z_TBSB_DownTask.cs b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/Z_TBSB_DownTask.cs index bf2eabf..1ba2181 100644 --- a/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/Z_TBSB_DownTask.cs +++ b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/Z_TBSB_DownTask.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading; +using System.Threading.Tasks; using WIDESEA_Common; using WIDESEA_Common.LoctionEnum; using WIDESEA_Common.Tools; @@ -28,138 +29,141 @@ { if (Interlocked.Exchange(ref _readZTBSignalsoZ_Down, 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); - List<string> TBSBS = new List<string> { "娑傚竷鏈烘鏋�1", "娑傚竷鏈烘鏋�2", "娑傚竷鏈烘鏋�3", "娑傚竷鏈烘鏋�4" }; + try + { + 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); + List<string> TBSBS = new List<string> { "娑傚竷鏈烘鏋�1", "娑傚竷鏈烘鏋�2", "娑傚竷鏈烘鏋�3", "娑傚竷鏈烘鏋�4" }; - if (WCSService.Clients == null) - { - return; - } - //寰幆澶勭悊娑傚竷璁惧涓嬫枡璇锋眰 - foreach (var TBSB in TBSBS) - { - - PLCClient plc = WCSService.Clients.Find(v => v.PLCName == TBSB); - if (plc == null) + if (WCSService.Clients == null) { - continue; + return; } - - string SB_Up_Location = "ZJXL-TBSB" + TBSB.Replace("娑傚竷鏈烘鏋�", "");//鎷兼帴娑傚竷涓嬫枡鍙� - //鏌ョ湅褰撳墠娑傚竷鏈鸿澶囨槸鍚︽湁AGV浠诲姟 - var SBtask = agvRepository.FindFirst(f => f.agv_fromaddress == SB_Up_Location); - //鏈夌粨鏉熸湰娆″惊鐜� - if (SBtask != null) { continue; } - //褰撳墠璁惧鏈夋病鏈変笅鏂欒姹� - bool GYR_RFX = plc.OmronPLCClient.OmronFinsNetClient.ReadBool("D11293.00").Content; - //Convert.ToBoolean(plc.ReadValue("R_Feedingrequest".ToString(), SB_Up_Location)); - if (GYR_RFX) + //寰幆澶勭悊娑傚竷璁惧涓嬫枡璇锋眰 + foreach (var TBSB in TBSBS) { - - //鎵惧埌璺敱瑙勫垯(浠ヨ澶囦负璧风偣鐨勮矾鐢辫鍒�) - List<base_routing_table> Routing_Table = routingRepository.Find(d => d.route_began == SB_Up_Location); - base_ware_location location_TB = null; - if (Routing_Table.Count > 0) + PLCClient plc = WCSService.Clients.Find(v => v.PLCName == TBSB); + if (plc == null) { - foreach (var item in Routing_Table) + continue; + } + + string SB_Up_Location = "ZJXL-TBSB" + TBSB.Replace("娑傚竷鏈烘鏋�", "");//鎷兼帴娑傚竷涓嬫枡鍙� + //鏌ョ湅褰撳墠娑傚竷鏈鸿澶囨槸鍚︽湁AGV浠诲姟 + var SBtask = agvRepository.FindFirst(f => f.agv_fromaddress == SB_Up_Location); + //鏈夌粨鏉熸湰娆″惊鐜� + if (SBtask != null) { continue; } + //褰撳墠璁惧鏈夋病鏈変笅鏂欒姹� + bool GYR_RFX = plc.OmronPLCClient.OmronFinsNetClient.ReadBool("D11293.00").Content; + //Convert.ToBoolean(plc.ReadValue("R_Feedingrequest".ToString(), SB_Up_Location)); + if (GYR_RFX) + { + #region 璁板綍涓嬫枡璇锋眰淇″彿 + WriteLog.GetLog().Write($"{plc.PLCName}涓嬫枡璇锋眰锛歿GYR_RFX}---{DateTime.Now}", $"姝f瀬娑傚竷涓嬫枡璇锋眰"); + #endregion + //鎵惧埌璺敱瑙勫垯(浠ヨ澶囦负璧风偣鐨勮矾鐢辫鍒�) + List<base_routing_table> Routing_Table = routingRepository.Find(d => d.route_began == SB_Up_Location); + base_ware_location location_TB = null; + + if (Routing_Table.Count > 0) { - //鎵惧厛鎵炬秱甯冨尯鍩熺紦瀛樻灦 - location_TB = locRepository.FindFirst(t => t.upper_code == item.route_end && t.location_state == LoctionStateEnum.LocationState_Empty.ToString() &&t.tpgd==0 && t.area == "ZJ-TBHCJ" && t.status == 1 && t.task == 2); - if (location_TB != null) + foreach (var item in Routing_Table) { - //location = location_TB.FirstOrDefault();//濡傛灉鎵惧埌锛岃祴鍊煎悗閫�鍑哄惊鐜� - break; - } - } - //浠ヤ笂寰幆鏈壘鍒板悎閫傝揣浣嶏紝鍐嶆壘绠旀潗搴撲笁鍙蜂綅缂撳瓨鏋� - if (location_TB == null) - { - - //瀹氫綅閾傛潗搴撹矾鐢憋紝鎵惧埌閾傛潗搴撹揣浣嶅彿 - base_routing_table Loc_BCK = Routing_Table.FirstOrDefault(t => t.route_end.Contains("ZJ-BCHCJ")); - if (Loc_BCK != null) - { - //鏍规嵁鏍规嵁璐т綅鍙锋壘鍒伴搨鏉愬簱浣嶇疆骞剁‘璁ゆ槸鍚︽湁鏂� - location_TB = locRepository.FindFirst(t => t.upper_code == Loc_BCK.route_end && t.location_state == LoctionStateEnum.LocationState_Empty.ToString() && t.status == 1 && t.task == 2); - if (location_TB==null) + //鎵惧厛鎵炬秱甯冨尯鍩熺紦瀛樻灦 + location_TB = locRepository.FindFirst(t => t.upper_code == item.route_end && t.location_state == LoctionStateEnum.LocationState_Empty.ToString() && t.tpgd == 0 && t.area == "ZJ-TBHCJ" && t.status == 1 && t.task == 2); + if (location_TB != null) { - - return; + //location = location_TB.FirstOrDefault();//濡傛灉鎵惧埌锛岃祴鍊煎悗閫�鍑哄惊鐜� + break; } } - + //浠ヤ笂寰幆鏈壘鍒板悎閫傝揣浣嶏紝鍐嶆壘绠旀潗搴撲笁鍙蜂綅缂撳瓨鏋� + if (location_TB == null) + { + + //瀹氫綅閾傛潗搴撹矾鐢憋紝鎵惧埌閾傛潗搴撹揣浣嶅彿 + base_routing_table Loc_BCK = Routing_Table.FirstOrDefault(t => t.route_end.Contains("ZJ-BCHCJ")); + if (Loc_BCK != null) + { + //鏍规嵁鏍规嵁璐т綅鍙锋壘鍒伴搨鏉愬簱浣嶇疆骞剁‘璁ゆ槸鍚︽湁鏂� + location_TB = locRepository.FindFirst(t => t.upper_code == Loc_BCK.route_end && t.location_state == LoctionStateEnum.LocationState_Empty.ToString() && t.status == 1 && t.task == 2); + if (location_TB == null) + { + + return; + } + } + + } } - } - if (location_TB != null) - { - - WebResponseContent content = new WebResponseContent(); - locRepository.DbContextBeginTransaction(() => + if (location_TB != null) { - //鐢熸垚娑傚竷鏈轰笅鏂欎换鍔� - dt_agvtask agvtask = new dt_agvtask() - { - agv_id = Guid.NewGuid(), - agv_tasknum = "KH-" + IdenxManager.GetTaskNo(), - agv_fromaddress = SB_Up_Location,//浠ヨ澶囨湭璧风偣 - agv_toaddress = location_TB.upper_code, - agv_code = "姝f瀬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_TB.update_time = DateTime.Now; - location_TB.task = 1; - var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); - if (entry != null) + + WebResponseContent content = new WebResponseContent(); + locRepository.DbContextBeginTransaction(() => { - entry.State = EntityState.Detached; - } - int x = locRepository.Update(location_TB, d => new { d.update_time, d.task}, true); - if (x == 1) - { - agvRepository.Add(agvtask, true); - WriteDBLog.Info($"銆恵TBSB}銆戜笅鏂欎换鍔$敓鎴�").Write($"鐢熸垚浠诲姟:{agvtask.agv_tasknum},缁堢偣璐т綅銆恵location_TB.upper_code}銆戠姸鎬侊細鎵樼洏鍏夌數妫�娴嬶細{location_TB.tpgd},鐘舵�侊細{location_TB.location_state},鏇存柊鏃堕棿锛歿location_TB.wireless_time}", $"銆恵TBSB}銆戜笅鏂欎换鍔$敓鎴�"); - WriteDBLog.Info($"銆恵TBSB}銆戜笅鏂欎换鍔$敓鎴�").Write($"----------------浠诲姟鐢熸垚鎴愬姛 {DateTime.Now} -------------- {Environment.NewLine}", $"銆恵TBSB}銆戜笅鏂欎换鍔$敓鎴�"); - return content.OK(); - } - else - { - return content.Error(); - } - }); - } + //鐢熸垚娑傚竷鏈轰笅鏂欎换鍔� + dt_agvtask agvtask = new dt_agvtask() + { + agv_id = Guid.NewGuid(), + agv_tasknum = "KH-" + IdenxManager.GetTaskNo(), + agv_fromaddress = SB_Up_Location,//浠ヨ澶囨湭璧风偣 + agv_toaddress = location_TB.upper_code, + agv_code = "姝f瀬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_TB.update_time = DateTime.Now; + location_TB.task = 1; + var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); + if (entry != null) + { + entry.State = EntityState.Detached; + } + int x = locRepository.Update(location_TB, d => new { d.update_time, d.task }, true); + if (x == 1) + { + agvRepository.Add(agvtask, true); + //WriteDBLog.Info($"銆恵TBSB}銆戜笅鏂欎换鍔$敓鎴�").Write($"鐢熸垚浠诲姟:{agvtask.agv_tasknum},缁堢偣璐т綅銆恵location_TB.upper_code}銆戠姸鎬侊細鎵樼洏鍏夌數妫�娴嬶細{location_TB.tpgd},鐘舵�侊細{location_TB.location_state},鏇存柊鏃堕棿锛歿location_TB.wireless_time}", $"銆恵TBSB}銆戜笅鏂欎换鍔$敓鎴�"); + //WriteDBLog.Info($"銆恵TBSB}銆戜笅鏂欎换鍔$敓鎴�").Write($"----------------浠诲姟鐢熸垚鎴愬姛 {DateTime.Now} -------------- {Environment.NewLine}", $"銆恵TBSB}銆戜笅鏂欎换鍔$敓鎴�"); + return content.OK(); + } + else + { + return content.Error(); + } + }); + } + } } } - } - catch (Exception ex) - { + catch (Exception ex) + { + WriteLog.GetLog().Write($"姝f瀬娑傚竷涓嬫枡锛歿DateTime.Now} --------------{ex}", $"姝f瀬娑傚竷涓嬫枡"); + } + finally + { - //WriteLog.Info($"浠诲姟鐢熸垚").Write($"缁撴潫鏃堕棿锛� {DateTime.Now} 寮傚父淇℃伅锛歿ex.Message} -------------- {Environment.NewLine}", $"浠诲姟鐢熸垚"); - throw; - } - finally - { - - Interlocked.Exchange(ref _readZTBSignalsoZ_Down, 0); - } + Interlocked.Exchange(ref _readZTBSignalsoZ_Down, 0); + } + }); + } } -- Gitblit v1.9.3