|
|
@ -17,29 +17,21 @@ type TimeCurveSrv struct { |
|
|
|
|
|
|
|
// 将时间数组转化成列表
|
|
|
|
func (tcs *TimeCurveSrv) GetLineList() { |
|
|
|
var ( |
|
|
|
tlsrv TimeLineSrv |
|
|
|
) |
|
|
|
|
|
|
|
// 初始化
|
|
|
|
tcs.TimeLineList = list.New() |
|
|
|
for _, tlsrv = range tcs.TimeLineArray { |
|
|
|
tcs.TimeLineList.PushBack(&tlsrv) |
|
|
|
for _, tlsrv := range tcs.TimeLineArray { |
|
|
|
tcs.TimeLineList.PushBack(tlsrv) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 将时间列表转化成数组
|
|
|
|
func (tcs *TimeCurveSrv) GetLineArray() { |
|
|
|
var ( |
|
|
|
e *list.Element |
|
|
|
tlsrv *TimeLineSrv |
|
|
|
) |
|
|
|
|
|
|
|
// 初始化数组
|
|
|
|
tcs.TimeLineArray = []TimeLineSrv{} |
|
|
|
for e = tcs.TimeLineList.Front(); e != nil; e = e.Next() { |
|
|
|
tlsrv = e.Value.(*TimeLineSrv) |
|
|
|
tcs.TimeLineArray = append(tcs.TimeLineArray, *tlsrv) |
|
|
|
for e := tcs.TimeLineList.Front(); e != nil; e = e.Next() { |
|
|
|
tlsrv := e.Value.(TimeLineSrv) |
|
|
|
tcs.TimeLineArray = append(tcs.TimeLineArray, tlsrv) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -47,7 +39,7 @@ func (tcs *TimeCurveSrv) GetLineArray() { |
|
|
|
func (tcs *TimeCurveSrv) GetTimeLine(tp time.Time) (node *list.Element, err error) { |
|
|
|
var ( |
|
|
|
e *list.Element |
|
|
|
tl, prevtl *TimeLineSrv |
|
|
|
tl, prevtl TimeLineSrv |
|
|
|
) |
|
|
|
/** 如果结束时间点小于计划曲线的起始时间点 |
|
|
|
|-------------------| |
|
|
@ -61,7 +53,7 @@ func (tcs *TimeCurveSrv) GetTimeLine(tp time.Time) (node *list.Element, err erro |
|
|
|
} |
|
|
|
|
|
|
|
for e = tcs.TimeLineList.Front(); e != nil; e = e.Next() { |
|
|
|
tl = e.Value.(*TimeLineSrv) |
|
|
|
tl = e.Value.(TimeLineSrv) |
|
|
|
if tp.Unix() >= tl.StartTime.Unix() && tp.Unix() <= tl.EndTime.Unix() { |
|
|
|
node = e |
|
|
|
return |
|
|
@ -69,7 +61,7 @@ func (tcs *TimeCurveSrv) GetTimeLine(tp time.Time) (node *list.Element, err erro |
|
|
|
|
|
|
|
// 如果正好落在两段时间之内不可用时段,则返回后面时段的位置
|
|
|
|
if e.Prev() != nil { |
|
|
|
prevtl = e.Prev().Value.(*TimeLineSrv) |
|
|
|
prevtl = e.Prev().Value.(TimeLineSrv) |
|
|
|
if tp.Unix() >= prevtl.EndTime.Unix() && tp.Unix() <= tl.StartTime.Unix() { |
|
|
|
node = e |
|
|
|
return |
|
|
@ -165,7 +157,7 @@ func (tcs *TimeCurveSrv) AddTimeLine(addtlsrv TimeLineSrv) (err error) { |
|
|
|
tcs.StartTime = addtlsrv.StartTime |
|
|
|
tcs.EndTime = addtlsrv.EndTime |
|
|
|
tcs.EffFactor = addtlsrv.EffFactor |
|
|
|
tcs.TimeLineList.PushBack(&tlsrv) |
|
|
|
tcs.TimeLineList.PushBack(tlsrv) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
@ -330,7 +322,7 @@ func (tcs *TimeCurveSrv) AddTimeLine(addtlsrv TimeLineSrv) (err error) { |
|
|
|
func (tcs *TimeCurveSrv) SubTimeLine(subtlsrv TimeLineSrv) (err error) { |
|
|
|
var ( |
|
|
|
tlsrv TimeLineSrv |
|
|
|
tl, tlb, tle *TimeLineSrv |
|
|
|
tl, tlb, tle TimeLineSrv |
|
|
|
e, next, nodeBeg, nodeEnd *list.Element |
|
|
|
) |
|
|
|
|
|
|
@ -369,7 +361,7 @@ func (tcs *TimeCurveSrv) SubTimeLine(subtlsrv TimeLineSrv) (err error) { |
|
|
|
return |
|
|
|
} |
|
|
|
if nodeEnd != nil { |
|
|
|
tl = nodeEnd.Value.(*TimeLineSrv) |
|
|
|
tl = nodeEnd.Value.(TimeLineSrv) |
|
|
|
tl.StartTime = subtlsrv.EndTime |
|
|
|
tcs.RemoveListAllBeforeItem(nodeEnd, false) |
|
|
|
tcs.StartTime = subtlsrv.EndTime |
|
|
@ -377,12 +369,12 @@ func (tcs *TimeCurveSrv) SubTimeLine(subtlsrv TimeLineSrv) (err error) { |
|
|
|
// 删除时段内的节点
|
|
|
|
for e = tcs.TimeLineList.Front(); e != nil; e = next { |
|
|
|
next = e.Next() |
|
|
|
tl = e.Value.(*TimeLineSrv) |
|
|
|
tl = e.Value.(TimeLineSrv) |
|
|
|
if tl.StartTime.Unix() > subtlsrv.StartTime.Unix() && tl.EndTime.Unix() < subtlsrv.EndTime.Unix() { |
|
|
|
tcs.TimeLineList.Remove(e) |
|
|
|
} |
|
|
|
} |
|
|
|
tl = tcs.TimeLineList.Front().Value.(*TimeLineSrv) |
|
|
|
tl = tcs.TimeLineList.Front().Value.(TimeLineSrv) |
|
|
|
tcs.StartTime = tl.StartTime |
|
|
|
} |
|
|
|
} |
|
|
@ -402,11 +394,11 @@ func (tcs *TimeCurveSrv) SubTimeLine(subtlsrv TimeLineSrv) (err error) { |
|
|
|
|****| |
|
|
|
**/ |
|
|
|
if nodeBeg != nil && nodeEnd == nil { |
|
|
|
tlb = nodeBeg.Value.(*TimeLineSrv) |
|
|
|
tlb = nodeBeg.Value.(TimeLineSrv) |
|
|
|
// 删除开始节点之后到结束时间点之间的Node
|
|
|
|
for e = nodeBeg.Next(); e != nil; e = next { |
|
|
|
next = e.Next() |
|
|
|
tl = e.Value.(*TimeLineSrv) |
|
|
|
tl = e.Value.(TimeLineSrv) |
|
|
|
if tl.EndTime.Unix() <= subtlsrv.EndTime.Unix() { |
|
|
|
tcs.TimeLineList.Remove(e) |
|
|
|
} else { |
|
|
@ -428,7 +420,7 @@ func (tcs *TimeCurveSrv) SubTimeLine(subtlsrv TimeLineSrv) (err error) { |
|
|
|
// 删除开始节点之后到结束时间点之间的Node
|
|
|
|
for e = tcs.TimeLineList.Front(); e != nil; e = next { |
|
|
|
next = e.Next() |
|
|
|
tl = e.Value.(*TimeLineSrv) |
|
|
|
tl = e.Value.(TimeLineSrv) |
|
|
|
if tl.StartTime.Unix() > subtlsrv.StartTime.Unix() && tl.EndTime.Unix() < subtlsrv.EndTime.Unix() { |
|
|
|
tcs.TimeLineList.Remove(e) |
|
|
|
} |
|
|
@ -439,11 +431,11 @@ func (tcs *TimeCurveSrv) SubTimeLine(subtlsrv TimeLineSrv) (err error) { |
|
|
|
|**| |
|
|
|
**/ |
|
|
|
if nodeBeg == nil && nodeEnd != nil { |
|
|
|
tle = nodeEnd.Value.(*TimeLineSrv) |
|
|
|
tle = nodeEnd.Value.(TimeLineSrv) |
|
|
|
// 删除开始节点到结束时间点之间的Node
|
|
|
|
for e = tcs.TimeLineList.Front(); e != nil; e = next { |
|
|
|
next = e.Next() |
|
|
|
tl = e.Value.(*TimeLineSrv) |
|
|
|
tl = e.Value.(TimeLineSrv) |
|
|
|
if tl.StartTime.Unix() > subtlsrv.StartTime.Unix() && tl.EndTime.Unix() < subtlsrv.EndTime.Unix() { |
|
|
|
tcs.TimeLineList.Remove(e) |
|
|
|
} |
|
|
@ -457,8 +449,8 @@ func (tcs *TimeCurveSrv) SubTimeLine(subtlsrv TimeLineSrv) (err error) { |
|
|
|
*/ |
|
|
|
if nodeBeg != nil && nodeEnd != nil { |
|
|
|
if nodeBeg != nodeEnd { |
|
|
|
tlb = nodeBeg.Value.(*TimeLineSrv) |
|
|
|
tle = nodeEnd.Value.(*TimeLineSrv) |
|
|
|
tlb = nodeBeg.Value.(TimeLineSrv) |
|
|
|
tle = nodeEnd.Value.(TimeLineSrv) |
|
|
|
if tlb != tle { |
|
|
|
// 删除两节点之间的所有节点
|
|
|
|
for e = nodeBeg.Next(); e != nil && e != nodeEnd; e = next { |
|
|
@ -489,7 +481,7 @@ func (tcs *TimeCurveSrv) SubTimeLine(subtlsrv TimeLineSrv) (err error) { |
|
|
|
return |
|
|
|
} |
|
|
|
if nodeBeg != nil { |
|
|
|
tl = nodeBeg.Value.(*TimeLineSrv) |
|
|
|
tl = nodeBeg.Value.(TimeLineSrv) |
|
|
|
tl.EndTime = subtlsrv.StartTime |
|
|
|
tcs.RemoveListAllAfterItem(nodeBeg, false) |
|
|
|
tcs.EndTime = subtlsrv.StartTime |
|
|
@ -497,13 +489,13 @@ func (tcs *TimeCurveSrv) SubTimeLine(subtlsrv TimeLineSrv) (err error) { |
|
|
|
// 删除时段内的节点
|
|
|
|
for e = tcs.TimeLineList.Front(); e != nil; e = next { |
|
|
|
next = e.Next() |
|
|
|
tl = e.Value.(*TimeLineSrv) |
|
|
|
tl = e.Value.(TimeLineSrv) |
|
|
|
if tl.StartTime.Unix() > subtlsrv.StartTime.Unix() && tl.EndTime.Unix() < subtlsrv.EndTime.Unix() { |
|
|
|
tcs.TimeLineList.Remove(e) |
|
|
|
} |
|
|
|
} |
|
|
|
// 获取最后一个节点
|
|
|
|
tl = tcs.TimeLineList.Back().Value.(*TimeLineSrv) |
|
|
|
tl = tcs.TimeLineList.Back().Value.(TimeLineSrv) |
|
|
|
tcs.EndTime = tl.EndTime |
|
|
|
} |
|
|
|
} |
|
|
|