From 6f65b696b8c3019862b12cde466d20844c675c63 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期二, 07 五月 2024 16:23:01 +0800
Subject: [PATCH] 修改错误信息日志记录方式

---
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs              |   18 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs |  578 ---------------------------
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Common/Pipeline.cs            |  606 ++++++++++++++++++++++------
 3 files changed, 483 insertions(+), 719 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs"
index 48cf3b6..e5df10a 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs"
@@ -207,7 +207,7 @@
             catch (Exception ex)
             {
                 //WriteDBLog.Error("鏌ヨ杞﹁疆鏁版嵁", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
-                WriteLog.Write_Log(namea, namea + "鎶ラ敊", "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}");
+                WriteLog.Write_Log("鎶ラ敊鏃ュ織", namea, "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}");
             }
         }
         #endregion
@@ -388,7 +388,7 @@
             catch (Exception ex)
             {
                 //WriteDBLog.Error("鏌ヨ杞﹁疆璁㈠崟", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
-                WriteLog.Write_Log(namea, namea + "鎶ラ敊", "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}");
+                WriteLog.Write_Log("鎶ラ敊鏃ュ織", namea, "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}");
             }
         }
         #endregion
@@ -444,7 +444,7 @@
                         }
                         #endregion
 
-                        var Stations = stationinfoRepository.Find(x => x.area == PipelineJob.area_code(name)).OrderBy(x => x.lastUpdateTime).ToList();
+                        var Stations = stationinfoRepository.Find(x => x.area == Pipeline.area_code(name)).OrderBy(x => x.lastUpdateTime).ToList();
 
                         #region 涓嬫枡浣嶆槸鍚︿负绌虹姸鎬佸悓姝ョ粰妗佹灦
                         foreach (var station in Stations)
@@ -499,7 +499,7 @@
                             }
                             #endregion
 
-                            var areaCode = PipelineJob.area_code(name);   //鏍规嵁涓嬫枡鍙e崟鍏冨悕鑾峰彇鍖哄煙浠g爜
+                            var areaCode = Pipeline.area_code(name);   //鏍规嵁涓嬫枡鍙e崟鍏冨悕鑾峰彇鍖哄煙浠g爜
                             var station = stationinfoRepository.Find(x => x.area == areaCode && x.stationCode.Substring(x.stationCode.Length - 1, 1) == AreaNr.ToString()).FirstOrDefault();
                             if (station != null)
                             {
@@ -610,8 +610,8 @@
                         #endregion
 
 
-                        var wheel = PipelineJob.QueryMateriel(Work.drawingNo);
-                        var wheel1 = PipelineJob.QueryMateriel1(Work.drawingNo);
+                        var wheel = Pipeline.QueryMateriel(Work.drawingNo);
+                        var wheel1 = Pipeline.QueryMateriel1(Work.drawingNo);
                         if (wheel == null && wheel1 == null)
                         {
                             #region 鏃ュ織璁板綍
@@ -892,13 +892,15 @@
                     }
                     catch (Exception ex)
                     {
-                        WriteDBLog.Error(name, $"閿欒淇℃伅锛歿ex.Message}", "PCS");
+                        //WriteDBLog.Error(name, $"閿欒淇℃伅锛歿ex.Message}", "PCS");
+                        WriteLog.Write_Log("鎶ラ敊鏃ュ織", name, "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}");
                     }
                 }
             }
             catch (Exception ex)
             {
-                WriteDBLog.Error("涓嬫枡鍖�", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
+                //WriteDBLog.Error("涓嬫枡鍖�", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
+                WriteLog.Write_Log("鎶ラ敊鏃ュ織", "涓嬫枡鍖�", "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}");
             }
         }
         #endregion
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Pipeline.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Pipeline.cs"
index 0fd93d7..6cbb4af 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Pipeline.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Pipeline.cs"
@@ -13,16 +13,19 @@
 using WIDESEA_WMS.Repositories;
 using HslCommunication;
 using WIDESEA_Entity.DomainModels;
+using WIDESEA_Comm.TaskNo;
+using WIDESEA_WCS.JobsPart.Common;
+using System.Xml.Linq;
 
 namespace WIDESEA_WCS
 {
     public class Pipeline
     {
+
         /// <summary>
         /// 涓婃枡鍖�
         /// </summary>
         /// <param name="client"></param>
-        /// <param name="number"></param>
         public void Loadinglevel(PLCClient client, string number = "涓婃枡鍖�")
         {
             try
@@ -30,7 +33,6 @@
                 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 == "妗佹灦");
@@ -39,126 +41,141 @@
                 var Gantryplc = repository.FindFirst(x => x.plcinfo_name == Gantry_client.PLCName);
 
 
-                ///鏌ユ壘涓婃枡鍖虹殑璐т綅
-                var Stations = stationinfoRepository.Find(x => x.area == area_code(number)).OrderBy(x => x.lastUpdateTime);//鏍规嵁鏃堕棿鍏堝悗鎺掑簭
+                #region 涓婃枡瀹屾垚
 
-                var Station = Stations?.Where(x => x.enable && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderBy(x => x.quantity).FirstOrDefault();
-                if (Station != null)
+                var AreaNr = Gantry_client.ReadByOrder<Int16>("W_AreaNr", number);//璇诲彇璐т綅鍙蜂俊鎭�
+                if (AreaNr != 0)
                 {
-
-                    var SNS = Station.bindSN.Split(",");
-
-                    var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == Station.stationCode).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鏃�
-                    #region 涓婃枡瀹屾垚
-                    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 station = stationinfoRepository.Find(x => x.area == area_code(number) && x.stationCode.Substring(x.stationCode.Length - 1, 1) == AreaNr.ToString()).FirstOrDefault();
+                    if (station != null)
                     {
-                        var Date_Vaild = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Date_Vaild").First(), Gantry_client);//淇℃伅纭
-                        if (!Date_Vaild)//淇℃伅鏈夎锛岃褰曟棩蹇�
+                        var bindSNS = station.bindSN.Split(",");
+                        var Gantrydetails = plcRepository.Find(x => x.plcdetail_iotype == Gantryplc.plcinfo_iotyep && x.plcdetail_number == number).ToList();
+
+                        #region 淇℃伅鏌ヨ纭
+                        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)//淇℃伅鏈夎锛岃褰曟棩蹇�
+                            {
+                                Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
+                                station.location_state = LocationStateEnum.Abnormal.ToString();
+                                station.remark = $"鏈煡璇㈠埌SN鍙凤細{bindSNS[bindSNS.Length - 1]}鐨勮鍗�";
+                                stationinfoRepository.Update(station, true);
+                                WriteDBLog.Error("涓婃枡鍖轰俊鎭煡璇�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{station.stationCode}鏈煡璇㈠埌SN鍙凤細{bindSNS[bindSNS.Length - 1]}鐨勮鍗�", "PCS");
+                                return;
+                            }
+                        }
+                        #endregion
+
+                        #region 璐т綅鐘舵�佹洿鏂板浣�
+                        var finished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Unlod_finished").First(), Gantry_client);//澶瑰彇瀹屾垚
+                        var updatefinished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "W_Storage_update").First(), Gantry_client);//璐т綅鐘舵�佹洿鏂�
+                        if (!finished && updatefinished)
+                        {
+                            Gantry_client.WriteByOrder("W_Storage_update", false, number);//璐т綅鐘舵�佹洿鏂�
+                            WriteLog.Write_Log(number + "涓婃枡瀹屾垚", number + "璐т綅鐘舵�佹洿鏂颁俊鍙峰浣�", "鎴愬姛锛�",
+                                        $"璇诲彇妗佹灦淇℃伅锛歕n涓婃枡瀹屾垚淇″彿锛歿finished}\n\n鍐欏叆妗佹灦淇℃伅锛歕n璐т綅鐘舵�佹洿鏂颁俊鍙凤細{false}");
+                        }
+                        #endregion
+
+                        if (finished && !updatefinished)
+                        {
+
+                            #region 鍒ゆ柇鍖哄煙鍙锋槸鍚︿竴鑷�
+                            var area = Gantry_client.ReadByOrder<Int16>("place_prog", number);//鏀炬枡瀹屾垚鐨勫尯鍩熷彿
+
+                            WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇鍖哄煙鍙锋槸鍚︿竴鑷�", $"PCS鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦鍖哄煙鍙凤細{area}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒");
+                            //if (AreaNr != area)
+                            //{
+                            //    client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
+                            //    //WriteDBLog.Error(name + "鎶ヨ", $"PCS鍖哄煙鍙凤細{AreaNr}锛涙鏋跺尯鍩熷彿锛歿area}閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒", "PCS");
+                            //    WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇鍖哄煙鍙锋槸鍚︿竴鑷�", $"PCS鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦鍖哄煙鍙凤細{area}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒");
+                            //    return;
+                            //}
+                            #endregion
+
+                            #region 鍒ゆ柇杞﹁疆鏁伴噺鏄惁涓�鑷�
+                            var quantity = Gantry_client.ReadByOrder<Int16>("pos_prog", number);//妗佹灦璁板綍鐨勮溅杞暟閲�
+
+                            WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇杞﹁疆鏁伴噺鏄惁涓�鑷�", $"鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦杞﹁疆鏁帮細{quantity}\nPCS杞﹁疆鏁帮細{station.quantity}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒");
+                            //if (quantity != station.quantity)
+                            //{
+                            //    client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
+                            //    WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇杞﹁疆鏁伴噺鏄惁涓�鑷�", $"鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦杞﹁疆鏁帮細{quantity}\nPCS杞﹁疆鏁帮細{station.quantity}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒");
+                            //    return;
+                            //}
+                            #endregion
+
+                            Updatemes(bindSNS[bindSNS.Length - 1]);
+                            station.quantity = station.quantity - 1;
+                            station.bindSN = OperStr(bindSNS);
+                            if (station.quantity <= 0)
+                            {
+                                station.stationType = string.Empty;
+                                station.Number = string.Empty;
+                                station.heatNumber = string.Empty;
+                                station.tray_status = "EmptyTray";
+                            }
+                            var count = stationinfoRepository.Update(station, true);
+                            if (count < 1)
+                            {
+                                WriteDBLog.Error("鍙栨枡瀹屾垚", $"涓婃枡浣嶄俊鎭洿鏂板け璐ワ紒涓婃枡浣嶇紪鍙凤細{station.stationCode}", "PCS");
+                                return;
+                            }
+
+                            Gantry_client.WriteByOrder("W_Storage_update", true, number);//璐т綅鐘舵�佹洿鏂�
                             Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
-                            Station.location_state = LocationStateEnum.Abnormal.ToString();
-                            Station.remark = $"鏈煡璇㈠埌SN鍙凤細{SNS[SNS.Length - 1]}鐨勮鍗�";
-                            stationinfoRepository.Update(Station, true);
-                            WriteDBLog.Error("涓婃枡鍖轰俊鎭煡璇�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}鏈煡璇㈠埌SN鍙凤細{SNS[SNS.Length - 1]}鐨勮鍗�", "PCS");
-                            return;
+
+                            #region 娓呯┖淇℃伅
+                            Gantry_client.WriteByOrder("W_AreaNr", (Int16)0, number);//鍖哄煙璐т綅鍙�
+                            Gantry_client.WriteByOrder("W_IndexNr", (Int16)0, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
+                            Gantry_client.WriteByOrder("W_Storage_Type", (Int16)0, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
+                            Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)0, number);//杞﹁疆绫诲瀷
+                            #endregion
+
+                            #region 鏃ュ織璁板綍
+                            WriteDBLog.Success("鍙栨枡瀹屾垚", $"鍐欏叆妗佹灦淇℃伅锛歕n璐т綅鐘舵�佹洿鏂帮細{true}\nW_RequestUnload锛歿false}", "PCS");
+                            #endregion
                         }
                     }
