commodity_coal_watch.go 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package services
  2. import (
  3. "context"
  4. "eta/eta_crawler/utils"
  5. "fmt"
  6. "io/fs"
  7. "os"
  8. "path/filepath"
  9. "strings"
  10. "syscall"
  11. "time"
  12. "github.com/patrickmn/go-cache"
  13. )
  14. func CoalWatchTask(cont context.Context) (err error) {
  15. ReadWatchIndexFile()
  16. return
  17. }
  18. func ReadWatchIndexFile() {
  19. fmt.Println("ReadWatchIndexFile start")
  20. var err error
  21. defer func() {
  22. if err != nil {
  23. fmt.Println("ReadWatchIndexFile Err:" + err.Error())
  24. }
  25. }()
  26. var cacheClient *cache.Cache
  27. if cacheClient == nil {
  28. cacheClient = cache.New(365*24*time.Hour, 365*24*time.Hour)
  29. }
  30. err = filepath.Walk(utils.CoalFilePath, func(path string, info fs.FileInfo, err error) error {
  31. if err != nil {
  32. return err
  33. }
  34. if !info.IsDir() {
  35. fileInfo, err := os.Stat(path)
  36. if err != nil {
  37. fmt.Println("os.Stat:", err.Error())
  38. }
  39. winFileAttr := fileInfo.Sys().(*syscall.Win32FileAttributeData)
  40. modifyTimeStr := utils.SecondToTime(winFileAttr.LastWriteTime.Nanoseconds() / 1e9).Format(utils.FormatDateTime)
  41. existModifyTime, ok := cacheClient.Get(path)
  42. if ok {
  43. existModifyTimeStr := existModifyTime.(string)
  44. if existModifyTimeStr != modifyTimeStr {
  45. if strings.Contains(path, "442家晋陕蒙煤矿周度产量数据") {
  46. err = Jsm(path)
  47. } else if strings.Contains(path, "内陆17省动力煤终端用户供耗存") {
  48. err = Inland(path)
  49. } else if strings.Contains(path, "沿海八省动力煤终端用户供耗存数据更新") {
  50. err = Coastal(path)
  51. } else if strings.Contains(path, "442家晋陕蒙历史数据") {
  52. err = JsmHistory(path)
  53. } else if strings.Contains(path, "CⅢ-8-16 25省市库存和日耗情况") {
  54. err = CoastalHistory(path)
  55. time.Sleep(time.Second * 10)
  56. err = InlandHistory(path)
  57. } else if strings.Contains(path, "分企业煤炭产量旬度数据") {
  58. err = Firm(path)
  59. }
  60. }
  61. } else {
  62. if strings.Contains(path, "442家晋陕蒙煤矿周度产量数据") {
  63. err = Jsm(path)
  64. } else if strings.Contains(path, "内陆17省动力煤终端用户供耗存") {
  65. err = Inland(path)
  66. } else if strings.Contains(path, "沿海八省动力煤终端用户供耗存数据更新") {
  67. err = Coastal(path)
  68. } else if strings.Contains(path, "442家晋陕蒙历史数据") {
  69. err = JsmHistory(path)
  70. } else if strings.Contains(path, "CⅢ-8-16 25省市库存和日耗情况") {
  71. err = CoastalHistory(path)
  72. time.Sleep(time.Second * 10)
  73. err = InlandHistory(path)
  74. } else if strings.Contains(path, "分企业煤炭产量旬度数据") {
  75. err = Firm(path)
  76. }
  77. }
  78. cacheClient.Delete(path)
  79. cacheClient.Set(path, modifyTimeStr, 24*time.Hour)
  80. }
  81. return nil
  82. })
  83. }