edb_info_refresh.go 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818
  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/data_manage/edb_refresh"
  7. "eta/eta_api/models/data_manage/edb_refresh/request"
  8. "eta/eta_api/utils"
  9. "fmt"
  10. "github.com/rdlucklib/rdluck_tools/paging"
  11. "strings"
  12. "time"
  13. )
  14. // RefreshSourceList
  15. // @Title 获取指标刷新配置的来源接口
  16. // @Description 获取指标刷新配置的来源接口
  17. // @Success Ret=200 获取成功
  18. // @router /edb_info/refresh/source_list [get]
  19. func (c *EdbInfoController) RefreshSourceList() {
  20. br := new(models.BaseResponse).Init()
  21. defer func() {
  22. c.Data["json"] = br
  23. c.ServeJSON()
  24. }()
  25. item := edb_refresh.EdbRefreshSource{}
  26. tmpList, err := item.GetAllList()
  27. if err != nil {
  28. br.Msg = "获取失败"
  29. br.ErrMsg = "获取刷新数据源失败, Err: " + err.Error()
  30. return
  31. }
  32. list := make([]edb_refresh.EdbRefreshSourceList, 0)
  33. tmpMap := make(map[int]edb_refresh.EdbRefreshSourceList, 0)
  34. for _, v := range tmpList {
  35. tmp, ok := tmpMap[v.Source]
  36. if ok {
  37. continue
  38. }
  39. tmp = edb_refresh.EdbRefreshSourceList{
  40. Source: v.Source,
  41. SourceName: v.SourceName,
  42. //SubSource: v.SubSource,
  43. //SubSourceName: v.SubSourceName,
  44. Child: make([]edb_refresh.EdbRefreshSourceList, 0),
  45. HasChild: v.HasChild,
  46. }
  47. if v.HasChild == 1 {
  48. for _, v2 := range tmpList {
  49. if v2.Source == v.Source {
  50. tmp.Child = append(tmp.Child, edb_refresh.EdbRefreshSourceList{
  51. Source: v.Source,
  52. SourceName: v.SourceName,
  53. SubSource: v.SubSource,
  54. SubSourceName: v.SubSourceName,
  55. HasChild: 0,
  56. })
  57. }
  58. }
  59. }
  60. tmpMap[v.Source] = tmp
  61. list = append(list, tmp)
  62. }
  63. br.Ret = 200
  64. br.Success = true
  65. br.Msg = "获取成功"
  66. br.Data = list
  67. }
  68. // RefreshClassifyList
  69. // @Title 获取指标分类列表接口
  70. // @Description 获取指标分类列表接口
  71. // @Param Source query int true "来源:1:同花顺,2:wind,3:彭博"
  72. // @Success Ret=200 获取成功
  73. // @router /edb_info/refresh/classify_list [get]
  74. func (c *EdbInfoController) RefreshClassifyList() {
  75. br := new(models.BaseResponse).Init()
  76. defer func() {
  77. c.Data["json"] = br
  78. c.ServeJSON()
  79. }()
  80. source, _ := c.GetInt("Source", utils.DATA_SOURCE_MYSTEEL_CHEMICAL)
  81. list := make([]*edb_refresh.BaseClassifyItems, 0)
  82. switch source {
  83. case utils.DATA_SOURCE_MYSTEEL_CHEMICAL: // 钢联
  84. rootList, err := data_manage.GetBaseFromMysteelChemicalClassifyByParentId(0)
  85. if err != nil && err.Error() != utils.ErrNoRow() {
  86. br.Msg = "获取失败"
  87. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  88. return
  89. }
  90. classifyAll, err := data_manage.GetAllBaseFromMysteelChemicalClassify()
  91. if err != nil && err.Error() != utils.ErrNoRow() {
  92. br.Msg = "获取失败"
  93. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  94. return
  95. }
  96. rootChildMap := make(map[int][]*edb_refresh.BaseClassifyItems)
  97. for _, v := range classifyAll {
  98. //tmpList, ok := rootChildMap[v.ParentId]
  99. //if !ok {
  100. // tmpList = make([]data_manage.BaseClassifyItems, 0)
  101. //}
  102. //tmpList = append(tmpList, data_manage.BaseClassifyItems{
  103. // ClassifyId: v.BaseFromMysteelChemicalClassifyId,
  104. // ClassifyName: v.ClassifyName,
  105. // ParentId: v.ParentId,
  106. // UniqueCode: fmt.Sprint(v.BaseFromMysteelChemicalClassifyId),
  107. // Children: nil,
  108. //})
  109. //rootChildMap[v.ParentId] = tmpList
  110. rootChildMap[v.ParentId] = append(rootChildMap[v.ParentId], &edb_refresh.BaseClassifyItems{
  111. ClassifyId: v.BaseFromMysteelChemicalClassifyId,
  112. ClassifyName: v.ClassifyName,
  113. ParentId: v.ParentId,
  114. UniqueCode: fmt.Sprint(v.BaseFromMysteelChemicalClassifyId),
  115. Children: nil,
  116. })
  117. }
  118. for _, v := range rootList {
  119. tmp := &edb_refresh.BaseClassifyItems{
  120. ClassifyId: v.BaseFromMysteelChemicalClassifyId,
  121. ClassifyName: v.ClassifyName,
  122. ParentId: v.ParentId,
  123. UniqueCode: fmt.Sprint(v.BaseFromMysteelChemicalClassifyId),
  124. Children: nil,
  125. }
  126. if existItems, ok := rootChildMap[v.BaseFromMysteelChemicalClassifyId]; ok {
  127. tmp.Children = existItems
  128. } else {
  129. items := make([]*edb_refresh.BaseClassifyItems, 0)
  130. tmp.Children = items
  131. }
  132. list = append(list, tmp)
  133. }
  134. case utils.DATA_SOURCE_YS: // 有色
  135. list = append(list, &edb_refresh.BaseClassifyItems{
  136. ClassifyId: 0,
  137. ClassifyName: "未分类",
  138. ParentId: 0,
  139. UniqueCode: fmt.Sprint(0),
  140. Children: nil,
  141. })
  142. rootList, err := data_manage.GetBaseFromSmmClassifyByParentId(0)
  143. if err != nil && err.Error() != utils.ErrNoRow() {
  144. br.Msg = "获取失败"
  145. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  146. return
  147. }
  148. classifyAll, err := data_manage.GetAllBaseFromSmmClassify()
  149. if err != nil && err.Error() != utils.ErrNoRow() {
  150. br.Msg = "获取失败"
  151. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  152. return
  153. }
  154. rootChildMap := make(map[int][]*edb_refresh.BaseClassifyItems)
  155. for _, v := range classifyAll {
  156. rootChildMap[v.ParentId] = append(rootChildMap[v.ParentId], &edb_refresh.BaseClassifyItems{
  157. ClassifyId: v.ClassifyId,
  158. ClassifyName: v.ClassifyName,
  159. ParentId: v.ParentId,
  160. UniqueCode: fmt.Sprint(v.ClassifyId),
  161. Children: nil,
  162. })
  163. }
  164. for _, v := range rootList {
  165. tmp := &edb_refresh.BaseClassifyItems{
  166. ClassifyId: v.ClassifyId,
  167. ClassifyName: v.ClassifyName,
  168. ParentId: v.ParentId,
  169. UniqueCode: fmt.Sprint(v.ClassifyId),
  170. Children: nil,
  171. }
  172. if existItems, ok := rootChildMap[v.ClassifyId]; ok {
  173. tmp.Children = existItems
  174. } else {
  175. items := make([]*edb_refresh.BaseClassifyItems, 0)
  176. tmp.Children = items
  177. }
  178. list = append(list, tmp)
  179. }
  180. default:
  181. tmpList, err := data_manage.GetAllEdbClassify()
  182. if err != nil && err.Error() != utils.ErrNoRow() {
  183. br.Msg = "获取失败"
  184. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  185. return
  186. }
  187. for _, v := range tmpList {
  188. list = append(list, &edb_refresh.BaseClassifyItems{
  189. ClassifyId: v.ClassifyId,
  190. ClassifyName: v.ClassifyName,
  191. ParentId: v.ParentId,
  192. UniqueCode: fmt.Sprint(v.ClassifyId),
  193. Children: nil,
  194. })
  195. }
  196. list = buildTree(list, 0)
  197. //fmt.Println(result)
  198. }
  199. br.Ret = 200
  200. br.Success = true
  201. br.Msg = "获取成功"
  202. br.Data = list
  203. }
  204. // 生成多层级列表的递归函数
  205. func buildTree(items []*edb_refresh.BaseClassifyItems, parentId int) []*edb_refresh.BaseClassifyItems {
  206. var result []*edb_refresh.BaseClassifyItems
  207. // 遍历所有分类项
  208. for i := range items {
  209. // 找到当前节点的子节点
  210. if items[i].ParentId == parentId {
  211. // 递归构建子节点的子节点
  212. items[i].Children = buildTree(items, items[i].ClassifyId)
  213. // 将当前节点添加到结果中
  214. result = append(result, items[i])
  215. }
  216. }
  217. return result
  218. }
  219. // RefreshEdbList
  220. // @Title 获取待配置的指标列表接口
  221. // @Description 获取待配置的指标列表接口
  222. // @Param Source query int true "来源:1:同花顺,2:wind,3:彭博"
  223. // @Param SubSource query int true "来源:0:经济数据库,1:日期序列"
  224. // @Param ClassifyId query int false "分类ID"
  225. // @Param TerminalCode query string false "终端编码"
  226. // @Param SysUserId query string false "创建人"
  227. // @Param Frequency query string false "频度"
  228. // @Param Keyword query string false "关键词"
  229. // @Success 200 {object} data_manage.RefreshBaseEdbInfoResp
  230. // @router /edb_info/refresh/edb_list [get]
  231. func (c *EdbInfoController) RefreshEdbList() {
  232. br := new(models.BaseResponse).Init()
  233. defer func() {
  234. c.Data["json"] = br
  235. c.ServeJSON()
  236. }()
  237. source, _ := c.GetInt("Source")
  238. subSource, _ := c.GetInt("SubSource")
  239. classifyId, _ := c.GetInt("ClassifyId")
  240. terminalCode := c.GetString("TerminalCode")
  241. sysUserId := c.GetString("SysUserId")
  242. frequency := c.GetString("Frequency")
  243. keyword := c.GetString("Keyword")
  244. status := c.GetString("Status")
  245. pageSize, _ := c.GetInt("PageSize")
  246. currentIndex, _ := c.GetInt("CurrentIndex")
  247. var startSize int
  248. if pageSize <= 0 {
  249. pageSize = utils.PageSize20
  250. }
  251. if currentIndex <= 0 {
  252. currentIndex = 1
  253. }
  254. startSize = utils.StartIndex(currentIndex, pageSize)
  255. total, list, err := getList(source, subSource, classifyId, terminalCode, sysUserId, frequency, keyword, status, startSize, pageSize)
  256. if err != nil && err.Error() != utils.ErrNoRow() {
  257. br.Msg = "获取失败"
  258. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  259. return
  260. }
  261. page := paging.GetPaging(currentIndex, pageSize, total)
  262. resp := data_manage.RefreshBaseEdbInfoResp{
  263. Paging: page,
  264. List: list,
  265. }
  266. // todo 数据源中的最新值
  267. // todo 刷新时间
  268. br.Ret = 200
  269. br.Success = true
  270. br.Msg = "获取成功"
  271. br.Data = resp
  272. }
  273. // GetEdbRefreshDefaultConfig
  274. // @Title 获取待配置的指标列表接口
  275. // @Description 获取待配置的指标列表接口
  276. // @Param Source query int true "来源:1:同花顺,2:wind,3:彭博"
  277. // @Param SubSource query int true "来源:0:经济数据库,1:日期序列"
  278. // @Param Frequency query string false "频度"
  279. // @Success 200 {object} data_manage.RefreshBaseEdbInfoResp
  280. // @router /edb_info/refresh/default_config [get]
  281. func (c *EdbInfoController) GetEdbRefreshDefaultConfig() {
  282. br := new(models.BaseResponse).Init()
  283. defer func() {
  284. c.Data["json"] = br
  285. c.ServeJSON()
  286. }()
  287. source, _ := c.GetInt("Source")
  288. subSource, _ := c.GetInt("SubSource")
  289. frequency := c.GetString("Frequency")
  290. if source <= 0 {
  291. br.Msg = "来源不能为空"
  292. br.IsSendEmail = false
  293. return
  294. }
  295. if frequency == `` {
  296. br.Msg = "频度不能为空"
  297. br.IsSendEmail = false
  298. return
  299. }
  300. list, err := edb_refresh.GetListBySourceAndFrequency(source, subSource, frequency)
  301. if err != nil {
  302. br.Msg = "获取失败"
  303. br.ErrMsg = err.Error()
  304. return
  305. }
  306. br.Ret = 200
  307. br.Success = true
  308. br.Msg = "获取成功"
  309. br.Data = list
  310. }
  311. // SaveEdbRefreshDefaultConfig
  312. // @Title 设置默认的指标刷新配置接口
  313. // @Description 设置默认的指标刷新配置接口
  314. // @Param request body data_manage.SaveEdbRefreshDefaultConfigReq true "type json string"
  315. // @Success Ret=200 保存成功
  316. // @router /edb_info/refresh/default_config/save [post]
  317. func (c *EdbInfoController) SaveEdbRefreshDefaultConfig() {
  318. br := new(models.BaseResponse).Init()
  319. defer func() {
  320. c.Data["json"] = br
  321. c.ServeJSON()
  322. }()
  323. var req request.SaveEdbRefreshDefaultConfigReq
  324. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  325. if err != nil {
  326. br.Msg = "参数解析异常!"
  327. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  328. return
  329. }
  330. if req.Source <= 0 {
  331. br.Msg = "来源不能为空"
  332. br.IsSendEmail = false
  333. return
  334. }
  335. if req.Frequency == `` {
  336. br.Msg = "频度不能为空"
  337. br.IsSendEmail = false
  338. return
  339. }
  340. lenConf := len(req.List)
  341. if lenConf == 0 {
  342. br.Msg = "至少需要一个刷新配置"
  343. br.IsSendEmail = false
  344. return
  345. }
  346. tmpArr := []string{"每周", "每旬", "每月", "每季", "每半年", "每年"}
  347. for _, v := range req.List {
  348. if utils.InArrayByStr(tmpArr, v.RefreshFrequency) && v.RefreshFrequencyDay <= 0 {
  349. br.Msg = "请选择具体日期"
  350. br.IsSendEmail = false
  351. return
  352. }
  353. if v.RefreshTime == "" {
  354. br.Msg = "请选择具体时间"
  355. br.IsSendEmail = false
  356. return
  357. }
  358. }
  359. addList := make([]*edb_refresh.EdbRefreshDefaultConfig, 0)
  360. for _, v := range req.List {
  361. addList = append(addList, &edb_refresh.EdbRefreshDefaultConfig{
  362. Source: req.Source,
  363. SubSource: req.SubSource,
  364. Frequency: req.Frequency,
  365. RefreshFrequency: v.RefreshFrequency,
  366. RefreshFrequencyDay: v.RefreshFrequencyDay,
  367. RefreshAllData: v.RefreshAllData,
  368. RefreshTime: v.RefreshTime,
  369. RefreshDataNum: v.RefreshDataNum,
  370. ModifyTime: time.Now(),
  371. CreateTime: time.Now(),
  372. })
  373. }
  374. // 保存
  375. err = edb_refresh.SaveEdbRefreshDefaultConfig(req.Source, req.SubSource, req.Frequency, addList)
  376. if err != nil {
  377. br.Msg = `保存失败`
  378. br.ErrMsg = "保存失败,Err:" + err.Error()
  379. return
  380. }
  381. br.Ret = 200
  382. br.Success = true
  383. br.Msg = "保存成功"
  384. }
  385. // SaveEdbRefreshConfig
  386. // @Title 设置指标刷新配置接口
  387. // @Description 设置指标刷新配置接口
  388. // @Param request body data_manage.SaveEdbRefreshConfigReq true "type json string"
  389. // @Success 200 {object} data_manage.RefreshBaseEdbInfoResp
  390. // @router /edb_info/refresh/config/save [post]
  391. func (c *EdbInfoController) SaveEdbRefreshConfig() {
  392. br := new(models.BaseResponse).Init()
  393. defer func() {
  394. c.Data["json"] = br
  395. c.ServeJSON()
  396. }()
  397. var req request.SaveEdbRefreshConfigReq
  398. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  399. if err != nil {
  400. br.Msg = "参数解析异常!"
  401. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  402. return
  403. }
  404. if req.Source <= 0 {
  405. br.Msg = "来源不能为空"
  406. br.IsSendEmail = false
  407. return
  408. }
  409. lenConf := len(req.List)
  410. if lenConf == 0 {
  411. br.Msg = "至少需要一个刷新配置"
  412. br.IsSendEmail = false
  413. return
  414. }
  415. tmpArr := []string{"每周", "每旬", "每月", "每季", "每半年", "每年"}
  416. for _, v := range req.List {
  417. if utils.InArrayByStr(tmpArr, v.RefreshFrequency) && v.RefreshFrequencyDay <= 0 {
  418. br.Msg = "请选择具体日期"
  419. br.IsSendEmail = false
  420. return
  421. }
  422. if v.RefreshTime == "" {
  423. br.Msg = "请选择具体时间"
  424. br.IsSendEmail = false
  425. return
  426. }
  427. }
  428. edbIdList := make([]int, 0)
  429. // 指标id列表
  430. if req.IsSelectAll {
  431. // 如果是列表全选
  432. _, edbList, err := getList(req.Source, req.SubSource, req.ClassifyId, req.TerminalCode, req.SysUserId, req.Frequency, req.Keyword, req.Status, 0, 100000)
  433. if err != nil && err.Error() != utils.ErrNoRow() {
  434. br.Msg = "获取失败"
  435. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  436. return
  437. }
  438. // 不配置的指标id
  439. notIdMap := make(map[int]int, 0)
  440. for _, v := range req.EdbSelectIdList {
  441. notIdMap[v] = v
  442. }
  443. for _, v := range edbList {
  444. _, ok := notIdMap[v.EdbInfoId]
  445. // 在不配置的指标id列表内的话,那就过滤
  446. if ok {
  447. continue
  448. }
  449. // 加入到待配置的指标列表id
  450. edbIdList = append(edbIdList, v.EdbInfoId)
  451. }
  452. } else {
  453. edbIdList = req.EdbSelectIdList
  454. }
  455. if len(edbIdList) <= 0 {
  456. br.Msg = "指标不能为空"
  457. br.IsSendEmail = false
  458. return
  459. }
  460. // 待添加的配置关系数据
  461. addMappingList := make([]*edb_refresh.EdbRefreshMapping, 0)
  462. // 待添加的日期配置项
  463. addConfigList := make([]*edb_refresh.EdbRefreshConfig, 0)
  464. for _, v := range req.List {
  465. item, err := edb_refresh.GetEdbRefreshConfigListByCondition(v.RefreshFrequency, v.RefreshTime, v.RefreshFrequencyDay, v.RefreshAllData, v.RefreshDataNum)
  466. if err != nil {
  467. if err.Error() != utils.ErrNoRow() {
  468. br.Msg = "保存失败"
  469. br.ErrMsg = "保存失败,Err:" + err.Error()
  470. return
  471. }
  472. addConfigList = append(addConfigList, &edb_refresh.EdbRefreshConfig{
  473. RefreshFrequency: v.RefreshFrequency,
  474. RefreshFrequencyDay: v.RefreshFrequencyDay,
  475. RefreshTime: v.RefreshTime,
  476. RefreshAllData: v.RefreshAllData,
  477. RefreshDataNum: v.RefreshDataNum,
  478. ModifyTime: time.Now(),
  479. CreateTime: time.Now(),
  480. })
  481. continue
  482. }
  483. for _, edbId := range edbIdList {
  484. addMappingList = append(addMappingList, &edb_refresh.EdbRefreshMapping{
  485. EdbRefreshMappingId: 0,
  486. Source: req.Source,
  487. SubSource: req.SubSource,
  488. EdbInfoId: edbId,
  489. EdbRefreshConfigId: item.EdbRefreshConfigId,
  490. SysUserId: c.SysUser.AdminId,
  491. SysUserRealName: c.SysUser.RealName,
  492. ModifyTime: time.Now(),
  493. CreateTime: time.Now(),
  494. })
  495. }
  496. }
  497. // 保存
  498. err = edb_refresh.SaveEdbRefreshConfig(req.Source, req.SubSource, c.SysUser.AdminId, c.SysUser.RealName, addConfigList, addMappingList, edbIdList)
  499. if err != nil {
  500. br.Msg = `保存失败`
  501. br.ErrMsg = "保存失败,Err:" + err.Error()
  502. return
  503. }
  504. br.Ret = 200
  505. br.Success = true
  506. br.Msg = "保存成功"
  507. }
  508. // SaveEdbRefreshStatus
  509. // @Title 设置指标刷新状态接口
  510. // @Description 设置指标刷新状态接口
  511. // @Param request body data_manage.SaveEdbRefreshStatusReq true "type json string"
  512. // @Success 200 {object} data_manage.RefreshBaseEdbInfoResp
  513. // @router /edb_info/refresh/status/save [post]
  514. func (c *EdbInfoController) SaveEdbRefreshStatus() {
  515. br := new(models.BaseResponse).Init()
  516. defer func() {
  517. c.Data["json"] = br
  518. c.ServeJSON()
  519. }()
  520. var req request.SaveEdbRefreshStatusReq
  521. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  522. if err != nil {
  523. br.Msg = "参数解析异常!"
  524. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  525. return
  526. }
  527. if req.Source <= 0 {
  528. br.Msg = "来源不能为空"
  529. br.IsSendEmail = false
  530. return
  531. }
  532. edbIdList := make([]int, 0)
  533. edbCodeList := make([]string, 0)
  534. // 指标id列表
  535. if req.IsSelectAll {
  536. // 如果是列表全选
  537. _, edbList, err := getList(req.Source, req.SubSource, req.ClassifyId, req.TerminalCode, req.SysUserId, req.Frequency, req.Keyword, req.Status, 0, 100000)
  538. if err != nil && err.Error() != utils.ErrNoRow() {
  539. br.Msg = "获取失败"
  540. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  541. return
  542. }
  543. // 不配置的指标id
  544. notIdMap := make(map[int]int, 0)
  545. for _, v := range req.EdbSelectIdList {
  546. notIdMap[v] = v
  547. }
  548. for _, v := range edbList {
  549. _, ok := notIdMap[v.EdbInfoId]
  550. // 在不配置的指标id列表内的话,那就过滤
  551. if ok {
  552. continue
  553. }
  554. // 加入到待配置的指标列表id
  555. edbIdList = append(edbIdList, v.EdbInfoId)
  556. edbCodeList = append(edbCodeList, v.IndexCode)
  557. }
  558. } else {
  559. edbIdList = req.EdbSelectIdList
  560. }
  561. if len(edbIdList) <= 0 {
  562. br.Msg = "指标不能为空"
  563. br.IsSendEmail = false
  564. return
  565. }
  566. isStop := 0
  567. if req.ModifyStatus == `禁用` {
  568. isStop = 1
  569. }
  570. switch req.Source {
  571. case utils.DATA_SOURCE_MYSTEEL_CHEMICAL: // 钢联
  572. err = data_manage.ModifyMysteelChemicalUpdateStatus(edbIdList, edbCodeList, isStop)
  573. case utils.DATA_SOURCE_YS: // 有色
  574. err = data_manage.ModifySmmUpdateStatus(edbIdList, edbCodeList, isStop)
  575. default:
  576. err = data_manage.ModifyEdbInfoUpdateStatus(edbIdList, isStop)
  577. }
  578. if err != nil {
  579. br.Msg = `保存失败`
  580. br.ErrMsg = "保存失败,Err:" + err.Error()
  581. return
  582. }
  583. br.Ret = 200
  584. br.Success = true
  585. br.Msg = "保存成功"
  586. }
  587. // getList
  588. // @Description: 获取指标列表
  589. // @author: Roc
  590. // @datetime 2024-01-08 15:14:16
  591. // @param source int
  592. // @param subSource int
  593. // @param classifyId int
  594. // @param terminalCode string
  595. // @param sysUserId string
  596. // @param frequency string
  597. // @param keyword string
  598. // @param startSize int
  599. // @param pageSize int
  600. // @return total int
  601. // @return list []*data_manage.BaseEdbInfo
  602. // @return err error
  603. func getList(source, subSource, classifyId int, terminalCode, sysUserId, frequency, keyword, status string, startSize, pageSize int) (total int, list []*data_manage.BaseEdbInfo, err error) {
  604. var pars []interface{}
  605. var condition string
  606. list = make([]*data_manage.BaseEdbInfo, 0)
  607. isStop := 0
  608. if status == `禁用` {
  609. isStop = 1
  610. }
  611. switch source {
  612. case utils.DATA_SOURCE_MYSTEEL_CHEMICAL: // 钢联
  613. if classifyId > 0 {
  614. condition += " AND base_from_mysteel_chemical_classify_id = ? "
  615. pars = append(pars, classifyId)
  616. }
  617. if terminalCode != `` {
  618. condition += " AND terminal_code = ? "
  619. pars = append(pars, terminalCode)
  620. }
  621. if sysUserId != `` {
  622. sysUserIdSlice := strings.Split(sysUserId, ",")
  623. condition += ` AND sys_user_id IN (` + utils.GetOrmInReplace(len(sysUserIdSlice)) + `)`
  624. pars = append(pars, sysUserIdSlice)
  625. }
  626. if frequency != `` {
  627. condition += " AND frequency = ? "
  628. pars = append(pars, frequency)
  629. }
  630. if keyword != `` {
  631. keywordSlice := strings.Split(keyword, ",")
  632. if len(keywordSlice) > 0 {
  633. tmpConditionSlice := make([]string, 0)
  634. tmpConditionSlice = append(tmpConditionSlice, ` index_name like ? or index_code like ? `)
  635. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  636. for _, v := range keywordSlice {
  637. tmpConditionSlice = append(tmpConditionSlice, ` index_name like ? or index_code like ? `)
  638. pars = utils.GetLikeKeywordPars(pars, v, 2)
  639. }
  640. condition += ` AND (` + strings.Join(tmpConditionSlice, " or ") + `)`
  641. } else {
  642. condition += ` index_name like ? or index_code like ? `
  643. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  644. }
  645. }
  646. condition += " AND is_stop = ? "
  647. pars = append(pars, isStop)
  648. total, list, err = data_manage.GetMysteelChemicalBaseInfo(condition, pars, startSize, pageSize)
  649. case utils.DATA_SOURCE_YS: // 有色
  650. if classifyId > 0 {
  651. condition += " AND classify_id = ? "
  652. pars = append(pars, classifyId)
  653. }
  654. if terminalCode != `` {
  655. condition += " AND terminal_code = ? "
  656. pars = append(pars, terminalCode)
  657. }
  658. if frequency != `` {
  659. condition += " AND frequency = ? "
  660. pars = append(pars, frequency)
  661. }
  662. if keyword != `` {
  663. keywordSlice := strings.Split(keyword, ",")
  664. if len(keywordSlice) > 0 {
  665. tmpConditionSlice := make([]string, 0)
  666. tmpConditionSlice = append(tmpConditionSlice, ` index_name like ? or index_code like ? `)
  667. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  668. for _, v := range keywordSlice {
  669. tmpConditionSlice = append(tmpConditionSlice, ` index_name like ? or index_code like ? `)
  670. pars = utils.GetLikeKeywordPars(pars, v, 2)
  671. }
  672. condition += ` AND (` + strings.Join(tmpConditionSlice, " or ") + `)`
  673. } else {
  674. condition += ` index_name like ? or index_code like ? `
  675. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  676. }
  677. }
  678. condition += " AND is_stop = ? "
  679. pars = append(pars, isStop)
  680. total, list, err = data_manage.GetSmmBaseInfo(condition, pars, startSize, pageSize)
  681. default:
  682. condition += ` AND source = ? AND sub_source = ? AND no_update = ?`
  683. pars = append(pars, source, subSource, isStop)
  684. if classifyId > 0 {
  685. condition += " AND classify_id = ? "
  686. pars = append(pars, classifyId)
  687. }
  688. if terminalCode != `` {
  689. condition += " AND terminal_code = ? "
  690. pars = append(pars, terminalCode)
  691. }
  692. if sysUserId != `` {
  693. sysUserIdSlice := strings.Split(sysUserId, ",")
  694. condition += ` AND sys_user_id IN (` + utils.GetOrmInReplace(len(sysUserIdSlice)) + `)`
  695. pars = append(pars, sysUserIdSlice)
  696. }
  697. if frequency != `` {
  698. condition += " AND frequency = ? "
  699. pars = append(pars, frequency)
  700. }
  701. if keyword != `` {
  702. keywordSlice := strings.Split(keyword, ",")
  703. if len(keywordSlice) > 0 {
  704. tmpConditionSlice := make([]string, 0)
  705. tmpConditionSlice = append(tmpConditionSlice, ` edb_name like ? or edb_code like ? `)
  706. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  707. for _, v := range keywordSlice {
  708. tmpConditionSlice = append(tmpConditionSlice, ` edb_name like ? or edb_code like ? `)
  709. pars = utils.GetLikeKeywordPars(pars, v, 2)
  710. }
  711. condition += ` AND (` + strings.Join(tmpConditionSlice, " or ") + `)`
  712. } else {
  713. condition += ` edb_name like ? or edb_code like ? `
  714. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  715. }
  716. }
  717. total, list, err = data_manage.GetEdbBaseInfo(condition, pars, startSize, pageSize)
  718. }
  719. return
  720. }