|  | @@ -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);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | +}
 |