chart_public_classify.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479
  1. package data_manage
  2. import (
  3. "encoding/json"
  4. "eta_gn/eta_api/controllers"
  5. "eta_gn/eta_api/models"
  6. "eta_gn/eta_api/models/data_manage"
  7. "eta_gn/eta_api/models/data_manage/request"
  8. "eta_gn/eta_api/models/system"
  9. "eta_gn/eta_api/services/data"
  10. "eta_gn/eta_api/utils"
  11. "sort"
  12. )
  13. // ChartPublicClassifyController 数据管理-公共分类模块
  14. type ChartPublicClassifyController struct {
  15. controllers.BaseAuthController
  16. }
  17. // SimpleList
  18. // @Title 单层公共分类列表
  19. // @Description 单层公共分类列表
  20. // @Success 200 {object} data_manage.ChartClassifyListResp
  21. // @router /chart_public/classify/simple [get]
  22. func (c *ChartPublicClassifyController) SimpleList() {
  23. br := new(models.BaseResponse).Init()
  24. defer func() {
  25. c.Data["json"] = br
  26. c.ServeJSON()
  27. }()
  28. // 公共分类来源筛选
  29. // 目前只有图库会涉及到公共分类
  30. source := utils.CHART_TYPE_CURVE
  31. // 默认查一级公共分类和一级公共分类下的指标信息,
  32. // 如果是 子级公共分类,查询该子级公共分类的下一级公共分类和指标信息
  33. // 增加标识判断是文件夹还是指标列表
  34. parentId, _ := c.GetInt("ParentId")
  35. chartPublicClassifyObj := data_manage.ChartPublicClassify{}
  36. rootList, err := chartPublicClassifyObj.GetChartClassifyItemsByParentId(parentId, int8(source))
  37. if err != nil && !utils.IsErrNoRow(err) {
  38. br.Msg = "获取失败"
  39. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  40. return
  41. }
  42. nodeAll := make([]*data_manage.ChartClassifyItems, 0)
  43. var sortList data_manage.ChartClassifyItemList
  44. if parentId > 0 {
  45. allChartInfo, err := data_manage.GetChartInfoByPublicClassifyId(parentId, 0, source)
  46. if err != nil {
  47. br.Msg = "获取指标数据失败"
  48. br.ErrMsg = "获取指标数据失败,Err:" + err.Error()
  49. return
  50. }
  51. if len(allChartInfo) > 0 {
  52. // 查询当前公共分类信息
  53. for _, v := range allChartInfo {
  54. v.HaveOperaAuth = true
  55. button := data.GetChartOpButton(c.SysUser, v.SysUserId, v.HaveOperaAuth)
  56. button.AddButton = false //不管有没有权限,指标都是没有添加按钮的
  57. v.Button = button
  58. v.Children = make([]*data_manage.ChartClassifyItems, 0)
  59. v.ParentId = parentId
  60. nodeAll = append(nodeAll, v)
  61. }
  62. }
  63. }
  64. if len(rootList) > 0 {
  65. for _, v := range rootList {
  66. // 数据权限
  67. v.HaveOperaAuth = true
  68. // 按钮权限
  69. button := data.GetChartClassifyOpButton(c.SysUser, v.SysUserId, v.HaveOperaAuth)
  70. v.Button = button
  71. v.Children = make([]*data_manage.ChartClassifyItems, 0)
  72. nodeAll = append(nodeAll, v)
  73. }
  74. }
  75. if len(nodeAll) > 0 {
  76. //根据sort值排序
  77. sortList = nodeAll
  78. sort.Sort(sortList)
  79. }
  80. language := `CN`
  81. // 指标显示的语言
  82. {
  83. configDetail, _ := system.GetConfigDetailByCode(c.SysUser.AdminId, system.ChartLanguageVar)
  84. if configDetail != nil {
  85. language = configDetail.ConfigValue
  86. } else {
  87. configDetail, _ = system.GetDefaultConfigDetailByCode(system.ChartLanguageVar)
  88. if configDetail != nil {
  89. language = configDetail.ConfigValue
  90. }
  91. }
  92. }
  93. // 是否允许添加一级公共分类
  94. canOpClassify := true
  95. button := data.GetChartClassifyOpButton(c.SysUser, 0, true)
  96. if !button.AddButton {
  97. canOpClassify = false
  98. }
  99. resp := new(data_manage.ChartClassifyListResp)
  100. resp.AllNodes = sortList
  101. resp.Language = language
  102. resp.CanOpClassify = canOpClassify
  103. br.Ret = 200
  104. br.Success = true
  105. br.Msg = "获取成功"
  106. br.Data = resp
  107. }
  108. // ClassifyTree
  109. // @Title 多层公共分类列表树
  110. // @Description 多层公共分类列表树
  111. // @Success 200 {object} data_manage.ChartClassifyListResp
  112. // @router /chart_public/classify/tree [get]
  113. func (c *ChartPublicClassifyController) ClassifyTree() {
  114. br := new(models.BaseResponse).Init()
  115. defer func() {
  116. c.Data["json"] = br
  117. c.ServeJSON()
  118. }()
  119. // 公共分类来源筛选
  120. classifyType := utils.CHART_TYPE_CURVE
  121. chartPublicClassifyObj := data_manage.ChartPublicClassify{}
  122. allList, err := chartPublicClassifyObj.GetAllChartClassifyByType(int8(classifyType))
  123. if err != nil && !utils.IsErrNoRow(err) {
  124. br.Msg = "获取失败"
  125. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  126. return
  127. }
  128. var sortList data_manage.ChartClassifyItemList
  129. if len(allList) > 0 {
  130. for k, v := range allList {
  131. // 数据权限
  132. v.HaveOperaAuth = true
  133. // 按钮权限
  134. button := data.GetChartClassifyOpButton(c.SysUser, v.SysUserId, v.HaveOperaAuth)
  135. allList[k].Button = button
  136. }
  137. allList = data.GetChartClassifyTreeRecursive(allList, 0)
  138. //根据sort值排序
  139. sortList = allList
  140. sort.Sort(sortList)
  141. }
  142. language := `CN`
  143. // 是否允许添加一级公共分类
  144. canOpClassify := true
  145. button := data.GetChartClassifyOpButton(c.SysUser, 0, true)
  146. if !button.AddButton {
  147. canOpClassify = false
  148. }
  149. resp := new(data_manage.ChartClassifyListResp)
  150. resp.AllNodes = sortList
  151. resp.Language = language
  152. resp.CanOpClassify = canOpClassify
  153. br.Ret = 200
  154. br.Success = true
  155. br.Msg = "获取成功"
  156. br.Data = resp
  157. }
  158. // AddChartClassify
  159. // @Title 新增公共分类
  160. // @Description 新增公共分类接口
  161. // @Param request body data_manage.AddChartClassifyReq true "type json string"
  162. // @Success 200 Ret=200 保存成功
  163. // @router /chart_public/classify/add [post]
  164. func (c *ChartPublicClassifyController) AddClassify() {
  165. br := new(models.BaseResponse).Init()
  166. defer func() {
  167. c.Data["json"] = br
  168. c.ServeJSON()
  169. }()
  170. var req data_manage.AddChartClassifyReq
  171. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  172. if err != nil {
  173. br.Msg = "参数解析异常!"
  174. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  175. return
  176. }
  177. if req.ChartClassifyName == "" {
  178. br.Msg = "请输入公共分类名称"
  179. br.IsSendEmail = false
  180. return
  181. }
  182. if req.ParentId < 0 {
  183. br.Msg = "参数错误"
  184. br.IsSendEmail = false
  185. return
  186. }
  187. // 公共分类来源筛选
  188. source := utils.CHART_TYPE_CURVE
  189. //添加指标
  190. _, err, errMsg := data.AddChartPublicClassify(req.ChartClassifyName, req.ParentId, req.Level, source, c.SysUser.AdminId, c.SysUser.RealName)
  191. if errMsg != `` {
  192. br.Msg = errMsg
  193. br.ErrMsg = errMsg
  194. if err != nil {
  195. br.ErrMsg = errMsg + ";Err:" + err.Error()
  196. } else {
  197. br.IsSendEmail = false
  198. }
  199. return
  200. }
  201. //count, err := data_manage.GetChartClassifyCount(req.ClassifyName, req.ParentId)
  202. //if err != nil {
  203. // br.Msg = "判断名称是否已存在失败"
  204. // br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
  205. // return
  206. //}
  207. //if count > 0 {
  208. // br.Msg = "公共分类名称已存在,请重新输入"
  209. // br.IsSendEmail = false
  210. // return
  211. //}
  212. ////获取该层级下最大的排序数
  213. //maxSort, err := data_manage.GetChartClassifyMaxSort(req.ParentId, req.ClassifyType)
  214. //
  215. //classify := new(data_manage.ChartClassify)
  216. //classify.ClassifyType = req.ClassifyType
  217. //classify.ParentId = req.ParentId
  218. //classify.ClassifyName = req.ClassifyName
  219. //classify.HasData = 0
  220. //classify.CreateTime = time.Now()
  221. //classify.ModifyTime = time.Now()
  222. //classify.SysUserId = c.SysUser.AdminId
  223. //classify.SysUserRealName = c.SysUser.RealName
  224. //classify.Level = req.Level + 1
  225. //timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
  226. //classify.UniqueCode = utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
  227. //classify.Sort = maxSort
  228. //
  229. //_, err = data_manage.AddChartClassify(classify)
  230. //if err != nil {
  231. // br.Msg = "保存公共分类失败"
  232. // br.ErrMsg = "保存公共分类失败,Err:" + err.Error()
  233. // return
  234. //}
  235. br.Ret = 200
  236. br.Msg = "新增成功"
  237. br.Success = true
  238. br.IsAddLog = true
  239. }
  240. // EditChartClassify
  241. // @Title 修改公共分类
  242. // @Description 修改公共分类接口
  243. // @Param request body data_manage.EditChartClassifyReq true "type json string"
  244. // @Success 200 Ret=200 修改成功
  245. // @router /chart_public/classify/edit [post]
  246. func (c *ChartPublicClassifyController) EditChartClassify() {
  247. br := new(models.BaseResponse).Init()
  248. defer func() {
  249. c.Data["json"] = br
  250. c.ServeJSON()
  251. }()
  252. var req data_manage.EditChartClassifyReq
  253. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  254. if err != nil {
  255. br.Msg = "参数解析异常!"
  256. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  257. return
  258. }
  259. if req.ChartClassifyName == "" {
  260. br.Msg = "请输入公共分类名称"
  261. br.IsSendEmail = false
  262. return
  263. }
  264. if req.ChartClassifyId < 0 {
  265. br.Msg = "参数错误"
  266. br.IsSendEmail = false
  267. return
  268. }
  269. err, errMsg := data.EditChartPublicClassify(req.ChartClassifyId, req.ChartClassifyName, c.SysUser)
  270. if errMsg != `` {
  271. br.Msg = errMsg
  272. br.ErrMsg = errMsg
  273. if err != nil {
  274. br.ErrMsg = errMsg + ";Err:" + err.Error()
  275. } else {
  276. br.IsSendEmail = false
  277. }
  278. return
  279. }
  280. br.Ret = 200
  281. br.Msg = "修改成功"
  282. br.Success = true
  283. br.IsAddLog = true
  284. }
  285. // DeleteChartClassifyCheck
  286. // @Title 删除检测接口
  287. // @Description 删除检测接口
  288. // @Param request body request.PublicClassifyDeleteCheckReq true "type json string"
  289. // @Success 200 Ret=200 检测成功
  290. // @router /chart_public/classify/delete/check [post]
  291. func (c *ChartPublicClassifyController) DeleteClassifyCheck() {
  292. br := new(models.BaseResponse).Init()
  293. defer func() {
  294. c.Data["json"] = br
  295. c.ServeJSON()
  296. }()
  297. var req request.PublicClassifyDeleteCheckReq
  298. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  299. if err != nil {
  300. br.Msg = "参数解析异常!"
  301. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  302. return
  303. }
  304. if req.ClassifyId < 0 {
  305. br.Msg = "参数错误"
  306. br.IsSendEmail = false
  307. return
  308. }
  309. deleteStatus, tipsMsg, _, tableList, err, errMsg := data.DeleteChartPublicClassifyCheck(req.ClassifyId, c.SysUser)
  310. if errMsg != `` {
  311. br.Msg = errMsg
  312. br.ErrMsg = errMsg
  313. if err != nil {
  314. br.ErrMsg = err.Error()
  315. } else {
  316. br.IsSendEmail = false
  317. }
  318. return
  319. }
  320. if c.Lang == "en" {
  321. if utils.ViperConfig.InConfig(tipsMsg) {
  322. tipsMsg = utils.ViperConfig.GetString(tipsMsg)
  323. }
  324. }
  325. //var deleteStatus int
  326. //var tipsMsg string
  327. ////删除公共分类
  328. //if req.ClassifyId > 0 && req.ChartInfoId == 0 {
  329. // //判断公共分类下,是否含有指标
  330. // count, err := data_manage.GetChartInfoCountByClassifyId(req.ClassifyId)
  331. // if err != nil {
  332. // br.Msg = "删除失败"
  333. // br.ErrMsg = "公共分类下是否含有指标失败,Err:" + err.Error()
  334. // return
  335. // }
  336. //
  337. // if count > 0 {
  338. // deleteStatus = 1
  339. // tipsMsg = "若目录关联指标不可删除"
  340. // }
  341. //}
  342. //
  343. //if deleteStatus != 1 && req.ChartInfoId == 0 {
  344. // classifyCount, err := data_manage.GetClassifyCountByClassifyId(req.ClassifyId)
  345. // if err != nil && !utils.IsErrNoRow(err) {
  346. // br.Msg = "删除失败"
  347. // br.ErrMsg = "公共分类下是否含有指标失败,Err:" + err.Error()
  348. // return
  349. // }
  350. // if classifyCount > 0 {
  351. // deleteStatus = 2
  352. // tipsMsg = "确认删除当前目录及包含的子目录吗"
  353. // }
  354. //}
  355. //
  356. ////删除指标
  357. //if req.ChartInfoId > 0 {
  358. // //判断指标是否用于作图,如果用于作图,则不可删除
  359. // chartCount, err := data_manage.GetChartChartMappingCount(req.ChartInfoId)
  360. // if err != nil && !utils.IsErrNoRow(err) {
  361. // br.Msg = "删除失败"
  362. // br.ErrMsg = "判断指标是否被用于作图失败,Err:" + err.Error()
  363. // return
  364. // }
  365. // if chartCount > 0 {
  366. // deleteStatus = 3
  367. // tipsMsg = "当前指标已用作画图,不可删除"
  368. // }
  369. // //判断指标是否用于计算
  370. // {
  371. // calculateCount, err := data_manage.GetChartInfoCalculateMappingCount(req.ChartInfoId)
  372. // if err != nil && !utils.IsErrNoRow(err) {
  373. // br.Msg = "删除失败"
  374. // br.ErrMsg = "判断指标是否被用于计算失败,GetChartInfoCalculateCount Err:" + err.Error()
  375. // return
  376. // }
  377. // if calculateCount > 0 {
  378. // deleteStatus = 4
  379. // tipsMsg = "当前指标已用作,指标运算,不可删除"
  380. // }
  381. // }
  382. //}
  383. resp := new(data_manage.ClassifyDeleteCheckResp)
  384. resp.DeleteStatus = deleteStatus
  385. resp.TipsMsg = tipsMsg
  386. resp.TableList = tableList
  387. br.Ret = 200
  388. br.Msg = "检测成功"
  389. br.Success = true
  390. br.Data = resp
  391. }
  392. // DeleteChartClassify
  393. // @Title 删除公共分类/指标
  394. // @Description 删除公共分类/指标接口
  395. // @Param request body request.PublicClassifyDeleteCheckReq true "type json string"
  396. // @Success 200 Ret=200 删除成功
  397. // @router /chart_public/classify/delete [post]
  398. func (c *ChartPublicClassifyController) DeleteClassify() {
  399. br := new(models.BaseResponse).Init()
  400. defer func() {
  401. c.Data["json"] = br
  402. c.ServeJSON()
  403. }()
  404. sysUser := c.SysUser
  405. if sysUser == nil {
  406. br.Msg = "请登录"
  407. br.ErrMsg = "请登录,SysUser Is Empty"
  408. br.Ret = 408
  409. return
  410. }
  411. var req request.PublicClassifyDeleteCheckReq
  412. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  413. if err != nil {
  414. br.Msg = "参数解析异常!"
  415. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  416. return
  417. }
  418. if req.ClassifyId < 0 {
  419. br.Msg = "参数错误"
  420. br.IsSendEmail = false
  421. return
  422. }
  423. nextItem, _, err, errMsg := data.DeleteChartPublicClassify(req.ClassifyId, sysUser, string(c.Ctx.Input.RequestBody), c.Ctx.Input.URI())
  424. if errMsg != `` {
  425. br.Msg = errMsg
  426. br.ErrMsg = errMsg
  427. if err != nil {
  428. br.ErrMsg = err.Error()
  429. } else {
  430. br.IsSendEmail = false
  431. }
  432. return
  433. }
  434. resp := data_manage.AddChartInfoResp{}
  435. if nextItem != nil {
  436. resp = data_manage.AddChartInfoResp{
  437. ChartInfoId: nextItem.ChartInfoId,
  438. UniqueCode: nextItem.UniqueCode,
  439. }
  440. }
  441. br.Ret = 200
  442. br.Msg = "删除成功"
  443. br.Success = true
  444. br.IsAddLog = true
  445. br.Data = resp
  446. }