fenwei_watch.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package services
  2. import (
  3. "context"
  4. "eta/eta_data_analysis/utils"
  5. "fmt"
  6. "io/fs"
  7. "os"
  8. "path/filepath"
  9. "sync"
  10. )
  11. // HandleExcelFilePathMutex 创建一个互斥锁
  12. var HandleExcelFilePathMutex sync.Mutex
  13. func FenweiReadWatchIndexFile(context.Context) (err error) {
  14. defer func() {
  15. if err != nil {
  16. fmt.Println("FenweiReadWatchIndexFile Err:" + err.Error())
  17. utils.FileLog.Info(fmt.Sprintf("FenweiReadWatchIndexFile Err: %s", err.Error()))
  18. }
  19. }()
  20. if utils.FenweiFileDir == "" {
  21. utils.FileLog.Info("文件目录未配置")
  22. return
  23. }
  24. // 上一个监听未结束时不执行
  25. HandleExcelFilePathMutex.Lock()
  26. defer HandleExcelFilePathMutex.Unlock()
  27. //fmt.Println("FenweiFileDir: ", utils.FenweiFileDir)
  28. err = filepath.Walk(utils.FenweiFileDir, func(path string, info fs.FileInfo, e error) error {
  29. if e != nil {
  30. err = fmt.Errorf("walk err: %s", e.Error())
  31. return err
  32. }
  33. if info.IsDir() {
  34. return nil
  35. }
  36. if path == "" {
  37. return nil
  38. }
  39. //fmt.Println("path", path)
  40. e = AnalysisFenweiNewExcel(path)
  41. if e != nil {
  42. err = fmt.Errorf("AnalysisFenweiNewExcel err: %s", e.Error())
  43. return err
  44. }
  45. // 移动文件至已处理目录
  46. e = utils.CreateDirIfNotExists(utils.FenweiOldFileDir)
  47. if e != nil {
  48. err = fmt.Errorf("CreateDirIfNotExists err: %s", e.Error())
  49. return err
  50. }
  51. destPath := filepath.Join(utils.FenweiOldFileDir, info.Name())
  52. e = os.Rename(path, destPath)
  53. if e != nil {
  54. err = fmt.Errorf("file move err: %s", e.Error())
  55. return err
  56. }
  57. return nil
  58. })
  59. return
  60. }