processor_factory.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package main
  2. import (
  3. "eta/eta_data_analysis/models"
  4. "fmt"
  5. )
  6. type ReportProcessor interface {
  7. Process(string, string, int, []string) ([]models.BaseFromRzdData, error)
  8. }
  9. func GetProcessor(tableName string, sheetName string) (ReportProcessor, error) {
  10. if tableName == "Oil_Demand_Signals_Weekly_Report" {
  11. switch sheetName {
  12. case "Road Index":
  13. return &RoadIndexProcessor{}, nil
  14. case "Road Active Fleet":
  15. return &RoadActiveFleetProcessor{}, nil
  16. case "Aviation Index":
  17. return &AviationIndexProcessor{}, nil
  18. case "Aviation Active Fleet":
  19. return &AviationActiveFleetProcessor{}, nil
  20. case "Demand - Gasoline":
  21. return &DemandGasolineProcessor{}, nil
  22. case "Demand - Diesel":
  23. return &DemandDieselProcessor{}, nil
  24. case "Demand - Jet Fuel":
  25. return &DemandJetFuelProcessor{}, nil
  26. case "Demand - Maritime Bunker":
  27. return &DemandMaritimeBunkerProcessor{}, nil
  28. default:
  29. return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  30. }
  31. } else if tableName == "Supply_Revision_Analysis" {
  32. switch sheetName {
  33. case "Chart1":
  34. return &SupplyRevisionAnalysisChartOneProcessor{}, nil
  35. case "Chart2":
  36. return &SupplyRevisionAnalysisChartTwoProcessor{}, nil
  37. case "Chart3":
  38. return &SupplyRevisionAnalysisChartThreeProcessor{}, nil
  39. case "Chart4":
  40. return &SupplyRevisionAnalysisChartFourProcessor{}, nil
  41. case "Chart5":
  42. return &SupplyRevisionAnalysisChartFiveProcessor{}, nil
  43. case "Chart6":
  44. return &SupplyRevisionAnalysisChartSixProcessor{}, nil
  45. default:
  46. return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  47. }
  48. } else if tableName == "Oil_Supply_Analysis" {
  49. switch sheetName {
  50. case "Chart1":
  51. return &OilSupplyAnalysisChartOneProcessor{}, nil
  52. case "Chart2":
  53. return &OilSupplyAnalysisChartTwoProcessor{}, nil
  54. case "Chart3":
  55. return &OilSupplyAnalysisChartThreeProcessor{}, nil
  56. case "Chart4":
  57. return &OilSupplyAnalysisChartFourProcessor{}, nil
  58. default:
  59. return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  60. }
  61. } else if tableName == "Oil_Demand_Analysis_Continent" {
  62. switch sheetName {
  63. case "Chart1":
  64. return &OilDemandAnalysisContinentProcessor{}, nil
  65. default:
  66. return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  67. }
  68. } else if tableName == "Oil_Demand_Analysis_Region" {
  69. switch sheetName {
  70. case "Chart1":
  71. return &OilDemandAnalysisRegionProcessor{}, nil
  72. default:
  73. return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  74. }
  75. } else if tableName == "Oil_Demand_Analysis_Country" {
  76. switch sheetName {
  77. case "Chart1":
  78. return &OilDemandAnalysisCountryProcessor{}, nil
  79. default:
  80. return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  81. }
  82. } else if tableName == "Oil_Demand_Analysis_Product_Category" {
  83. switch sheetName {
  84. case "Chart1":
  85. return &OilDemandAnalysisProductCategoryProcessor{}, nil
  86. default:
  87. return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  88. }
  89. } else if tableName == "Oil_Demand_Analysis_Product_Detail" {
  90. switch sheetName {
  91. case "Chart1":
  92. return &OilDemandAnalysisProductDetailProcessor{}, nil
  93. default:
  94. return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  95. }
  96. } else if tableName == "Oil_Demand_Analysis_Sector_Category" {
  97. switch sheetName {
  98. case "Chart1":
  99. return &OilDemandAnalysisSectorCategoryProcessor{}, nil
  100. default:
  101. return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  102. }
  103. } else if tableName == "Oil_Demand_Analysis_Sector_Detail" {
  104. switch sheetName {
  105. case "Chart1":
  106. return &OilDemandAnalysisSectorDetailProcessor{}, nil
  107. default:
  108. return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  109. }
  110. } else if tableName == "Oil_Demand_Analysis_Scenario" {
  111. switch sheetName {
  112. case "Chart1":
  113. return &OilDemandAnalysisScenarioProcessor{}, nil
  114. default:
  115. return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  116. }
  117. }
  118. // 可以添加更多的逻辑来处理其他产品和类别
  119. return nil, fmt.Errorf("no processor found for tableName %s and sheetName %s", tableName, sheetName)
  120. }