ccf_data.go 33 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289
  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. // todo 验证下面三个字段的用处
  936. //v.EdbClassifyId = edb.ClassifyId
  937. //v.EdbUniqueCode = edb.UniqueCode
  938. //v.EdbExist = 1
  939. }
  940. resp = append(resp, v)
  941. }
  942. br.Data = resp
  943. br.Msg = "校验成功"
  944. br.Ret = 200
  945. br.Success = true
  946. }
  947. // CCFEdbInfoAdd
  948. // @Title 新增指标接口
  949. // @Description 新增指标接口
  950. // @Param request body data_manage.AddEdbInfoReq true "type json string"
  951. // @Success Ret=200 保存成功
  952. // @router /ccf/edb_info/add [post]
  953. func (this *EdbInfoController) CCFEdbInfoAdd() {
  954. br := new(models.BaseResponse).Init()
  955. defer func() {
  956. this.Data["json"] = br
  957. this.ServeJSON()
  958. }()
  959. sysUser := this.SysUser
  960. if sysUser == nil {
  961. br.Msg = "请登录"
  962. br.ErrMsg = "请登录,SysUser Is Empty"
  963. br.Ret = 408
  964. return
  965. }
  966. deleteCache := true
  967. cacheKey := "CACHE_EDB_INFO_ADD_" + strconv.Itoa(sysUser.AdminId)
  968. defer func() {
  969. if deleteCache {
  970. utils.Rc.Delete(cacheKey)
  971. }
  972. }()
  973. if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
  974. deleteCache = false
  975. br.Msg = "系统处理中,请稍后重试!"
  976. br.ErrMsg = "系统处理中,请稍后重试!" + sysUser.RealName + ";data:" + string(this.Ctx.Input.RequestBody)
  977. return
  978. }
  979. var req data_manage.AddEdbInfoReq
  980. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  981. if err != nil {
  982. br.Msg = "参数解析异常!"
  983. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  984. return
  985. }
  986. req.EdbName = strings.Trim(req.EdbName, " ")
  987. req.EdbCode = strings.Trim(req.EdbCode, " ")
  988. if req.EdbCode == "" {
  989. br.Msg = "指标ID不能为空"
  990. return
  991. }
  992. if req.EdbName == "" {
  993. br.Msg = "指标名称不能为空"
  994. return
  995. }
  996. if req.Frequency == "" {
  997. br.Msg = "频率不能为空"
  998. return
  999. }
  1000. if req.Unit == "" {
  1001. br.Msg = "单位不能为空"
  1002. return
  1003. }
  1004. if req.ClassifyId <= 0 {
  1005. br.Msg = "请选择分类"
  1006. return
  1007. }
  1008. count, err := data_manage.GetCCFIndexDataCount(req.EdbCode)
  1009. if err != nil {
  1010. br.Msg = "获取失败"
  1011. br.ErrMsg = "获取失败,Err:" + err.Error()
  1012. return
  1013. }
  1014. if count == 0 {
  1015. br.Msg = "指标不存在"
  1016. }
  1017. // 指标入库
  1018. 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)
  1019. if err != nil {
  1020. br.Msg = "保存失败"
  1021. if errMsg != `` {
  1022. br.Msg = errMsg
  1023. }
  1024. br.ErrMsg = err.Error()
  1025. br.IsSendEmail = isSendEmail
  1026. return
  1027. }
  1028. // 试用平台更新用户累计新增指标数
  1029. adminItem, e := system.GetSysAdminById(sysUser.AdminId)
  1030. if e != nil {
  1031. br.Msg = "操作失败"
  1032. br.ErrMsg = "获取系统用户数据失败,Err:" + e.Error()
  1033. return
  1034. }
  1035. if utils.BusinessCode == utils.BusinessCodeSandbox && adminItem.DepartmentName == "ETA试用客户" {
  1036. go func() {
  1037. var r etaTrialService.EtaTrialUserReq
  1038. r.Mobile = adminItem.Mobile
  1039. _, _ = etaTrialService.UpdateUserIndexNum(r)
  1040. }()
  1041. }
  1042. //新增操作日志
  1043. {
  1044. edbLog := new(data_manage.EdbInfoLog)
  1045. edbLog.EdbInfoId = edbInfo.EdbInfoId
  1046. edbLog.SourceName = edbInfo.SourceName
  1047. edbLog.Source = edbInfo.Source
  1048. edbLog.EdbCode = edbInfo.EdbCode
  1049. edbLog.EdbName = edbInfo.EdbName
  1050. edbLog.ClassifyId = edbInfo.ClassifyId
  1051. edbLog.SysUserId = sysUser.AdminId
  1052. edbLog.SysUserRealName = sysUser.RealName
  1053. edbLog.CreateTime = time.Now()
  1054. edbLog.Content = string(this.Ctx.Input.RequestBody)
  1055. edbLog.Status = "新增指标"
  1056. edbLog.Method = this.Ctx.Input.URI()
  1057. go data_manage.AddEdbInfoLog(edbLog)
  1058. }
  1059. // 更新es
  1060. go data.AddOrEditEdbInfoToEs(edbInfo.EdbInfoId)
  1061. resp := new(data_manage.AddEdbInfoResp)
  1062. resp.EdbInfoId = edbInfo.EdbInfoId
  1063. resp.UniqueCode = edbInfo.UniqueCode
  1064. br.Ret = 200
  1065. br.Success = true
  1066. br.Msg = "保存成功"
  1067. br.Data = resp
  1068. br.IsAddLog = true
  1069. }
  1070. // GetFrequency
  1071. // @Title CCF化纤信息数据频度
  1072. // @Description CCF化纤信息数据频度接口
  1073. // @Param ClassifyId query string true "分类Id"
  1074. // @Success 200 {object} data_manage.LzFrequency
  1075. // @router /ccf/frequency [get]
  1076. func (this *EdbInfoController) GetCCFFrequency() {
  1077. br := new(models.BaseResponse).Init()
  1078. defer func() {
  1079. this.Data["json"] = br
  1080. this.ServeJSON()
  1081. }()
  1082. sysUser := this.SysUser
  1083. if sysUser == nil {
  1084. br.Msg = "请登录"
  1085. br.ErrMsg = "请登录,SysUser Is Empty"
  1086. br.Ret = 408
  1087. return
  1088. }
  1089. classifyId, _ := this.GetInt("ClassifyId")
  1090. if classifyId < 0 {
  1091. br.Msg = "请选择分类"
  1092. br.ErrMsg = "请选择分类"
  1093. return
  1094. }
  1095. frequencyList, err := data_manage.GetCCFFrequencyByClassifyId(classifyId)
  1096. if err != nil {
  1097. br.Msg = "获取频度失败"
  1098. br.ErrMsg = "获取频度失败,Err:" + err.Error()
  1099. return
  1100. }
  1101. br.Ret = 200
  1102. br.Success = true
  1103. br.Msg = "获取成功"
  1104. br.Data = frequencyList
  1105. }
  1106. // BatchAddEdbCheck
  1107. // @Title 新增校验
  1108. // @Description 新增校验
  1109. // @Param request body data_manage.BatchManualEdbReq true "type json string"
  1110. // @Success 200 string "操作成功"
  1111. // @router /ccf/batch/add/check [post]
  1112. func (c *EdbInfoController) BatchAddEdbCheck() {
  1113. br := new(models.BaseResponse).Init()
  1114. defer func() {
  1115. if br.ErrMsg == "" {
  1116. br.IsSendEmail = false
  1117. }
  1118. c.Data["json"] = br
  1119. c.ServeJSON()
  1120. }()
  1121. sysUser := c.SysUser
  1122. if sysUser == nil {
  1123. br.Msg = "请登录"
  1124. br.ErrMsg = "请登录,SysUser Is Empty"
  1125. br.Ret = 408
  1126. return
  1127. }
  1128. // 最大批量添加的数量
  1129. codeMaxT := 31
  1130. var req data_manage.BatchCheckCCFEdbReq
  1131. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  1132. if err != nil {
  1133. br.Msg = "参数错误"
  1134. br.ErrMsg = "参数错误,Err:" + err.Error()
  1135. return
  1136. }
  1137. req.Keyword = strings.TrimSpace(req.Keyword)
  1138. classifyIdStr := req.ClassifyIds
  1139. var list = make([]*data_manage.BaseFromCCFIndexList, 0)
  1140. var condition string
  1141. var pars []interface{}
  1142. if req.ListAll {
  1143. classifyIds := strings.Split(classifyIdStr, ",")
  1144. if len(classifyIds) > 0 && classifyIds[0] != `` {
  1145. condition += " AND classify_id IN (" + utils.GetOrmInReplace(len(classifyIds)) + " ) "
  1146. pars = append(pars, classifyIds)
  1147. }
  1148. keyword := req.Keyword
  1149. if keyword != `` {
  1150. condition += " AND (index_name like ? OR index_code like ?) "
  1151. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  1152. }
  1153. frequencies := req.Frequencies
  1154. if frequencies != "" {
  1155. frequencyList := strings.Split(frequencies, ",")
  1156. condition += " AND frequency IN (" + utils.GetOrmInReplace(len(frequencyList)) + " ) "
  1157. pars = append(pars, frequencyList)
  1158. }
  1159. codes := req.TradeCodeList
  1160. codeList := make([]string, 0)
  1161. if codes != "" {
  1162. codeList = strings.Split(codes, ",")
  1163. }
  1164. if len(codeList) > 0 {
  1165. condition += ` AND index_code not in (` + utils.GetOrmInReplace(len(codeList)) + `) `
  1166. pars = append(pars, codeList)
  1167. }
  1168. } else {
  1169. codes := req.TradeCodeList
  1170. codeList := make([]string, 0)
  1171. if codes != "" {
  1172. codeList = strings.Split(codes, ",")
  1173. }
  1174. if len(codeList) <= 0 {
  1175. br.Msg = "请选择指标"
  1176. br.ErrMsg = "请选择指标"
  1177. return
  1178. }
  1179. // 指标
  1180. condition += ` AND index_code in (` + utils.GetOrmInReplace(len(codeList)) + `) `
  1181. pars = append(pars, codeList)
  1182. }
  1183. condition += ` AND index_code not in (SELECT edb_code FROM edb_info WHERE source=?) `
  1184. pars = append(pars, utils.DATA_SOURCE_CCF)
  1185. list, err = data_manage.GetCCFIndexPage(condition, pars, 0, codeMaxT)
  1186. if err != nil {
  1187. br.Msg = "获取失败"
  1188. br.ErrMsg = "获取失败,Err:" + err.Error()
  1189. return
  1190. }
  1191. if len(list) >= codeMaxT {
  1192. br.Msg = "最多只能添加" + strconv.Itoa(codeMaxT) + "条数据"
  1193. return
  1194. }
  1195. br.Data = list
  1196. br.Msg = "校验成功"
  1197. br.Ret = 200
  1198. br.Success = true
  1199. }