| 
					
				 | 
			
			
				@@ -53,12 +53,24 @@ namespace WCS.Service.Works.SRM 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     throw new WarnException($"等待执行{srmDevice.Data.TaskID_1}-{srmDevice.Data.TaskID_2}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //处理堆垛机已完成的任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (srmDevice.Data2.FinishedTask_1 != 0 || srmDevice.Data2.FinishedTask_2 != 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    InfoLog.INFO_SRMINFO($"开始完成任务:[{srmDevice.Entity.CODE}]-{srmDevice.Data2.FinishedTask_1}-{srmDevice.Data2.FinishedTask_2}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    srmDevice.FinishedTaskHandle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    InfoLog.INFO_SRMINFO($"完成任务处理结束:[{srmDevice.Entity.CODE}]-{srmDevice.Data2.FinishedTask_1}-{srmDevice.Data2.FinishedTask_2}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (srmDevice.Data2.SRMMode != SCMode.远程) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (srmDevice.Data2.SRMStatus != SCRunStatus.空闲) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //检查标记好的出库任务,并将出库任务下达至堆垛机 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 DB.Do(db => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //找到两个任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var taksLsit = db.Default.Set<WCS_TASK>().Where(v => v.ID == srmDevice.Data.TaskID_1 || v.ID == srmDevice.Data.TaskID_2 && v.STATUS == TaskStatus.堆垛机执行).ToList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                                        .Select(v => v.Create<Task>()).OrderBy(v => v.Col).ToArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .Select(v => v.Create<Task>()).OrderBy(v => v.Col).ToArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (!taksLsit.Any()) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     for (var i = 0; i < taksLsit.Length; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -76,24 +88,13 @@ namespace WCS.Service.Works.SRM 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             case SrmFork.货叉2: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 obj.WriteTask2(item, (short)taksLsit.Length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 throw new ArgumentOutOfRangeException(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //处理堆垛机已完成的任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (srmDevice.Data2.FinishedTask_1 != 0 || srmDevice.Data2.FinishedTask_2 != 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    InfoLog.INFO_SRMINFO($"开始完成任务:[{srmDevice.Entity.CODE}]-{srmDevice.Data2.FinishedTask_1}-{srmDevice.Data2.FinishedTask_2}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    srmDevice.FinishedTaskHandle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    InfoLog.INFO_SRMINFO($"完成任务处理结束:[{srmDevice.Entity.CODE}]-{srmDevice.Data2.FinishedTask_1}-{srmDevice.Data2.FinishedTask_2}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (srmDevice.Data2.SRMMode != SCMode.远程) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (srmDevice.Data2.SRMStatus != SCRunStatus.空闲) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var isTransfer = new List<WCS_TASK>(); //是否有移库任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 WCS_TASK enterPriority = new(), outPriority = new(); //出入库优先级任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //再检查是否有等待执行的货物 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -424,15 +425,19 @@ namespace WCS.Service.Works.SRM 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         //此处只做标记,表示当前事务已经提交 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         foreach (var finish in finishTaskList) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if (finish.FinishCode == SrmFork.货叉1) // 列数较小的放一工位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                srmDevice.Data.TaskID_1 = finish.Station.ID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                //obj.WriteTask1(finish.Station, (short)tasks.Length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            else if (finish.FinishCode == SrmFork.货叉2) //列数较大的放二工位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            switch (finish.FinishCode) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                srmDevice.Data.TaskID_2 = finish.Station.ID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                //obj.WriteTask2(finish.Station, (short)tasks.Length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                // 列数较小的放一工位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                case SrmFork.货叉1: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    srmDevice.Data.TaskID_1 = finish.Station.ID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                //列数较大的放二工位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                case SrmFork.货叉2: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    srmDevice.Data.TaskID_2 = finish.Station.ID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    throw new ArgumentOutOfRangeException(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     }); 
			 |