diff --git a/schedule/Schedule_test.go b/schedule/Schedule_test.go index 6d684d8..9205173 100644 --- a/schedule/Schedule_test.go +++ b/schedule/Schedule_test.go @@ -21,7 +21,7 @@ func TestScheduler(t *testing.T) { y1,m1,d1 = time.Now().Date() startDate = time.Date(y1, m1, d1, 0, 0, 0, 0, time.UTC) endDate = startDate.Add(24*5*time.Hour) - schedeng = SchedulerSrv{StartDate: startDate,EndDate: endDate} + schedeng = SchedulerSrv{PlantNr:100, StartDate: startDate,EndDate: endDate} // 指定加载的产线类型 worklinetype= "" diff --git a/schedule/Scheduler.Ctrl.go b/schedule/Scheduler.Ctrl.go index 2abd615..6075b29 100644 --- a/schedule/Scheduler.Ctrl.go +++ b/schedule/Scheduler.Ctrl.go @@ -164,7 +164,7 @@ func(schedsrv *SchedulerSrv)LoadSchedTaskData()(err error){ for i = 0; i < len(wotablst); i++ { tasksrv = TaskSrv{} tasksrv.Init(wotablst[i]) - schedsrv.LockedTaskArray = append(schedsrv.LockedTaskArray, tasksrv) + schedsrv.PlannedTaskArray = append(schedsrv.PlannedTaskArray, tasksrv) } // 3. 按指定规则加载未计划的任务 if wotablst, err = wotab.SelectUnPlannedTasks(); err != nil { @@ -177,8 +177,6 @@ func(schedsrv *SchedulerSrv)LoadSchedTaskData()(err error){ schedsrv.LockedTaskArray = append(schedsrv.LockedTaskArray, tasksrv) } - // 对未计划的订单按照指定规则排序,准备排程 - schedsrv.SortUnplannedTask() return } // 撤回计划,将未下达的任务全部更新为未计划 @@ -789,11 +787,54 @@ func(schedsrv *SchedulerSrv)SortUnplannedTask(){ } // 调度引擎自动排程 func(schedsrv *SchedulerSrv)AutoSchedule()(err error){ + var( + i int + ) + // 遍历已锁定任务,先占位 + for i = 0; i < len(schedsrv.LockedTaskArray); i++ { + schedsrv.ScheduleTask(schedsrv.LockedTaskArray[i].SchedResId, schedsrv.LockedTaskArray[i]) + } + // 遍历已计划任务,占位 + for i = 0; i < len(schedsrv.PlannedTaskArray); i++ { + schedsrv.ScheduleTask(schedsrv.PlannedTaskArray[i].SchedResId, schedsrv.PlannedTaskArray[i]) + } + // 将未计划任务排序 + + // 遍历未计划任务 + for i = 0; i < len(schedsrv.UnPlannedTaskArray); i++ { + // 此处可以增加选择调度资源逻辑 + + // 将未计划任务调度到指定的计划资源上 + schedsrv.ScheduleTask(schedsrv.UnPlannedTaskArray[i].SchedResId, schedsrv.UnPlannedTaskArray[i]) + } return } // 打印调度引擎排程结果 func(schedsrv *SchedulerSrv)PrintScheduleResult()(err error){ - + var( + i int + ) + // 遍历已锁定任务,先占位 + fmt.Println("已锁定任务:") + for i = 0; i < len(schedsrv.LockedTaskArray); i++ { + fmt.Println( i," -- ", fmt.Sprintf("生产订单:%s 计划产线:%s 计划开始时间:%v 计划结束时间:%v ", + schedsrv.LockedTaskArray[i].TaskId, schedsrv.LockedTaskArray[i].SchedResId, + schedsrv.LockedTaskArray[i].SchedStartTime, schedsrv.LockedTaskArray[i].SchedEndTime)) + } + // 遍历已计划任务,占位 + fmt.Println("已计划任务:") + for i = 0; i < len(schedsrv.PlannedTaskArray); i++ { + fmt.Println( i," -- ", fmt.Sprintf("生产订单:%s 计划产线:%s 计划开始时间:%v 计划结束时间:%v ", + schedsrv.PlannedTaskArray[i].TaskId, schedsrv.PlannedTaskArray[i].SchedResId, + schedsrv.PlannedTaskArray[i].SchedStartTime, schedsrv.PlannedTaskArray[i].SchedEndTime)) + } + // 遍历未计划任务 + fmt.Println("未计划任务:") + for i = 0; i < len(schedsrv.UnPlannedTaskArray); i++ { + fmt.Println( i," -- ", fmt.Sprintf("生产订单:%s 计划产线:%s 计划开始时间:%v 计划结束时间:%v ", + schedsrv.UnPlannedTaskArray[i].TaskId, schedsrv.UnPlannedTaskArray[i].SchedResId, + schedsrv.UnPlannedTaskArray[i].SchedStartTime, schedsrv.UnPlannedTaskArray[i].SchedEndTime)) + } return } \ No newline at end of file