|  | @@ -122,13 +122,12 @@ namespace WCS.Service.Works.SRM
 | 
	
		
			
				|  |  |                                                     .OrderByDescending(v => v.Entity.CODE)
 | 
	
		
			
				|  |  |                                                     .ToArray();
 | 
	
		
			
				|  |  |                          var finishTaskList = new List<FinishTaskList<int>>(); //成功分配货位的任务
 | 
	
		
			
				|  |  | -                                                                              //取巷道
 | 
	
		
			
				|  |  | +                        //检测有效任务数与实际任务是是否相等
 | 
	
		
			
				|  |  | +                        var validDev = devise.Where(v => v.Data2.Tasknum > 10000 && v.Data2.Status.HasFlag(IstationStatus.光电状态) && !v.Data3.Status.HasFlag(StationStatus.运行状态位));
 | 
	
		
			
				|  |  | +                        var stationDevices = validDev as StationDevice[] ?? validDev.ToArray();
 | 
	
		
			
				|  |  | +                        if (!stationDevices.Any()) throw new DoException("无有效入库任务");
 | 
	
		
			
				|  |  |                          DB.Do(db =>
 | 
	
		
			
				|  |  |                          {
 | 
	
		
			
				|  |  | -                            //检测有效任务数与实际任务是是否相等
 | 
	
		
			
				|  |  | -                            var validDev = devise.Where(v => v.Data2.Tasknum > 10000 && v.Data2.Status.HasFlag(IstationStatus.光电状态) && !v.Data3.Status.HasFlag(StationStatus.运行状态位));
 | 
	
		
			
				|  |  | -                            var stationDevices = validDev as StationDevice[] ?? validDev.ToArray();
 | 
	
		
			
				|  |  | -                            if (!stationDevices.Any()) throw new DoException("无有效入库任务");
 | 
	
		
			
				|  |  |                              var tasking = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.ID == stationDevices.First().Data2.Tasknum);
 | 
	
		
			
				|  |  |                              var taskList = db.Default.Set<WCS_TASK>().Count(v => v.TaskGroupKey == tasking.TaskGroupKey && v.TYPE == TaskType.倒库);
 | 
	
		
			
				|  |  |                              if (stationDevices.Count() != taskList) throw new WarnException($"任务数量不匹配,设备-{stationDevices.Count()},WCS-{taskList}");
 | 
	
	
		
			
				|  | @@ -149,7 +148,7 @@ namespace WCS.Service.Works.SRM
 | 
	
		
			
				|  |  |                                  task.ADDRTO = $"{loc.Row}-{loc.Colomn}-{loc.Layer}";
 | 
	
		
			
				|  |  |                                  task.DEVICE = deviceCode;
 | 
	
		
			
				|  |  |                                  task.TUNNEL = tunnel;
 | 
	
		
			
				|  |  | -                                task.CreateStatusLog(db, $"状态由{oldTask}变更至{task.STATUS}", this.GetType());
 | 
	
		
			
				|  |  | +                                task.CreateStatusLog(db, $"堆垛机开始执行入库", this.GetType());
 | 
	
		
			
				|  |  |                                  finishTaskList.Add(new FinishTaskList<int>(task.ID, dev));
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |                              db.Default.SaveChanges();
 | 
	
	
		
			
				|  | @@ -256,7 +255,7 @@ namespace WCS.Service.Works.SRM
 | 
	
		
			
				|  |  |                              //找出等待执行的出库任务
 | 
	
		
			
				|  |  |                              var waitTask = db.Default.Set<WCS_TASK>().Where(v => v.STATUS == TaskStatus.新建)
 | 
	
		
			
				|  |  |                                                            .Where(v => v.DEVICE == srm)
 | 
	
		
			
				|  |  | -                                                          .Where(v => v.TYPE == TaskType.倒库 )
 | 
	
		
			
				|  |  | +                                                          .Where(v => v.TYPE == TaskType.倒库)
 | 
	
		
			
				|  |  |                                                            .Where(v => !db.Default.Set<WCS_TASK>().Any(d => d.DEVICE == srm && d.STATUS == TaskStatus.堆垛机执行))
 | 
	
		
			
				|  |  |                                                            .Where(v => groupList.Contains(v.SRMSTATION)) //站台必须可用
 | 
	
		
			
				|  |  |                                                            .ToList();
 | 
	
	
		
			
				|  | @@ -282,9 +281,8 @@ namespace WCS.Service.Works.SRM
 | 
	
		
			
				|  |  |                                  var fork = srmDevice.GetFork(item, i);
 | 
	
		
			
				|  |  |                                  //获取站台及下一个地址
 | 
	
		
			
				|  |  |                                  task.GetSrmStationAndaddNext(fork);
 | 
	
		
			
				|  |  | -                                var msg = "";
 | 
	
		
			
				|  |  | -                                msg = fork == SrmFork.货叉1 ? $"状态由[{oldTaskStatus}]变更为[{task.STATUS}][{srmDevice.Data.SLine_1}-{srmDevice.Data.SCol_1}-{srmDevice.Data.SLayer_1}][{srmDevice.Data.ELine_1}][{srmDevice.Data.VoucherNo_1}]" : $"状态由[{oldTaskStatus}]变更为[{task.STATUS}][{srmDevice.Data.SLine_2}-{srmDevice.Data.SCol_2}-{srmDevice.Data.SLayer_2}][{srmDevice.Data.ELine_2}][{srmDevice.Data.VoucherNo_2}]";
 | 
	
		
			
				|  |  | -                                task.CreateStatusLog(db,msg, this.GetType());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                task.CreateStatusLog(db, "堆垛机开始执行出库", this.GetType());
 | 
	
		
			
				|  |  |                                  item.SRMSTATION = task.SRMSTATION;
 | 
	
		
			
				|  |  |                                  finishTaskList.Add(new FinishTaskList<SrmFork, Task>(fork, item));
 | 
	
		
			
				|  |  |                              }
 | 
	
	
		
			
				|  | @@ -365,7 +363,7 @@ namespace WCS.Service.Works.SRM
 | 
	
		
			
				|  |  |                              task.DEVICE = deviceCode;
 | 
	
		
			
				|  |  |                              db.Default.SaveChanges();
 | 
	
		
			
				|  |  |                              Uploader.Upload(db);
 | 
	
		
			
				|  |  | -                            task.CreateStatusLog(db,$"状态由[{oldTaskStatus}]变更为[{task.STATUS}]", this.GetType());
 | 
	
		
			
				|  |  | +                            task.CreateStatusLog(db, $"状态由[{oldTaskStatus}]变更为[{task.STATUS}]", this.GetType());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                              if (addFrom[2].ToShort().OddNumberOrEven())
 | 
	
		
			
				|  |  |                              {
 | 
	
	
		
			
				|  | @@ -423,13 +421,12 @@ namespace WCS.Service.Works.SRM
 | 
	
		
			
				|  |  |                                                 .OrderByDescending(v => v.Entity.CODE)
 | 
	
		
			
				|  |  |                                                 .ToArray();
 | 
	
		
			
				|  |  |                      var finishTaskList = new List<FinishTaskList<int>>(); //成功分配货位的任务
 | 
	
		
			
				|  |  | -                                                                          //取巷道
 | 
	
		
			
				|  |  | +                    //检测有效任务数与实际任务是是否相等
 | 
	
		
			
				|  |  | +                    var validDev = devise.Where(v => v.Data2.Tasknum > 10000 && v.Data2.Status.HasFlag(IstationStatus.光电状态) && !v.Data3.Status.HasFlag(StationStatus.运行状态位));
 | 
	
		
			
				|  |  | +                    var stationDevices = validDev as StationDevice[] ?? validDev.ToArray();
 | 
	
		
			
				|  |  | +                    if (!stationDevices.Any()) throw new DoException("无有效入库任务");
 | 
	
		
			
				|  |  |                      DB.Do(db =>
 | 
	
		
			
				|  |  |                      {
 | 
	
		
			
				|  |  | -                        //检测有效任务数与实际任务是是否相等
 | 
	
		
			
				|  |  | -                        var validDev = devise.Where(v => v.Data2.Tasknum > 10000 && v.Data2.Status.HasFlag(IstationStatus.光电状态) && !v.Data3.Status.HasFlag(StationStatus.运行状态位));
 | 
	
		
			
				|  |  | -                        var stationDevices = validDev as StationDevice[] ?? validDev.ToArray();
 | 
	
		
			
				|  |  | -                        if (!stationDevices.Any()) throw new DoException("无有效入库任务");
 | 
	
		
			
				|  |  |                          var tasking = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.ID == stationDevices.First().Data2.Tasknum);
 | 
	
		
			
				|  |  |                          var taskList = db.Default.Set<WCS_TASK>().Count(v => v.TaskGroupKey == tasking.TaskGroupKey && v.TYPE == TaskType.入库);
 | 
	
		
			
				|  |  |                          if (stationDevices.Count() != taskList) throw new WarnException($"任务数量不匹配,设备-{stationDevices.Count()},WCS-{taskList}");
 | 
	
	
		
			
				|  | @@ -450,7 +447,7 @@ namespace WCS.Service.Works.SRM
 | 
	
		
			
				|  |  |                              task.ADDRTO = $"{loc.Row}-{loc.Colomn}-{loc.Layer}";
 | 
	
		
			
				|  |  |                              task.DEVICE = deviceCode;
 | 
	
		
			
				|  |  |                              task.TUNNEL = tunnel;
 | 
	
		
			
				|  |  | -                            task.CreateStatusLog(db,$"状态由{oldTask}变更至{task.STATUS}", this.GetType());
 | 
	
		
			
				|  |  | +                            task.CreateStatusLog(db, $"堆垛机开始执行入库任务", this.GetType());
 | 
	
		
			
				|  |  |                              finishTaskList.Add(new FinishTaskList<int>(task.ID, dev));
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                          db.Default.SaveChanges();
 | 
	
	
		
			
				|  | @@ -627,9 +624,8 @@ namespace WCS.Service.Works.SRM
 | 
	
		
			
				|  |  |                              var fork = srmDevice.GetFork(item, i);
 | 
	
		
			
				|  |  |                              //获取站台及下一个地址
 | 
	
		
			
				|  |  |                              task.GetSrmStationAndaddNext(fork);
 | 
	
		
			
				|  |  | -                            var msg = "";
 | 
	
		
			
				|  |  | -                            msg = fork == SrmFork.货叉1 ? $"状态由[{oldTaskStatus}]变更为[{task.STATUS}][{srmDevice.Data.SLine_1}-{srmDevice.Data.SCol_1}-{srmDevice.Data.SLayer_1}][{srmDevice.Data.ELine_1}][{srmDevice.Data.VoucherNo_1}]" : $"状态由[{oldTaskStatus}]变更为[{task.STATUS}][{srmDevice.Data.SLine_2}-{srmDevice.Data.SCol_2}-{srmDevice.Data.SLayer_2}][{srmDevice.Data.ELine_2}][{srmDevice.Data.VoucherNo_2}]";
 | 
	
		
			
				|  |  | -                            task.CreateStatusLog(db,msg, this.GetType());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            task.CreateStatusLog(db, "堆垛机开始执行出库任务", this.GetType());
 | 
	
		
			
				|  |  |                              item.SRMSTATION = task.SRMSTATION;
 | 
	
		
			
				|  |  |                              finishTaskList.Add(new FinishTaskList<SrmFork, Task>(fork, item));
 | 
	
		
			
				|  |  |                          }
 |