增加顺序修复
This commit is contained in:
@@ -2,6 +2,7 @@ package models
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sort"
|
||||
|
||||
"gorm.io/datatypes"
|
||||
"gorm.io/gorm"
|
||||
@@ -79,6 +80,42 @@ func (p Plan) ValidateExecutionOrder() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// ReorderSteps 重新排序计划中的步骤(任务或子计划),使其 ExecutionOrder 从 1 开始且连续。
|
||||
// 这个方法假设重复的顺序已经被其他方法验证过,它只负责修复断层和不从1开始的序列。
|
||||
func (p *Plan) ReorderSteps() {
|
||||
switch p.ContentType {
|
||||
case PlanContentTypeTasks:
|
||||
if len(p.Tasks) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// 1. 按当前的 ExecutionOrder 对任务进行排序
|
||||
sort.Slice(p.Tasks, func(i, j int) bool {
|
||||
return p.Tasks[i].ExecutionOrder < p.Tasks[j].ExecutionOrder
|
||||
})
|
||||
|
||||
// 2. 重新分配连续的 ExecutionOrder
|
||||
for i := range p.Tasks {
|
||||
p.Tasks[i].ExecutionOrder = i + 1
|
||||
}
|
||||
|
||||
case PlanContentTypeSubPlans:
|
||||
if len(p.SubPlans) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// 1. 按当前的 ExecutionOrder 对子计划进行排序
|
||||
sort.Slice(p.SubPlans, func(i, j int) bool {
|
||||
return p.SubPlans[i].ExecutionOrder < p.SubPlans[j].ExecutionOrder
|
||||
})
|
||||
|
||||
// 2. 重新分配连续的 ExecutionOrder
|
||||
for i := range p.SubPlans {
|
||||
p.SubPlans[i].ExecutionOrder = i + 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// SubPlan 代表作为另一个计划一部分的子计划,具有执行顺序
|
||||
type SubPlan struct {
|
||||
gorm.Model
|
||||
|
||||
Reference in New Issue
Block a user