chart_info.go 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. package line_feature
  2. import (
  3. "encoding/json"
  4. "github.com/rdlucklib/rdluck_tools/paging"
  5. "hongze/hongze_ETA_mobile_api/controllers"
  6. "hongze/hongze_ETA_mobile_api/models"
  7. "hongze/hongze_ETA_mobile_api/models/data_manage"
  8. "hongze/hongze_ETA_mobile_api/models/data_manage/line_feature/request"
  9. "hongze/hongze_ETA_mobile_api/services/data"
  10. "hongze/hongze_ETA_mobile_api/utils"
  11. "strconv"
  12. "strings"
  13. "time"
  14. )
  15. // LineFeaturesChartInfoController 统计特征图表管理
  16. type LineFeaturesChartInfoController struct {
  17. controllers.BaseAuthController
  18. }
  19. // Refresh
  20. // @Title 图表刷新接口
  21. // @Description 图表刷新接口
  22. // @Param ChartInfoId query int true "图表id"
  23. // @Param UniqueCode query string true "唯一code"
  24. // @Success Ret=200 刷新成功
  25. // @router /chart_info/refresh [get]
  26. func (this *LineFeaturesChartInfoController) Refresh() {
  27. br := new(models.BaseResponse).Init()
  28. defer func() {
  29. this.Data["json"] = br
  30. this.ServeJSON()
  31. }()
  32. sysUser := this.SysUser
  33. if sysUser == nil {
  34. br.Msg = "请登录"
  35. br.ErrMsg = "请登录,SysUser Is Empty"
  36. br.Ret = 408
  37. return
  38. }
  39. chartInfoId, _ := this.GetInt("ChartInfoId")
  40. uniqueCode := this.GetString("UniqueCode")
  41. if chartInfoId <= 0 && uniqueCode == `` {
  42. br.Msg = "参数错误"
  43. br.ErrMsg = "参数错误:chartInfoId:" + strconv.Itoa(chartInfoId) + ",UniqueCode:" + uniqueCode
  44. return
  45. }
  46. var chartInfo *data_manage.ChartInfo
  47. var err error
  48. if chartInfoId > 0 {
  49. chartInfo, err = data_manage.GetChartInfoById(chartInfoId)
  50. } else {
  51. chartInfo, err = data_manage.GetChartInfoByUniqueCode(uniqueCode)
  52. }
  53. if err != nil {
  54. if err.Error() == utils.ErrNoRow() {
  55. br.Msg = "图表已被删除,无需刷新"
  56. br.ErrMsg = "获取指标信息失败,Err:" + err.Error()
  57. return
  58. }
  59. br.Msg = "刷新失败"
  60. br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
  61. return
  62. }
  63. // 刷新图表的指标信息
  64. err = data.ChartInfoRefreshV2(chartInfo.ChartInfoId)
  65. //清除图表缓存
  66. {
  67. key := utils.HZ_CHART_LIB_DETAIL + chartInfo.UniqueCode
  68. _ = utils.Rc.Delete(key)
  69. }
  70. br.Ret = 200
  71. br.Success = true
  72. br.Msg = "刷新成功"
  73. }
  74. // EnInfoEdit
  75. // @Title 编辑图表英文信息接口
  76. // @Description 编辑图表英文信息接口
  77. // @Param request body data_manage.EditChartEnInfoReq true "type json string"
  78. // @Success Ret=200 编辑成功
  79. // @router /chart_info/en/edit [post]
  80. func (this *LineFeaturesChartInfoController) EnInfoEdit() {
  81. br := new(models.BaseResponse).Init()
  82. defer func() {
  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. var req request.EditChartEnInfoReq
  94. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  95. if err != nil {
  96. br.Msg = "参数解析异常!"
  97. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  98. return
  99. }
  100. req.ChartNameEn = strings.Trim(req.ChartNameEn, " ")
  101. if req.ChartInfoId <= 0 {
  102. br.Msg = "请选择图表"
  103. return
  104. }
  105. if req.ChartNameEn == "" {
  106. br.Msg = "请输入英文图表名称"
  107. return
  108. }
  109. //判断指标名称是否存在
  110. chartItem, err := data_manage.GetChartInfoById(req.ChartInfoId)
  111. if err != nil {
  112. if err.Error() == utils.ErrNoRow() {
  113. br.Msg = "图表已被删除,请刷新页面"
  114. br.ErrMsg = "图表已被删除,请刷新页面"
  115. return
  116. }
  117. br.Msg = "获取图表信息失败"
  118. br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
  119. return
  120. }
  121. // 校验名称是否有重复
  122. {
  123. var condition string
  124. var pars []interface{}
  125. condition += " AND chart_info_id <> ? AND chart_name_en = ? AND source in (?,?,?)"
  126. pars = append(pars, req.ChartInfoId, req.ChartNameEn, utils.CHART_SOURCE_LINE_FEATURE_STANDARD_DEVIATION, utils.CHART_SOURCE_LINE_FEATURE_PERCENTILE, utils.CHART_SOURCE_LINE_FEATURE_FREQUENCY)
  127. existItem, err := data_manage.GetChartInfoByCondition(condition, pars)
  128. if err != nil {
  129. if err.Error() != utils.ErrNoRow() {
  130. br.Msg = "判断英文图表名称是否存在失败"
  131. br.ErrMsg = "判断英文图表名称是否存在失败,Err:" + err.Error()
  132. return
  133. }
  134. }
  135. if err == nil && existItem.ChartInfoId > 0 {
  136. br.Msg = existItem.ChartName + ":" + req.ChartNameEn + "图表名称已存在"
  137. return
  138. }
  139. }
  140. chartItem.ChartNameEn = req.ChartNameEn
  141. chartItem.ModifyTime = time.Now().Local()
  142. if e := chartItem.Update([]string{"ChartNameEn", "ModifyTime"}); e != nil {
  143. br.Msg = "操作失败"
  144. br.ErrMsg = "更新图表信息失败, Err: " + e.Error()
  145. return
  146. }
  147. //添加es数据
  148. go data.EsAddOrEditChartInfo(chartItem.ChartInfoId)
  149. //修改my eta es数据
  150. go data.EsAddOrEditMyChartInfoByChartInfoId(chartItem.ChartInfoId)
  151. //指标 修改es信息
  152. //go data.AddOrEditEdbInfoToEs(edbInfo.EdbInfoId)
  153. //新增操作日志
  154. {
  155. chartLog := new(data_manage.ChartInfoLog)
  156. chartLog.ChartName = chartItem.ChartName
  157. chartLog.ChartInfoId = req.ChartInfoId
  158. chartLog.ChartClassifyId = chartItem.ChartClassifyId
  159. chartLog.SysUserId = sysUser.AdminId
  160. chartLog.SysUserRealName = sysUser.RealName
  161. chartLog.UniqueCode = chartItem.UniqueCode
  162. chartLog.CreateTime = time.Now()
  163. chartLog.Content = string(this.Ctx.Input.RequestBody)
  164. chartLog.Status = "编辑统计特征图表英文信息"
  165. chartLog.Method = this.Ctx.Input.URL()
  166. go data_manage.AddChartInfoLog(chartLog)
  167. }
  168. // 清除缓存
  169. if utils.Re == nil && utils.Rc != nil {
  170. _ = utils.Rc.Delete(utils.HZ_CHART_LIB_DETAIL + chartItem.UniqueCode) //图表分享链接缓存
  171. _ = utils.Rc.Delete(data.GetChartInfoDataKey(req.ChartInfoId))
  172. }
  173. br.Ret = 200
  174. br.Success = true
  175. br.Msg = "编辑成功"
  176. br.IsAddLog = true
  177. }
  178. // SearchByEs
  179. // @Title 图表模糊搜索(从es获取)
  180. // @Description 图表模糊搜索(从es获取)
  181. // @Param Keyword query string true "图表名称"
  182. // @Param IsShowMe query bool true "是否只看我的,true、false"
  183. // @Param Source query int true "来源,3:统计特征,4:滚动统计特征,默认0:全部"
  184. // @Success 200 {object} data_manage.ChartInfo
  185. // @router /chart_info/search_by_es [get]
  186. func (this *LineFeaturesChartInfoController) SearchByEs() {
  187. br := new(models.BaseResponse).Init()
  188. defer func() {
  189. this.Data["json"] = br
  190. this.ServeJSON()
  191. }()
  192. sysUser := this.SysUser
  193. if sysUser == nil {
  194. br.Msg = "请登录"
  195. br.ErrMsg = "请登录,SysUser Is Empty"
  196. br.Ret = 408
  197. return
  198. }
  199. pageSize, _ := this.GetInt("PageSize")
  200. currentIndex, _ := this.GetInt("CurrentIndex")
  201. var startSize int
  202. if pageSize <= 0 {
  203. pageSize = utils.PageSize20
  204. }
  205. if currentIndex <= 0 {
  206. currentIndex = 1
  207. }
  208. startSize = paging.StartIndex(currentIndex, pageSize)
  209. keyword := this.GetString("Keyword")
  210. //只看我的
  211. isShowMe, _ := this.GetBool("IsShowMe")
  212. showSysId := 0
  213. if isShowMe {
  214. showSysId = sysUser.AdminId
  215. }
  216. sourceList := []int{utils.CHART_SOURCE_LINE_FEATURE_STANDARD_DEVIATION, utils.CHART_SOURCE_LINE_FEATURE_PERCENTILE, utils.CHART_SOURCE_LINE_FEATURE_FREQUENCY}
  217. var searchList []*data_manage.ChartInfo
  218. var total int64
  219. var err error
  220. // 获取当前账号的不可见指标
  221. noPermissionChartIdList := make([]int, 0)
  222. {
  223. obj := data_manage.EdbInfoNoPermissionAdmin{}
  224. confList, err := obj.GetAllChartListByAdminId(this.SysUser.AdminId)
  225. if err != nil && err.Error() != utils.ErrNoRow() {
  226. br.Msg = "获取失败"
  227. br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
  228. return
  229. }
  230. for _, v := range confList {
  231. noPermissionChartIdList = append(noPermissionChartIdList, v.ChartInfoId)
  232. }
  233. }
  234. if keyword != "" {
  235. searchList, total, err = data.EsSearchChartInfo(keyword, showSysId, sourceList, noPermissionChartIdList, startSize, pageSize)
  236. } else {
  237. total, searchList, err = data_manage.ChartInfoSearchByEmptyKeyWord(showSysId, sourceList, noPermissionChartIdList)
  238. if err != nil && err.Error() != utils.ErrNoRow() {
  239. br.Msg = "获取失败"
  240. br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
  241. return
  242. }
  243. }
  244. finalList := make([]*data_manage.ChartInfoMore, 0)
  245. if len(searchList) > 0 {
  246. chartInfoIds := ""
  247. chartEdbMap := make(map[int][]*data_manage.ChartEdbInfoMapping)
  248. for _, v := range searchList {
  249. chartInfoIds += strconv.Itoa(v.ChartInfoId) + ","
  250. }
  251. if chartInfoIds != "" {
  252. chartInfoIds = strings.Trim(chartInfoIds, ",")
  253. //判断是否需要展示英文标识
  254. edbList, e := data_manage.GetChartEdbMappingListByChartInfoIds(chartInfoIds)
  255. if e != nil {
  256. br.Msg = "获取失败"
  257. br.ErrMsg = "获取图表,指标信息失败,Err:" + e.Error()
  258. return
  259. }
  260. for _, v := range edbList {
  261. chartEdbMap[v.ChartInfoId] = append(chartEdbMap[v.ChartInfoId], v)
  262. }
  263. }
  264. for _, v := range searchList {
  265. tmp := new(data_manage.ChartInfoMore)
  266. tmp.ChartInfo = *v
  267. //判断是否需要展示英文标识
  268. if _, ok := chartEdbMap[v.ChartInfoId]; ok {
  269. tmp.IsEnChart = data.CheckIsEnChart(v.ChartNameEn, []*data_manage.ChartEdbInfoMapping{}, v.Source, v.ChartType)
  270. }
  271. finalList = append(finalList, tmp)
  272. }
  273. }
  274. //新增搜索词记录
  275. {
  276. searchKeyword := new(data_manage.SearchKeyword)
  277. searchKeyword.KeyWord = keyword
  278. searchKeyword.CreateTime = time.Now()
  279. go data_manage.AddSearchKeyword(searchKeyword)
  280. }
  281. page := paging.GetPaging(currentIndex, pageSize, int(total))
  282. resp := data_manage.ChartInfoListByEsResp{
  283. Paging: page,
  284. List: finalList,
  285. }
  286. br.Ret = 200
  287. br.Success = true
  288. br.Msg = "获取成功"
  289. br.Data = resp
  290. }