base_from_radish_research.go 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152
  1. package data_manage
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/controllers"
  5. "eta/eta_api/models"
  6. "eta/eta_api/models/data_manage"
  7. dataSourceModel "eta/eta_api/models/data_source"
  8. "eta/eta_api/models/system"
  9. "eta/eta_api/services/data"
  10. "eta/eta_api/services/elastic"
  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. // BaseFromRadishResearchController 萝卜投研
  23. type BaseFromRadishResearchController struct {
  24. controllers.BaseAuthController
  25. }
  26. // IndexPageList
  27. // @Title 指标列表-分页
  28. // @Description 指标列表-分页
  29. // @Success 200 {object} data_manage.RadishResearchIndexPageListResp
  30. // @router /radish_research/index/page_list [get]
  31. func (this *BaseFromRadishResearchController) IndexPageList() {
  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. var params data_manage.RadishResearchIndexListForm
  48. if e := this.ParseForm(&params); e != nil {
  49. br.Msg = "参数解析失败"
  50. br.ErrMsg = fmt.Sprintf("参数解析失败, err: %v", e)
  51. return
  52. }
  53. resp := new(data_manage.RadishResearchIndexPageListResp)
  54. resp.List = make([]*data_manage.BaseFromRadishResearchIndexItem, 0)
  55. classifyId, _ := this.GetInt("ClassifyId", -1)
  56. // 分页查询
  57. var startSize int
  58. if params.PageSize <= 0 {
  59. params.PageSize = utils.PageSize20
  60. }
  61. if params.CurrentIndex <= 0 {
  62. params.CurrentIndex = 1
  63. }
  64. startSize = utils.StartIndex(params.CurrentIndex, params.PageSize)
  65. // 筛选项
  66. indexOb := new(data_manage.BaseFromRadishResearchIndex)
  67. var (
  68. cond string
  69. pars []interface{}
  70. classifyIds []int
  71. )
  72. // 未分类
  73. if classifyId == 0 {
  74. cond += fmt.Sprintf(` AND %s = ?`, indexOb.Cols().ClassifyId)
  75. pars = append(pars, classifyId)
  76. }
  77. // 包含所有子分类的指标
  78. if classifyId > 0 {
  79. classifyOb := new(data_manage.BaseFromRadishResearchClassify)
  80. classifies, e := classifyOb.GetItemsByCondition(fmt.Sprintf(" AND FIND_IN_SET(%d, %s)", classifyId, classifyOb.Cols().LevelPath), make([]interface{}, 0), []string{classifyOb.Cols().PrimaryId}, fmt.Sprintf("%s ASC, %s ASC", classifyOb.Cols().ParentId, classifyOb.Cols().Sort))
  81. if e != nil {
  82. br.Msg = "获取失败"
  83. br.ErrMsg = fmt.Sprintf("获取子分类IDs失败, %v", e)
  84. return
  85. }
  86. for _, v := range classifies {
  87. if v.BaseFromRadishResearchClassifyId <= 0 {
  88. continue
  89. }
  90. classifyIds = append(classifyIds, v.BaseFromRadishResearchClassifyId)
  91. }
  92. if len(classifyIds) > 0 {
  93. cond += fmt.Sprintf(` AND %s IN ?`, indexOb.Cols().ClassifyId)
  94. pars = append(pars, classifyIds)
  95. }
  96. }
  97. // 分类多选
  98. params.ClassifyIds = strings.TrimSpace(params.ClassifyIds)
  99. if params.ClassifyIds != "" {
  100. idsArr := strings.Split(params.ClassifyIds, ",")
  101. for _, v := range idsArr {
  102. id, _ := strconv.Atoi(v)
  103. if id > 0 {
  104. classifyIds = append(classifyIds, id)
  105. }
  106. }
  107. if len(classifyIds) > 0 {
  108. cond += fmt.Sprintf(` AND %s IN ?`, indexOb.Cols().ClassifyId)
  109. pars = append(pars, classifyIds)
  110. }
  111. }
  112. // 频度多选
  113. params.Frequencies = strings.TrimSpace(params.Frequencies)
  114. if params.Frequencies != "" {
  115. freArr := strings.Split(params.Frequencies, ",")
  116. if len(freArr) > 0 {
  117. cond += fmt.Sprintf(` AND %s IN ?`, indexOb.Cols().Frequency)
  118. pars = append(pars, freArr)
  119. }
  120. }
  121. // 关键词
  122. params.Keyword = strings.TrimSpace(params.Keyword)
  123. if params.Keyword != "" {
  124. kw := fmt.Sprint("%", params.Keyword, "%")
  125. cond += fmt.Sprintf(` AND (%s LIKE ? OR %s LIKE ?)`, indexOb.Cols().IndexName, indexOb.Cols().IndexCode)
  126. pars = append(pars, kw, kw)
  127. }
  128. // 是否忽略已加入指标库的
  129. if params.IgnoreEdbExist {
  130. cond += fmt.Sprintf(` AND %s = 0`, indexOb.Cols().EdbExist)
  131. }
  132. // 列表合计
  133. total, e := indexOb.GetCountByCondition(cond, pars)
  134. if e != nil {
  135. br.Msg = "获取失败"
  136. br.ErrMsg = fmt.Sprintf("获取指标总数失败, %v", e)
  137. return
  138. }
  139. if total <= 0 {
  140. page := paging.GetPaging(params.CurrentIndex, params.PageSize, 0)
  141. resp.Paging = page
  142. br.Data = resp
  143. br.Ret = 200
  144. br.Success = true
  145. br.Msg = "获取成功"
  146. return
  147. }
  148. items, e := indexOb.GetPageItemsByCondition(cond, pars, []string{}, "", startSize, params.PageSize)
  149. if e != nil {
  150. br.Msg = "获取失败"
  151. br.ErrMsg = fmt.Sprintf("获取指标列表失败, %v", e)
  152. return
  153. }
  154. for _, v := range items {
  155. t := v.Format2Item()
  156. resp.List = append(resp.List, t)
  157. }
  158. page := paging.GetPaging(params.CurrentIndex, params.PageSize, total)
  159. resp.Paging = page
  160. br.Data = resp
  161. br.Ret = 200
  162. br.Success = true
  163. br.Msg = "获取成功"
  164. }
  165. // IndexDetail
  166. // @Title 指标详情
  167. // @Description 指标详情
  168. // @Param IndexId query string true "指标ID"
  169. // @Success 200 {object} data_manage.BaseFromRadishResearchIndexDetail
  170. // @router /radish_research/index/detail [get]
  171. func (this *BaseFromRadishResearchController) IndexDetail() {
  172. br := new(models.BaseResponse).Init()
  173. defer func() {
  174. if br.ErrMsg == "" {
  175. br.IsSendEmail = false
  176. }
  177. this.Data["json"] = br
  178. this.ServeJSON()
  179. }()
  180. sysUser := this.SysUser
  181. if sysUser == nil {
  182. br.Msg = "请登录"
  183. br.ErrMsg = "请登录,SysUser Is Empty"
  184. br.Ret = 408
  185. return
  186. }
  187. indexId, _ := this.GetInt("IndexId")
  188. if indexId <= 0 {
  189. br.Msg = "参数有误"
  190. br.ErrMsg = fmt.Sprintf("参数有误, IndexId: %d", indexId)
  191. return
  192. }
  193. resp := new(data_manage.BaseFromRadishResearchIndexDetail)
  194. indexOb := new(data_manage.BaseFromRadishResearchIndex)
  195. item, e := indexOb.GetItemById(indexId)
  196. if e != nil {
  197. if utils.IsErrNoRow(e) {
  198. br.Msg = "指标不存在, 请刷新页面"
  199. return
  200. }
  201. br.Msg = "操作失败"
  202. br.ErrMsg = fmt.Sprintf("获取指标失败, %v", e)
  203. return
  204. }
  205. if item != nil && item.BaseFromRadishResearchIndexId <= 0 {
  206. br.Msg = "指标不存在, 请刷新页面"
  207. return
  208. }
  209. resp.BaseFromRadishResearchIndexItem = item.Format2Item()
  210. resp.DataList = make([]*data_manage.BaseFromRadishResearchDataItem, 0)
  211. dataOb := new(data_manage.BaseFromRadishResearchData)
  212. cond := fmt.Sprintf(` AND %s = ?`, dataOb.Cols().IndexCode)
  213. pars := make([]interface{}, 0)
  214. pars = append(pars, item.IndexCode)
  215. dataList, e := dataOb.GetItemsByCondition(cond, pars, []string{}, fmt.Sprintf("%s DESC", dataOb.Cols().DataTime))
  216. if e != nil {
  217. br.Msg = "获取失败"
  218. br.ErrMsg = fmt.Sprintf("获取指标数据失败, %v", e)
  219. return
  220. }
  221. for _, v := range dataList {
  222. resp.DataList = append(resp.DataList, v.Format2Item())
  223. }
  224. br.Data = resp
  225. br.Ret = 200
  226. br.Success = true
  227. br.Msg = "获取成功"
  228. }
  229. // IndexEdit
  230. // @Title 编辑指标
  231. // @Description 编辑指标
  232. // @Success 200 {object} data_manage.RadishResearchIndexEditReq
  233. // @router /radish_research/index/edit [post]
  234. func (this *BaseFromRadishResearchController) IndexEdit() {
  235. br := new(models.BaseResponse).Init()
  236. defer func() {
  237. if br.ErrMsg == "" {
  238. br.IsSendEmail = false
  239. }
  240. this.Data["json"] = br
  241. this.ServeJSON()
  242. }()
  243. sysUser := this.SysUser
  244. if sysUser == nil {
  245. br.Msg = "请登录"
  246. br.ErrMsg = "请登录,SysUser Is Empty"
  247. br.Ret = 408
  248. return
  249. }
  250. var req data_manage.RadishResearchIndexEditReq
  251. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  252. br.Msg = "参数解析异常!"
  253. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  254. return
  255. }
  256. if req.IndexId <= 0 {
  257. br.Msg = "参数有误"
  258. br.ErrMsg = fmt.Sprintf("参数有误, IndexId: %d", req.IndexId)
  259. return
  260. }
  261. indexOb := new(data_manage.BaseFromRadishResearchIndex)
  262. item, e := indexOb.GetItemById(req.IndexId)
  263. if e != nil {
  264. if utils.IsErrNoRow(e) {
  265. br.Msg = "指标不存在, 请刷新页面"
  266. return
  267. }
  268. br.Msg = "操作失败"
  269. br.ErrMsg = fmt.Sprintf("获取指标失败, %v", e)
  270. return
  271. }
  272. if item != nil && item.BaseFromRadishResearchIndexId <= 0 {
  273. br.Msg = "指标不存在, 请刷新页面"
  274. return
  275. }
  276. // 更新指标(这里不多限制,允许移到未分类)
  277. item.ClassifyId = req.ClassifyId
  278. item.ModifyTime = time.Now().Local()
  279. updateCols := []string{indexOb.Cols().ClassifyId, indexOb.Cols().ModifyTime}
  280. if e = item.Update(updateCols); e != nil {
  281. br.Msg = "操作失败"
  282. br.ErrMsg = fmt.Sprintf("更新指标分类失败, %v", e)
  283. return
  284. }
  285. // 更新ES
  286. go func() {
  287. indexItem := new(dataSourceModel.SearchDataSource)
  288. indexItem.PrimaryId = item.BaseFromRadishResearchIndexId
  289. indexItem.IndexCode = item.IndexCode
  290. indexItem.IndexName = item.IndexName
  291. indexItem.ClassifyId = item.ClassifyId
  292. indexItem.Unit = item.Unit
  293. indexItem.Frequency = item.Frequency
  294. indexItem.StartDate = item.StartDate.Format(utils.FormatDate)
  295. indexItem.EndDate = item.EndDate.Format(utils.FormatDate)
  296. indexItem.LatestValue = fmt.Sprint(item.LatestValue)
  297. indexItem.Source = utils.DATA_SOURCE_RADISH_RESEARCH
  298. indexItem.SourceName = utils.DATA_SOURCE_NAME_RADISH_RESEARCH
  299. indexItem.IsDeleted = 0
  300. indexItem.CreateTime = item.CreateTime.Format(utils.FormatDateTime)
  301. indexItem.ModifyTime = item.ModifyTime.Format(utils.FormatDateTime)
  302. docId := fmt.Sprintf("%d-%d", utils.DATA_SOURCE_RADISH_RESEARCH, item.BaseFromRadishResearchIndexId)
  303. if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
  304. utils.FileLog.Warning("RadishResearch-写入指标ES失败, %v", e)
  305. return
  306. }
  307. }()
  308. br.Ret = 200
  309. br.Success = true
  310. br.Msg = "操作成功"
  311. }
  312. // IndexRemove
  313. // @Title 删除指标
  314. // @Description 删除指标
  315. // @Success 200 {object} data_manage.RadishResearchIndexRemoveReq
  316. // @router /radish_research/index/remove [post]
  317. func (this *BaseFromRadishResearchController) IndexRemove() {
  318. br := new(models.BaseResponse).Init()
  319. defer func() {
  320. if br.ErrMsg == "" {
  321. br.IsSendEmail = false
  322. }
  323. this.Data["json"] = br
  324. this.ServeJSON()
  325. }()
  326. sysUser := this.SysUser
  327. if sysUser == nil {
  328. br.Msg = "请登录"
  329. br.ErrMsg = "请登录,SysUser Is Empty"
  330. br.Ret = 408
  331. return
  332. }
  333. var req data_manage.RadishResearchIndexRemoveReq
  334. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  335. br.Msg = "参数解析异常!"
  336. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  337. return
  338. }
  339. if req.IndexId <= 0 {
  340. br.Msg = "参数有误"
  341. br.ErrMsg = fmt.Sprintf("参数有误, IndexId: %d", req.IndexId)
  342. return
  343. }
  344. indexOb := new(data_manage.BaseFromRadishResearchIndex)
  345. item, e := indexOb.GetItemById(req.IndexId)
  346. if e != nil {
  347. if utils.IsErrNoRow(e) {
  348. br.Msg = "指标不存在, 请刷新页面"
  349. return
  350. }
  351. br.Msg = "操作失败"
  352. br.ErrMsg = fmt.Sprintf("获取指标失败, %v", e)
  353. return
  354. }
  355. if item != nil && item.BaseFromRadishResearchIndexId <= 0 {
  356. br.Msg = "指标不存在, 请刷新页面"
  357. return
  358. }
  359. if item.EdbExist == 1 {
  360. br.Msg = "指标已被引用, 不允许删除"
  361. return
  362. }
  363. if e = indexOb.RemoveIndexAndData(item.IndexCode); e != nil {
  364. br.Msg = "操作失败"
  365. br.ErrMsg = fmt.Sprintf("删除指标和数据失败, %v", e)
  366. return
  367. }
  368. // 更新ES
  369. go func() {
  370. indexItem := new(dataSourceModel.SearchDataSource)
  371. indexItem.PrimaryId = item.BaseFromRadishResearchIndexId
  372. indexItem.IndexCode = item.IndexCode
  373. indexItem.IndexName = item.IndexName
  374. indexItem.ClassifyId = item.ClassifyId
  375. indexItem.Unit = item.Unit
  376. indexItem.Frequency = item.Frequency
  377. indexItem.StartDate = item.StartDate.Format(utils.FormatDate)
  378. indexItem.EndDate = item.EndDate.Format(utils.FormatDate)
  379. indexItem.LatestValue = fmt.Sprint(item.LatestValue)
  380. indexItem.Source = utils.DATA_SOURCE_RADISH_RESEARCH
  381. indexItem.SourceName = utils.DATA_SOURCE_NAME_RADISH_RESEARCH
  382. indexItem.IsDeleted = 1 // 标记已删除
  383. indexItem.CreateTime = item.CreateTime.Format(utils.FormatDateTime)
  384. indexItem.ModifyTime = item.ModifyTime.Format(utils.FormatDateTime)
  385. docId := fmt.Sprintf("%d-%d", utils.DATA_SOURCE_RADISH_RESEARCH, item.BaseFromRadishResearchIndexId)
  386. if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
  387. utils.FileLog.Warning("RadishResearch-写入指标ES失败, %v", e)
  388. return
  389. }
  390. }()
  391. br.Ret = 200
  392. br.Success = true
  393. br.Msg = "操作成功"
  394. }
  395. // IndexExport
  396. // @Title 导出指标数据
  397. // @Description 导出指标数据
  398. // @Param ClassifyId query int false "分类Id"
  399. // @Success 200 导出成功
  400. // @router /radish_research/index/export [get]
  401. func (this *BaseFromRadishResearchController) IndexExport() {
  402. br := new(models.BaseResponse).Init()
  403. defer func() {
  404. if br.ErrMsg == "" {
  405. br.IsSendEmail = false
  406. }
  407. this.Data["json"] = br
  408. this.ServeJSON()
  409. }()
  410. sysUser := this.SysUser
  411. if sysUser == nil {
  412. br.Msg = "请登录"
  413. br.ErrMsg = "请登录,SysUser Is Empty"
  414. br.Ret = 408
  415. return
  416. }
  417. classifyId, _ := this.GetInt("ClassifyId", -1)
  418. var (
  419. cond string
  420. pars []interface{}
  421. classifyIds []int
  422. )
  423. // 未分类
  424. indexOb := new(data_manage.BaseFromRadishResearchIndex)
  425. if classifyId == 0 {
  426. cond += fmt.Sprintf(` AND %s = ?`, indexOb.Cols().ClassifyId)
  427. pars = append(pars, classifyId)
  428. }
  429. // 包含所有子分类的指标
  430. if classifyId > 0 {
  431. classifyOb := new(data_manage.BaseFromRadishResearchClassify)
  432. classifies, e := classifyOb.GetItemsByCondition(fmt.Sprintf(" AND FIND_IN_SET(%d, %s)", classifyId, classifyOb.Cols().LevelPath), make([]interface{}, 0), []string{classifyOb.Cols().PrimaryId}, fmt.Sprintf("%s ASC, %s ASC", classifyOb.Cols().ParentId, classifyOb.Cols().Sort))
  433. if e != nil {
  434. br.Msg = "获取失败"
  435. br.ErrMsg = fmt.Sprintf("获取子分类IDs失败, %v", e)
  436. return
  437. }
  438. for _, v := range classifies {
  439. if v.BaseFromRadishResearchClassifyId <= 0 {
  440. continue
  441. }
  442. classifyIds = append(classifyIds, v.BaseFromRadishResearchClassifyId)
  443. }
  444. if len(classifyIds) > 0 {
  445. cond += fmt.Sprintf(` AND %s IN ?`, indexOb.Cols().ClassifyId)
  446. pars = append(pars, classifyIds)
  447. }
  448. }
  449. dir, _ := os.Executable()
  450. exPath := filepath.Dir(dir)
  451. downFile := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
  452. xlsxFile := xlsx.NewFile()
  453. // 获取指标数据
  454. indexes, e := indexOb.GetItemsByCondition(cond, pars, []string{}, fmt.Sprintf("%s ASC, %s ASC", indexOb.Cols().Sort, indexOb.Cols().PrimaryId))
  455. if e != nil {
  456. br.Msg = "获取失败"
  457. br.ErrMsg = fmt.Sprintf("获取指标失败, %v", e)
  458. return
  459. }
  460. if len(indexes) == 0 {
  461. // 无数据返回空文件
  462. if e := xlsxFile.Save(downFile); e != nil {
  463. sheet, e := xlsxFile.AddSheet("无数据")
  464. if e != nil {
  465. br.Msg = "获取失败"
  466. br.ErrMsg = fmt.Sprintf("新增Sheet失败, %v", e)
  467. return
  468. }
  469. rowSecName := sheet.AddRow()
  470. celSecName := rowSecName.AddCell()
  471. celSecName.SetValue("")
  472. if e = xlsxFile.Save(downFile); e != nil {
  473. br.Msg = "获取失败"
  474. br.ErrMsg = fmt.Sprintf("保存文件失败, %v", e)
  475. return
  476. }
  477. }
  478. fileName := fmt.Sprintf("%s%s%s", utils.DATA_SOURCE_NAME_RADISH_RESEARCH, time.Now().Format("06.01.02"), ".xlsx")
  479. this.Ctx.Output.Download(downFile, fileName)
  480. defer func() {
  481. _ = os.Remove(downFile)
  482. }()
  483. return
  484. }
  485. // 划分指标频度
  486. frequencyIndex := make(map[string][]*data_manage.BaseFromRadishResearchIndex)
  487. frequencyIndexIds := make(map[string][]int)
  488. for _, v := range indexes {
  489. if frequencyIndex[v.Frequency] == nil {
  490. frequencyIndex[v.Frequency] = make([]*data_manage.BaseFromRadishResearchIndex, 0)
  491. }
  492. if frequencyIndexIds[v.Frequency] == nil {
  493. frequencyIndexIds[v.Frequency] = make([]int, 0)
  494. }
  495. frequencyIndexIds[v.Frequency] = append(frequencyIndexIds[v.Frequency], v.BaseFromRadishResearchIndexId)
  496. frequencyIndex[v.Frequency] = append(frequencyIndex[v.Frequency], v)
  497. }
  498. frequencyArr := []string{"日度", "周度", "旬度", "月度", "季度", "半年度", "年度"}
  499. //frequencyMap := map[string]string{
  500. // "日度": "Daily",
  501. // "周度": "Weekly",
  502. // "旬度": "ten-day",
  503. // "月度": "Monthly",
  504. // "季度": "Quarterly",
  505. // "半年度": "Semi-annual",
  506. // "年度": "Annual",
  507. //}
  508. dataOb := new(data_manage.BaseFromRadishResearchData)
  509. for _, frequency := range frequencyArr {
  510. // 获取对应频度指标
  511. secNameList := frequencyIndex[frequency]
  512. if len(secNameList) == 0 {
  513. continue
  514. }
  515. //sheetName := fmt.Sprintf("%s(%s)", frequency, frequencyMap[frequency])
  516. sheetNew, e := xlsxFile.AddSheet(frequency)
  517. if e != nil {
  518. utils.FileLog.Warning(fmt.Sprintf("萝卜投研导出-AddSheet err: %v", e))
  519. continue
  520. }
  521. secNameRow := sheetNew.AddRow()
  522. frequencyRow := sheetNew.AddRow()
  523. unitRow := sheetNew.AddRow()
  524. updateTimeRow := sheetNew.AddRow()
  525. // 指标日期序列
  526. indexIds := frequencyIndexIds[frequency]
  527. dataTimeList, e := dataOb.GetDataTimeByIndexIds(indexIds)
  528. if e != nil {
  529. utils.FileLog.Warning(fmt.Sprintf("萝卜投研导出-GetDataTimeByIndexIds err: %v", e))
  530. continue
  531. }
  532. // 添加excel左侧指标日期
  533. setRowIndex := 4
  534. for rk, dv := range dataTimeList {
  535. rowIndex := setRowIndex + rk
  536. row := sheetNew.Row(rowIndex)
  537. displayDate, _ := time.Parse(utils.FormatDate, dv)
  538. displayDateCell := row.AddCell()
  539. style := new(xlsx.Style)
  540. style.ApplyAlignment = true
  541. style.Alignment.WrapText = true
  542. displayDateCell.SetStyle(style)
  543. displayDateCell.SetDate(displayDate)
  544. }
  545. for k, sv := range secNameList {
  546. // 获取数据
  547. dataCond := fmt.Sprintf(` AND %s = ?`, dataOb.Cols().IndexCode)
  548. dataPars := make([]interface{}, 0)
  549. dataPars = append(dataPars, sv.IndexCode)
  550. dataList, e := dataOb.GetItemsByCondition(dataCond, dataPars, []string{}, fmt.Sprintf("%s DESC", dataOb.Cols().DataTime))
  551. if e != nil {
  552. utils.FileLog.Warning(fmt.Sprintf("萝卜投研导出-GetIndexDataByCondition err: %v", e))
  553. continue
  554. }
  555. if k == 0 {
  556. secNameRow.AddCell().SetValue("指标名称")
  557. frequencyRow.AddCell().SetValue("频度")
  558. unitRow.AddCell().SetValue("单位")
  559. updateTimeRow.AddCell().SetValue("更新时间")
  560. minCol := k * 3
  561. sheetNew.SetColWidth(minCol, minCol, 15)
  562. }
  563. if len(dataList) == 0 {
  564. continue
  565. }
  566. secNameRow.AddCell().SetValue(sv.IndexName)
  567. frequencyRow.AddCell().SetValue(sv.Frequency)
  568. unitRow.AddCell().SetValue(sv.Unit)
  569. updateTimeRow.AddCell().SetValue(sv.ModifyTime)
  570. dataInfoMap := make(map[string]*data_manage.BaseFromRadishResearchData)
  571. for _, v := range dataList {
  572. dt := v.DataTime.Format(utils.FormatDate)
  573. dataInfoMap[dt] = v
  574. }
  575. for rk, dtv := range dataTimeList {
  576. rowIndex := setRowIndex + rk
  577. row := sheetNew.Row(rowIndex)
  578. displayDateCell := row.AddCell()
  579. tmpData, ok := dataInfoMap[dtv]
  580. if ok {
  581. displayDateCell.SetValue(tmpData.Value)
  582. }
  583. }
  584. }
  585. }
  586. // 保存文件出错返回空文件
  587. if e := xlsxFile.Save(downFile); e != nil {
  588. sheet, e := xlsxFile.AddSheet("无数据")
  589. if e != nil {
  590. br.Msg = "获取失败"
  591. br.ErrMsg = fmt.Sprintf("新增Sheet失败, %v", e)
  592. return
  593. }
  594. rowSecName := sheet.AddRow()
  595. celSecName := rowSecName.AddCell()
  596. celSecName.SetValue("")
  597. if e = xlsxFile.Save(downFile); e != nil {
  598. br.Msg = "获取失败"
  599. br.ErrMsg = fmt.Sprintf("保存文件失败, %v", e)
  600. return
  601. }
  602. }
  603. fileName := fmt.Sprintf("%s%s%s", utils.DATA_SOURCE_NAME_RADISH_RESEARCH, time.Now().Format("06.01.02"), ".xlsx")
  604. this.Ctx.Output.Download(downFile, fileName)
  605. defer func() {
  606. _ = os.Remove(downFile)
  607. }()
  608. br.Ret = 200
  609. br.Success = true
  610. br.Msg = "success"
  611. }
  612. // IndexSelect
  613. // @Title 批量加入指标库-选择指标
  614. // @Description 批量加入指标库-选择指标
  615. // @Success 200 {object} data_manage.BaseFromRadishResearchIndexItem
  616. // @router /radish_research/index/select [post]
  617. func (this *BaseFromRadishResearchController) IndexSelect() {
  618. br := new(models.BaseResponse).Init()
  619. defer func() {
  620. if br.ErrMsg == "" {
  621. br.IsSendEmail = false
  622. }
  623. this.Data["json"] = br
  624. this.ServeJSON()
  625. }()
  626. sysUser := this.SysUser
  627. if sysUser == nil {
  628. br.Msg = "请登录"
  629. br.ErrMsg = "请登录,SysUser Is Empty"
  630. br.Ret = 408
  631. return
  632. }
  633. var req data_manage.RadishResearchIndexSelectReq
  634. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  635. br.Msg = "参数解析异常!"
  636. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  637. return
  638. }
  639. resp := make([]*data_manage.BaseFromRadishResearchIndexItem, 0)
  640. indexOb := new(data_manage.BaseFromRadishResearchIndex)
  641. var (
  642. cond string
  643. pars []interface{}
  644. )
  645. // 忽略已加入指标库的
  646. cond += fmt.Sprintf(` AND %s = 0`, indexOb.Cols().EdbExist)
  647. if len(req.ClassifyIds) > 0 {
  648. cond += fmt.Sprintf(` AND %s IN ?`, indexOb.Cols().ClassifyId)
  649. pars = append(pars, req.ClassifyIds)
  650. }
  651. if len(req.Frequencies) > 0 {
  652. cond += fmt.Sprintf(` AND %s IN ?`, indexOb.Cols().Frequency)
  653. pars = append(pars, req.Frequencies)
  654. }
  655. req.Keyword = strings.TrimSpace(req.Keyword)
  656. if req.Keyword != "" {
  657. kw := fmt.Sprint("%", req.Keyword, "%")
  658. cond += fmt.Sprintf(` AND (%s LIKE ? OR %s LIKE ?)`, indexOb.Cols().IndexName, indexOb.Cols().IndexCode)
  659. pars = append(pars, kw, kw)
  660. }
  661. // 列表全选-SelectAll-true: IndexCodes为排除的指标, SelectAll-false: IndexCodes为选择的指标
  662. if len(req.IndexCodes) > 0 {
  663. if req.SelectAll {
  664. cond += fmt.Sprintf(` AND %s NOT IN ?`, indexOb.Cols().IndexCode)
  665. } else {
  666. cond += fmt.Sprintf(` AND %s IN ?`, indexOb.Cols().IndexCode)
  667. }
  668. pars = append(pars, req.IndexCodes)
  669. }
  670. items, e := indexOb.GetItemsByCondition(cond, pars, []string{}, "")
  671. if e != nil {
  672. br.Msg = "获取失败"
  673. br.ErrMsg = fmt.Sprintf("获取指标列表失败, %v", e)
  674. return
  675. }
  676. if len(items) > 30 {
  677. br.Msg = "批量添加指标数量不得超过30个"
  678. return
  679. }
  680. for _, v := range items {
  681. t := v.Format2Item()
  682. resp = append(resp, t)
  683. }
  684. br.Data = resp
  685. br.Ret = 200
  686. br.Success = true
  687. br.Msg = "获取成功"
  688. }
  689. // EdbAdd
  690. // @Title 加入指标库
  691. // @Description 加入指标库
  692. // @Param request body data_manage.AddEdbInfoReq true "type json string"
  693. // @Success Ret=200 保存成功
  694. // @router /radish_research/edb/add [post]
  695. func (this *BaseFromRadishResearchController) EdbAdd() {
  696. br := new(models.BaseResponse).Init()
  697. defer func() {
  698. if br.ErrMsg == "" {
  699. br.IsSendEmail = false
  700. }
  701. this.Data["json"] = br
  702. this.ServeJSON()
  703. }()
  704. sysUser := this.SysUser
  705. if sysUser == nil {
  706. br.Msg = "请登录"
  707. br.ErrMsg = "请登录,SysUser Is Empty"
  708. br.Ret = 408
  709. return
  710. }
  711. deleteCache := true
  712. cacheKey := fmt.Sprintf("CACHE_EDB_INFO_ADD_%d_%d", utils.DATA_SOURCE_RADISH_RESEARCH, sysUser.AdminId)
  713. defer func() {
  714. if deleteCache {
  715. _ = utils.Rc.Delete(cacheKey)
  716. }
  717. }()
  718. if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
  719. deleteCache = false
  720. br.Msg = "系统处理中,请稍后重试"
  721. return
  722. }
  723. var req data_manage.AddEdbInfoReq
  724. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  725. br.Msg = "参数解析异常"
  726. br.ErrMsg = fmt.Sprintf("参数解析失败, %v", e)
  727. return
  728. }
  729. req.EdbCode = strings.TrimSpace(req.EdbCode)
  730. req.EdbName = strings.TrimSpace(req.EdbName)
  731. if req.EdbCode == "" {
  732. br.Msg = "指标编码不能为空"
  733. return
  734. }
  735. if req.EdbName == "" {
  736. br.Msg = "指标名称不能为空"
  737. return
  738. }
  739. if req.Frequency == "" {
  740. br.Msg = "频率不能为空"
  741. return
  742. }
  743. if req.Unit == "" {
  744. br.Msg = "单位不能为空"
  745. return
  746. }
  747. if req.ClassifyId <= 0 {
  748. br.Msg = "请选择分类"
  749. return
  750. }
  751. // 是否加入过指标库
  752. exist, e := data_manage.GetEdbInfoByEdbCode(utils.DATA_SOURCE_RADISH_RESEARCH, req.EdbCode)
  753. if e != nil && !utils.IsErrNoRow(e) {
  754. br.Msg = "操作失败"
  755. br.ErrMsg = fmt.Sprintf("校验是否加入过指标库失败, %v", e)
  756. return
  757. }
  758. if exist != nil && exist.EdbInfoId > 0 {
  759. br.Msg = "指标库已存在,请刷新页面"
  760. return
  761. }
  762. // 指标入库
  763. edbInfo, err, errMsg, isSendEmail := data.EdbInfoAdd(utils.DATA_SOURCE_RADISH_RESEARCH, utils.DATA_SUB_SOURCE_EDB, req.ClassifyId, req.EdbCode, req.EdbName, req.Frequency, req.Unit, req.StartDate, req.EndDate, sysUser.AdminId, sysUser.RealName, this.Lang)
  764. if err != nil {
  765. br.Msg = "保存失败"
  766. if errMsg != `` {
  767. br.Msg = errMsg
  768. }
  769. br.ErrMsg = err.Error()
  770. br.IsSendEmail = isSendEmail
  771. return
  772. }
  773. // 刷新指标数据
  774. refreshRes, e := data.RefreshEdbData(edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo.EdbCode, "")
  775. if e != nil {
  776. br.Msg = "操作失败"
  777. br.ErrMsg = fmt.Sprintf("刷新指标数据失败, %v", e)
  778. return
  779. }
  780. if refreshRes != nil && refreshRes.Ret != 200 {
  781. br.Msg = "操作失败"
  782. br.ErrMsg = fmt.Sprintf("刷新指标数据失败, Ret: %d, Msg: %s, ErrMsg: %s", refreshRes.Ret, refreshRes.Msg, refreshRes.ErrMsg)
  783. return
  784. }
  785. // 更新指标EdbExist
  786. indexOb := new(data_manage.BaseFromRadishResearchIndex)
  787. if e := indexOb.UpdateEdbExists(1, []string{req.EdbCode}); e != nil {
  788. br.Msg = "操作失败"
  789. br.ErrMsg = fmt.Sprintf("更新数据源EdbExist失败, %v", e)
  790. return
  791. }
  792. //新增操作日志
  793. {
  794. edbLog := new(data_manage.EdbInfoLog)
  795. edbLog.EdbInfoId = edbInfo.EdbInfoId
  796. edbLog.SourceName = edbInfo.SourceName
  797. edbLog.Source = edbInfo.Source
  798. edbLog.EdbCode = edbInfo.EdbCode
  799. edbLog.EdbName = edbInfo.EdbName
  800. edbLog.ClassifyId = edbInfo.ClassifyId
  801. edbLog.SysUserId = sysUser.AdminId
  802. edbLog.SysUserRealName = sysUser.RealName
  803. edbLog.CreateTime = time.Now()
  804. edbLog.Content = string(this.Ctx.Input.RequestBody)
  805. edbLog.Status = "新增指标"
  806. edbLog.Method = this.Ctx.Input.URI()
  807. go data_manage.AddEdbInfoLog(edbLog)
  808. }
  809. // 更新es
  810. go data.AddOrEditEdbInfoToEs(edbInfo.EdbInfoId)
  811. // 试用平台更新用户累计新增指标数
  812. if utils.BusinessCode == utils.BusinessCodeSandbox {
  813. go func() {
  814. adminItem, e := system.GetSysAdminById(sysUser.AdminId)
  815. if e != nil {
  816. return
  817. }
  818. if adminItem != nil && adminItem.AdminId <= 0 {
  819. return
  820. }
  821. if adminItem.DepartmentName != "ETA试用客户" {
  822. return
  823. }
  824. var r etaTrialService.EtaTrialUserReq
  825. r.Mobile = adminItem.Mobile
  826. _, _ = etaTrialService.UpdateUserIndexNum(r)
  827. }()
  828. }
  829. resp := new(data_manage.AddEdbInfoResp)
  830. resp.EdbInfoId = edbInfo.EdbInfoId
  831. resp.UniqueCode = edbInfo.UniqueCode
  832. br.Ret = 200
  833. br.Success = true
  834. br.Msg = "保存成功"
  835. br.Data = resp
  836. br.IsAddLog = true
  837. }
  838. // EdbNameCheck
  839. // @Title 批量加入指标库-重名校验
  840. // @Description 批量加入指标库-重名校验
  841. // @Success 200 {object} data_manage.EdbNameCheckResult
  842. // @router /radish_research/edb/name_check [post]
  843. func (this *BaseFromRadishResearchController) EdbNameCheck() {
  844. br := new(models.BaseResponse).Init()
  845. defer func() {
  846. if br.ErrMsg == "" {
  847. br.IsSendEmail = false
  848. }
  849. this.Data["json"] = br
  850. this.ServeJSON()
  851. }()
  852. sysUser := this.SysUser
  853. if sysUser == nil {
  854. br.Msg = "请登录"
  855. br.ErrMsg = "请登录,SysUser Is Empty"
  856. br.Ret = 408
  857. return
  858. }
  859. var req []*data_manage.NameCheckEdbInfoReq
  860. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  861. br.Msg = "参数解析异常!"
  862. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  863. return
  864. }
  865. if len(req) == 0 {
  866. br.Msg = "请选择指标"
  867. return
  868. }
  869. codeMaxT := 30
  870. codeLen := len(req)
  871. if codeLen > codeMaxT {
  872. br.Msg = "批量添加指标数量不得超过30个"
  873. return
  874. }
  875. indexNames := make([]string, 0)
  876. resp := make([]*data_manage.EdbNameCheckResult, 0)
  877. nameCount := make(map[string]int)
  878. for _, v := range req {
  879. v.EdbCode = strings.TrimSpace(v.EdbCode)
  880. if v.EdbCode == "" {
  881. br.Msg = "指标ID不可为空"
  882. return
  883. }
  884. v.EdbName = strings.TrimSpace(v.EdbName)
  885. if v.EdbName == "" {
  886. br.Msg = "请输入指标名称"
  887. return
  888. }
  889. nameCount[v.EdbName] += 1
  890. indexNames = append(indexNames, v.EdbName)
  891. resp = append(resp, &data_manage.EdbNameCheckResult{
  892. EdbCode: v.EdbCode,
  893. EdbName: v.EdbName,
  894. })
  895. }
  896. // 本次提交的名称中也不允许重复
  897. for _, v := range resp {
  898. if nameCount[v.EdbName] > 1 {
  899. v.Exist = true
  900. }
  901. }
  902. // 重名校验
  903. edbList, e := data_manage.GetEdbInfoByNameArr(indexNames, utils.EDB_INFO_TYPE)
  904. if e != nil {
  905. br.Msg = "操作失败"
  906. br.ErrMsg = "获取重名指标失败, Err: " + e.Error()
  907. return
  908. }
  909. nameExists := make(map[string]bool)
  910. for _, v := range edbList {
  911. nameExists[v.EdbName] = true
  912. }
  913. if len(nameExists) > 0 {
  914. for _, v := range resp {
  915. v.Exist = nameExists[v.EdbName]
  916. }
  917. }
  918. br.Data = resp
  919. br.Msg = "校验成功"
  920. br.Ret = 200
  921. br.Success = true
  922. }
  923. // EdbMultiAdd
  924. // @Title 批量加入指标库
  925. // @Description 批量加入指标库
  926. // @Param request body data_manage.AddEdbInfoReq true "type json string"
  927. // @Success 200 string "操作成功"
  928. // @router /radish_research/edb/multi_add [post]
  929. func (this *BaseFromRadishResearchController) EdbMultiAdd() {
  930. br := new(models.BaseResponse).Init()
  931. defer func() {
  932. if br.ErrMsg == "" {
  933. br.IsSendEmail = false
  934. }
  935. this.Data["json"] = br
  936. this.ServeJSON()
  937. }()
  938. sysUser := this.SysUser
  939. if sysUser == nil {
  940. br.Msg = "请登录"
  941. br.ErrMsg = "请登录,SysUser Is Empty"
  942. br.Ret = 408
  943. return
  944. }
  945. deleteCache := true
  946. cacheKey := fmt.Sprintf("CACHE_EDB_INFO_BATCH_ADD_%d_%d", utils.DATA_SOURCE_RADISH_RESEARCH, sysUser.AdminId)
  947. defer func() {
  948. if deleteCache {
  949. _ = utils.Rc.Delete(cacheKey)
  950. }
  951. }()
  952. if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
  953. deleteCache = false
  954. br.Msg = "系统处理中,请稍后重试!"
  955. br.ErrMsg = "系统处理中,请稍后重试!" + sysUser.RealName + ";data:" + string(this.Ctx.Input.RequestBody)
  956. return
  957. }
  958. var req []*data_manage.AddEdbInfoReq
  959. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  960. br.Msg = "参数解析异常!"
  961. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  962. return
  963. }
  964. if len(req) == 0 {
  965. br.Msg = "请选择指标"
  966. return
  967. }
  968. if len(req) > 30 {
  969. br.Msg = "批量添加指标数量不得超过30个"
  970. return
  971. }
  972. for _, v := range req {
  973. v.EdbCode = strings.TrimSpace(v.EdbCode)
  974. if v.EdbCode == "" {
  975. br.Msg = "指标ID不可为空"
  976. return
  977. }
  978. v.EdbName = strings.TrimSpace(v.EdbName)
  979. if v.EdbName == "" {
  980. br.Msg = "请输入指标名称"
  981. return
  982. }
  983. v.Frequency = strings.TrimSpace(v.Frequency)
  984. if v.Frequency == "" {
  985. br.Msg = "请选择频度"
  986. return
  987. }
  988. v.Unit = strings.TrimSpace(v.Unit)
  989. if v.Unit == "" {
  990. br.Msg = "请输入单位"
  991. return
  992. }
  993. if v.ClassifyId <= 0 {
  994. br.Msg = "请选择分类"
  995. return
  996. }
  997. }
  998. // 限定同一时间最多批量新增30个指标
  999. var successCodes []string
  1000. for _, v := range req {
  1001. // 是否加入过指标库
  1002. exist, e := data_manage.GetEdbInfoByEdbCode(utils.DATA_SOURCE_RADISH_RESEARCH, v.EdbCode)
  1003. if e != nil && !utils.IsErrNoRow(e) {
  1004. br.Msg = "操作失败"
  1005. br.ErrMsg = fmt.Sprintf("校验是否加入过指标库失败, %v", e)
  1006. return
  1007. }
  1008. if exist != nil && exist.EdbInfoId > 0 {
  1009. // 加入过指标库这里直接忽略掉
  1010. continue
  1011. }
  1012. // 指标入库
  1013. edbInfo, err, errMsg, isSendEmail := data.EdbInfoAdd(utils.DATA_SOURCE_RADISH_RESEARCH, utils.DATA_SUB_SOURCE_EDB, v.ClassifyId, v.EdbCode, v.EdbName, v.Frequency, v.Unit, v.StartDate, v.EndDate, sysUser.AdminId, sysUser.RealName, this.Lang)
  1014. if err != nil {
  1015. br.Msg = "保存失败"
  1016. if errMsg != `` {
  1017. br.Msg = errMsg
  1018. }
  1019. br.ErrMsg = err.Error()
  1020. br.IsSendEmail = isSendEmail
  1021. return
  1022. }
  1023. successCodes = append(successCodes, v.EdbCode)
  1024. // 刷新指标数据
  1025. refreshRes, e := data.RefreshEdbData(edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo.EdbCode, "")
  1026. if e != nil {
  1027. br.Msg = "操作失败"
  1028. br.ErrMsg = fmt.Sprintf("刷新指标数据失败, %v", e)
  1029. return
  1030. }
  1031. if refreshRes != nil && refreshRes.Ret != 200 {
  1032. br.Msg = "操作失败"
  1033. br.ErrMsg = fmt.Sprintf("刷新指标数据失败, Ret: %d, Msg: %s, ErrMsg: %s", refreshRes.Ret, refreshRes.Msg, refreshRes.ErrMsg)
  1034. return
  1035. }
  1036. // 试用平台更新用户累计新增指标数
  1037. if utils.BusinessCode == utils.BusinessCodeSandbox {
  1038. go func() {
  1039. adminItem, e := system.GetSysAdminById(sysUser.AdminId)
  1040. if e != nil {
  1041. tips := fmt.Sprintf("试用平台更新用户累计新增指标数-获取用户失败, Err: " + e.Error())
  1042. utils.FileLog.Info(tips)
  1043. return
  1044. }
  1045. if adminItem.DepartmentName != "ETA试用客户" {
  1046. return
  1047. }
  1048. var ur etaTrialService.EtaTrialUserReq
  1049. ur.Mobile = adminItem.Mobile
  1050. _, _ = etaTrialService.UpdateUserIndexNum(ur)
  1051. }()
  1052. }
  1053. // 新增操作日志
  1054. {
  1055. edbLog := new(data_manage.EdbInfoLog)
  1056. edbLog.EdbInfoId = edbInfo.EdbInfoId
  1057. edbLog.SourceName = edbInfo.SourceName
  1058. edbLog.Source = edbInfo.Source
  1059. edbLog.EdbCode = edbInfo.EdbCode
  1060. edbLog.EdbName = edbInfo.EdbName
  1061. edbLog.ClassifyId = edbInfo.ClassifyId
  1062. edbLog.SysUserId = sysUser.AdminId
  1063. edbLog.SysUserRealName = sysUser.RealName
  1064. edbLog.CreateTime = time.Now()
  1065. edbLog.Content = string(this.Ctx.Input.RequestBody)
  1066. edbLog.Status = "新增指标"
  1067. edbLog.Method = this.Ctx.Input.URI()
  1068. go data_manage.AddEdbInfoLog(edbLog)
  1069. }
  1070. // 更新es
  1071. go data.AddOrEditEdbInfoToEs(edbInfo.EdbInfoId)
  1072. }
  1073. // 更新指标EdbExist
  1074. if len(successCodes) > 0 {
  1075. indexOb := new(data_manage.BaseFromRadishResearchIndex)
  1076. if e := indexOb.UpdateEdbExists(1, successCodes); e != nil {
  1077. br.Msg = "操作失败"
  1078. br.ErrMsg = fmt.Sprintf("更新数据源EdbExist失败, %v", e)
  1079. return
  1080. }
  1081. }
  1082. br.Msg = "操作成功"
  1083. br.Ret = 200
  1084. br.Success = true
  1085. br.IsAddLog = true
  1086. }