-                    var finished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Unlod_finished").First(), Gantry_client);//澶瑰彇瀹屾垚
-                    var updatefinished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "W_Storage_update").First(), Gantry_client);//璐т綅鐘舵�佹洿鏂�
-                    if (!finished && updatefinished)
-                        Gantry_client.WriteByOrder("W_Storage_update", false, number);//璐т綅鐘舵�佹洿鏂�
-                    if (finished && !updatefinished)
+                }
+
+                #endregion
+
+                #region 鐢宠涓婃枡
+
+                if (!Gantry_client.ReadByOrder<bool>("W_RequestUnload", number))
+                {
+                    var Station = stationinfoRepository.Find(x => x.area == area_code(number) && x.enable && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderBy(x => x.lastUpdateTime).FirstOrDefault();
+                    if (Station != null)
                     {
-                        Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
-                        Updatemes(SNS[SNS.Length - 1]);
-                        Station.quantity = Station.quantity - 1;
-                        Station.bindSN = OperStr(SNS);
-                        if (Station.quantity <= 0)
+                        var SNS = Station.bindSN.Split(",");
+                        List<string> list = new List<string>();
+                        foreach (var SN in SNS)
                         {
-                            Station.stationType = string.Empty;
-                            Station.Number = string.Empty;
-                            Station.heatNumber = string.Empty;
-                            Station.tray_status = "EmptyTray";
+                            if (!string.IsNullOrEmpty(SN))
+                                list.Add(SN);
                         }
-                        var count = stationinfoRepository.Update(Station, true);
-                        if (count < 1)
+                        //缂撳瓨鏋朵笂杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�
+                        if (list.Count != Station.quantity)
                         {
-                            WriteDBLog.Error("鍙栨枡瀹屾垚", $"涓婃枡浣嶄俊鎭洿鏂板け璐ワ紒涓婃枡浣嶇紪鍙凤細{Station.stationCode}", "PCS");
+                            Station.location_state = LocationStateEnum.Abnormal.ToString();
+                            Station.remark = "杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�";
+                            stationinfoRepository.Update(Station, true);
+                            Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
+                            #region 鏃ュ織璁板綍
+                            WriteDBLog.Error("涓婃枡鍖�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�", "PCS");
+                            #endregion
                             return;
                         }
 
-                        #region 娓呯┖淇℃伅
-                        Gantry_client.WriteByOrder("W_AreaNr", (Int16)0, number);//鍖哄煙璐т綅鍙�
-                        Gantry_client.WriteByOrder("W_IndexNr", (Int16)0, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
-                        Gantry_client.WriteByOrder("W_Storage_Type", (Int16)0, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
-                        Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)0, number);//杞﹁疆绫诲瀷
-                        #endregion
+                        var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == Station.stationCode).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鏃�
 
-                        Gantry_client.WriteByOrder("W_Storage_update", true, number);//璐т綅鐘舵�佹洿鏂�
-                        #region 鏃ュ織璁板綍
-                        WriteDBLog.Success("鍙栨枡瀹屾垚", $"鍐欏叆妗佹灦淇℃伅锛歕n璐т綅鐘舵�佹洿鏂帮細{true}\nW_RequestUnload锛歿false}", "PCS");
-                        #endregion
-
-                        PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
-                        MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
-                        if (Station.quantity > 0 && (PalletSignal != 1 || MaterialSignal != 1))
-                        {
-                            Station.location_state = LocationStateEnum.Abnormal.ToString();
-                            Station.remark = "杞﹁疆鏁伴噺澶т簬0锛屽厜鐢垫娴嬫棤鎵樼洏鎴栨棤杞﹁疆";
-                            stationinfoRepository.Update(Station, true);
-                            client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
-                            WriteDBLog.Error(number + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
-                        }
-                        else if (Station.quantity < 1 && MaterialSignal == 1)
-                        {
-                            Station.location_state = LocationStateEnum.Abnormal.ToString();
-                            Station.remark = "杞﹁疆鏁伴噺灏忎簬0锛屽厜鐢垫娴嬫湁杞﹁疆";
-                            stationinfoRepository.Update(Station, true);
-                            client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
-                            WriteDBLog.Error(number + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
-                        }
-                    }
-                    #endregion
-
-                    #region 鐢宠涓婃枡
-                    //var SNS = Station.bindSN.Split(",");
-                    if (Gantry_client.ReadByOrder<bool>("W_RequestUnload", number)) return;
-
-                    Station = stationinfoRepository.Find(x => x.stationCode == Station.stationCode).FirstOrDefault();
-                    if (Station.quantity < 1) return;
-                    List<string> list = new List<string>();
-                    SNS = Station.bindSN.Split(",");
-                    foreach (var SN in SNS)
-                    {
-                        if (!string.IsNullOrEmpty(SN))
-                            list.Add(SN);
-                    }
-                    //缂撳瓨鏋朵笂杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�
-                    if (list.Count != Station.quantity)
-                    {
-                        Station.location_state = LocationStateEnum.Abnormal.ToString();
-                        Station.remark = "杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�";
-                        stationinfoRepository.Update(Station, true);
-                        Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
-                        #region 鏃ュ織璁板綍
-                        WriteDBLog.Error("涓婃枡鍖�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�", "PCS");
-                        #endregion
-                        return;
-                    }
-                    //var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == Station.stationCode).ToList();
-                    PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
-                    MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
-
-                    var AreaNr = Gantry_client.ReadByOrder<Int16>("W_AreaNr", number);//璇诲彇璐т綅鍙蜂俊鎭�
-                    if (PalletSignal == 1 && MaterialSignal == 1)
-                    {
-                        if (AreaNr == 0)
+                        if (PalletSignal == 1 && MaterialSignal == 1)
                         {
                             Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)Convert.ToInt16(QueryMateriel(Station.stationType) == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId), number);//杞﹁疆绫诲瀷
                             var area = Convert.ToInt16(Station.stationCode.Substring(Station.stationCode.Length - 1, 1));
@@ -169,43 +186,360 @@
                             Gantry_client.WriteByOrder("W_RequestUnload", true, number);
                             #region 鏃ュ織璁板綍
                             WriteDBLog.Success("涓婃枡鍖虹敵璇�", $"璇诲彇鎵樼洏鍏夌數淇″彿锛歿PalletSignal}\n璇诲彇绗竴涓溅杞厜鐢典俊鍙凤細{MaterialSignal}\n\n" +
-                                $"鍐欏叆妗佹灦淇℃伅锛歕n鍖哄煙璐т綅鍙凤細{area}\n鎵樼洏涓婄殑绗嚑涓溅杞細{SNS.Length}\n鎵樼洏绫诲瀷锛歿1}\n杞﹁疆绫诲瀷锛歿(QueryMateriel(Station.stationType).TypeId == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId)}" +
+                                $"鍐欏叆妗佹灦淇℃伅锛歕n鍖哄煙璐т綅鍙凤細{area}\n鎵樼洏涓婄殑绗嚑涓溅杞細{SNS.Length}\n鎵樼洏绫诲瀷锛歿1}\n杞﹁疆绫诲瀷锛歿(QueryMateriel(Station.stationType) == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId)}" +
                                 $"\n杞﹁疆SN鍙凤細{SNS[SNS.Length - 1]}\nW_RequestUnload锛歵rue", "PCS");
                             #endregion
                         }
-                    }
-                    else
-                    {
-                        Gantry_client.WriteByOrder("W_RequestUnload", false, number);
-                    }
-                    #endregion
-
-                    #region 鏇存柊涓�涓娴嬩笂鏂欎换鍔�
-                    Idt_agvtaskRepository agvtaskService = new dt_agvtaskRepository(Context);
-                    if (!agvtaskService.Find(x => x.agv_toaddress == Station.stationCode).Any())
-                    {
-                        var task = agvtaskService.Find(x => x.agv_taskstate == "Queue" && (x.agv_tasktype == "TaskType_OutsourceOutbound" || x.agv_tasktype == "TaskType_Outbound") && x.agv_toaddress == "").OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
-                        if (task != null)
+                        else
                         {
-                            task.agv_taskstate = "Create";
-                            task.agv_toaddress = Station.stationCode;
-                            agvtaskService.Update(task, true);
-                            WriteDBLog.Success("鏇存柊涓�涓娴嬩笂鏂欎换鍔�", $"浠诲姟缂栧彿锛歿task.agv_tasknum}", "PCS");
+                            Gantry_client.WriteByOrder("W_RequestUnload", false, number);
                         }
-                    }
-                    #endregion
 
+                        #region 鏇存柊涓�涓娴嬩笂鏂欎换鍔�
+                        Idt_agvtaskRepository agvtaskService = new dt_agvtaskRepository(Context);
+                        if (!agvtaskService.Find(x => x.agv_toaddress == Station.stationCode).Any())
+                        {
+                            var task = agvtaskService.Find(x => x.agv_taskstate == "Queue" && (x.agv_tasktype == "TaskType_OutsourceOutbound" || x.agv_tasktype == "TaskType_Outbound") && x.agv_toaddress == "").OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
+                            if (task != null)
+                            {
+                                task.agv_taskstate = "Create";
+                                task.agv_toaddress = Station.stationCode;
+                                agvtaskService.Update(task, true);
+                                WriteDBLog.Success("鏇存柊涓�涓娴嬩笂鏂欎换鍔�", $"浠诲姟缂栧彿锛歿task.agv_tasknum}", "PCS");
+                            }
+                        }
+                        #endregion
+                    }
                 }
