From 874ceff175a7308da045943fb7def1f6c6560a51 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期二, 26 三月 2024 11:31:08 +0800
Subject: [PATCH] 优化NG任务触发逻辑

---
 /dev/null                                                                  |   42 ------
 代码管理/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/新文件夹/OutboundTask_a.cs     |  137 +++++++++---------
 代码管理/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs              |    3 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/StationTask.cs             |   30 ----
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs                   |    3 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs                           |   99 ++++++++-----
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/VV_DispatchService.cs |    2 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/新文件夹/RestockHCJ_a.cs       |   80 +++++++++++
 8 files changed, 216 insertions(+), 180 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 d0c8b7a..f78df0c 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"
@@ -3,6 +3,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Security.Cryptography.Xml;
 using System.Text;
 using System.Threading.Tasks;
 using System.Xml.Linq;
@@ -407,7 +408,7 @@
                                 WriteDBLog.Error(name, $"璇诲彇妗佹灦淇℃伅锛歕n杞﹁疆SN鍙蜂负绌�", "PCS");
                                 continue;
                             }
-                            
+
                             //var Wheel_id = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_Wheel_id").First(), client).ToString();
 
                             var Detail = mes_DetailRepository.FindFirst(x => x.SN == Wheel_SN);
@@ -418,7 +419,7 @@
                                 #endregion
                                 continue;
                             }
