chart_info.go 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755
  1. package data
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hongze_chart_lib/models/data_manage"
  6. "hongze/hongze_chart_lib/utils"
  7. "sort"
  8. "strconv"
  9. "time"
  10. )
  11. func ChartInfoRefresh(chartInfoId int) (err error) {
  12. var errmsg string
  13. defer func() {
  14. if err != nil {
  15. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "ChartInfoRefresh:"+errmsg, utils.EmailSendToUsers)
  16. fmt.Println("ChartInfoRefresh Err:" + errmsg)
  17. }
  18. }()
  19. baseEdbInfoArr, calculateInfoArr, err := data_manage.GetChartInfoRefreshData(chartInfoId)
  20. if err != nil {
  21. errmsg = "获取需要刷新的指标失败:Err:" + err.Error()
  22. return
  23. }
  24. var startDate string
  25. newBaseEdbInfoArr := make([]*data_manage.EdbInfo, 0)
  26. baseMap := make(map[int]*data_manage.EdbInfo)
  27. for _, bv := range baseEdbInfoArr {
  28. if _, ok := baseMap[bv.EdbInfoId]; !ok {
  29. newBaseEdbInfoArr = append(newBaseEdbInfoArr, bv)
  30. }
  31. baseMap[bv.EdbInfoId] = bv
  32. }
  33. fmt.Println("calculateInfoArr:", len(calculateInfoArr))
  34. newCalculateInfoArr := make([]*data_manage.EdbInfo, 0)
  35. calculateMap := make(map[int]*data_manage.EdbInfo)
  36. var calculateArr []int
  37. for _, bv := range calculateInfoArr {
  38. if _, ok := calculateMap[bv.EdbInfoId]; !ok {
  39. newCalculateInfoArr = append(newCalculateInfoArr, bv)
  40. calculateArr = append(calculateArr, bv.EdbInfoId)
  41. }
  42. calculateMap[bv.EdbInfoId] = bv
  43. }
  44. sort.Ints(calculateArr)
  45. for _, bv := range newBaseEdbInfoArr {
  46. source := bv.Source
  47. edbInfoId := bv.EdbInfoId
  48. edbCode := bv.EdbCode
  49. startDate = bv.StartDate
  50. sTime, err := time.Parse(utils.FormatDate, bv.EndDate)
  51. if err != nil {
  52. return err
  53. }
  54. startDate = sTime.Format(utils.FormatDate)
  55. if source == utils.DATA_SOURCE_THS {
  56. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  57. err = RefreshEdbDataByThs(edbInfoId, edbCode, startDate, endDate)
  58. if err != nil {
  59. errmsg = "RefreshEdbDataByThs Err:" + err.Error()
  60. }
  61. } else if source == utils.DATA_SOURCE_WIND {
  62. endDate := time.Now().Format(utils.FormatDate)
  63. err = RefreshEdbDataByWind(edbInfoId, edbCode, startDate, endDate)
  64. if err != nil {
  65. errmsg = "RefreshEdbDataByWind Err:" + err.Error()
  66. }
  67. } else if source == utils.DATA_SOURCE_PB {
  68. startDate := sTime.Format(utils.FormatDateUnSpace)
  69. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDateUnSpace)
  70. err = RefreshEdbDataByPb(edbInfoId, edbCode, startDate, endDate)
  71. if err != nil {
  72. errmsg = "RefreshEdbDataByPb Err:" + err.Error()
  73. }
  74. } else if source == utils.DATA_SOURCE_MANUAL {
  75. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  76. err = data_manage.RefreshEdbDataByManual(edbInfoId, edbCode, startDate, endDate)
  77. if err != nil {
  78. errmsg = "RefreshEdbDataByManual Err:" + err.Error()
  79. }
  80. } else if source == utils.DATA_SOURCE_LZ {
  81. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  82. err = data_manage.RefreshEdbDataByLz(edbInfoId, edbCode, startDate, endDate)
  83. if err != nil {
  84. errmsg = "RefreshEdbDataByLz Err:" + err.Error()
  85. }
  86. } else if source == utils.DATA_SOURCE_YS {
  87. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  88. err = data_manage.RefreshAllEdbDataByYs(edbInfoId, source, edbCode, startDate, endDate)
  89. if err != nil {
  90. errmsg = "RefreshEdbDataByYs Err:" + err.Error()
  91. }
  92. } else if source == utils.DATA_SOURCE_GL {
  93. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  94. err = data_manage.RefreshEdbDataByGl(edbInfoId, edbCode, startDate, endDate)
  95. if err != nil {
  96. errmsg = "RefreshEdbDataByGl Err:" + err.Error()
  97. }
  98. }else if source == utils.DATA_SOURCE_LT {
  99. endDate := time.Now().Format(utils.FormatDate)
  100. err = data_manage.RefreshAllEdbDataByLt(edbInfoId, source, edbCode, startDate, endDate)
  101. if err != nil {
  102. errmsg = "RefreshAllEdbDataByLT Err:" + err.Error()
  103. }
  104. }else if source == utils.DATA_SOURCE_COAL {
  105. endDate := time.Now().Format(utils.FormatDate)
  106. err = data_manage.RefreshEdbDataByCoal(edbInfoId, edbCode, startDate, endDate)
  107. if err != nil {
  108. errmsg = "RefreshEdbDataByGl Err:" + err.Error()
  109. }
  110. }
  111. maxAndMinItem, err := data_manage.GetEdbInfoMaxAndMinInfo(source, edbCode)
  112. if err != nil {
  113. return err
  114. }
  115. if maxAndMinItem != nil {
  116. err = data_manage.ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
  117. if err != nil {
  118. return err
  119. }
  120. }
  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. fmt.Println("source:", source)
  131. fmt.Println("edbInfoId:", edbInfoId)
  132. if source == utils.DATA_SOURCE_CALCULATE { //指标运算
  133. startDate = edbInfo.StartDate
  134. sTime, err := time.Parse(utils.FormatDate, edbInfo.EndDate)
  135. if err != nil {
  136. return err
  137. }
  138. startDate = sTime.Format(utils.FormatDate)
  139. var edbInfoIdBytes []string
  140. calculateMap, err := data_manage.GetEdbInfoCalculateDetail(edbInfoId, edbInfo.Source)
  141. if err != nil {
  142. errmsg = "GetEdbInfoCalculateDetail Err:" + err.Error()
  143. return err
  144. }
  145. var formulaStr string
  146. edbInfoList := make([]*data_manage.EdbInfo, 0)
  147. for _, v := range calculateMap {
  148. formulaStr += v.FromTag + ","
  149. edbInfoIdBytes = append(edbInfoIdBytes, v.FromTag)
  150. edbInfo, _ := data_manage.GetEdbInfoById(v.FromEdbInfoId)
  151. edbInfoList = append(edbInfoList, edbInfo)
  152. }
  153. fmt.Println("start RefreshCalculate")
  154. endDate := ""
  155. err = RefreshCalculate(edbInfoList, int(edbInfoId), edbInfo.EdbCode, edbInfo.CalculateFormula, startDate, endDate, edbInfoIdBytes)
  156. if err != nil {
  157. errmsg = "RefreshCalculate Err:" + err.Error()
  158. return err
  159. }
  160. } else if source == utils.DATA_SOURCE_CALCULATE_LJZZY { //刷新累计值转月值
  161. calculateLjzzy, err := data_manage.GetEdbInfoCalculateLjzzyDetail(edbInfoId)
  162. if err != nil {
  163. errmsg = "GetEdbInfoCalculateLjzzyDetail Err:" + err.Error()
  164. return err
  165. }
  166. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateLjzzy.FromEdbInfoId)
  167. if err != nil {
  168. errmsg = "GetEdbInfoById Err:" + err.Error()
  169. return err
  170. }
  171. year := time.Now().Year()
  172. startDate = strconv.Itoa(year) + "-01" + "-01"
  173. endDate := ""
  174. err = data_manage.RefreshCalculateLjzzy(edbInfoId, fromEdbInfo, calculateLjzzy.EdbCode, startDate, endDate)
  175. if err != nil {
  176. errmsg = "RefreshCalculateLjzzy Err:" + err.Error()
  177. return err
  178. }
  179. } else if source == utils.DATA_SOURCE_CALCULATE_TBZ { //刷新同比值
  180. calculateTbz, err := data_manage.GetEdbInfoCalculateTbzDetail(edbInfoId)
  181. if err != nil {
  182. errmsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
  183. return err
  184. }
  185. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  186. if err != nil {
  187. errmsg = "GetEdbInfoById Err:" + err.Error()
  188. return err
  189. }
  190. startDate = time.Now().AddDate(-1, -2, 0).Format(utils.FormatDate)
  191. endDate := "" // time.Now().Format(utils.FormatDate)
  192. err = data_manage.RefreshCalculateTbz(edbInfoId, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
  193. if err != nil {
  194. errmsg = "RefreshCalculateTbz Err:" + err.Error()
  195. return err
  196. }
  197. } else if source == utils.DATA_SOURCE_CALCULATE_TCZ { //同差值
  198. calculateTcz, err := data_manage.GetEdbInfoCalculateTczDetail(edbInfoId)
  199. if err != nil {
  200. errmsg = "GetEdbInfoCalculateTczDetail Err:" + err.Error()
  201. return err
  202. }
  203. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateTcz.FromEdbInfoId)
  204. if err != nil {
  205. errmsg = "GetEdbInfoById Err:" + err.Error()
  206. return err
  207. }
  208. startDate = time.Now().AddDate(-1, -2, 0).Format(utils.FormatDate)
  209. endDate := "" //time.Now().Format(utils.FormatDate)
  210. err = data_manage.RefreshCalculateTcz(edbInfoId, fromEdbInfo, calculateTcz.EdbCode, startDate, endDate)
  211. if err != nil {
  212. errmsg = "RefreshCalculateTcz Err:" + err.Error()
  213. return err
  214. }
  215. } else if source == utils.DATA_SOURCE_CALCULATE_NSZYDPJJS { //N数值移动平均计算
  216. fmt.Println("刷新计算指标:", edbInfoId)
  217. calculateNszydpjjs, err := data_manage.GetEdbInfoCalculateNszydpjjsDetail(edbInfoId)
  218. if err != nil {
  219. errmsg = "GetEdbInfoCalculateNszydpjjsDetail Err:" + err.Error()
  220. return err
  221. }
  222. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateNszydpjjs.FromEdbInfoId)
  223. if err != nil {
  224. errmsg = "GetEdbInfoById Err:" + err.Error()
  225. return err
  226. }
  227. formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
  228. err = data_manage.RefreshCalculateNszydpjjs(edbInfoId, edbInfo.Source, formulaInt, fromEdbInfo, calculateNszydpjjs.EdbCode)
  229. if err != nil {
  230. errmsg = "RefreshCalculateNszydpjjs Err:" + err.Error()
  231. return err
  232. }
  233. } else if source == utils.DATA_SOURCE_CALCULATE_HBZ { //刷新环比
  234. calculateTbz, err := data_manage.GetEdbInfoCalculateHbzDetail(edbInfoId)
  235. if err != nil {
  236. errmsg = "GetEdbInfoCalculateHbzDetail Err:" + err.Error()
  237. return err
  238. }
  239. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  240. if err != nil {
  241. errmsg = "GetEdbInfoById Err:" + err.Error()
  242. return err
  243. }
  244. startDate = time.Now().AddDate(-1, -2, 0).Format(utils.FormatDate)
  245. endDate := "" //time.Now().Format(utils.FormatDate)
  246. err = data_manage.RefreshCalculateHbz(edbInfoId, edbInfo.Source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
  247. if err != nil {
  248. errmsg = "RefreshCalculateHbz Err:" + err.Error()
  249. return err
  250. }
  251. } else if source == utils.DATA_SOURCE_CALCULATE_HCZ { //刷新环差值
  252. calculateTbz, err := data_manage.GetEdbInfoCalculateHczDetail(edbInfoId)
  253. if err != nil {
  254. errmsg = "GetEdbInfoCalculateHczDetail Err:" + err.Error()
  255. return err
  256. }
  257. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  258. if err != nil {
  259. errmsg = "GetEdbInfoById Err:" + err.Error()
  260. return err
  261. }
  262. startDate = time.Now().AddDate(-1, -2, 0).Format(utils.FormatDate)
  263. endDate := "" //time.Now().Format(utils.FormatDate)
  264. err = data_manage.RefreshCalculateHcz(edbInfoId, edbInfo.Source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
  265. if err != nil {
  266. errmsg = "RefreshCalculateHcz Err:" + err.Error()
  267. return err
  268. }
  269. } else if source == utils.DATA_SOURCE_CALCULATE_BP { //刷新变频
  270. calculateTbz, err := data_manage.GetEdbInfoCalculateBpDetail(edbInfoId)
  271. if err != nil {
  272. errmsg = "GetEdbInfoCalculateBpDetail Err:" + err.Error()
  273. return err
  274. }
  275. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  276. if err != nil {
  277. errmsg = "GetEdbInfoById Err:" + err.Error()
  278. return err
  279. }
  280. startDate = time.Now().AddDate(-1, -2, 0).Format(utils.FormatDate)
  281. endDate := "" //time.Now().Format(utils.FormatDate)
  282. err = data_manage.RefreshCalculateBp(edbInfoId, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
  283. if err != nil {
  284. errmsg = "RefreshCalculateBp Err:" + err.Error()
  285. return err
  286. }
  287. }
  288. maxAndMinItem, err := data_manage.GetEdbInfoMaxAndMinInfo(source, edbCode)
  289. if err != nil {
  290. return err
  291. }
  292. if maxAndMinItem != nil {
  293. err = data_manage.ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
  294. if err != nil {
  295. return err
  296. }
  297. }
  298. }
  299. return err
  300. }
  301. // ChartInfoRefreshVOld 图表刷新(旧版,2022年03月25日11:35:06 作废)
  302. func ChartInfoRefreshVOld(chartInfoId int) (err error) {
  303. var errmsg string
  304. defer func() {
  305. if err != nil {
  306. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "ChartInfoRefresh:"+errmsg, utils.EmailSendToUsers)
  307. fmt.Println("ChartInfoRefresh Err:" + errmsg)
  308. }
  309. }()
  310. baseEdbInfoArr, calculateInfoArr, err := data_manage.GetChartInfoRefreshData(chartInfoId)
  311. if err != nil {
  312. errmsg = "获取需要刷新的指标失败:Err:" + err.Error()
  313. return
  314. }
  315. var startDate string
  316. newBaseEdbInfoArr := make([]*data_manage.EdbInfo, 0)
  317. baseMap := make(map[int]*data_manage.EdbInfo)
  318. for _, bv := range baseEdbInfoArr {
  319. if _, ok := baseMap[bv.EdbInfoId]; !ok {
  320. newBaseEdbInfoArr = append(newBaseEdbInfoArr, bv)
  321. }
  322. baseMap[bv.EdbInfoId] = bv
  323. }
  324. fmt.Println("calculateInfoArr:", len(calculateInfoArr))
  325. newCalculateInfoArr := make([]*data_manage.EdbInfo, 0)
  326. calculateMap := make(map[int]*data_manage.EdbInfo)
  327. var calculateArr []int
  328. for _, bv := range calculateInfoArr {
  329. if _, ok := calculateMap[bv.EdbInfoId]; !ok {
  330. newCalculateInfoArr = append(newCalculateInfoArr, bv)
  331. calculateArr = append(calculateArr, bv.EdbInfoId)
  332. }
  333. calculateMap[bv.EdbInfoId] = bv
  334. }
  335. sort.Ints(calculateArr)
  336. for _, bv := range newBaseEdbInfoArr {
  337. source := bv.Source
  338. edbInfoId := bv.EdbInfoId
  339. edbCode := bv.EdbCode
  340. startDate = bv.StartDate
  341. sTime, err := time.Parse(utils.FormatDate, bv.EndDate)
  342. if err != nil {
  343. return err
  344. }
  345. startDate = sTime.Format(utils.FormatDate)
  346. if source == utils.DATA_SOURCE_THS {
  347. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  348. err = RefreshEdbDataByThs(edbInfoId, edbCode, startDate, endDate)
  349. if err != nil {
  350. errmsg = "RefreshEdbDataByThs Err:" + err.Error()
  351. }
  352. } else if source == utils.DATA_SOURCE_WIND {
  353. endDate := time.Now().Format(utils.FormatDate)
  354. err = RefreshEdbDataByWind(edbInfoId, edbCode, startDate, endDate)
  355. if err != nil {
  356. errmsg = "RefreshEdbDataByWind Err:" + err.Error()
  357. }
  358. } else if source == utils.DATA_SOURCE_PB {
  359. startDate := sTime.Format(utils.FormatDateUnSpace)
  360. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDateUnSpace)
  361. err = RefreshEdbDataByPb(edbInfoId, edbCode, startDate, endDate)
  362. if err != nil {
  363. errmsg = "RefreshEdbDataByPb Err:" + err.Error()
  364. }
  365. } else if source == utils.DATA_SOURCE_MANUAL {
  366. err = data_manage.RefreshAllEdbDataByManual(edbInfoId,bv.Source, edbCode)
  367. if err != nil {
  368. errmsg = "RefreshEdbDataByManual Err:" + err.Error()
  369. }
  370. } else if source == utils.DATA_SOURCE_LZ {
  371. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  372. err = data_manage.RefreshEdbDataByLz(edbInfoId, edbCode, startDate, endDate)
  373. if err != nil {
  374. errmsg = "RefreshEdbDataByLz Err:" + err.Error()
  375. }
  376. } else if source == utils.DATA_SOURCE_YS {
  377. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  378. err = data_manage.RefreshAllEdbDataByYs(edbInfoId, source, edbCode, startDate, endDate)
  379. if err != nil {
  380. errmsg = "RefreshEdbDataByYs Err:" + err.Error()
  381. }
  382. } else if source == utils.DATA_SOURCE_GL {
  383. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  384. err = data_manage.RefreshEdbDataByGl(edbInfoId, edbCode, startDate, endDate)
  385. if err != nil {
  386. errmsg = "RefreshEdbDataByGl Err:" + err.Error()
  387. }
  388. }else if source == utils.DATA_SOURCE_LT {
  389. endDate := time.Now().Format(utils.FormatDate)
  390. err = data_manage.RefreshAllEdbDataByLt(edbInfoId, source, edbCode, startDate, endDate)
  391. if err != nil {
  392. errmsg = "RefreshAllEdbDataByLT Err:" + err.Error()
  393. }
  394. }else if source == utils.DATA_SOURCE_COAL {
  395. endDate := time.Now().Format(utils.FormatDate)
  396. err = data_manage.RefreshAllEdbDataByCoal(edbInfoId, source, edbCode, startDate, endDate)
  397. if err != nil {
  398. errmsg = "RefreshAllEdbDataByCoal Err:" + err.Error()
  399. }
  400. }
  401. maxAndMinItem, err := data_manage.GetEdbInfoMaxAndMinInfo(source, edbCode)
  402. if err != nil {
  403. return err
  404. }
  405. if maxAndMinItem != nil {
  406. err = data_manage.ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
  407. if err != nil {
  408. return err
  409. }
  410. }
  411. }
  412. endDate := "" //计算指标不限制日期
  413. //刷新相关计算指标
  414. for _, v := range calculateArr {
  415. edbInfo := calculateMap[v]
  416. if edbInfo == nil {
  417. return err
  418. }
  419. edbInfoId := edbInfo.EdbInfoId
  420. source := edbInfo.Source
  421. edbCode := edbInfo.EdbCode
  422. if source == utils.DATA_SOURCE_CALCULATE {
  423. startDate = edbInfo.StartDate
  424. sTime, err := time.Parse(utils.FormatDate, edbInfo.EndDate)
  425. if err != nil {
  426. return err
  427. }
  428. startDate = sTime.Format(utils.FormatDate)
  429. var edbInfoIdBytes []string
  430. calculateMap, err := data_manage.GetEdbInfoCalculateDetail(edbInfoId, edbInfo.Source)
  431. if err != nil {
  432. errmsg = "GetEdbInfoCalculateDetail Err:" + err.Error()
  433. return err
  434. }
  435. var formulaStr string
  436. edbInfoList := make([]*data_manage.EdbInfo, 0)
  437. for _, v := range calculateMap {
  438. formulaStr += v.FromTag + ","
  439. edbInfoIdBytes = append(edbInfoIdBytes, v.FromTag)
  440. edbInfo, _ := data_manage.GetEdbInfoById(v.FromEdbInfoId)
  441. edbInfoList = append(edbInfoList, edbInfo)
  442. }
  443. err = data_manage.RefreshAllCalculate(edbInfoList, int(edbInfoId), source, edbInfo.EdbCode, edbInfo.CalculateFormula, startDate, endDate, edbInfoIdBytes)
  444. if err != nil {
  445. errmsg = "RefreshCalculate Err:" + err.Error()
  446. return err
  447. }
  448. } else if source == utils.DATA_SOURCE_CALCULATE_LJZZY { //刷新累计值转月值
  449. calculateLjzzy, err := data_manage.GetEdbInfoCalculateLjzzyDetail(edbInfoId)
  450. if err != nil {
  451. errmsg = "GetEdbInfoCalculateLjzzyDetail Err:" + err.Error()
  452. return err
  453. }
  454. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateLjzzy.FromEdbInfoId)
  455. if err != nil {
  456. errmsg = "GetEdbInfoById Err:" + err.Error()
  457. return err
  458. }
  459. startDate = edbInfo.StartDate
  460. endDate = time.Now().Format(utils.FormatDate)
  461. err = data_manage.RefreshAllCalculateLjzzy(edbInfoId, source, fromEdbInfo, calculateLjzzy.EdbCode, startDate, endDate)
  462. if err != nil {
  463. errmsg = "RefreshAllCalculateLjzzy Err:" + err.Error()
  464. return err
  465. }
  466. } else if source == utils.DATA_SOURCE_CALCULATE_TBZ { //刷新同比值
  467. calculateTbz, err := data_manage.GetEdbInfoCalculateTbzDetail(edbInfoId)
  468. if err != nil {
  469. errmsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
  470. return err
  471. }
  472. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  473. if err != nil {
  474. errmsg = "GetEdbInfoById Err:" + err.Error()
  475. return err
  476. }
  477. startDate = edbInfo.StartDate
  478. endDate = time.Now().Format(utils.FormatDate)
  479. err = data_manage.RefreshAllCalculateTbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
  480. if err != nil {
  481. errmsg = "RefreshAllCalculateTbz Err:" + err.Error()
  482. return err
  483. }
  484. } else if source == utils.DATA_SOURCE_CALCULATE_TCZ { //同差值
  485. calculateTcz, err := data_manage.GetEdbInfoCalculateTczDetail(edbInfoId)
  486. if err != nil {
  487. errmsg = "GetEdbInfoCalculateTczDetail Err:" + err.Error()
  488. return err
  489. }
  490. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateTcz.FromEdbInfoId)
  491. if err != nil {
  492. errmsg = "GetEdbInfoById Err:" + err.Error()
  493. return err
  494. }
  495. startDate = edbInfo.StartDate
  496. endDate = time.Now().Format(utils.FormatDate)
  497. err = data_manage.RefreshAllCalculateTcz(edbInfoId, source, fromEdbInfo, calculateTcz.EdbCode, startDate, endDate)
  498. if err != nil {
  499. errmsg = "RefreshCalculateTcz Err:" + err.Error()
  500. return err
  501. }
  502. } else if source == utils.DATA_SOURCE_CALCULATE_NSZYDPJJS { //N数值移动平均计算
  503. calculateNszydpjjs, err := data_manage.GetEdbInfoCalculateNszydpjjsDetail(edbInfoId)
  504. if err != nil {
  505. errmsg = "GetEdbInfoCalculateNszydpjjsDetail Err:" + err.Error()
  506. return err
  507. }
  508. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateNszydpjjs.FromEdbInfoId)
  509. if err != nil {
  510. errmsg = "GetEdbInfoById Err:" + err.Error()
  511. return err
  512. }
  513. formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
  514. startDate = edbInfo.StartDate
  515. err = data_manage.RefreshAllCalculateNszydpjjs(edbInfoId, edbInfo.Source, formulaInt, fromEdbInfo, calculateNszydpjjs.EdbCode, startDate)
  516. if err != nil {
  517. errmsg = "RefreshCalculateNszydpjjs Err:" + err.Error()
  518. return err
  519. }
  520. } else if source == utils.DATA_SOURCE_CALCULATE_HBZ { //刷新环比值
  521. calculateTbz, err := data_manage.GetEdbInfoCalculateHbzDetail(edbInfoId)
  522. if err != nil {
  523. errmsg = "GetEdbInfoCalculateHbzDetail Err:" + err.Error()
  524. return err
  525. }
  526. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  527. if err != nil {
  528. errmsg = "GetEdbInfoById Err:" + err.Error()
  529. return err
  530. }
  531. startDate = edbInfo.StartDate
  532. endDate = time.Now().Format(utils.FormatDate)
  533. formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
  534. err = data_manage.RefreshAllCalculateHbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
  535. if err != nil {
  536. errmsg = "RefreshAllCalculateHbz Err:" + err.Error()
  537. return err
  538. }
  539. } else if source == utils.DATA_SOURCE_CALCULATE_HCZ { //刷新环差值
  540. calculateTbz, err := data_manage.GetEdbInfoCalculateHczDetail(edbInfoId)
  541. if err != nil {
  542. errmsg = "GetEdbInfoCalculateHczDetail Err:" + err.Error()
  543. return err
  544. }
  545. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  546. if err != nil {
  547. errmsg = "GetEdbInfoById Err:" + err.Error()
  548. return err
  549. }
  550. startDate = edbInfo.StartDate
  551. endDate = time.Now().Format(utils.FormatDate)
  552. formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
  553. err = data_manage.RefreshAllCalculateHcz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
  554. if err != nil {
  555. errmsg = "RefreshAllCalculateHcz Err:" + err.Error()
  556. return err
  557. }
  558. } else if source == utils.DATA_SOURCE_CALCULATE_BP { //刷新变频
  559. calculateTbz, err := data_manage.GetEdbInfoCalculateBpDetail(edbInfoId)
  560. if err != nil {
  561. errmsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
  562. return err
  563. }
  564. fromEdbInfo, err := data_manage.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  565. if err != nil {
  566. errmsg = "GetEdbInfoById Err:" + err.Error()
  567. return err
  568. }
  569. startDate = edbInfo.StartDate
  570. endDate = time.Now().Format(utils.FormatDate)
  571. err = data_manage.RefreshAllCalculateBp(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
  572. if err != nil {
  573. errmsg = "RefreshAllCalculateBp Err:" + err.Error()
  574. return err
  575. }
  576. } else if source == utils.DATA_SOURCE_CALCULATE_ZJPJ { //刷新直接拼接数据
  577. err = data_manage.RefreshAllCalculateZjpj(edbInfo)
  578. if err != nil {
  579. errmsg = "RefreshAllCalculateZjpj Err:" + err.Error()
  580. return err
  581. }
  582. } else if source == utils.DATA_SOURCE_CALCULATE_LJZTBPJ { //刷新累计值同比拼接数据
  583. err = data_manage.RefreshAllCalculateLjztbpj(edbInfo)
  584. if err != nil {
  585. errmsg = "RefreshAllCalculateLjztbpj Err:" + err.Error()
  586. return err
  587. }
  588. }
  589. maxAndMinItem, err := data_manage.GetEdbInfoMaxAndMinInfo(source, edbCode)
  590. if err != nil {
  591. return err
  592. }
  593. if maxAndMinItem != nil {
  594. err = data_manage.ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
  595. if err != nil {
  596. return err
  597. }
  598. }
  599. fmt.Println("end calculateArr:", v, time.Now())
  600. }
  601. return err
  602. }
  603. // ChartInfoRefreshV1 图表刷新
  604. func ChartInfoRefreshV1(chartInfoId int) (err error) {
  605. var errmsg string
  606. defer func() {
  607. if err != nil {
  608. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "ChartInfoRefresh:"+errmsg, utils.EmailSendToUsers)
  609. fmt.Println("ChartInfoRefresh Err:" + errmsg)
  610. }
  611. }()
  612. baseEdbInfoArr, calculateInfoArr, err := data_manage.GetChartInfoRefreshData(chartInfoId)
  613. if err != nil {
  614. errmsg = "获取需要刷新的指标失败:Err:" + err.Error()
  615. return
  616. }
  617. var startDate string
  618. newBaseEdbInfoArr := make([]*data_manage.EdbInfo, 0)
  619. baseMap := make(map[int]*data_manage.EdbInfo)
  620. for _, bv := range baseEdbInfoArr {
  621. if _, ok := baseMap[bv.EdbInfoId]; !ok {
  622. newBaseEdbInfoArr = append(newBaseEdbInfoArr, bv)
  623. }
  624. baseMap[bv.EdbInfoId] = bv
  625. }
  626. fmt.Println("calculateInfoArr:", len(calculateInfoArr))
  627. newCalculateInfoArr := make([]*data_manage.EdbInfo, 0)
  628. calculateMap := make(map[int]*data_manage.EdbInfo)
  629. var calculateArr []int
  630. for _, bv := range calculateInfoArr {
  631. if _, ok := calculateMap[bv.EdbInfoId]; !ok {
  632. newCalculateInfoArr = append(newCalculateInfoArr, bv)
  633. calculateArr = append(calculateArr, bv.EdbInfoId)
  634. }
  635. calculateMap[bv.EdbInfoId] = bv
  636. }
  637. sort.Ints(calculateArr)
  638. for _, bv := range newBaseEdbInfoArr {
  639. source := bv.Source
  640. edbInfoId := bv.EdbInfoId
  641. edbCode := bv.EdbCode
  642. startDate = bv.StartDate
  643. frequency := bv.Frequency
  644. if bv.StartDate == "0000-00-00" {
  645. continue
  646. }
  647. sTime, err := time.Parse(utils.FormatDate, bv.EndDate)
  648. if err != nil {
  649. return err
  650. }
  651. var limitDay int
  652. startDate := ""
  653. switch frequency {
  654. case "日度":
  655. limitDay = utils.DATA_REFRESH
  656. case "周度":
  657. limitDay = utils.DATA_REFRESH * 7
  658. case "月度":
  659. limitDay = utils.DATA_REFRESH * 30
  660. case "季度":
  661. limitDay = utils.DATA_REFRESH * 90
  662. case "年度":
  663. limitDay = utils.DATA_REFRESH * 365
  664. default:
  665. limitDay = utils.DATA_REFRESH
  666. }
  667. startDate = sTime.AddDate(0, 0, -limitDay).Format(utils.FormatDate)
  668. fmt.Println("source:", source)
  669. respItem, err := RefreshEdbData(edbInfoId, source, edbCode, startDate)
  670. if err != nil {
  671. errmsg = errors.New("RefreshEdbData Err:" + err.Error()).Error()
  672. return err
  673. }
  674. if respItem.Ret != 200 {
  675. errmsg = errors.New(respItem.ErrMsg + ";EdbCode:" + edbCode).Error()
  676. return err
  677. }
  678. maxAndMinItem, err := data_manage.GetEdbInfoMaxAndMinInfo(source, edbCode)
  679. if err != nil {
  680. return err
  681. }
  682. if maxAndMinItem != nil {
  683. err = data_manage.ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
  684. if err != nil {
  685. return err
  686. }
  687. }
  688. }
  689. //刷新相关计算指标
  690. for _, v := range calculateArr {
  691. edbInfo := calculateMap[v]
  692. if edbInfo == nil {
  693. return err
  694. }
  695. startDate = edbInfo.StartDate
  696. source := edbInfo.Source
  697. if source == utils.DATA_SOURCE_CALCULATE {
  698. startDate = edbInfo.StartDate
  699. sTime, err := time.Parse(utils.FormatDate, edbInfo.EndDate)
  700. if err != nil {
  701. return err
  702. }
  703. startDate = sTime.Format(utils.FormatDate)
  704. }
  705. result, err := RefreshEdbCalculateData(edbInfo.EdbInfoId, edbInfo.EdbCode, startDate)
  706. if err != nil {
  707. fmt.Println(v, "RefreshEdbCalculateData err", time.Now())
  708. errmsg = "RefreshEdbCalculateData Err:" + err.Error()
  709. return err
  710. }
  711. if result.Ret != 200 {
  712. fmt.Println(v, "RefreshEdbCalculateData err;msg:", result.Msg, ";errMsg:", result.ErrMsg)
  713. errmsg = fmt.Sprint(v, "RefreshEdbCalculateData err;msg:", result.Msg, ";errMsg:", result.ErrMsg)
  714. return fmt.Errorf("刷新失败"+errmsg)
  715. }
  716. fmt.Println("end calculateArr:", v, time.Now())
  717. }
  718. return err
  719. }