diff --git a/services/base/implments/WorkLine.service.impl.go b/services/base/implments/WorkLine.service.impl.go index c779c0a..7d963ea 100644 --- a/services/base/implments/WorkLine.service.impl.go +++ b/services/base/implments/WorkLine.service.impl.go @@ -871,6 +871,7 @@ func (impl *WorkLineServiceImplement) WorkLineSchedulerManualr(user *models.User TemData := make([]schedule.TaskSrv, 0) schedeng.WorklineDict[result.WorkLineId].SchedTaskArray = TemData schedeng.WorklineDict[result.WorkLineId].SchedTimeCurve = schedeng.WorklineDict[result.WorkLineId].TimeCurve + schedeng.WorklineDict[result.WorkLineId].SchedTimeCurve.GetLineList() } //第三步:生成调度 err = schedeng.ManualrSchedule() diff --git a/services/schedule/Scheduler.Ctrl.go b/services/schedule/Scheduler.Ctrl.go index c899743..344b165 100644 --- a/services/schedule/Scheduler.Ctrl.go +++ b/services/schedule/Scheduler.Ctrl.go @@ -482,13 +482,9 @@ func (schedsrv *SchedulerSrv) ManualrScheduleTask(worklineid string, task *TaskS // 将调度任务添加到产线的调度队列中 task.SchedResId = wlsrv.WorklineId wlsrv.SchedTaskArray = append(wlsrv.SchedTaskArray, *task) - if wlsrv.SchedTimeCurve.TimeLineList == nil { - return - } // 更新产线的时间线 err = wlsrv.SchedTimeCurve.SubTimeLine(tlinesrv) if err != nil { - return } wlsrv.SchedTimeCurve.GetLineArray() diff --git a/services/schedule/TimeCurve.Ctrl.go b/services/schedule/TimeCurve.Ctrl.go index a0f9f7d..ec61dc9 100644 --- a/services/schedule/TimeCurve.Ctrl.go +++ b/services/schedule/TimeCurve.Ctrl.go @@ -413,7 +413,6 @@ func (tcs *TimeCurveSrv) SubTimeLine(subtlsrv TimeLineSrv) (err error) { if subtlsrv.StartTime.Unix() >= tcs.StartTime.Unix() && subtlsrv.EndTime.Unix() <= tcs.EndTime.Unix() { - if nodeBeg, err = tcs.GetTimeLine(subtlsrv.StartTime); err != nil || nodeBeg == nil { return } @@ -438,7 +437,6 @@ func (tcs *TimeCurveSrv) SubTimeLine(subtlsrv TimeLineSrv) (err error) { } // 更新开始节点的结束时间 //tlb.EndTime = subtlsrv.StartTime - tlsrv = TimeLineSrv{} tlsrv.StartTime = tlb.StartTime tlsrv.EndTime = subtlsrv.StartTime @@ -482,7 +480,6 @@ func (tcs *TimeCurveSrv) SubTimeLine(subtlsrv TimeLineSrv) (err error) { } // 更新结束节点的开始时间 //tle.StartTime = subtlsrv.EndTime - tlsrv = TimeLineSrv{} tlsrv.StartTime = subtlsrv.EndTime tlsrv.EndTime = tle.EndTime @@ -501,32 +498,43 @@ func (tcs *TimeCurveSrv) SubTimeLine(subtlsrv TimeLineSrv) (err error) { tlb = nodeBeg.Value.(TimeLineSrv) tle = nodeEnd.Value.(TimeLineSrv) if tlb != tle { + /********** + 1 /------/ /----/ /-------/ 可用时间 + /--------------/ 任务占用时间 + /---/ /-----/ 得到的结果 + ********************/ + // 删除两节点之间的所有节点 for e = nodeBeg.Next(); e != nil && e != nodeEnd; e = next { next = e.Next() tcs.TimeLineList.Remove(e) } - // 更新起始时间点 - //tlb.EndTime = subtlsrv.StartTime - //tle.StartTime = subtlsrv.EndTime - + //拆成两部分 tlsrv = TimeLineSrv{} tlsrv.StartTime = tlb.StartTime tlsrv.EndTime = subtlsrv.StartTime tlsrv.EffFactor = subtlsrv.EffFactor tlsrv.Duration = tcs.CalDuration(tlsrv.StartTime,tlsrv.EndTime) tcs.TimeLineList.InsertBefore(tlsrv, nodeBeg) + tlsrv = TimeLineSrv{} - tlsrv.StartTime = tlb.EndTime - tlsrv.EndTime = subtlsrv.EndTime + tlsrv.StartTime = subtlsrv.EndTime + tlsrv.EndTime = tle.EndTime tlsrv.EffFactor = subtlsrv.EffFactor tlsrv.Duration = tcs.CalDuration(tlsrv.StartTime,tlsrv.EndTime) tcs.TimeLineList.InsertAfter(tlsrv, nodeBeg) + //删除当前的 + tcs.TimeLineList.Remove(nodeBeg) + tcs.TimeLineList.Remove(nodeEnd) } } else { - tlb = nodeBeg.Value.(TimeLineSrv) + /********** + 2 /------------------/ 可用时间 + /-------/ 任务占用时间 + ********************/ + tlb = nodeBeg.Value.(TimeLineSrv) //先插入,再删除 tlsrv = TimeLineSrv{} tlsrv.StartTime = tlb.StartTime