高级排程
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.

462 lines
17 KiB

  1. package service
  2. import (
  3. base_dal "LAPP_AS/dao/base"
  4. "LAPP_AS/db"
  5. base_model "LAPP_AS/models/base"
  6. "errors"
  7. "fmt"
  8. "time"
  9. )
  10. type TimeModelSrv struct {
  11. PlantNr int
  12. StartDate time.Time
  13. EndDate time.Time
  14. DayModelDict map[int]DayModelSrv // 日模型字典
  15. WeekModelDict map[int]WeekModelSrv // 周模型字典
  16. CalendarDict map[int]CalendarSrv // 日历字典
  17. WorkShiftDict map[int]WorkShiftSrv // 人员班组字典
  18. }
  19. // 加载日模型、周模型和工作日历等基础数据
  20. func(tmsrv *TimeModelSrv)LoadBasicData(startDate, endDate time.Time)(err error){
  21. var(
  22. dmsrv DayModelSrv
  23. wkmsrv WeekModelSrv
  24. calsrv CalendarSrv
  25. wssrv WorkShiftSrv
  26. dmtablst []base_model.DayModel
  27. wkmtablst []base_model.WeekModel
  28. wkmLst []base_model.WeekModelLst
  29. caltablst []base_model.WorkCalendar
  30. wstablst []base_model.WorkShift
  31. i int
  32. )
  33. // 初始化
  34. tmsrv.DayModelDict = make(map[int]DayModelSrv)
  35. tmsrv.WeekModelDict = make(map[int]WeekModelSrv)
  36. tmsrv.CalendarDict = make(map[int]CalendarSrv)
  37. tmsrv.WorkShiftDict = make(map[int]WorkShiftSrv)
  38. //todo
  39. tmsrv.StartDate = startDate
  40. tmsrv.EndDate = endDate
  41. // 加载日模型
  42. engine := db.Eloquent.Master()
  43. session := engine.NewSession()
  44. defer session.Close()
  45. DayModel_dao := base_dal.NewDayModelDAO(session, tmsrv.PlantNr, "scheduler")
  46. if dmtablst, err = DayModel_dao.SelectAll(); err != nil {
  47. err = errors.New(fmt.Sprintf("加载工厂%d的日模型失败%v!",tmsrv.PlantNr, err))
  48. return
  49. }
  50. for i = 0; i < len(dmtablst); i++ {
  51. dmsrv = DayModelSrv{}
  52. dmsrv.Init(dmtablst[i])
  53. tmsrv.DayModelDict[dmsrv.DayModelNr] = dmsrv
  54. }
  55. // 加载周模型
  56. weekModel_dao := base_dal.NewWeekModelDAO(session, tmsrv.PlantNr, "scheduler")
  57. if wkmtablst, err = weekModel_dao.SelectAll(); err != nil {
  58. err = errors.New(fmt.Sprintf("加载工厂%d的周模型失败%v!",tmsrv.PlantNr, err))
  59. return
  60. }
  61. weekModelLstLi_dao := base_dal.NewWeekModelLstDAO(session, tmsrv.PlantNr, "scheduler")
  62. if wkmLst, err = weekModelLstLi_dao.SelectAll(); err != nil {
  63. err = errors.New(fmt.Sprintf("加载工厂%d的周模型Lst失败%v!",tmsrv.PlantNr, err))
  64. return
  65. }
  66. for i, info := range wkmtablst{
  67. for _, info2 := range wkmLst{
  68. if info2.PlantNr == info.PlantNr && info2.WeekModelNr == info.WeekModelNr{
  69. wkmtablst[i].WeekModelLstLi = append(wkmtablst[i].WeekModelLstLi, info2)
  70. }
  71. }
  72. }
  73. for i = 0; i < len(wkmtablst); i++ {
  74. wkmsrv = WeekModelSrv{}
  75. wkmsrv.Init(wkmtablst[i])
  76. tmsrv.WeekModelDict[wkmsrv.WeekModelNr] = wkmsrv
  77. }
  78. // 加载工作日历
  79. workCalendarModel_dao := base_dal.NewWorkCalendarDAO(session, tmsrv.PlantNr, "scheduler")
  80. if caltablst, err = workCalendarModel_dao.SelectAll(startDate, endDate); err != nil {
  81. err = errors.New(fmt.Sprintf("加载工厂%d的工作日历失败%v!",tmsrv.PlantNr, err))
  82. return
  83. }
  84. for i = 0; i < len(caltablst); i++ {
  85. calsrv = CalendarSrv{}
  86. calsrv.Init(caltablst[i])
  87. tmsrv.CalendarDict[calsrv.CalendarNr] = calsrv
  88. }
  89. // 加载工作班次模型
  90. workShift_dao := base_dal.NewWorkShiftDAO(session, tmsrv.PlantNr, "scheduler")
  91. if wstablst, err = workShift_dao.SelectAll(); err != nil {
  92. err = errors.New(fmt.Sprintf("加载工厂%d的人员班组失败%v!",tmsrv.PlantNr, err))
  93. return
  94. }
  95. for i = 0; i < len(wstablst); i++ {
  96. wssrv = WorkShiftSrv{}
  97. wssrv.Init(wstablst[i])
  98. tmsrv.WorkShiftDict[wssrv.WorkShiftNr] = wssrv
  99. }
  100. return
  101. }
  102. // 生成日模型的可用时间线
  103. func(tmsrv *TimeModelSrv)GenDayModelLineArray()(err error){
  104. var(
  105. dms DayModelSrv
  106. wssrv WorkShiftSrv
  107. lssrv LineSegementSrv
  108. nextStartPoint int
  109. ok bool
  110. )
  111. // 遍历日模型
  112. for _, dms = range tmsrv.DayModelDict {
  113. dms.LineArray = []LineSegementSrv{}
  114. // 是否是人员班组
  115. if dms.DayModelTab.WorkShiftToggle {
  116. // 班次1
  117. if dms.DayModelTab.S1Toggle {
  118. if wssrv, ok = tmsrv.WorkShiftDict[dms.DayModelTab.S1WorkShiftNr]; !ok {
  119. err = errors.New(fmt.Sprintf("日模型%d的班次1对应的人员班次%d不存在!",dms.DayModelTab.DayModelNr, dms.DayModelTab.S1WorkShiftNr))
  120. return
  121. }
  122. nextStartPoint = wssrv.Wsstab.SBeg
  123. if wssrv.Wsstab.SB1Beg > 0 && wssrv.Wsstab.SB1End > wssrv.Wsstab.SB1Beg {
  124. lssrv = LineSegementSrv{}
  125. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  126. lssrv.StartSecond = nextStartPoint
  127. lssrv.EndSecond = wssrv.Wsstab.SB1Beg
  128. lssrv.GetDuration()
  129. nextStartPoint = wssrv.Wsstab.SB1End
  130. dms.LineArray = append(dms.LineArray, lssrv)
  131. }
  132. if wssrv.Wsstab.SB2End > 0 && wssrv.Wsstab.SB2End > wssrv.Wsstab.SB2Beg {
  133. lssrv = LineSegementSrv{}
  134. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  135. lssrv.StartSecond = nextStartPoint
  136. lssrv.EndSecond = wssrv.Wsstab.SB2Beg
  137. lssrv.GetDuration()
  138. nextStartPoint = wssrv.Wsstab.SB2End
  139. dms.LineArray = append(dms.LineArray, lssrv)
  140. }
  141. if wssrv.Wsstab.SB3End > 0 && wssrv.Wsstab.SB3End > wssrv.Wsstab.SB3Beg {
  142. lssrv = LineSegementSrv{}
  143. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  144. lssrv.StartSecond = nextStartPoint
  145. lssrv.EndSecond = wssrv.Wsstab.SB3Beg
  146. lssrv.GetDuration()
  147. nextStartPoint = wssrv.Wsstab.SB3End
  148. dms.LineArray = append(dms.LineArray, lssrv)
  149. }
  150. if wssrv.Wsstab.SB4End > 0 && wssrv.Wsstab.SB4End > wssrv.Wsstab.SB4Beg {
  151. lssrv = LineSegementSrv{}
  152. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  153. lssrv.StartSecond = nextStartPoint
  154. lssrv.EndSecond = wssrv.Wsstab.SB4Beg
  155. lssrv.GetDuration()
  156. nextStartPoint = wssrv.Wsstab.SB4End
  157. dms.LineArray = append(dms.LineArray, lssrv)
  158. }
  159. if wssrv.Wsstab.SB5End > 0 && wssrv.Wsstab.SB5End > wssrv.Wsstab.SB5Beg {
  160. lssrv = LineSegementSrv{}
  161. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  162. lssrv.StartSecond = nextStartPoint
  163. lssrv.EndSecond = wssrv.Wsstab.SB5Beg
  164. lssrv.GetDuration()
  165. nextStartPoint = wssrv.Wsstab.SB5End
  166. dms.LineArray = append(dms.LineArray, lssrv)
  167. }
  168. lssrv = LineSegementSrv{}
  169. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  170. lssrv.StartSecond = nextStartPoint
  171. lssrv.EndSecond = wssrv.Wsstab.SEnd
  172. lssrv.GetDuration()
  173. dms.LineArray = append(dms.LineArray, lssrv)
  174. }
  175. // 班次2
  176. if dms.DayModelTab.S2Toggle {
  177. if wssrv, ok = tmsrv.WorkShiftDict[dms.DayModelTab.S2WorkShiftNr]; !ok {
  178. err = errors.New(fmt.Sprintf("日模型%d的班次2对应的人员班次%d不存在!",dms.DayModelTab.DayModelNr, dms.DayModelTab.S2WorkShiftNr))
  179. return
  180. }
  181. nextStartPoint = wssrv.Wsstab.SBeg
  182. if wssrv.Wsstab.SB1Beg > 0 && wssrv.Wsstab.SB1End > wssrv.Wsstab.SB1Beg {
  183. lssrv = LineSegementSrv{}
  184. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  185. lssrv.StartSecond = nextStartPoint
  186. lssrv.EndSecond = wssrv.Wsstab.SB1Beg
  187. lssrv.GetDuration()
  188. nextStartPoint = wssrv.Wsstab.SB1End
  189. dms.LineArray = append(dms.LineArray, lssrv)
  190. }
  191. if wssrv.Wsstab.SB2End > 0 && wssrv.Wsstab.SB2End > wssrv.Wsstab.SB2Beg {
  192. lssrv = LineSegementSrv{}
  193. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  194. lssrv.StartSecond = nextStartPoint
  195. lssrv.EndSecond = wssrv.Wsstab.SB2Beg
  196. lssrv.GetDuration()
  197. nextStartPoint = wssrv.Wsstab.SB2End
  198. dms.LineArray = append(dms.LineArray, lssrv)
  199. }
  200. if wssrv.Wsstab.SB3End > 0 && wssrv.Wsstab.SB3End > wssrv.Wsstab.SB3Beg {
  201. lssrv = LineSegementSrv{}
  202. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  203. lssrv.StartSecond = nextStartPoint
  204. lssrv.EndSecond = wssrv.Wsstab.SB3Beg
  205. lssrv.GetDuration()
  206. nextStartPoint = wssrv.Wsstab.SB3End
  207. dms.LineArray = append(dms.LineArray, lssrv)
  208. }
  209. if wssrv.Wsstab.SB4End > 0 && wssrv.Wsstab.SB4End > wssrv.Wsstab.SB4Beg {
  210. lssrv = LineSegementSrv{}
  211. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  212. lssrv.StartSecond = nextStartPoint
  213. lssrv.EndSecond = wssrv.Wsstab.SB4Beg
  214. lssrv.GetDuration()
  215. nextStartPoint = wssrv.Wsstab.SB4End
  216. dms.LineArray = append(dms.LineArray, lssrv)
  217. }
  218. if wssrv.Wsstab.SB5End > 0 && wssrv.Wsstab.SB5End > wssrv.Wsstab.SB5Beg {
  219. lssrv = LineSegementSrv{}
  220. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  221. lssrv.StartSecond = nextStartPoint
  222. lssrv.EndSecond = wssrv.Wsstab.SB5Beg
  223. lssrv.GetDuration()
  224. nextStartPoint = wssrv.Wsstab.SB5End
  225. dms.LineArray = append(dms.LineArray, lssrv)
  226. }
  227. lssrv = LineSegementSrv{}
  228. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  229. lssrv.StartSecond = nextStartPoint
  230. lssrv.EndSecond = wssrv.Wsstab.SEnd
  231. lssrv.GetDuration()
  232. dms.LineArray = append(dms.LineArray, lssrv)
  233. }
  234. // 班次2
  235. if dms.DayModelTab.S3Toggle {
  236. if wssrv, ok = tmsrv.WorkShiftDict[dms.DayModelTab.S3WorkShiftNr]; !ok {
  237. err = errors.New(fmt.Sprintf("日模型%d的班次3对应的人员班次%d不存在!",dms.DayModelTab.DayModelNr, dms.DayModelTab.S3WorkShiftNr))
  238. return
  239. }
  240. nextStartPoint = wssrv.Wsstab.SBeg
  241. if wssrv.Wsstab.SB1Beg > 0 && wssrv.Wsstab.SB1End > wssrv.Wsstab.SB1Beg {
  242. lssrv = LineSegementSrv{}
  243. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  244. lssrv.StartSecond = nextStartPoint
  245. lssrv.EndSecond = wssrv.Wsstab.SB1Beg
  246. lssrv.GetDuration()
  247. nextStartPoint = wssrv.Wsstab.SB1End
  248. dms.LineArray = append(dms.LineArray, lssrv)
  249. }
  250. if wssrv.Wsstab.SB2End > 0 && wssrv.Wsstab.SB2End > wssrv.Wsstab.SB2Beg {
  251. lssrv = LineSegementSrv{}
  252. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  253. lssrv.StartSecond = nextStartPoint
  254. lssrv.EndSecond = wssrv.Wsstab.SB2Beg
  255. lssrv.GetDuration()
  256. nextStartPoint = wssrv.Wsstab.SB2End
  257. dms.LineArray = append(dms.LineArray, lssrv)
  258. }
  259. if wssrv.Wsstab.SB3End > 0 && wssrv.Wsstab.SB3End > wssrv.Wsstab.SB3Beg {
  260. lssrv = LineSegementSrv{}
  261. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  262. lssrv.StartSecond = nextStartPoint
  263. lssrv.EndSecond = wssrv.Wsstab.SB3Beg
  264. lssrv.GetDuration()
  265. nextStartPoint = wssrv.Wsstab.SB3End
  266. dms.LineArray = append(dms.LineArray, lssrv)
  267. }
  268. if wssrv.Wsstab.SB4End > 0 && wssrv.Wsstab.SB4End > wssrv.Wsstab.SB4Beg {
  269. lssrv = LineSegementSrv{}
  270. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  271. lssrv.StartSecond = nextStartPoint
  272. lssrv.EndSecond = wssrv.Wsstab.SB4Beg
  273. lssrv.GetDuration()
  274. nextStartPoint = wssrv.Wsstab.SB4End
  275. dms.LineArray = append(dms.LineArray, lssrv)
  276. }
  277. if wssrv.Wsstab.SB5End > 0 && wssrv.Wsstab.SB5End > wssrv.Wsstab.SB5Beg {
  278. lssrv = LineSegementSrv{}
  279. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  280. lssrv.StartSecond = nextStartPoint
  281. lssrv.EndSecond = wssrv.Wsstab.SB5Beg
  282. lssrv.GetDuration()
  283. nextStartPoint = wssrv.Wsstab.SB5End
  284. dms.LineArray = append(dms.LineArray, lssrv)
  285. }
  286. lssrv = LineSegementSrv{}
  287. lssrv.WorkShiftNr = wssrv.Wsstab.WorkShiftNr
  288. lssrv.StartSecond = nextStartPoint
  289. lssrv.EndSecond = wssrv.Wsstab.SEnd
  290. lssrv.GetDuration()
  291. dms.LineArray = append(dms.LineArray, lssrv)
  292. }
  293. }else{
  294. // 班次1
  295. if dms.DayModelTab.S1Toggle {
  296. nextStartPoint = dms.DayModelTab.S1Beg
  297. if dms.DayModelTab.S1B1End > 0 && dms.DayModelTab.S1B1End > dms.DayModelTab.S1B1Beg {
  298. lssrv = LineSegementSrv{}
  299. lssrv.StartSecond = nextStartPoint
  300. lssrv.EndSecond = dms.DayModelTab.S1B1Beg
  301. lssrv.GetDuration()
  302. nextStartPoint = dms.DayModelTab.S1B1End
  303. dms.LineArray = append(dms.LineArray, lssrv)
  304. }
  305. if dms.DayModelTab.S1B2End > 0 && dms.DayModelTab.S1B2End > dms.DayModelTab.S1B2Beg {
  306. lssrv = LineSegementSrv{}
  307. lssrv.StartSecond = nextStartPoint
  308. lssrv.EndSecond = dms.DayModelTab.S1B2Beg
  309. lssrv.GetDuration()
  310. nextStartPoint = dms.DayModelTab.S1B2End
  311. dms.LineArray = append(dms.LineArray, lssrv)
  312. }
  313. if dms.DayModelTab.S1B3End > 0 && dms.DayModelTab.S1B3End > dms.DayModelTab.S1B3Beg {
  314. lssrv = LineSegementSrv{}
  315. lssrv.StartSecond = nextStartPoint
  316. lssrv.EndSecond = dms.DayModelTab.S1B3Beg
  317. lssrv.GetDuration()
  318. nextStartPoint = dms.DayModelTab.S1B3End
  319. dms.LineArray = append(dms.LineArray, lssrv)
  320. }
  321. if dms.DayModelTab.S1B4End > 0 && dms.DayModelTab.S1B4End > dms.DayModelTab.S1B4Beg {
  322. lssrv = LineSegementSrv{}
  323. lssrv.StartSecond = nextStartPoint
  324. lssrv.EndSecond = dms.DayModelTab.S1B4Beg
  325. lssrv.GetDuration()
  326. nextStartPoint = dms.DayModelTab.S1B4End
  327. dms.LineArray = append(dms.LineArray, lssrv)
  328. }
  329. if dms.DayModelTab.S1B5End > 0 && dms.DayModelTab.S1B5End > dms.DayModelTab.S1B5Beg {
  330. lssrv = LineSegementSrv{}
  331. lssrv.StartSecond = nextStartPoint
  332. lssrv.EndSecond = dms.DayModelTab.S1B5Beg
  333. lssrv.GetDuration()
  334. nextStartPoint = dms.DayModelTab.S1B5End
  335. dms.LineArray = append(dms.LineArray, lssrv)
  336. }
  337. lssrv = LineSegementSrv{}
  338. lssrv.StartSecond = nextStartPoint
  339. lssrv.EndSecond = dms.DayModelTab.S1End
  340. lssrv.GetDuration()
  341. dms.LineArray = append(dms.LineArray, lssrv)
  342. }
  343. // 班次2
  344. if dms.DayModelTab.S2Toggle {
  345. nextStartPoint = dms.DayModelTab.S2Beg
  346. if dms.DayModelTab.S2B1End > 0 && dms.DayModelTab.S2B1End > dms.DayModelTab.S2B1Beg {
  347. lssrv = LineSegementSrv{}
  348. lssrv.StartSecond = nextStartPoint
  349. lssrv.EndSecond = dms.DayModelTab.S2B1Beg
  350. lssrv.GetDuration()
  351. nextStartPoint = dms.DayModelTab.S2B1End
  352. dms.LineArray = append(dms.LineArray, lssrv)
  353. }
  354. if dms.DayModelTab.S2B2End > 0 && dms.DayModelTab.S2B2End > dms.DayModelTab.S2B2Beg {
  355. lssrv = LineSegementSrv{}
  356. lssrv.StartSecond = nextStartPoint
  357. lssrv.EndSecond = dms.DayModelTab.S2B2Beg
  358. lssrv.GetDuration()
  359. nextStartPoint = dms.DayModelTab.S2B2End
  360. dms.LineArray = append(dms.LineArray, lssrv)
  361. }
  362. if dms.DayModelTab.S2B3End > 0 && dms.DayModelTab.S2B3End > dms.DayModelTab.S2B3Beg {
  363. lssrv = LineSegementSrv{}
  364. lssrv.StartSecond = nextStartPoint
  365. lssrv.EndSecond = dms.DayModelTab.S2B3Beg
  366. lssrv.GetDuration()
  367. nextStartPoint = dms.DayModelTab.S2B3End
  368. dms.LineArray = append(dms.LineArray, lssrv)
  369. }
  370. if dms.DayModelTab.S2B4End > 0 && dms.DayModelTab.S2B4End > dms.DayModelTab.S2B4Beg {
  371. lssrv = LineSegementSrv{}
  372. lssrv.StartSecond = nextStartPoint
  373. lssrv.EndSecond = dms.DayModelTab.S2B4Beg
  374. lssrv.GetDuration()
  375. nextStartPoint = dms.DayModelTab.S2B4End
  376. dms.LineArray = append(dms.LineArray, lssrv)
  377. }
  378. if dms.DayModelTab.S2B5End > 0 && dms.DayModelTab.S2B5End > dms.DayModelTab.S2B5Beg {
  379. lssrv = LineSegementSrv{}
  380. lssrv.StartSecond = nextStartPoint
  381. lssrv.EndSecond = dms.DayModelTab.S2B5Beg
  382. lssrv.GetDuration()
  383. nextStartPoint = dms.DayModelTab.S2B5End
  384. dms.LineArray = append(dms.LineArray, lssrv)
  385. }
  386. lssrv = LineSegementSrv{}
  387. lssrv.StartSecond = nextStartPoint
  388. lssrv.EndSecond = dms.DayModelTab.S2End
  389. lssrv.GetDuration()
  390. dms.LineArray = append(dms.LineArray, lssrv)
  391. }
  392. // 班次2
  393. if dms.DayModelTab.S3Toggle {
  394. nextStartPoint = dms.DayModelTab.S3Beg
  395. if dms.DayModelTab.S3B1End > 0 && dms.DayModelTab.S3B1End > dms.DayModelTab.S3B1Beg {
  396. lssrv = LineSegementSrv{}
  397. lssrv.StartSecond = nextStartPoint
  398. lssrv.EndSecond = dms.DayModelTab.S3B1Beg
  399. lssrv.GetDuration()
  400. nextStartPoint = dms.DayModelTab.S3B1End
  401. dms.LineArray = append(dms.LineArray, lssrv)
  402. }
  403. if dms.DayModelTab.S3B2End > 0 && dms.DayModelTab.S3B2End > dms.DayModelTab.S3B2Beg {
  404. lssrv = LineSegementSrv{}
  405. lssrv.StartSecond = nextStartPoint
  406. lssrv.EndSecond = dms.DayModelTab.S3B2Beg
  407. lssrv.GetDuration()
  408. nextStartPoint = dms.DayModelTab.S3B2End
  409. dms.LineArray = append(dms.LineArray, lssrv)
  410. }
  411. if dms.DayModelTab.S3B3End > 0 && dms.DayModelTab.S3B3End > dms.DayModelTab.S3B3Beg {
  412. lssrv = LineSegementSrv{}
  413. lssrv.StartSecond = nextStartPoint
  414. lssrv.EndSecond = dms.DayModelTab.S3B3Beg
  415. lssrv.GetDuration()
  416. nextStartPoint = dms.DayModelTab.S3B3End
  417. dms.LineArray = append(dms.LineArray, lssrv)
  418. }
  419. if dms.DayModelTab.S3B4End > 0 && dms.DayModelTab.S3B4End > dms.DayModelTab.S3B4Beg {
  420. lssrv = LineSegementSrv{}
  421. lssrv.StartSecond = nextStartPoint
  422. lssrv.EndSecond = dms.DayModelTab.S3B4Beg
  423. lssrv.GetDuration()
  424. nextStartPoint = dms.DayModelTab.S3B4End
  425. dms.LineArray = append(dms.LineArray, lssrv)
  426. }
  427. if dms.DayModelTab.S3B5End > 0 && dms.DayModelTab.S3B5End > dms.DayModelTab.S3B5Beg {
  428. lssrv = LineSegementSrv{}
  429. lssrv.StartSecond = nextStartPoint
  430. lssrv.EndSecond = dms.DayModelTab.S3B5Beg
  431. lssrv.GetDuration()
  432. nextStartPoint = dms.DayModelTab.S3B5End
  433. dms.LineArray = append(dms.LineArray, lssrv)
  434. }
  435. lssrv = LineSegementSrv{}
  436. lssrv.StartSecond = nextStartPoint
  437. lssrv.EndSecond = dms.DayModelTab.S3End
  438. lssrv.GetDuration()
  439. dms.LineArray = append(dms.LineArray, lssrv)
  440. }
  441. }
  442. tmsrv.DayModelDict[dms.DayModelNr] = dms
  443. }
  444. return
  445. }