base_from_rzd_index_controller.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691
  1. // Package data_manage
  2. // @Author gmy 2024/8/12 14:31:00
  3. package data_manage
  4. import (
  5. "encoding/json"
  6. "eta/eta_api/controllers"
  7. "eta/eta_api/models"
  8. "eta/eta_api/models/data_manage"
  9. "eta/eta_api/models/system"
  10. "eta/eta_api/services/data"
  11. etaTrialService "eta/eta_api/services/eta_trial"
  12. "eta/eta_api/utils"
  13. "fmt"
  14. "github.com/rdlucklib/rdluck_tools/paging"
  15. "github.com/tealeg/xlsx"
  16. "os"
  17. "path/filepath"
  18. "strconv"
  19. "strings"
  20. "time"
  21. )
  22. // BaseFromRzdIndexController 睿姿得数据控制器
  23. type BaseFromRzdIndexController struct {
  24. controllers.BaseAuthController
  25. }
  26. // RzdClassify
  27. // @Title 睿姿得数据分类
  28. // @Description 汾渭数据分类接口
  29. // @Success 200 {object} data_manage.BaseFromRzdClassifyResponse
  30. // @router /rzd/classify [get]
  31. func (this *BaseFromRzdIndexController) RzdClassify() {
  32. br := new(models.BaseResponse).Init()
  33. defer func() {
  34. if br.ErrMsg == "" {
  35. br.IsSendEmail = false
  36. }
  37. this.Data["json"] = br
  38. this.ServeJSON()
  39. }()
  40. sysUser := this.SysUser
  41. if sysUser == nil {
  42. br.Msg = "请登录"
  43. br.ErrMsg = "请登录,SysUser Is Empty"
  44. br.Ret = 408
  45. return
  46. }
  47. classifies, e := data.RzdClassifyList()
  48. if e != nil {
  49. br.Msg = "获取失败"
  50. br.ErrMsg = "获取睿姿得数据分类失败, Err: " + e.Error()
  51. return
  52. }
  53. br.Data = classifies
  54. br.Ret = 200
  55. br.Success = true
  56. br.Msg = "获取成功"
  57. }
  58. // RzdIndexData
  59. // @Title 获取睿姿得数据
  60. // @Description 获取睿姿得数据
  61. // @Param PageSize query int true "每页数据条数"
  62. // @Param CurrentIndex query int true "当前页页码,从1开始"
  63. // @Param ClassifyId query string true "分类id"
  64. // @Param Frequency query string true "频率"
  65. // @Success 200
  66. // @router /rzd/index/data [get]
  67. func (this *BaseFromRzdIndexController) RzdIndexData() {
  68. br := new(models.BaseResponse).Init()
  69. defer func() {
  70. if br.ErrMsg == "" {
  71. br.IsSendEmail = false
  72. }
  73. this.Data["json"] = br
  74. this.ServeJSON()
  75. }()
  76. sysUser := this.SysUser
  77. if sysUser == nil {
  78. br.Msg = "请登录"
  79. br.ErrMsg = "请登录,SysUser Is Empty"
  80. br.Ret = 408
  81. return
  82. }
  83. pageSize, _ := this.GetInt("PageSize")
  84. currentIndex, _ := this.GetInt("CurrentIndex")
  85. var startSize int
  86. if pageSize <= 0 {
  87. pageSize = utils.PageSize20
  88. }
  89. if currentIndex <= 0 {
  90. currentIndex = 1
  91. }
  92. startSize = utils.StartIndex(currentIndex, pageSize)
  93. classifyId, _ := this.GetInt("ClassifyId")
  94. if classifyId < 0 {
  95. br.Msg = "请选择分类"
  96. br.ErrMsg = "请选择分类"
  97. return
  98. }
  99. frequency := this.GetString("Frequency")
  100. // 获取指标
  101. var condition string
  102. var pars []interface{}
  103. if classifyId >= 0 {
  104. condition += ` AND base_from_rzd_classify_id=? `
  105. pars = append(pars, classifyId)
  106. }
  107. if frequency != "" {
  108. condition += ` AND frequency=? `
  109. pars = append(pars, frequency)
  110. }
  111. indexes, err := data_manage.GetRzdIndex(condition, pars)
  112. if err != nil {
  113. br.Msg = "获取数据失败"
  114. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  115. return
  116. }
  117. indexCodes := make([]string, 0)
  118. for _, v := range indexes {
  119. indexCodes = append(indexCodes, v.IndexCode)
  120. }
  121. indexCounts, e := data_manage.GetRzdIndexDataCountGroup(indexCodes)
  122. if e != nil {
  123. br.Msg = "获取失败"
  124. br.ErrMsg = "获取指标数据总量失败, Err:" + err.Error()
  125. return
  126. }
  127. countMap := make(map[string]int)
  128. for _, v := range indexCounts {
  129. countMap[v.IndexCode] = v.Count
  130. }
  131. // 判断是否存在于指标库
  132. edbCodeList, err := data_manage.GetEdbInfoByEdbCodeList(utils.DATA_SOURCE_RZD, indexCodes)
  133. if err != nil {
  134. return
  135. }
  136. edbCodeMap := make(map[string]*data_manage.EdbInfo)
  137. for _, v := range edbCodeList {
  138. edbCodeMap[v.EdbCode] = v
  139. }
  140. resultList := make([]*data_manage.BaseFromRzdIndexList, 0)
  141. for _, v := range indexes {
  142. product := new(data_manage.BaseFromRzdIndexList)
  143. product.BaseFromRzdIndexId = v.FenweiIndexId
  144. product.BaseFromRzdClassifyId = v.ClassifyId
  145. product.Unit = v.Unit
  146. product.IndexCode = v.IndexCode
  147. product.IndexName = v.IndexName
  148. product.Frequency = v.Frequency
  149. product.CreateTime = v.CreateTime
  150. product.ModifyTime = v.ModifyTime
  151. edbInfo := edbCodeMap[v.IndexCode]
  152. if edbInfo != nil {
  153. product.EdbInfoId = edbInfo.EdbInfoId
  154. }
  155. total := countMap[v.IndexCode]
  156. page := paging.GetPaging(currentIndex, pageSize, total)
  157. dataList, e := data_manage.GetRzdIndexData(v.IndexCode, startSize, pageSize)
  158. if e != nil {
  159. br.Msg = "获取数据失败"
  160. br.ErrMsg = "获取指标数据失败,Err:" + e.Error()
  161. return
  162. }
  163. if dataList == nil {
  164. dataList = make([]*data_manage.BaseFromRzdData, 0)
  165. }
  166. product.DataList = dataList
  167. product.Paging = page
  168. resultList = append(resultList, product)
  169. }
  170. br.Ret = 200
  171. br.Success = true
  172. br.Msg = "获取成功"
  173. br.Data = resultList
  174. }
  175. // GetRzdFrequencyList
  176. // @Title 查询频率列表
  177. // @Description 查询频率列表
  178. // @Param classifyId query int false "指标唯一编码"
  179. // @Success 200 {object} []string
  180. // @router /rzd/frequency/list [get]
  181. func (this *BaseFromRzdIndexController) GetRzdFrequencyList() {
  182. br := new(models.BaseResponse).Init()
  183. defer func() {
  184. if br.ErrMsg == "" {
  185. br.IsSendEmail = false
  186. }
  187. this.Data["json"] = br
  188. this.ServeJSON()
  189. }()
  190. sysUser := this.SysUser
  191. if sysUser == nil {
  192. br.Msg = "请登录"
  193. br.ErrMsg = "请登录,SysUser Is Empty"
  194. br.Ret = 408
  195. return
  196. }
  197. classifyId, _ := this.GetInt("ClassifyId")
  198. frequencyList, err := data_manage.GetRzdIndexFrequency(classifyId)
  199. if err != nil {
  200. return
  201. }
  202. br.Ret = 200
  203. br.Success = true
  204. br.Msg = "获取成功"
  205. br.Data = frequencyList
  206. }
  207. // RzdIndexAddValidate
  208. // @Title 新增加入到指标库校验
  209. // @Description 新增加入到指标库校验
  210. // @Param req body data_manage.BaseFromFenWeiIndexBatchAddCheckReq true "请求参数"
  211. // @Success 200 {object} []data_manage.IndexCheckData
  212. // @router /rzd/index/add/validate [post]
  213. func (this *BaseFromRzdIndexController) RzdIndexAddValidate() {
  214. br := new(models.BaseResponse).Init()
  215. defer func() {
  216. if br.ErrMsg == "" {
  217. br.IsSendEmail = false
  218. }
  219. this.Data["json"] = br
  220. this.ServeJSON()
  221. }()
  222. sysUser := this.SysUser
  223. if sysUser == nil {
  224. br.Msg = "请登录"
  225. br.ErrMsg = "请登录,SysUser Is Empty"
  226. br.Ret = 408
  227. return
  228. }
  229. var req *data_manage.BaseFromRzdIndexBatchAddCheckReq
  230. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  231. br.Msg = "参数解析异常!"
  232. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  233. return
  234. }
  235. codeLen := len(req.IndexCodes)
  236. var codeMax = 30
  237. if codeLen > codeMax {
  238. br.Msg = "批量添加指标数量不得超过" + strconv.Itoa(codeMax) + "个"
  239. br.ErrMsg = "批量添加指标数量不得超过" + strconv.Itoa(codeMax) + "个"
  240. return
  241. }
  242. // 校验指标编码是否存在
  243. addValidate, err := data.RzdIndexAddValidate(req.IndexCodes)
  244. if err != nil {
  245. return
  246. }
  247. br.Data = addValidate
  248. br.Ret = 200
  249. br.Success = true
  250. br.Msg = "操作成功"
  251. }
  252. // RzdIndexAdd
  253. // @Title 指标添加到指标库
  254. // @Description 指标添加到指标库
  255. // @Param req body []data_manage.AddEdbInfoReq true "请求参数"
  256. // @Success 200 string "操作成功"
  257. // @router /rzd/index/add [post]
  258. func (this *BaseFromRzdIndexController) RzdIndexAdd() {
  259. br := new(models.BaseResponse).Init()
  260. defer func() {
  261. if br.ErrMsg == "" {
  262. br.IsSendEmail = false
  263. }
  264. this.Data["json"] = br
  265. this.ServeJSON()
  266. }()
  267. sysUser := this.SysUser
  268. if sysUser == nil {
  269. br.Msg = "请登录"
  270. br.ErrMsg = "请登录,SysUser Is Empty"
  271. br.Ret = 408
  272. return
  273. }
  274. deleteCache := true
  275. cacheKey := "CACHE_EDB_INFO_BATCH_ADD_RZD_" + strconv.Itoa(sysUser.AdminId)
  276. defer func() {
  277. if deleteCache {
  278. _ = utils.Rc.Delete(cacheKey)
  279. }
  280. }()
  281. if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
  282. deleteCache = false
  283. br.Msg = "系统处理中,请稍后重试!"
  284. br.ErrMsg = "系统处理中,请稍后重试!" + sysUser.RealName + ";data:" + string(this.Ctx.Input.RequestBody)
  285. return
  286. }
  287. var req []*data_manage.AddEdbInfoReq
  288. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  289. br.Msg = "参数解析异常!"
  290. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  291. return
  292. }
  293. if len(req) == 0 {
  294. br.Msg = "请选择指标"
  295. return
  296. }
  297. codeMax := 30
  298. if len(req) > codeMax {
  299. br.Msg = "批量添加指标数量不得超过" + strconv.Itoa(codeMax) + "个"
  300. return
  301. }
  302. indexNames := make([]string, 0)
  303. resp := make([]*data_manage.RzdNameCheckResult, 0)
  304. for _, index := range req {
  305. index.EdbCode = strings.TrimSpace(index.EdbCode)
  306. if index.EdbCode == "" {
  307. br.Msg = "指标ID不可为空"
  308. return
  309. }
  310. index.EdbName = strings.TrimSpace(index.EdbName)
  311. if index.EdbName == "" {
  312. br.Msg = "请输入指标名称"
  313. return
  314. }
  315. index.Frequency = strings.TrimSpace(index.Frequency)
  316. if index.Frequency == "" {
  317. br.Msg = "请选择频度"
  318. return
  319. }
  320. index.Unit = strings.TrimSpace(index.Unit)
  321. if index.Unit == "" {
  322. br.Msg = "请输入单位"
  323. return
  324. }
  325. if index.ClassifyId <= 0 {
  326. br.Msg = "请选择分类"
  327. return
  328. }
  329. indexNames = append(indexNames, index.EdbName)
  330. resp = append(resp, &data_manage.RzdNameCheckResult{
  331. IndexCode: index.EdbCode,
  332. IndexName: index.EdbName,
  333. Exist: false,
  334. })
  335. }
  336. // 指标名称重复校验
  337. nameCheck, err := data.RzdIndexNameCheck(indexNames, resp)
  338. if err != nil {
  339. br.Msg = err.Error()
  340. br.ErrMsg = err.Error()
  341. return
  342. }
  343. for _, v := range nameCheck {
  344. if v.Exist {
  345. br.Msg = "指标名称重复"
  346. br.Data = nameCheck
  347. br.Ret = 200
  348. br.Success = true
  349. return
  350. }
  351. }
  352. for _, v := range req {
  353. var rzdIndexAddReq data_manage.RzdIndexAddReq
  354. rzdIndexAddReq.EdbCode = v.EdbCode
  355. rzdIndexAddReq.EdbName = v.EdbName
  356. rzdIndexAddReq.Frequency = v.Frequency
  357. rzdIndexAddReq.Unit = v.Unit
  358. rzdIndexAddReq.ClassifyId = v.ClassifyId
  359. rzdIndexAddReq.AdminId = sysUser.AdminId
  360. rzdIndexAddReq.AdminRealName = sysUser.RealName
  361. // 新增指标到指标库
  362. edbInfo, e, errMsg, skip := data.RzdIndexAdd(rzdIndexAddReq, this.Lang)
  363. if e != nil {
  364. br.Msg = "操作失败"
  365. if errMsg != "" {
  366. br.Msg = errMsg
  367. }
  368. br.ErrMsg = e.Error()
  369. return
  370. }
  371. if skip {
  372. continue
  373. }
  374. // todo 下面两段代码能否抽离出来???
  375. // 试用平台更新用户累计新增指标数
  376. if utils.BusinessCode == utils.BusinessCodeSandbox {
  377. go func() {
  378. adminItem, e := system.GetSysAdminById(sysUser.AdminId)
  379. if e != nil {
  380. tips := fmt.Sprintf("试用平台更新用户累计新增指标数-获取用户失败, Err: " + e.Error())
  381. utils.FileLog.Info(tips)
  382. return
  383. }
  384. if adminItem.DepartmentName != "ETA试用客户" {
  385. return
  386. }
  387. var ur etaTrialService.EtaTrialUserReq
  388. ur.Mobile = adminItem.Mobile
  389. _, _ = etaTrialService.UpdateUserIndexNum(ur)
  390. }()
  391. }
  392. // 新增操作日志
  393. {
  394. edbLog := new(data_manage.EdbInfoLog)
  395. edbLog.EdbInfoId = edbInfo.EdbInfoId
  396. edbLog.SourceName = edbInfo.SourceName
  397. edbLog.Source = edbInfo.Source
  398. edbLog.EdbCode = edbInfo.EdbCode
  399. edbLog.EdbName = edbInfo.EdbName
  400. edbLog.ClassifyId = edbInfo.ClassifyId
  401. edbLog.SysUserId = sysUser.AdminId
  402. edbLog.SysUserRealName = sysUser.RealName
  403. edbLog.CreateTime = time.Now()
  404. edbLog.Content = string(this.Ctx.Input.RequestBody)
  405. edbLog.Status = "新增指标"
  406. edbLog.Method = this.Ctx.Input.URI()
  407. go data_manage.AddEdbInfoLog(edbLog)
  408. }
  409. }
  410. br.Msg = "操作成功"
  411. br.Ret = 200
  412. br.Success = true
  413. br.IsAddLog = true
  414. }
  415. // RzdIndexDataExport
  416. // @Title 导出指标数据
  417. // @Description 导出指标数据
  418. // @Param IndexCode query string false "指标编码"
  419. // @Param ClassifyId query int false "分类ID"
  420. // @Success 200 string "操作成功"
  421. // @router /rzd/index/data/export [get]
  422. func (this *BaseFromRzdIndexController) RzdIndexDataExport() {
  423. br := new(models.BaseResponse).Init()
  424. defer func() {
  425. this.Data["json"] = br
  426. this.ServeJSON()
  427. }()
  428. sysUser := this.SysUser
  429. if sysUser == nil {
  430. br.Msg = "请重新登录"
  431. return
  432. }
  433. classifyId, _ := this.GetInt("ClassifyId") //分类
  434. indexCode := this.GetString("IndexCode") //指标唯一编码
  435. if classifyId <= 0 {
  436. br.Msg = "请选择分类"
  437. return
  438. }
  439. //userId := sysUser.AdminId
  440. //超管账号可以查看分类下的所有频度数据
  441. /*if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN {
  442. userId = 0
  443. }*/
  444. //获取账户所拥有权限的分类id集合
  445. /*classifyIdStrList, err := data.GetEdbClassifyListByAdminId(int64(userId))
  446. if err != nil {
  447. br.Msg = "获取分类数据失败"
  448. return
  449. }*/
  450. dir, _ := os.Executable()
  451. exPath := filepath.Dir(dir)
  452. downLoadFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
  453. xlsxFile := xlsx.NewFile()
  454. frequencies, err := data_manage.GetRzdIndexFrequency(classifyId)
  455. if err != nil {
  456. br.Msg = "查询频度失败"
  457. br.ErrMsg = "查询频度失败"
  458. return
  459. }
  460. fileName := `睿姿得数据`
  461. if classifyId > 0 && indexCode == "" {
  462. fenWeiClassify, err := data_manage.GetRzdClassifyItemByClassifyId(classifyId)
  463. if err != nil {
  464. return
  465. }
  466. fileName = fenWeiClassify.ClassifyName
  467. }
  468. if frequencies == nil {
  469. sheet, err := xlsxFile.AddSheet("无数据")
  470. if err != nil {
  471. br.Msg = "新增Sheet失败"
  472. br.ErrMsg = "新增Sheet失败,Err:" + err.Error()
  473. return
  474. }
  475. rowSecName := sheet.AddRow()
  476. celSecName := rowSecName.AddCell()
  477. celSecName.SetValue("")
  478. }
  479. for _, frequency := range frequencies {
  480. fenWeiIndices, err := data_manage.GetRzdIndexByCodeAndClassify(indexCode, classifyId, frequency)
  481. if err != nil {
  482. return
  483. }
  484. var sheet *xlsx.Sheet
  485. if len(fenWeiIndices) > 0 {
  486. sheetName := *frequency
  487. if sheetName == "" {
  488. sheetName = "无频度"
  489. }
  490. sheet, err = xlsxFile.AddSheet(sheetName)
  491. if err != nil {
  492. br.Msg = "新增Sheet失败"
  493. br.ErrMsg = "新增Sheet失败,Err:" + err.Error()
  494. return
  495. }
  496. } else {
  497. continue
  498. }
  499. if indexCode != "" {
  500. fileName = fenWeiIndices[0].IndexName
  501. }
  502. //获取指标数据
  503. rowSecName := sheet.AddRow()
  504. celSecName := rowSecName.AddCell()
  505. celSecName.SetValue("指标名称")
  506. rowFrequency := sheet.AddRow()
  507. celFrequency := rowFrequency.AddCell()
  508. celFrequency.SetValue("频率")
  509. rowUnit := sheet.AddRow()
  510. celUnit := rowUnit.AddCell()
  511. celUnit.SetValue("单位")
  512. rowModifyDate := sheet.AddRow()
  513. rowModifyCell := rowModifyDate.AddCell()
  514. rowModifyCell.SetValue("更新时间")
  515. dataMap := make(map[string]map[string]*data_manage.BaseFromRzdData)
  516. var tradeCodeList []string
  517. for _, v := range fenWeiIndices {
  518. cellSenName := rowSecName.AddCell()
  519. cellSenName.SetValue(v.IndexName)
  520. celFrequency := rowFrequency.AddCell()
  521. celFrequency.SetValue(v.Frequency)
  522. celUnit := rowUnit.AddCell()
  523. celUnit.SetValue(v.Unit)
  524. rowModifyCell := rowModifyDate.AddCell()
  525. updateTimeStr := utils.FormatDateString(v.ModifyTime)
  526. rowModifyCell.SetValue(updateTimeStr)
  527. tradeCodeList = append(tradeCodeList, v.IndexCode)
  528. var dataList []*data_manage.BaseFromRzdData
  529. dataList, err = data_manage.GetBaseFormRzdDataByIndexCode(v.IndexCode)
  530. if err != nil && err.Error() != utils.ErrNoRow() {
  531. br.ErrMsg = "GetBaseFormRzdDataByIndexCode,Err:" + err.Error()
  532. br.Msg = "获取数据失败"
  533. return
  534. }
  535. for _, item := range dataList {
  536. if dataMap[item.IndexCode] == nil {
  537. dataMap[item.IndexCode] = make(map[string]*data_manage.BaseFromRzdData)
  538. }
  539. dataMap[item.IndexCode][item.DataTime] = item
  540. }
  541. }
  542. tradeCodeStr := strings.Join(tradeCodeList, "','")
  543. tradeCodeStr = "'" + tradeCodeStr + "'"
  544. dataTimeList, err := data_manage.GetRzdDataListByIndexCodes(tradeCodeStr)
  545. if err != nil {
  546. br.Msg = "获取数据失败"
  547. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  548. return
  549. }
  550. for _, dataTime := range dataTimeList {
  551. rowData := sheet.AddRow()
  552. celDate := rowData.AddCell()
  553. celDate.SetValue(dataTime)
  554. for _, m := range fenWeiIndices {
  555. celData := rowData.AddCell()
  556. if dataMap[m.IndexCode][dataTime] != nil {
  557. celData.SetValue(dataMap[m.IndexCode][dataTime].Value)
  558. }
  559. }
  560. }
  561. }
  562. err = xlsxFile.Save(downLoadFilePath)
  563. if err != nil {
  564. //有指标无数据时先导出一遍空表
  565. sheet, err := xlsxFile.AddSheet("无数据")
  566. if err != nil {
  567. br.Msg = "新增Sheet失败"
  568. br.ErrMsg = "新增Sheet失败,Err:" + err.Error()
  569. return
  570. }
  571. rowSecName := sheet.AddRow()
  572. celSecName := rowSecName.AddCell()
  573. celSecName.SetValue("")
  574. err = xlsxFile.Save(downLoadFilePath)
  575. if err != nil {
  576. br.Msg = "保存文件失败"
  577. br.ErrMsg = "保存文件失败"
  578. return
  579. }
  580. }
  581. fileName += time.Now().Format("06.01.02") + `.xlsx` //文件名称
  582. this.Ctx.Output.Download(downLoadFilePath, fileName)
  583. defer func() {
  584. os.Remove(downLoadFilePath)
  585. }()
  586. br.Ret = 200
  587. br.Success = true
  588. br.Msg = "success"
  589. }
  590. // GetRzdIndexInfo
  591. // @Title 添加指标-根据条件获取指标信息
  592. // @Description 添加指标-根据条件获取指标信息
  593. // @Param KeyWord query string false "关键字"
  594. // @Param ClassifyIds query string false "分类id"
  595. // @Param Frequencies query string false "频率"
  596. // @Param PageSize query int false "每页数据条数"
  597. // @Param CurrentIndex query int false "当前页页码,从1开始"
  598. // @Success 200 {object} data_manage.BaseFromRzdIndexPage
  599. // @router /rzd/get/index/info [get]
  600. func (this *BaseFromRzdIndexController) GetRzdIndexInfo() {
  601. br := new(models.BaseResponse).Init()
  602. defer func() {
  603. if br.ErrMsg == "" {
  604. br.IsSendEmail = false
  605. }
  606. this.Data["json"] = br
  607. this.ServeJSON()
  608. }()
  609. sysUser := this.SysUser
  610. if sysUser == nil {
  611. br.Msg = "请登录"
  612. br.ErrMsg = "请登录,SysUser Is Empty"
  613. br.Ret = 408
  614. return
  615. }
  616. keyWord := this.GetString("KeyWord")
  617. classifyIds := this.GetString("ClassifyIds")
  618. frequencies := this.GetString("Frequencies")
  619. var classifyIdList []string
  620. var frequencyList []string
  621. if classifyIds != "" {
  622. classifyIdList = strings.Split(classifyIds, ",")
  623. }
  624. if frequencies != "" {
  625. frequencyList = strings.Split(frequencies, ",")
  626. }
  627. indexInfoList, err := data.GetRzdIndexInfo(keyWord, classifyIdList, frequencyList)
  628. if err != nil {
  629. return
  630. }
  631. br.Ret = 200
  632. br.Success = true
  633. br.Msg = "获取成功"
  634. br.Data = indexInfoList
  635. }