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