-                else
-                    Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
+
+                #endregion
+
+
+                #region MyRegion
+
+                /////鏌ユ壘涓婃枡鍖虹殑璐т綅
+                //var Stations = stationinfoRepository.Find(x => x.area == area_code(number)).OrderBy(x => x.lastUpdateTime);//鏍规嵁鏃堕棿鍏堝悗鎺掑簭
+                //                                                                                                           //闇�娴嬭瘯涓�涓�
+                //var Station = Stations?.Where(x => x.enable && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderBy(x => x.quantity).FirstOrDefault();
+
+                //if (Station != null)
+                //{
+                //    var SNS = Station.bindSN.Split(",");
+                //    List<string> list = new List<string>();
+                //    foreach (var SN in SNS)
+                //    {
+                //        if (!string.IsNullOrEmpty(SN))
+                //            list.Add(SN);
+                //    }
+                //    //缂撳瓨鏋朵笂杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�
+                //    if (list.Count != Station.quantity)
+                //    {
+                //        Station.location_state = LocationStateEnum.Abnormal.ToString();
+                //        Station.remark = "杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�";
+                //        stationinfoRepository.Update(Station, true);
+                //        Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
+                //        #region 鏃ュ織璁板綍
+                //        WriteDBLog.Error("涓婃枡鍖�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�", "PCS");
+                //        #endregion
+                //        return;
+                //    }
+                //    var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == Station.stationCode).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鏃�
+
+                //    var AreaNr = Gantry_client.ReadByOrder<Int16>("W_AreaNr", number);//璇诲彇璐т綅鍙蜂俊鎭�
+                //    if (PalletSignal == 1 && MaterialSignal == 1)
+                //    {
+                //        if (AreaNr == 0)
+                //        {
+                //            Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)Convert.ToInt16(QueryMateriel(Station.stationType) == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId), number);//杞﹁疆绫诲瀷
+                //            var area = Convert.ToInt16(Station.stationCode.Substring(Station.stationCode.Length - 1, 1));
+                //            Gantry_client.WriteByOrder("W_AreaNr", (Int16)area, number);//鍖哄煙璐т綅鍙�
+                //            Gantry_client.WriteByOrder("W_IndexNr", (Int16)SNS.Length, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
+                //            Gantry_client.WriteByOrder("W_Storage_Type", (Int16)1, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
+                //            Gantry_client.WriteByOrder("W_Wheel_id", SNS[SNS.Length - 1], number);//杞﹁疆SN鍙�
+                //            Gantry_client.WriteByOrder("W_RequestUnload", true, number);
+                //            #region 鏃ュ織璁板綍
+                //            WriteDBLog.Success("涓婃枡鍖虹敵璇�", $"璇诲彇鎵樼洏鍏夌數淇″彿锛歿PalletSignal}\n璇诲彇绗竴涓溅杞厜鐢典俊鍙凤細{MaterialSignal}\n\n" +
+                //                $"鍐欏叆妗佹灦淇℃伅锛歕n鍖哄煙璐т綅鍙凤細{area}\n鎵樼洏涓婄殑绗嚑涓溅杞細{SNS.Length}\n鎵樼洏绫诲瀷锛歿1}\n杞﹁疆绫诲瀷锛歿(QueryMateriel(Station.stationType).TypeId == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId)}" +
+                //                $"\n杞﹁疆SN鍙凤細{SNS[SNS.Length - 1]}\nW_RequestUnload锛歵rue", "PCS");
+                //            #endregion
+                //        }
+                //    }
+                //    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)//淇℃伅鏈夎锛岃褰曟棩蹇�
+                //        {
+                //            Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
+                //            Station.location_state = LocationStateEnum.Abnormal.ToString();
+                //            Station.remark = $"鏈煡璇㈠埌SN鍙凤細{SNS[SNS.Length - 1]}鐨勮鍗�";
+                //            stationinfoRepository.Update(Station, true);
+                //            WriteDBLog.Error("涓婃枡鍖轰俊鎭煡璇�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}鏈煡璇㈠埌SN鍙凤細{SNS[SNS.Length - 1]}鐨勮鍗�", "PCS");
+                //            return;
+                //        }
+                //    }
+                //    var finished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Unlod_finished").First(), Gantry_client);//澶瑰彇瀹屾垚
+                //    var updatefinished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "W_Storage_update").First(), Gantry_client);//璐т綅鐘舵�佹洿鏂�
+                //    if (!finished && updatefinished)
+                //        Gantry_client.WriteByOrder("W_Storage_update", false, number);//璐т綅鐘舵�佹洿鏂�
+                //    if (finished && !updatefinished)
+                //    {
+                //        Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
+                //        Updatemes(SNS[SNS.Length - 1]);
+                //        Station.quantity = Station.quantity - 1;
+                //        Station.bindSN = OperStr(SNS);
+                //        if (Station.quantity <= 0)
+                //        {
+                //            Station.stationType = string.Empty;
+                //            Station.Number = string.Empty;
+                //            Station.heatNumber = string.Empty;
+                //            Station.tray_status = "EmptyTray";
+                //        }
+                //        var count = stationinfoRepository.Update(Station, true);
+                //        if (count < 1)
+                //        {
+                //            WriteDBLog.Error("鍙栨枡瀹屾垚", $"涓婃枡浣嶄俊鎭洿鏂板け璐ワ紒涓婃枡浣嶇紪鍙凤細{Station.stationCode}", "PCS");
+                //            return;
+                //        }
+
+                //        #region 娓呯┖淇℃伅
+                //        Gantry_client.WriteByOrder("W_AreaNr", (Int16)0, number);//鍖哄煙璐т綅鍙�
+                //        Gantry_client.WriteByOrder("W_IndexNr", (Int16)0, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
+                //        Gantry_client.WriteByOrder("W_Storage_Type", (Int16)0, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
+                //        Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)0, number);//杞﹁疆绫诲瀷
+                //        #endregion
+
+                //        Gantry_client.WriteByOrder("W_Storage_update", true, number);//璐т綅鐘舵�佹洿鏂�
+                //        #region 鏃ュ織璁板綍
+                //        WriteDBLog.Success("鍙栨枡瀹屾垚", $"鍐欏叆妗佹灦淇℃伅锛歕n璐т綅鐘舵�佹洿鏂帮細{true}\nW_RequestUnload锛歿false}", "PCS");
+                //        #endregion
+
+                //        #region 鎶ヨ
+                //        PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
+                //        MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
+                //        if (Station.quantity > 0 && (PalletSignal != 1 || MaterialSignal != 1))
+                //        {
+                //            Station.location_state = LocationStateEnum.Abnormal.ToString();
+                //            Station.remark = "杞﹁疆鏁伴噺澶т簬0锛屽厜鐢垫娴嬫棤鎵樼洏鎴栨棤杞﹁疆";
+                //            stationinfoRepository.Update(Station, true);
+                //            client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
+                //            WriteDBLog.Error(number + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
+                //        }
+                //        else if (Station.quantity < 1 && MaterialSignal == 1)
+                //        {
+                //            Station.location_state = LocationStateEnum.Abnormal.ToString();
+                //            Station.remark = "杞﹁疆鏁伴噺灏忎簬0锛屽厜鐢垫娴嬫湁杞﹁疆";
+                //            stationinfoRepository.Update(Station, true);
+                //            client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
+                //            WriteDBLog.Error(number + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
+                //        }
+                //        #endregion
+
+
+                //    }
+                //}
+                //else
+                //    Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆 
+                #endregion
             }
             catch (Exception ex)
             {
-                WriteDBLog.Error("涓婃枡鍖�", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
+                //WriteDBLog.Error("涓婃枡鍖�", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
+                WriteLog.Write_Log("鎶ラ敊鏃ュ織", number, "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}");
+            }
+        }
+        /// <summary>
+        /// 鑷姩鍙栫┖鎵�
+        /// </summary>
+        /// <param name="client"></param>
+        public void AutoEmptyTray(PLCClient client)
+        {
+            try
+            {
+                VOLContext Context = new VOLContext();
+                Idt_plcinfoheadRepository repository = new dt_plcinfoheadRepository(Context);
+                Idt_plcinfodetailRepository plcRepository = new dt_plcinfodetailRepository(Context);
+                Idt_agvtaskRepository agvtaskService = new dt_agvtaskRepository(Context);
+                Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
+                var plc = repository.FindFirst(x => x.plcinfo_name == client.PLCName);
+                List<string> stationCodes = new List<string>() { "S01001001", "S01001002", "W01001001", "W01001002", "W01001003" };
+                string remark = "";
+                foreach (var stationCode in stationCodes)
+                {
+                    try
+                    {
+                        remark = "鏌ヨ绔欏彴";
+                        var station = stationinfoRepository.Find(x => x.stationCode == stationCode && x.enable).FirstOrDefault();
+                        if (station == null) continue;
+                        remark = "鏌ヨ璧风偣鏄惁瀛樺湪浠诲姟";
+                        if (stationCode.Contains("W") && agvtaskService.Find(x => x.agv_fromaddress == stationCode || x.agv_toaddress == stationCode).Any()) continue;
+                        else
+                        {
+                            if (agvtaskService.Find(x => x.agv_fromaddress == stationCode).Any()) continue;
+                        }
+                        remark = "璇诲彇鍏夌數淇″彿";
+                        var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == stationCode).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 == 2 && (station.stationCode.Contains("S0100100") ? station.tray_status == "EmptyTray" : true))
+                        {
+                            var area = station.tray_type == "SmallTray" ? "11" : "10";
+                            remark = "鏌ヨ鏄惁瀛樺湪琛ョ┖鎵橀槦鍒椾换鍔�";
+                            var task = agvtaskService.Find(x => (x.agv_toaddress.Contains("W") || x.agv_toaddress.Contains("X")) && x.agv_taskstate == "Queue" && x.agv_tasktype == "TaskType_EmptyPallet" && x.agv_Traytype == station.tray_type).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
+                            if (task != null)
+                            {
+                                task.agv_fromaddress = station.stationCode;
+                                task.StarQuantity = 0;
+                                task.agv_taskstate = "Create";
+                                if (station.stationCode.Contains("S0100100"))
+                                    task.agv_grade = 3;
+                                agvtaskService.Update(task, true);
+                                station.location_state = LocationStateEnum.Busy.ToString();
+                                stationinfoRepository.Update(station, true);
+                                WriteDBLog.Success("鏇存柊绌烘墭闃熷垪浠诲姟", $"浠诲姟缂栧彿锛歿task.agv_tasknum}锛屾墭鐩樹俊鍙�:{PalletSignal},璐х墿淇″彿:{MaterialSignal}", "PCS");
+                                continue;
+                            }
+                            remark = "鏌ヨ绌烘墭鍙犵洏浣�";
+                            #region 绌烘墭鍙犵洏
+                            var EmptyStations = stationinfoRepository.Find(x => x.stationCode.Contains("DD") && x.quantity < 5 && x.enable).ToList();
+                            var EmptyStation = EmptyStations.Where(x => x.tray_type == station.tray_type && x.location_state == LocationStateEnum.Stroge.ToString()).FirstOrDefault();
+                            if (EmptyStation == null)
+                                EmptyStation = EmptyStations.Where(x => x.location_state == LocationStateEnum.Empty.ToString() && x.quantity == 0).FirstOrDefault();
+                            #endregion
+                            remark = "鏌ユ壘搴撳唴绌烘墭浣�";
+                            if (EmptyStation == null)//鏌ユ壘搴撳唴绌烘墭鐩�
+                                EmptyStation = GetStation.EmptyPalletStation(area);
+
+
+                            if (EmptyStation != null)
+                            {
+                                #region 鍚屼竴涓┖鎵樹綅鍙兘鍚屾椂鐢熸垚涓�涓┖鎵樹换鍔�
+                                remark = "鏌ヨ绌烘墭浣嶆槸鍚﹀瓨鍦ㄤ换鍔�";
+                                if (agvtaskService.Find(x => x.agv_fromaddress == EmptyStation.stationCode || x.agv_toaddress == EmptyStation.stationCode).Any())
+                                    return;
+                                #endregion
+                                dt_agvtask agvtask = new dt_agvtask()
+                                {
+                                    agv_fromaddress = station.stationCode,
+                                    agv_id = Guid.NewGuid(),
+                                    agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
+                                    agv_grade = station.stationCode.Contains("S0100100") ? 3 : 1,
+                                    agv_createtime = DateTime.Now,
+                                    agv_taskstate = "Create",
+                                    //agv_materielid = station.stationType,
+                                    agv_qty = 1,
+                                    StarQuantity = 0,
+                                    EndQuantity = EmptyStation.quantity,
+                                    agv_tasktype = "TaskType_EmptyPallet",
+                                    agv_toaddress = EmptyStation.stationCode,
+                                    agv_userid = "绯荤粺",
+                                    agv_TrayStatus = "EmptyTray",//station.tray_status,
+                                    agv_Traytype = station.tray_type,
+                                };
+                                agvtaskService.Add(agvtask, true);
+                                station.location_state = LocationStateEnum.Busy.ToString();
+                                stationinfoRepository.Update(station, true);
+                                EmptyStation.location_state = LocationStateEnum.Busy.ToString();
+                                stationinfoRepository.Update(EmptyStation, true);
+                                WriteDBLog.Success("鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", $"浠诲姟缂栧彿锛歿agvtask.agv_tasknum}锛屾墭鐩樹俊鍙�:{PalletSignal},璐х墿淇″彿:{MaterialSignal}", "PCS");
+                            }
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        //WriteDBLog.Error("鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", $"{stationCode}锛歿remark}閿欒淇℃伅锛歿ex.Message}", "PCS");
+                        WriteLog.Write_Log("鎶ラ敊鏃ュ織", "鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", "閿欒淇℃伅锛�", $"{stationCode}锛歿remark}閿欒淇℃伅锛歿ex.Message}");
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                //WriteDBLog.Error("鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
+                WriteLog.Write_Log("鎶ラ敊鏃ュ織", "鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}");
             }
         }
 
-        private string OperStr(string[] strArrty)
+        /// <summary>
+        /// 妫�娴嬪厜鐢电姸鎬佷笌绯荤粺璐т綅鐘舵�佹槸鍚︿竴鑷�
+        /// </summary>
+        /// <param name="client"></param>
+        public void StationState(PLCClient client)
+        {
+
+            List<string> names = new List<string>() { "1鍗曞厓涓嬫枡鍖�", "2鍗曞厓涓嬫枡鍖�", "3鍗曞厓涓嬫枡鍖�" };/*, "涓婃枡鍖�"*/
+            foreach (var name in names)
+            {
+                VOLContext Context = new VOLContext();
+                Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
+                var Stations = stationinfoRepository.Find(x => x.area == area_code(name) && x.enable && !x.location_state.Contains("Busy") && x.location_state != LocationStateEnum.Abnormal.ToString());
+                foreach (var Station in Stations)
+                {
+                    try
+                    {
+                        var PalletSignal = client.ReadByOrder<Int16>("R_PalletSignal", Station.stationCode);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
+                        var MaterialSignal = client.ReadByOrder<Int16>("R_MaterialSignal", Station.stationCode);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
+                        if (Station.quantity > 0 && (PalletSignal != 1 || MaterialSignal != 1))//绯荤粺璐т綅鏈夎溅杞紝鍏夌數妫�娴嬫棤杞﹁疆
+                        {
+                            Station.location_state = LocationStateEnum.Abnormal.ToString();
+                            Station.remark = $"杞﹁疆鏁伴噺澶т簬0锛屾墭鐩樺厜鐢典俊鍙蜂负锛歿PalletSignal}锛岃揣鐗╁厜鐢典俊鍙蜂负锛歿MaterialSignal}";
+                            stationinfoRepository.Update(Station, true);
+                            client.WriteByOrder("W_AlarmSignal", (Int16)2, name);//鎶ヨ
+                            WriteDBLog.Error(name + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
+                            continue;
+                        }
+                        if (Station.location_state == LocationStateEnum.Stroge.ToString() && PalletSignal != 1)
+                        {
+                            Station.location_state = LocationStateEnum.Abnormal.ToString();
+                            Station.remark = $"璐т綅鐘舵�佷负鏈夎揣锛屾墭鐩樺厜鐢典俊鍙蜂负锛歿PalletSignal}锛岃揣鐗╁厜鐢典俊鍙蜂负锛歿MaterialSignal}";
+                            stationinfoRepository.Update(Station, true);
+                            client.WriteByOrder("W_AlarmSignal", (Int16)2, name);//鎶ヨ
+                            WriteDBLog.Error(name + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
+                            continue;
+                        }
+                        if (Station.location_state == LocationStateEnum.Empty.ToString() && (PalletSignal == 1 || MaterialSignal == 1))//绯荤粺璐т綅涓虹┖锛屽厜鐢垫娴嬫湁鏂�
+                        {
+                            Station.location_state = LocationStateEnum.Abnormal.ToString();
+                            Station.remark = $"璐т綅鐘舵�佷负绌鸿揣浣嶏紝鎵樼洏鍏夌數淇″彿涓猴細{PalletSignal}锛岃揣鐗╁厜鐢典俊鍙蜂负锛歿MaterialSignal}";
+                            stationinfoRepository.Update(Station, true);
+                            client.WriteByOrder("W_AlarmSignal", (Int16)2, name);//鎶ヨ
+                            WriteDBLog.Error(name + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
+                            continue;
+                        }
+                        //if (Station.quantity < 1 && MaterialSignal == 1)//绯荤粺璐т綅鏃犺溅杞紝鍏夌數妫�娴嬫湁杞﹁疆
+                        //{
+                        //    Station.location_state = LocationStateEnum.Abnormal.ToString();
+                        //    Station.remark = "璐т綅鏃犺溅杞紝鍏夌數妫�娴嬫湁杞﹁疆";
+                        //    stationinfoRepository.Update(Station, true);
+                        //    client.WriteByOrder("W_AlarmSignal", (Int16)2, name);//鎶ヨ
+                        //    continue;
+                        //}
+                    }
+                    catch (Exception ex)
+                    {
+                        WriteLog.Write_Log("鎶ラ敊鏃ュ織", name + "妫�娴嬪厜鐢垫姤閿�", "閿欒淇℃伅锛�", $"{Station.stationCode}锛氶敊璇俊鎭細{ex.Message}");
+                    }
+                }
+            }
+        }
+        public static string area_code(string area_name)
+        {
+            VOLContext Context = new VOLContext();
+            Idt_areainfoRepository areainfoRepository = new dt_areainfoRepository(Context);
+            var areainfo = areainfoRepository.Find(x => x.area_name == area_name).FirstOrDefault();
+            return areainfo.area_code.ToString();
+        }
+
+        public string OperStr(string[] strArrty)
         {
             string[] newstr = strArrty.RemoveLast(1);
             string Newsn = string.Join(",", newstr);
@@ -226,15 +560,13 @@
             var materielinfo1 = detectionlineRepository.Find(x => x.Description == type).OrderBy(x => x.TypeId).FirstOrDefault();
             return materielinfo1;
         }
-
-        public static string area_code(string area_name)
+        public static string QueryMateriel(int typeId)
         {
             VOLContext Context = new VOLContext();
-            Idt_areainfoRepository areainfoRepository = new dt_areainfoRepository(Context);
-            var areainfo = areainfoRepository.Find(x => x.area_name == area_name).FirstOrDefault();
-            return areainfo.area_code.ToString();
+            Idt_geometry_dataRepository dataRepository = new dt_geometry_dataRepository(Context);
+            var materielinfo = dataRepository.FindFirst(x => x.TypeId == typeId);
+            return materielinfo.Description;
         }
-
         /// <summary>
         /// 鏇存敼宸ュ崟鐘舵��
         /// </summary>
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 a01ca75..084430e 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"
@@ -54,580 +54,10 @@
                 return;
             }
             client.WriteByOrder("W_Palpitate", client.ReadByOrder<bool>("R_Palpitate", "蹇冭烦"));
-            Loadinglevel(client);
-            AutoEmptyTray(client);
-            StationState(client);
-        }
-        /// <summary>
-        /// 涓婃枡鍖�
-        /// </summary>
-        /// <param name="client"></param>
-        private void Loadinglevel(PLCClient client, string number = "涓婃枡鍖�")
-        {
-            try
-            {
-                VOLContext Context = new VOLContext();
-                Idt_plcinfoheadRepository repository = new dt_plcinfoheadRepository(Context);
-                Idt_plcinfodetailRepository plcRepository = new dt_plcinfodetailRepository(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 == null) throw new Exception("妗佹灦璋冨害鏈嶅姟鏈紑鍚紒");
-                if (!Gantry_client.IsConnected) throw new Exception("涓庢鏋惰繛鎺ヨ秴鏃讹紒");
-                var Gantryplc = repository.FindFirst(x => x.plcinfo_name == Gantry_client.PLCName);
-
-
-                #region 涓婃枡瀹屾垚
-
-                var AreaNr = Gantry_client.ReadByOrder<Int16>("W_AreaNr", number);//璇诲彇璐т綅鍙蜂俊鎭�
-                if (AreaNr != 0)
-                {
-                    var station = stationinfoRepository.Find(x => x.area == area_code(number) && x.stationCode.Substring(x.stationCode.Length - 1, 1) == AreaNr.ToString()).FirstOrDefault();
-                    if (station != null)
-                    {
-                        var bindSNS = station.bindSN.Split(",");
-                        var Gantrydetails = plcRepository.Find(x => x.plcdetail_iotype == Gantryplc.plcinfo_iotyep && x.plcdetail_number == number).ToList();
-
-                        #region 淇℃伅鏌ヨ纭
-                        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)//淇℃伅鏈夎锛岃褰曟棩蹇�
-                            {
-                                Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
-                                station.location_state = LocationStateEnum.Abnormal.ToString();
-                                station.remark = $"鏈煡璇㈠埌SN鍙凤細{bindSNS[bindSNS.Length - 1]}鐨勮鍗�";
-                                stationinfoRepository.Update(station, true);
-                                WriteDBLog.Error("涓婃枡鍖轰俊鎭煡璇�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{station.stationCode}鏈煡璇㈠埌SN鍙凤細{bindSNS[bindSNS.Length - 1]}鐨勮鍗�", "PCS");
-                                return;
-                            }
-                        }
-                        #endregion
-
-                        #region 璐т綅鐘舵�佹洿鏂板浣�
-                        var finished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Unlod_finished").First(), Gantry_client);//澶瑰彇瀹屾垚
-                        var updatefinished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "W_Storage_update").First(), Gantry_client);//璐т綅鐘舵�佹洿鏂�
-                        if (!finished && updatefinished)
-                        {
-                            Gantry_client.WriteByOrder("W_Storage_update", false, number);//璐т綅鐘舵�佹洿鏂�
-                            WriteLog.Write_Log(number + "涓婃枡瀹屾垚", number + "璐т綅鐘舵�佹洿鏂颁俊鍙峰浣�", "鎴愬姛锛�",
-                                        $"璇诲彇妗佹灦淇℃伅锛歕n涓婃枡瀹屾垚淇″彿锛歿finished}\n\n鍐欏叆妗佹灦淇℃伅锛歕n璐т綅鐘舵�佹洿鏂颁俊鍙凤細{false}");
-                        }
-                        #endregion
-
-                        if (finished && !updatefinished)
-                        {
-
-                            #region 鍒ゆ柇鍖哄煙鍙锋槸鍚︿竴鑷�
-                            var area = Gantry_client.ReadByOrder<Int16>("place_prog", number);//鏀炬枡瀹屾垚鐨勫尯鍩熷彿
-
-                            WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇鍖哄煙鍙锋槸鍚︿竴鑷�", $"PCS鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦鍖哄煙鍙凤細{area}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒");
-                            //if (AreaNr != area)
-                            //{
-                            //    client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
-                            //    //WriteDBLog.Error(name + "鎶ヨ", $"PCS鍖哄煙鍙凤細{AreaNr}锛涙鏋跺尯鍩熷彿锛歿area}閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒", "PCS");
-                            //    WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇鍖哄煙鍙锋槸鍚︿竴鑷�", $"PCS鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦鍖哄煙鍙凤細{area}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒");
-                            //    return;
-                            //}
-                            #endregion
-
-                            #region 鍒ゆ柇杞﹁疆鏁伴噺鏄惁涓�鑷�
-                            var quantity = Gantry_client.ReadByOrder<Int16>("pos_prog", number);//妗佹灦璁板綍鐨勮溅杞暟閲�
-
-                            WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇杞﹁疆鏁伴噺鏄惁涓�鑷�", $"鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦杞﹁疆鏁帮細{quantity}\nPCS杞﹁疆鏁帮細{station.quantity}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒");
-                            //if (quantity != station.quantity)
-                            //{
-                            //    client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
-                            //    WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇杞﹁疆鏁伴噺鏄惁涓�鑷�", $"鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦杞﹁疆鏁帮細{quantity}\nPCS杞﹁疆鏁帮細{station.quantity}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒");
-                            //    return;
-                            //}
-                            #endregion
-
-                            Updatemes(bindSNS[bindSNS.Length - 1]);
-                            station.quantity = station.quantity - 1;
-                            station.bindSN = OperStr(bindSNS);
-                            if (station.quantity <= 0)
-                            {
-                                station.stationType = string.Empty;
-                                station.Number = string.Empty;
-                                station.heatNumber = string.Empty;
-                                station.tray_status = "EmptyTray";
-                            }
-                            var count = stationinfoRepository.Update(station, true);
-                            if (count < 1)
-                            {
-                                WriteDBLog.Error("鍙栨枡瀹屾垚", $"涓婃枡浣嶄俊鎭洿鏂板け璐ワ紒涓婃枡浣嶇紪鍙凤細{station.stationCode}", "PCS");
-                                return;
-                            }
-
-                            Gantry_client.WriteByOrder("W_Storage_update", true, number);//璐т綅鐘舵�佹洿鏂�
-                            Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
-
-                            #region 娓呯┖淇℃伅
-                            Gantry_client.WriteByOrder("W_AreaNr", (Int16)0, number);//鍖哄煙璐т綅鍙�
-                            Gantry_client.WriteByOrder("W_IndexNr", (Int16)0, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
-                            Gantry_client.WriteByOrder("W_Storage_Type", (Int16)0, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
-                            Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)0, number);//杞﹁疆绫诲瀷
-                            #endregion
-
-                            #region 鏃ュ織璁板綍
-                            WriteDBLog.Success("鍙栨枡瀹屾垚", $"鍐欏叆妗佹灦淇℃伅锛歕n璐т綅鐘舵�佹洿鏂帮細{true}\nW_RequestUnload锛歿false}", "PCS");
-                            #endregion
-                        }
-                    }
-                }
-
-                #endregion
-
-                #region 鐢宠涓婃枡
-
-                if (!Gantry_client.ReadByOrder<bool>("W_RequestUnload", number))
-                {
-                    var Station = stationinfoRepository.Find(x => x.area == area_code(number) && x.enable && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderBy(x => x.lastUpdateTime).FirstOrDefault();
-                    if (Station != null)
-                    {
-                        var SNS = Station.bindSN.Split(",");
-                        List<string> list = new List<string>();
-                        foreach (var SN in SNS)
-                        {
-                            if (!string.IsNullOrEmpty(SN))
-                                list.Add(SN);
-                        }
-                        //缂撳瓨鏋朵笂杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�
-                        if (list.Count != Station.quantity)
-                        {
-                            Station.location_state = LocationStateEnum.Abnormal.ToString();
-                            Station.remark = "杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�";
-                            stationinfoRepository.Update(Station, true);
-                            Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
-                            #region 鏃ュ織璁板綍
-                            WriteDBLog.Error("涓婃枡鍖�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�", "PCS");
-                            #endregion
-                            return;
-                        }
-
-                        var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == Station.stationCode).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_Wheel_Type", (Int16)Convert.ToInt16(QueryMateriel(Station.stationType) == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId), number);//杞﹁疆绫诲瀷
-                            var area = Convert.ToInt16(Station.stationCode.Substring(Station.stationCode.Length - 1, 1));
-                            Gantry_client.WriteByOrder("W_AreaNr", (Int16)area, number);//鍖哄煙璐т綅鍙�
-                            Gantry_client.WriteByOrder("W_IndexNr", (Int16)SNS.Length, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
-                            Gantry_client.WriteByOrder("W_Storage_Type", (Int16)1, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
-                            Gantry_client.WriteByOrder("W_Wheel_id", SNS[SNS.Length - 1], number);//杞﹁疆SN鍙�
-                            Gantry_client.WriteByOrder("W_RequestUnload", true, number);
-                            #region 鏃ュ織璁板綍
-                            WriteDBLog.Success("涓婃枡鍖虹敵璇�", $"璇诲彇鎵樼洏鍏夌數淇″彿锛歿PalletSignal}\n璇诲彇绗竴涓溅杞厜鐢典俊鍙凤細{MaterialSignal}\n\n" +
-                                $"鍐欏叆妗佹灦淇℃伅锛歕n鍖哄煙璐т綅鍙凤細{area}\n鎵樼洏涓婄殑绗嚑涓溅杞細{SNS.Length}\n鎵樼洏绫诲瀷锛歿1}\n杞﹁疆绫诲瀷锛歿(QueryMateriel(Station.stationType) == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId)}" +
-                                $"\n杞﹁疆SN鍙凤細{SNS[SNS.Length - 1]}\nW_RequestUnload锛歵rue", "PCS");
-                            #endregion
-                        }
-                        else
-                        {
-                            Gantry_client.WriteByOrder("W_RequestUnload", false, number);
-                        }
-
-                        #region 鏇存柊涓�涓娴嬩笂鏂欎换鍔�
-                        Idt_agvtaskRepository agvtaskService = new dt_agvtaskRepository(Context);
-                        if (!agvtaskService.Find(x => x.agv_toaddress == Station.stationCode).Any())
-                        {
-                            var task = agvtaskService.Find(x => x.agv_taskstate == "Queue" && (x.agv_tasktype == "TaskType_OutsourceOutbound" || x.agv_tasktype == "TaskType_Outbound") && x.agv_toaddress == "").OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
-                            if (task != null)
-                            {
-                                task.agv_taskstate = "Create";
-                                task.agv_toaddress = Station.stationCode;
-                                agvtaskService.Update(task, true);
-                                WriteDBLog.Success("鏇存柊涓�涓娴嬩笂鏂欎换鍔�", $"浠诲姟缂栧彿锛歿task.agv_tasknum}", "PCS");
-                            }
-                        }
-                        #endregion
-                    }
-                }
-
-                #endregion
-
-
-                #region MyRegion
-
-                /////鏌ユ壘涓婃枡鍖虹殑璐т綅
-                //var Stations = stationinfoRepository.Find(x => x.area == area_code(number)).OrderBy(x => x.lastUpdateTime);//鏍规嵁鏃堕棿鍏堝悗鎺掑簭
-                //                                                                                                           //闇�娴嬭瘯涓�涓�
-                //var Station = Stations?.Where(x => x.enable && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderBy(x => x.quantity).FirstOrDefault();
-
-                //if (Station != null)
-                //{
-                //    var SNS = Station.bindSN.Split(",");
-                //    List<string> list = new List<string>();
-                //    foreach (var SN in SNS)
-                //    {
-                //        if (!string.IsNullOrEmpty(SN))
-                //            list.Add(SN);
-                //    }
-                //    //缂撳瓨鏋朵笂杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�
-                //    if (list.Count != Station.quantity)
-                //    {
-                //        Station.location_state = LocationStateEnum.Abnormal.ToString();
-                //        Station.remark = "杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�";
-                //        stationinfoRepository.Update(Station, true);
-                //        Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
-                //        #region 鏃ュ織璁板綍
-                //        WriteDBLog.Error("涓婃枡鍖�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�", "PCS");
-                //        #endregion
-                //        return;
-                //    }
-                //    var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == Station.stationCode).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鏃�
-
-                //    var AreaNr = Gantry_client.ReadByOrder<Int16>("W_AreaNr", number);//璇诲彇璐т綅鍙蜂俊鎭�
-                //    if (PalletSignal == 1 && MaterialSignal == 1)
-                //    {
-                //        if (AreaNr == 0)
-                //        {
-                //            Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)Convert.ToInt16(QueryMateriel(Station.stationType) == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId), number);//杞﹁疆绫诲瀷
-                //            var area = Convert.ToInt16(Station.stationCode.Substring(Station.stationCode.Length - 1, 1));
-                //            Gantry_client.WriteByOrder("W_AreaNr", (Int16)area, number);//鍖哄煙璐т綅鍙�
-                //            Gantry_client.WriteByOrder("W_IndexNr", (Int16)SNS.Length, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
-                //            Gantry_client.WriteByOrder("W_Storage_Type", (Int16)1, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
-                //            Gantry_client.WriteByOrder("W_Wheel_id", SNS[SNS.Length - 1], number);//杞﹁疆SN鍙�
-                //            Gantry_client.WriteByOrder("W_RequestUnload", true, number);
-                //            #region 鏃ュ織璁板綍
-                //            WriteDBLog.Success("涓婃枡鍖虹敵璇�", $"璇诲彇鎵樼洏鍏夌數淇″彿锛歿PalletSignal}\n璇诲彇绗竴涓溅杞厜鐢典俊鍙凤細{MaterialSignal}\n\n" +
-                //                $"鍐欏叆妗佹灦淇℃伅锛歕n鍖哄煙璐т綅鍙凤細{area}\n鎵樼洏涓婄殑绗嚑涓溅杞細{SNS.Length}\n鎵樼洏绫诲瀷锛歿1}\n杞﹁疆绫诲瀷锛歿(QueryMateriel(Station.stationType).TypeId == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId)}" +
-                //                $"\n杞﹁疆SN鍙凤細{SNS[SNS.Length - 1]}\nW_RequestUnload锛歵rue", "PCS");
-                //            #endregion
-                //        }
-                //    }
-                //    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)//淇℃伅鏈夎锛岃褰曟棩蹇�
-                //        {
-                //            Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
-                //            Station.location_state = LocationStateEnum.Abnormal.ToString();
-                //            Station.remark = $"鏈煡璇㈠埌SN鍙凤細{SNS[SNS.Length - 1]}鐨勮鍗�";
-                //            stationinfoRepository.Update(Station, true);
-                //            WriteDBLog.Error("涓婃枡鍖轰俊鎭煡璇�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}鏈煡璇㈠埌SN鍙凤細{SNS[SNS.Length - 1]}鐨勮鍗�", "PCS");
-                //            return;
-                //        }
-                //    }
-                //    var finished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Unlod_finished").First(), Gantry_client);//澶瑰彇瀹屾垚
-                //    var updatefinished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "W_Storage_update").First(), Gantry_client);//璐т綅鐘舵�佹洿鏂�
-                //    if (!finished && updatefinished)
-                //        Gantry_client.WriteByOrder("W_Storage_update", false, number);//璐т綅鐘舵�佹洿鏂�
-                //    if (finished && !updatefinished)
-                //    {
-                //        Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
-                //        Updatemes(SNS[SNS.Length - 1]);
-                //        Station.quantity = Station.quantity - 1;
-                //        Station.bindSN = OperStr(SNS);
-                //        if (Station.quantity <= 0)
-                //        {
-                //            Station.stationType = string.Empty;
-                //            Station.Number = string.Empty;
-                //            Station.heatNumber = string.Empty;
-                //            Station.tray_status = "EmptyTray";
-                //        }
-                //        var count = stationinfoRepository.Update(Station, true);
-                //        if (count < 1)
-                //        {
-                //            WriteDBLog.Error("鍙栨枡瀹屾垚", $"涓婃枡浣嶄俊鎭洿鏂板け璐ワ紒涓婃枡浣嶇紪鍙凤細{Station.stationCode}", "PCS");
-                //            return;
-                //        }
-
-                //        #region 娓呯┖淇℃伅
-                //        Gantry_client.WriteByOrder("W_AreaNr", (Int16)0, number);//鍖哄煙璐т綅鍙�
-                //        Gantry_client.WriteByOrder("W_IndexNr", (Int16)0, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
-                //        Gantry_client.WriteByOrder("W_Storage_Type", (Int16)0, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
-                //        Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)0, number);//杞﹁疆绫诲瀷
-                //        #endregion
-
-                //        Gantry_client.WriteByOrder("W_Storage_update", true, number);//璐т綅鐘舵�佹洿鏂�
-                //        #region 鏃ュ織璁板綍
-                //        WriteDBLog.Success("鍙栨枡瀹屾垚", $"鍐欏叆妗佹灦淇℃伅锛歕n璐т綅鐘舵�佹洿鏂帮細{true}\nW_RequestUnload锛歿false}", "PCS");
-                //        #endregion
-
-                //        #region 鎶ヨ
-                //        PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
-                //        MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
-                //        if (Station.quantity > 0 && (PalletSignal != 1 || MaterialSignal != 1))
-                //        {
-                //            Station.location_state = LocationStateEnum.Abnormal.ToString();
-                //            Station.remark = "杞﹁疆鏁伴噺澶т簬0锛屽厜鐢垫娴嬫棤鎵樼洏鎴栨棤杞﹁疆";
-                //            stationinfoRepository.Update(Station, true);
-                //            client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
-                //            WriteDBLog.Error(number + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
-                //        }
-                //        else if (Station.quantity < 1 && MaterialSignal == 1)
-                //        {
-                //            Station.location_state = LocationStateEnum.Abnormal.ToString();
-                //            Station.remark = "杞﹁疆鏁伴噺灏忎簬0锛屽厜鐢垫娴嬫湁杞﹁疆";
-                //            stationinfoRepository.Update(Station, true);
-                //            client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
-                //            WriteDBLog.Error(number + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
-                //        }
-                //        #endregion
-
-
-                //    }
-                //}
-                //else
-                //    Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆 
-                #endregion
-            }
-            catch (Exception ex)
-            {
-                WriteDBLog.Error("涓婃枡鍖�", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
-            }
-        }
-        /// <summary>
-        /// 鑷姩鍙栫┖鎵�
-        /// </summary>
-        /// <param name="client"></param>
-        private void AutoEmptyTray(PLCClient client)
-        {
-            try
-            {
-                VOLContext Context = new VOLContext();
-                Idt_plcinfoheadRepository repository = new dt_plcinfoheadRepository(Context);
-                Idt_plcinfodetailRepository plcRepository = new dt_plcinfodetailRepository(Context);
-                Idt_agvtaskRepository agvtaskService = new dt_agvtaskRepository(Context);
-                Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
-                var plc = repository.FindFirst(x => x.plcinfo_name == client.PLCName);
-                List<string> stationCodes = new List<string>() { "S01001001", "S01001002", "W01001001", "W01001002", "W01001003" };
-                string remark = "";
-                foreach (var stationCode in stationCodes)
-                {
-                    try
-                    {
-                        remark = "鏌ヨ绔欏彴";
-                        var station = stationinfoRepository.Find(x => x.stationCode == stationCode && x.enable).FirstOrDefault();
-                        if (station == null) continue;
-                        remark = "鏌ヨ璧风偣鏄惁瀛樺湪浠诲姟";
-                        if (stationCode.Contains("W") && agvtaskService.Find(x => x.agv_fromaddress == stationCode || x.agv_toaddress == stationCode).Any()) continue;
-                        else
-                        {
-                            if (agvtaskService.Find(x => x.agv_fromaddress == stationCode).Any()) continue;
-                        }
-                        remark = "璇诲彇鍏夌數淇″彿";
-                        var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == stationCode).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 == 2 && (station.stationCode.Contains("S0100100") ? station.tray_status == "EmptyTray" : true))
-                        {
-                            var area = station.tray_type == "SmallTray" ? "11" : "10";
-                            remark = "鏌ヨ鏄惁瀛樺湪琛ョ┖鎵橀槦鍒椾换鍔�";
-                            var task = agvtaskService.Find(x => (x.agv_toaddress.Contains("W") || x.agv_toaddress.Contains("X")) && x.agv_taskstate == "Queue" && x.agv_tasktype == "TaskType_EmptyPallet" && x.agv_Traytype == station.tray_type).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
-                            if (task != null)
-                            {
-                                task.agv_fromaddress = station.stationCode;
-                                task.StarQuantity = 0;
-                                task.agv_taskstate = "Create";
-                                if (station.stationCode.Contains("S0100100"))
-                                    task.agv_grade = 3;
-                                agvtaskService.Update(task, true);
-                                station.location_state = LocationStateEnum.Busy.ToString();
-                                stationinfoRepository.Update(station, true);
-                                WriteDBLog.Success("鏇存柊绌烘墭闃熷垪浠诲姟", $"浠诲姟缂栧彿锛歿task.agv_tasknum}锛屾墭鐩樹俊鍙�:{PalletSignal},璐х墿淇″彿:{MaterialSignal}", "PCS");
-                                continue;
-                            }
-                            remark = "鏌ヨ绌烘墭鍙犵洏浣�";
-                            #region 绌烘墭鍙犵洏
-                            var EmptyStations = stationinfoRepository.Find(x => x.stationCode.Contains("DD") && x.quantity < 5 && x.enable).ToList();
-                            var EmptyStation = EmptyStations.Where(x => x.tray_type == station.tray_type && x.location_state == LocationStateEnum.Stroge.ToString()).FirstOrDefault();
-                            if (EmptyStation == null)
-                                EmptyStation = EmptyStations.Where(x => x.location_state == LocationStateEnum.Empty.ToString() && x.quantity == 0).FirstOrDefault();
-                            #endregion
-                            remark = "鏌ユ壘搴撳唴绌烘墭浣�";
-                            if (EmptyStation == null)//鏌ユ壘搴撳唴绌烘墭鐩�
-                                EmptyStation = GetStation.EmptyPalletStation(area);
-
-
-                            if (EmptyStation != null)
-                            {
-                                #region 鍚屼竴涓┖鎵樹綅鍙兘鍚屾椂鐢熸垚涓�涓┖鎵樹换鍔�
-                                remark = "鏌ヨ绌烘墭浣嶆槸鍚﹀瓨鍦ㄤ换鍔�";
-                                if (agvtaskService.Find(x => x.agv_fromaddress == EmptyStation.stationCode || x.agv_toaddress == EmptyStation.stationCode).Any())
-                                    return;
-                                #endregion
-                                dt_agvtask agvtask = new dt_agvtask()
-                                {
-                                    agv_fromaddress = station.stationCode,
-                                    agv_id = Guid.NewGuid(),
-                                    agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
-                                    agv_grade = station.stationCode.Contains("S0100100") ? 3 : 1,
-                                    agv_createtime = DateTime.Now,
-                                    agv_taskstate = "Create",
-                                    //agv_materielid = station.stationType,
-                                    agv_qty = 1,
-                                    StarQuantity = 0,
-                                    EndQuantity = EmptyStation.quantity,
-                                    agv_tasktype = "TaskType_EmptyPallet",
-                                    agv_toaddress = EmptyStation.stationCode,
-                                    agv_userid = "绯荤粺",
-                                    agv_TrayStatus = "EmptyTray",//station.tray_status,
-                                    agv_Traytype = station.tray_type,
-                                };
-                                agvtaskService.Add(agvtask, true);
-                                station.location_state = LocationStateEnum.Busy.ToString();
-                                stationinfoRepository.Update(station, true);
-                                EmptyStation.location_state = LocationStateEnum.Busy.ToString();
-                                stationinfoRepository.Update(EmptyStation, true);
-                                WriteDBLog.Success("鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", $"浠诲姟缂栧彿锛歿agvtask.agv_tasknum}锛屾墭鐩樹俊鍙�:{PalletSignal},璐х墿淇″彿:{MaterialSignal}", "PCS");
-                            }
-                        }
-                    }
-                    catch (Exception ex)
-                    {
-                        WriteDBLog.Error("鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", $"{stationCode}锛歿remark}閿欒淇℃伅锛歿ex.Message}", "PCS");
-                    }
-                }
-            }
-            catch (Exception ex)
-            {
-                WriteDBLog.Error("鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
-            }
-        }
-
-        /// <summary>
-        /// 妫�娴嬪厜鐢电姸鎬佷笌绯荤粺璐т綅鐘舵�佹槸鍚︿竴鑷�
-        /// </summary>
-        /// <param name="client"></param>
-        private void StationState(PLCClient client)
-        {
-            try
-            {
-                List<string> names = new List<string>() { "1鍗曞厓涓嬫枡鍖�", "2鍗曞厓涓嬫枡鍖�", "3鍗曞厓涓嬫枡鍖�" };/*, "涓婃枡鍖�"*/
-                foreach (var name in names)
-                {
-                    VOLContext Context = new VOLContext();
-                    Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
-                    var Stations = stationinfoRepository.Find(x => x.area == area_code(name) && x.enable && !x.location_state.Contains("Busy") && x.location_state != LocationStateEnum.Abnormal.ToString());
-                    foreach (var Station in Stations)
-                    {
-                        var PalletSignal = client.ReadByOrder<Int16>("R_PalletSignal", Station.stationCode);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
-                        var MaterialSignal = client.ReadByOrder<Int16>("R_MaterialSignal", Station.stationCode);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
-                        if (Station.quantity > 0 && (PalletSignal != 1 || MaterialSignal != 1))//绯荤粺璐т綅鏈夎溅杞紝鍏夌數妫�娴嬫棤杞﹁疆
-                        {
-                            Station.location_state = LocationStateEnum.Abnormal.ToString();
-                            Station.remark = $"杞﹁疆鏁伴噺澶т簬0锛屾墭鐩樺厜鐢典俊鍙蜂负锛歿PalletSignal}锛岃揣鐗╁厜鐢典俊鍙蜂负锛歿MaterialSignal}";
-                            stationinfoRepository.Update(Station, true);
-                            client.WriteByOrder("W_AlarmSignal", (Int16)2, name);//鎶ヨ
-                            WriteDBLog.Error(name + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
-                            continue;
-                        }
-                        if (Station.location_state == LocationStateEnum.Stroge.ToString() && PalletSignal != 1)
-                        {
-                            Station.location_state = LocationStateEnum.Abnormal.ToString();
-                            Station.remark = $"璐т綅鐘舵�佷负鏈夎揣锛屾墭鐩樺厜鐢典俊鍙蜂负锛歿PalletSignal}锛岃揣鐗╁厜鐢典俊鍙蜂负锛歿MaterialSignal}";
-                            stationinfoRepository.Update(Station, true);
-                            client.WriteByOrder("W_AlarmSignal", (Int16)2, name);//鎶ヨ
-                            WriteDBLog.Error(name + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
-                            continue;
-                        }
-                        if (Station.location_state == LocationStateEnum.Empty.ToString() && (PalletSignal == 1 || MaterialSignal == 1))//绯荤粺璐т綅涓虹┖锛屽厜鐢垫娴嬫湁鏂�
-                        {
-                            Station.location_state = LocationStateEnum.Abnormal.ToString();
-                            Station.remark = $"璐т綅鐘舵�佷负绌鸿揣浣嶏紝鎵樼洏鍏夌數淇″彿涓猴細{PalletSignal}锛岃揣鐗╁厜鐢典俊鍙蜂负锛歿MaterialSignal}";
-                            stationinfoRepository.Update(Station, true);
-                            client.WriteByOrder("W_AlarmSignal", (Int16)2, name);//鎶ヨ
-                            WriteDBLog.Error(name + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
-                            continue;
-                        }
-                        //if (Station.quantity < 1 && MaterialSignal == 1)//绯荤粺璐т綅鏃犺溅杞紝鍏夌數妫�娴嬫湁杞﹁疆
-                        //{
-                        //    Station.location_state = LocationStateEnum.Abnormal.ToString();
-                        //    Station.remark = "璐т綅鏃犺溅杞紝鍏夌數妫�娴嬫湁杞﹁疆";
-                        //    stationinfoRepository.Update(Station, true);
-                        //    client.WriteByOrder("W_AlarmSignal", (Int16)2, name);//鎶ヨ
-                        //    continue;
-                        //}
-                    }
-                }
-            }
-            catch (Exception ex)
-            {
-
-                //throw;
-            }
-        }
-        public static string area_code(string area_name)
-        {
-            VOLContext Context = new VOLContext();
-            Idt_areainfoRepository areainfoRepository = new dt_areainfoRepository(Context);
-            var areainfo = areainfoRepository.Find(x => x.area_name == area_name).FirstOrDefault();
-            return areainfo.area_code.ToString();
-        }
-
-        private string OperStr(string[] strArrty)
-        {
-            string[] newstr = strArrty.RemoveLast(1);
-            string Newsn = string.Join(",", newstr);
-
-            return Newsn;
-        }
-        public static dt_geometry_data QueryMateriel(string type)
-        {
-            VOLContext Context = new VOLContext();
-            Idt_geometry_dataRepository dataRepository = new dt_geometry_dataRepository(Context);
-            var materielinfo = dataRepository.Find(x => x.Description == type).OrderBy(x => x.TypeId).FirstOrDefault();
-            return materielinfo;
-        }
-        public static dt_geometry_data_detectionline QueryMateriel1(string type)
-        {
-            VOLContext Context = new VOLContext();
-            Idt_geometry_data_detectionlineRepository detectionlineRepository = new dt_geometry_data_detectionlineRepository(Context);
-            var materielinfo1 = detectionlineRepository.Find(x => x.Description == type).OrderBy(x => x.TypeId).FirstOrDefault();
-            return materielinfo1;
-        }
-        public static string QueryMateriel(int typeId)
-        {
-            VOLContext Context = new VOLContext();
-            Idt_geometry_dataRepository dataRepository = new dt_geometry_dataRepository(Context);
-            var materielinfo = dataRepository.FindFirst(x => x.TypeId == typeId);
-            return materielinfo.Description;
-        }
-        /// <summary>
-        /// 鏇存敼宸ュ崟鐘舵��
-        /// </summary>
-        /// <param name="SN"></param>
-        public static void Updatemes(string SN)
-        {
-            VOLContext Context = new VOLContext();
-            Idt_mes_detailRepository mes_DetailRepository = new dt_mes_detailRepository(Context);
-            Idt_mes_headRepository mes_HeadRepository = new dt_mes_headRepository(Context);
-            IVV_Mes_WorkinfoRepository workinfoRepository = new VV_Mes_WorkinfoRepository(Context);
-            //var mes_Detail = freeDB.Select<dt_mes_detail>().Where(x => x.SN == SN).First();
-            var Mes_Work = workinfoRepository.Find(x => x.SN == SN && x.processCode == "28").FirstOrDefault();
-            var mes_Detail = mes_DetailRepository.Find(x => x.SN == SN && x.jobID == Mes_Work.jobID).FirstOrDefault();
-            if (mes_Detail != null)
-            {
-                mes_Detail.Status = "涓婄嚎";
-                mes_Detail.FinishTime = DateTime.Now;
-                //freeDB.DataBase.Update<dt_mes_detail>().SetSource(mes_Detail).UpdateColumns(x => new { x.Status, x.FinishTime }).ExecuteAffrows();
-                mes_DetailRepository.Update(mes_Detail, true);
-                //var mes_Head = freeDB.Select<dt_mes_head>().Where(x => x.jobID == mes_Detail.jobID).First();
-                var mes_Head = mes_HeadRepository.Find(x => x.jobID == mes_Detail.jobID).FirstOrDefault();
-                if (mes_Head != null)
-                {
-                    mes_Head.finishNum = mes_Head.finishNum + 1;
-                    //freeDB.DataBase.Update<dt_mes_head>().SetSource(mes_Head).UpdateColumns(x => new { x.finishNum }).ExecuteAffrows();
-                    mes_HeadRepository.Update(mes_Head, true);
-                }
-            }
+            Pipeline pipeline = new Pipeline();
+            pipeline.Loadinglevel(client);
+            pipeline.AutoEmptyTray(client);
+            pipeline.StationState(client);
         }
     }
 }

--
Gitblit v1.9.3