|
|
@ -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 |
|
|
|
} |