ccf_data.go 33 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288
  1. package data_manage
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/models"
  5. "eta/eta_api/models/data_manage"
  6. "eta/eta_api/models/system"
  7. "eta/eta_api/services/data"
  8. etaTrialService "eta/eta_api/services/eta_trial"
  9. "eta/eta_api/utils"
  10. "fmt"
  11. "github.com/rdlucklib/rdluck_tools/paging"
  12. "github.com/tealeg/xlsx"
  13. "os"
  14. "path/filepath"
  15. "strconv"
  16. "strings"
  17. "time"
  18. )
  19. // CCFClassify
  20. // @Title CCF化纤分类
  21. // @Description CCF化纤分类接口
  22. // @Success 200 {object} data_manage.BaseFromCCFClassifyItem
  23. // @router /ccf/classify [get]
  24. func (this *EdbInfoController) CCFClassify() {
  25. br := new(models.BaseResponse).Init()
  26. defer func() {
  27. if br.ErrMsg == "" {
  28. br.IsSendEmail = false
  29. }
  30. this.Data["json"] = br
  31. this.ServeJSON()
  32. }()
  33. sysUser := this.SysUser
  34. if sysUser == nil {
  35. br.Msg = "请登录"
  36. br.ErrMsg = "请登录,SysUser Is Empty"
  37. br.Ret = 408
  38. return
  39. }
  40. classifies, e := data_manage.GetBaseFromCCFClassify()
  41. if e != nil {
  42. br.Msg = "获取失败"
  43. br.ErrMsg = "获取CCF化纤分类失败, Err: " + e.Error()
  44. return
  45. }
  46. classifyOb := new(data_manage.BaseFromCCFClassify)
  47. resp := make([]*data_manage.BaseFromCCFClassifyItem, 0)
  48. parentMap := make(map[int][]*data_manage.BaseFromCCFClassifyItem)
  49. for _, v := range classifies {
  50. t := classifyOb.Format2Item(v)
  51. if v.ParentId == 0 {
  52. resp = append(resp, t)
  53. }
  54. if v.ParentId > 0 {
  55. if parentMap[v.ParentId] == nil {
  56. parentMap[v.ParentId] = make([]*data_manage.BaseFromCCFClassifyItem, 0)
  57. }
  58. parentMap[v.ParentId] = append(parentMap[v.ParentId], t)
  59. }
  60. }
  61. for _, v := range resp {
  62. v.Child = parentMap[v.ClassifyId]
  63. }
  64. br.Data = resp
  65. br.Ret = 200
  66. br.Success = true
  67. br.Msg = "获取成功"
  68. }
  69. // CCFIndexData
  70. // @Title 获取CCF化纤数据
  71. // @Description 获取CCF化纤接口
  72. // @Param PageSize query int true "每页数据条数"
  73. // @Param CurrentIndex query int true "当前页页码,从1开始"
  74. // @Param ClassifyId query string true "分类id"
  75. // @Success 200 {object} data_manage.LzFrequency
  76. // @router /ccf/index/data [get]
  77. func (this *EdbInfoController) CCFIndexData() {
  78. br := new(models.BaseResponse).Init()
  79. defer func() {
  80. if br.ErrMsg == "" {
  81. br.IsSendEmail = false
  82. }
  83. this.Data["json"] = br
  84. this.ServeJSON()
  85. }()
  86. sysUser := this.SysUser
  87. if sysUser == nil {
  88. br.Msg = "请登录"
  89. br.ErrMsg = "请登录,SysUser Is Empty"
  90. br.Ret = 408
  91. return
  92. }
  93. pageSize, _ := this.GetInt("PageSize")
  94. currentIndex, _ := this.GetInt("CurrentIndex")
  95. var startSize int
  96. if pageSize <= 0 {
  97. pageSize = utils.PageSize20
  98. }
  99. if currentIndex <= 0 {
  100. currentIndex = 1
  101. }
  102. startSize = utils.StartIndex(currentIndex, pageSize)
  103. classifyId, _ := this.GetInt("ClassifyId")
  104. if classifyId < 0 {
  105. br.Msg = "请选择分类"
  106. br.ErrMsg = "请选择分类"
  107. return
  108. }
  109. // 获取指标
  110. var condition string
  111. var pars []interface{}
  112. if classifyId >= 0 {
  113. condition += ` AND classify_id=? `
  114. pars = append(pars, classifyId)
  115. }
  116. indexes, err := data_manage.GetCCFIndex(condition, pars)
  117. if err != nil {
  118. br.Msg = "获取数据失败"
  119. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  120. return
  121. }
  122. indexCodes := make([]string, 0)
  123. for _, v := range indexes {
  124. indexCodes = append(indexCodes, v.IndexCode)
  125. }
  126. indexCounts, e := data_manage.GetCCFIndexDataCountGroup(indexCodes)
  127. if e != nil {
  128. br.Msg = "获取失败"
  129. br.ErrMsg = "获取指标数据总量失败, Err:" + err.Error()
  130. return
  131. }
  132. countMap := make(map[string]int)
  133. for _, v := range indexCounts {
  134. countMap[v.IndexCode] = v.Count
  135. }
  136. resultList := make([]*data_manage.BaseFromCCFIndexList, 0)
  137. for _, v := range indexes {
  138. product := new(data_manage.BaseFromCCFIndexList)
  139. product.BaseFromCcfIndexId = v.BaseFromCcfIndexId
  140. product.ClassifyId = v.ClassifyId
  141. product.Unit = v.Unit
  142. product.IndexCode = v.IndexCode
  143. product.IndexName = v.IndexName
  144. product.Frequency = v.Frequency
  145. product.CreateTime = v.CreateTime
  146. product.ModifyTime = v.ModifyTime
  147. total := countMap[v.IndexCode]
  148. page := paging.GetPaging(currentIndex, pageSize, total)
  149. dataList, e := data_manage.GetCCFIndexData(v.IndexCode, startSize, pageSize)
  150. if e != nil {
  151. br.Msg = "获取数据失败"
  152. br.ErrMsg = "获取指标数据失败,Err:" + e.Error()
  153. return
  154. }
  155. if dataList == nil {
  156. dataList = make([]*data_manage.BaseFromCCFData, 0)
  157. }
  158. product.DataList = dataList
  159. product.Paging = page
  160. resultList = append(resultList, product)
  161. }
  162. br.Ret = 200
  163. br.Success = true
  164. br.Msg = "获取成功"
  165. br.Data = resultList
  166. }
  167. // CCFSearchList
  168. // @Title CCF模糊搜索
  169. // @Description CCF模糊搜索
  170. // @Param Keyword query string ture "关键字搜索"
  171. // @Success 200 {object} data_manage.BaseFromCCFIndexSearchItem
  172. // @router /ccf/search_list [get]
  173. func (this *EdbInfoController) CCFSearchList() {
  174. br := new(models.BaseResponse).Init()
  175. defer func() {
  176. if br.ErrMsg == "" {
  177. br.IsSendEmail = false
  178. }
  179. this.Data["json"] = br
  180. this.ServeJSON()
  181. }()
  182. sysUser := this.SysUser
  183. if sysUser == nil {
  184. br.Msg = "请登录"
  185. br.ErrMsg = "请登录,SysUser Is Empty"
  186. br.Ret = 408
  187. return
  188. }
  189. list := make([]*data_manage.BaseFromCCFIndexSearchItem, 0)
  190. var err error
  191. // 关键字
  192. keyword := this.GetString("Keyword")
  193. if keyword != "" {
  194. keyWordArr := strings.Split(keyword, " ")
  195. if len(keyWordArr) > 0 {
  196. condition := ""
  197. for _, v := range keyWordArr {
  198. condition += ` AND CONCAT(index_name,index_code) LIKE '%` + v + `%'`
  199. }
  200. list, err = data_manage.GetCCFItemList(condition)
  201. if err != nil {
  202. br.ErrMsg = "获取失败,Err:" + err.Error()
  203. br.Msg = "获取失败"
  204. return
  205. }
  206. }
  207. } else {
  208. list, err = data_manage.GetCCFItemList("")
  209. if err != nil {
  210. br.ErrMsg = "获取失败,Err:" + err.Error()
  211. br.Msg = "获取失败"
  212. return
  213. }
  214. }
  215. br.Ret = 200
  216. br.Success = true
  217. br.Msg = "获取成功"
  218. br.Data = list
  219. }
  220. // CCFSingleData
  221. // @Title 获取CCF数据
  222. // @Description 获取CCF单条数据接口
  223. // @Param IndexCode query string true "指标唯一编码"
  224. // @Success 200 {object} models.BaseResponse
  225. // @router /ccf/single_data [get]
  226. func (this *EdbInfoController) CCFSingleData() {
  227. br := new(models.BaseResponse).Init()
  228. defer func() {
  229. if br.ErrMsg == "" {
  230. br.IsSendEmail = false
  231. }
  232. this.Data["json"] = br
  233. this.ServeJSON()
  234. }()
  235. sysUser := this.SysUser
  236. if sysUser == nil {
  237. br.Msg = "请登录"
  238. br.ErrMsg = "请登录,SysUser Is Empty"
  239. br.Ret = 408
  240. return
  241. }
  242. indexCode := this.GetString("IndexCode")
  243. indexInfo, err := data_manage.GetBaseFromCCFIndexByIndexCode(indexCode)
  244. if err != nil {
  245. br.Msg = "获取指标信息失败"
  246. br.ErrMsg = "获取指标信息失败,Err:" + err.Error()
  247. return
  248. }
  249. dataTmpList, err := data_manage.GetCCFIndexDataByCode(indexCode)
  250. if err != nil {
  251. br.Msg = "获取数据失败"
  252. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  253. return
  254. }
  255. var ret data_manage.CCFSingleDataResp
  256. var dataList []*data_manage.CCFSingleData
  257. ret.ClassifyId = indexInfo.ClassifyId
  258. ret.BaseFromCcfIndexId = indexInfo.BaseFromCcfIndexId
  259. ret.IndexCode = indexInfo.IndexCode
  260. ret.IndexName = indexInfo.IndexName
  261. ret.Frequency = indexInfo.Frequency
  262. ret.CreateTime = indexInfo.CreateTime.Format(utils.FormatDateTime)
  263. ret.ModifyTime = indexInfo.ModifyTime.Format(utils.FormatDateTime)
  264. ret.Unit = indexInfo.Unit
  265. for _, v := range dataTmpList {
  266. tmp := &data_manage.CCFSingleData{
  267. Value: v.Value,
  268. DataTime: v.DataTime,
  269. }
  270. dataList = append(dataList, tmp)
  271. }
  272. ret.Data = dataList
  273. br.Ret = 200
  274. br.Success = true
  275. br.Msg = "获取成功"
  276. br.Data = ret
  277. }
  278. // ExportCCFList
  279. // @Title 导出CCF数据
  280. // @Description 导出CCF数据
  281. // @Param IndexName query string false "名称关键词"
  282. // @Param IndexCode query string false "指标唯一编码"
  283. // @Param ClassifyId query string true "分类"
  284. // @Success 200 导出成功
  285. // @router /ccf/export [get]
  286. func (this *EdbInfoController) ExportCCFList() {
  287. br := new(models.BaseResponse).Init()
  288. defer func() {
  289. if br.ErrMsg == "" {
  290. br.IsSendEmail = false
  291. }
  292. this.Data["json"] = br
  293. this.ServeJSON()
  294. }()
  295. sysUser := this.SysUser
  296. if sysUser == nil {
  297. br.Msg = "请重新登录"
  298. return
  299. }
  300. indexCode := this.GetString("IndexCode") //指标唯一编码
  301. classifyId, _ := this.GetInt("ClassifyId")
  302. dir, _ := os.Executable()
  303. exPath := filepath.Dir(dir)
  304. downFile := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
  305. xlsxFile := xlsx.NewFile()
  306. var pars []interface{}
  307. condition := ""
  308. if classifyId > 0 {
  309. //获取指标
  310. condition += " AND classify_id=?"
  311. pars = append(pars, classifyId)
  312. }
  313. if indexCode != "" {
  314. //获取指标
  315. condition += " AND index_code=?"
  316. pars = append(pars, indexCode)
  317. }
  318. indexList, err := data_manage.GetCCFIndex(condition, pars)
  319. if err != nil {
  320. fmt.Println("获取数据失败,Err:" + err.Error())
  321. return
  322. }
  323. if len(indexList) <= 0 {
  324. fmt.Println("indexList 为空")
  325. br.Ret = 200
  326. br.Success = true
  327. br.Msg = "success"
  328. return
  329. }
  330. sheetNew := new(xlsx.Sheet)
  331. sheetNew, err = xlsxFile.AddSheet("CCF化纤")
  332. //sheetNew.SetColWidth()
  333. //获取指标数据
  334. windRow := sheetNew.AddRow()
  335. secNameRow := sheetNew.AddRow()
  336. indexCodeRow := sheetNew.AddRow()
  337. frequencyRow := sheetNew.AddRow()
  338. unitRow := sheetNew.AddRow()
  339. lastModifyDateRow := sheetNew.AddRow()
  340. //获取分类下指标最大数据量
  341. var dataMax int
  342. setRowIndex := 6
  343. indexCodeList := make([]string, 0)
  344. for _, v := range indexList {
  345. indexCodeList = append(indexCodeList, v.IndexCode)
  346. }
  347. dataListMap := make(map[string][]*data_manage.BaseFromCCFData)
  348. if len(indexList) > 0 {
  349. allDataList, e := data_manage.GetCCFIndexDataByCodes(indexCodeList)
  350. if e != nil {
  351. br.Msg = "获取数据失败"
  352. br.ErrMsg = "获取数据失败,Err:" + e.Error()
  353. return
  354. }
  355. for _, v := range allDataList {
  356. dataListMap[v.IndexCode] = append(dataListMap[v.IndexCode], v)
  357. }
  358. for _, v := range dataListMap {
  359. if len(v) > dataMax {
  360. dataMax = len(v)
  361. }
  362. }
  363. }
  364. for k, sv := range indexList {
  365. //获取数据
  366. dataList, ok := dataListMap[sv.IndexCode]
  367. if !ok {
  368. continue
  369. }
  370. if len(dataList) > 0 {
  371. windRow.AddCell().SetValue("CCF化纤")
  372. secNameRow.AddCell().SetValue("指标名称")
  373. indexCodeRow.AddCell().SetValue("指标ID")
  374. frequencyRow.AddCell().SetValue("频率")
  375. unitRow.AddCell().SetValue("单位")
  376. lastModifyDateRow.AddCell().SetValue("更新时间")
  377. secNameRow.AddCell().SetValue(sv.IndexName)
  378. indexCodeRow.AddCell().SetValue(sv.IndexCode)
  379. frequencyRow.AddCell().SetValue(sv.Frequency)
  380. unitRow.AddCell().SetValue(sv.Unit)
  381. lastModifyDateRow.AddCell().SetValue(sv.ModifyTime)
  382. windRow.AddCell()
  383. windRow.AddCell()
  384. secNameRow.AddCell()
  385. indexCodeRow.AddCell()
  386. frequencyRow.AddCell()
  387. unitRow.AddCell()
  388. lastModifyDateRow.AddCell()
  389. minCol := k * 3
  390. sheetNew.SetColWidth(minCol, minCol, 15)
  391. if len(dataList) <= 0 {
  392. for n := 0; n < dataMax; n++ {
  393. rowIndex := setRowIndex + n
  394. row := sheetNew.Row(rowIndex)
  395. row.AddCell()
  396. row.AddCell()
  397. row.AddCell()
  398. }
  399. } else {
  400. endRowIndex := 0
  401. for rk, dv := range dataList {
  402. rowIndex := setRowIndex + rk
  403. row := sheetNew.Row(rowIndex)
  404. displayDate, _ := time.Parse(utils.FormatDate, dv.DataTime)
  405. displayDateCell := row.AddCell()
  406. style := new(xlsx.Style)
  407. style.ApplyAlignment = true
  408. style.Alignment.WrapText = true
  409. displayDateCell.SetStyle(style)
  410. displayDateCell.SetDate(displayDate)
  411. row.AddCell().SetValue(dv.Value)
  412. row.AddCell()
  413. endRowIndex = rowIndex
  414. }
  415. if len(dataList) < dataMax {
  416. dataLen := dataMax - len(dataList)
  417. for n := 0; n < dataLen; n++ {
  418. rowIndex := (endRowIndex + 1) + n
  419. row := sheetNew.Row(rowIndex)
  420. row.AddCell()
  421. row.AddCell()
  422. row.AddCell()
  423. }
  424. }
  425. }
  426. }
  427. }
  428. err = xlsxFile.Save(downFile)
  429. if err != nil {
  430. //有指标无数据时先导出一遍空表
  431. sheet, err := xlsxFile.AddSheet("无数据")
  432. if err != nil {
  433. br.Msg = "新增Sheet失败"
  434. br.ErrMsg = "新增Sheet失败,Err:" + err.Error()
  435. return
  436. }
  437. rowSecName := sheet.AddRow()
  438. celSecName := rowSecName.AddCell()
  439. celSecName.SetValue("")
  440. err = xlsxFile.Save(downFile)
  441. if err != nil {
  442. br.Msg = "保存文件失败"
  443. br.ErrMsg = "保存文件失败"
  444. return
  445. }
  446. }
  447. fileName := `CCF化纤信息`
  448. //if len(indexList) > 0 {
  449. // fileName = indexList[0].IndexName
  450. //}
  451. fileName += time.Now().Format("06.01.02") + `.xlsx` //文件名称
  452. this.Ctx.Output.Download(downFile, fileName)
  453. defer func() {
  454. os.Remove(downFile)
  455. }()
  456. br.Ret = 200
  457. br.Success = true
  458. br.Msg = "success"
  459. }
  460. // CCFStockClassify
  461. // @Title CCF化纤信息-装置分类
  462. // @Description CCF化纤信息-装置分类
  463. // @Success 200 {object} data_manage.CCFStockClassify
  464. // @router /ccf/stock/classify [get]
  465. func (this *EdbInfoController) CCFStockClassify() {
  466. br := new(models.BaseResponse).Init()
  467. defer func() {
  468. if br.ErrMsg == "" {
  469. br.IsSendEmail = false
  470. }
  471. this.Data["json"] = br
  472. this.ServeJSON()
  473. }()
  474. sysUser := this.SysUser
  475. if sysUser == nil {
  476. br.Msg = "请登录"
  477. br.ErrMsg = "请登录,SysUser Is Empty"
  478. br.Ret = 408
  479. return
  480. }
  481. classifyOb := new(data_manage.CCFStockClassify)
  482. items, e := classifyOb.GetItemsByCondition(``, make([]interface{}, 0), []string{}, "ccf_stock_classify_id ASC")
  483. if e != nil {
  484. br.Msg = "获取失败"
  485. br.ErrMsg = "获取CCF化纤分类列表失败, Err: " + e.Error()
  486. return
  487. }
  488. resp := make([]*data_manage.CCFStockClassifyItem, 0)
  489. for _, v := range items {
  490. resp = append(resp, v.Format2Item())
  491. }
  492. br.Ret = 200
  493. br.Success = true
  494. br.Msg = "获取成功"
  495. br.Data = resp
  496. }
  497. // CCFStockTable
  498. // @Title CCF化纤信息-装置表格详情
  499. // @Description CCF化纤信息-装置表格详情
  500. // @Param ClassifyId query int true "分类ID"
  501. // @Param TableDate query string false "表格日期"
  502. // @Success 200 {object} data_manage.CCFStockExcel
  503. // @router /ccf/stock/table [get]
  504. func (this *EdbInfoController) CCFStockTable() {
  505. br := new(models.BaseResponse).Init()
  506. defer func() {
  507. if br.ErrMsg == "" {
  508. br.IsSendEmail = false
  509. }
  510. this.Data["json"] = br
  511. this.ServeJSON()
  512. }()
  513. sysUser := this.SysUser
  514. if sysUser == nil {
  515. br.Msg = "请登录"
  516. br.ErrMsg = "请登录,SysUser Is Empty"
  517. br.Ret = 408
  518. return
  519. }
  520. classifyId, _ := this.GetInt("ClassifyId", 0)
  521. tableDate := this.GetString("TableDate")
  522. if tableDate != "" {
  523. _, e := time.ParseInLocation(utils.FormatDate, tableDate, time.Local)
  524. if e != nil {
  525. br.Msg = "日期格式有误"
  526. return
  527. }
  528. }
  529. excelOb := new(data_manage.CCFStockExcel)
  530. cond := ``
  531. pars := make([]interface{}, 0)
  532. if classifyId > 0 {
  533. cond += fmt.Sprintf(` AND %s = ?`, excelOb.Cols().ClassifyId)
  534. pars = append(pars, classifyId)
  535. }
  536. if tableDate != "" {
  537. cond += fmt.Sprintf(` AND %s = ?`, excelOb.Cols().ExcelDate)
  538. pars = append(pars, tableDate)
  539. }
  540. // 若无tableDate默认取最近的有数据的表格
  541. item, e := excelOb.GetItemByCondition(cond, pars, fmt.Sprintf("%s DESC", excelOb.Cols().ExcelDate))
  542. if e != nil {
  543. if e.Error() == utils.ErrNoRow() {
  544. br.Ret = 200
  545. br.Success = true
  546. br.Msg = "该日期暂无数据"
  547. br.Data = data_manage.CCFStockExcel{}
  548. return
  549. }
  550. br.Msg = "获取失败"
  551. br.ErrMsg = "获取CCF化纤装置表格失败, Err: " + e.Error()
  552. return
  553. }
  554. resp := item.Format2Item()
  555. br.Ret = 200
  556. br.Success = true
  557. br.Msg = "获取成功"
  558. br.Data = resp
  559. }
  560. // CCFIndexBatchSearch
  561. // @Title CCF化纤信息指标查询
  562. // @Description CCF化纤信息指标查询
  563. // @Param ClassifyIds query string true "分类id, 多个分类用英文"
  564. // @Param Keyword query string true "关键词, 指标ID/指标名称"
  565. // @Success 200 {object} data_manage.LzFrequency
  566. // @router /ccf/batch_search [get]
  567. func (this *EdbInfoController) CCFIndexBatchSearch() {
  568. br := new(models.BaseResponse).Init()
  569. defer func() {
  570. this.Data["json"] = br
  571. this.ServeJSON()
  572. }()
  573. sysUser := this.SysUser
  574. if sysUser == nil {
  575. br.Msg = "请登录"
  576. br.ErrMsg = "请登录,SysUser Is Empty"
  577. br.Ret = 408
  578. return
  579. }
  580. classifyIdStr := this.GetString("ClassifyIds")
  581. pageSize, _ := this.GetInt("PageSize")
  582. currentIndex, _ := this.GetInt("CurrentIndex")
  583. var startSize int
  584. if pageSize <= 0 {
  585. pageSize = utils.PageSize20
  586. }
  587. if currentIndex <= 0 {
  588. currentIndex = 1
  589. }
  590. startSize = utils.StartIndex(currentIndex, pageSize)
  591. resp := data_manage.BaseFromCCFIndexSearchList{}
  592. total := 0
  593. page := paging.GetPaging(currentIndex, pageSize, total)
  594. var list = make([]*data_manage.BaseFromCCFIndexList, 0)
  595. var condition string
  596. var pars []interface{}
  597. classifyIds := strings.Split(classifyIdStr, ",")
  598. if len(classifyIds) > 0 && classifyIds[0] != `` {
  599. condition += " AND classify_id IN (" + utils.GetOrmInReplace(len(classifyIds)) + " ) "
  600. pars = append(pars, classifyIds)
  601. }
  602. keyword := this.GetString("Keyword")
  603. if keyword != `` {
  604. condition += " AND (index_name like ? OR index_code like ?) "
  605. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  606. }
  607. frequencies := this.GetString("Frequencies")
  608. if frequencies != "" {
  609. frequencyList := strings.Split(frequencies, ",")
  610. condition += " AND frequency IN (" + utils.GetOrmInReplace(len(frequencyList)) + " ) "
  611. pars = append(pars, frequencyList)
  612. }
  613. list, err := data_manage.GetCCFIndexPage(condition, pars, startSize, pageSize)
  614. if err != nil {
  615. br.Msg = "获取失败"
  616. br.ErrMsg = "获取失败,Err:" + err.Error()
  617. return
  618. }
  619. total, err = data_manage.GetCCFIndexPageCount(condition, pars)
  620. if err != nil {
  621. br.Msg = "获取数据失败"
  622. br.ErrMsg = "获取指标数据失败,Err:" + err.Error()
  623. return
  624. }
  625. page = paging.GetPaging(currentIndex, pageSize, total)
  626. resp.Paging = page
  627. resp.List = list
  628. br.Ret = 200
  629. br.Success = true
  630. br.Msg = "获取成功"
  631. br.Data = resp
  632. }
  633. // CCFIndexBatchAdd
  634. // @Title CCF化纤信息批量新增
  635. // @Description CCF化纤信息批量新增
  636. // @Param request body data_manage.AddEdbInfoReq true "type json string"
  637. // @Success 200 string "操作成功"
  638. // @router /ccf/batch_add [post]
  639. func (this *EdbInfoController) CCFIndexBatchAdd() {
  640. br := new(models.BaseResponse).Init()
  641. defer func() {
  642. if br.ErrMsg == "" {
  643. br.IsSendEmail = false
  644. }
  645. this.Data["json"] = br
  646. this.ServeJSON()
  647. }()
  648. sysUser := this.SysUser
  649. if sysUser == nil {
  650. br.Msg = "请登录"
  651. br.ErrMsg = "请登录,SysUser Is Empty"
  652. br.Ret = 408
  653. return
  654. }
  655. deleteCache := true
  656. cacheKey := "CACHE_EDB_INFO_BATCH_ADD_CCF_" + strconv.Itoa(sysUser.AdminId)
  657. defer func() {
  658. if deleteCache {
  659. _ = utils.Rc.Delete(cacheKey)
  660. }
  661. }()
  662. if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
  663. deleteCache = false
  664. br.Msg = "系统处理中,请稍后重试!"
  665. br.ErrMsg = "系统处理中,请稍后重试!" + sysUser.RealName + ";data:" + string(this.Ctx.Input.RequestBody)
  666. return
  667. }
  668. var req []*data_manage.AddEdbInfoReq
  669. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  670. br.Msg = "参数解析异常!"
  671. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  672. return
  673. }
  674. if len(req) == 0 {
  675. br.Msg = "请选择指标"
  676. return
  677. }
  678. if len(req) > 30 {
  679. br.Msg = "批量添加指标数量不得超过30个"
  680. return
  681. }
  682. for _, v := range req {
  683. v.EdbCode = strings.TrimSpace(v.EdbCode)
  684. if v.EdbCode == "" {
  685. br.Msg = "指标ID不可为空"
  686. return
  687. }
  688. v.EdbName = strings.TrimSpace(v.EdbName)
  689. if v.EdbName == "" {
  690. br.Msg = "请输入指标名称"
  691. return
  692. }
  693. v.Frequency = strings.TrimSpace(v.Frequency)
  694. if v.Frequency == "" {
  695. br.Msg = "请选择频度"
  696. return
  697. }
  698. v.Unit = strings.TrimSpace(v.Unit)
  699. if v.Unit == "" {
  700. br.Msg = "请输入单位"
  701. return
  702. }
  703. if v.ClassifyId <= 0 {
  704. br.Msg = "请选择分类"
  705. return
  706. }
  707. }
  708. // 限定同一时间最多批量新增30个指标
  709. for _, v := range req {
  710. var r data_manage.CCFIndexSource2EdbReq
  711. r.EdbCode = v.EdbCode
  712. r.EdbName = v.EdbName
  713. r.Frequency = v.Frequency
  714. r.Unit = v.Unit
  715. r.ClassifyId = v.ClassifyId
  716. r.AdminId = sysUser.AdminId
  717. r.AdminRealName = sysUser.RealName
  718. edbInfo, e, errMsg, skip := data.CCFIndexSource2Edb(r, this.Lang)
  719. if e != nil {
  720. br.Msg = "操作失败"
  721. if errMsg != "" {
  722. br.Msg = errMsg
  723. }
  724. br.ErrMsg = e.Error()
  725. return
  726. }
  727. if skip {
  728. continue
  729. }
  730. // 试用平台更新用户累计新增指标数
  731. if utils.BusinessCode == utils.BusinessCodeSandbox {
  732. go func() {
  733. adminItem, e := system.GetSysAdminById(sysUser.AdminId)
  734. if e != nil {
  735. tips := fmt.Sprintf("试用平台更新用户累计新增指标数-获取用户失败, Err: " + e.Error())
  736. utils.FileLog.Info(tips)
  737. return
  738. }
  739. if adminItem.DepartmentName != "ETA试用客户" {
  740. return
  741. }
  742. var ur etaTrialService.EtaTrialUserReq
  743. ur.Mobile = adminItem.Mobile
  744. _, _ = etaTrialService.UpdateUserIndexNum(ur)
  745. }()
  746. }
  747. // 新增操作日志
  748. {
  749. edbLog := new(data_manage.EdbInfoLog)
  750. edbLog.EdbInfoId = edbInfo.EdbInfoId
  751. edbLog.SourceName = edbInfo.SourceName
  752. edbLog.Source = edbInfo.Source
  753. edbLog.EdbCode = edbInfo.EdbCode
  754. edbLog.EdbName = edbInfo.EdbName
  755. edbLog.ClassifyId = edbInfo.ClassifyId
  756. edbLog.SysUserId = sysUser.AdminId
  757. edbLog.SysUserRealName = sysUser.RealName
  758. edbLog.CreateTime = time.Now()
  759. edbLog.Content = string(this.Ctx.Input.RequestBody)
  760. edbLog.Status = "新增指标"
  761. edbLog.Method = this.Ctx.Input.URI()
  762. go data_manage.AddEdbInfoLog(edbLog)
  763. }
  764. }
  765. br.Msg = "操作成功"
  766. br.Ret = 200
  767. br.Success = true
  768. br.IsAddLog = true
  769. }
  770. // CCFIndexNameCheck
  771. // @Title 加入指标库的重名检测
  772. // @Description 加入指标库的重名检测
  773. // @Param ClassifyIds query string true "分类id, 多个分类用英文"
  774. // @Param Keyword query string true "关键词, 指标ID/指标名称"
  775. // @Success 200 {object} NameCheckResult
  776. // @router /ccf/edb_info/name_check [post]
  777. func (this *EdbInfoController) CCFIndexNameCheck() {
  778. br := new(models.BaseResponse).Init()
  779. defer func() {
  780. if br.ErrMsg == "" {
  781. br.IsSendEmail = false
  782. }
  783. this.Data["json"] = br
  784. this.ServeJSON()
  785. }()
  786. sysUser := this.SysUser
  787. if sysUser == nil {
  788. br.Msg = "请登录"
  789. br.ErrMsg = "请登录,SysUser Is Empty"
  790. br.Ret = 408
  791. return
  792. }
  793. var req []*data_manage.NameCheckEdbInfoReq
  794. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  795. br.Msg = "参数解析异常!"
  796. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  797. return
  798. }
  799. if len(req) == 0 {
  800. br.Msg = "请选择指标"
  801. return
  802. }
  803. codeMaxT := 30
  804. codeLen := len(req)
  805. if codeLen > codeMaxT {
  806. br.Msg = fmt.Sprintf("最多只能选择%d个指标", codeMaxT)
  807. return
  808. }
  809. indexNames := make([]string, 0)
  810. resp := make([]*data_manage.EdbNameCheckResult, 0)
  811. for _, v := range req {
  812. v.EdbCode = strings.TrimSpace(v.EdbCode)
  813. if v.EdbCode == "" {
  814. br.Msg = "指标ID不可为空"
  815. return
  816. }
  817. v.EdbName = strings.TrimSpace(v.EdbName)
  818. if v.EdbName == "" {
  819. br.Msg = "请输入指标名称"
  820. return
  821. }
  822. indexNames = append(indexNames, v.EdbName)
  823. resp = append(resp, &data_manage.EdbNameCheckResult{
  824. EdbCode: v.EdbCode,
  825. EdbName: v.EdbName,
  826. })
  827. dataItems, err := data_manage.GetEdbDataAllByEdbCode(v.EdbCode, utils.DATA_SOURCE_CCF, 0, utils.EDB_DATA_LIMIT)
  828. if err != nil && err.Error() != utils.ErrNoRow() {
  829. br.Msg = "获取失败"
  830. br.ErrMsg = "获取钢联已存在信息失败,Err:" + err.Error()
  831. return
  832. }
  833. if len(dataItems) <= 0 {
  834. respItem, err := data.AddEdbData(utils.DATA_SOURCE_CCF, v.EdbCode, v.Frequency)
  835. if err != nil {
  836. br.Msg = "获取失败"
  837. br.ErrMsg = "获取失败,Err:" + err.Error()
  838. return
  839. }
  840. if respItem.Ret != 200 {
  841. br.Msg = "未搜索到该指标"
  842. br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + v.EdbCode
  843. return
  844. }
  845. }
  846. }
  847. // 重名校验
  848. edbList, e := data_manage.GetEdbInfoByNameArr(indexNames, utils.EDB_INFO_TYPE)
  849. if e != nil {
  850. br.Msg = "操作失败"
  851. br.ErrMsg = "获取重名指标失败, Err: " + e.Error()
  852. return
  853. }
  854. nameExists := make(map[string]bool)
  855. for _, v := range edbList {
  856. nameExists[v.EdbName] = true
  857. }
  858. if len(nameExists) > 0 {
  859. for _, v := range resp {
  860. v.Exist = nameExists[v.EdbName]
  861. }
  862. }
  863. br.Data = resp
  864. br.Msg = "校验成功"
  865. br.Ret = 200
  866. br.Success = true
  867. }
  868. // CCFAddCheck
  869. // @Title 加入指标库指标Id检测
  870. // @Description 加入指标库指标Id检测
  871. // @Param request body request.BatchAddCheckReq true "type json string"
  872. // @Success 200 string "操作成功"
  873. // @router /ccf/edb_info/add_check [post]
  874. func (c *EdbInfoController) CCFAddCheck() {
  875. br := new(models.BaseResponse).Init()
  876. defer func() {
  877. if br.ErrMsg == "" {
  878. br.IsSendEmail = false
  879. }
  880. c.Data["json"] = br
  881. c.ServeJSON()
  882. }()
  883. sysUser := c.SysUser
  884. if sysUser == nil {
  885. br.Msg = "请登录"
  886. br.ErrMsg = "请登录,SysUser Is Empty"
  887. br.Ret = 408
  888. return
  889. }
  890. var req data_manage.BatchAddCheckReq
  891. if e := json.Unmarshal(c.Ctx.Input.RequestBody, &req); e != nil {
  892. br.Msg = "参数解析异常!"
  893. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  894. return
  895. }
  896. codeMaxT := 30
  897. codeLen := len(req.IndexCodes)
  898. // 获取指标库已有指标
  899. existsEdb, e := data_manage.GetEdbCodesBySource(utils.DATA_SOURCE_CCF)
  900. if e != nil {
  901. br.Msg = "获取失败"
  902. br.ErrMsg = "获取自有数据已添加的指标失败, Err: " + e.Error()
  903. return
  904. }
  905. existMap := make(map[string]*data_manage.EdbInfo)
  906. for _, v := range existsEdb {
  907. existMap[v.EdbCode] = v
  908. }
  909. if codeLen == 0 {
  910. br.Msg = "请选择指标"
  911. return
  912. }
  913. if codeLen > codeMaxT {
  914. br.Msg = fmt.Sprintf("最多只能选择%d个指标", codeMaxT)
  915. return
  916. }
  917. // 查询选中的指标
  918. cond := fmt.Sprintf(` AND index_code IN (%s)`, utils.GetOrmInReplace(codeLen))
  919. pars := make([]interface{}, 0)
  920. pars = append(pars, req.IndexCodes)
  921. list, err := data_manage.GetCCFIndex(cond, pars)
  922. if err != nil {
  923. br.Msg = "获取失败"
  924. br.ErrMsg = "获取钢联已存在信息失败,Err:" + err.Error()
  925. return
  926. }
  927. if len(list) > codeMaxT {
  928. br.Msg = fmt.Sprintf("最多只能选择%d个指标", codeMaxT)
  929. return
  930. }
  931. resp := make([]*data_manage.BaseFromCCFIndexList, 0)
  932. for _, v := range list {
  933. if edb, ok := existMap[v.IndexCode]; ok {
  934. v.EdbInfoId = edb.EdbInfoId
  935. v.EdbClassifyId = edb.ClassifyId
  936. v.EdbUniqueCode = edb.UniqueCode
  937. v.EdbExist = 1
  938. }
  939. resp = append(resp, v)
  940. }
  941. br.Data = resp
  942. br.Msg = "校验成功"
  943. br.Ret = 200
  944. br.Success = true
  945. }
  946. // CCFEdbInfoAdd
  947. // @Title 新增指标接口
  948. // @Description 新增指标接口
  949. // @Param request body data_manage.AddEdbInfoReq true "type json string"
  950. // @Success Ret=200 保存成功
  951. // @router /ccf/edb_info/add [post]
  952. func (this *EdbInfoController) CCFEdbInfoAdd() {
  953. br := new(models.BaseResponse).Init()
  954. defer func() {
  955. this.Data["json"] = br
  956. this.ServeJSON()
  957. }()
  958. sysUser := this.SysUser
  959. if sysUser == nil {
  960. br.Msg = "请登录"
  961. br.ErrMsg = "请登录,SysUser Is Empty"
  962. br.Ret = 408
  963. return
  964. }
  965. deleteCache := true
  966. cacheKey := "CACHE_EDB_INFO_ADD_" + strconv.Itoa(sysUser.AdminId)
  967. defer func() {
  968. if deleteCache {
  969. utils.Rc.Delete(cacheKey)
  970. }
  971. }()
  972. if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
  973. deleteCache = false
  974. br.Msg = "系统处理中,请稍后重试!"
  975. br.ErrMsg = "系统处理中,请稍后重试!" + sysUser.RealName + ";data:" + string(this.Ctx.Input.RequestBody)
  976. return
  977. }
  978. var req data_manage.AddEdbInfoReq
  979. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  980. if err != nil {
  981. br.Msg = "参数解析异常!"
  982. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  983. return
  984. }
  985. req.EdbName = strings.Trim(req.EdbName, " ")
  986. req.EdbCode = strings.Trim(req.EdbCode, " ")
  987. if req.EdbCode == "" {
  988. br.Msg = "指标ID不能为空"
  989. return
  990. }
  991. if req.EdbName == "" {
  992. br.Msg = "指标名称不能为空"
  993. return
  994. }
  995. if req.Frequency == "" {
  996. br.Msg = "频率不能为空"
  997. return
  998. }
  999. if req.Unit == "" {
  1000. br.Msg = "单位不能为空"
  1001. return
  1002. }
  1003. if req.ClassifyId <= 0 {
  1004. br.Msg = "请选择分类"
  1005. return
  1006. }
  1007. count, err := data_manage.GetCCFIndexDataCount(req.EdbCode)
  1008. if err != nil {
  1009. br.Msg = "获取失败"
  1010. br.ErrMsg = "获取失败,Err:" + err.Error()
  1011. return
  1012. }
  1013. if count == 0 {
  1014. br.Msg = "指标不存在"
  1015. }
  1016. // 指标入库
  1017. edbInfo, err, errMsg, isSendEmail := data.EdbInfoAdd(utils.DATA_SOURCE_CCF, 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)
  1018. if err != nil {
  1019. br.Msg = "保存失败"
  1020. if errMsg != `` {
  1021. br.Msg = errMsg
  1022. }
  1023. br.ErrMsg = err.Error()
  1024. br.IsSendEmail = isSendEmail
  1025. return
  1026. }
  1027. // 试用平台更新用户累计新增指标数
  1028. adminItem, e := system.GetSysAdminById(sysUser.AdminId)
  1029. if e != nil {
  1030. br.Msg = "操作失败"
  1031. br.ErrMsg = "获取系统用户数据失败,Err:" + e.Error()
  1032. return
  1033. }
  1034. if utils.BusinessCode == utils.BusinessCodeSandbox && adminItem.DepartmentName == "ETA试用客户" {
  1035. go func() {
  1036. var r etaTrialService.EtaTrialUserReq
  1037. r.Mobile = adminItem.Mobile
  1038. _, _ = etaTrialService.UpdateUserIndexNum(r)
  1039. }()
  1040. }
  1041. //新增操作日志
  1042. {
  1043. edbLog := new(data_manage.EdbInfoLog)
  1044. edbLog.EdbInfoId = edbInfo.EdbInfoId
  1045. edbLog.SourceName = edbInfo.SourceName
  1046. edbLog.Source = edbInfo.Source
  1047. edbLog.EdbCode = edbInfo.EdbCode
  1048. edbLog.EdbName = edbInfo.EdbName
  1049. edbLog.ClassifyId = edbInfo.ClassifyId
  1050. edbLog.SysUserId = sysUser.AdminId
  1051. edbLog.SysUserRealName = sysUser.RealName
  1052. edbLog.CreateTime = time.Now()
  1053. edbLog.Content = string(this.Ctx.Input.RequestBody)
  1054. edbLog.Status = "新增指标"
  1055. edbLog.Method = this.Ctx.Input.URI()
  1056. go data_manage.AddEdbInfoLog(edbLog)
  1057. }
  1058. // 更新es
  1059. go data.AddOrEditEdbInfoToEs(edbInfo.EdbInfoId)
  1060. resp := new(data_manage.AddEdbInfoResp)
  1061. resp.EdbInfoId = edbInfo.EdbInfoId
  1062. resp.UniqueCode = edbInfo.UniqueCode
  1063. br.Ret = 200
  1064. br.Success = true
  1065. br.Msg = "保存成功"
  1066. br.Data = resp
  1067. br.IsAddLog = true
  1068. }
  1069. // GetFrequency
  1070. // @Title CCF化纤信息数据频度
  1071. // @Description CCF化纤信息数据频度接口
  1072. // @Param ClassifyId query string true "分类Id"
  1073. // @Success 200 {object} data_manage.LzFrequency
  1074. // @router /ccf/frequency [get]
  1075. func (this *EdbInfoController) GetCCFFrequency() {
  1076. br := new(models.BaseResponse).Init()
  1077. defer func() {
  1078. this.Data["json"] = br
  1079. this.ServeJSON()
  1080. }()
  1081. sysUser := this.SysUser
  1082. if sysUser == nil {
  1083. br.Msg = "请登录"
  1084. br.ErrMsg = "请登录,SysUser Is Empty"
  1085. br.Ret = 408
  1086. return
  1087. }
  1088. classifyId, _ := this.GetInt("ClassifyId")
  1089. if classifyId < 0 {
  1090. br.Msg = "请选择分类"
  1091. br.ErrMsg = "请选择分类"
  1092. return
  1093. }
  1094. frequencyList, err := data_manage.GetCCFFrequencyByClassifyId(classifyId)
  1095. if err != nil {
  1096. br.Msg = "获取频度失败"
  1097. br.ErrMsg = "获取频度失败,Err:" + err.Error()
  1098. return
  1099. }
  1100. br.Ret = 200
  1101. br.Success = true
  1102. br.Msg = "获取成功"
  1103. br.Data = frequencyList
  1104. }
  1105. // BatchAddEdbCheck
  1106. // @Title 新增校验
  1107. // @Description 新增校验
  1108. // @Param request body data_manage.BatchManualEdbReq true "type json string"
  1109. // @Success 200 string "操作成功"
  1110. // @router /ccf/batch/add/check [post]
  1111. func (c *EdbInfoController) BatchAddEdbCheck() {
  1112. br := new(models.BaseResponse).Init()
  1113. defer func() {
  1114. if br.ErrMsg == "" {
  1115. br.IsSendEmail = false
  1116. }
  1117. c.Data["json"] = br
  1118. c.ServeJSON()
  1119. }()
  1120. sysUser := c.SysUser
  1121. if sysUser == nil {
  1122. br.Msg = "请登录"
  1123. br.ErrMsg = "请登录,SysUser Is Empty"
  1124. br.Ret = 408
  1125. return
  1126. }
  1127. // 最大批量添加的数量
  1128. codeMaxT := 31
  1129. var req data_manage.BatchCheckCCFEdbReq
  1130. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  1131. if err != nil {
  1132. br.Msg = "参数错误"
  1133. br.ErrMsg = "参数错误,Err:" + err.Error()
  1134. return
  1135. }
  1136. req.Keyword = strings.TrimSpace(req.Keyword)
  1137. classifyIdStr := req.ClassifyIds
  1138. var list = make([]*data_manage.BaseFromCCFIndexList, 0)
  1139. var condition string
  1140. var pars []interface{}
  1141. if req.ListAll {
  1142. classifyIds := strings.Split(classifyIdStr, ",")
  1143. if len(classifyIds) > 0 && classifyIds[0] != `` {
  1144. condition += " AND classify_id IN (" + utils.GetOrmInReplace(len(classifyIds)) + " ) "
  1145. pars = append(pars, classifyIds)
  1146. }
  1147. keyword := req.Keyword
  1148. if keyword != `` {
  1149. condition += " AND (index_name like ? OR index_code like ?) "
  1150. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  1151. }
  1152. frequencies := req.Frequencies
  1153. if frequencies != "" {
  1154. frequencyList := strings.Split(frequencies, ",")
  1155. condition += " AND frequency IN (" + utils.GetOrmInReplace(len(frequencyList)) + " ) "
  1156. pars = append(pars, frequencyList)
  1157. }
  1158. codes := req.TradeCodeList
  1159. codeList := make([]string, 0)
  1160. if codes != "" {
  1161. codeList = strings.Split(codes, ",")
  1162. }
  1163. if len(codeList) > 0 {
  1164. condition += ` AND index_code not in (` + utils.GetOrmInReplace(len(codeList)) + `) `
  1165. pars = append(pars, codeList)
  1166. }
  1167. } else {
  1168. codes := req.TradeCodeList
  1169. codeList := make([]string, 0)
  1170. if codes != "" {
  1171. codeList = strings.Split(codes, ",")
  1172. }
  1173. if len(codeList) <= 0 {
  1174. br.Msg = "请选择指标"
  1175. br.ErrMsg = "请选择指标"
  1176. return
  1177. }
  1178. // 指标
  1179. condition += ` AND index_code in (` + utils.GetOrmInReplace(len(codeList)) + `) `
  1180. pars = append(pars, codeList)
  1181. }
  1182. condition += ` AND index_code not in (SELECT edb_code FROM edb_info WHERE source=?) `
  1183. pars = append(pars, utils.DATA_SOURCE_CCF)
  1184. list, err = data_manage.GetCCFIndexPage(condition, pars, 0, codeMaxT)
  1185. if err != nil {
  1186. br.Msg = "获取失败"
  1187. br.ErrMsg = "获取失败,Err:" + err.Error()
  1188. return
  1189. }
  1190. if len(list) >= codeMaxT {
  1191. br.Msg = "最多只能添加" + strconv.Itoa(codeMaxT) + "条数据"
  1192. return
  1193. }
  1194. br.Data = list
  1195. br.Msg = "校验成功"
  1196. br.Ret = 200
  1197. br.Success = true
  1198. }