| 
														
															@@ -53,12 +53,24 @@ namespace WCS.Service.Works.SRM 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     throw new WarnException($"等待执行{srmDevice.Data.TaskID_1}-{srmDevice.Data.TaskID_2}"); 
														 | 
														
														 | 
														
															                     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 => 
														 | 
														
														 | 
														
															                 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() 
														 | 
														
														 | 
														
															                     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; 
														 | 
														
														 | 
														
															                     if (!taksLsit.Any()) return; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     for (var i = 0; i < taksLsit.Length; i++) 
														 | 
														
														 | 
														
															                     for (var i = 0; i < taksLsit.Length; i++) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     { 
														 | 
														
														 | 
														
															                     { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -76,24 +88,13 @@ namespace WCS.Service.Works.SRM 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                             case SrmFork.货叉2: 
														 | 
														
														 | 
														
															                             case SrmFork.货叉2: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                                 obj.WriteTask2(item, (short)taksLsit.Length); 
														 | 
														
														 | 
														
															                                 obj.WriteTask2(item, (short)taksLsit.Length); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                                 break; 
														 | 
														
														 | 
														
															                                 break; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                             default: 
														 | 
														
														 | 
														
															                             default: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                                 throw new ArgumentOutOfRangeException(); 
														 | 
														
														 | 
														
															                                 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>(); //是否有移库任务 
														 | 
														
														 | 
														
															                 var isTransfer = new List<WCS_TASK>(); //是否有移库任务 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 WCS_TASK enterPriority = new(), outPriority = new(); //出入库优先级任务 
														 | 
														
														 | 
														
															                 WCS_TASK enterPriority = new(), outPriority = new(); //出入库优先级任务 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 //再检查是否有等待执行的货物 
														 | 
														
														 | 
														
															                 //再检查是否有等待执行的货物 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -424,15 +425,19 @@ namespace WCS.Service.Works.SRM 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         //此处只做标记,表示当前事务已经提交 
														 | 
														
														 | 
														
															                         //此处只做标记,表示当前事务已经提交 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         foreach (var finish in finishTaskList) 
														 | 
														
														 | 
														
															                         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(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                             } 
														 | 
														
														 | 
														
															                             } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         } 
														 | 
														
														 | 
														
															                         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     }); 
														 | 
														
														 | 
														
															                     }); 
														 |