Administrator %!s(int64=3) %!d(string=hai) anos
pai
achega
243648943c

+ 3 - 3
Projects/永冠OPP/WCS.Service/WCSDB.cs

@@ -30,9 +30,9 @@ namespace WCS.Service
 
         protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
         {
-            var loggerFactory = new LoggerFactory();
-            loggerFactory.AddProvider(new EFLoggerProvider());
-            optionsBuilder.UseSqlServer(AppSettings.Config.GetConnectionString("WCSDB")).UseLoggerFactory(loggerFactory).EnableSensitiveDataLogging();
+            //var loggerFactory = new LoggerFactory();
+            //loggerFactory.AddProvider(new EFLoggerProvider());
+            optionsBuilder.UseSqlServer(AppSettings.Config.GetConnectionString("WCSDB"))/*.UseLoggerFactory(loggerFactory)*/.EnableSensitiveDataLogging();
             //optionsBuilder.UseLoggerFactory(LoggerFactory.Create(builder =>
             //{
             //    builder.AddFilter((category, level) => category == DbLoggerCategory.Database.Command.Name && level == LogLevel.Information).AddConsole();

+ 34 - 17
Projects/永冠OPP/WCS.Service/Works/RGV/RGVWorks.cs

@@ -149,26 +149,43 @@ namespace WCS.Service.Works.RGV
                             });
                             return;
                         }
+
+                        //找到自己的后一个小车
+                        var afterStation = obj.After();
+                        //后面的小车是否在执行任务
+                        if (afterStation.Data2.WorkMode == RGVMode.自动 && afterStation.Data2.SystemStatus == RGVRunStatus.空闲) return;
+                        //自己是否阻挡了该小车
+                        if (obj.StopedByMe(afterStation))
+                        {
+                            //取小车的目标位置值
+                            var destStation = Device.Find($"G{afterStation.Data2.DestPosition_1}").Create<StationDeviceGroup>();
+                            //取被挡住小车的目标位置的下一个取货点
+                            var beforeSickStation = Device.Where(v => v.Is(DF.涂布RGV取货设备组) && v.CODE != destStation.Entity.CODE)
+                                          .Select(v => v.Create<StationDeviceGroup>())
+                                          .OrderBy(v => destStation.Distance(v))
+                                          .FirstOrDefault();
+
+                            if (beforeSickStation.Entity.CODE == pickStation.Entity.CODE)
+                            {
+                                //取被挡住小车的目标位置的下一个取货点
+                                beforeSickStation = Device.Where(v => v.Is(DF.涂布RGV取货设备组) && v.CODE != beforeSickStation.Entity.CODE)
+                                             .Select(v => v.Create<StationDeviceGroup>())
+                                             .OrderBy(v => beforeSickStation.Distance(v))
+                                             .FirstOrDefault();
+                            }
+
+                            //写入移动任务
+                            obj.Move(beforeSickStation);
+                            return;
+                        }
                     }
 
-                    //找到自己的后一个小车
-                    var afterStation = obj.After();
-                    //后面的小车是否在执行任务
-                    if (afterStation.Data2.WorkMode == RGVMode.自动 && afterStation.Data2.SystemStatus == RGVRunStatus.空闲) return;
-                    //自己是否阻挡了该小车
-                    if (obj.StopedByMe(afterStation))
+                    //是否在一个放货站台
+                    if (pickStation.Entity.Is(DF.涂布RGV放货设备组))
                     {
-                        //取小车的目标位置值
-                        var destStation = Device.Find($"G{afterStation.Data2.DestPosition_1}").Create<StationDeviceGroup>();
-                        //取被挡住小车的目标位置的下一个取货点
-                        var beforeSickStation = Device.Where(v => v.Is(DF.涂布RGV取货设备组) && v.CODE != destStation.Entity.CODE)
-                                      .Select(v => v.Create<StationDeviceGroup>())
-                                      .OrderBy(v => destStation.Distance(v))
-                                      .FirstOrDefault();
-
-                        //写入移动任务
-                        obj.Move(beforeSickStation);
-                        return;
+                        if (obj.RGVList.Any(v => v.Data2.SystemStatus != RGVRunStatus.空闲 || v.Data2.WorkMode != RGVMode.自动)) return;
+                        pickStation = obj.BeforeStation();
+                        obj.Move(pickStation);
                     }
                     return;
                 }

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

@@ -274,7 +274,7 @@ namespace WCS.Service.Works.SRM
                             //同时对结果进行排序,分组后取第一组任务
                             var outDepot = waitTask.Where(v =>
                                                     {
-                                                        var max = v.ADDRTO == "G1340" ? 4 : 2;
+                                                        var max = v.ADDRTO == "G1340" ? 4 : 3;
                                                         return db.Default.Set<WCS_TASK>()
                                                            .AsNoTracking()
                                                            .Where(d => d.TYPE == TaskType.出库)