From 0b5ccdca6263cf7a2cee460f30c76ef1efea2811 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期六, 27 四月 2024 17:47:27 +0800
Subject: [PATCH] 人工出库,人工入库,人工移库,PDA扫码确认外协物料已被取走接口

---
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs |  304 ++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 252 insertions(+), 52 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 25caaff..045de56 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"
@@ -11,15 +11,18 @@
 using System.Xml.Linq;
 using WIDESEA_Comm;
 using WIDESEA_Comm.LogInfo;
+using WIDESEA_Comm.TaskNo;
 using WIDESEA_Core.BaseProvider;
 using WIDESEA_Core.EFDbContext;
 using WIDESEA_Core.Extensions;
-using WIDESEA_Core.FreeDB;
 using WIDESEA_Entity.DomainModels;
 using WIDESEA_WCS.IRepositories;
 using WIDESEA_WCS.Jobs;
+using WIDESEA_WCS.JobsPart.Common;
 using WIDESEA_WCS.Repositories;
 using WIDESEA_WCS.WCSClient;
+using WIDESEA_WMS.IRepositories;
+using WIDESEA_WMS.Repositories;
 using static System.Collections.Specialized.BitVector32;
 
 namespace WIDESEA_WCS
@@ -34,20 +37,6 @@
         {
             try
             {
-                var client = context.JobDetail.JobDataMap.Get("JobParams") as PLCClient;
-                if (client == null)
-                {
-                    return Task.CompletedTask;
-                }
-
-                //鑷姩閲嶈繛
-                if (!client.IsConnected)
-                {
-                    client.Connect();
-                    return Task.CompletedTask;
-                }
-
-                //DoAction(client);
                 ExecuteJob(context, DoAction);
             }
             catch { }
@@ -63,7 +52,10 @@
                 client.Connect();
                 return;
             }
+            client.WriteByOrder("W_Palpitate", client.ReadByOrder<bool>("R_Palpitate", "蹇冭烦"));
             Loadinglevel(client);
+            AutoEmptyTray(client);
+            StationState(client);
         }
         /// <summary>
         /// 涓婃枡鍖�
@@ -86,13 +78,7 @@
 
 
                 ///鏌ユ壘涓婃枡鍖虹殑璐т綅
-                var Stations = stationinfoRepository.Find(x => x.area == area_code(number));
-                //缂撳瓨鏋舵湭鍚敤绂佹妗佹灦杩涘叆
-                foreach (var station in Stations)
-                {
-                    if (!station.enable || station.location_state != LocationStateEnum.Stroge.ToString())
-                        Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
-                }
+                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)
@@ -115,25 +101,29 @@
                         WriteDBLog.Error("涓婃枡鍖�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�", "PCS");
                         #endregion
                         return;
-                        //throw new Exception("涓婃枡浣嶈溅杞暟閲忎笌SN鍙锋暟閲忎笉涓�鑷达紝涓婃枡浣嶇紪鍙凤細" + Station.stationCode);
                     }
                     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)
                     {
-                        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_Type", (Int16)Convert.ToInt16(QueryMateriel(Station.stationType).TypeId), number);//杞﹁疆绫诲瀷
-                        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}" +
-                            $"\n杞﹁疆SN鍙凤細{SNS[SNS.Length - 1]}\nW_RequestUnload锛歵rue", "PCS");
-                        #endregion
+                        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
                     {
@@ -149,11 +139,10 @@
                         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);
-                            Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
-                            //throw new Exception($"鏈煡璇㈠埌SN鍙凤細{SNS[SNS.Length - 1]}鐨勮鍗曪紝涓婃枡浣嶇紪鍙凤細{Station.stationCode}");
                             WriteDBLog.Error("涓婃枡鍖轰俊鎭煡璇�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}鏈煡璇㈠埌SN鍙凤細{SNS[SNS.Length - 1]}鐨勮鍗�", "PCS");
                             return;
                         }
@@ -164,50 +153,225 @@
                         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.location_state = LocationStateEnum.Empty.ToString();
                             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");
-                            //throw new Exception($"涓婃枡浣嶄俊鎭洿鏂板け璐ワ紒涓婃枡浣嶇紪鍙凤細{Station.stationCode}");
                             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);//璐т綅鐘舵�佹洿鏂�
-                        Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
                         #region 鏃ュ織璁板綍
                         WriteDBLog.Success("鍙栨枡瀹屾垚", $"鍐欏叆妗佹灦淇℃伅锛歕n璐т綅鐘舵�佹洿鏂帮細{true}\nW_RequestUnload锛歿false}", "PCS");
                         #endregion
-                        //finished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Unlod_finished").First(), Gantry_client);
-                        //while (finished)
-                        //{
-                        //    finished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Unlod_finished").First(), Gantry_client);
-                        //    Gantry_client.WriteByOrder("W_Storage_update", false, number);//璐т綅鐘舵�佹洿鏂�
-                        //}
-                    }
-                    //else if (!finished && updatefinished)
-                    //    Gantry_client.WriteByOrder("W_Storage_update", false, number);//璐т綅鐘舵�佹洿鏂�
 
+                        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");
+                        }
+                    }
                 }
                 else
                     Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
             }
             catch (Exception ex)
             {
-                //WritePCSLog.LogAdd(requestin.AreaNr.ToString(), respone.success == 1 ? "鎴愬姛 " : "澶辫触", "WMS", "AGV", json, JsonConvert.SerializeObject(respone), remark, "妫�娴嬬嚎涓婃枡鍖�", ex.Message);
+                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" };
+                foreach (var stationCode in stationCodes)
+                {
+                    if (agvtaskService.Find(x => x.agv_fromaddress == stationCode /*|| x.agv_toaddress == stationCode*/).Any())
+                        continue;
+                    var station = stationinfoRepository.Find(x => x.stationCode == stationCode && x.enable).FirstOrDefault();
+                    if (station == null) continue;
+                    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";
+                        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);
+                            continue;
+
+                        }
+
+                        #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()).FirstOrDefault();
+                        #endregion
+
+                        if (EmptyStation == null)//鏌ユ壘搴撳唴绌烘墭鐩�
+                            EmptyStation = GetStation.EmptyPalletStation(area);
+
+
+                        if (EmptyStation != null)
+                        {
+                            #region 鍚屼竴涓┖鎵樹綅鍙兘鍚屾椂鐢熸垚涓�涓┖鎵樹换鍔�
+                            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}", "PCS");
+                            return;
+                        }
+                    }
+                }
+            }
+            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锛屽厜鐢垫娴嬫棤鎵樼洏鎴栨棤杞﹁疆";
+                            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 = "鍏夌數妫�娴嬫棤鎵樼洏";
+                            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 = "鍏夌數妫�娴嬫湁鏂�";
+                            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)
         {
-            FreeDB freeDB = new FreeDB();
-            var areainfo = freeDB.Select<dt_areainfo>().Where(x => x.area_name == area_name).First();
+            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();
         }
 
@@ -225,6 +389,13 @@
             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();
@@ -232,5 +403,34 @@
             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);
+                }
+            }
+        }
     }
 }

--
Gitblit v1.9.3