d_service.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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. }
  18. func GetCopyDir(bagDataDir string, faultTime string) string {
  19. return bagDataDir + faultTime + "/"
  20. }
  21. // SupplyCopyBags 如果 Copy目录下的包不够,则补充一些
  22. func SupplyCopyBags(bagDataDir string, bagCopyDir string, currentTimeWindow entity.TimeWindow) {
  23. // 如果bag包没有达到length,补充几个
  24. copyBags, _ := util.ListAbsolutePathWithSuffixAndSort(GetCopyDir(bagCopyDir, currentTimeWindow.FaultTime), ".bag")
  25. copyBagsLength := len(copyBags)
  26. if copyBagsLength < currentTimeWindow.Length {
  27. time.Sleep(time.Duration(copyBagsLength) * time.Second)
  28. dataBags, _ := util.ListAbsolutePathWithSuffixAndSort(bagDataDir, ".bag")
  29. gap := currentTimeWindow.Length - copyBagsLength
  30. c_log.GlobalLogger.Info("故障 ", currentTimeWindow.FaultTime, "需要补充 ", gap, " 个 bag 包")
  31. for _, bag := range dataBags {
  32. bagTime := util.GetBagTime(bag)
  33. if util.TimeCustom1GreaterEqualThanTimeCustom2(bagTime, currentTimeWindow.FaultTime) {
  34. MoveFromDataToCopy(currentTimeWindow.FaultTime, bagDataDir, bag, bagCopyDir)
  35. gap = gap - 1
  36. if gap == 0 {
  37. break
  38. }
  39. }
  40. }
  41. }
  42. }