chart_info.go 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566
  1. package chart
  2. import (
  3. "fmt"
  4. "hongze/hongze_yb/global"
  5. chartEdbMappingModel "hongze/hongze_yb/models/tables/chart_edb_mapping"
  6. chartInfoModel "hongze/hongze_yb/models/tables/chart_info"
  7. edbDataModel "hongze/hongze_yb/models/tables/edb_data"
  8. edbInfoModel "hongze/hongze_yb/models/tables/edb_info"
  9. "hongze/hongze_yb/utils"
  10. "sort"
  11. "strconv"
  12. "strings"
  13. "time"
  14. )
  15. // ModifyChartInfoAndMapping 修改图表信息
  16. func ModifyChartInfoAndMapping(edbInfoIdStr string, req *chartInfoModel.SaveChartInfoReq, chartType int) (err error) {
  17. // 开启事务
  18. tx := global.MYSQL["data"].Begin()
  19. defer func() {
  20. if err != nil {
  21. tx.Rollback()
  22. } else {
  23. tx.Commit()
  24. }
  25. }()
  26. // 更新图表信息
  27. if chartType == 1 {
  28. sql := ` UPDATE chart_info
  29. SET
  30. edb_info_ids = ?,
  31. modify_time = NOW(),
  32. date_type = ?,
  33. start_date = ?,
  34. end_date = ?,
  35. left_min = ?,
  36. left_max = ?,
  37. right_min = ?,
  38. right_max = ?
  39. WHERE chart_info_id = ?`
  40. err = tx.Exec(sql, edbInfoIdStr, req.DateType, req.StartDate, req.EndDate, req.LeftMin, req.LeftMax, req.RightMin, req.RightMax, req.ChartInfoId).Error
  41. } else {
  42. sql := ` UPDATE chart_info
  43. SET
  44. edb_info_ids = ?,
  45. modify_time = NOW(),
  46. calendar = ?,
  47. season_start_date = ?,
  48. season_end_date = ?,
  49. left_min = ?,
  50. left_max = ?,
  51. right_min = ?,
  52. right_max = ?
  53. WHERE chart_info_id = ?`
  54. err = tx.Exec(sql, edbInfoIdStr, req.Calendar, req.SeasonStartDate, req.SeasonEndDate, req.LeftMin, req.LeftMax, req.RightMin, req.RightMax, req.ChartInfoId).Error
  55. }
  56. if err != nil {
  57. fmt.Println("UPDATE chart_info Err:", err.Error())
  58. return
  59. }
  60. var edbInfoIdArr []string
  61. mapList := make([]*chartEdbMappingModel.ChartEdbMapping, 0)
  62. for _, v := range req.ChartEdbInfoList {
  63. edbInfoIdArr = append(edbInfoIdArr, strconv.Itoa(v.EdbInfoId))
  64. var count int
  65. csql := ` SELECT COUNT(1) AS count FROM chart_edb_mapping WHERE chart_info_id = ? AND edb_info_id = ? `
  66. err = tx.Raw(csql, req.ChartInfoId, v.EdbInfoId).Scan(&count).Error
  67. if err != nil {
  68. fmt.Println("QueryRow Err:", err.Error())
  69. return err
  70. }
  71. if count > 0 {
  72. // 更新指标
  73. msql := `UPDATE chart_edb_mapping
  74. SET
  75. modify_time = NOW(),
  76. max_data = ?,
  77. min_data = ?,
  78. is_order = ?,
  79. is_axis = ?,
  80. edb_info_type = ?,
  81. lead_value = ?,
  82. lead_unit = ?,
  83. chart_style = ?,
  84. chart_color = ?,
  85. chart_width = ?
  86. WHERE chart_info_id =? AND edb_info_id=? `
  87. err = tx.Exec(msql, v.MaxData, v.MinData, v.IsOrder, v.IsAxis, v.EdbInfoType, v.LeadValue, v.LeadUnit, v.ChartStyle, v.ChartColor, v.ChartWidth, req.ChartInfoId, v.EdbInfoId).Error
  88. if err != nil {
  89. fmt.Println("chart_edb_mapping Err:" + err.Error())
  90. return err
  91. }
  92. } else {
  93. mapItem := new(chartEdbMappingModel.ChartEdbMapping)
  94. mapItem.ChartInfoId = req.ChartInfoId
  95. mapItem.EdbInfoId = v.EdbInfoId
  96. mapItem.CreateTime = time.Now()
  97. mapItem.ModifyTime = time.Now()
  98. timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
  99. mapItem.UniqueCode = utils.MD5(utils.CHART_PREFIX + "_" + timestamp)
  100. mapItem.MaxData = v.MaxData
  101. mapItem.MinData = v.MinData
  102. mapItem.IsOrder = 0
  103. if v.IsOrder {
  104. mapItem.IsOrder = 1
  105. }
  106. mapItem.IsAxis = v.IsAxis
  107. mapItem.EdbInfoType = v.EdbInfoType
  108. mapItem.LeadValue = v.LeadValue
  109. mapItem.LeadUnit = v.LeadUnit
  110. mapItem.ChartStyle = v.ChartStyle
  111. mapItem.ChartColor = v.ChartColor
  112. mapItem.ChartWidth = v.ChartWidth
  113. mapList = append(mapList, mapItem)
  114. }
  115. }
  116. // 批量新增指标
  117. if len(mapList) > 0 {
  118. err = tx.Create(mapList).Error
  119. if err != nil {
  120. fmt.Println("AddChartEdbMapping Err:" + err.Error())
  121. return err
  122. }
  123. }
  124. // 清除原图表指标
  125. if len(edbInfoIdArr) > 0 {
  126. edbInfoIdStr := strings.Join(edbInfoIdArr, ",")
  127. if edbInfoIdStr != "" {
  128. dsql := `DELETE FROM chart_edb_mapping WHERE chart_info_id=? AND edb_info_id NOT IN(` + edbInfoIdStr + `)`
  129. err = tx.Exec(dsql, req.ChartInfoId).Error
  130. if err != nil {
  131. fmt.Println("delete err:" + err.Error())
  132. return err
  133. }
  134. }
  135. }
  136. return
  137. }
  138. // RefreshChartInfo 刷新图表
  139. func RefreshChartInfo(chartInfoId int) (err error) {
  140. var errMsg string
  141. defer func() {
  142. if err != nil {
  143. //go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "ChartInfoRefresh:"+errMsg, utils.EmailSendToUsers)
  144. fmt.Println("ChartInfoRefresh Err:" + errMsg)
  145. }
  146. }()
  147. // 获取需要刷新的指标
  148. baseEdbInfoArr, calculateInfoArr, err := GetChartInfoRefreshData(chartInfoId)
  149. if err != nil {
  150. errMsg = "获取需要刷新的指标失败:Err:" + err.Error()
  151. return
  152. }
  153. newBaseEdbInfoArr := make([]*edbInfoModel.EdbInfo, 0)
  154. baseMap := make(map[int]*edbInfoModel.EdbInfo)
  155. for _, bv := range baseEdbInfoArr {
  156. if _, ok := baseMap[bv.EdbInfoId]; !ok {
  157. newBaseEdbInfoArr = append(newBaseEdbInfoArr, bv)
  158. }
  159. baseMap[bv.EdbInfoId] = bv
  160. }
  161. fmt.Println("calculateInfoArr:", len(calculateInfoArr))
  162. newCalculateInfoArr := make([]*edbInfoModel.EdbInfo, 0)
  163. calculateMap := make(map[int]*edbInfoModel.EdbInfo)
  164. var calculateArr []int
  165. for _, bv := range calculateInfoArr {
  166. if _, ok := calculateMap[bv.EdbInfoId]; !ok {
  167. newCalculateInfoArr = append(newCalculateInfoArr, bv)
  168. calculateArr = append(calculateArr, bv.EdbInfoId)
  169. }
  170. calculateMap[bv.EdbInfoId] = bv
  171. }
  172. sort.Ints(calculateArr)
  173. fmt.Println("刷新指标1--start")
  174. var startDate string
  175. for _, bv := range newBaseEdbInfoArr {
  176. source := bv.Source
  177. edbInfoId := bv.EdbInfoId
  178. edbCode := bv.EdbCode
  179. startDate = bv.StartDate.Format(utils.FormatDate)
  180. sTime, err := time.Parse(utils.FormatDate, bv.EndDate.Format(utils.FormatDate))
  181. if err != nil {
  182. return err
  183. }
  184. startDate = sTime.Format(utils.FormatDate)
  185. fmt.Println("source:", source)
  186. if source == utils.DATA_SOURCE_THS {
  187. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  188. err = RefreshEdbDataByThs(edbInfoId, edbCode, startDate, endDate)
  189. if err != nil {
  190. errMsg = "RefreshEdbDataByThs Err:" + err.Error()
  191. }
  192. } else if source == utils.DATA_SOURCE_WIND {
  193. endDate := time.Now().Format(utils.FormatDate)
  194. err = RefreshEdbDataByWind(edbInfoId, edbCode, startDate, endDate)
  195. if err != nil {
  196. errMsg = "RefreshEdbDataByWind Err:" + err.Error()
  197. }
  198. } else if source == utils.DATA_SOURCE_PB {
  199. startDate := sTime.Format(utils.FormatDateUnSpace)
  200. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDateUnSpace)
  201. err = RefreshEdbDataByPb(edbInfoId, edbCode, startDate, endDate)
  202. if err != nil {
  203. errMsg = "RefreshEdbDataByPb Err:" + err.Error()
  204. }
  205. } else if source == utils.DATA_SOURCE_MANUAL {
  206. fmt.Println("RefreshAllEdbDataByManual:" + edbCode)
  207. err = RefreshAllEdbDataByManual(edbInfoId, bv.Source, edbCode)
  208. if err != nil {
  209. errMsg = "RefreshEdbDataByManual Err:" + err.Error()
  210. }
  211. } else if source == utils.DATA_SOURCE_LZ {
  212. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  213. err = RefreshEdbDataByLz(edbInfoId, edbCode, startDate, endDate)
  214. if err != nil {
  215. errMsg = "RefreshEdbDataByLz Err:" + err.Error()
  216. }
  217. } else if source == utils.DATA_SOURCE_YS {
  218. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  219. err = RefreshAllEdbDataByYs(edbInfoId, source, edbCode, startDate, endDate)
  220. if err != nil {
  221. errMsg = "RefreshEdbDataByYs Err:" + err.Error()
  222. }
  223. } else if source == utils.DATA_SOURCE_GL {
  224. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  225. err = RefreshEdbDataByGl(edbInfoId, edbCode, startDate, endDate)
  226. if err != nil {
  227. errMsg = "RefreshEdbDataByGl Err:" + err.Error()
  228. }
  229. } else if source == utils.DATA_SOURCE_LT {
  230. endDate := time.Now().Format(utils.FormatDate)
  231. err = RefreshAllEdbDataByLt(edbInfoId, source, edbCode, startDate, endDate)
  232. if err != nil {
  233. errMsg = "RefreshAllEdbDataByLT Err:" + err.Error()
  234. }
  235. } else if source == utils.DATA_SOURCE_ZZ {
  236. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  237. err = RefreshEdbDataByZz(edbInfoId, edbCode, startDate, endDate)
  238. if err != nil {
  239. errMsg = "RefreshAllEdbDataByZz Err:" + err.Error()
  240. }
  241. } else if source == utils.DATA_SOURCE_DL {
  242. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  243. err = RefreshEdbDataByDl(edbInfoId, edbCode, startDate, endDate)
  244. if err != nil {
  245. errMsg = "RefreshAllEdbDataByDl Err:" + err.Error()
  246. }
  247. } else if source == utils.DATA_SOURCE_SH {
  248. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  249. err = RefreshEdbDataBySh(edbInfoId, edbCode, startDate, endDate)
  250. if err != nil {
  251. errMsg = "RefreshAllEdbDataBySh Err:" + err.Error()
  252. }
  253. } else if source == utils.DATA_SOURCE_CFFEX {
  254. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  255. err = RefreshEdbDataByCffex(edbInfoId, edbCode, startDate, endDate)
  256. if err != nil {
  257. errMsg = "RefreshAllEdbDataByCffex Err:" + err.Error()
  258. }
  259. } else if source == utils.DATA_SOURCE_SHFE {
  260. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  261. err = RefreshEdbDataByShfe(edbInfoId, edbCode, startDate, endDate)
  262. if err != nil {
  263. errMsg = "RefreshAllEdbDataByShfe Err:" + err.Error()
  264. }
  265. } else if source == utils.DATA_SOURCE_GIE {
  266. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  267. err = RefreshEdbDataByGie(edbInfoId, edbCode, startDate, endDate)
  268. if err != nil {
  269. errMsg = "RefreshEdbDataByGie Err:" + err.Error()
  270. }
  271. }
  272. maxAndMinItem, err := edbDataModel.GetEdbInfoMaxAndMinInfo(source, edbCode)
  273. if err != nil {
  274. return err
  275. }
  276. if maxAndMinItem != nil {
  277. err = edbDataModel.ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
  278. if err != nil {
  279. return err
  280. }
  281. }
  282. }
  283. fmt.Println("刷新指标1--end")
  284. endDate := "" //计算指标不限制日期
  285. //刷新相关计算指标
  286. for _, v := range calculateArr {
  287. edbInfo := calculateMap[v]
  288. if edbInfo == nil {
  289. return err
  290. }
  291. edbInfoId := edbInfo.EdbInfoId
  292. source := edbInfo.Source
  293. edbCode := edbInfo.EdbCode
  294. /*startDate = bv.StartDate.Format(utils.FormatDate)
  295. sTime, err := time.Parse(utils.FormatDate, bv.EndDate.Format(utils.FormatDate))
  296. if err != nil {
  297. return err
  298. }
  299. startDate = sTime.Format(utils.FormatDate)*/
  300. if source == utils.DATA_SOURCE_CALCULATE {
  301. startDate = edbInfo.StartDate.Format(utils.FormatDate)
  302. sTime, err := time.Parse(utils.FormatDate, edbInfo.EndDate.Format(utils.FormatDate))
  303. if err != nil {
  304. return err
  305. }
  306. startDate = sTime.Format(utils.FormatDate)
  307. var edbInfoIdBytes []string
  308. calculateMap, err := edbDataModel.GetEdbInfoCalculateDetail(edbInfoId, edbInfo.Source)
  309. if err != nil {
  310. errMsg = "GetEdbInfoCalculateDetail Err:" + err.Error()
  311. return err
  312. }
  313. var formulaStr string
  314. edbInfoList := make([]*edbInfoModel.EdbInfo, 0)
  315. for _, v := range calculateMap {
  316. formulaStr += v.FromTag + ","
  317. edbInfoIdBytes = append(edbInfoIdBytes, v.FromTag)
  318. edbInfo, _ := edbInfoModel.GetEdbInfoById(v.FromEdbInfoId)
  319. edbInfoList = append(edbInfoList, edbInfo)
  320. }
  321. err = RefreshAllCalculate(edbInfoList, int(edbInfoId), source, edbInfo.EdbCode, edbInfo.CalculateFormula, startDate, endDate, edbInfoIdBytes)
  322. if err != nil {
  323. errMsg = "RefreshCalculate Err:" + err.Error()
  324. return err
  325. }
  326. } else if source == utils.DATA_SOURCE_CALCULATE_LJZZY { //刷新累计值转月值
  327. calculateLjzzy, err := edbDataModel.GetEdbInfoCalculateLjzzyDetail(edbInfoId)
  328. if err != nil {
  329. errMsg = "GetEdbInfoCalculateLjzzyDetail Err:" + err.Error()
  330. return err
  331. }
  332. fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateLjzzy.FromEdbInfoId)
  333. if err != nil {
  334. errMsg = "GetEdbInfoById Err:" + err.Error()
  335. return err
  336. }
  337. startDate = edbInfo.StartDate.Format(utils.FormatDate)
  338. endDate = time.Now().Format(utils.FormatDate)
  339. err = RefreshAllCalculateLjzzy(edbInfoId, source, fromEdbInfo, calculateLjzzy.EdbCode, startDate, endDate)
  340. if err != nil {
  341. errMsg = "RefreshAllCalculateLjzzy Err:" + err.Error()
  342. return err
  343. }
  344. } else if source == utils.DATA_SOURCE_CALCULATE_TBZ { //刷新同比值
  345. calculateTbz, err := edbDataModel.GetEdbInfoCalculateTbzDetail(edbInfoId)
  346. if err != nil {
  347. errMsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
  348. return err
  349. }
  350. fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  351. if err != nil {
  352. errMsg = "GetEdbInfoById Err:" + err.Error()
  353. return err
  354. }
  355. startDate = edbInfo.StartDate.Format(utils.FormatDate)
  356. endDate = time.Now().Format(utils.FormatDate)
  357. err = RefreshAllCalculateTbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
  358. if err != nil {
  359. errMsg = "RefreshAllCalculateTbz Err:" + err.Error()
  360. return err
  361. }
  362. } else if source == utils.DATA_SOURCE_CALCULATE_TCZ { //同差值
  363. calculateTcz, err := edbDataModel.GetEdbInfoCalculateTczDetail(edbInfoId)
  364. if err != nil {
  365. errMsg = "GetEdbInfoCalculateTczDetail Err:" + err.Error()
  366. return err
  367. }
  368. fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateTcz.FromEdbInfoId)
  369. if err != nil {
  370. errMsg = "GetEdbInfoById Err:" + err.Error()
  371. return err
  372. }
  373. startDate = edbInfo.StartDate.Format(utils.FormatDate)
  374. endDate = time.Now().Format(utils.FormatDate)
  375. err = RefreshAllCalculateTcz(edbInfoId, source, fromEdbInfo, calculateTcz.EdbCode, startDate, endDate)
  376. if err != nil {
  377. errMsg = "RefreshCalculateTcz Err:" + err.Error()
  378. return err
  379. }
  380. } else if source == utils.DATA_SOURCE_CALCULATE_NSZYDPJJS { //N数值移动平均计算
  381. calculateNszydpjjs, err := edbDataModel.GetEdbInfoCalculateNszydpjjsDetail(edbInfoId)
  382. if err != nil {
  383. errMsg = "GetEdbInfoCalculateNszydpjjsDetail Err:" + err.Error()
  384. return err
  385. }
  386. fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateNszydpjjs.FromEdbInfoId)
  387. if err != nil {
  388. errMsg = "GetEdbInfoById Err:" + err.Error()
  389. return err
  390. }
  391. formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
  392. startDate = edbInfo.StartDate.Format(utils.FormatDate)
  393. err = RefreshAllCalculateNszydpjjs(edbInfoId, edbInfo.Source, formulaInt, fromEdbInfo, calculateNszydpjjs.EdbCode, startDate)
  394. if err != nil {
  395. errMsg = "RefreshCalculateNszydpjjs Err:" + err.Error()
  396. return err
  397. }
  398. } else if source == utils.DATA_SOURCE_CALCULATE_HBZ { //刷新环比值
  399. calculateTbz, err := edbDataModel.GetEdbInfoCalculateHbzDetail(edbInfoId)
  400. if err != nil {
  401. errMsg = "GetEdbInfoCalculateHbzDetail Err:" + err.Error()
  402. return err
  403. }
  404. fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  405. if err != nil {
  406. errMsg = "GetEdbInfoById Err:" + err.Error()
  407. return err
  408. }
  409. startDate = edbInfo.StartDate.Format(utils.FormatDate)
  410. endDate = time.Now().Format(utils.FormatDate)
  411. formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
  412. err = RefreshAllCalculateHbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
  413. if err != nil {
  414. errMsg = "RefreshAllCalculateHbz Err:" + err.Error()
  415. return err
  416. }
  417. } else if source == utils.DATA_SOURCE_CALCULATE_HCZ { //刷新环差值
  418. calculateTbz, err := edbDataModel.GetEdbInfoCalculateHczDetail(edbInfoId)
  419. if err != nil {
  420. errMsg = "GetEdbInfoCalculateHczDetail Err:" + err.Error()
  421. return err
  422. }
  423. fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  424. if err != nil {
  425. errMsg = "GetEdbInfoById Err:" + err.Error()
  426. return err
  427. }
  428. startDate = edbInfo.StartDate.Format(utils.FormatDate)
  429. endDate = time.Now().Format(utils.FormatDate)
  430. formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
  431. err = RefreshAllCalculateHcz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
  432. if err != nil {
  433. errMsg = "RefreshAllCalculateHcz Err:" + err.Error()
  434. return err
  435. }
  436. } else if source == utils.DATA_SOURCE_CALCULATE_BP { //刷新变频
  437. calculateTbz, err := edbDataModel.GetEdbInfoCalculateBpDetail(edbInfoId)
  438. if err != nil {
  439. errMsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
  440. return err
  441. }
  442. fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  443. if err != nil {
  444. errMsg = "GetEdbInfoById Err:" + err.Error()
  445. return err
  446. }
  447. startDate = edbInfo.StartDate.Format(utils.FormatDate)
  448. endDate = time.Now().Format(utils.FormatDate)
  449. err = RefreshAllCalculateBp(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
  450. if err != nil {
  451. errMsg = "RefreshAllCalculateBp Err:" + err.Error()
  452. return err
  453. }
  454. } else if source == utils.DATA_SOURCE_CALCULATE_ZJPJ { //刷新直接拼接数据
  455. err = RefreshAllCalculateZjpj(edbInfo)
  456. if err != nil {
  457. errMsg = "RefreshAllCalculateZjpj Err:" + err.Error()
  458. return err
  459. }
  460. } else if source == utils.DATA_SOURCE_CALCULATE_LJZTBPJ { //刷新累计值同比拼接数据
  461. err = RefreshAllCalculateLjztbpj(edbInfo)
  462. if err != nil {
  463. errMsg = "RefreshAllCalculateLjztbpj Err:" + err.Error()
  464. return err
  465. }
  466. }
  467. maxAndMinItem, err := edbDataModel.GetEdbInfoMaxAndMinInfo(source, edbCode)
  468. if err != nil {
  469. return err
  470. }
  471. if maxAndMinItem != nil {
  472. err = edbDataModel.ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
  473. if err != nil {
  474. return err
  475. }
  476. }
  477. fmt.Println("end calculateArr:", v, time.Now())
  478. }
  479. fmt.Println("刷新指标2--end")
  480. return
  481. }
  482. // GetChartInfoRefreshData 获取需要刷新的指标
  483. func GetChartInfoRefreshData(chartInfoId int) (baseEdbInfoArr, calculateInfoArr []*edbInfoModel.EdbInfo, err error) {
  484. sql := ` SELECT b.* FROM chart_edb_mapping AS a
  485. INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
  486. WHERE a.chart_info_id=? `
  487. edbInfoList := make([]*edbInfoModel.EdbInfo, 0)
  488. err = global.MYSQL["data"].Raw(sql, chartInfoId).Scan(&edbInfoList).Error
  489. if err != nil {
  490. return
  491. }
  492. for _, v := range edbInfoList {
  493. fmt.Println(v.EdbInfoId, v.EdbType)
  494. if v.EdbType == 1 {
  495. baseEdbInfoArr = append(baseEdbInfoArr, v)
  496. } else {
  497. calculateInfoArr = append(calculateInfoArr, v)
  498. newBaseEdbInfoArr, newCalculateInfoArr, err := GetChartRefreshEdbInfo(v.EdbInfoId, v.Source, 0)
  499. if err != nil {
  500. return baseEdbInfoArr, calculateInfoArr, err
  501. }
  502. baseEdbInfoArr = append(baseEdbInfoArr, newBaseEdbInfoArr...)
  503. calculateInfoArr = append(calculateInfoArr, newCalculateInfoArr...)
  504. }
  505. }
  506. return
  507. }
  508. // GetChartRefreshEdbInfo
  509. func GetChartRefreshEdbInfo(edbInfoId, source, n int) (baseEdbInfoArr, calculateInfoArr []*edbInfoModel.EdbInfo, err error) {
  510. calculateList, err := GetEdbInfoCalculateMap(edbInfoId, source)
  511. if err != nil && err != utils.ErrNoRow {
  512. return
  513. }
  514. n++
  515. for _, item := range calculateList {
  516. fmt.Println(item.EdbInfoId)
  517. if item.EdbType == 1 {
  518. baseEdbInfoArr = append(baseEdbInfoArr, item)
  519. } else {
  520. calculateInfoArr = append(calculateInfoArr, item)
  521. if n > 10 {
  522. return
  523. }
  524. newBaseEdbInfoArr, newCalculateInfoArr, _ := GetChartRefreshEdbInfo(item.EdbInfoId, item.Source, n)
  525. baseEdbInfoArr = append(baseEdbInfoArr, newBaseEdbInfoArr...)
  526. calculateInfoArr = append(calculateInfoArr, newCalculateInfoArr...)
  527. }
  528. }
  529. return
  530. }
  531. func GetEdbInfoCalculateMap(edbInfoId, source int) (list []*edbInfoModel.EdbInfo, err error) {
  532. sql := ` SELECT b.* FROM edb_info_calculate_mapping AS a
  533. INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
  534. WHERE a.edb_info_id=? ORDER BY sort ASC `
  535. err = global.MYSQL["data"].Exec(sql, edbInfoId).Error
  536. return
  537. }