d_service.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package domain
  2. import (
  3. "cicv-data-closedloop/common/config/c_log"
  4. "cicv-data-closedloop/common/entity"
  5. "cicv-data-closedloop/common/util"
  6. "strings"
  7. "time"
  8. )
  9. func MoveFromDataToCopy(faultTime string, bagDataDir string, sourceBag string, bagCopyDir string) {
  10. dir := GetCopyDir(bagCopyDir, faultTime)
  11. _ = util.CreateDir(dir)
  12. targetBag := strings.Replace(sourceBag, bagDataDir, dir, 1)
  13. var copyCommand []string
  14. copyCommand = append(copyCommand, sourceBag)
  15. copyCommand = append(copyCommand, targetBag)
  16. _, _, _ = util.Execute("mv", copyCommand...)
  17. c_log.GlobalLogger.Infof("移动bag包 【%v】->【%v】", sourceBag, targetBag)
  18. }
  19. func GetCopyDir(bagDataDir string, faultTime string) string {
  20. return bagDataDir + faultTime + "/"
  21. }
  22. // SupplyCopyBags 如果 Copy目录下的包不够,则补充一些
  23. func SupplyCopyBags(bagDataDir string, bagCopyDir string, currentTimeWindow entity.TimeWindow) {
  24. // 如果bag包没有达到length,补充几个
  25. copyBags, _ := util.ListAbsolutePathWithSuffixAndSort(GetCopyDir(bagCopyDir, currentTimeWindow.FaultTime), ".bag")
  26. copyBagsLength := len(copyBags)
  27. if copyBagsLength >= currentTimeWindow.Length {
  28. return
  29. }
  30. // 等待差距时间
  31. gap := currentTimeWindow.Length - copyBagsLength
  32. time.Sleep(time.Duration(gap) * time.Second)
  33. // 获取data目录下的包列表
  34. dataBags, _ := util.ListAbsolutePathWithSuffixAndSort(bagDataDir, ".bag")
  35. c_log.GlobalLogger.Info("故障 ", currentTimeWindow.FaultTime, "需要补充 ", gap, " 个 bag 包")
  36. for _, bag := range dataBags {
  37. bagTime := util.GetBagTime(bag)
  38. if util.TimeCustom1GreaterEqualThanTimeCustom2(bagTime, currentTimeWindow.FaultTime) {
  39. MoveFromDataToCopy(currentTimeWindow.FaultTime, bagDataDir, bag, bagCopyDir)
  40. gap = gap - 1
  41. if gap == 0 {
  42. break
  43. }
  44. }
  45. }
  46. }