From 50fd5cc9cfad08714c4daa6d481c5293ff2ae6b1 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期三, 31 一月 2024 18:55:28 +0800 Subject: [PATCH] 逻辑完善 --- 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs | 84 ++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 80 insertions(+), 4 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs" index 3804ccf..4d94346 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs" @@ -4,7 +4,15 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using WIDESEA_Comm; +using WIDESEA_Core.BaseProvider; +using WIDESEA_Core.EFDbContext; +using WIDESEA_Core.FreeDB; +using WIDESEA_WCS.IRepositories; +using WIDESEA_WCS.Jobs; +using WIDESEA_WCS.Repositories; using WIDESEA_WCS.WCSClient; +using static System.Collections.Specialized.BitVector32; namespace WIDESEA_WCS { @@ -12,7 +20,7 @@ /// 閾炬潯鏈� /// </summary> [DisallowConcurrentExecution] - public class PipelineJob : IJob + public class PipelineJob : JobBase, IJob { public Task Execute(IJobExecutionContext context) { @@ -31,15 +39,83 @@ return Task.CompletedTask; } - DoAction(client); + //DoAction(client); + ExecuteJob(context, DoAction); } catch { } return Task.CompletedTask; } - private void DoAction(PLCClient client) + private void DoAction(IJobExecutionContext context) { - throw new NotImplementedException(); + var client = context.JobDetail.JobDataMap.Get("JobParams") as PLCClient; + //鑷姩閲嶈繛 + if (!client.IsConnected) + { + client.Connect(); + return; + } + Loadinglevel(client); + } + /// <summary> + /// 涓婃枡鍖� + /// </summary> + /// <param name="client"></param> + private void Loadinglevel(PLCClient client, string number = "涓婃枡鍖�") + { + VOLContext Context = new VOLContext(); + Idt_plcinfoheadRepository repository = new dt_plcinfoheadRepository(Context); + Idt_plcinfodetailRepository plcRepository = new dt_plcinfodetailRepository(Context); + Idt_geometry_dataRepository dataRepository = new dt_geometry_dataRepository(Context); + Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context); + var plc = repository.FindFirst(x => x.plcinfo_name == client.PLCName); + var Gantry_client = PLCClient.Clients.FirstOrDefault(t => t.PLCName == "妗佹灦"); + if (!Gantry_client.IsConnected) return; + var Gantryplc = repository.FindFirst(x => x.plcinfo_name == Gantry_client.PLCName); + List<string> names = new List<string>() { "S01001001", "S01001002" }; + foreach (string name in names) + { + var station = stationinfoRepository.FindFirst(x => x.stationCode == name && x.enable && x.location_state == LocationStateEnum.Stroge.ToString()); + if (station == null) + { + Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆 + continue; + } + var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == name).ToList(); + var PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃� + var MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃� + if (PalletSignal == 1 && MaterialSignal == 1) + { + Gantry_client.WriteByOrder("W_AreaNr", (Int16)1, number);//鍖哄煙璐т綅鍙� + Gantry_client.WriteByOrder("W_IndexNr", (Int16)1, number);//鎵樼洏涓婄殑绗嚑涓溅杞� + Gantry_client.WriteByOrder("W_Storage_Type", (Int16)1, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁 + Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)1, number);//杞﹁疆绫诲瀷 + Gantry_client.WriteByOrder("W_Wheel_id", "", number);//杞﹁疆SN鍙� + Gantry_client.WriteByOrder("W_RequestUnload", true, number); + } + else + { + Gantry_client.WriteByOrder("W_RequestUnload", false, number); + } + var Gantrydetails = plcRepository.Find(x => x.plcdetail_iotype == Gantryplc.plcinfo_iotyep && x.plcdetail_number == number).ToList(); + var Gantry_Out_of_Area = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Gantry_Out_of_Area").First(), Gantry_client);//妗佹灦鏄惁鍦ㄥ尯鍩熷唴 + + var QueryDate = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_QueryDate").First(), Gantry_client);//淇℃伅鏌ヨ + if (QueryDate) + { + var Date_Vaild = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Date_Vaild").First(), Gantry_client);//淇℃伅纭 + if (!Date_Vaild)//淇℃伅鏈夎锛岃褰曟棩蹇� + { + + } + } + var finished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Unlod_finished").First(), Gantry_client);//澶瑰彇瀹屾垚 + if (finished) + { + + Gantry_client.WriteByOrder("W_Storage_update", true, number);//璐т綅鐘舵�佹洿鏂� + } + } } } } -- Gitblit v1.9.3