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.Exec(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. var startDate string
  174. for _, bv := range newBaseEdbInfoArr {
  175. source := bv.Source
  176. edbInfoId := bv.EdbInfoId
  177. edbCode := bv.EdbCode
  178. startDate = bv.StartDate.Format(utils.FormatDate)
  179. sTime, err := time.Parse(utils.FormatDate, bv.EndDate.Format(utils.FormatDate))
  180. if err != nil {
  181. return err
  182. }
  183. startDate = sTime.Format(utils.FormatDate)
  184. fmt.Println("source:", source)
  185. if source == utils.DATA_SOURCE_THS {
  186. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  187. err = RefreshEdbDataByThs(edbInfoId, edbCode, startDate, endDate)
  188. if err != nil {
  189. errMsg = "RefreshEdbDataByThs Err:" + err.Error()
  190. }
  191. } else if source == utils.DATA_SOURCE_WIND {
  192. endDate := time.Now().Format(utils.FormatDate)
  193. err = RefreshEdbDataByWind(edbInfoId, edbCode, startDate, endDate)
  194. if err != nil {
  195. errMsg = "RefreshEdbDataByWind Err:" + err.Error()
  196. }
  197. } else if source == utils.DATA_SOURCE_PB {
  198. startDate := sTime.Format(utils.FormatDateUnSpace)
  199. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDateUnSpace)
  200. err = RefreshEdbDataByPb(edbInfoId, edbCode, startDate, endDate)
  201. if err != nil {
  202. errMsg = "RefreshEdbDataByPb Err:" + err.Error()
  203. }
  204. } else if source == utils.DATA_SOURCE_MANUAL {
  205. fmt.Println("RefreshAllEdbDataByManual:" + edbCode)
  206. err = RefreshAllEdbDataByManual(edbInfoId, bv.Source, edbCode)
  207. if err != nil {
  208. errMsg = "RefreshEdbDataByManual Err:" + err.Error()
  209. }
  210. } else if source == utils.DATA_SOURCE_LZ {
  211. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  212. err = RefreshEdbDataByLz(edbInfoId, edbCode, startDate, endDate)
  213. if err != nil {
  214. errMsg = "RefreshEdbDataByLz Err:" + err.Error()
  215. }
  216. } else if source == utils.DATA_SOURCE_YS {
  217. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  218. err = RefreshAllEdbDataByYs(edbInfoId, source, edbCode, startDate, endDate)
  219. if err != nil {
  220. errMsg = "RefreshEdbDataByYs Err:" + err.Error()
  221. }
  222. } else if source == utils.DATA_SOURCE_GL {
  223. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  224. err = RefreshEdbDataByGl(edbInfoId, edbCode, startDate, endDate)
  225. if err != nil {
  226. errMsg = "RefreshEdbDataByGl Err:" + err.Error()
  227. }
  228. } else if source == utils.DATA_SOURCE_LT {
  229. endDate := time.Now().Format(utils.FormatDate)
  230. err = RefreshAllEdbDataByLt(edbInfoId, source, edbCode, startDate, endDate)
  231. if err != nil {
  232. errMsg = "RefreshAllEdbDataByLT Err:" + err.Error()
  233. }
  234. } else if source == utils.DATA_SOURCE_ZZ {
  235. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  236. err = RefreshEdbDataByZz(edbInfoId, edbCode, startDate, endDate)
  237. if err != nil {
  238. errMsg = "RefreshAllEdbDataByZz Err:" + err.Error()
  239. }
  240. } else if source == utils.DATA_SOURCE_DL {
  241. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  242. err = RefreshEdbDataByDl(edbInfoId, edbCode, startDate, endDate)
  243. if err != nil {
  244. errMsg = "RefreshAllEdbDataByDl Err:" + err.Error()
  245. }
  246. } else if source == utils.DATA_SOURCE_SH {
  247. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  248. err = RefreshEdbDataBySh(edbInfoId, edbCode, startDate, endDate)
  249. if err != nil {
  250. errMsg = "RefreshAllEdbDataBySh Err:" + err.Error()
  251. }
  252. } else if source == utils.DATA_SOURCE_CFFEX {
  253. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  254. err = RefreshEdbDataByCffex(edbInfoId, edbCode, startDate, endDate)
  255. if err != nil {
  256. errMsg = "RefreshAllEdbDataByCffex Err:" + err.Error()
  257. }
  258. } else if source == utils.DATA_SOURCE_SHFE {
  259. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  260. err = RefreshEdbDataByShfe(edbInfoId, edbCode, startDate, endDate)
  261. if err != nil {
  262. errMsg = "RefreshAllEdbDataByShfe Err:" + err.Error()
  263. }
  264. } else if source == utils.DATA_SOURCE_GIE {
  265. endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  266. err = RefreshEdbDataByGie(edbInfoId, edbCode, startDate, endDate)
  267. if err != nil {
  268. errMsg = "RefreshEdbDataByGie Err:" + err.Error()
  269. }
  270. }
  271. maxAndMinItem, err := edbDataModel.GetEdbInfoMaxAndMinInfo(source, edbCode)
  272. if err != nil {
  273. return err
  274. }
  275. if maxAndMinItem != nil {
  276. err = edbDataModel.ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
  277. if err != nil {
  278. return err
  279. }
  280. }
  281. }
  282. endDate := "" //计算指标不限制日期
  283. //刷新相关计算指标
  284. for _, v := range calculateArr {
  285. edbInfo := calculateMap[v]
  286. if edbInfo == nil {
  287. return err
  288. }
  289. edbInfoId := edbInfo.EdbInfoId
  290. source := edbInfo.Source
  291. edbCode := edbInfo.EdbCode
  292. /*startDate = bv.StartDate.Format(utils.FormatDate)
  293. sTime, err := time.Parse(utils.FormatDate, bv.EndDate.Format(utils.FormatDate))
  294. if err != nil {
  295. return err
  296. }
  297. startDate = sTime.Format(utils.FormatDate)*/
  298. if source == utils.DATA_SOURCE_CALCULATE {
  299. startDate = edbInfo.StartDate.Format(utils.FormatDate)
  300. sTime, err := time.Parse(utils.FormatDate, edbInfo.EndDate.Format(utils.FormatDate))
  301. if err != nil {
  302. return err
  303. }
  304. startDate = sTime.Format(utils.FormatDate)
  305. var edbInfoIdBytes []string
  306. calculateMap, err := edbDataModel.GetEdbInfoCalculateDetail(edbInfoId, edbInfo.Source)
  307. if err != nil {
  308. errMsg = "GetEdbInfoCalculateDetail Err:" + err.Error()
  309. return err
  310. }
  311. var formulaStr string
  312. edbInfoList := make([]*edbInfoModel.EdbInfo, 0)
  313. for _, v := range calculateMap {
  314. formulaStr += v.FromTag + ","
  315. edbInfoIdBytes = append(edbInfoIdBytes, v.FromTag)
  316. edbInfo, _ := edbInfoModel.GetEdbInfoById(v.FromEdbInfoId)
  317. edbInfoList = append(edbInfoList, edbInfo)
  318. }
  319. err = RefreshAllCalculate(edbInfoList, int(edbInfoId), source, edbInfo.EdbCode, edbInfo.CalculateFormula, startDate, endDate, edbInfoIdBytes)
  320. if err != nil {
  321. errMsg = "RefreshCalculate Err:" + err.Error()
  322. return err
  323. }
  324. } else if source == utils.DATA_SOURCE_CALCULATE_LJZZY { //刷新累计值转月值
  325. calculateLjzzy, err := edbDataModel.GetEdbInfoCalculateLjzzyDetail(edbInfoId)
  326. if err != nil {
  327. errMsg = "GetEdbInfoCalculateLjzzyDetail Err:" + err.Error()
  328. return err
  329. }
  330. fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateLjzzy.FromEdbInfoId)
  331. if err != nil {
  332. errMsg = "GetEdbInfoById Err:" + err.Error()
  333. return err
  334. }
  335. startDate = edbInfo.StartDate.Format(utils.FormatDate)
  336. endDate = time.Now().Format(utils.FormatDate)
  337. err = RefreshAllCalculateLjzzy(edbInfoId, source, fromEdbInfo, calculateLjzzy.EdbCode, startDate, endDate)
  338. if err != nil {
  339. errMsg = "RefreshAllCalculateLjzzy Err:" + err.Error()
  340. return err
  341. }
  342. } else if source == utils.DATA_SOURCE_CALCULATE_TBZ { //刷新同比值
  343. calculateTbz, err := edbDataModel.GetEdbInfoCalculateTbzDetail(edbInfoId)
  344. if err != nil {
  345. errMsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
  346. return err
  347. }
  348. fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  349. if err != nil {
  350. errMsg = "GetEdbInfoById Err:" + err.Error()
  351. return err
  352. }
  353. startDate = edbInfo.StartDate.Format(utils.FormatDate)
  354. endDate = time.Now().Format(utils.FormatDate)
  355. err = RefreshAllCalculateTbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
  356. if err != nil {
  357. errMsg = "RefreshAllCalculateTbz Err:" + err.Error()
  358. return err
  359. }
  360. } else if source == utils.DATA_SOURCE_CALCULATE_TCZ { //同差值
  361. calculateTcz, err := edbDataModel.GetEdbInfoCalculateTczDetail(edbInfoId)
  362. if err != nil {
  363. errMsg = "GetEdbInfoCalculateTczDetail Err:" + err.Error()
  364. return err
  365. }
  366. fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateTcz.FromEdbInfoId)
  367. if err != nil {
  368. errMsg = "GetEdbInfoById Err:" + err.Error()
  369. return err
  370. }
  371. startDate = edbInfo.StartDate.Format(utils.FormatDate)
  372. endDate = time.Now().Format(utils.FormatDate)
  373. err = RefreshAllCalculateTcz(edbInfoId, source, fromEdbInfo, calculateTcz.EdbCode, startDate, endDate)
  374. if err != nil {
  375. errMsg = "RefreshCalculateTcz Err:" + err.Error()
  376. return err
  377. }
  378. } else if source == utils.DATA_SOURCE_CALCULATE_NSZYDPJJS { //N数值移动平均计算
  379. calculateNszydpjjs, err := edbDataModel.GetEdbInfoCalculateNszydpjjsDetail(edbInfoId)
  380. if err != nil {
  381. errMsg = "GetEdbInfoCalculateNszydpjjsDetail Err:" + err.Error()
  382. return err
  383. }
  384. fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateNszydpjjs.FromEdbInfoId)
  385. if err != nil {
  386. errMsg = "GetEdbInfoById Err:" + err.Error()
  387. return err
  388. }
  389. formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
  390. startDate = edbInfo.StartDate.Format(utils.FormatDate)
  391. err = RefreshAllCalculateNszydpjjs(edbInfoId, edbInfo.Source, formulaInt, fromEdbInfo, calculateNszydpjjs.EdbCode, startDate)
  392. if err != nil {
  393. errMsg = "RefreshCalculateNszydpjjs Err:" + err.Error()
  394. return err
  395. }
  396. } else if source == utils.DATA_SOURCE_CALCULATE_HBZ { //刷新环比值
  397. calculateTbz, err := edbDataModel.GetEdbInfoCalculateHbzDetail(edbInfoId)
  398. if err != nil {
  399. errMsg = "GetEdbInfoCalculateHbzDetail Err:" + err.Error()
  400. return err
  401. }
  402. fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  403. if err != nil {
  404. errMsg = "GetEdbInfoById Err:" + err.Error()
  405. return err
  406. }
  407. startDate = edbInfo.StartDate.Format(utils.FormatDate)
  408. endDate = time.Now().Format(utils.FormatDate)
  409. formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
  410. err = RefreshAllCalculateHbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
  411. if err != nil {
  412. errMsg = "RefreshAllCalculateHbz Err:" + err.Error()
  413. return err
  414. }
  415. } else if source == utils.DATA_SOURCE_CALCULATE_HCZ { //刷新环差值
  416. calculateTbz, err := edbDataModel.GetEdbInfoCalculateHczDetail(edbInfoId)
  417. if err != nil {
  418. errMsg = "GetEdbInfoCalculateHczDetail Err:" + err.Error()
  419. return err
  420. }
  421. fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  422. if err != nil {
  423. errMsg = "GetEdbInfoById Err:" + err.Error()
  424. return err
  425. }
  426. startDate = edbInfo.StartDate.Format(utils.FormatDate)
  427. endDate = time.Now().Format(utils.FormatDate)
  428. formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
  429. err = RefreshAllCalculateHcz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
  430. if err != nil {
  431. errMsg = "RefreshAllCalculateHcz Err:" + err.Error()
  432. return err
  433. }
  434. } else if source == utils.DATA_SOURCE_CALCULATE_BP { //刷新变频
  435. calculateTbz, err := edbDataModel.GetEdbInfoCalculateBpDetail(edbInfoId)
  436. if err != nil {
  437. errMsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
  438. return err
  439. }
  440. fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateTbz.FromEdbInfoId)
  441. if err != nil {
  442. errMsg = "GetEdbInfoById Err:" + err.Error()
  443. return err
  444. }
  445. startDate = edbInfo.StartDate.Format(utils.FormatDate)
  446. endDate = time.Now().Format(utils.FormatDate)
  447. err = RefreshAllCalculateBp(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
  448. if err != nil {
  449. errMsg = "RefreshAllCalculateBp Err:" + err.Error()
  450. return err
  451. }
  452. } else if source == utils.DATA_SOURCE_CALCULATE_ZJPJ { //刷新直接拼接数据
  453. err = RefreshAllCalculateZjpj(edbInfo)
  454. if err != nil {
  455. errMsg = "RefreshAllCalculateZjpj Err:" + err.Error()
  456. return err
  457. }
  458. } else if source == utils.DATA_SOURCE_CALCULATE_LJZTBPJ { //刷新累计值同比拼接数据
  459. err = RefreshAllCalculateLjztbpj(edbInfo)
  460. if err != nil {
  461. errMsg = "RefreshAllCalculateLjztbpj Err:" + err.Error()
  462. return err
  463. }
  464. }
  465. maxAndMinItem, err := edbDataModel.GetEdbInfoMaxAndMinInfo(source, edbCode)
  466. if err != nil {
  467. return err
  468. }
  469. if maxAndMinItem != nil {
  470. err = edbDataModel.ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
  471. if err != nil {
  472. return err
  473. }
  474. }
  475. fmt.Println("end calculateArr:", v, time.Now())
  476. }
  477. return
  478. }
  479. // GetChartInfoRefreshData 获取需要刷新的指标
  480. func GetChartInfoRefreshData(chartInfoId int) (baseEdbInfoArr, calculateInfoArr []*edbInfoModel.EdbInfo, err error) {
  481. sql := ` SELECT b.* FROM chart_edb_mapping AS a
  482. INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
  483. WHERE a.chart_info_id=? `
  484. edbInfoList := make([]*edbInfoModel.EdbInfo, 0)
  485. err = global.MYSQL["data"].Exec(sql, chartInfoId).Error
  486. if err != nil {
  487. return
  488. }
  489. for _, v := range edbInfoList {
  490. fmt.Println(v.EdbInfoId, v.EdbType)
  491. if v.EdbType == 1 {
  492. baseEdbInfoArr = append(baseEdbInfoArr, v)
  493. } else {
  494. calculateInfoArr = append(calculateInfoArr, v)
  495. newBaseEdbInfoArr, newCalculateInfoArr, err := GetChartRefreshEdbInfo(v.EdbInfoId, v.Source, 0)
  496. if err != nil {
  497. return baseEdbInfoArr, calculateInfoArr, err
  498. }
  499. baseEdbInfoArr = append(baseEdbInfoArr, newBaseEdbInfoArr...)
  500. calculateInfoArr = append(calculateInfoArr, newCalculateInfoArr...)
  501. }
  502. }
  503. return
  504. }
  505. // GetChartRefreshEdbInfo
  506. func GetChartRefreshEdbInfo(edbInfoId, source, n int) (baseEdbInfoArr, calculateInfoArr []*edbInfoModel.EdbInfo, err error) {
  507. calculateList, err := GetEdbInfoCalculateMap(edbInfoId, source)
  508. if err != nil && err != utils.ErrNoRow {
  509. return
  510. }
  511. n++
  512. for _, item := range calculateList {
  513. fmt.Println(item.EdbInfoId)
  514. if item.EdbType == 1 {
  515. baseEdbInfoArr = append(baseEdbInfoArr, item)
  516. } else {
  517. calculateInfoArr = append(calculateInfoArr, item)
  518. if n > 10 {
  519. return
  520. }
  521. newBaseEdbInfoArr, newCalculateInfoArr, _ := GetChartRefreshEdbInfo(item.EdbInfoId, item.Source, n)
  522. baseEdbInfoArr = append(baseEdbInfoArr, newBaseEdbInfoArr...)
  523. calculateInfoArr = append(calculateInfoArr, newCalculateInfoArr...)
  524. }
  525. }
  526. return
  527. }
  528. func GetEdbInfoCalculateMap(edbInfoId, source int) (list []*edbInfoModel.EdbInfo, err error) {
  529. sql := ` SELECT b.* FROM edb_info_calculate_mapping AS a
  530. INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
  531. WHERE a.edb_info_id=? ORDER BY sort ASC `
  532. err = global.MYSQL["data"].Exec(sql, edbInfoId).Error
  533. return
  534. }