processor_factory.go 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. package ruizide
  2. import (
  3. "eta/eta_data_analysis/models"
  4. "fmt"
  5. )
  6. var (
  7. RzdClassifyMap = make(map[string]*models.BaseFromRzdClassify)
  8. classifyMap = map[string]models.RzdClassifyMapStruct{
  9. "Road Index": {
  10. ClassifyName: "Road Index",
  11. Sort: 1,
  12. },
  13. "Road Active Fleet": {
  14. ClassifyName: "Road Active Fleet",
  15. Sort: 2,
  16. },
  17. "Aviation Index": {
  18. ClassifyName: "Aviation Index",
  19. Sort: 3,
  20. },
  21. "Aviation Active Fleet": {
  22. ClassifyName: "Aviation Active Fleet",
  23. Sort: 4,
  24. },
  25. "Demand - Gasoline": {
  26. ClassifyName: "Demand - Gasoline",
  27. Sort: 5,
  28. },
  29. "Demand - Diesel": {
  30. ClassifyName: "Demand - Diesel",
  31. Sort: 6,
  32. },
  33. "Demand - Jet Fuel": {
  34. ClassifyName: "Demand - Jet Fuel",
  35. Sort: 7,
  36. },
  37. "Demand - Maritime Bunker": {
  38. ClassifyName: "Demand - Maritime Bunker",
  39. Sort: 8,
  40. },
  41. "Oil_Demand_Signals_Weekly_Report": {
  42. ClassifyName: "analytics library",
  43. Sort: 1,
  44. },
  45. "cube dashboards": {
  46. ClassifyName: "cube dashboards",
  47. Sort: 2,
  48. },
  49. "Oil Market Cube": {
  50. ClassifyName: "Oil Market Cube",
  51. Sort: 3,
  52. },
  53. "Supply Revision Analysis": {
  54. ClassifyName: "Supply Revision Analysis",
  55. Sort: 1,
  56. },
  57. "Oil Supply Analysis": {
  58. ClassifyName: "Oil Supply Analysis",
  59. Sort: 2,
  60. },
  61. }
  62. )
  63. type ReportProcessor interface {
  64. Process(string, string, int, []string) ([]models.BaseFromRzdData, error)
  65. }
  66. type RzdDataProcessor interface {
  67. Process(tableName string) error
  68. }
  69. func GetProcessor(tableName string, sheetName string) (ReportProcessor, error) {
  70. //else if tableName == "Oil_Demand_Analysis_Continent" {
  71. // switch sheetName {
  72. // case "Chart1":
  73. // return &OilDemandAnalysisContinentProcessor{}, nil
  74. // default:
  75. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  76. // }
  77. //} else if tableName == "Oil_Demand_Analysis_Region" {
  78. // switch sheetName {
  79. // case "Chart1":
  80. // return &OilDemandAnalysisRegionProcessor{}, nil
  81. // default:
  82. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  83. // }
  84. //} else if tableName == "Oil_Demand_Analysis_Country" {
  85. // switch sheetName {
  86. // case "Chart1":
  87. // return &OilDemandAnalysisCountryProcessor{}, nil
  88. // default:
  89. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  90. // }
  91. //} else if tableName == "Oil_Demand_Analysis_Product_Category" {
  92. // switch sheetName {
  93. // case "Chart1":
  94. // return &OilDemandAnalysisProductCategoryProcessor{}, nil
  95. // default:
  96. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  97. // }
  98. //} else if tableName == "Oil_Demand_Analysis_Product_Detail" {
  99. // switch sheetName {
  100. // case "Chart1":
  101. // return &OilDemandAnalysisProductDetailProcessor{}, nil
  102. // default:
  103. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  104. // }
  105. //} else if tableName == "Oil_Demand_Analysis_Sector_Category" {
  106. // switch sheetName {
  107. // case "Chart1":
  108. // return &OilDemandAnalysisSectorCategoryProcessor{}, nil
  109. // default:
  110. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  111. // }
  112. //} else if tableName == "Oil_Demand_Analysis_Sector_Detail" {
  113. // switch sheetName {
  114. // case "Chart1":
  115. // return &OilDemandAnalysisSectorDetailProcessor{}, nil
  116. // default:
  117. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  118. // }
  119. //} else if tableName == "Oil_Demand_Analysis_Scenario" {
  120. // switch sheetName {
  121. // case "Chart1":
  122. // return &OilDemandAnalysisScenarioProcessor{}, nil
  123. // default:
  124. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  125. // }
  126. //} else if tableName == "Oil_Market_Cube_Upstream_Supply_Oil_Quality_Api" {
  127. // switch sheetName {
  128. // case "ExportCubeBrowser 1":
  129. // return &UpstreamSupplyOilQualityApiProcessor{}, nil
  130. // default:
  131. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  132. // }
  133. //} else if tableName == "Oil_Market_Cube_Upstream_Supply_Oil_Quality_Sulphur" {
  134. // switch sheetName {
  135. // case "ExportCubeBrowser 1":
  136. // return &OilMarketCubeUpstreamSupplyOilQualitySulphurProcessor{}, nil
  137. // default:
  138. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  139. // }
  140. //} else if tableName == "Oil_Market_Cube_Upstream_Supply_Capacity_Capacity" {
  141. // switch sheetName {
  142. // case "ExportCubeBrowser 1":
  143. // return &OilMarketCubeUpstreamSupplyCapacityCapacityProcessor{}, nil
  144. // default:
  145. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  146. // }
  147. //} else if tableName == "Oil_Market_Cube_Upstream_Supply_Production" {
  148. // switch sheetName {
  149. // case "ExportCubeBrowser 1":
  150. // return &OilMarketCubeUpstreamSupplyProductionProcessor{}, nil
  151. // default:
  152. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  153. // }
  154. //} else if tableName == "Oil_Market_Cube_Upstream_Supply_Production_Wo_Seasonality" {
  155. // switch sheetName {
  156. // case "ExportCubeBrowser 1":
  157. // return &UpstreamSupplyProductionWoSeasonalityProcessor{}, nil
  158. // default:
  159. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  160. // }
  161. //} else if tableName == "Oil_Market_Cube_Upstream_Supply_OPEC_Policy_Reference_Production" {
  162. // switch sheetName {
  163. // case "ExportCubeBrowser 1":
  164. // return &UpstreamSupplyOPECPolicyReferenceProductionProcessor{}, nil
  165. // default:
  166. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  167. // }
  168. //} else if tableName == "Oil_Market_Cube_Upstream_Supply_OPEC_Policy_Target_Production" {
  169. // switch sheetName {
  170. // case "ExportCubeBrowser 1":
  171. // return &UpstreamSupplyOPECPolicyTargetProductionProcessor{}, nil
  172. // default:
  173. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  174. // }
  175. //} else if tableName == "Oil_Market_Cube_Upstream_Supply_OPEC_Policy_Target_Cut" {
  176. // switch sheetName {
  177. // case "ExportCubeBrowser 1":
  178. // return &UpstreamSupplyOPECPolicyTargetCutProcessor{}, nil
  179. // default:
  180. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  181. // }
  182. //} else if tableName == "Oil_Market_Cube_Upstream_Supply_OPEC_Policy_Actual_Cut" {
  183. // switch sheetName {
  184. // case "ExportCubeBrowser 1":
  185. // return &UpstreamSupplyOPECPolicyActualCutProcessor{}, nil
  186. // default:
  187. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  188. // }
  189. //} else if tableName == "Oil_Market_Cube_Upstream_Supply_OPEC_Policy_Compliance" {
  190. // switch sheetName {
  191. // case "ExportCubeBrowser 1":
  192. // return &UpstreamSupplyOPECPolicyComplianceProcessor{}, nil
  193. // default:
  194. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  195. // }
  196. //} else if tableName == "Oil_Market_Cube_Upstream_Supply_OPEC_Policy_Production_Subject_To_Cut" {
  197. // switch sheetName {
  198. // case "ExportCubeBrowser 1":
  199. // return &UpstreamSupplyOPECPolicyProductionSubjectToCutProcessor{}, nil
  200. // default:
  201. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  202. // }
  203. //} else if tableName == "Oil_Market_Cube_Products_Demand_Products_Demand_Mean" {
  204. // switch sheetName {
  205. // case "ExportCubeBrowser 1":
  206. // return &ProductsDemandProductsDemandMeanProcessor{}, nil
  207. // default:
  208. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  209. // }
  210. //} else if tableName == "Oil_Market_Cube_Products_Demand_Products_Demand+Sigma" {
  211. // switch sheetName {
  212. // case "ExportCubeBrowser 1":
  213. // return &ProductsDemandProductsDemandAddSigmaProcessor{}, nil
  214. // default:
  215. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  216. // }
  217. //} else if tableName == "Oil_Market_Cube_Products_Demand_Products_Demand-Sigma" {
  218. // switch sheetName {
  219. // case "ExportCubeBrowser 1":
  220. // return &ProductsDemandProductsDemandSubSigmaProcessor{}, nil
  221. // default:
  222. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  223. // }
  224. //} else if tableName == "Oil_Market_Cube_Balances_Total_Liquids_Balances" {
  225. // switch sheetName {
  226. // case "ExportCubeBrowser 1":
  227. // return &BalancesTotalLiquidsBalancesProcessor{}, nil
  228. // default:
  229. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  230. // }
  231. //} else if tableName == "Oil_Market_Cube_Geography_Latitude" {
  232. // switch sheetName {
  233. // case "ExportCubeBrowser 1":
  234. // return &GeographyLatitudeProcessor{}, nil
  235. // default:
  236. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  237. // }
  238. //} else if tableName == "Oil_Market_Cube_Geography_Longitude" {
  239. // switch sheetName {
  240. // case "ExportCubeBrowser 1":
  241. // return &GeographyLongitudeProcessor{}, nil
  242. // default:
  243. // return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
  244. // }
  245. //}
  246. // 可以添加更多的逻辑来处理其他产品和类别
  247. return nil, fmt.Errorf("no processor found for tableName %s and sheetName %s", tableName, sheetName)
  248. }
  249. var RzdProcessorMap = map[string]RzdDataProcessor{
  250. "Oil_Demand_Signals_Weekly_Report": &OilDemandSignalsWeeklyReportProcessor{},
  251. "Supply_Revision_Analysis": &SupplyRevisionAnalysisProcessor{},
  252. "Oil_Supply_Analysis": &OilSupplyAnalysisProcessor{},
  253. }
  254. func GetRZDProcessor(tableName string) (RzdDataProcessor, error) {
  255. if processor, ok := RzdProcessorMap[tableName]; !ok {
  256. return nil, fmt.Errorf("no processor found for tableName %s", tableName)
  257. } else {
  258. return processor, nil
  259. }
  260. }