chart_info.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. package data
  2. import (
  3. "fmt"
  4. "hongze/hongze_chart_lib/models/data_manage"
  5. "hongze/hongze_chart_lib/utils"
  6. "sort"
  7. "strconv"
  8. "time"
  9. )
  10. func ChartInfoRefreshV1(chartInfoId int) (err error) {
  11. var errmsg string
  12. defer func() {
  13. if err != nil {
  14. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "ChartInfoRefresh:"+errmsg, utils.EmailSendToUsers)
  15. fmt.Println("ChartInfoRefresh Err:" + errmsg)
  16. }
  17. }()
  18. baseEdbInfoArr, calculateInfoArr, err := data_manage.GetChartInfoRefreshData(chartInfoId)
  19. if err != nil {
  20. errmsg = "获取需要刷新的指标失败:Err:" + err.Error()
  21. return
  22. }
  23. var startDate string
  24. newBaseEdbInfoArr := make([]*data_manage.EdbInfo, 0)
  25. baseMap := make(map[int]*data_manage.EdbInfo)
  26. for _, bv := range baseEdbInfoArr {
  27. if _, ok := baseMap[bv.EdbInfoId]; !ok {
  28. newBaseEdbInfoArr = append(newBaseEdbInfoArr, bv)
  29. }
  30. baseMap[bv.EdbInfoId] = bv
  31. }
  32. fmt.Println("calculateInfoArr:", len(calculateInfoArr))
  33. newCalculateInfoArr := make([]*data_manage.EdbInfo, 0)
  34. calculateMap := make(map[int]*data_manage.EdbInfo)
  35. var calculateArr []int
  36. for _, bv := range calculateInfoArr {
  37. if _, ok := calculateMap[bv.EdbInfoId]; !ok {
  38. newCalculateInfoArr = append(newCalculateInfoArr, bv)
  39. calculateArr = append(calculateArr, bv.EdbInfoId)
  40. }
  41. calculateMap[bv.EdbInfoId] = bv
  42. }
  43. sort.Ints(calculateArr)
  44. for _, bv := range newBaseEdbInfoArr {
  45. source := bv.Source
  46. edbInfoId := bv.EdbInfoId
  47. edbCode := bv.EdbCode
  48. startDate = bv.StartDate
  49. sTime, err := time.Parse(utils.FormatDate, bv.EndDate)
  50. if err != nil {
  51. return err
  52. }
  53. startDate = sTime.Format(utils.FormatDate)
  54. if source == utils.DATA_SOURCE_THS {
  55. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  56. err = RefreshEdbDataByThs(edbInfoId, edbCode, startDate, endDate)
  57. if err != nil {
  58. errmsg = "RefreshEdbDataByThs Err:" + err.Error()
  59. }
  60. } else if source == utils.DATA_SOURCE_WIND {
  61. endDate := time.Now().Format(utils.FormatDate)
  62. err = RefreshEdbDataByWind(edbInfoId, edbCode, startDate, endDate)
  63. if err != nil {
  64. errmsg = "RefreshEdbDataByWind Err:" + err.Error()
  65. }
  66. } else if source == utils.DATA_SOURCE_PB {
  67. startDate := sTime.Format(utils.FormatDateUnSpace)
  68. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDateUnSpace)
  69. err = RefreshEdbDataByPb(edbInfoId, edbCode, startDate, endDate)
  70. if err != nil {
  71. errmsg = "RefreshEdbDataByPb Err:" + err.Error()
  72. }
  73. } else if source == utils.DATA_SOURCE_MANUAL {
  74. err = data_manage.RefreshAllEdbDataByManual(edbInfoId, bv.Source, edbCode)
  75. if err != nil {
  76. errmsg = "RefreshEdbDataByManual Err:" + err.Error()
  77. }
  78. } else if source == utils.DATA_SOURCE_LZ {
  79. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  80. err = data_manage.RefreshEdbDataByLz(edbInfoId, edbCode, startDate, endDate)
  81. if err != nil {
  82. errmsg = "RefreshEdbDataByLz Err:" + err.Error()
  83. }
  84. } else if source == utils.DATA_SOURCE_YS {
  85. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  86. err = data_manage.RefreshAllEdbDataByYs(edbInfoId, source, edbCode, startDate, endDate)
  87. if err != nil {
  88. errmsg = "RefreshEdbDataByYs Err:" + err.Error()
  89. }
  90. } else if source == utils.DATA_SOURCE_GL {
  91. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  92. err = data_manage.RefreshEdbDataByGl(edbInfoId, edbCode, startDate, endDate)
  93. if err != nil {
  94. errmsg = "RefreshEdbDataByGl Err:" + err.Error()
  95. }
  96. } else if source == utils.DATA_SOURCE_LT {
  97. endDate := time.Now().Format(utils.FormatDate)
  98. err = data_manage.RefreshAllEdbDataByLt(edbInfoId, source, edbCode, startDate, endDate)
  99. if err != nil {
  100. errmsg = "RefreshAllEdbDataByLT Err:" + err.Error()
  101. }
  102. } else if source == utils.DATA_SOURCE_COAL {
  103. endDate := time.Now().Format(utils.FormatDate)
  104. err = data_manage.RefreshAllEdbDataByCoal(edbInfoId, source, edbCode, startDate, endDate)
  105. if err != nil {
  106. errmsg = "RefreshAllEdbDataByCoal Err:" + err.Error()
  107. }
  108. }
  109. maxAndMinItem, err := data_manage.GetEdbInfoMaxAndMinInfo(source, edbCode)
  110. if err != nil {
  111. return err
  112. }
  113. if maxAndMinItem != nil {
  114. err = data_manage.ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
  115. if err != nil {
  116. return err
  117. }
  118. }
  119. }
  120. endDate := "" //计算指标不限制日期
  121. //刷新相关计算指标
  122. for _, v := range calculateArr {
  123. edbInfo := calculateMap[v]
  124. if edbInfo == nil {
  125. return err
  126. }
  127. edbInfoId := edbInfo.EdbInfoId
  128. source := edbInfo.Source
  129. edbCode := edbInfo.EdbCode
  130. if source == utils.DATA_SOURCE_CALCULATE {
  131. startDate = edbInfo.StartDate
  132. sTime, err := time.Parse(utils.FormatDate, edbInfo.EndDate)
  133. if err != nil {
  134. return err
  135. }
  136. startDate = sTime.Format(utils.FormatDate)
  137. var edbInfoIdBytes []string
  138. calculateMap, err := data_manage.GetEdbInfoCalculateDetail(edbInfoId, edbInfo.Source)
  139. if err != nil {
  140. errmsg = "GetEdbInfoCalculateDetail Err:" + err.Error()
  141. return err
  142. }
  143. var formulaStr string
  144. edbInfoList := make([]*data_manage.EdbInfo, 0)
  145. for _, v := range calculateMap {
  146. formulaStr += v.FromTag + ","
  147. edbInfoIdBytes = append(edbInfoIdBytes, v.FromTag)
  148. edbInfo, _ := data_manage.GetEdbInfoById(v.FromEdbInfoId)
  149. edbInfoList = append(edbInfoList, edbInfo)
  150. }
  151. err = data_manage.RefreshAllCalculate(edbInfoList, int(edbInfoId), source, edbInfo.EdbCode, edbInfo.CalculateFormula, startDate, endDate, edbInfoIdBytes)
  152. if err != nil {
  153. errmsg = "RefreshCalculate Err:" + err.Error()
  154. return err
  155. }
  156. } else if source == utils.DATA_SOURCE_CALCULATE_LJZZY { //刷新累计值转月值
  157. calculateLjzzy, err := data_manage.GetEdbInfoCalculateLjzzyDetail(edbInfoId)
  158. if err != nil {
  159. errmsg = "GetEdbInfoCalculateLjzzyDetail Err:" + err.Error()
  160. return err
  161. }
  162. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateLjzzy.FromEdbInfoId)
  163. if err != nil {
  164. errmsg = "GetEdbInfoById Err:" + err.Error()
  165. return err
  166. }
  167. startDate = edbInfo.StartDate
  168. endDate = time.Now().Format(utils.FormatDate)
  169. err = data_manage.RefreshAllCalculateLjzzy(edbInfoId, source, fromEdbInfo, calculateLjzzy.EdbCode, startDate, endDate)
  170. if err != nil {
  171. errmsg = "RefreshAllCalculateLjzzy Err:" + err.Error()
  172. return err
  173. }
  174. } else if source == utils.DATA_SOURCE_CALCULATE_TBZ { //刷新同比值
  175. calculateTbz, err := data_manage.GetEdbInfoCalculateTbzDetail(edbInfoId)
  176. if err != nil {
  177. errmsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
  178. return err
  179. }
  180. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  181. if err != nil {
  182. errmsg = "GetEdbInfoById Err:" + err.Error()
  183. return err
  184. }
  185. startDate = edbInfo.StartDate
  186. endDate = time.Now().Format(utils.FormatDate)
  187. err = data_manage.RefreshAllCalculateTbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
  188. if err != nil {
  189. errmsg = "RefreshAllCalculateTbz Err:" + err.Error()
  190. return err
  191. }
  192. } else if source == utils.DATA_SOURCE_CALCULATE_TCZ { //同差值
  193. calculateTcz, err := data_manage.GetEdbInfoCalculateTczDetail(edbInfoId)
  194. if err != nil {
  195. errmsg = "GetEdbInfoCalculateTczDetail Err:" + err.Error()
  196. return err
  197. }
  198. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateTcz.FromEdbInfoId)
  199. if err != nil {
  200. errmsg = "GetEdbInfoById Err:" + err.Error()
  201. return err
  202. }
  203. startDate = edbInfo.StartDate
  204. endDate = time.Now().Format(utils.FormatDate)
  205. err = data_manage.RefreshAllCalculateTcz(edbInfoId, source, fromEdbInfo, calculateTcz.EdbCode, startDate, endDate)
  206. if err != nil {
  207. errmsg = "RefreshCalculateTcz Err:" + err.Error()
  208. return err
  209. }
  210. } else if source == utils.DATA_SOURCE_CALCULATE_NSZYDPJJS { //N数值移动平均计算
  211. calculateNszydpjjs, err := data_manage.GetEdbInfoCalculateNszydpjjsDetail(edbInfoId)
  212. if err != nil {
  213. errmsg = "GetEdbInfoCalculateNszydpjjsDetail Err:" + err.Error()
  214. return err
  215. }
  216. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateNszydpjjs.FromEdbInfoId)
  217. if err != nil {
  218. errmsg = "GetEdbInfoById Err:" + err.Error()
  219. return err
  220. }
  221. formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
  222. startDate = edbInfo.StartDate
  223. err = data_manage.RefreshAllCalculateNszydpjjs(edbInfoId, edbInfo.Source, formulaInt, fromEdbInfo, calculateNszydpjjs.EdbCode, startDate)
  224. if err != nil {
  225. errmsg = "RefreshCalculateNszydpjjs Err:" + err.Error()
  226. return err
  227. }
  228. } else if source == utils.DATA_SOURCE_CALCULATE_HBZ { //刷新环比值
  229. calculateTbz, err := data_manage.GetEdbInfoCalculateHbzDetail(edbInfoId)
  230. if err != nil {
  231. errmsg = "GetEdbInfoCalculateHbzDetail Err:" + err.Error()
  232. return err
  233. }
  234. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  235. if err != nil {
  236. errmsg = "GetEdbInfoById Err:" + err.Error()
  237. return err
  238. }
  239. startDate = edbInfo.StartDate
  240. endDate = time.Now().Format(utils.FormatDate)
  241. formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
  242. err = data_manage.RefreshAllCalculateHbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
  243. if err != nil {
  244. errmsg = "RefreshAllCalculateHbz Err:" + err.Error()
  245. return err
  246. }
  247. } else if source == utils.DATA_SOURCE_CALCULATE_HCZ { //刷新环差值
  248. calculateTbz, err := data_manage.GetEdbInfoCalculateHczDetail(edbInfoId)
  249. if err != nil {
  250. errmsg = "GetEdbInfoCalculateHczDetail Err:" + err.Error()
  251. return err
  252. }
  253. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  254. if err != nil {
  255. errmsg = "GetEdbInfoById Err:" + err.Error()
  256. return err
  257. }
  258. startDate = edbInfo.StartDate
  259. endDate = time.Now().Format(utils.FormatDate)
  260. formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
  261. err = data_manage.RefreshAllCalculateHcz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
  262. if err != nil {
  263. errmsg = "RefreshAllCalculateHcz Err:" + err.Error()
  264. return err
  265. }
  266. } else if source == utils.DATA_SOURCE_CALCULATE_BP { //刷新变频
  267. calculateTbz, err := data_manage.GetEdbInfoCalculateBpDetail(edbInfoId)
  268. if err != nil {
  269. errmsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
  270. return err
  271. }
  272. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  273. if err != nil {
  274. errmsg = "GetEdbInfoById Err:" + err.Error()
  275. return err
  276. }
  277. startDate = edbInfo.StartDate
  278. endDate = time.Now().Format(utils.FormatDate)
  279. err = data_manage.RefreshAllCalculateBp(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
  280. if err != nil {
  281. errmsg = "RefreshAllCalculateBp Err:" + err.Error()
  282. return err
  283. }
  284. } else if source == utils.DATA_SOURCE_CALCULATE_ZJPJ { //刷新直接拼接数据
  285. err = data_manage.RefreshAllCalculateZjpj(edbInfo)
  286. if err != nil {
  287. errmsg = "RefreshAllCalculateZjpj Err:" + err.Error()
  288. return err
  289. }
  290. } else if source == utils.DATA_SOURCE_CALCULATE_LJZTBPJ { //刷新累计值同比拼接数据
  291. err = data_manage.RefreshAllCalculateLjztbpj(edbInfo)
  292. if err != nil {
  293. errmsg = "RefreshAllCalculateLjztbpj Err:" + err.Error()
  294. return err
  295. }
  296. }
  297. maxAndMinItem, err := data_manage.GetEdbInfoMaxAndMinInfo(source, edbCode)
  298. if err != nil {
  299. return err
  300. }
  301. if maxAndMinItem != nil {
  302. err = data_manage.ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
  303. if err != nil {
  304. return err
  305. }
  306. }
  307. fmt.Println("end calculateArr:", v, time.Now())
  308. }
  309. return err
  310. }