base_from_rzd.go 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839
  1. // @Author gmy 2024/8/13 16:01:00
  2. package controllers
  3. import (
  4. "encoding/json"
  5. "eta/eta_index_lib/logic"
  6. "eta/eta_index_lib/models"
  7. "eta/eta_index_lib/services"
  8. "eta/eta_index_lib/utils"
  9. "fmt"
  10. "strconv"
  11. "time"
  12. )
  13. type BaseFromRzdController struct {
  14. BaseAuthController
  15. }
  16. // Add
  17. // @Title 新增睿姿得指标
  18. // @Description 新增粮油商务网指标
  19. // @router /add [post]
  20. func (this *BaseFromRzdController) Add() {
  21. br := new(models.BaseResponse).Init()
  22. var cacheKey string
  23. defer func() {
  24. utils.Rc.Delete(cacheKey)
  25. this.Data["json"] = br
  26. this.ServeJSON()
  27. }()
  28. source := utils.DATA_SOURCE_RZD
  29. var req models.AddEdbInfoReq
  30. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  31. if err != nil {
  32. br.Msg = "参数解析异常!"
  33. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  34. return
  35. }
  36. if req.EdbCode == "" {
  37. br.Msg = "请输入指标编码!"
  38. br.ErrMsg = "请输入指标编码,指标编码为空"
  39. return
  40. }
  41. cacheKey = utils.CACHE_EDB_DATA_ADD + strconv.Itoa(source) + "_" + req.EdbCode
  42. if !utils.Rc.IsExist(cacheKey) {
  43. utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
  44. err = models.AddEdbDataFromRzd(req.EdbCode)
  45. if err != nil {
  46. br.Msg = "获取指标信息失败!"
  47. br.ErrMsg = "获取指标信息失败 AddEdbDataFromSci99,Err:" + err.Error()
  48. return
  49. }
  50. br.Ret = 200
  51. br.Success = true
  52. br.Msg = "获取成功"
  53. } else {
  54. br.Ret = 501
  55. br.Success = true
  56. br.Msg = "系统处理中,请稍后重试"
  57. }
  58. }
  59. // Refresh
  60. // @Title 刷新粮油商务网指标接口
  61. // @Description 刷新粮油商务网指标接口
  62. // @Success 200 {object} models.RefreshEdbInfoReq
  63. // @router /refresh [post]
  64. func (this *BaseFromRzdController) Refresh() {
  65. br := new(models.BaseResponse).Init()
  66. var cacheKey string
  67. defer func() {
  68. if br.ErrMsg == "" {
  69. br.IsSendEmail = false
  70. }
  71. _ = utils.Rc.Delete(cacheKey)
  72. this.Data["json"] = br
  73. this.ServeJSON()
  74. }()
  75. source := utils.DATA_SOURCE_RZD
  76. var req models.RefreshEdbInfoReq
  77. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  78. if err != nil {
  79. br.Msg = "参数解析异常!"
  80. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  81. return
  82. }
  83. if req.EdbCode == "" {
  84. br.Msg = "请输入指标编码!"
  85. br.ErrMsg = "请输入指标编码,指标编码为空"
  86. return
  87. }
  88. if req.EdbInfoId <= 0 {
  89. br.Msg = "请输入指标ID!"
  90. br.ErrMsg = "请输入指标ID"
  91. return
  92. }
  93. // 获取指标详情
  94. edbInfo, err := models.GetEdbInfoByEdbCode(source, req.EdbCode)
  95. if err != nil {
  96. br.Msg = "指标不存在!"
  97. br.ErrMsg = "指标不存在"
  98. return
  99. }
  100. cacheKey = utils.CACHE_EDB_DATA_REFRESH + strconv.Itoa(source) + "_" + req.EdbCode
  101. if utils.Rc.IsExist(cacheKey) {
  102. br.Ret = 501
  103. br.Success = true
  104. br.Msg = "系统处理中,请稍后重试"
  105. return
  106. }
  107. dataUpdateTime := time.Now().Format(utils.FormatDateTime)
  108. utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
  109. err = models.RefreshEdbDataFromRzd(req.EdbInfoId, req.EdbCode, req.StartDate)
  110. if err != nil && err.Error() != utils.ErrNoRow() {
  111. br.Msg = "刷新指标信息失败!"
  112. br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromBloomberg,Err:" + err.Error()
  113. return
  114. }
  115. // 更新指标最大最小值
  116. erDataUpdateDate, err, errMsg := models.UnifiedModifyEdbInfoMaxAndMinInfoDataUpdate(edbInfo, dataUpdateTime)
  117. if err != nil {
  118. br.Msg = errMsg
  119. br.ErrMsg = err.Error()
  120. return
  121. }
  122. // 添加指标刷新成功日志
  123. if erDataUpdateDate != "" {
  124. _ = services.AddEdbInfoUpdateLog(edbInfo.EdbInfoId, 1, "", 1, "", 0, 0)
  125. } else {
  126. _ = services.AddEdbInfoUpdateLog(edbInfo.EdbInfoId, 1, "", 2, "未刷新到数据", 0, 0)
  127. }
  128. // 更新ES
  129. go logic.UpdateEs(edbInfo.EdbInfoId)
  130. br.Ret = 200
  131. br.Success = true
  132. br.Msg = "获取成功"
  133. }
  134. // AddRzdClassify
  135. // @Title 新增分类
  136. // @Description 获取分类
  137. // @Success 200 {object} models.BaseFromRzdClassify
  138. // @router /add/rzd/classify [post]
  139. func (this *BaseFromRzdController) AddRzdClassify() {
  140. br := new(models.BaseResponse).Init()
  141. var cacheKey string
  142. defer func() {
  143. if br.ErrMsg == "" {
  144. br.IsSendEmail = false
  145. }
  146. _ = utils.Rc.Delete(cacheKey)
  147. this.Data["json"] = br
  148. this.ServeJSON()
  149. }()
  150. var reqData struct {
  151. ClassifyName string `json:"ClassifyName"`
  152. ParentId int `json:"parentId"`
  153. }
  154. err := json.Unmarshal(this.Ctx.Input.RequestBody, &reqData)
  155. if err != nil {
  156. br.ErrMsg = "无法解析请求体"
  157. return
  158. }
  159. categoryName := reqData.ClassifyName
  160. if categoryName == "" {
  161. br.Msg = "请输入分类!"
  162. br.ErrMsg = "请输入分类"
  163. return
  164. }
  165. rzdClassify := models.BaseFromRzdClassify{
  166. ClassifyName: categoryName,
  167. ParentId: reqData.ParentId,
  168. CreateTime: utils.GetCurrentTime(),
  169. ModifyTime: utils.GetCurrentTime(),
  170. }
  171. lyClassify, err := models.AddRzdClassify(&rzdClassify)
  172. if err != nil {
  173. return
  174. }
  175. br.Ret = 200
  176. br.Success = true
  177. br.Data = lyClassify
  178. br.Msg = "获取成功"
  179. }
  180. type RzdClassify struct {
  181. ClassifyName string `json:"ClassifyName"`
  182. ParentId int `json:"ParentId"`
  183. Sort int `json:"Sort"`
  184. ClassifyNameEn string `json:"ClassifyNameEn"`
  185. }
  186. type BatchAddRzdClassifyReq struct {
  187. List []RzdClassify `json:"List"`
  188. }
  189. // BatchAddRzdClassify
  190. // @Title 新增分类
  191. // @Description 获取分类
  192. // @Success 200 {object} models.BaseFromRzdClassify
  193. // @router /add/rzd/batch_add_classify [post]
  194. func (this *BaseFromRzdController) BatchAddRzdClassify() {
  195. br := new(models.BaseResponse).Init()
  196. var cacheKey string
  197. defer func() {
  198. if br.ErrMsg == "" {
  199. br.IsSendEmail = false
  200. }
  201. _ = utils.Rc.Delete(cacheKey)
  202. this.Data["json"] = br
  203. this.ServeJSON()
  204. }()
  205. var reqData BatchAddRzdClassifyReq
  206. err := json.Unmarshal(this.Ctx.Input.RequestBody, &reqData)
  207. if err != nil {
  208. br.ErrMsg = "无法解析请求体"
  209. return
  210. }
  211. var categoryList []*models.BaseFromRzdClassify
  212. for _, classify := range reqData.List {
  213. if classify.ClassifyName == "" {
  214. br.Msg = "请输入分类!"
  215. br.ErrMsg = "请输入分类"
  216. return
  217. }
  218. categoryList = append(categoryList, &models.BaseFromRzdClassify{
  219. ClassifyName: classify.ClassifyName,
  220. ParentId: classify.ParentId,
  221. Sort: classify.Sort,
  222. CreateTime: utils.GetCurrentTime(),
  223. ModifyTime: utils.GetCurrentTime(),
  224. ClassifyNameEn: classify.ClassifyNameEn,
  225. })
  226. }
  227. err = models.BatchAddRzdClassify(categoryList)
  228. if err != nil {
  229. return
  230. }
  231. br.Ret = 200
  232. br.Success = true
  233. br.Data = categoryList
  234. br.Msg = "获取成功"
  235. }
  236. // GetRzdClassifyByName
  237. // @Title 获取分类
  238. // @Description 获取分类
  239. // @Success 200 {object} models.BaseFromRzdClassify
  240. // @router /get/rzd/classify/by/name [post]
  241. func (this *BaseFromRzdController) GetRzdClassifyByName() {
  242. br := new(models.BaseResponse).Init()
  243. var cacheKey string
  244. defer func() {
  245. if br.ErrMsg == "" {
  246. br.IsSendEmail = false
  247. }
  248. _ = utils.Rc.Delete(cacheKey)
  249. this.Data["json"] = br
  250. this.ServeJSON()
  251. }()
  252. var reqData struct {
  253. ClassifyName string `json:"ClassifyName"`
  254. }
  255. err := json.Unmarshal(this.Ctx.Input.RequestBody, &reqData)
  256. if err != nil {
  257. br.ErrMsg = "无法解析请求体"
  258. return
  259. }
  260. categoryName := reqData.ClassifyName
  261. if categoryName == "" {
  262. br.Msg = "请输入分类!"
  263. br.ErrMsg = "请输入分类"
  264. return
  265. }
  266. lyClassify, err := models.GetRzdClassifyByName(categoryName)
  267. if err != nil {
  268. return
  269. }
  270. br.Ret = 200
  271. br.Success = true
  272. br.Data = lyClassify
  273. br.Msg = "获取成功"
  274. }
  275. // GetRzdClassifyList
  276. // @Title 获取分类
  277. // @Description 获取分类
  278. // @Success 200 {object} models.BaseFromRzdClassify
  279. // @router /get/rzd/classify [post]
  280. func (this *BaseFromRzdController) GetRzdClassifyList() {
  281. br := new(models.BaseResponse).Init()
  282. defer func() {
  283. if br.ErrMsg == "" {
  284. br.IsSendEmail = false
  285. }
  286. this.Data["json"] = br
  287. this.ServeJSON()
  288. }()
  289. classifyList, err := models.GetRzdClassifyList()
  290. if err != nil {
  291. br.Msg = "获取睿咨得分类失败"
  292. br.ErrMsg = "获取睿咨得分类失败,err:" + err.Error()
  293. return
  294. }
  295. br.Ret = 200
  296. br.Success = true
  297. br.Data = classifyList
  298. br.Msg = "获取成功"
  299. }
  300. // AddBatchRzdData
  301. // @Title 新增数据源指标数据
  302. // @Description 新增数据源指标数据
  303. // @Success 200 string "处理成功"
  304. // @router /add/batch/rzd/data [post]
  305. func (this *BaseFromRzdController) AddBatchRzdData() {
  306. br := new(models.BaseResponse).Init()
  307. var cacheKey string
  308. defer func() {
  309. if br.ErrMsg == "" {
  310. br.IsSendEmail = false
  311. }
  312. _ = utils.Rc.Delete(cacheKey)
  313. this.Data["json"] = br
  314. this.ServeJSON()
  315. }()
  316. var req models.IndexInfo
  317. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  318. if err != nil {
  319. br.Msg = "参数解析异常!"
  320. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  321. return
  322. }
  323. //先添加指标
  324. rzdIndex, err := models.GetRzdIndexByCode(req.IndexCode)
  325. if err != nil {
  326. if !utils.IsErrNoRow(err) {
  327. br.Msg = "查询指标失败"
  328. br.ErrMsg = "查询指标失败,Err:" + err.Error()
  329. return
  330. }
  331. rzdIndex = &models.BaseFromRzdIndex{
  332. CreateTime: time.Now(), // 创建时间
  333. BaseFromRzdClassifyId: req.ClassifyId, // 指标编码
  334. IndexName: req.IndexName, // 指标名称
  335. IndexCode: req.IndexCode,
  336. Frequency: req.Frequency, // 频度
  337. Unit: req.Unit, // 单位
  338. StartDate: req.StartDate, // 数据开始日期
  339. EndDate: req.EndDate, // 数据结束日期
  340. LatestValue: req.LatestValue.InexactFloat64(),
  341. }
  342. var dataList []*models.BaseFromRzdData
  343. for _, data := range req.DataList {
  344. rzdData := &models.BaseFromRzdData{
  345. CreateTime: time.Now().Format(utils.FormatDateTime),
  346. IndexCode: req.IndexCode,
  347. DataTime: data.DataTime.Format(utils.FormatDate),
  348. Value: data.Value.InexactFloat64(),
  349. }
  350. dataList = append(dataList, rzdData)
  351. }
  352. err = models.AddRzdIndexWithDataList(rzdIndex, dataList)
  353. if err != nil {
  354. br.Msg = "查询指标失败"
  355. br.ErrMsg = "查询指标失败,Err:" + err.Error()
  356. return
  357. }
  358. } else {
  359. rzdIndex.BaseFromRzdClassifyId = req.ClassifyId
  360. if rzdIndex.StartDate.After(req.StartDate) {
  361. rzdIndex.StartDate = req.StartDate
  362. }
  363. if rzdIndex.EndDate.Before(req.EndDate) {
  364. rzdIndex.EndDate = req.EndDate
  365. rzdIndex.LatestValue = req.LatestValue.InexactFloat64()
  366. }
  367. var dataList []*models.BaseFromRzdData
  368. for _, data := range req.DataList {
  369. rzdData := &models.BaseFromRzdData{
  370. BaseFromRzdIndexId: rzdIndex.BaseFromRzdIndexId,
  371. CreateTime: time.Now().Format(utils.FormatDateTime),
  372. IndexCode: req.IndexCode,
  373. DataTime: data.DataTime.Format(utils.FormatDate),
  374. Value: data.Value.InexactFloat64(),
  375. }
  376. dataList = append(dataList, rzdData)
  377. }
  378. err = models.UpdateIndexAndAddRzdDataList(rzdIndex, dataList)
  379. if err != nil {
  380. br.Msg = "新增指标数据失败!"
  381. br.ErrMsg = "新增指标数据失败,Err:" + err.Error()
  382. return
  383. }
  384. //更新指标库信息
  385. // 获取指标详情
  386. var edbInfo *models.EdbInfo
  387. edbInfo, err = models.GetEdbInfoByEdbCode(utils.DATA_SOURCE_RZD, rzdIndex.IndexCode)
  388. if err != nil {
  389. if err.Error() != utils.ErrNoRow() {
  390. utils.FileLog.Error(fmt.Sprint("刷新ETA指标异常,指标编码:", rzdIndex.IndexCode, err.Error()))
  391. return
  392. } else {
  393. err = nil
  394. }
  395. }
  396. // 已经加入到指标库的话,那么就去更新ETA指标库吧
  397. if edbInfo != nil {
  398. go logic.RefreshBaseEdbInfo(edbInfo, ``)
  399. }
  400. }
  401. br.Ret = 200
  402. br.Success = true
  403. br.Msg = "处理成功"
  404. }
  405. // AddRzdIndex
  406. // @Title 新增指标
  407. // @Description 新增指标
  408. // @Success 200 string "处理成功"
  409. // @router /add/rzd/index [post]
  410. func (this *BaseFromRzdController) AddRzdIndex() {
  411. br := new(models.BaseResponse).Init()
  412. var cacheKey string
  413. defer func() {
  414. if br.ErrMsg == "" {
  415. br.IsSendEmail = false
  416. }
  417. _ = utils.Rc.Delete(cacheKey)
  418. this.Data["json"] = br
  419. this.ServeJSON()
  420. }()
  421. var req models.BaseFromRzdIndex
  422. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  423. if err != nil {
  424. br.Msg = "参数解析异常!"
  425. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  426. return
  427. }
  428. indexId, err := models.AddRzdIndex(&req)
  429. if err != nil {
  430. return
  431. }
  432. br.Ret = 200
  433. br.Success = true
  434. br.Data = indexId
  435. br.Msg = "处理成功"
  436. }
  437. // GetRzdIndexDataByIndexIdAndDataTime
  438. // @Title 根据指标code和时间获取指标数据
  439. // @Description 根据指标code和时间获取指标数据
  440. // @Success 200 {object} models.BaseFromLyData
  441. // @router /get/rzd/index/data/by/code/and/time [post]
  442. func (this *BaseFromRzdController) GetRzdIndexDataByIndexIdAndDataTime() {
  443. br := new(models.BaseResponse).Init()
  444. var cacheKey string
  445. defer func() {
  446. if br.ErrMsg == "" {
  447. br.IsSendEmail = false
  448. }
  449. _ = utils.Rc.Delete(cacheKey)
  450. this.Data["json"] = br
  451. this.ServeJSON()
  452. }()
  453. var reqData struct {
  454. IndexCode string `json:"IndexCode"`
  455. DataTime string `json:"DataTime"`
  456. }
  457. err := json.Unmarshal(this.Ctx.Input.RequestBody, &reqData)
  458. if err != nil {
  459. br.ErrMsg = "无法解析请求体"
  460. return
  461. }
  462. indexCode := reqData.IndexCode
  463. if indexCode == "" {
  464. br.Msg = "请输入指标code!"
  465. br.ErrMsg = "请输入指标code"
  466. return
  467. }
  468. dataTime := reqData.DataTime
  469. if dataTime == "" {
  470. br.Msg = "请输入时间!"
  471. br.ErrMsg = "请输入时间"
  472. return
  473. }
  474. rzdData, err := models.GetRzdDataByIndexCodeAndDataTime(indexCode, dataTime)
  475. if err != nil {
  476. return
  477. }
  478. br.Ret = 200
  479. br.Success = true
  480. br.Data = rzdData
  481. br.Msg = "获取成功"
  482. }
  483. // UpdateRzdDataById
  484. // @Title 更新数据源指标数据
  485. // @Description 更新数据源指标数据
  486. // @Success 200 string "处理成功"
  487. // @router /update/rzd/data/by/id [post]
  488. func (this *BaseFromRzdController) UpdateRzdDataById() {
  489. br := new(models.BaseResponse).Init()
  490. var cacheKey string
  491. defer func() {
  492. if br.ErrMsg == "" {
  493. br.IsSendEmail = false
  494. }
  495. _ = utils.Rc.Delete(cacheKey)
  496. this.Data["json"] = br
  497. this.ServeJSON()
  498. }()
  499. var reqData struct {
  500. Id int `json:"Id"`
  501. Value float64 `json:"Value"`
  502. }
  503. err := json.Unmarshal(this.Ctx.Input.RequestBody, &reqData)
  504. if err != nil {
  505. br.ErrMsg = "无法解析请求体"
  506. return
  507. }
  508. id := reqData.Id
  509. if id == 0 {
  510. br.Msg = "请输入id!"
  511. br.ErrMsg = "请输入id"
  512. return
  513. }
  514. value := reqData.Value
  515. if value == 0 {
  516. br.Msg = "请输入值!"
  517. br.ErrMsg = "请输入值"
  518. return
  519. }
  520. err = models.UpdateRzdDataById(id, value)
  521. if err != nil {
  522. return
  523. }
  524. br.Ret = 200
  525. br.Success = true
  526. br.Msg = "处理成功"
  527. }
  528. // GetRzdEdbDataByIndexCodeAndDataTime
  529. // @Title 根据指标编码和精确日期获取指标库数据
  530. // @Description 根据指标编码和精确日期获取指标库数据
  531. // @Success 200 {object} []models.EdbDataRzd
  532. // @router /get/edb/rzd/data/by/code/and/time [post]
  533. func (this *BaseFromRzdController) GetRzdEdbDataByIndexCodeAndDataTime() {
  534. br := new(models.BaseResponse).Init()
  535. var cacheKey string
  536. defer func() {
  537. if br.ErrMsg == "" {
  538. br.IsSendEmail = false
  539. }
  540. _ = utils.Rc.Delete(cacheKey)
  541. this.Data["json"] = br
  542. this.ServeJSON()
  543. }()
  544. var reqData struct {
  545. IndexCode string `json:"IndexCode"`
  546. DataTime string `json:"DataTime"`
  547. }
  548. err := json.Unmarshal(this.Ctx.Input.RequestBody, &reqData)
  549. if err != nil {
  550. br.ErrMsg = "无法解析请求体"
  551. return
  552. }
  553. indexCode := reqData.IndexCode
  554. if indexCode == "" {
  555. br.Msg = "请输入指标id!"
  556. br.ErrMsg = "请输入指标id"
  557. return
  558. }
  559. dataTime := reqData.DataTime
  560. if dataTime == "" {
  561. br.Msg = "请输入时间!"
  562. br.ErrMsg = "请输入时间"
  563. return
  564. }
  565. lyEdbData, err := models.GetLyEdbDataByIndexCodeAndExactDataTime(indexCode, dataTime)
  566. if err != nil {
  567. return
  568. }
  569. br.Ret = 200
  570. br.Success = true
  571. br.Data = lyEdbData
  572. br.Msg = "获取成功"
  573. }
  574. // GetRzdEdbInfoByIndexCode
  575. // @Title 根据指标编码获取指标库指标
  576. // @Description 根据指标编码获取指标库指标
  577. // @Success 200 {object} []models.EdbDataRzd
  578. // @router /get/rzd/edb/info/by/code [post]
  579. func (this *BaseFromRzdController) GetRzdEdbInfoByIndexCode() {
  580. br := new(models.BaseResponse).Init()
  581. var cacheKey string
  582. defer func() {
  583. if br.ErrMsg == "" {
  584. br.IsSendEmail = false
  585. }
  586. _ = utils.Rc.Delete(cacheKey)
  587. this.Data["json"] = br
  588. this.ServeJSON()
  589. }()
  590. var reqData struct {
  591. IndexCode string `json:"IndexCode"`
  592. Source int `json:"Source"`
  593. }
  594. err := json.Unmarshal(this.Ctx.Input.RequestBody, &reqData)
  595. if err != nil {
  596. br.ErrMsg = "无法解析请求体"
  597. return
  598. }
  599. indexCode := reqData.IndexCode
  600. if indexCode == "" {
  601. br.Msg = "请输入指标id!"
  602. br.ErrMsg = "请输入指标id"
  603. return
  604. }
  605. source := reqData.Source
  606. if source == 0 {
  607. br.Msg = "请输入来源!"
  608. br.ErrMsg = "请输入来源"
  609. return
  610. }
  611. lyEdbData, err := models.GetEdbInfoByEdbCode(source, indexCode)
  612. if err != nil {
  613. return
  614. }
  615. br.Ret = 200
  616. br.Success = true
  617. br.Data = lyEdbData
  618. br.Msg = "获取成功"
  619. }
  620. // UpdateRzdEdbDataById
  621. // @Title 更新指标库数据 须根据指标编码和日期更新 仅适合月度数据
  622. // @Description 更新指标库数据 须根据指标编码和日期更新 仅适合月度数据
  623. // @Success 200 string "处理成功"
  624. // @router /update/rzd/edb/data/by/id [post]
  625. func (this *BaseFromRzdController) UpdateRzdEdbDataById() {
  626. br := new(models.BaseResponse).Init()
  627. var cacheKey string
  628. defer func() {
  629. if br.ErrMsg == "" {
  630. br.IsSendEmail = false
  631. }
  632. _ = utils.Rc.Delete(cacheKey)
  633. this.Data["json"] = br
  634. this.ServeJSON()
  635. }()
  636. var reqData struct {
  637. Id int `json:"Id"`
  638. Value float64 `json:"Value"`
  639. }
  640. err := json.Unmarshal(this.Ctx.Input.RequestBody, &reqData)
  641. if err != nil {
  642. br.ErrMsg = "无法解析请求体"
  643. return
  644. }
  645. id := reqData.Id
  646. if id == 0 {
  647. br.Msg = "请输入id!"
  648. br.ErrMsg = "请输入id"
  649. return
  650. }
  651. value := reqData.Value
  652. if value == 0 {
  653. br.Msg = "请输入值!"
  654. br.ErrMsg = "请输入值"
  655. return
  656. }
  657. err = models.UpdateRzdEdbDataById(id, value)
  658. if err != nil {
  659. return
  660. }
  661. br.Ret = 200
  662. br.Success = true
  663. br.Msg = "处理成功"
  664. }
  665. // GetRzdIndexByCode
  666. // @Title 查询指标编码是否存在
  667. // @Description 查询指标编码是否存在
  668. // @Success 200 {object} models.BaseFromLyIndex
  669. // @router /get/rzd/index/by/code [post]
  670. func (this *BaseFromRzdController) GetRzdIndexByCode() {
  671. br := new(models.BaseResponse).Init()
  672. var cacheKey string
  673. defer func() {
  674. if br.ErrMsg == "" {
  675. br.IsSendEmail = false
  676. }
  677. _ = utils.Rc.Delete(cacheKey)
  678. this.Data["json"] = br
  679. this.ServeJSON()
  680. }()
  681. var reqData struct {
  682. IndexCode string `json:"IndexCode"`
  683. }
  684. err := json.Unmarshal(this.Ctx.Input.RequestBody, &reqData)
  685. if err != nil {
  686. br.ErrMsg = "无法解析请求体"
  687. return
  688. }
  689. indexCode := reqData.IndexCode
  690. if indexCode == "" {
  691. br.Msg = "请输入指标id!"
  692. br.ErrMsg = "请输入指标id"
  693. return
  694. }
  695. rzdIndex, err := models.GetRzdIndexByCode(indexCode)
  696. if err != nil {
  697. return
  698. }
  699. br.Ret = 200
  700. br.Success = true
  701. br.Data = rzdIndex
  702. br.Msg = "获取成功"
  703. }
  704. // AddBatchRzdEdbData
  705. // @Title 批量增加睿咨得指标库数据
  706. // @Description 批量增加睿咨得指标库数据
  707. // @Success 200 string "处理成功"
  708. // @router /add/batch/rzd/edb/data [post]
  709. func (this *BaseFromRzdController) AddBatchRzdEdbData() {
  710. br := new(models.BaseResponse).Init()
  711. var cacheKey string
  712. defer func() {
  713. if br.ErrMsg == "" {
  714. br.IsSendEmail = false
  715. }
  716. _ = utils.Rc.Delete(cacheKey)
  717. this.Data["json"] = br
  718. this.ServeJSON()
  719. }()
  720. var req []models.EdbDataRzd
  721. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  722. if err != nil {
  723. br.Msg = "参数解析异常!"
  724. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  725. return
  726. }
  727. err = models.AddRzdEdbDataList(req)
  728. if err != nil {
  729. return
  730. }
  731. br.Ret = 200
  732. br.Success = true
  733. br.Msg = "处理成功"
  734. }
  735. // UpdateRzdEdbData
  736. // @Title 修改指标数据
  737. // @Description 修改指标数据
  738. // @Success 200 string "处理成功"
  739. // @router /update/rzd/edb/data [post]
  740. func (this *BaseFromRzdController) UpdateRzdEdbData() {
  741. br := new(models.BaseResponse).Init()
  742. var cacheKey string
  743. defer func() {
  744. if br.ErrMsg == "" {
  745. br.IsSendEmail = false
  746. }
  747. _ = utils.Rc.Delete(cacheKey)
  748. this.Data["json"] = br
  749. this.ServeJSON()
  750. }()
  751. var req models.BaseFromRzdData
  752. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  753. if err != nil {
  754. br.Msg = "参数解析异常!"
  755. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  756. return
  757. }
  758. err = models.UpdateRzdData(&req)
  759. if err != nil {
  760. return
  761. }
  762. // 同步更新指标库数据
  763. edbInfo, err := models.GetEdbInfoByEdbCode(utils.DATA_SOURCE_RZD, req.IndexCode)
  764. if err != nil {
  765. br.Msg = "指标不存在!"
  766. br.ErrMsg = "指标不存在"
  767. return
  768. }
  769. if edbInfo.EdbInfoId > 0 {
  770. err = models.UpdateRzdEdbDataByIndexCodeAndDataTime(req.BaseFromRzdIndexId, req.DataTime, req.Value)
  771. if err != nil {
  772. return
  773. }
  774. }
  775. br.Ret = 200
  776. br.Success = true
  777. br.Msg = "处理成功"
  778. }