sci_hq_data.go 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553
  1. package data_manage
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/controllers"
  5. "eta/eta_api/models"
  6. "eta/eta_api/models/data_manage"
  7. "eta/eta_api/models/data_manage/request"
  8. "eta/eta_api/models/data_manage/response"
  9. "eta/eta_api/services/data"
  10. "eta/eta_api/utils"
  11. "github.com/rdlucklib/rdluck_tools/paging"
  12. )
  13. type SciHqDataController struct {
  14. controllers.BaseAuthController
  15. }
  16. // @Title 卓创红期数据分类
  17. // @Description 卓创红期数据分类接口
  18. // @Success 200 {object} data_manage.SciClassify
  19. // @router /sci_hq/classify [get]
  20. func (this *SciHqDataController) Classify() {
  21. br := new(models.BaseResponse).Init()
  22. defer func() {
  23. this.Data["json"] = br
  24. this.ServeJSON()
  25. }()
  26. classifyList, err := data_manage.GetSciHqClassifyAll()
  27. if err != nil {
  28. br.Msg = "查询失败"
  29. br.ErrMsg = "查询失败, Err:" + err.Error()
  30. return
  31. }
  32. initClassify := &data_manage.BaseFromSciHqClassifyItem{
  33. ClassifyId: 0,
  34. ClassifyName: "未分类",
  35. ClassifyNameEn: "Unclassified",
  36. ParentId: 0,
  37. Level: 1,
  38. Sort: 0,
  39. Children: nil,
  40. }
  41. finalList := make([]*data_manage.BaseFromSciHqClassifyItem, 0)
  42. classifyTree := getSciHqClassifyTree(classifyList, 0)
  43. finalList = append(finalList, initClassify)
  44. finalList = append(finalList, classifyTree...)
  45. br.Msg = "查询成功"
  46. br.Data = finalList
  47. br.Success = true
  48. br.Ret = 200
  49. }
  50. // AddSciClassify
  51. // @Title 新增分类
  52. // @Description 新增分类接口
  53. // @Param request body data_manage.AddBaseFromSciClassifyReq true "type json string"
  54. // @Success 200 Ret=200 保存成功
  55. // @router /sci_hq/classify/add [post]
  56. func (this *SciHqDataController) AddClassify() {
  57. br := new(models.BaseResponse).Init()
  58. defer func() {
  59. this.Data["json"] = br
  60. this.ServeJSON()
  61. }()
  62. var req request.AddBaseFromSciHqClassifyReq
  63. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  64. if err != nil {
  65. br.Msg = "参数解析异常!"
  66. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  67. return
  68. }
  69. if req.ClassifyName == "" {
  70. br.Msg = "请输入分类名称"
  71. return
  72. }
  73. if req.ParentId < 0 {
  74. br.Msg = "操作异常"
  75. return
  76. }
  77. ok, err := data.AddSciHqClassify(req.ClassifyName, this.Lang, req.ParentId)
  78. if err != nil {
  79. br.Msg = "添加失败"
  80. br.ErrMsg = "添加失败,Err:" + err.Error()
  81. return
  82. }
  83. if !ok {
  84. br.Msg = "添加失败"
  85. return
  86. }
  87. br.Msg = "添加成功"
  88. br.Success = true
  89. br.Ret = 200
  90. }
  91. // DelClassify
  92. // @Title 新增分类
  93. // @Description 新增分类接口
  94. // @Param request body data_manage.AddBaseFromSciClassifyReq true "type json string"
  95. // @Success 200 Ret=200 保存成功
  96. // @router /sci_hq/classify/del [post]
  97. func (this *SciHqDataController) DelClassify() {
  98. br := new(models.BaseResponse).Init()
  99. defer func() {
  100. this.Data["json"] = br
  101. this.ServeJSON()
  102. }()
  103. var req request.DelBaseFromSciHqClassifyReq
  104. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  105. if err != nil {
  106. br.Msg = "参数解析异常!"
  107. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  108. return
  109. }
  110. if req.ClassifyId < 0 {
  111. br.Msg = "参数错误"
  112. br.IsSendEmail = false
  113. return
  114. }
  115. err = data.DelSciHqClassify(req.ClassifyId)
  116. if err != nil {
  117. br.Msg = "删除失败"
  118. br.ErrMsg = "删除失败,Err:" + err.Error()
  119. return
  120. }
  121. br.Ret = 200
  122. br.Msg = "删除成功"
  123. br.Success = true
  124. br.IsAddLog = true
  125. }
  126. // EditClassify
  127. // @Title 修改分类
  128. // @Description 修改分类接口
  129. // @Param request body data_manage.EditBaseFromMysteelChemicalClassifyReq true "type json string"
  130. // @Success 200 Ret=200 修改成功
  131. // @router /sci_hq/classify/edit [post]
  132. func (this *SciHqDataController) EditClassify() {
  133. br := new(models.BaseResponse).Init()
  134. defer func() {
  135. this.Data["json"] = br
  136. this.ServeJSON()
  137. }()
  138. var req request.EditBaseFromSciHqClassifyReq
  139. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  140. if err != nil {
  141. br.Msg = "参数解析异常!"
  142. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  143. return
  144. }
  145. if req.ClassifyId <= 0 {
  146. br.Msg = "参数错误"
  147. return
  148. }
  149. if req.ClassifyName == "" {
  150. br.Msg = "请输入分类名称"
  151. return
  152. }
  153. classify, err := data_manage.GetSciHqClassifyById(req.ClassifyId)
  154. if err != nil {
  155. if err.Error() == utils.ErrNoRow() {
  156. br.Msg = "分类不存在"
  157. return
  158. }
  159. br.Msg = "编辑失败"
  160. br.ErrMsg = "获取分类失败,Err:" + err.Error()
  161. return
  162. }
  163. switch this.Lang {
  164. case utils.EnLangVersion:
  165. if classify.ClassifyNameEn != req.ClassifyName {
  166. count, err := data_manage.GetSciHqClassifyCountByName(req.ClassifyName, this.Lang)
  167. if err != nil {
  168. br.Msg = "编辑失败"
  169. br.ErrMsg = "获取分类失败,Err:" + err.Error()
  170. return
  171. }
  172. if count > 0 {
  173. br.Msg = "分类名称已存在"
  174. return
  175. }
  176. err = classify.Update([]string{"classify_name_en", "modify_time"})
  177. if err != nil {
  178. br.Msg = "编辑失败"
  179. br.ErrMsg = "编辑失败,Err:" + err.Error()
  180. return
  181. }
  182. }
  183. default:
  184. if classify.ClassifyName != req.ClassifyName {
  185. count, err := data_manage.GetSciHqClassifyCountByName(req.ClassifyName, this.Lang)
  186. if err != nil {
  187. br.Msg = "编辑失败"
  188. br.ErrMsg = "获取分类失败,Err:" + err.Error()
  189. return
  190. }
  191. if count > 0 {
  192. br.Msg = "分类名称已存在"
  193. return
  194. }
  195. err = classify.Update([]string{"classify_name", "modify_time"})
  196. if err != nil {
  197. br.Msg = "编辑失败"
  198. br.ErrMsg = "编辑失败,Err:" + err.Error()
  199. return
  200. }
  201. }
  202. }
  203. br.Msg = "编辑成功"
  204. br.Success = true
  205. br.Ret = 200
  206. br.IsAddLog = true
  207. }
  208. // Move
  209. // @Title 分类移动接口
  210. // @Description 分类移动接口
  211. // @Success 200 {object} data_manage.MoveBaseFromMysteelChemicalClassifyReq
  212. // @router /sci/classify/move [post]
  213. func (this *SciHqDataController) Move() {
  214. br := new(models.BaseResponse).Init()
  215. defer func() {
  216. this.Data["json"] = br
  217. this.ServeJSON()
  218. }()
  219. var req request.MoveBaseFromSciHqClassifyReq
  220. if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
  221. br.Msg = "参数解析异常!"
  222. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  223. return
  224. }
  225. }
  226. // SciHqIndexList
  227. // @Title 卓创红期指标列表
  228. // @Description 卓创红期数据指标列表接口
  229. // @Param ClassifyId query int true "分类id"
  230. // @Success 200 {object} data_manage.BaseFromMysteelChemicalIndexResp
  231. // @router /sci_hq/index/list [get]
  232. func (this *SciHqDataController) SciHqIndexList() {
  233. br := new(models.BaseResponse).Init()
  234. defer func() {
  235. this.Data["json"] = br
  236. this.ServeJSON()
  237. }()
  238. classifyId, _ := this.GetInt("ClassifyId", 0)
  239. indexList, err := data_manage.GetSciHqIndexBaseInfoByClassifyId(classifyId)
  240. if err != nil && err.Error() != utils.ErrNoRow() {
  241. br.Msg = "获取失败"
  242. br.ErrMsg = "获取指标信息失败,Err:" + err.Error()
  243. return
  244. }
  245. br.Ret = 200
  246. br.Success = true
  247. br.Msg = "获取成功"
  248. br.Data = indexList
  249. }
  250. // SciHqIndexPageList
  251. // @Title 卓创红期指标列表
  252. // @Description 卓创红期数据指标列表接口
  253. // @Param PageSize query int true "每页数据条数"
  254. // @Param CurrentIndex query int true "当前页页码,从1开始"
  255. // @Param ClassifyId query int true "分类id"
  256. // @Success 200 {object} data_manage.BaseFromMysteelChemicalIndexResp
  257. // @router /sci_hq/index/page/list [get]
  258. func (this *SciHqDataController) SciHqIndexPageList() {
  259. br := new(models.BaseResponse).Init()
  260. defer func() {
  261. this.Data["json"] = br
  262. this.ServeJSON()
  263. }()
  264. classifyId, _ := this.GetInt("ClassifyId", 0)
  265. pageSize, _ := this.GetInt("PageSize")
  266. currrentIndex, _ := this.GetInt("CurrentIndex")
  267. var startSize int
  268. if pageSize <= 0 {
  269. pageSize = utils.PageSize20
  270. }
  271. if currrentIndex <= 0 {
  272. currrentIndex = 1
  273. }
  274. startSize = utils.StartIndex(currrentIndex, pageSize)
  275. total, err := data_manage.GetSciHqIndexCountByClassifyId(classifyId)
  276. if err != nil {
  277. br.Msg = "获取失败"
  278. br.ErrMsg = "获取指标信息失败,Err:" + err.Error()
  279. return
  280. }
  281. indexList, err := data_manage.GetSciHqIndexByClassifyId(classifyId, startSize, pageSize)
  282. if err != nil && err.Error() != utils.ErrNoRow() {
  283. br.Msg = "获取失败"
  284. br.ErrMsg = "获取指标信息失败,Err:" + err.Error()
  285. return
  286. }
  287. page := paging.GetPaging(currrentIndex, pageSize, total)
  288. resp := new(response.SciHqIndexPageListResp)
  289. resp.List = indexList
  290. resp.Paging = page
  291. br.Ret = 200
  292. br.Success = true
  293. br.Msg = "获取成功"
  294. br.Data = resp
  295. }
  296. // SciHqSearchList
  297. // @Title 卓创红期模糊搜索
  298. // @Description 卓创红期模糊搜索
  299. // @Param Keyword query string ture "关键字搜索"
  300. // @Success 200 {object} models.BaseResponse
  301. // @router /sci/search_list [get]
  302. func (this *SciHqDataController) SciHqSearchList() {
  303. br := new(models.BaseResponse).Init()
  304. defer func() {
  305. this.Data["json"] = br
  306. this.ServeJSON()
  307. }()
  308. //关键字
  309. keyword := this.GetString("Keyword")
  310. var condition string
  311. var pars []interface{}
  312. if keyword != "" {
  313. condition += ` AND (index_code LIKE ? OR index_name LIKE ?)`
  314. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  315. } else {
  316. br.Msg = "请输入指标ID/指标名称"
  317. return
  318. }
  319. list, err := data_manage.GetSciHqIndexBaseInfoByCondition(condition, pars)
  320. if err != nil {
  321. br.Msg = "获取失败"
  322. br.ErrMsg = "获取失败,Err:" + err.Error()
  323. return
  324. }
  325. br.Ret = 200
  326. br.Success = true
  327. br.Msg = "获取成功"
  328. br.Data = list
  329. }
  330. // SciHqSingleData
  331. // @Title 获取卓创红期据
  332. // @Description 获取卓创红期单条数据接口
  333. // @Param IndexCode query string true "指标唯一编码"
  334. // @Success 200 {object} models.BaseResponse
  335. // @router /sci_hq/single_data [get]
  336. func (this *SciHqDataController) SciHqSingleData() {
  337. br := new(models.BaseResponse).Init()
  338. defer func() {
  339. this.Data["json"] = br
  340. this.ServeJSON()
  341. }()
  342. indexCode := this.GetString("IndexCode")
  343. indexInfo, err := data_manage.GetBaseFromSciHqIndexByIndexCode(indexCode)
  344. if err != nil {
  345. br.Msg = "获取指标信息失败"
  346. br.ErrMsg = "获取指标信息失败,Err:" + err.Error()
  347. return
  348. }
  349. dataList, err := data_manage.GetSciHqIndexDataByCode(indexCode)
  350. if err != nil {
  351. br.Msg = "获取数据失败"
  352. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  353. return
  354. }
  355. var ret response.SciHqSingleDataResp
  356. ret.ClassifyId = indexInfo.ClassifyId
  357. ret.BaseFromSciHqIndexId = indexInfo.BaseFromSciHqIndexId
  358. ret.IndexCode = indexInfo.IndexCode
  359. ret.IndexName = indexInfo.IndexName
  360. ret.Frequency = indexInfo.Frequency
  361. ret.CreateTime = indexInfo.CreateTime.Format(utils.FormatDateTime)
  362. ret.ModifyTime = indexInfo.ModifyTime.Format(utils.FormatDateTime)
  363. ret.Unit = indexInfo.Unit
  364. ret.Data = dataList
  365. br.Ret = 200
  366. br.Success = true
  367. br.Msg = "获取成功"
  368. br.Data = ret
  369. }
  370. // ResetSciHqIndex
  371. // @Title 指标数据清除分类
  372. // @Description 指标数据清除分类
  373. // @Param request body data_manage.DelBaseFromSciReq true "type json string"
  374. // @Success 200 Ret=200 操作成功
  375. // @router /sci_hq/reset [post]
  376. func (this *SciHqDataController) ResetSciHqIndex() {
  377. br := new(models.BaseResponse).Init()
  378. defer func() {
  379. this.Data["json"] = br
  380. this.ServeJSON()
  381. }()
  382. var req request.ResetBaseFromSciHqReq
  383. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  384. if err != nil {
  385. br.Msg = "参数解析异常!"
  386. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  387. return
  388. }
  389. if req.BaseFromSciHqIndexId < 0 {
  390. br.Msg = "参数错误"
  391. br.IsSendEmail = false
  392. return
  393. }
  394. err = data.ResetSciHqIndex(req.BaseFromSciHqIndexId)
  395. if err != nil {
  396. br.Msg = "移动失败"
  397. br.ErrMsg = "移动失败,Err:" + err.Error()
  398. return
  399. }
  400. br.Ret = 200
  401. br.Msg = "操作成功"
  402. br.Success = true
  403. br.IsAddLog = true
  404. }
  405. // EditSciHq
  406. // @Title 编辑卓创红期指标
  407. // @Description 编辑卓创红期指标接口
  408. // @Param request body data_manage.AddEdbClassifyReq true "type json string"
  409. // @Success 200 Ret=200 保存成功
  410. // @router /sci_hq/edit [post]
  411. func (this *SciHqDataController) EditSciHq() {
  412. br := new(models.BaseResponse).Init()
  413. defer func() {
  414. this.Data["json"] = br
  415. this.ServeJSON()
  416. }()
  417. var req request.EditBaseFromSciHqReq
  418. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  419. if err != nil {
  420. br.Msg = "参数解析异常!"
  421. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  422. return
  423. }
  424. if req.BaseFromSciHqIndexId <= 0 {
  425. br.Msg = "请选择指标"
  426. br.IsSendEmail = false
  427. return
  428. }
  429. if req.ClassifyId <= 0 {
  430. br.Msg = "请选择分类"
  431. br.IsSendEmail = false
  432. return
  433. }
  434. //编辑指标
  435. sciIndexInfo, err := data.EditSciHqIndex(req.BaseFromSciHqIndexId, req.ClassifyId)
  436. if err != nil {
  437. if err.Error() == utils.ErrNoRow() {
  438. br.Msg = "指标不存在或已删除"
  439. return
  440. }
  441. br.Msg = "编辑失败"
  442. br.ErrMsg = "编辑指标失败,Err:" + err.Error()
  443. return
  444. }
  445. resp := response.EditSciHqIndexInfoResp{
  446. BaseFromSciHqIndexId: sciIndexInfo.BaseFromSciHqIndexId,
  447. IndexCode: sciIndexInfo.IndexCode,
  448. }
  449. br.Data = resp
  450. br.Ret = 200
  451. br.Msg = "保存成功"
  452. br.Success = true
  453. br.IsAddLog = true
  454. }
  455. // DeleteSciHqData
  456. // @Title 删除指标
  457. // @Description 删除指标接口
  458. // @Param request body data_manage.DelBaseFromSciReq true "type json string"
  459. // @Success 200 Ret=200 删除成功
  460. // @router /sci_hq/del [post]
  461. func (this *SciHqDataController) DeleteSciHqData() {
  462. br := new(models.BaseResponse).Init()
  463. defer func() {
  464. this.Data["json"] = br
  465. this.ServeJSON()
  466. }()
  467. var req request.DelBaseFromSciHqReq
  468. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  469. if err != nil {
  470. br.Msg = "参数解析异常!"
  471. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  472. return
  473. }
  474. if req.BaseFromSciHqIndexId < 0 {
  475. br.Msg = "参数错误"
  476. br.IsSendEmail = false
  477. return
  478. }
  479. err, errMsg := data.DelSciHqData(req.BaseFromSciHqIndexId)
  480. if errMsg != `` {
  481. br.Msg = errMsg
  482. br.ErrMsg = errMsg
  483. if err != nil {
  484. br.ErrMsg = errMsg + ";Err:" + err.Error()
  485. } else {
  486. br.IsSendEmail = false
  487. }
  488. return
  489. }
  490. br.Ret = 200
  491. br.Msg = "删除成功"
  492. br.Success = true
  493. br.IsAddLog = true
  494. }
  495. // getSciHqClassifyTree 返回卓创红旗的树形结构
  496. func getSciHqClassifyTree(items []*data_manage.BaseFromSciHqClassifyItem, parentId int) []*data_manage.BaseFromSciHqClassifyItem {
  497. res := make([]*data_manage.BaseFromSciHqClassifyItem, 0)
  498. for _, item := range items {
  499. if item.ParentId == parentId {
  500. t := new(data_manage.BaseFromSciHqClassifyItem)
  501. t.ClassifyId = item.ClassifyId
  502. t.ClassifyName = item.ClassifyName
  503. t.ParentId = item.ParentId
  504. t.Level = item.Level
  505. t.Sort = item.Sort
  506. t.ModifyTime = item.ModifyTime
  507. t.CreateTime = item.CreateTime
  508. t.ClassifyNameEn = item.ClassifyNameEn
  509. t.Children = getSciHqClassifyTree(items, item.ClassifyId)
  510. res = append(res, t)
  511. }
  512. }
  513. return res
  514. }