kpler_data.go 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812
  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. "eta/eta_api/models/system"
  8. "eta/eta_api/services/data"
  9. etaTrialService "eta/eta_api/services/eta_trial"
  10. "eta/eta_api/utils"
  11. "fmt"
  12. "os"
  13. "path/filepath"
  14. "sort"
  15. "strconv"
  16. "strings"
  17. "time"
  18. "github.com/rdlucklib/rdluck_tools/paging"
  19. "github.com/tealeg/xlsx"
  20. )
  21. type BaseFromKplerController struct {
  22. controllers.BaseAuthController
  23. }
  24. // Search
  25. // @Title 新增指标-查询指标信息接口
  26. // @Description 新增指标-查询指标信息接口
  27. // @Param request body data_manage.ThsHfSearchEdbReq true "type json string"
  28. // @Success 200 {object} data_manage.ThsHfSearchEdbResp
  29. // @router /kpler/index/search [post]
  30. func (this *BaseFromKplerController) Search() {
  31. br := new(models.BaseResponse).Init()
  32. defer func() {
  33. if br.ErrMsg == "" {
  34. br.IsSendEmail = false
  35. }
  36. this.Data["json"] = br
  37. this.ServeJSON()
  38. }()
  39. sysUser := this.SysUser
  40. if sysUser == nil {
  41. br.Msg = "请登录"
  42. br.ErrMsg = "请登录,SysUser Is Empty"
  43. br.Ret = 408
  44. return
  45. }
  46. var params data_manage.KplerSearchReq
  47. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &params); e != nil {
  48. br.Msg = "参数解析异常!"
  49. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  50. return
  51. }
  52. params.Granularity = strings.TrimSpace(params.Granularity)
  53. if params.Granularity == "" {
  54. br.Msg = "请选择频度"
  55. return
  56. }
  57. split := strings.TrimSpace(params.Split)
  58. if split == "" {
  59. split = "Total"
  60. }
  61. unit := strings.TrimSpace(params.Unit)
  62. if unit == "" {
  63. unit = "Kbd"
  64. }
  65. flowDirection := strings.TrimSpace(params.FlowDirection)
  66. if flowDirection == "" {
  67. br.Msg = "请选择流向"
  68. return
  69. }
  70. var productNamesStr string
  71. var fromZoneNamesStr string
  72. var toZoneNamesStr string
  73. classifyName := ""
  74. if len(params.ProductIds) > 0 {
  75. // 获取产品名称
  76. productList, e := data_manage.GetKplerClassifyByProductId(params.ProductIds)
  77. if e != nil {
  78. br.Msg = "获取Kpler产品名称失败"
  79. br.ErrMsg = fmt.Sprintf("获取Kpler产品名称失败, %v", e)
  80. return
  81. }
  82. productNames := make([]string, 0)
  83. for _, v := range productList {
  84. productNames = append(productNames, v.ProductName)
  85. }
  86. if len(productNames) > 0 {
  87. productNamesStr = strings.Join(productNames, ",")
  88. // 获取第一个产品的分类ID
  89. classifyObj, err := data_manage.GetBaseFromKplerClassifyByProductName(productNames[0])
  90. if err != nil {
  91. br.Msg = "获取分类ID失败"
  92. br.ErrMsg = fmt.Sprintf("获取分类ID失败, %v", err)
  93. return
  94. }
  95. allClassifyIds := make([]int, 0)
  96. if classifyObj.LevelPath != "" {
  97. levelPath := strings.Split(classifyObj.LevelPath, ",")
  98. for _, v := range levelPath {
  99. levelId, _ := strconv.Atoi(v)
  100. allClassifyIds = append(allClassifyIds, levelId)
  101. }
  102. //获取所有的分类列表
  103. classifyList, err := data_manage.GetBaseFromKplerClassifyByIds(allClassifyIds)
  104. if err != nil {
  105. br.Msg = "获取分类列表失败"
  106. br.ErrMsg = fmt.Sprintf("获取分类列表失败, %v", err)
  107. return
  108. }
  109. for _, v := range classifyList {
  110. classifyName += v.ClassifyName + "/"
  111. }
  112. classifyName = strings.TrimRight(classifyName, "/")
  113. }
  114. }
  115. }
  116. // 获取区域名称
  117. zoneObj := new(data_manage.BaseFromKplerZone)
  118. if len(params.FromZoneIds) > 0 {
  119. fromZoneList, e := zoneObj.GetByZoneIds(params.FromZoneIds)
  120. if e != nil {
  121. br.Msg = "获取Kpler区域名称失败"
  122. br.ErrMsg = fmt.Sprintf("获取Kpler区域名称失败, %v", e)
  123. return
  124. }
  125. fromZoneNames := make([]string, 0)
  126. for _, v := range fromZoneList {
  127. fromZoneNames = append(fromZoneNames, v.ZoneName)
  128. }
  129. if len(fromZoneNames) > 0 {
  130. fromZoneNamesStr = strings.Join(fromZoneNames, ",")
  131. }
  132. }
  133. if len(params.ToZoneIds) > 0 {
  134. toZoneList, e := zoneObj.GetByZoneIds(params.ToZoneIds)
  135. if e != nil {
  136. br.Msg = "获取Kpler区域名称失败"
  137. br.ErrMsg = fmt.Sprintf("获取Kpler区域名称失败, %v", e)
  138. return
  139. }
  140. toZoneNames := make([]string, 0)
  141. for _, v := range toZoneList {
  142. toZoneNames = append(toZoneNames, v.ZoneName)
  143. }
  144. if len(toZoneNames) > 0 {
  145. toZoneNamesStr = strings.Join(toZoneNames, ",")
  146. }
  147. }
  148. // 校验已入库的指标
  149. if params.Split == "Total" {
  150. flowDirection := params.FlowDirection
  151. // prefixIndexName := fmt.Sprintf("kpler%s%s%s%s", fromZoneNamesStr, flowDirection, toZoneNamesStr, productNamesStr)
  152. // lastIndexName := params.Granularity
  153. // indexName := fmt.Sprintf("%s%s%s", prefixIndexName, "Total", lastIndexName)
  154. prefixIndexCode := fmt.Sprintf("k%s%s%s%s", fromZoneNamesStr, flowDirection, toZoneNamesStr, productNamesStr)
  155. // 获取首字母
  156. lastIndexCode := strings.ToUpper(params.Granularity[:1])
  157. indexCode := fmt.Sprintf("%s%s%s", prefixIndexCode, "Total", lastIndexCode)
  158. // 查询指标是否已存在
  159. _, e := data_manage.GetKplerIndexByIndexCode(indexCode)
  160. if e != nil && !utils.IsErrNoRow(e) {
  161. br.Msg = "获取指标信息失败"
  162. br.ErrMsg = fmt.Sprintf("获取指标信息失败, %v", e)
  163. return
  164. }
  165. if e == nil {
  166. br.Msg = "指标均已存在"
  167. return
  168. }
  169. }
  170. resp := make([]*data_manage.KplerIndexItem, 0)
  171. // 请求API获取数据
  172. indexes, e := data.GetEdbDataKpler(params, productNamesStr, fromZoneNamesStr, toZoneNamesStr)
  173. if e != nil {
  174. br.Msg = "未搜索到指标"
  175. br.ErrMsg = fmt.Sprintf("获取指标失败, %v", e)
  176. return
  177. }
  178. if len(indexes) == 0 {
  179. br.Msg = "未搜索到指标"
  180. return
  181. }
  182. for _, v := range indexes {
  183. item := new(data_manage.KplerIndexItem)
  184. item.IndexCode = v.IndexCode
  185. item.IndexName = v.IndexName
  186. item.Frequency = v.Frequency
  187. item.Unit = v.Unit
  188. item.ClassifyName = classifyName
  189. // 搜索只展示100条数据
  190. var limit int
  191. sort.Slice(v.IndexData, func(i, j int) bool {
  192. return v.IndexData[i].DataTime < v.IndexData[j].DataTime
  193. })
  194. for _, d := range v.IndexData {
  195. if limit > 10 {
  196. break
  197. }
  198. limit += 1
  199. item.IndexData = append(item.IndexData, d)
  200. }
  201. resp = append(resp, item)
  202. }
  203. br.Data = resp
  204. br.Ret = 200
  205. br.Success = true
  206. br.Msg = "获取成功"
  207. }
  208. // IndexAdd
  209. // @Title 新增指标-新增指标接口
  210. // @Description 新增指标-新增指标接口
  211. // @Param request body data_manage.ThsHfSearchEdbReq true "type json string"
  212. // @Success 200 {object} data_manage.ThsHfSearchEdbResp
  213. // @router /kpler/index/add [post]
  214. func (this *BaseFromKplerController) IndexAdd() {
  215. br := new(models.BaseResponse).Init()
  216. defer func() {
  217. if br.ErrMsg == "" {
  218. br.IsSendEmail = false
  219. }
  220. this.Data["json"] = br
  221. this.ServeJSON()
  222. }()
  223. sysUser := this.SysUser
  224. if sysUser == nil {
  225. br.Msg = "请登录"
  226. br.ErrMsg = "请登录,SysUser Is Empty"
  227. br.Ret = 408
  228. return
  229. }
  230. var params data_manage.KplerSearchReq
  231. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &params); e != nil {
  232. br.Msg = "参数解析异常!"
  233. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  234. return
  235. }
  236. params.Granularity = strings.TrimSpace(params.Granularity)
  237. if params.Granularity == "" {
  238. br.Msg = "请选择频度"
  239. return
  240. }
  241. split := strings.TrimSpace(params.Split)
  242. if split == "" {
  243. split = "Total"
  244. }
  245. unit := strings.TrimSpace(params.Unit)
  246. if unit == "" {
  247. unit = "Kbd"
  248. }
  249. flowDirection := strings.TrimSpace(params.FlowDirection)
  250. if flowDirection == "" {
  251. br.Msg = "请选择流向"
  252. return
  253. }
  254. var productNamesStr string
  255. var fromZoneNamesStr string
  256. var toZoneNamesStr string
  257. if len(params.ProductIds) > 0 {
  258. // 获取产品名称
  259. productList, e := data_manage.GetKplerClassifyByProductId(params.ProductIds)
  260. if e != nil {
  261. br.Msg = "获取Kpler产品名称失败"
  262. br.ErrMsg = fmt.Sprintf("获取Kpler产品名称失败, %v", e)
  263. return
  264. }
  265. productNames := make([]string, 0)
  266. for _, v := range productList {
  267. productNames = append(productNames, v.ProductName)
  268. }
  269. if len(productNames) > 0 {
  270. productNamesStr = strings.Join(productNames, ",")
  271. }
  272. }
  273. // 获取区域名称
  274. zoneObj := new(data_manage.BaseFromKplerZone)
  275. if len(params.FromZoneIds) > 0 {
  276. fromZoneList, e := zoneObj.GetByZoneIds(params.FromZoneIds)
  277. if e != nil {
  278. br.Msg = "获取Kpler区域名称失败"
  279. br.ErrMsg = fmt.Sprintf("获取Kpler区域名称失败, %v", e)
  280. return
  281. }
  282. fromZoneNames := make([]string, 0)
  283. for _, v := range fromZoneList {
  284. fromZoneNames = append(fromZoneNames, v.ZoneName)
  285. }
  286. if len(fromZoneNames) > 0 {
  287. fromZoneNamesStr = strings.Join(fromZoneNames, ",")
  288. }
  289. }
  290. if len(params.ToZoneIds) > 0 {
  291. toZoneList, e := zoneObj.GetByZoneIds(params.ToZoneIds)
  292. if e != nil {
  293. br.Msg = "获取Kpler区域名称失败"
  294. br.ErrMsg = fmt.Sprintf("获取Kpler区域名称失败, %v", e)
  295. return
  296. }
  297. toZoneNames := make([]string, 0)
  298. for _, v := range toZoneList {
  299. toZoneNames = append(toZoneNames, v.ZoneName)
  300. }
  301. if len(toZoneNames) > 0 {
  302. toZoneNamesStr = strings.Join(toZoneNames, ",")
  303. }
  304. }
  305. // 校验已入库的指标
  306. if params.Split == "Total" {
  307. flowDirection := params.FlowDirection
  308. // prefixIndexName := fmt.Sprintf("kpler%s%s%s%s", fromZoneNamesStr, flowDirection, toZoneNamesStr, productNamesStr)
  309. // lastIndexName := params.Granularity
  310. // indexName := fmt.Sprintf("%s%s%s", prefixIndexName, "Total", lastIndexName)
  311. prefixIndexCode := fmt.Sprintf("k%s%s%s%s", fromZoneNamesStr, flowDirection, toZoneNamesStr, productNamesStr)
  312. // 获取首字母
  313. lastIndexCode := strings.ToUpper(params.Granularity[:1])
  314. indexCode := fmt.Sprintf("%s%s%s", prefixIndexCode, "T", lastIndexCode)
  315. // 查询指标是否已存在
  316. _, e := data_manage.GetKplerIndexByIndexCode(indexCode)
  317. if e != nil && !utils.IsErrNoRow(e) {
  318. br.Msg = "获取指标信息失败"
  319. br.ErrMsg = fmt.Sprintf("获取指标信息失败, %v", e)
  320. return
  321. }
  322. if e == nil {
  323. br.Msg = "指标均已存在"
  324. return
  325. }
  326. }
  327. resp := make([]*data_manage.KplerIndexItem, 0)
  328. // 请求API获取数据
  329. e := data.AddKplerIndex(params, productNamesStr, fromZoneNamesStr, toZoneNamesStr)
  330. if e != nil {
  331. br.Msg = "新增指标失败"
  332. br.ErrMsg = fmt.Sprintf("新增指标失败, %v", e)
  333. return
  334. }
  335. br.Data = resp
  336. br.Ret = 200
  337. br.Success = true
  338. br.Msg = "获取成功"
  339. }
  340. // KplerClassify
  341. // @Title Kpler数据分类
  342. // @Description Kpler数据分类接口
  343. // @Success 200 {object} data_manage.BaseFromKplerClassify
  344. // @router /kpler/classify [get]
  345. func (this *BaseFromKplerController) KplerClassify() {
  346. br := new(models.BaseResponse).Init()
  347. defer func() {
  348. this.Data["json"] = br
  349. this.ServeJSON()
  350. }()
  351. sysUser := this.SysUser
  352. if sysUser == nil {
  353. br.Msg = "请登录"
  354. br.ErrMsg = "请登录,SysUser Is Empty"
  355. br.Ret = 408
  356. return
  357. }
  358. classifyId, _ := this.GetInt("ClassifyId")
  359. if classifyId < 0 {
  360. br.Msg = "请选择分类"
  361. br.ErrMsg = "请选择分类"
  362. return
  363. }
  364. list, e := data_manage.GetKplerClassifyAndIndex(classifyId)
  365. if e != nil {
  366. br.Msg = "获取失败"
  367. br.ErrMsg = "获取数据失败,Err:" + e.Error()
  368. return
  369. }
  370. //组装二级分类
  371. var ret data_manage.BaseFromKplerClassifyResp
  372. ret.List = list
  373. br.Ret = 200
  374. br.Success = true
  375. br.Msg = "获取成功"
  376. br.Data = ret
  377. }
  378. // KplerClassifyTree
  379. // @Title Kpler数据分类树
  380. // @Description Kpler数据分类树接口
  381. // @Success 200 {object} data_manage.BaseFromKplerClassify
  382. // @router /kpler/classify/tree [get]
  383. func (this *BaseFromKplerController) KplerClassifyTree() {
  384. br := new(models.BaseResponse).Init()
  385. defer func() {
  386. this.Data["json"] = br
  387. this.ServeJSON()
  388. }()
  389. sysUser := this.SysUser
  390. if sysUser == nil {
  391. br.Msg = "请登录"
  392. br.ErrMsg = "请登录,SysUser Is Empty"
  393. br.Ret = 408
  394. return
  395. }
  396. classifyAll := make([]*data_manage.BaseFromKplerClassifyItems, 0)
  397. var err error
  398. keyword := this.GetString("Keyword")
  399. if keyword != "" {
  400. keyList, er := data_manage.GetBaseFromKplerClassifyByKeyword(keyword)
  401. if er != nil && !utils.IsErrNoRow(er) {
  402. br.Msg = "获取失败"
  403. br.ErrMsg = "获取数据失败,Err:" + er.Error()
  404. return
  405. }
  406. classifyIds := make([]int, 0)
  407. classifyMap := make(map[int]int)
  408. for _, v := range keyList {
  409. tmpIds := strings.Split(v.LevelPath, ",")
  410. for _, id := range tmpIds {
  411. tmpId, err := strconv.Atoi(id)
  412. if err == nil {
  413. if _, ok := classifyMap[tmpId]; !ok {
  414. classifyIds = append(classifyIds, tmpId)
  415. classifyMap[tmpId] = v.ClassifyId
  416. }
  417. }
  418. }
  419. }
  420. classifyAll, err = data_manage.GetBaseFromKplerClassifyItemsByIds(classifyIds)
  421. if err != nil && !utils.IsErrNoRow(err) {
  422. br.Msg = "获取失败"
  423. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  424. return
  425. }
  426. }else{
  427. classifyAll, err = data_manage.GetAllBaseFromKplerClassify()
  428. if err != nil && !utils.IsErrNoRow(err) {
  429. br.Msg = "获取失败"
  430. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  431. return
  432. }
  433. }
  434. list := data.GetKplerClassifyTreeRecursive(classifyAll, 0)
  435. // 递归组装分类
  436. var ret data_manage.BaseFromKplerClassifyResp
  437. ret.List = list
  438. br.Ret = 200
  439. br.Success = true
  440. br.Msg = "获取成功"
  441. br.Data = ret
  442. }
  443. // 查询区域
  444. // @Title 查询区域
  445. // @Description 查询区域接口
  446. // @Success 200 {object} data_manage.BaseFromKplerZone
  447. // @router /kpler/zone [get]
  448. func (this *BaseFromKplerController) KplerZone() {
  449. br := new(models.BaseResponse).Init()
  450. defer func() {
  451. this.Data["json"] = br
  452. this.ServeJSON()
  453. }()
  454. sysUser := this.SysUser
  455. if sysUser == nil {
  456. br.Msg = "请登录"
  457. br.ErrMsg = "请登录,SysUser Is Empty"
  458. br.Ret = 408
  459. return
  460. }
  461. keyword := this.GetString("Keyword")
  462. var zoneList []*data_manage.BaseFromKplerZone
  463. var err error
  464. if keyword == "" {
  465. br.Data = zoneList
  466. br.Ret = 200
  467. br.Success = true
  468. br.Msg = "获取成功"
  469. return
  470. }
  471. // 使用带相似度排序的搜索函数
  472. zoneList, err = data_manage.GetBaseFromKplerZoneByKeywordWithRelevance(keyword)
  473. if err != nil && !utils.IsErrNoRow(err) {
  474. br.Msg = "获取失败"
  475. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  476. return
  477. }
  478. br.Data = zoneList
  479. br.Ret = 200
  480. br.Success = true
  481. br.Msg = "获取成功"
  482. }
  483. // KplerIndexData
  484. // @Title 获取Kpler数据
  485. // @Description 获取Kpler数据接口
  486. // @Param PageSize query int true "每页数据条数"
  487. // @Param CurrentIndex query int true "当前页页码,从1开始"
  488. // @Param ClassifyId query string true "分类id"
  489. // @Success 200 {object} data_manage.LzFrequency
  490. // @router /kpler/index/data [get]
  491. func (this *BaseFromKplerController) KplerIndexData() {
  492. br := new(models.BaseResponse).Init()
  493. defer func() {
  494. this.Data["json"] = br
  495. this.ServeJSON()
  496. }()
  497. sysUser := this.SysUser
  498. if sysUser == nil {
  499. br.Msg = "请登录"
  500. br.ErrMsg = "请登录,SysUser Is Empty"
  501. br.Ret = 408
  502. return
  503. }
  504. pageSize, _ := this.GetInt("PageSize")
  505. currentIndex, _ := this.GetInt("CurrentIndex")
  506. var startSize int
  507. if pageSize <= 0 {
  508. pageSize = utils.PageSize20
  509. }
  510. if currentIndex <= 0 {
  511. currentIndex = 1
  512. }
  513. startSize = utils.StartIndex(currentIndex, pageSize)
  514. classifyId, _ := this.GetInt("ClassifyId")
  515. if classifyId < 0 {
  516. br.Msg = "请选择分类"
  517. br.ErrMsg = "请选择分类"
  518. return
  519. }
  520. // 增加频度请求入参
  521. frequency := this.GetString("Frequency")
  522. //获取指标
  523. var condition string
  524. var pars []interface{}
  525. if classifyId >= 0 {
  526. classifyInfo, err := data_manage.GetBaseFromKplerClassifyById(classifyId)
  527. if err != nil {
  528. if utils.IsErrNoRow(err) {
  529. br.Msg = "分类不存在"
  530. return
  531. }
  532. br.Msg = "获取分类信息失败"
  533. br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
  534. return
  535. }
  536. if classifyInfo.Level == 2 || classifyInfo.ParentId > 0 {
  537. condition += ` AND classify_id=? `
  538. pars = append(pars, classifyId)
  539. } else if classifyInfo.Level == 1 {
  540. childClassify, err := data_manage.GetBaseFromKplerClassifyByParentId(classifyId)
  541. if err != nil {
  542. br.Msg = "获取分类信息失败"
  543. br.ErrMsg = "获取子分类信息失败,Err:" + err.Error()
  544. return
  545. }
  546. var classifyList []int
  547. for _, v := range childClassify {
  548. classifyList = append(classifyList, v.ClassifyId)
  549. }
  550. condition += ` AND classify_id IN (` + utils.GetOrmInReplace(len(classifyList)) + `) `
  551. pars = append(pars, classifyList)
  552. }
  553. }
  554. if frequency != "" {
  555. condition += ` AND frequency=? `
  556. pars = append(pars, frequency)
  557. }
  558. KplerList, err := data_manage.GetKplerIndex(condition, pars)
  559. if err != nil {
  560. br.Msg = "获取数据失败"
  561. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  562. return
  563. }
  564. edbCodeList := make([]string, 0)
  565. for _, v := range KplerList {
  566. edbCodeList = append(edbCodeList, v.IndexCode)
  567. }
  568. edbInfoMap := make(map[string]*data_manage.EdbInfo)
  569. dataMap := make(map[string][]*data_manage.BaseFromKplerData)
  570. total := 0
  571. if len(edbCodeList) > 0 {
  572. edbInfoList, err := data_manage.GetEdbInfoByEdbCodeList(utils.DATA_SOURCE_KPLER, edbCodeList)
  573. if err != nil {
  574. br.Msg = "获取数据源失败"
  575. br.ErrMsg = "获取指标数据失败,Err:" + err.Error()
  576. return
  577. }
  578. for _, v := range edbInfoList {
  579. edbInfoMap[v.EdbCode] = v
  580. }
  581. // 首先对分类下的指标按照日期进行分页,再针对日期,进行排序
  582. dataTimes, err := data_manage.GetKplerIndexDataTimePageByCodes(edbCodeList, startSize, pageSize)
  583. if err != nil {
  584. br.Msg = "获取数据失败"
  585. br.ErrMsg = "获取指标数据日期信息失败,Err:" + err.Error()
  586. return
  587. }
  588. if len(dataTimes) > 0 {
  589. startDate := dataTimes[len(dataTimes)-1]
  590. endDate := dataTimes[0]
  591. // 把截止日往后加1天
  592. endDateT, _ := time.ParseInLocation(utils.FormatDate, endDate, time.Local)
  593. endDate = endDateT.AddDate(0, 0, 1).Format(utils.FormatDate)
  594. dataList, e := data_manage.GetKplerIndexDataByDataTime(edbCodeList, startDate, endDate)
  595. if e != nil {
  596. br.Msg = "获取数据失败"
  597. br.ErrMsg = "获取指标数据失败,Err:" + e.Error()
  598. return
  599. }
  600. //将数据按照指标进行分类
  601. for _, v := range dataList {
  602. dataMap[v.IndexCode] = append(dataMap[v.IndexCode], v)
  603. }
  604. }
  605. total, err = data_manage.GetKplerIndexDataTimePageCount(edbCodeList)
  606. if err != nil {
  607. br.Msg = "获取数据失败"
  608. br.ErrMsg = "获取指标数据失败,Err:" + err.Error()
  609. return
  610. }
  611. }
  612. page := paging.GetPaging(currentIndex, pageSize, total)
  613. resultList := make([]*data_manage.BaseFromKplerIndexList, 0)
  614. for _, v := range KplerList {
  615. product := new(data_manage.BaseFromKplerIndexList)
  616. product.BaseFromKplerIndexId = v.BaseFromKplerIndexId
  617. product.Unit = v.Unit
  618. product.IndexCode = v.IndexCode
  619. product.IndexName = v.IndexName
  620. product.Frequency = v.Frequency
  621. product.ClassifyId = v.ClassifyId
  622. product.ModifyTime = v.ModifyTime
  623. if edb, ok := edbInfoMap[v.IndexCode]; ok {
  624. product.EdbInfoId = edb.EdbInfoId
  625. product.EdbExist = 1
  626. }
  627. dataListTmp, ok := dataMap[v.IndexCode]
  628. if !ok {
  629. dataListTmp = make([]*data_manage.BaseFromKplerData, 0)
  630. }
  631. product.DataList = dataListTmp
  632. product.Paging = page
  633. resultList = append(resultList, product)
  634. }
  635. br.Ret = 200
  636. br.Success = true
  637. br.Msg = "获取成功"
  638. br.Data = resultList
  639. }
  640. // KplerSearchList
  641. // @Title Kpler模糊搜索
  642. // @Description Kpler模糊搜索
  643. // @Param Keyword query string ture "关键字搜索"
  644. // @Success 200 {object} models.BaseResponse
  645. // @router /kpler/search_list [get]
  646. func (this *BaseFromKplerController) KplerSearchList() {
  647. br := new(models.BaseResponse).Init()
  648. defer func() {
  649. this.Data["json"] = br
  650. this.ServeJSON()
  651. }()
  652. sysUser := this.SysUser
  653. if sysUser == nil {
  654. br.Msg = "请重新登录"
  655. return
  656. }
  657. list := make([]*data_manage.BaseFromKplerIndexSearchItem, 0)
  658. var err error
  659. //关键字
  660. keyword := this.GetString("Keyword")
  661. if keyword != "" {
  662. keyWordArr := strings.Split(keyword, " ")
  663. if len(keyWordArr) > 0 {
  664. condition := ""
  665. for _, v := range keyWordArr {
  666. condition += ` AND CONCAT(index_name,index_code) LIKE '%` + v + `%'`
  667. }
  668. list, err = data_manage.GetKplerItemList(condition)
  669. if err != nil {
  670. br.ErrMsg = "获取失败,Err:" + err.Error()
  671. br.Msg = "获取失败"
  672. return
  673. }
  674. }
  675. } else {
  676. // todo es 模糊搜索
  677. list, err = data_manage.GetKplerItemList("")
  678. if err != nil {
  679. br.ErrMsg = "获取失败,Err:" + err.Error()
  680. br.Msg = "获取失败"
  681. return
  682. }
  683. }
  684. classifyIds := make([]int, 0)
  685. for _, v := range list {
  686. classifyIds = append(classifyIds, v.ClassifyId)
  687. }
  688. classifyList, err := data_manage.GetBaseFromKplerClassifyByIds(classifyIds)
  689. if err != nil {
  690. br.Msg = "搜索失败"
  691. br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
  692. return
  693. }
  694. classifyMap := make(map[int]int)
  695. for _, v := range classifyList {
  696. classifyMap[v.ClassifyId] = v.ParentId
  697. }
  698. for _, v := range list {
  699. v.ParentClassifyId = classifyMap[v.ClassifyId]
  700. }
  701. br.Ret = 200
  702. br.Success = true
  703. br.Msg = "获取成功"
  704. br.Data = list
  705. }
  706. // KplerSingleData
  707. // @Title 获取Kpler数据
  708. // @Description 获取Kpler单条数据接口
  709. // @Param IndexCode query string true "指标唯一编码"
  710. // @Success 200 {object} models.BaseResponse
  711. // @router /kpler/single_data [get]
  712. func (this *BaseFromKplerController) KplerSingleData() {
  713. br := new(models.BaseResponse).Init()
  714. defer func() {
  715. this.Data["json"] = br
  716. this.ServeJSON()
  717. }()
  718. sysUser := this.SysUser
  719. if sysUser == nil {
  720. br.Msg = "请登录"
  721. br.ErrMsg = "请登录,SysUser Is Empty"
  722. br.Ret = 408
  723. return
  724. }
  725. // 增加分页入参
  726. pageSize, _ := this.GetInt("PageSize")
  727. currentIndex, _ := this.GetInt("CurrentIndex")
  728. var startSize int
  729. if pageSize <= 0 {
  730. pageSize = utils.PageSize20
  731. }
  732. if currentIndex <= 0 {
  733. currentIndex = 1
  734. }
  735. startSize = utils.StartIndex(currentIndex, pageSize)
  736. indexCode := this.GetString("IndexCode")
  737. indexInfo, err := data_manage.GetBaseFromKplerIndexByIndexCode(indexCode)
  738. if err != nil {
  739. br.Msg = "获取指标信息失败"
  740. br.ErrMsg = "获取指标信息失败,Err:" + err.Error()
  741. return
  742. }
  743. total, err := data_manage.GetKplerIndexDataByCodeCount(indexCode)
  744. if err != nil {
  745. br.Msg = "获取数据失败"
  746. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  747. return
  748. }
  749. dataTmpList, err := data_manage.GetKplerIndexDataByCodeWithPage(indexCode, startSize, pageSize)
  750. if err != nil {
  751. br.Msg = "获取数据失败"
  752. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  753. return
  754. }
  755. edbInfo, err := data_manage.GetEdbInfoByEdbCode(utils.DATA_SOURCE_KPLER, indexCode)
  756. if err != nil && !utils.IsErrNoRow(err) {
  757. br.Msg = "获取数据源失败"
  758. br.ErrMsg = "获取数据源失败,Err:" + err.Error()
  759. return
  760. }
  761. var ret data_manage.KplerSingleDataResp
  762. var dataList []*data_manage.KplerSingleData
  763. if edbInfo != nil {
  764. ret.EdbInfoId = edbInfo.EdbInfoId
  765. ret.EdbExist = 1
  766. }
  767. ret.ClassifyId = indexInfo.ClassifyId
  768. ret.BaseFromKplerIndexId = indexInfo.BaseFromKplerIndexId
  769. ret.IndexCode = indexInfo.IndexCode
  770. ret.IndexName = indexInfo.IndexName
  771. ret.Frequency = indexInfo.Frequency
  772. ret.CreateTime = indexInfo.CreateTime.Format(utils.FormatDateTime)
  773. ret.ModifyTime = indexInfo.ModifyTime.Format(utils.FormatDateTime)
  774. ret.Unit = indexInfo.Unit
  775. for _, v := range dataTmpList {
  776. tmp := &data_manage.KplerSingleData{
  777. Value: fmt.Sprintf("%v", v.Value),
  778. DataTime: v.DataTime,
  779. }
  780. dataList = append(dataList, tmp)
  781. }
  782. ret.Data = dataList
  783. page := paging.GetPaging(currentIndex, pageSize, total)
  784. ret.Pageing = page
  785. br.Ret = 200
  786. br.Success = true
  787. br.Msg = "获取成功"
  788. br.Data = ret
  789. }
  790. // KplerIndexList
  791. // @Title Kpler指标列表
  792. // @Description Kpler指标列表
  793. // @Param ClassifyId query int true "分类id"
  794. // @Success 200 {object} data_manage.BaseFromKplerClassifyResp
  795. // @router /kpler/classify/index/list [get]
  796. func (this *BaseFromKplerController) KplerIndexList() {
  797. br := new(models.BaseResponse).Init()
  798. defer func() {
  799. this.Data["json"] = br
  800. this.ServeJSON()
  801. }()
  802. classifyId, _ := this.GetInt("ClassifyId", 0)
  803. indexList, err := data_manage.GetKplerIndexByClassifyId(classifyId)
  804. if err != nil && !utils.IsErrNoRow(err) {
  805. br.Msg = "获取失败"
  806. br.ErrMsg = "获取指标信息失败,Err:" + err.Error()
  807. return
  808. }
  809. var ret data_manage.BaseFromKplerClassifyResp
  810. list := make([]*data_manage.BaseFromKplerClassifyItems, 0)
  811. for _, v := range indexList {
  812. classify := new(data_manage.BaseFromKplerClassifyItems)
  813. classify.ClassifyId = classifyId
  814. classify.BaseFromKplerIndexId = v.BaseFromKplerIndexId
  815. classify.IndexCode = v.IndexCode
  816. classify.ClassifyName = v.IndexName
  817. classify.UniqueCode = fmt.Sprintf("%d_%d", classifyId, v.BaseFromKplerIndexId)
  818. list = append(list, classify)
  819. }
  820. ret.List = list
  821. br.Ret = 200
  822. br.Success = true
  823. br.Msg = "获取成功"
  824. br.Data = ret
  825. }
  826. // KplerBatchSearch
  827. // @Title Kpler指标查询
  828. // @Description Kpler指标查询
  829. // @Param ClassifyIds query string true "分类id, 多个分类用英文"
  830. // @Param Keyword query string true "关键词, 指标ID/指标名称"
  831. // @Success 200 {object} data_manage.LzFrequency
  832. // @router /kpler/batch_search [get]
  833. func (this *BaseFromKplerController) KplerBatchSearch() {
  834. br := new(models.BaseResponse).Init()
  835. defer func() {
  836. this.Data["json"] = br
  837. this.ServeJSON()
  838. }()
  839. sysUser := this.SysUser
  840. if sysUser == nil {
  841. br.Msg = "请登录"
  842. br.ErrMsg = "请登录,SysUser Is Empty"
  843. br.Ret = 408
  844. return
  845. }
  846. classifyIdStr := this.GetString("ClassifyIds")
  847. pageSize, _ := this.GetInt("PageSize")
  848. currentIndex, _ := this.GetInt("CurrentIndex")
  849. var startSize int
  850. if pageSize <= 0 {
  851. pageSize = utils.PageSize20
  852. }
  853. if currentIndex <= 0 {
  854. currentIndex = 1
  855. }
  856. startSize = utils.StartIndex(currentIndex, pageSize)
  857. resp := data_manage.BaseFromKplerIndexSearchList{}
  858. total := 0
  859. page := paging.GetPaging(currentIndex, pageSize, total)
  860. var list = make([]*data_manage.BaseFromKplerIndexList, 0)
  861. var condition string
  862. var pars []interface{}
  863. classifyIds := strings.Split(classifyIdStr, ",")
  864. if len(classifyIds) > 0 && classifyIds[0] != `` {
  865. condition += " AND classify_id IN (" + utils.GetOrmInReplace(len(classifyIds)) + " ) "
  866. pars = append(pars, classifyIds)
  867. }
  868. keyword := this.GetString("Keyword")
  869. if keyword != `` {
  870. condition += " AND (index_name like ? OR index_code like ?) "
  871. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  872. }
  873. frequencies := this.GetString("Frequencies")
  874. if frequencies != "" {
  875. frequencyList := strings.Split(frequencies, ",")
  876. condition += " AND frequency IN (" + utils.GetOrmInReplace(len(frequencyList)) + " ) "
  877. pars = append(pars, frequencyList)
  878. }
  879. condition += ` AND index_code not in (SELECT edb_code FROM edb_info WHERE source=?) `
  880. pars = append(pars, "Kpler")
  881. list, err := data_manage.GetKplerIndexPage(condition, pars, startSize, pageSize)
  882. if err != nil {
  883. br.Msg = "获取失败"
  884. br.ErrMsg = "获取失败,Err:" + err.Error()
  885. return
  886. }
  887. total, err = data_manage.GetKplerIndexPageCount(condition, pars)
  888. if err != nil {
  889. br.Msg = "获取数据失败"
  890. br.ErrMsg = "获取指标数据失败,Err:" + err.Error()
  891. return
  892. }
  893. page = paging.GetPaging(currentIndex, pageSize, total)
  894. resp.Paging = page
  895. resp.List = list
  896. br.Ret = 200
  897. br.Success = true
  898. br.Msg = "获取成功"
  899. br.Data = resp
  900. }
  901. // KplerBatchAdd
  902. // @Title Kpler批量新增
  903. // @Description Kpler批量新增
  904. // @Param request body data_manage.AddEdbInfoReq true "type json string"
  905. // @Success 200 string "操作成功"
  906. // @router /kpler/batch_add [post]
  907. func (this *BaseFromKplerController) KplerBatchAdd() {
  908. br := new(models.BaseResponse).Init()
  909. defer func() {
  910. if br.ErrMsg == "" {
  911. br.IsSendEmail = false
  912. }
  913. this.Data["json"] = br
  914. this.ServeJSON()
  915. }()
  916. sysUser := this.SysUser
  917. if sysUser == nil {
  918. br.Msg = "请登录"
  919. br.ErrMsg = "请登录,SysUser Is Empty"
  920. br.Ret = 408
  921. return
  922. }
  923. deleteCache := true
  924. cacheKey := "CACHE_EDB_INFO_BATCH_ADD_Kpler_" + strconv.Itoa(sysUser.AdminId)
  925. defer func() {
  926. if deleteCache {
  927. _ = utils.Rc.Delete(cacheKey)
  928. }
  929. }()
  930. if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
  931. deleteCache = false
  932. br.Msg = "系统处理中,请稍后重试!"
  933. br.ErrMsg = "系统处理中,请稍后重试!" + sysUser.RealName + ";data:" + string(this.Ctx.Input.RequestBody)
  934. return
  935. }
  936. var req []*data_manage.AddEdbInfoReq
  937. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  938. br.Msg = "参数解析异常!"
  939. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  940. return
  941. }
  942. if len(req) == 0 {
  943. br.Msg = "请选择指标"
  944. return
  945. }
  946. if len(req) > 30 {
  947. br.Msg = "批量添加指标数量不得超过30个"
  948. return
  949. }
  950. for _, v := range req {
  951. v.EdbCode = strings.TrimSpace(v.EdbCode)
  952. if v.EdbCode == "" {
  953. br.Msg = "指标ID不可为空"
  954. return
  955. }
  956. v.EdbName = strings.TrimSpace(v.EdbName)
  957. if v.EdbName == "" {
  958. br.Msg = "请输入指标名称"
  959. return
  960. }
  961. v.Frequency = strings.TrimSpace(v.Frequency)
  962. if v.Frequency == "" {
  963. br.Msg = "请选择频度"
  964. return
  965. }
  966. v.Unit = strings.TrimSpace(v.Unit)
  967. if v.Unit == "" {
  968. br.Msg = "请输入单位"
  969. return
  970. }
  971. if v.ClassifyId <= 0 {
  972. br.Msg = "请选择分类"
  973. return
  974. }
  975. }
  976. // 限定同一时间最多批量新增30个指标
  977. for _, v := range req {
  978. var r data_manage.KplerIndexSource2EdbReq
  979. r.EdbCode = v.EdbCode
  980. r.EdbName = v.EdbName
  981. r.Frequency = v.Frequency
  982. r.Unit = v.Unit
  983. r.ClassifyId = v.ClassifyId
  984. r.AdminId = sysUser.AdminId
  985. r.AdminRealName = sysUser.RealName
  986. edbInfo, e, errMsg, skip := data.KplerIndexSource2Edb(r, this.Lang)
  987. if e != nil {
  988. br.Msg = "操作失败"
  989. if errMsg != "" {
  990. br.Msg = errMsg
  991. }
  992. br.ErrMsg = e.Error()
  993. return
  994. }
  995. if skip {
  996. continue
  997. }
  998. // 试用平台更新用户累计新增指标数
  999. if utils.BusinessCode == utils.BusinessCodeSandbox {
  1000. go func() {
  1001. adminItem, e := system.GetSysAdminById(sysUser.AdminId)
  1002. if e != nil {
  1003. tips := fmt.Sprintf("试用平台更新用户累计新增指标数-获取用户失败, Err: " + e.Error())
  1004. utils.FileLog.Info(tips)
  1005. return
  1006. }
  1007. if adminItem.DepartmentName != "ETA试用客户" {
  1008. return
  1009. }
  1010. var ur etaTrialService.EtaTrialUserReq
  1011. ur.Mobile = adminItem.Mobile
  1012. _, _ = etaTrialService.UpdateUserIndexNum(ur)
  1013. }()
  1014. }
  1015. // 新增操作日志
  1016. {
  1017. edbLog := new(data_manage.EdbInfoLog)
  1018. edbLog.EdbInfoId = edbInfo.EdbInfoId
  1019. edbLog.SourceName = edbInfo.SourceName
  1020. edbLog.Source = edbInfo.Source
  1021. edbLog.EdbCode = edbInfo.EdbCode
  1022. edbLog.EdbName = edbInfo.EdbName
  1023. edbLog.ClassifyId = edbInfo.ClassifyId
  1024. edbLog.SysUserId = sysUser.AdminId
  1025. edbLog.SysUserRealName = sysUser.RealName
  1026. edbLog.CreateTime = time.Now()
  1027. edbLog.Content = string(this.Ctx.Input.RequestBody)
  1028. edbLog.Status = "新增指标"
  1029. edbLog.Method = this.Ctx.Input.URI()
  1030. go data_manage.AddEdbInfoLog(edbLog)
  1031. }
  1032. }
  1033. br.Msg = "操作成功"
  1034. br.Ret = 200
  1035. br.Success = true
  1036. br.IsAddLog = true
  1037. }
  1038. // KplerNameCheck
  1039. // @Title 加入指标库的重名检测
  1040. // @Description 加入指标库的重名检测
  1041. // @Param ClassifyIds query string true "分类id, 多个分类用英文"
  1042. // @Param Keyword query string true "关键词, 指标ID/指标名称"
  1043. // @Success 200 {object} NameCheckResult
  1044. // @router /kpler/edb_info/name_check [post]
  1045. func (this *BaseFromKplerController) KplerNameCheck() {
  1046. br := new(models.BaseResponse).Init()
  1047. defer func() {
  1048. if br.ErrMsg == "" {
  1049. br.IsSendEmail = false
  1050. }
  1051. this.Data["json"] = br
  1052. this.ServeJSON()
  1053. }()
  1054. sysUser := this.SysUser
  1055. if sysUser == nil {
  1056. br.Msg = "请登录"
  1057. br.ErrMsg = "请登录,SysUser Is Empty"
  1058. br.Ret = 408
  1059. return
  1060. }
  1061. var req []*data_manage.NameCheckEdbInfoReq
  1062. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  1063. br.Msg = "参数解析异常!"
  1064. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  1065. return
  1066. }
  1067. if len(req) == 0 {
  1068. br.Msg = "请选择指标"
  1069. return
  1070. }
  1071. codeMaxT := 30
  1072. codeLen := len(req)
  1073. if codeLen > codeMaxT {
  1074. br.Msg = "批量添加指标数量不得超过30个"
  1075. return
  1076. }
  1077. indexNames := make([]string, 0)
  1078. resp := make([]*data_manage.EdbNameCheckResult, 0)
  1079. for _, v := range req {
  1080. v.EdbCode = strings.TrimSpace(v.EdbCode)
  1081. if v.EdbCode == "" {
  1082. br.Msg = "指标ID不可为空"
  1083. return
  1084. }
  1085. v.EdbName = strings.TrimSpace(v.EdbName)
  1086. if v.EdbName == "" {
  1087. br.Msg = "请输入指标名称"
  1088. return
  1089. }
  1090. indexNames = append(indexNames, v.EdbName)
  1091. resp = append(resp, &data_manage.EdbNameCheckResult{
  1092. EdbCode: v.EdbCode,
  1093. EdbName: v.EdbName,
  1094. })
  1095. dataItems, err := data_manage.GetEdbDataAllByEdbCode(v.EdbCode, utils.DATA_SOURCE_KPLER, 0, utils.EDB_DATA_LIMIT)
  1096. if err != nil && !utils.IsErrNoRow(err) {
  1097. br.Msg = "获取失败"
  1098. br.ErrMsg = "获取钢联已存在信息失败,Err:" + err.Error()
  1099. return
  1100. }
  1101. if len(dataItems) <= 0 {
  1102. respItem, err := data.AddEdbData(utils.DATA_SOURCE_KPLER, v.EdbCode, v.Frequency)
  1103. if err != nil {
  1104. br.Msg = "获取失败"
  1105. br.ErrMsg = "获取失败,Err:" + err.Error()
  1106. return
  1107. }
  1108. if respItem.Ret != 200 {
  1109. br.Msg = "未搜索到该指标"
  1110. br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + v.EdbCode
  1111. return
  1112. }
  1113. }
  1114. }
  1115. // 重名校验
  1116. edbList, e := data_manage.GetEdbInfoByNameArr(indexNames, utils.EDB_INFO_TYPE)
  1117. if e != nil {
  1118. br.Msg = "操作失败"
  1119. br.ErrMsg = "获取重名指标失败, Err: " + e.Error()
  1120. return
  1121. }
  1122. nameExists := make(map[string]bool)
  1123. for _, v := range edbList {
  1124. nameExists[v.EdbName] = true
  1125. }
  1126. if len(nameExists) > 0 {
  1127. for _, v := range resp {
  1128. v.Exist = nameExists[v.EdbName]
  1129. }
  1130. }
  1131. br.Data = resp
  1132. br.Msg = "校验成功"
  1133. br.Ret = 200
  1134. br.Success = true
  1135. }
  1136. // KplerAddCheck
  1137. // @Title 加入指标库指标Id检测
  1138. // @Description 加入指标库指标Id检测
  1139. // @Param request body request.BatchAddCheckReq true "type json string"
  1140. // @Success 200 string "操作成功"
  1141. // @router /kpler/edb_info/add_check [post]
  1142. func (c *BaseFromKplerController) KplerAddCheck() {
  1143. br := new(models.BaseResponse).Init()
  1144. defer func() {
  1145. if br.ErrMsg == "" {
  1146. br.IsSendEmail = false
  1147. }
  1148. c.Data["json"] = br
  1149. c.ServeJSON()
  1150. }()
  1151. sysUser := c.SysUser
  1152. if sysUser == nil {
  1153. br.Msg = "请登录"
  1154. br.ErrMsg = "请登录,SysUser Is Empty"
  1155. br.Ret = 408
  1156. return
  1157. }
  1158. var req data_manage.BatchAddCheckReq
  1159. if e := json.Unmarshal(c.Ctx.Input.RequestBody, &req); e != nil {
  1160. br.Msg = "参数解析异常!"
  1161. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  1162. return
  1163. }
  1164. codeMaxT := 30
  1165. codeLen := len(req.IndexCodes)
  1166. // 获取指标库已有指标
  1167. existsEdb, e := data_manage.GetEdbCodesBySource(utils.DATA_SOURCE_KPLER)
  1168. if e != nil {
  1169. br.Msg = "获取失败"
  1170. br.ErrMsg = "获取自有数据已添加的指标失败, Err: " + e.Error()
  1171. return
  1172. }
  1173. existMap := make(map[string]*data_manage.EdbInfo)
  1174. for _, v := range existsEdb {
  1175. existMap[v.EdbCode] = v
  1176. }
  1177. if codeLen == 0 {
  1178. br.Msg = "请选择指标"
  1179. return
  1180. }
  1181. if codeLen > codeMaxT {
  1182. br.Msg = fmt.Sprintf("最多只能选择%d个指标", codeMaxT)
  1183. return
  1184. }
  1185. // 查询选中的指标
  1186. cond := fmt.Sprintf(` AND index_code IN (%s)`, utils.GetOrmInReplace(codeLen))
  1187. pars := make([]interface{}, 0)
  1188. pars = append(pars, req.IndexCodes)
  1189. list, err := data_manage.GetKplerIndex(cond, pars)
  1190. if err != nil {
  1191. br.Msg = "获取失败"
  1192. br.ErrMsg = "获取钢联已存在信息失败,Err:" + err.Error()
  1193. return
  1194. }
  1195. if len(list) > codeMaxT {
  1196. br.Msg = fmt.Sprintf("最多只能选择%d个指标", codeMaxT)
  1197. return
  1198. }
  1199. resp := make([]*data_manage.BaseFromKplerIndexList, 0)
  1200. for _, v := range list {
  1201. if edb, ok := existMap[v.IndexCode]; ok {
  1202. v.EdbInfoId = edb.EdbInfoId
  1203. v.EdbClassifyId = edb.ClassifyId
  1204. v.EdbUniqueCode = edb.UniqueCode
  1205. v.EdbExist = 1
  1206. }
  1207. resp = append(resp, v)
  1208. }
  1209. br.Data = resp
  1210. br.Msg = "校验成功"
  1211. br.Ret = 200
  1212. br.Success = true
  1213. }
  1214. // 加入到指标库
  1215. // @Title 加入到指标库
  1216. // @Description 加入到指标库
  1217. // @Param request body request.BatchAddCheckReq true "type json string"
  1218. // @Success 200 string "操作成功"
  1219. // @router /kpler/edb_info/add [post]
  1220. func (c *BaseFromKplerController) KplerAdd() {
  1221. br := new(models.BaseResponse).Init()
  1222. defer func() {
  1223. c.Data["json"] = br
  1224. c.ServeJSON()
  1225. }()
  1226. sysUser := c.SysUser
  1227. if sysUser == nil {
  1228. br.Msg = "请登录"
  1229. br.ErrMsg = "请登录,SysUser Is Empty"
  1230. br.Ret = 408
  1231. return
  1232. }
  1233. var req data_manage.AddEdbInfoReq
  1234. if e := json.Unmarshal(c.Ctx.Input.RequestBody, &req); e != nil {
  1235. br.Msg = "参数解析异常!"
  1236. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  1237. return
  1238. }
  1239. if req.EdbCode == "" {
  1240. br.Msg = "指标ID不能为空"
  1241. return
  1242. }
  1243. if req.EdbName == "" {
  1244. br.Msg = "指标名称不能为空"
  1245. return
  1246. }
  1247. if req.ClassifyId <= 0 {
  1248. br.Msg = "分类不能为空"
  1249. return
  1250. }
  1251. if req.Frequency == "" {
  1252. br.Msg = "频度不能为空"
  1253. return
  1254. }
  1255. if req.Unit == "" {
  1256. br.Msg = "单位不能为空"
  1257. return
  1258. }
  1259. count, err := data_manage.GetEdbInfoCount(utils.DATA_SOURCE_KPLER, req.EdbCode)
  1260. if err != nil {
  1261. br.Msg = "获取失败"
  1262. br.ErrMsg = "获取失败,Err:" + err.Error()
  1263. return
  1264. }
  1265. if count > 0 {
  1266. br.Msg = "指标已存在"
  1267. return
  1268. }
  1269. // 指标入库
  1270. edbInfo, err, errMsg, isSendEmail := data.EdbInfoAdd(utils.DATA_SOURCE_KPLER, utils.DATA_SUB_SOURCE_EDB, req.ClassifyId, req.EdbCode, req.EdbName, req.Frequency, req.Unit, req.StartDate, req.EndDate, sysUser.AdminId, sysUser.RealName, c.Lang)
  1271. if err != nil {
  1272. br.Msg = "保存失败"
  1273. if errMsg != `` {
  1274. br.Msg = errMsg
  1275. }
  1276. br.ErrMsg = err.Error()
  1277. br.IsSendEmail = isSendEmail
  1278. return
  1279. }
  1280. // 试用平台更新用户累计新增指标数
  1281. adminItem, e := system.GetSysAdminById(sysUser.AdminId)
  1282. if e != nil {
  1283. br.Msg = "操作失败"
  1284. br.ErrMsg = "获取系统用户数据失败,Err:" + e.Error()
  1285. return
  1286. }
  1287. if utils.BusinessCode == utils.BusinessCodeSandbox && adminItem.DepartmentName == "ETA试用客户" {
  1288. go func() {
  1289. var r etaTrialService.EtaTrialUserReq
  1290. r.Mobile = adminItem.Mobile
  1291. _, _ = etaTrialService.UpdateUserIndexNum(r)
  1292. }()
  1293. }
  1294. //新增操作日志
  1295. {
  1296. edbLog := new(data_manage.EdbInfoLog)
  1297. edbLog.EdbInfoId = edbInfo.EdbInfoId
  1298. edbLog.SourceName = edbInfo.SourceName
  1299. edbLog.Source = edbInfo.Source
  1300. edbLog.EdbCode = edbInfo.EdbCode
  1301. edbLog.EdbName = edbInfo.EdbName
  1302. edbLog.ClassifyId = edbInfo.ClassifyId
  1303. edbLog.SysUserId = sysUser.AdminId
  1304. edbLog.SysUserRealName = sysUser.RealName
  1305. edbLog.CreateTime = time.Now()
  1306. edbLog.Content = string(c.Ctx.Input.RequestBody)
  1307. edbLog.Status = "新增指标"
  1308. edbLog.Method = c.Ctx.Input.URI()
  1309. go data_manage.AddEdbInfoLog(edbLog)
  1310. }
  1311. // 更新es
  1312. go data.AddOrEditEdbInfoToEs(edbInfo.EdbInfoId)
  1313. resp := new(data_manage.AddEdbInfoResp)
  1314. resp.EdbInfoId = edbInfo.EdbInfoId
  1315. resp.UniqueCode = edbInfo.UniqueCode
  1316. br.Ret = 200
  1317. br.Success = true
  1318. br.Msg = "保存成功"
  1319. br.Data = resp
  1320. br.IsAddLog = true
  1321. }
  1322. // ExportKplerList
  1323. // @Title 导出Kpler数据
  1324. // @Description 导出Kpler数据
  1325. // @Param ClassifyId query int true "关键字搜索"
  1326. // @Param IndexCode query string true "指标编码"
  1327. // @Success 200 导出成功
  1328. // @router /kpler/export [get]
  1329. func (this *BaseFromKplerController) ExportKplerList() {
  1330. br := new(models.BaseResponse).Init()
  1331. defer func() {
  1332. this.Data["json"] = br
  1333. this.ServeJSON()
  1334. }()
  1335. sysUser := this.SysUser
  1336. if sysUser == nil {
  1337. br.Msg = "请重新登录"
  1338. return
  1339. }
  1340. classifyId, _ := this.GetInt("ClassifyId")
  1341. indexCode := this.GetString("IndexCode")
  1342. if classifyId <= 0 && indexCode == "" {
  1343. br.Msg = "请选择分类或者指标"
  1344. return
  1345. }
  1346. dir, _ := os.Executable()
  1347. exPath := filepath.Dir(dir)
  1348. downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
  1349. xlsxFile := xlsx.NewFile()
  1350. var condition string
  1351. var pars []interface{}
  1352. var classifyName string
  1353. if classifyId > 0 {
  1354. classifyInfo, err := data_manage.GetBaseFromKplerClassifyById(classifyId)
  1355. if err != nil {
  1356. if utils.IsErrNoRow(err) {
  1357. br.Msg = "分类不存在"
  1358. return
  1359. }
  1360. br.Msg = "下载失败"
  1361. br.ErrMsg = "获取分类失败,Err:" + err.Error()
  1362. return
  1363. }
  1364. classifyName = classifyInfo.ClassifyName
  1365. childClassify := make([]*data_manage.BaseFromKplerClassify, 0)
  1366. if classifyInfo.LevelPath != "" {
  1367. childClassify, err = data_manage.GetBaseFromKplerClassifyByLevelPath(classifyInfo.LevelPath)
  1368. if err != nil {
  1369. br.Msg = "下载失败"
  1370. br.ErrMsg = "获取分类失败,Err:" + err.Error()
  1371. return
  1372. }
  1373. }
  1374. if len(childClassify) > 0 {
  1375. childClassifyIds := make([]int, 0)
  1376. for _, child := range childClassify {
  1377. childClassifyIds = append(childClassifyIds, child.ClassifyId)
  1378. }
  1379. condition += ` AND classify_id IN (` + utils.GetOrmInReplace(len(childClassifyIds)) + `)`
  1380. pars = append(pars, childClassifyIds)
  1381. } else {
  1382. condition += ` AND classify_id=?`
  1383. pars = append(pars, classifyId)
  1384. }
  1385. }
  1386. if indexCode != "" {
  1387. condition += ` AND index_code=? `
  1388. pars = append(pars, indexCode)
  1389. }
  1390. indexList, err := data_manage.GetKplerIndex(condition, pars)
  1391. if err != nil {
  1392. br.Msg = "下载失败"
  1393. br.ErrMsg = "获取指标失败,Err:" + err.Error()
  1394. fmt.Println("获取数据失败,Err:" + err.Error())
  1395. return
  1396. }
  1397. if len(indexList) <= 0 {
  1398. fmt.Println("indexList 为空")
  1399. br.Ret = 200
  1400. br.Success = true
  1401. br.Msg = "success"
  1402. return
  1403. }
  1404. codeList := make([]string, 0)
  1405. frequenciesMap := make(map[string][]*data_manage.BaseFromKplerIndexList)
  1406. for _, v := range indexList {
  1407. codeList = append(codeList, v.IndexCode)
  1408. frequenciesMap[v.Frequency] = append(frequenciesMap[v.Frequency], v)
  1409. }
  1410. dataListMap := make(map[string][]*data_manage.BaseFromKplerData)
  1411. if len(indexList) > 0 {
  1412. allDataList, e := data_manage.GetKplerIndexDataByCodes(codeList)
  1413. if e != nil {
  1414. br.Msg = "获取数据失败"
  1415. br.ErrMsg = "获取数据失败,Err:" + e.Error()
  1416. return
  1417. }
  1418. for _, v := range allDataList {
  1419. dataListMap[v.IndexCode] = append(dataListMap[v.IndexCode], v)
  1420. }
  1421. }
  1422. // 按照频率分组排序
  1423. frequencies := []string{
  1424. "日度", "周度", "旬度", "月度", "季度", "半年度", "年度",
  1425. }
  1426. for _, frequency := range frequencies {
  1427. //获取指标
  1428. indexCodeList, ok := frequenciesMap[frequency]
  1429. if !ok {
  1430. continue
  1431. }
  1432. if len(indexCodeList) <= 0 {
  1433. fmt.Printf("sheet:%s, 不存在指标", frequency)
  1434. return
  1435. }
  1436. var sheetName string
  1437. switch frequency {
  1438. case "日度":
  1439. sheetName = "日度(Daily)"
  1440. case "周度":
  1441. sheetName = "周度(Weekly)"
  1442. case "旬度":
  1443. sheetName = "旬度(ten-day)"
  1444. case "月度":
  1445. sheetName = "月度(Monthly)"
  1446. case "季度":
  1447. sheetName = "季度(Quarterly)"
  1448. case "半年度":
  1449. sheetName = "半年度(Semi-annual)"
  1450. case "年度":
  1451. sheetName = "年度(Annual)"
  1452. default:
  1453. sheetName = "其他数据"
  1454. }
  1455. sheetNew, err := xlsxFile.AddSheet(sheetName)
  1456. if err != nil {
  1457. fmt.Println("新增Sheet失败", err.Error())
  1458. return
  1459. }
  1460. secNameRow := sheetNew.AddRow()
  1461. frequencyRow := sheetNew.AddRow()
  1462. unitRow := sheetNew.AddRow()
  1463. lastModifyDateRow := sheetNew.AddRow()
  1464. var indexIdList []int
  1465. for _, idx := range frequenciesMap[frequency] {
  1466. indexIdList = append(indexIdList, idx.BaseFromKplerIndexId)
  1467. }
  1468. dataTimeList, err := data_manage.GetKplerDataDataTimeByIndexId(indexIdList)
  1469. if err != nil {
  1470. br.Msg = "下载失败"
  1471. br.ErrMsg = "获取数据时间失败,Err:" + err.Error()
  1472. fmt.Println("获取数据时间失败", err.Error())
  1473. return
  1474. }
  1475. // 添加excel左侧指标日期
  1476. setRowIndex := 4
  1477. for rk, dv := range dataTimeList {
  1478. rowIndex := setRowIndex + rk
  1479. row := sheetNew.Row(rowIndex)
  1480. displayDate, _ := time.Parse(utils.FormatDate, dv)
  1481. displayDateCell := row.AddCell()
  1482. style := new(xlsx.Style)
  1483. style.ApplyAlignment = true
  1484. style.Alignment.WrapText = true
  1485. displayDateCell.SetStyle(style)
  1486. displayDateCell.SetDate(displayDate)
  1487. }
  1488. for k, icl := range indexCodeList {
  1489. // 获取数据
  1490. dataList, ok := dataListMap[icl.IndexCode]
  1491. if !ok {
  1492. continue
  1493. }
  1494. if k == 0 {
  1495. secNameRow.AddCell().SetValue("指标名称/Metric Name")
  1496. frequencyRow.AddCell().SetValue("频度/Frequency")
  1497. unitRow.AddCell().SetValue("单位/Unit")
  1498. lastModifyDateRow.AddCell().SetValue("更新时间/Update Time")
  1499. min := k * 3
  1500. sheetNew.SetColWidth(min, min, 15)
  1501. }
  1502. if len(dataList) == 0 {
  1503. continue
  1504. }
  1505. secNameRow.AddCell().SetValue(icl.IndexName)
  1506. frequencyRow.AddCell().SetValue(icl.Frequency)
  1507. unitRow.AddCell().SetValue(icl.Unit)
  1508. timeDate, err := time.Parse(utils.FormatDateTime, dataList[0].ModifyTime)
  1509. if err != nil {
  1510. continue
  1511. }
  1512. lastModifyDateRow.AddCell().SetValue(timeDate.Format(utils.FormatDate))
  1513. dataInfoMap := make(map[string]*data_manage.BaseFromKplerData)
  1514. for _, v := range dataList {
  1515. dataInfoMap[v.DataTime] = v
  1516. }
  1517. for rk, dtv := range dataTimeList {
  1518. rowIndex := setRowIndex + rk
  1519. row := sheetNew.Row(rowIndex)
  1520. displayDateCell := row.AddCell()
  1521. tmpData, ok := dataInfoMap[dtv]
  1522. if ok {
  1523. displayDateCell.SetValue(tmpData.Value)
  1524. }
  1525. }
  1526. }
  1527. }
  1528. err = xlsxFile.Save(downLoadnFilePath)
  1529. if err != nil {
  1530. //有指标无数据时先导出一遍空表
  1531. sheet, err := xlsxFile.AddSheet("无数据")
  1532. if err != nil {
  1533. br.Msg = "新增Sheet失败"
  1534. br.ErrMsg = "新增Sheet失败,Err:" + err.Error()
  1535. return
  1536. }
  1537. rowSecName := sheet.AddRow()
  1538. celSecName := rowSecName.AddCell()
  1539. celSecName.SetValue("")
  1540. e := xlsxFile.Save(downLoadnFilePath)
  1541. if e != nil {
  1542. br.Msg = "保存文件失败"
  1543. br.ErrMsg = "保存文件失败"
  1544. return
  1545. }
  1546. }
  1547. fileName := classifyName
  1548. if indexCode != "" && len(indexList) == 1 {
  1549. fileName = indexList[0].IndexName
  1550. }
  1551. fileName = strings.Replace(fileName, ": ", "_", -1)
  1552. fileName = strings.Replace(fileName, ", ", "_", -1)
  1553. fileName = strings.Replace(fileName, " ", "_", -1)
  1554. fileName += time.Now().Format("06.01.02") + `.xlsx` //文件名称
  1555. fmt.Println(fileName)
  1556. this.Ctx.Output.Download(downLoadnFilePath, fileName)
  1557. defer func() {
  1558. os.Remove(downLoadnFilePath)
  1559. }()
  1560. br.Ret = 200
  1561. br.Success = true
  1562. br.Msg = "success"
  1563. }
  1564. // GetFrequency
  1565. // @Title kpler数据频度
  1566. // @Description kpler数据频度接口
  1567. // @Param ClassifyId query string true "分类Id"
  1568. // @Success 200 {object} data_manage.LzFrequency
  1569. // @router /kpler/frequency [get]
  1570. func (this *BaseFromKplerController) GetFrequency() {
  1571. br := new(models.BaseResponse).Init()
  1572. defer func() {
  1573. this.Data["json"] = br
  1574. this.ServeJSON()
  1575. }()
  1576. sysUser := this.SysUser
  1577. if sysUser == nil {
  1578. br.Msg = "请登录"
  1579. br.ErrMsg = "请登录,SysUser Is Empty"
  1580. br.Ret = 408
  1581. return
  1582. }
  1583. classifyId, _ := this.GetInt("ClassifyId")
  1584. if classifyId < 0 {
  1585. br.Msg = "请选择分类"
  1586. br.ErrMsg = "请选择分类"
  1587. return
  1588. }
  1589. frequencyList, err := data_manage.GetKplerFrequencyByClassifyId(classifyId)
  1590. if err != nil {
  1591. br.Msg = "获取频度失败"
  1592. br.ErrMsg = "获取频度失败,Err:" + err.Error()
  1593. return
  1594. }
  1595. br.Ret = 200
  1596. br.Success = true
  1597. br.Msg = "获取成功"
  1598. br.Data = frequencyList
  1599. }
  1600. // BatchAddEdbCheck
  1601. // @Title 新增校验
  1602. // @Description 新增校验
  1603. // @Param request body data_manage.BatchManualEdbReq true "type json string"
  1604. // @Success 200 string "操作成功"
  1605. // @router /kpler/batch/add/check [post]
  1606. func (this *BaseFromKplerController) BatchAddEdbCheck() {
  1607. br := new(models.BaseResponse).Init()
  1608. defer func() {
  1609. if br.ErrMsg == "" {
  1610. br.IsSendEmail = false
  1611. }
  1612. this.Data["json"] = br
  1613. this.ServeJSON()
  1614. }()
  1615. sysUser := this.SysUser
  1616. if sysUser == nil {
  1617. br.Msg = "请登录"
  1618. br.ErrMsg = "请登录,SysUser Is Empty"
  1619. br.Ret = 408
  1620. return
  1621. }
  1622. // 最大批量添加的数量
  1623. codeMaxT := 31
  1624. var req data_manage.BatchCheckKplerEdbReq
  1625. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1626. if err != nil {
  1627. br.Msg = "参数错误"
  1628. br.ErrMsg = "参数错误,Err:" + err.Error()
  1629. return
  1630. }
  1631. req.Keyword = strings.TrimSpace(req.Keyword)
  1632. classifyIdStr := req.ClassifyIds
  1633. var list = make([]*data_manage.BaseFromKplerIndexList, 0)
  1634. var condition string
  1635. var pars []interface{}
  1636. if req.ListAll {
  1637. classifyIds := strings.Split(classifyIdStr, ",")
  1638. if len(classifyIds) > 0 && classifyIds[0] != `` {
  1639. condition += " AND classify_id IN (" + utils.GetOrmInReplace(len(classifyIds)) + " ) "
  1640. pars = append(pars, classifyIds)
  1641. }
  1642. keyword := req.Keyword
  1643. if keyword != `` {
  1644. condition += " AND (index_name like ? OR index_code like ?) "
  1645. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  1646. }
  1647. frequencies := req.Frequencies
  1648. if frequencies != "" {
  1649. frequencyList := strings.Split(frequencies, ",")
  1650. condition += " AND frequency IN (" + utils.GetOrmInReplace(len(frequencyList)) + " ) "
  1651. pars = append(pars, frequencyList)
  1652. }
  1653. codes := req.TradeCodeList
  1654. codeList := make([]string, 0)
  1655. if codes != "" {
  1656. codeList = strings.Split(codes, ",")
  1657. }
  1658. if len(codeList) > 0 {
  1659. condition += ` AND index_code not in (` + utils.GetOrmInReplace(len(codeList)) + `) `
  1660. pars = append(pars, codeList)
  1661. }
  1662. } else {
  1663. codes := req.TradeCodeList
  1664. codeList := make([]string, 0)
  1665. if codes != "" {
  1666. codeList = strings.Split(codes, ",")
  1667. }
  1668. if len(codeList) <= 0 {
  1669. br.Msg = "请选择指标"
  1670. br.ErrMsg = "请选择指标"
  1671. return
  1672. }
  1673. // 指标
  1674. condition += ` AND index_code in (` + utils.GetOrmInReplace(len(codeList)) + `) `
  1675. pars = append(pars, codeList)
  1676. }
  1677. condition += ` AND index_code not in (SELECT edb_code FROM edb_info WHERE source=?) `
  1678. pars = append(pars, utils.DATA_SOURCE_USDA_FAS)
  1679. list, err = data_manage.GetKplerIndexPage(condition, pars, 0, codeMaxT)
  1680. if err != nil {
  1681. br.Msg = "获取失败"
  1682. br.ErrMsg = "获取失败,Err:" + err.Error()
  1683. return
  1684. }
  1685. if len(list) >= codeMaxT {
  1686. br.Msg = "批量添加指标数量不得超过30个"
  1687. return
  1688. }
  1689. br.Data = list
  1690. br.Msg = "校验成功"
  1691. br.Ret = 200
  1692. br.Success = true
  1693. }