balance_table.go 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. package excel
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/models"
  5. "eta/eta_api/models/data_manage/excel"
  6. "eta/eta_api/models/data_manage/excel/request"
  7. "eta/eta_api/models/data_manage/excel/response"
  8. "eta/eta_api/models/system"
  9. "eta/eta_api/services/data/data_manage_permission"
  10. excel2 "eta/eta_api/services/data/excel"
  11. "eta/eta_api/utils"
  12. "strconv"
  13. "strings"
  14. "time"
  15. )
  16. // GetChildTable
  17. // @Title 获取子表
  18. // @Description 获取子表
  19. // @Param request body request.MixedTableCellDataReq true "type json string"
  20. // @router /excel_info/child_table [get]
  21. func (c *ExcelInfoController) GetChildTable() {
  22. br := new(models.BaseResponse).Init()
  23. defer func() {
  24. c.Data["json"] = br
  25. c.ServeJSON()
  26. }()
  27. sysUser := c.SysUser
  28. if sysUser == nil {
  29. br.Msg = "请登录"
  30. br.ErrMsg = "请登录,SysUser Is Empty"
  31. br.Ret = 408
  32. return
  33. }
  34. parentId, _ := c.GetInt("ParentId")
  35. if parentId <= 0 {
  36. br.Msg = "请选择父表"
  37. return
  38. }
  39. list := make([]*excel.ExcelInfo, 0)
  40. // 查询所有子表
  41. childList, err := excel.GetChildExcelInfoByParentId(parentId)
  42. if err != nil {
  43. br.Msg = "查询子表失败"
  44. return
  45. }
  46. if len(childList) > 0 {
  47. list = childList
  48. }
  49. data := &response.BalanceChildTableResp{List: list}
  50. br.Ret = 200
  51. br.Success = true
  52. br.Msg = "查询成功"
  53. br.Data = data
  54. }
  55. // Rename
  56. // @Title 表格重命名接口
  57. // @Description 表格重命名接口
  58. // @Param request body request.EditExcelInfoReq true "type json string"
  59. // @Success 200 {object} response.AddExcelInfoResp
  60. // @router /excel_info/rename [post]
  61. func (c *ExcelInfoController) Rename() {
  62. br := new(models.BaseResponse).Init()
  63. defer func() {
  64. c.Data["json"] = br
  65. c.ServeJSON()
  66. }()
  67. sysUser := c.SysUser
  68. if sysUser == nil {
  69. br.Msg = "请登录"
  70. br.ErrMsg = "请登录,SysUser Is Empty"
  71. br.Ret = 408
  72. return
  73. }
  74. var req request.RenameExcelInfoReq
  75. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  76. if err != nil {
  77. br.Msg = "参数解析异常!"
  78. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  79. return
  80. }
  81. if req.ExcelInfoId <= 0 {
  82. br.Msg = "请传入ETA表格标识!"
  83. return
  84. }
  85. req.ExcelName = strings.Trim(req.ExcelName, " ")
  86. if req.ExcelName == "" {
  87. br.Msg = "请填写表格名称!"
  88. br.IsSendEmail = false
  89. return
  90. }
  91. excelInfo, err := excel.GetExcelInfoById(req.ExcelInfoId)
  92. if err != nil {
  93. br.Msg = "获取ETA表格失败"
  94. br.ErrMsg = "获取ETA表格失败,Err:" + err.Error()
  95. return
  96. }
  97. //判断表格是否存在
  98. var condition string
  99. var pars []interface{}
  100. condition += " AND excel_info_id != ? AND excel_classify_id=? AND excel_name=? AND parent_id=?"
  101. pars = append(pars, req.ExcelInfoId, excelInfo.ExcelClassifyId, req.ExcelName, excelInfo.ParentId)
  102. // 获取分类下是否存在该表格名称
  103. count, err := excel.GetExcelInfoCountByCondition(condition, pars)
  104. if err != nil {
  105. br.Msg = "ETA判断表格名称是否存在失败"
  106. br.ErrMsg = "判断ETA表格名称是否存在失败,Err:" + err.Error()
  107. return
  108. }
  109. if count > 0 {
  110. br.Msg = "ETA表格名称已存在,请重新填写"
  111. br.IsSendEmail = false
  112. return
  113. }
  114. // todo 操作权限校验, 增加协作人判断
  115. {
  116. // 数据权限
  117. haveOperaAuth, err := data_manage_permission.CheckExcelPermissionByExcelInfoId(excelInfo.ExcelInfoId, excelInfo.ExcelClassifyId, excelInfo.IsJoinPermission, c.SysUser.AdminId)
  118. if err != nil {
  119. br.Msg = "获取ETA表格失败"
  120. br.ErrMsg = "获取ETA表格权限失败,Err:" + err.Error()
  121. return
  122. }
  123. button := excel2.GetExcelInfoOpButton(sysUser, excelInfo.SysUserId, excelInfo.Source, haveOperaAuth)
  124. if !button.OpButton {
  125. br.Msg = "无操作权限"
  126. br.Msg = "无操作权限"
  127. br.IsSendEmail = false
  128. return
  129. }
  130. }
  131. excelInfo.ModifyTime = time.Now()
  132. excelInfo.ExcelName = req.ExcelName
  133. excelInfo.UpdateUserId = sysUser.AdminId
  134. excelInfo.UpdateUserRealName = sysUser.RealName
  135. // 自动保存时不会传缩略图,也就不更新这个字段
  136. updateExcelInfoParams := []string{"ModifyTime", "ExcelName", "UpdateUserId", "UpdateUserRealName"}
  137. err = excelInfo.Update(updateExcelInfoParams)
  138. if err != nil {
  139. br.Msg = "保存失败"
  140. br.ErrMsg = "保存失败,Err:" + err.Error()
  141. return
  142. }
  143. resp := response.AddExcelInfoResp{
  144. ExcelInfoId: excelInfo.ExcelInfoId,
  145. UniqueCode: excelInfo.UniqueCode,
  146. }
  147. //删除公共图库那边的缓存
  148. _ = utils.Rc.Delete(utils.HZ_CHART_LIB_EXCEL_TABLE_DETAIL + ":" + excelInfo.UniqueCode)
  149. br.Ret = 200
  150. br.Success = true
  151. br.Msg = "修改成功"
  152. br.Data = resp
  153. br.IsAddLog = true
  154. }
  155. // SaveExcelWorker
  156. // @Title 新增编辑表格协作人接口
  157. // @Description 新增编辑表格协作人接口
  158. // @Param request body request.EditExcelInfoReq true "type json string"
  159. // @Success 200 {object} response.AddExcelInfoResp
  160. // @router /excel_info/worker/save [post]
  161. func (c *ExcelInfoController) SaveExcelWorker() {
  162. br := new(models.BaseResponse).Init()
  163. defer func() {
  164. c.Data["json"] = br
  165. c.ServeJSON()
  166. }()
  167. sysUser := c.SysUser
  168. if sysUser == nil {
  169. br.Msg = "请登录"
  170. br.ErrMsg = "请登录,SysUser Is Empty"
  171. br.Ret = 408
  172. return
  173. }
  174. var req request.SaveExcelInfoWorkerReq
  175. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  176. if err != nil {
  177. br.Msg = "参数解析异常!"
  178. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  179. return
  180. }
  181. if req.ExcelInfoId <= 0 {
  182. br.Msg = "请传入ETA表格标识!"
  183. return
  184. }
  185. excelInfo, err := excel.GetExcelInfoById(req.ExcelInfoId)
  186. if err != nil {
  187. br.Msg = "获取ETA表格失败"
  188. br.ErrMsg = "获取ETA表格失败,Err:" + err.Error()
  189. return
  190. }
  191. if excelInfo.SysUserId != sysUser.AdminId {
  192. br.Msg = "您没有权限操作!"
  193. br.ErrMsg = "您没有权限操作!"
  194. return
  195. }
  196. // todo 操作权限校验, 增加协作人判断
  197. {
  198. // 数据权限
  199. haveOperaAuth, err := data_manage_permission.CheckExcelPermissionByExcelInfoId(excelInfo.ExcelInfoId, excelInfo.ExcelClassifyId, excelInfo.IsJoinPermission, c.SysUser.AdminId)
  200. if err != nil {
  201. br.Msg = "获取ETA表格失败"
  202. br.ErrMsg = "获取ETA表格权限失败,Err:" + err.Error()
  203. return
  204. }
  205. button := excel2.GetExcelInfoOpButton(sysUser, excelInfo.SysUserId, excelInfo.Source, haveOperaAuth)
  206. if !button.OpButton {
  207. br.Msg = "无操作权限"
  208. br.Msg = "无操作权限"
  209. br.IsSendEmail = false
  210. return
  211. }
  212. }
  213. obj := new(excel.ExcelWorker)
  214. notDeleteWorkerIds := make([]string, 0)
  215. workerMap := make(map[int]struct{})
  216. if req.SysUserIds != "" {
  217. notDeleteWorkerIds = strings.Split(req.SysUserIds, ",")
  218. }
  219. existList, err := obj.GetByExcelInfoId(req.ExcelInfoId)
  220. if err != nil {
  221. br.Msg = "获取表格协作人失败!"
  222. br.ErrMsg = "获取表格协作人失败,Err:" + err.Error()
  223. return
  224. }
  225. for _, v := range existList {
  226. workerMap[v.SysUserId] = struct{}{}
  227. }
  228. addIds := make([]int, 0)
  229. for _, v := range notDeleteWorkerIds {
  230. id, _ := strconv.Atoi(v)
  231. if _, ok := workerMap[id]; !ok {
  232. addIds = append(addIds, id)
  233. }
  234. }
  235. // 查询协作人姓名
  236. adminList, err := system.GetAdminListByIdListWithoutEnable(addIds)
  237. addList := make([]*excel.ExcelWorker, 0)
  238. for _, v := range adminList {
  239. addList = append(addList, &excel.ExcelWorker{
  240. ExcelInfoId: req.ExcelInfoId,
  241. SysUserId: v.AdminId,
  242. SysUserRealName: v.RealName,
  243. CreateTime: time.Now(),
  244. ModifyTime: time.Now(),
  245. })
  246. }
  247. // 保存协作人
  248. err = obj.AddWorker(req.ExcelInfoId, addList, notDeleteWorkerIds)
  249. if err != nil {
  250. br.Msg = "保存失败"
  251. br.ErrMsg = "保存失败,Err:" + err.Error()
  252. return
  253. }
  254. br.Ret = 200
  255. br.Success = true
  256. br.Msg = "操作成功"
  257. }
  258. // GetWorker
  259. // @Title 查询协作人接口
  260. // @Description 新增编辑表格协作人接口
  261. // @Param request body request.EditExcelInfoReq true "type json string"
  262. // @Success 200 {object} response.AddExcelInfoResp
  263. // @router /excel_info/worker [get]
  264. func (c *ExcelInfoController) GetWorker() {
  265. br := new(models.BaseResponse).Init()
  266. defer func() {
  267. c.Data["json"] = br
  268. c.ServeJSON()
  269. }()
  270. sysUser := c.SysUser
  271. if sysUser == nil {
  272. br.Msg = "请登录"
  273. br.ErrMsg = "请登录,SysUser Is Empty"
  274. br.Ret = 408
  275. return
  276. }
  277. excelInfoId, _ := c.GetInt("ExcelInfoId")
  278. if excelInfoId <= 0 {
  279. br.Msg = "请选择表格"
  280. br.ErrMsg = "ExcelInfoId未传"
  281. br.IsSendEmail = false
  282. return
  283. }
  284. obj := new(excel.ExcelWorker)
  285. list, err := obj.GetByExcelInfoId(excelInfoId)
  286. if err != nil {
  287. br.Msg = "获取表格协作人失败!"
  288. br.ErrMsg = "获取表格协作人失败,Err:" + err.Error()
  289. return
  290. }
  291. data := &response.BalanceTableWorkerResp{List: list}
  292. br.Data = data
  293. br.Ret = 200
  294. br.Success = true
  295. br.Msg = "操作成功"
  296. }