-                            var Head = mes_HeadRepository.FindFirst(x => x.jobID == Detail.jobID);
+                            var Head = mes_HeadRepository.FindFirst(x => x.jobID == Detail.jobID && x.processCode == "17");
                             if (Head == null)
                             {
                                 #region 鏃ュ織璁板綍
@@ -600,23 +601,34 @@
                             if (Stationinfo == null)
                             {
                                 #region 涓嬫枡浣嶆潯浠朵笉鍖归厤鐩存帴瑙﹀彂鍏ュ簱浠诲姟
-                                var stationinfos = Stations.Where(x => x.enable && x.stationCode != NGStation && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).ToList();
-                                foreach (var stationinfo in stationinfos)
+                                //var stationinfos = Stations.Where(x => x.enable && x.stationCode != NGStation && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).ToList();
+                                //foreach (var stationinfo in stationinfos)
+                                //{
+                                //    agvtask(stationinfoRepository, stationinfo, (wheel == null ? wheel1.e : wheel.e), name == "3鍗曞厓涓嬫枡鍖�" ? "TaskType_OutsourceInbound" : "TaskType_Inbound");
+                                //}
+                                #endregion
+
+
+                                #region 瑙﹀彂NG浠诲姟
+                                var NG = Stations.Where(x => x.enable && x.stationCode == NGStation && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).FirstOrDefault();
+                                if (NG != null)
                                 {
-                                    agvtask(stationinfoRepository, stationinfo, (wheel == null ? wheel1.e : wheel.e), name == "3鍗曞厓涓嬫枡鍖�" ? "TaskType_OutsourceInbound" : "TaskType_Inbound");
+                                    if (NG.stationType != mes_Head.drawingNo)
+                                        agvtask(stationinfoRepository, NG, (wheel == null ? wheel1.e : wheel.e), "TaskType_OutsourceInbound");
                                 }
                                 #endregion
 
                                 Stationinfo = Stations.Where(x => x.enable && x.stationCode != NGStation && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity == 0).FirstOrDefault();
+
                                 #region 娌℃墭鐩樺彲鐢�,瑙﹀彂鍏ュ簱浠诲姟
-                                //if (Stationinfo == null)
-                                //{
-                                //    var stationinfos = Stations.Where(x => x.enable && x.stationCode != NGStation && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).ToList();
-                                //    foreach (var stationinfo in stationinfos)
-                                //    {
-                                //        agvtask(stationinfoRepository, stationinfo, (wheel == null ? wheel1.e : wheel.e), name == "3鍗曞厓涓嬫枡鍖�" ? "TaskType_OutsourceInbound" : "TaskType_Inbound");
-                                //    }
-                                //}
+                                if (Stationinfo == null)
+                                {
+                                    var stationinfos = Stations.Where(x => x.enable && x.stationCode != NGStation && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).ToList();
+                                    foreach (var stationinfo in stationinfos)
+                                    {
+                                        agvtask(stationinfoRepository, stationinfo, (wheel == null ? wheel1.e : wheel.e), name == "3鍗曞厓涓嬫枡鍖�" ? "TaskType_OutsourceInbound" : "TaskType_Inbound");
+                                    }
+                                }
                                 #endregion
 
                                 #region MyRegion
@@ -695,29 +707,31 @@
                         else if ((Int16)PartStatus == 2)
                         {
                             dt_stationinfo Stationinfo = null;
-                            if (mes_Detail.heatID != null)
-                            {
-                                Stationinfo = Stations
-                            .Where(x => x.enable
-                            && x.stationCode == NGStation
-                            && x.location_state == LocationStateEnum.Stroge.ToString()
-                            && x.quantity < 5
-                            && x.stationType == mes_Head.drawingNo
-                            && x.tray_type == ((wheel == null ? wheel1.e : wheel.e) < 1100 ? "SmallTray" : "LargeTray")
-                            && x.Number == mes_Detail.jobID
-                            && x.heatNumber == mes_Detail.heatID).FirstOrDefault();
-                            }
-                            else
-                            {
-                                Stationinfo = Stations
-                            .Where(x => x.enable
-                            && x.stationCode == NGStation
-                            && x.location_state == LocationStateEnum.Stroge.ToString()
-                            && x.quantity < 5
-                            && x.stationType == mes_Head.drawingNo
-                            && x.tray_type == ((wheel == null ? wheel1.e : wheel.e) < 1100 ? "SmallTray" : "LargeTray")
-                            && x.Number == mes_Detail.jobID).FirstOrDefault();
-                            }
+                            //if (mes_Detail.heatID != null)
+                            //{
+                            //    Stationinfo = Stations
+                            //.Where(x => x.enable
+                            //&& x.stationCode == NGStation
+                            //&& x.location_state == LocationStateEnum.Stroge.ToString()
+                            //&& x.quantity < 5
+                            //&& x.stationType == mes_Head.drawingNo
+                            //&& x.tray_type == ((wheel == null ? wheel1.e : wheel.e) < 1100 ? "SmallTray" : "LargeTray")
+                            //&& x.Number == mes_Detail.jobID
+                            //&& x.heatNumber == mes_Detail.heatID).FirstOrDefault();
+                            //}
+                            //else
+                            //{
+                            //var tray_type = "SmallTray";
+                            //if ((wheel == null ? wheel1.e : wheel.e) > 1100) tray_type = "LargeTray";
+                            Stationinfo = Stations
+                        .Where(x => x.enable
+                        && x.stationCode == NGStation
+                        && x.location_state == LocationStateEnum.Stroge.ToString()
+                        && x.quantity < 5
+                        && x.stationType == mes_Head.drawingNo
+                        && x.tray_type == ((wheel == null ? wheel1.e : wheel.e) < 1100 ? "SmallTray" : "LargeTray")
+                        /*&& x.Number == mes_Detail.jobID*/).FirstOrDefault();
+                            //}
 
                             if (Stationinfo == null)
                             {
@@ -864,10 +878,19 @@
 
             var task = agvtaskRepository.Find(x => x.agv_fromaddress == stationinfo.stationCode).FirstOrDefault();
             if (task != null) return;
-            var mes_Head = mes_HeadRepository.FindFirst(x => x.jobID == stationinfo.Number);
+            var mes_Head = mes_HeadRepository.Find(x => x.jobID == stationinfo.Number).FirstOrDefault();
+            if (mes_Head == null)
+            {
+                stationinfo.remark = "瑙﹀彂鍏ュ簱浠诲姟,浣嗘湭鎵惧埌宸ュ崟澶磋〃锛�";
+                stationinfo.location_state = LocationStateEnum.Abnormal.ToString();
+                stationinfoRepository.Update(stationinfo, true);
+                return;
+            }
 
             dt_stationinfo TargetLocation = null;
             int CompeletedNum = Convert.ToInt32(mes_Head.quantity) - Convert.ToInt32(mes_Head.finishNum);
+            if (mes_Head.quantity <= 50) tasktype = "TaskType_OutsourceInbound";
+
             if (tasktype == "TaskType_OutsourceInbound")
                 TargetLocation = StationTask.GetEmptyLocation(stationinfoRepository);
             else if (tasktype == "TaskType_Inbound")
@@ -895,7 +918,7 @@
                     agv_TrayStatus = stationinfo.tray_status
                 };
                 agvtaskRepository.Add(agvtask, true);
-                stationinfo.location_state = LocationStateEnum.Busy.ToString();
+                stationinfo.location_state = LocationStateEnum.InBusy.ToString();
                 stationinfoRepository.Update(stationinfo, true);
                 TargetLocation.location_state = LocationStateEnum.InBusy.ToString();
                 TargetLocation.stationType = agvtask.agv_materielid;
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 2fbcfb5..27aa48e 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"
@@ -36,7 +36,8 @@
             //EmptyTrayTask.InEmptyTrayTask();搴撳唴绌烘墭浠诲姟
 
             StationTask.CreateTask();
-            OutboundTask.CreateOutboundTask();
+            //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/Task/AutoTaskJob_a.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob_a.cs"
deleted file mode 100644
index 940a55b..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob_a.cs"
+++ /dev/null
@@ -1,42 +0,0 @@
-锘縰sing Quartz;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_WCS.Jobs;
-using WIDESEA_WCS.JobsPart.Common;
-using WIDESEA_WCS.JobsPart.Common.鏂版枃浠跺す;
-using WIDESEA_WCS.WCSClient;
-using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
-
-namespace WIDESEA_WCS
-{
-    [DisallowConcurrentExecution]
-    public class AutoTaskJob_a : JobBase, IJob
-    {
-        /// <summary>
-        /// 鑷姩浠诲姟
-        /// </summary>
-        Createplcinfodetail Creation = new Createplcinfodetail();
-        public Task Execute(IJobExecutionContext context)
-        {
-            try
-            {
-                ExecuteJob(context, DoAction);
-            }
-            catch { }
-            return Task.CompletedTask;
-        }
-
-        private void DoAction(IJobExecutionContext context)
-        {
-            StationTask.CreateTask();
-            OutboundTask_a.CreateOutboundTask();
-            ReplaceTray.ReplaceTrayTask();
-            RestockHCJ.HCJGetBarcode();
-            EmptyTrayTask.CreateEmptyTrayTask();
-            AutoUpdateWork.FinishMesWork();
-        }
-    }
-}
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 98b94fe..14b31a9 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"
@@ -43,7 +43,7 @@
                             var area = task.agv_Traytype == "SmallTray" ? "11" : "10";
                             //鎵�1搴撳尯鐨勭┖鎵樹綅
                             var EmptyStation = stationinfoRepository.Find(x => x.area == area && x.quantity > 0 && x.stationCode.Contains("A") && x.location_state == "Stroge"/*LocationStateEnum.Stroge.ToString()*/ && x.enable)
-                                .OrderBy(x => x.line).OrderByDescending(x => x.column).FirstOrDefault();
+                                .OrderBy(x => x.column).OrderBy(x => x.line).FirstOrDefault();
 
                             #region 涓�涓尯鍩熷彧鑳芥湁涓�涓┖鎵樹换鍔�
                             //bool ok = false;
@@ -55,6 +55,7 @@
                             #endregion
                             if (EmptyStation == null)
                                 EmptyStation = stationinfoRepository.Find(x => x.area == area && x.quantity > 0 && x.stationCode.Contains(area == "10" ? "D" : "C") && x.enable).OrderByDescending(x => x.column).FirstOrDefault();
+                            if (EmptyStation == null) continue;
                             #region 搴撳唴瀛樺湪浠诲姟鍗犵敤
                             if (EmptyStation.location_state == LocationStateEnum.Busy.ToString())
                                 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 188a1ef..ef73816 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"
@@ -79,36 +79,6 @@
                             //todo 瀵绘壘鍙斁璐у鍗忔斁璐у彴
                             tasktype = "TaskType_OutsourceInbound";
                             TargetLocation = GetEmptyLocation(stationinfoRepository);
-                            #region MyRegion
-                            //if (TargetLocation != null)
-                            //{
-                            //    dt_agvtask agvtask = new dt_agvtask()
-                            //    {
-                            //        agv_fromaddress = item.stationCode,
-                            //        agv_id = Guid.NewGuid(),
-                            //        agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
-                            //        agv_grade = 1,
-                            //        agv_createtime = DateTime.Now,
-                            //        agv_taskstate = "Create",
-                            //        agv_materielid = item.stationType,
-                            //        agv_qty = item.quantity,
-                            //        agv_tasktype = "TaskType_OutsourceInbound",
-                            //        agv_toaddress = TargetLocation.stationCode,
-                            //        agv_userid = "绯荤粺",
-                            //        bindSN = item.bindSN,
-                            //        agv_worktype = Convert.ToInt32(mesinfo.processCode),
-                            //        agv_materbarcode = mesinfo.materialCode,
-                            //        agv_Traytype = item.tray_type,
-                            //        jobID = item.Number,
-                            //        agv_TrayStatus = item.tray_status
-                            //    };
-
-                            //    agvtaskRepository.Add(agvtask, true);
-                            //    TargetLocation.location_state = LocationStateEnum.Busy.ToString();
-                            //    TargetLocation.stationType = agvtask.agv_materielid;
-                            //    stationinfoRepository.Update(TargetLocation, true);
-                            //}
-                            #endregion
 
                         }
                         else
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/OutboundTask_a.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/OutboundTask_a.cs"
index bb62e0d..fefec01 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/OutboundTask_a.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/OutboundTask_a.cs"
@@ -17,7 +17,7 @@
 using static FreeSql.Internal.GlobalFilter;
 using static System.Collections.Specialized.BitVector32;
 
-namespace WIDESEA_WCS.JobsPart.Common.鏂版枃浠跺す
+namespace WIDESEA_WCS.JobsPart.Common
 {
     public class OutboundTask_a
     {
@@ -35,7 +35,7 @@
                 Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context);
                 Idt_agvtaskRepository agvtaskRepository = new dt_agvtaskRepository(context);
 
-                var mes_heads = mes_HeadRepository.Find(x => x.processCode == "28").OrderBy(x => x.expectedStartTime).ToList();
+                var mes_heads = mes_HeadRepository.Find(x => x.processCode == "28").OrderByDescending(x => x.CreateTime).ToList();
                 foreach (var mes_head in mes_heads)
                 {
                     #region 鏍规嵁宸ュ崟瀛愯〃鏌ユ壘搴撳瓨
@@ -48,9 +48,12 @@
                             var Station = stationinfoRepository.Find(x => x.stationCode == inventory.stationCode).FirstOrDefault();
                             if (Station != null)
                             {
-                                var stationinfos = stationinfoRepository.Find(x => x.line == Station.line && x.area == Station.area && x.quantity > 0 && x.enable && x.location_state == LocationStateEnum.Stroge.ToString()).OrderByDescending(x => x.column).ToList();
-                                foreach (var stationinfo in stationinfos)
+                                var stationinfo = stationinfoRepository.Find(x => x.line == Station.line && x.area == Station.area && x.enable && x.quantity > 0).OrderByDescending(x => x.column).FirstOrDefault();
+
+                                if (stationinfo != null)
                                 {
+                                    if (stationinfo.location_state == LocationStateEnum.OutBusy.ToString() || stationinfo.location_state != LocationStateEnum.Stroge.ToString()) continue;
+
                                     if (string.IsNullOrEmpty(stationinfo.bindSN))
                                     {
                                         stationinfo.remark = "杞﹁疆SN鍙蜂俊鎭紓甯�";
@@ -68,75 +71,73 @@
                                     }
 
                                     #region 璐т綅杞﹁疆鍏ㄩ儴鍖呭惈鍦ㄥ伐鍗曞唴鍒欎笅鍙戜换鍔�
-                                    bool OK = false;
+                                    //bool OK = false;
                                     foreach (var SN in lists)
                                     {
-                                        OK = mes_DetailRepository.Find(x => x.jobID == mes_head.jobID && x.SN == SN).Any();
-                                    }
-                                    if (OK)
-                                    {
-                                        dt_agvtask agvtask = new dt_agvtask()
-                                        {
-                                            agv_fromaddress = stationinfo.stationCode,
-                                            agv_id = Guid.NewGuid(),
-                                            agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
-                                            agv_grade = 1,
-                                            agv_createtime = DateTime.Now,
-                                            agv_taskstate = "Queue",
-                                            agv_materielid = stationinfo.stationType,
-                                            agv_qty = stationinfo.quantity,
-                                            agv_tasktype = "TaskType_Outbound",
-                                            agv_toaddress = "",
-                                            agv_userid = "绯荤粺",
-                                            bindSN = stationinfo.bindSN,
-                                            jobID = mes_head.jobID,
-                                            agv_worktype = Convert.ToInt32(mes_head.processCode),
-                                            agv_materbarcode = mes_head.materialCode,
-                                            agv_Traytype = stationinfo.tray_type,
-                                            agv_TrayStatus = stationinfo.tray_status
-                                        };
-                                        stationinfo.location_state = LocationStateEnum.OutBusy.ToString();
-                                        stationinfoRepository.Update(stationinfo, true);
-                                        agvtaskRepository.Add(agvtask, true);
-                                        WriteDBLog.Success("鍒涘缓鍑哄簱浠诲姟", $"浠诲姟缂栧彿锛歿agvtask.agv_tasknum}", "PCS");
-                                        continue;
-                                    }
-                                    #endregion
+                                        if (!mes_DetailRepository.Find(x => x.jobID == mes_head.jobID && x.SN.Contains(SN)).Any()) return;
 
-                                    #region 璐т綅杞﹁疆鏈変竴涓寘鍚湪宸ュ崟鍐呭垯涓嬪彂浠诲姟
-                                    //foreach (var SN in lists)
-                                    //{
-                                    //    if (mes_DetailRepository.Find(x => x.jobID == mes_head.jobID && x.SN == SN).Any())
-                                    //    {
-                                    //        dt_agvtask agvtask = new dt_agvtask()
-                                    //        {
-                                    //            agv_fromaddress = stationinfo.stationCode,
-                                    //            agv_id = Guid.NewGuid(),
-                                    //            agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
-                                    //            agv_grade = 2,
-                                    //            agv_createtime = DateTime.Now,
-                                    //            agv_taskstate = "Queue",
-                                    //            agv_materielid = stationinfo.stationType,
-                                    //            agv_qty = stationinfo.quantity,
-                                    //            agv_tasktype = "TaskType_Outbound",
-                                    //            agv_toaddress = "",
-                                    //            agv_userid = "绯荤粺",
-                                    //            bindSN = stationinfo.bindSN,
-                                    //            jobID = mes_head.jobID,
-                                    //            agv_worktype = Convert.ToInt32(mes_head.processCode),
-                                    //            agv_materbarcode = mes_head.materialCode,
-                                    //            agv_Traytype = stationinfo.tray_type,
-                                    //            agv_TrayStatus = stationinfo.tray_status
-                                    //        };
-                                    //        stationinfo.location_state = LocationStateEnum.OutBusy.ToString();
-                                    //        stationinfoRepository.Update(stationinfo, true);
-                                    //        agvtaskRepository.Add(agvtask, true);
-                                    //        WriteDBLog.Success("鍒涘缓鍑哄簱浠诲姟", $"浠诲姟缂栧彿锛歿agvtask.agv_tasknum}", "PCS");
-                                    //        continue;
-                                    //    }
-                                    //}
+                                    }
+                                    dt_agvtask agvtask = new dt_agvtask()
+                                    {
+                                        agv_fromaddress = stationinfo.stationCode,
+                                        agv_id = Guid.NewGuid(),
+                                        agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
+                                        agv_grade = 1,
+                                        agv_createtime = DateTime.Now,
+                                        agv_taskstate = "Queue",
+                                        agv_materielid = stationinfo.stationType,
+                                        agv_qty = stationinfo.quantity,
+                                        agv_tasktype = "TaskType_Outbound",
+                                        agv_toaddress = "",
+                                        agv_userid = "绯荤粺",
+                                        bindSN = stationinfo.bindSN,
+                                        jobID = mes_head.jobID,
+                                        agv_worktype = Convert.ToInt32(mes_head.processCode),
+                                        agv_materbarcode = mes_head.materialCode,
+                                        agv_Traytype = stationinfo.tray_type,
+                                        agv_TrayStatus = stationinfo.tray_status
+                                    };
+                                    stationinfo.location_state = LocationStateEnum.OutBusy.ToString();
+                                    stationinfoRepository.Update(stationinfo, true);
+                                    agvtaskRepository.Add(agvtask, true);
+                                    WriteDBLog.Success("鍒涘缓鍑哄簱浠诲姟", $"浠诲姟缂栧彿锛歿agvtask.agv_tasknum}", "PCS");
+                                    continue;
                                     #endregion
                                 }
+
+                                #region 璐т綅杞﹁疆鏈変竴涓寘鍚湪宸ュ崟鍐呭垯涓嬪彂浠诲姟
+                                //foreach (var SN in lists)
+                                //{
+                                //    if (mes_DetailRepository.Find(x => x.jobID == mes_head.jobID && x.SN == SN).Any())
+                                //    {
+                                //        dt_agvtask agvtask = new dt_agvtask()
+                                //        {
+                                //            agv_fromaddress = stationinfo.stationCode,
+                                //            agv_id = Guid.NewGuid(),
+                                //            agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
+                                //            agv_grade = 2,
+                                //            agv_createtime = DateTime.Now,
+                                //            agv_taskstate = "Queue",
+                                //            agv_materielid = stationinfo.stationType,
+                                //            agv_qty = stationinfo.quantity,
+                                //            agv_tasktype = "TaskType_Outbound",
+                                //            agv_toaddress = "",
+                                //            agv_userid = "绯荤粺",
+                                //            bindSN = stationinfo.bindSN,
+                                //            jobID = mes_head.jobID,
+                                //            agv_worktype = Convert.ToInt32(mes_head.processCode),
+                                //            agv_materbarcode = mes_head.materialCode,
+                                //            agv_Traytype = stationinfo.tray_type,
+                                //            agv_TrayStatus = stationinfo.tray_status
+                                //        };
+                                //        stationinfo.location_state = LocationStateEnum.OutBusy.ToString();
+                                //        stationinfoRepository.Update(stationinfo, true);
+                                //        agvtaskRepository.Add(agvtask, true);
+                                //        WriteDBLog.Success("鍒涘缓鍑哄簱浠诲姟", $"浠诲姟缂栧彿锛歿agvtask.agv_tasknum}", "PCS");
+                                //        continue;
+                                //    }
+                                //}
+                                #endregion
                             }
                         }
                     }
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/RestockHCJ_a.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/RestockHCJ_a.cs"
new file mode 100644
index 0000000..ff9cd71
--- /dev/null
+++ "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/RestockHCJ_a.cs"
@@ -0,0 +1,80 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+using WIDESEA_Comm;
+using WIDESEA_Comm.LogInfo;
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Core.EFDbContext;
+using WIDESEA_Entity.DomainModels;
+using WIDESEA_WCS.IRepositories;
+using WIDESEA_WCS.Repositories;
+using WIDESEA_WCS.WCSClient;
+using WIDESEA_WMS.IRepositories;
+using WIDESEA_WMS.IServices;
+using WIDESEA_WMS.Repositories;
+
+namespace WIDESEA_WCS.JobsPart.Common
+{
+    public class RestockHCJ_a
+    {
+        /// <summary>
+        /// 鏇存柊闃熷垪浠诲姟
+        /// </summary>
+        public static void HCJGetBarcode()
+        {
+            try
+            {
+                VOLContext Context = new VOLContext();
+                Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
+                Idt_agvtaskRepository agvtaskService = new dt_agvtaskRepository(Context);
+                var tasks = agvtaskService.Find(x => x.agv_taskstate == "Queue").OrderBy(x => x.agv_createtime).ToList();
+                foreach (var task in tasks)
+                {
+                    if (task.agv_tasktype == "TaskType_EmptyPallet")//绌烘墭浠诲姟
+                    {
+                        if (task.agv_fromaddress == "")
+                        {
+                            var Pipeline_client = PLCClient.Clients.FirstOrDefault(t => t.PLCName == "閾炬潯鏈�");
+                            if (Pipeline_client == null) throw new Exception("閾炬潯鏈鸿皟搴︽湇鍔℃湭寮�鍚紒");
+                            if (!Pipeline_client.IsConnected) throw new Exception("涓庨摼鏉℃満杩炴帴瓒呮椂锛�");
+                            var area = task.agv_Traytype == "SmallTray" ? "11" : "10";
+
+                            #region 鏌ユ壘涓�搴撳尯鐨勭┖鎵樼洏搴撲綅
+                            var EmptyStation = stationinfoRepository.Find(x => x.area == area && x.quantity > 0 && x.stationCode.Contains("A") && x.enable).OrderBy(x => x.column).OrderBy(x => x.line).FirstOrDefault();
+                            if (EmptyStation == null) return;
+                            if (EmptyStation == null)
+                                EmptyStation = stationinfoRepository.Find(x => x.area == area && x.quantity > 0 && x.stationCode.Contains("A") && x.location_state == LocationStateEnum.Stroge.ToString() && x.enable).OrderBy(x => x.line).OrderBy(x => x.column).FirstOrDefault();
+                            #endregion
+
+                        }
+                    }
+                    else if (task.agv_tasktype == "TaskType_OutsourceOutbound" || task.agv_tasktype == "TaskType_Outbound")//澶栧崗搴撳嚭搴�/AB搴撳嚭搴�
+                    {
+                        if (task.agv_toaddress == "")
+                        {
+                            var EmptyStations = stationinfoRepository.Find(x => x.stationCode.Contains("S01001") && x.location_state == "Empty" && x.enable).ToList();
+                            foreach (var EmptyStation in EmptyStations)
+                            {
+                                if (agvtaskService.Find(x => x.agv_toaddress == EmptyStation.stationCode).Any()) continue;
+                                task.agv_taskstate = "Create";
+                                task.agv_toaddress = EmptyStation.stationCode;
+                                EmptyStation.location_state = LocationStateEnum.Busy.ToString();
+                                stationinfoRepository.Update(EmptyStation, true);
+                                agvtaskService.Update(task, true);
+                                WriteDBLog.Success("鏇存柊鍑哄簱闃熷垪浠诲姟", $"浠诲姟缂栧彿锛歿task.agv_tasknum}", "PCS");
+                                return;
+                            }
+                        }
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                WriteDBLog.Error("鏇存柊闃熷垪浠诲姟", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
+            }
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/VV_DispatchService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/VV_DispatchService.cs"
index 9bc063c..0cc4927 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/VV_DispatchService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/VV_DispatchService.cs"
@@ -63,6 +63,8 @@
             {
                 if (!scheduler.IsRun())
                 {
+                    WIDESEA.Helper.GetToken();
+
                     var cooRes = CoonPLC();
                     var startRes = SrartScheduler();
                     if (startRes.Status)

--
Gitblit v1.9.3