From d2cef0150abe6d14cbfa60c8845795b91a1f5f97 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期六, 20 四月 2024 19:50:53 +0800
Subject: [PATCH] 添加入库触发条件,修改上料区任务逻辑

---
 代码管理/PCS/WCS_Server/WIDESEA_Comm/PLCDBItem/StackerReadDBItem.cs     |   59 +++++++++
 代码管理/PCS/WCS_Client/src/api/http.js                                 |    2 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/VK4Job.cs            |   79 +++++++++++++
 代码管理/PCS/WCS_Server/WIDESEA_WCS/WCSClient/DBExtension.cs            |   47 +++++++
 代码管理/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs       |    5 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/StationTask.cs      |   23 ---
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs            |    8 -
 代码管理/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/新文件夹/GetLocation.cs |   78 +-----------
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs                    |   12 +
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs       |   44 ------
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/appsettings.json                 |    2 
 11 files changed, 208 insertions(+), 151 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/api/http.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/api/http.js"
index f6b7a14..8ecd457 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/api/http.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/api/http.js"
@@ -12,7 +12,7 @@
 let loadingInstance;
 let loadingStatus = false;
 if (process.env.NODE_ENV == 'development') {
-    axios.defaults.baseURL = 'http://192.168.12.101:8099/';
+    axios.defaults.baseURL = 'http://127.0.0.1:8099/';
 }
 else if (process.env.NODE_ENV == 'debug') {
     axios.defaults.baseURL = 'http://192.168.12.101:8099/';
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/PLCDBItem/StackerReadDBItem.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/PLCDBItem/StackerReadDBItem.cs"
new file mode 100644
index 0000000..eeab48c
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/PLCDBItem/StackerReadDBItem.cs"
@@ -0,0 +1,59 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Comm.PLCDBItem
+{
+    /// <summary>
+    /// 杈婇亾淇℃伅
+    /// </summary>
+    public class StackerReadDBItem
+    {
+        public event Action<string, StackerReadDBItem> OnReadStackerSignal;
+
+        /// <summary>
+        /// 杈婇亾缂栧彿
+        /// </summary>
+        public string StackerNo { get; set; }
+
+        /// <summary>
+        /// 杞﹁疆SN鍙�
+        /// </summary>
+        public string R_wheel_SN { get; set; }
+
+        /// <summary>
+        /// 杞﹁疆绫诲瀷
+        /// </summary>
+        public Int16 R_wheel_type { get; set; }
+
+        /// <summary>
+        /// 杞﹁疆闆朵欢鐘舵��
+        /// </summary>
+        public byte R_part_status { get; set; }
+
+        /// <summary>
+        /// 杞﹁疆闆朵欢宸ヨ壓
+        /// </summary>
+        public byte R_part_process { get; set; }
+
+        /// <summary>
+        /// 杈婇亾machine_nr
+        /// </summary>
+        public bool R_machine_nr { get; set; }
+
+        /// <summary>
+        /// 璇诲彇杈婇亾direction
+        /// </summary>
+        public byte R_direction { get; set; }
+
+        public void ReadSignal(string signalType, StackerReadDBItem dBItem)
+        {
+            Task.Run(() =>
+            {
+                OnReadStackerSignal?.Invoke(signalType, dBItem);
+            });
+        }
+    }
+}
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 3efdf48..65f8cb7 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"
@@ -695,15 +695,19 @@
 
                             if (Stationinfo != null)
                             {
+
+                                #region 鎹㈢被鍨嬬洿鎺ュ叆搴�
+                                var stationinfo1 = Stations.Where(x => x.enable && x.stationCode != NGStation && x.stationCode != Stationinfo.stationCode && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0 && x.stationType != Work.drawingNo).FirstOrDefault();
+                                if (stationinfo1 != null)
+                                    agvtask(stationinfoRepository, stationinfo1, Work, name == "3鍗曞厓涓嬫枡鍖�" ? "TaskType_OutsourceInbound" : "TaskType_Inbound");
+                                #endregion
+
                                 #region 鎵樼洏杞﹁疆鍫嗗灈绗洓涓椂涓嬪彂鍙﹀涓�涓倝鍙风殑鍏ュ簱浠诲姟
                                 if (Stationinfo.quantity + 1 >= 4)
                                 {
                                     var stationinfo = Stations.Where(x => x.enable && x.stationCode != NGStation && x.stationCode != Stationinfo.stationCode && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).FirstOrDefault();
-                                    //foreach (var stationinfo in stationinfos)
-                                    //{
                                     if (stationinfo != null)
                                         agvtask(stationinfoRepository, stationinfo, Work, name == "3鍗曞厓涓嬫枡鍖�" ? "TaskType_OutsourceInbound" : "TaskType_Inbound");
-                                    //}
                                 }
 
                                 #endregion
@@ -836,7 +840,7 @@
                                     agvtask(stationinfoRepository, NG, Work, "TaskType_OutsourceInbound");
                                     continue;
                                 }
-                                    
+
                                 #endregion
 
                                 Stationinfo = Stations.Where(x => x.enable && x.stationCode == NGStation && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity == 0).FirstOrDefault();
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs"
index 4a65288..231a254 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs"
@@ -23,7 +23,6 @@
             try
             {
                 ExecuteJob(context, DoAction);
-
             }
             catch { }
             return Task.CompletedTask;
@@ -31,15 +30,8 @@
 
         private void DoAction(IJobExecutionContext context)
         {
-            //throw new NotImplementedException();
-            //Creation.PLCinfodetail();
-            //ReplaceTray.a();
-            //EmptyTrayTask.InEmptyTrayTask(); //搴撳唴绌烘墭浠诲姟
-            //EmptyTrayTask.task();
-
             StationTask.CreateTask();
             OutboundTask.CreateOutboundTask();//浼樺寲鍚庡嚭搴撻�昏緫
-            //OutboundTask_a.CreateOutboundTask();
             ReplaceTray.ReplaceTrayTask();
             RestockHCJ.HCJGetBarcode();
             EmptyTrayTask.CreateEmptyTrayTask();
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 3f299ad..eed63b1 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"
@@ -79,12 +79,6 @@
 
                 ///鏌ユ壘涓婃枡鍖虹殑璐т綅
                 var Stations = stationinfoRepository.Find(x => x.area == area_code(number)).OrderBy(x => x.lastUpdateTime);//鏍规嵁鏃堕棿鍏堝悗鎺掑簭
-                //缂撳瓨鏋舵湭鍚敤绂佹妗佹灦杩涘叆
-                //foreach (var station in Stations)
-                //{
-                //    if (!station.enable || station.location_state != LocationStateEnum.Stroge.ToString())
-                //        Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
-                //}
 
                 var Station = Stations?.Where(x => x.enable && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderBy(x => x.quantity).FirstOrDefault();
                 if (Station != null)
@@ -107,7 +101,6 @@
                         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鏃�
@@ -150,7 +143,6 @@
                             Station.location_state = LocationStateEnum.Abnormal.ToString();
                             Station.remark = $"鏈煡璇㈠埌SN鍙凤細{SNS[SNS.Length - 1]}鐨勮鍗�";
                             stationinfoRepository.Update(Station, true);
-                            //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;
                         }
@@ -168,7 +160,6 @@
                         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";
@@ -177,7 +168,6 @@
                         if (count < 1)
                         {
                             WriteDBLog.Error("鍙栨枡瀹屾垚", $"涓婃枡浣嶄俊鎭洿鏂板け璐ワ紒涓婃枡浣嶇紪鍙凤細{Station.stationCode}", "PCS");
-                            //throw new Exception($"涓婃枡浣嶄俊鎭洿鏂板け璐ワ紒涓婃枡浣嶇紪鍙凤細{Station.stationCode}");
                             return;
                         }
 
@@ -186,7 +176,6 @@
                         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);//杞﹁疆绫诲瀷
-                        //Gantry_client.WriteByOrder("W_Wheel_id", SNS[SNS.Length - 1], number);//杞﹁疆SN鍙�
                         #endregion
 
                         Gantry_client.WriteByOrder("W_Storage_update", true, number);//璐т綅鐘舵�佹洿鏂�
@@ -220,7 +209,6 @@
             catch (Exception ex)
             {
                 WriteDBLog.Error("涓婃枡鍖�", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
-                //WritePCSLog.LogAdd(requestin.AreaNr.ToString(), respone.success == 1 ? "鎴愬姛 " : "澶辫触", "WMS", "AGV", json, JsonConvert.SerializeObject(respone), remark, "妫�娴嬬嚎涓婃枡鍖�", ex.Message);
             }
         }
         /// <summary>
@@ -240,13 +228,13 @@
                 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())
