高级排程
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

188 lines
6.4 KiB

  1. package service
  2. import (
  3. base_model "LAPP_AS/models/base"
  4. "time"
  5. )
  6. type DayModelSrv struct {
  7. DayModelNr int
  8. Duration time.Duration
  9. DayModelTab base_model.DayModel
  10. LineArray []LineSegementSrv
  11. StartTime time.Time
  12. EndTime time.Time
  13. }
  14. // 该日模型的有效时长
  15. func(dms *DayModelSrv)GetDuration(){
  16. var(
  17. lssrv LineSegementSrv
  18. )
  19. dms.Duration = 0
  20. for _, lssrv = range dms.LineArray {
  21. dms.Duration = dms.Duration + lssrv.GetDuration()
  22. }
  23. }
  24. // 日模型对象初始化,将日模型的班次时间转化成线段数组,并计算日模型的Duration
  25. func(dms *DayModelSrv)Init(dmtab base_model.DayModel){
  26. var(
  27. lssrv LineSegementSrv
  28. nextStartPoint int
  29. )
  30. // 初始化
  31. dms.DayModelTab = dmtab
  32. dms.DayModelNr = dms.DayModelTab.DayModelNr
  33. dms.LineArray = []LineSegementSrv{}
  34. nextStartPoint = dms.DayModelTab.S1Beg
  35. // 班次1
  36. if dms.DayModelTab.S1Toggle {
  37. if dms.DayModelTab.S1B1End > 0 && dms.DayModelTab.S1B1End > dms.DayModelTab.S1B1Beg {
  38. lssrv = LineSegementSrv{}
  39. lssrv.StartSecond = nextStartPoint
  40. lssrv.EndSecond = dms.DayModelTab.S1B1Beg
  41. lssrv.GetDuration()
  42. nextStartPoint = dms.DayModelTab.S1B1End
  43. dms.LineArray = append(dms.LineArray, lssrv)
  44. }
  45. if dms.DayModelTab.S1B2End > 0 && dms.DayModelTab.S1B2End > dms.DayModelTab.S1B2Beg {
  46. lssrv = LineSegementSrv{}
  47. lssrv.StartSecond = nextStartPoint
  48. lssrv.EndSecond = dms.DayModelTab.S1B2Beg
  49. lssrv.GetDuration()
  50. nextStartPoint = dms.DayModelTab.S1B2End
  51. dms.LineArray = append(dms.LineArray, lssrv)
  52. }
  53. if dms.DayModelTab.S1B3End > 0 && dms.DayModelTab.S1B3End > dms.DayModelTab.S1B3Beg {
  54. lssrv = LineSegementSrv{}
  55. lssrv.StartSecond = nextStartPoint
  56. lssrv.EndSecond = dms.DayModelTab.S1B3Beg
  57. lssrv.GetDuration()
  58. nextStartPoint = dms.DayModelTab.S1B3End
  59. dms.LineArray = append(dms.LineArray, lssrv)
  60. }
  61. if dms.DayModelTab.S1B4End > 0 && dms.DayModelTab.S1B4End > dms.DayModelTab.S1B4Beg {
  62. lssrv = LineSegementSrv{}
  63. lssrv.StartSecond = nextStartPoint
  64. lssrv.EndSecond = dms.DayModelTab.S1B4Beg
  65. lssrv.GetDuration()
  66. nextStartPoint = dms.DayModelTab.S1B4End
  67. dms.LineArray = append(dms.LineArray, lssrv)
  68. }
  69. if dms.DayModelTab.S1B5End > 0 && dms.DayModelTab.S1B5End > dms.DayModelTab.S1B5Beg {
  70. lssrv = LineSegementSrv{}
  71. lssrv.StartSecond = nextStartPoint
  72. lssrv.EndSecond = dms.DayModelTab.S1B5Beg
  73. lssrv.GetDuration()
  74. nextStartPoint = dms.DayModelTab.S1B5End
  75. dms.LineArray = append(dms.LineArray, lssrv)
  76. }
  77. lssrv = LineSegementSrv{}
  78. lssrv.StartSecond = nextStartPoint
  79. lssrv.EndSecond = dms.DayModelTab.S1End
  80. lssrv.GetDuration()
  81. dms.LineArray = append(dms.LineArray, lssrv)
  82. }
  83. nextStartPoint = dms.DayModelTab.S2Beg
  84. // 班次2
  85. if dms.DayModelTab.S2Toggle {
  86. if dms.DayModelTab.S2B1End > 0 && dms.DayModelTab.S2B1End > dms.DayModelTab.S2B1Beg {
  87. lssrv = LineSegementSrv{}
  88. lssrv.StartSecond = nextStartPoint
  89. lssrv.EndSecond = dms.DayModelTab.S2B1Beg
  90. lssrv.GetDuration()
  91. nextStartPoint = dms.DayModelTab.S2B1End
  92. dms.LineArray = append(dms.LineArray, lssrv)
  93. }
  94. if dms.DayModelTab.S2B2End > 0 && dms.DayModelTab.S2B2End > dms.DayModelTab.S2B2Beg {
  95. lssrv = LineSegementSrv{}
  96. lssrv.StartSecond = nextStartPoint
  97. lssrv.EndSecond = dms.DayModelTab.S2B2Beg
  98. lssrv.GetDuration()
  99. nextStartPoint = dms.DayModelTab.S2B2End
  100. dms.LineArray = append(dms.LineArray, lssrv)
  101. }
  102. if dms.DayModelTab.S2B3End > 0 && dms.DayModelTab.S2B3End > dms.DayModelTab.S2B3Beg {
  103. lssrv = LineSegementSrv{}
  104. lssrv.StartSecond = nextStartPoint
  105. lssrv.EndSecond = dms.DayModelTab.S2B3Beg
  106. lssrv.GetDuration()
  107. nextStartPoint = dms.DayModelTab.S2B3End
  108. dms.LineArray = append(dms.LineArray, lssrv)
  109. }
  110. if dms.DayModelTab.S2B4End > 0 && dms.DayModelTab.S2B4End > dms.DayModelTab.S2B4Beg {
  111. lssrv = LineSegementSrv{}
  112. lssrv.StartSecond = nextStartPoint
  113. lssrv.EndSecond = dms.DayModelTab.S2B4Beg
  114. lssrv.GetDuration()
  115. nextStartPoint = dms.DayModelTab.S2B4End
  116. dms.LineArray = append(dms.LineArray, lssrv)
  117. }
  118. if dms.DayModelTab.S2B5End > 0 && dms.DayModelTab.S2B5End > dms.DayModelTab.S2B5Beg {
  119. lssrv = LineSegementSrv{}
  120. lssrv.StartSecond = nextStartPoint
  121. lssrv.EndSecond = dms.DayModelTab.S2B5Beg
  122. lssrv.GetDuration()
  123. nextStartPoint = dms.DayModelTab.S2B5End
  124. dms.LineArray = append(dms.LineArray, lssrv)
  125. }
  126. lssrv = LineSegementSrv{}
  127. lssrv.StartSecond = nextStartPoint
  128. lssrv.EndSecond = dms.DayModelTab.S2End
  129. lssrv.GetDuration()
  130. dms.LineArray = append(dms.LineArray, lssrv)
  131. }
  132. nextStartPoint = dms.DayModelTab.S3Beg
  133. // 班次2
  134. if dms.DayModelTab.S3Toggle {
  135. if dms.DayModelTab.S3B1End > 0 && dms.DayModelTab.S3B1End > dms.DayModelTab.S3B1Beg {
  136. lssrv = LineSegementSrv{}
  137. lssrv.StartSecond = nextStartPoint
  138. lssrv.EndSecond = dms.DayModelTab.S3B1Beg
  139. lssrv.GetDuration()
  140. nextStartPoint = dms.DayModelTab.S3B1End
  141. dms.LineArray = append(dms.LineArray, lssrv)
  142. }
  143. if dms.DayModelTab.S3B2End > 0 && dms.DayModelTab.S3B2End > dms.DayModelTab.S3B2Beg {
  144. lssrv = LineSegementSrv{}
  145. lssrv.StartSecond = nextStartPoint
  146. lssrv.EndSecond = dms.DayModelTab.S3B2Beg
  147. lssrv.GetDuration()
  148. nextStartPoint = dms.DayModelTab.S3B2End
  149. dms.LineArray = append(dms.LineArray, lssrv)
  150. }
  151. if dms.DayModelTab.S3B3End > 0 && dms.DayModelTab.S3B3End > dms.DayModelTab.S3B3Beg {
  152. lssrv = LineSegementSrv{}
  153. lssrv.StartSecond = nextStartPoint
  154. lssrv.EndSecond = dms.DayModelTab.S3B3Beg
  155. lssrv.GetDuration()
  156. nextStartPoint = dms.DayModelTab.S3B3End
  157. dms.LineArray = append(dms.LineArray, lssrv)
  158. }
  159. if dms.DayModelTab.S3B4End > 0 && dms.DayModelTab.S3B4End > dms.DayModelTab.S3B4Beg {
  160. lssrv = LineSegementSrv{}
  161. lssrv.StartSecond = nextStartPoint
  162. lssrv.EndSecond = dms.DayModelTab.S3B4Beg
  163. lssrv.GetDuration()
  164. nextStartPoint = dms.DayModelTab.S3B4End
  165. dms.LineArray = append(dms.LineArray, lssrv)
  166. }
  167. if dms.DayModelTab.S3B5End > 0 && dms.DayModelTab.S3B5End > dms.DayModelTab.S3B5Beg {
  168. lssrv = LineSegementSrv{}
  169. lssrv.StartSecond = nextStartPoint
  170. lssrv.EndSecond = dms.DayModelTab.S3B5Beg
  171. lssrv.GetDuration()
  172. nextStartPoint = dms.DayModelTab.S3B5End
  173. dms.LineArray = append(dms.LineArray, lssrv)
  174. }
  175. lssrv = LineSegementSrv{}
  176. lssrv.StartSecond = nextStartPoint
  177. lssrv.EndSecond = dms.DayModelTab.S3End
  178. lssrv.GetDuration()
  179. dms.LineArray = append(dms.LineArray, lssrv)
  180. }
  181. }