Browse Source

Merge branch 'debug' of zuolinhao/YG-OPP-WCS into master

zuolinhao 3 years ago
parent
commit
5b592a901c

+ 1 - 1
OPP WCS.sln

@@ -28,7 +28,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WCS.Service", "Projects\永冠OPP\WCS.Service\WCS.Service.csproj", "{0C1638C8-68C1-4493-A731-186E58CEC4F0}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Logs", "Logs\Logs.csproj", "{31B6E0FC-524C-4B52-9088-6EA4690E6B36}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Logs", "Logs\Logs.csproj", "{31B6E0FC-524C-4B52-9088-6EA4690E6B36}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution

+ 1 - 0
Projects/永冠OPP/WCS.Service/WCS.Service.csproj

@@ -3,6 +3,7 @@
   <PropertyGroup>
     <TargetFramework>net6.0</TargetFramework>
     <UserSecretsId>dotnet-WCS.Service-EBA9AC2B-E82A-472A-97B6-2D33DEFA8D48</UserSecretsId>
+    <StartupObject></StartupObject>
   </PropertyGroup>
 
   <ItemGroup>

+ 36 - 38
Projects/永冠OPP/WCS.Service/Works/SRM/SRMWork.cs

@@ -65,8 +65,6 @@ namespace WCS.Service.Works.SRM
                 if (srmDevice.Data2.SRMMode != SCMode.远程) return;
                 if (srmDevice.Data2.SRMStatus != SCRunStatus.空闲) return;
 
-              
-
                 var isTransfer = new List<WCS_TASK>(); //是否有移库任务
                 WCS_TASK enterPriority = new(), outPriority = new(); //出入库优先级任务
                 //再检查是否有等待执行的货物
@@ -269,38 +267,36 @@ namespace WCS.Service.Works.SRM
                         else if (v.Data2.Status.HasFlag(IstationStatus.光电状态)) res = false;
                         else if (v.Data2.Request == IstationRequest.堆垛机放货完成请求目标地址) res = false;
                         else if (v.Data2.Tasknum > 10000) res = false;
-                        //else if (v.Entity.Is(DF.SRM涂布放货)) //涂布分货,应为电控不会等到RGV取货点无货时,再让货物离开无动力站台,因此需要判断一次旋转台的状态
-                        //{
-                        //    var devise = new List<StationDevice>();
-                        //    switch (v.Entity.CODE)
-                        //    {
-                        //        case "1283" or "1284":
-                        //            devise = Device.Where(b => b.CODE is "1281" or "1282").Select(b => b.Create<StationDevice>()).ToList();
-                        //            break;
-
-                        //        case "1290" or "1291" or "1292" or "1293":
-                        //            devise = Device.Where(b => b.CODE is "1288" or "1289").Select(b => b.Create<StationDevice>()).ToList();
-                        //            break;
-
-                        //        case "1299" or "1300" or "1301" or "1302":
-                        //            devise = Device.Where(b => b.CODE is "1297" or "1298").Select(b => b.Create<StationDevice>()).ToList();
-                        //            break;
-
-                        //        case "1308" or "1309" or "1310" or "1311":
-                        //            devise = Device.Where(b => b.CODE is "1306" or "1307").Select(b => b.Create<StationDevice>()).ToList();
-                        //            break;
-                        //    }
-
-                        //    if (!devise.Any()) return res;
-                        //    foreach (var stationDevice in devise)
-                        //    {
-                        //        //放货点是否有货
-                        //        if (stationDevice.Data3.Status.HasFlag(StationStatus.运行状态位)) res = false;
-                        //        else if (stationDevice.Data2.Status.HasFlag(IstationStatus.光电状态)) res = false;
-                        //        else if (stationDevice.Data2.Request == IstationRequest.堆垛机放货完成请求目标地址) res = false;
-                        //        else if (stationDevice.Data2.Tasknum > 10000) res = false;
-                        //    }
-                        //}
+                        if (!v.Entity.Is(DF.SRM涂布放货)) return res;
+                        var devise = new List<StationDevice>();
+                        switch (v.Entity.CODE)
+                        {
+                            case "1283" or "1284":
+                                devise = Device.Where(b => b.CODE is "1281" or "1282").Select(b => b.Create<StationDevice>()).ToList();
+                                break;
+
+                            case "1290" or "1291" or "1292" or "1293":
+                                devise = Device.Where(b => b.CODE is "1288" or "1289").Select(b => b.Create<StationDevice>()).ToList();
+                                break;
+
+                            case "1299" or "1300" or "1301" or "1302":
+                                devise = Device.Where(b => b.CODE is "1297" or "1298").Select(b => b.Create<StationDevice>()).ToList();
+                                break;
+
+                            case "1308" or "1309" or "1310" or "1311":
+                                devise = Device.Where(b => b.CODE is "1306" or "1307").Select(b => b.Create<StationDevice>()).ToList();
+                                break;
+                        }
+
+                        if (!devise.Any()) return res;
+                        foreach (var stationDevice in devise)
+                        {
+                            //放货点是否有货
+                            if (stationDevice.Data3.Status.HasFlag(StationStatus.运行状态位)) res = false;
+                            else if (stationDevice.Data2.Status.HasFlag(IstationStatus.光电状态)) res = false;
+                            else if (stationDevice.Data2.Request == IstationRequest.堆垛机放货完成请求目标地址) res = false;
+                            else if (stationDevice.Data2.Tasknum > 10000) res = false;
+                        }
 
                         return res;
                     }).ToList();
@@ -338,15 +334,17 @@ namespace WCS.Service.Works.SRM
                                                                   .Where(d => d.TYPE == TaskType.出库)
                                                                   .Where(d => d.STATUS > TaskStatus.新建)
                                                                   .Where(d => d.STATUS < TaskStatus.已完成).ToList();
-                        var outDepotList = waitTask.Where(v => cTaskList.Where(d => d.ADDRTO == v.ADDRTO && d.FLOOR == v.FLOOR).GroupBy(d => d.TaskGroupKey).Count() < maximum)
+                        var outDepotGrouping = waitTask.Where(v => cTaskList.Where(d => d.ADDRTO == v.ADDRTO && d.FLOOR == v.FLOOR).GroupBy(d => d.TaskGroupKey).Count() < maximum)
                                                    .OrderByDescending(v => v.Priority)
                                                    .ThenBy(v => v.ADDRTO == "G1340" ? 0 : 1)
                                                    .ThenBy(v => v.FLOOR == floor ? 0 : 1)
                                                    .ThenBy(v => cTaskList.Where(d => d.ADDRTO == v.ADDRTO && d.FLOOR == v.FLOOR).GroupBy(d => d.TaskGroupKey).Count())
                                                    .ThenBy(v => v.CREATETIME)
                                                    .GroupBy(v => v.ADDRTO)
-                                                   .FirstOrDefault(v => !priorityADDRTO.Contains(v.Key))!
-                                                   .Select(v => v).ToList();
+                                                   .FirstOrDefault(v => !priorityADDRTO.Contains(v.Key));
+                        if (outDepotGrouping == null) return; //用于解决Linq  Value cannot be null. (Parameter 'source')
+
+                        var outDepotList = outDepotGrouping.Select(v => v).ToList();
 
                         //获取两个个可执行任务,此时这两个任务的目标地址是一致的
                         var tasks = outDepotList.GetOutTask();
@@ -446,4 +444,4 @@ namespace WCS.Service.Works.SRM
             return dev.Is(DF.SRM);
         }
     }
-}
+}