+                    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鏃�
-                    var station = stationinfoRepository.Find(x => x.stationCode == stationCode && x.enable).FirstOrDefault();
-                    if (station == null) continue;
                     if (PalletSignal == 1 && MaterialSignal == 2 && (station.stationCode.Contains("S0100100") ? station.tray_status == "EmptyTray" : true))
                     {
                         var area = station.tray_type == "SmallTray" ? "11" : "10";
@@ -275,32 +263,6 @@
                         if (EmptyStation == null)//鏌ユ壘搴撳唴绌烘墭鐩�
                             EmptyStation = GetStation.EmptyPalletStation(area);
 
-                        #region 鏌ユ壘搴撳尯涓�绌烘墭鐩樼┖璐т綅
-                        // EmptyStation = stationinfoRepository.Find(x => x.area == area && x.quantity < 5 && x.stationCode.Contains("A") && x.location_state != LocationStateEnum.Busy.ToString() && x.enable)
-                        //.OrderBy(x => x.column).ThenByDescending(x => x.line).FirstOrDefault();//鏌ユ壘娌℃湁浠诲姟鐨勭┖鎵樼洏璐т綅
-
-                        // if (EmptyStation != null)
-                        // {
-                        //     if (stationinfoRepository.Find(x => x.area == EmptyStation.area && x.stationCode.Contains("A") && x.column == EmptyStation.column && x.location_state.Contains("Busy")).Any())
-                        //     {
-                        //         EmptyStation = stationinfoRepository.Find(x => x.area == area && x.quantity < 5 && x.stationCode.Contains("A") && x.column != EmptyStation.column && x.location_state != LocationStateEnum.Busy.ToString() && x.enable).OrderBy(x => x.column).ThenByDescending(x => x.line).FirstOrDefault();//鎺掗櫎褰撳垪瀛樺湪浠诲姟鐨勮揣浣�
-                        //     }
-                        //     if (EmptyStation != null && EmptyStation.line == 2)//濡傛灉浠诲姟瀛樺湪绗簩琛�,鎺掓煡绗竴琛屾槸鍚︽湁璐�
-                        //     {
-                        //         if (stationinfoRepository.Find(x => x.area == EmptyStation.area && x.stationCode.Contains("A") && x.column == EmptyStation.column && x.line == 1 && x.location_state != LocationStateEnum.Empty.ToString()).Any()) EmptyStation = null;
-                        //     }
-                        // }
-
-                        // if (EmptyStation == null)
-                        // {
-                        //     EmptyStation = stationinfoRepository.Find(x => x.area == area && x.quantity < 5 && x.stationCode.Contains(area == "10" ? "D" : "C") && x.location_state == LocationStateEnum.Busy.ToString() && x.enable).OrderByDescending(x => x.column).FirstOrDefault();//鏈�鍚庝竴涓揣浣嶆湁浠诲姟鍒欎笉鑳界敓鎴愬叆搴撲换鍔�
-                        //     if (EmptyStation != null) continue;
-                        //     EmptyStation = stationinfoRepository.Find(x => x.area == area && x.quantity < 5 && x.stationCode.Contains(area == "10" ? "D" : "C") && x.location_state == LocationStateEnum.Stroge.ToString() && x.enable).OrderByDescending(x => x.column).FirstOrDefault();//鎵炬渶澶栭潰娌″爢婊�5涓殑璐т綅
-                        //     if (EmptyStation == null)
-                        //         EmptyStation = stationinfoRepository.Find(x => x.area == area && x.quantity < 5 && x.stationCode.Contains(area == "10" ? "D" : "C") && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderBy(x => x.column).FirstOrDefault();
-                        // }
-
-                        #endregion
 
                         if (EmptyStation != null)
                         {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/VK4Job.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/VK4Job.cs"
new file mode 100644
index 0000000..9023d59
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/VK4Job.cs"
@@ -0,0 +1,79 @@
+锘縰sing OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using Quartz;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Comm.PLCDBItem;
+using WIDESEA_Core.Extensions;
+using WIDESEA_WCS.Jobs;
+using WIDESEA_WCS.WCSClient;
+using static Dapper.SqlMapper;
+
+namespace WIDESEA_WCS
+{
+    [DisallowConcurrentExecution]
+    public class VK4Job : JobBase, IJob
+    {
+        public Task Execute(IJobExecutionContext context)
+        {
+            try
+            {
+                ExecuteJob(context, DoAction);
+            }
+            catch (Exception ex)
+            {
+
+            }
+            return Task.CompletedTask;
+        }
+
+        public static StackerReadDBItem StackerDBItem;
+        private void DoAction(IJobExecutionContext context)
+        {
+            var client = context.JobDetail.JobDataMap.Get("JobParams") as PLCClient;
+            //鑷姩閲嶈繛
+            if (!client.IsConnected)
+            {
+                client.Connect();
+                return;
+            }
+            PropertyInfo[] propertyInfos = typeof(StackerReadDBItem).GetProperties();
+            if (StackerDBItem == null)
+            {
+                StackerDBItem = new();
+                //StackerDBItem.OnReadStackerSignal += HandleReadStackerSignal;
+            }
+            List<StackerReadDBItem> StackerReadDBItems = new List<StackerReadDBItem>();
+            var groups = client.itemGroups.OrderBy(x => x.Methods).ThenBy(x=>x.name).GroupBy(x => x.Methods);
+            foreach (var key in groups)
+            {
+                //foreach (var item in key)
+                //{
+                    for (int i = 0; i < propertyInfos.Length; i++)
+                    {
+                        if (i == 0)
+                        {
+                            StackerDBItem.StackerNo = key.First(x=>true).Methods;
+                        }
+                        else
+                        {
+                            DBItemGroup group = key.FirstOrDefault(x => x.name == propertyInfos[i].Name);
+                            if (group != null)
+                            {
+                                object readData = DBExtension.Read(group, client);
+                                object obj = propertyInfos[i].GetValue(StackerDBItem);
+                                if (obj != readData)
+                                    propertyInfos[i].SetValue(StackerDBItem, readData);
+                            }
+                        }
+                    }
+                    StackerReadDBItems.Add(StackerDBItem);
+                //}
+            }
+            
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs"
index 63ce234..55d93e2 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs"
@@ -17,6 +17,7 @@
 using WIDESEA_WMS.IServices;
 using WIDESEA_WMS.Repositories;
 using static FreeSql.Internal.GlobalFilter;
+using static System.Collections.Specialized.BitVector32;
 
 namespace WIDESEA_WCS.JobsPart.Common
 {
@@ -38,7 +39,7 @@
                 {
                     if (task.agv_tasktype == "TaskType_EmptyPallet")//绌烘墭浠诲姟
                     {
-                        if (task.agv_fromaddress == "" && DateTime.Now - task.agv_createtime >= TimeSpan.FromMinutes(1))
+                        if (task.agv_fromaddress == "" && DateTime.Now - task.agv_createtime >= TimeSpan.FromMinutes(10))
                         {
                             if (task.agv_tasknum.Contains("_"))
                             {
@@ -127,7 +128,7 @@
                     {
                         if (task.agv_toaddress == "")
                         {
-                            var EmptyStations = stationinfoRepository.Find(x => x.stationCode.Contains("S01001") && x.location_state == "Empty" && x.enable).ToList();
+                            var EmptyStations = stationinfoRepository.Find(x => x.stationCode.Contains("S01001") && x.tray_status == "EmptyTray" /*x.location_state == "Empty"*/ && x.enable).ToList();
                             foreach (var EmptyStation in EmptyStations)
                             {
                                 if (agvtaskService.Find(x => x.agv_toaddress == EmptyStation.stationCode).Any()) continue;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/StationTask.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/StationTask.cs"
index 45889b7..dffe3ee 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/StationTask.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/StationTask.cs"
@@ -54,7 +54,7 @@
 
                     //鏍规嵁涓嬫枡鍙g殑缁戝畾淇℃伅鏌ヨ瀵瑰簲宸ュ崟锛屾娴嬫宸ュ崟鏄惁宸插畬鎴�  瀹屾垚鍗冲彲灏嗗叾閫佸叆搴�
 
-                    var work = workinfoRepository.Find(x => x.workOrder == item.Number && x.drawingNo == x.drawingNo && x.heatID == item.heatNumber).FirstOrDefault();
+                    var work = workinfoRepository.Find(x => x.workOrder == item.Number && x.drawingNo == x.drawingNo && x.heatID == item.heatNumber && x.processCode == "17").FirstOrDefault();
                     if (work == null)
                     {
                         item.remark = "瑙﹀彂鍏ュ簱浠诲姟,浣嗘湭鎵惧埌宸ュ崟淇℃伅锛�";
@@ -63,29 +63,13 @@
                         continue;
                     }
 
-                    //dt_mes_head mesinfo = mes_HeadRepository.Find(x => x.workOrder == item.Number).FirstOrDefault();
-                    //if (mesinfo == null)
-                    //{
-                    //    item.remark = "瑙﹀彂鍏ュ簱浠诲姟,浣嗘湭鎵惧埌宸ュ崟澶磋〃锛�";
-                    //    item.location_state = LocationStateEnum.Abnormal.ToString();
-                    //    stationinfoRepository.Update(item, true);
-                    //    continue;
-                    //    //throw new Exception("鏈壘鍒板伐鍗曞ご琛紒宸ュ崟鍙凤細" + item.Number);
-                    //}
-                    //var dt_Geometry_Data = PipelineJob.QueryMateriel(mesinfo.drawingNo);
-                    //var dt_Geometry_Data1 = PipelineJob.QueryMateriel1(mesinfo.drawingNo);
-
-                    //int CompeletedNum = Convert.ToInt32(mesinfo.quantity) - Convert.ToInt32(mesinfo.finishNum);
-
-
-
                     dt_stationinfo TargetLocation = null;
                     string tasktype = "";
-                    if (item.quantity == 5 /*|| CompeletedNum == 0*/)  //寰幆璇诲彇杞﹁疆鏁颁负5鎴栬�呰鍗曞凡瀹屾垚鏁伴噺鐨勪笅鏂欏彛    鈫掑伐鍗曚汉宸ュ叧闂殑宸ュ崟
+                    if (item.quantity == 5 /*|| CompeletedNum == 0*/)
                     {
 
 
-                        if (/*(mesinfo.quantity <= 50 &&*/ !string.IsNullOrEmpty(work.area) || item.stationCode.Contains("3"))    //灏忎簬50浠剁洿鎺ュ嚭搴�
+                        if (/*(mesinfo.quantity <= 50 &&*/ !string.IsNullOrEmpty(work.area) || item.stationCode.Contains("3"))
                         {
                             //todo 瀵绘壘鍙斁璐у鍗忔斁璐у彴
                             tasktype = "TaskType_OutsourceInbound";
@@ -97,7 +81,6 @@
                             //todo:  璋冪敤WMS鎺ュ彛鍒涘缓浠诲姟
                             tasktype = "TaskType_Inbound";
                             TargetLocation = GetLocation.GetEmptyLocation(stationinfoRepository, work, item);
-                            //TargetLocation = GetEmptyLocation(stationinfoRepository, mesinfo, item, CompeletedNum, dt_Geometry_Data == null ? dt_Geometry_Data1.e : dt_Geometry_Data.e);
                         }
                         if (TargetLocation != null)
                         {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/\346\226\260\346\226\207\344\273\266\345\244\271/GetLocation.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/\346\226\260\346\226\207\344\273\266\345\244\271/GetLocation.cs"
index 9365f38..b2b886f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/\346\226\260\346\226\207\344\273\266\345\244\271/GetLocation.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/\346\226\260\346\226\207\344\273\266\345\244\271/GetLocation.cs"
@@ -31,35 +31,14 @@
                 try
                 {
                     VOLContext context = new VOLContext();
-                    //Idt_mes_detailRepository mes_DetailRepository = new dt_mes_detailRepository(context);
                     Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context);
-                    //var detail = mes_DetailRepository.Find(x => x.jobID == mesinfo.jobID).FirstOrDefault();
-                    //if (detail == null)
-                    //{
-                    //    stationinfo.remark = "瑙﹀彂鍏ュ簱浠诲姟,浣嗘湭鎵惧埌宸ュ崟瀛愯〃锛�";
-                    //    stationinfo.location_state = LocationStateEnum.Abnormal.ToString();
-                    //    stationinfoRepository.Update(stationinfo, true);
-                    //    return null;
-                    //}
                     string area1 = "";
                     if (stationinfo.tray_type == "LargeTray")
                         area1 = "4";
 
                     #region 鏌ユ壘搴撳瓨
                     dt_inventory inventory = null;
-                    inventory = inventoryRepository.Find(x => x.FigureNumber == mesinfo.drawingNo).OrderByDescending(x => x.OnlineTime).FirstOrDefault();
-
-                    #region 鏍规嵁鏉′欢鏌ヨ搴撳瓨
-                    //if (mesinfo.heatID != null)
-                    //{
-                    //    inventory = inventoryRepository.Find(x => x.HeatNumber == mesinfo.heatID && x.FigureNumber == mesinfo.drawingNo && x.jobID == mesinfo.workOrder).OrderByDescending(x => x.OnlineTime).FirstOrDefault();
-                    //}
-                    //else
-                    //{
-                    //    inventory = inventoryRepository.Find(x => x.FigureNumber == mesinfo.drawingNo && x.jobID == mesinfo.workOrder).OrderByDescending(x => x.OnlineTime).FirstOrDefault();
-                    //}
-                    #endregion
-
+                    inventory = inventoryRepository.Find(x => x.FigureNumber == stationinfo.stationType).OrderByDescending(x => x.OnlineTime).FirstOrDefault();
                     #endregion
 
                     dt_stationinfo TargetLocation = null;
@@ -74,55 +53,27 @@
                             TargetLocation = stationinfoRepository.Find(x => x.stationType == stationinfo.stationType && x.location_state == LocationStateEnum.InBusy.ToString() && x.area == area1).FirstOrDefault();
                             if (TargetLocation != null)
                             {
-                                //if (TargetLocation.area == "1")
-                                //{
-                                //    //TargetLocation = stationinfoRepository.Find(x => x.column == TargetLocation.column && x.location_state == LocationStateEnum.Empty.ToString() && x.enable && x.area == TargetLocation.area).OrderByDescending(x => x.line).FirstOrDefault();
-
-                                //    TargetLocation = stationinfoRepository.Find(x => x.line == TargetLocation.line && x.location_state == LocationStateEnum.Empty.ToString() && x.enable && x.area == TargetLocation.area).OrderBy(x => x.column).FirstOrDefault();//鎸夎瀛樻斁
-
-                                //    if (TargetLocation != null)
-                                //    {
-                                //        if (!stationinfoRepository.Find(x => x.column == TargetLocation.column && x.area == TargetLocation.area /*&& x.enable*/ && x.location_state == LocationStateEnum.OutBusy.ToString()).Any())
-                                //            return TargetLocation;
-                                //    }
-                                //}
-                                //else
-                                //{
-                                    TargetLocation = stationinfoRepository.Find(x => x.line == TargetLocation.line && x.location_state == LocationStateEnum.Empty.ToString() && x.enable && x.area == TargetLocation.area).OrderBy(x => x.column).FirstOrDefault();
-                                    if (TargetLocation != null)
-                                    {
-                                        if (!stationinfoRepository.Find(x => x.line == TargetLocation.line && x.area == TargetLocation.area && x.location_state == LocationStateEnum.OutBusy.ToString()).Any())
-                                            return TargetLocation;
-                                    }
-                                //}
+                                TargetLocation = stationinfoRepository.Find(x => x.line == TargetLocation.line && x.location_state == LocationStateEnum.Empty.ToString() && x.enable && x.area == TargetLocation.area).OrderBy(x => x.column).FirstOrDefault();
+                                if (TargetLocation != null)
+                                {
+                                    if (!stationinfoRepository.Find(x => x.line == TargetLocation.line && x.area == TargetLocation.area && x.location_state == LocationStateEnum.OutBusy.ToString()).Any())
+                                        return TargetLocation;
+                                }
                             }
                             #endregion
 
                             #region 瀵绘壘绌鸿揣浣�
-                            var TargetLocations1 = stationinfoRepository.Find(x => x.location_state == LocationStateEnum.Empty.ToString() && x.enable &&  x.area == area1).OrderBy(x => x.line).ThenBy(x => x.column).ToList();
+                            var TargetLocations1 = stationinfoRepository.Find(x => x.location_state == LocationStateEnum.Empty.ToString() && x.enable && x.area == area1).OrderBy(x => x.line).ThenBy(x => x.column).ToList();
                             foreach (var Location in TargetLocations1)
                             {
-                                //if (Location.area == "1")
-                                //{
-                                //    if (stationinfoRepository.Find(x => x.column == Location.column && x.area == Location.area && x.stationType == stationinfo.stationType && x.location_state != LocationStateEnum.OutBusy.ToString()).Any()) return Location;
-                                //}
-                                //else
-                                //{
-                                    if (stationinfoRepository.Find(x => x.line == Location.line && x.area == Location.area && x.stationType == stationinfo.stationType && x.location_state != LocationStateEnum.OutBusy.ToString()).Any()) return Location;
-                                //}
+                                if (stationinfoRepository.Find(x => x.line == Location.line && x.area == Location.area && x.stationType == stationinfo.stationType && x.location_state != LocationStateEnum.OutBusy.ToString()).Any()) return Location;
                             }
-                            //if (TargetLocation != null)
-                            //{
-                            //    if (stationinfoRepository.Find(x => x.line == TargetLocation.line && x.column == 1 && x.stationType == stationinfo.stationType).Any()) return TargetLocation;
-                            //}
                             #endregion
 
 
                         }
                         if (station.area == "1")
                         {
-                            //TargetLocation = stationinfoRepository.Find(x => x.column == station.column && x.location_state == LocationStateEnum.Empty.ToString() && x.enable && x.area == inventory.area).OrderByDescending(x => x.line).FirstOrDefault();
-
                             TargetLocation = stationinfoRepository.Find(x => x.line == station.line && x.location_state == LocationStateEnum.Empty.ToString() && x.enable && x.area == station.area).OrderBy(x => x.column).FirstOrDefault();//鎸夎瀛樻斁
 
                             if (TargetLocation != null)
@@ -140,7 +91,6 @@
                                     return TargetLocation;
                             }
                         }
-                        //if (TargetLocation != null) return TargetLocation;
                     }
                     #endregion
 
@@ -150,8 +100,6 @@
                     {
                         if (TargetLocation.area == "1")
                         {
-                            //TargetLocation = stationinfoRepository.Find(x => x.column == TargetLocation.column && x.location_state == LocationStateEnum.Empty.ToString() && x.enable && x.area == TargetLocation.area).OrderByDescending(x => x.line).FirstOrDefault();
-
                             TargetLocation = stationinfoRepository.Find(x => x.line == TargetLocation.line && x.location_state == LocationStateEnum.Empty.ToString() && x.enable && x.area == TargetLocation.area).OrderBy(x => x.column).FirstOrDefault();//鎸夎瀛樻斁
 
                             if (TargetLocation != null)
@@ -185,15 +133,9 @@
                             if (stationinfoRepository.Find(x => x.line == Location.line && x.area == Location.area && x.stationType == stationinfo.stationType && x.location_state != LocationStateEnum.OutBusy.ToString()).Any()) return Location;
                         }
                     }
-                    //if (TargetLocation != null)
-                    //{
-                    //    if (stationinfoRepository.Find(x => x.line == TargetLocation.line && x.column == 1 && x.stationType == stationinfo.stationType).Any()) return TargetLocation;
-                    //}
                     #endregion
 
                     #region 鏈壘鍒板簱瀛樻垨褰撳墠搴撳瓨琛屽凡婊�,瀵绘壘鏂扮殑涓�琛�
-                    //var area1 = string.IsNullOrEmpty(mesinfo.area) ? GetArea(mesinfo.quantity, e) : mesinfo.area;(area == "2" ? 1 : 10)
-                    //var area = string.IsNullOrEmpty(mesinfo.area) ? GetArea(mesinfo.quantity, stationinfo.tray_type) : mesinfo.area;
                     var area = GetArea(mesinfo.quantity, stationinfo.tray_type);
                     TargetLocation = stationinfoRepository.Find(x => x.column == 1 && x.area == area && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderBy(x => x.line).ThenBy(x => x.column).FirstOrDefault();
                     if (TargetLocation == null && area != "4")
@@ -297,12 +239,10 @@
                                     return TargetLocation;
                             }
                         }
-                        //if (TargetLocation != null) return TargetLocation;
                     }
                     #endregion
 
                     #region 鏈壘鍒板簱瀛樻垨褰撳墠搴撳瓨琛屽凡婊�,瀵绘壘鏂扮殑涓�琛�
-                    //var area1 = string.IsNullOrEmpty(mesinfo.area) ? GetArea(mesinfo.quantity, e) : mesinfo.area;
                     var area = string.IsNullOrEmpty(mesinfo.area) ? GetArea(mesinfo.quantity, stationinfo.tray_type) : mesinfo.area;
                     TargetLocation = stationinfoRepository.Find(x => x.column == (area == "2" ? 1 : 10) && x.area == area && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderBy(x => x.line).ThenBy(x => x.column).FirstOrDefault();
                     if (TargetLocation == null)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/DBExtension.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/DBExtension.cs"
index bec587e..6da6b16 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/DBExtension.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/DBExtension.cs"
@@ -2,6 +2,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Runtime.CompilerServices;
 using System.Text;
 using System.Threading.Tasks;
 using WIDESEA_Entity.DomainModels;
@@ -65,15 +66,51 @@
         /// <param name="client"></param>
         /// <param name="value"></param>
         /// <returns></returns>
-        public static object Write(dt_plcinfodetail detail, PLCClient client, object value)
+        public static object Read(DBItemGroup itemGroup, PLCClient client)
         {
-            try
+            //PLCClient client = PLCClient.Clients.Where(x => x.PLCName == itemGroup.name).FirstOrDefault();
+            if (client == null)
             {
-                return (client.Write(detail.plcdetail_db + "." + detail.plcdetail_value, value));
+                throw new Exception($"鏈壘鍒皗itemGroup.name}杩炴帴瀵硅薄");
             }
-            catch (Exception ex)
+            else
             {
-                throw;
+                if (itemGroup.dataType == typeof(int).Name.ToLower())//4瀛楄妭,鏈夌鍙风被鍨�
+                {
+                    return (client.Read<int>(itemGroup.dbAddress));
+                }
+                else if (itemGroup.dataType == typeof(uint).Name.ToLower())//4瀛楄妭,鏃犵鍙风被鍨�
+                {
+                    return (client.Read<uint>(itemGroup.dbAddress));
+                }
+                else if (itemGroup.dataType == typeof(short).Name.ToLower())//2瀛楄妭,鏈夌鍙风被鍨�,鏈�甯哥敤
+                {
+                    return (client.Read<short>(itemGroup.dbAddress));
+                }
+                else if (itemGroup.dataType == typeof(ushort).Name.ToLower())//2瀛楄妭,鏃犵鍙风被鍨�
+                {
+                    return (client.Read<ushort>(itemGroup.dbAddress));
+                }
+                else if (itemGroup.dataType == typeof(float).Name.ToLower())//娴偣鍨�
+                {
+                    return (client.Read<float>(itemGroup.dbAddress));
+                }
+                else if (itemGroup.dataType == typeof(bool).Name.ToLower())
+                {
+                    return (client.Read<bool>(itemGroup.dbAddress));
+                }
+                else if (itemGroup.dataType == typeof(byte).Name.ToLower())//瀛楄妭
+                {
+                    return (client.Read<byte>(itemGroup.dbAddress));
+                }
+                else if (itemGroup.dataType == typeof(string).Name.ToLower())//瀛楃涓�
+                {
+                    return (client.Read<string>(itemGroup.dbAddress, itemGroup.dataLen.GetValueOrDefault()));
+                }
+                else
+                {
+                    throw new Exception($"銆恵itemGroup.name}銆�,DB鍦板潃{itemGroup.dbAddress},鏈畾涔夋暟鎹被鍨媨itemGroup.dataType}");
+                }
             }
         }
     }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/appsettings.json" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/appsettings.json"
index 2acacfb..7899d68 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/appsettings.json"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/appsettings.json"
@@ -16,7 +16,7 @@
   "Connection": {
     "DBType": "MsSql", //MySql/MsSql/PgSql  //鏁版嵁搴撶被鍨嬶紝濡傛灉浣跨敤鐨勬槸sqlserver姝ゅ搴旇缃负MsSql
     //sqlserver杩炴帴瀛楃涓睵@ssw0rd
-    "DbConnectionString": "Data Source=192.168.12.101;Initial Catalog=WIDESEA_DB;Persist Security Info=True;User ID=sa;Password=123456;Connect Timeout=500;",
+    "DbConnectionString": "Data Source=.;Initial Catalog=WIDESEA_DB;Persist Security Info=True;User ID=sa;Password=P@ssw0rd;Connect Timeout=500;",
 
     //mysql杩炴帴瀛楃涓�(鍗囩骇EFCore3.1鍒版椂宸插皢mysql杩炴帴瀛楃涓蹭慨鏀�,2019-12-20)
     // "DbConnectionString": " Data Source=127.0.0.1;Database=netcoredev;AllowLoadLocalInfile=true;User ID=root;Password=123456;allowPublicKeyRetrieval=true;pooling=true;CharSet=utf8;port=3306;sslmode=none;",

--
Gitblit v1.9.3