base_from_rzd.go 20 KB

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