bi_approve.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446
  1. package biapprove
  2. import (
  3. "encoding/json"
  4. "eta_gn/eta_api/controllers"
  5. "eta_gn/eta_api/models"
  6. "eta_gn/eta_api/models/bi_approve/request"
  7. "eta_gn/eta_api/models/bi_approve/response"
  8. biapprove "eta_gn/eta_api/services/bi_approve"
  9. "eta_gn/eta_api/utils"
  10. "fmt"
  11. "github.com/rdlucklib/rdluck_tools/paging"
  12. )
  13. type BiApproveController struct {
  14. controllers.BaseAuthController
  15. }
  16. // @router /list [get]
  17. func (this *BiApproveController) List() {
  18. br := new(models.BaseResponse).Init()
  19. defer func() {
  20. if br.ErrMsg == "" {
  21. br.IsSendEmail = false
  22. }
  23. this.Data["json"] = br
  24. this.ServeJSON()
  25. }()
  26. sysUser := this.SysUser
  27. pageSize, _ := this.GetInt("PageSize")
  28. currentIndex, _ := this.GetInt("CurrentIndex")
  29. listType, _ := this.GetInt("ListType")
  30. approveState, _ := this.GetInt("ApproveState")
  31. timeType, _ := this.GetInt("TimeType")
  32. startTime := this.GetString("StartTime")
  33. endTime := this.GetString("EndTime")
  34. sortField, _ := this.GetInt("SortField")
  35. sortRule, _ := this.GetInt("SortRule")
  36. classifyId, _ := this.GetInt("ClassifyId")
  37. keyword := this.GetString("Keyword")
  38. if pageSize <= 0 {
  39. pageSize = utils.PageSize10
  40. }
  41. if currentIndex <= 0 {
  42. currentIndex = 1
  43. }
  44. startSize := paging.StartIndex(currentIndex, pageSize)
  45. var list []*response.BiApproveItemOrmResp
  46. var total int
  47. var msg string
  48. var err error
  49. classifyList, msg, err := biapprove.GetBiClassifyAll()
  50. if err != nil {
  51. if msg != "" {
  52. br.Msg = msg
  53. } else {
  54. br.Msg = "获取审批列表成功"
  55. }
  56. br.ErrMsg = "获取分类列表失败, Err: " + err.Error()
  57. return
  58. }
  59. classifyMap := make(map[int]string)
  60. for _, v := range classifyList {
  61. classifyMap[v.BiDashboardClassifyId] = v.BiDashboardClassifyName
  62. }
  63. switch listType {
  64. case 1:
  65. list, total, msg, err = biapprove.ProcessingBiApprove(sysUser.AdminId, classifyId, timeType, sortField, sortRule, startSize, pageSize, sysUser.RealName, startTime, endTime, keyword)
  66. case 2:
  67. list, total, msg, err = biapprove.SolvedBiApprove(sysUser.AdminId, classifyId, timeType, sortField, sortRule, approveState, startSize, pageSize, sysUser.RealName, startTime, endTime, keyword)
  68. case 3:
  69. list, total, msg, err = biapprove.MyApplyBiApproves(sysUser.AdminId, classifyId, timeType, sortField, sortRule, approveState, startSize, pageSize, sysUser.RealName, startTime, endTime, keyword)
  70. default:
  71. br.Msg = "列表类型错误"
  72. return
  73. }
  74. if err != nil {
  75. if msg != "" {
  76. br.Msg = msg
  77. } else {
  78. br.Msg = "获取审批列表失败"
  79. }
  80. br.ErrMsg = "获取审批列表失败, Err: " + err.Error()
  81. return
  82. }
  83. for _, v := range list {
  84. v.ClassifyName = classifyMap[v.ClassifyId]
  85. }
  86. resp := new(response.BiApproveListResp)
  87. page := paging.GetPaging(currentIndex, pageSize, total)
  88. resp.List = list
  89. resp.Paging = page
  90. br.Msg = "获取审批列表成功"
  91. br.Data = resp
  92. br.Ret = 200
  93. br.Success = true
  94. }
  95. // @router /classify/list [get]
  96. func (this *BiApproveController) ClassifyList() {
  97. br := new(models.BaseResponse).Init()
  98. defer func() {
  99. if br.ErrMsg == "" {
  100. br.IsSendEmail = false
  101. }
  102. this.Data["json"] = br
  103. this.ServeJSON()
  104. }()
  105. res, msg, err := biapprove.GetPulicBiClassifyList()
  106. if err != nil {
  107. if msg == "" {
  108. br.Msg = "获取分类列表失败"
  109. } else {
  110. br.Msg = msg
  111. }
  112. br.ErrMsg = err.Error()
  113. return
  114. }
  115. br.Data = res
  116. br.Msg = "获取分类列表成功"
  117. br.Ret = 200
  118. br.Success = true
  119. }
  120. // @router /approve [post]
  121. func (this *BiApproveController) Approve() {
  122. br := new(models.BaseResponse).Init()
  123. defer func() {
  124. if br.ErrMsg == "" {
  125. br.IsSendEmail = false
  126. }
  127. this.Data["json"] = br
  128. this.ServeJSON()
  129. }()
  130. sysUser := this.SysUser
  131. if sysUser == nil {
  132. br.Msg = "请登录"
  133. br.ErrMsg = "请登录,SysUser Is Empty"
  134. br.Ret = 408
  135. return
  136. }
  137. var req request.BiApprovePassReq
  138. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  139. br.Msg = "参数有误"
  140. br.ErrMsg = "参数解析失败, Err: " + e.Error()
  141. return
  142. }
  143. if req.BiApproveId <= 0 {
  144. br.Msg = "参数有误"
  145. br.ErrMsg = fmt.Sprintf("参数有误, BiApproveId: %d", req.BiApproveId)
  146. return
  147. }
  148. msg, err := biapprove.PassBiApprove(req.BiApproveId, sysUser.AdminId)
  149. if err != nil {
  150. if msg != "" {
  151. br.Msg = msg
  152. } else {
  153. br.Msg = "操作失败"
  154. }
  155. br.ErrMsg = "通过审批失败, Err: " + err.Error()
  156. return
  157. }
  158. br.Ret = 200
  159. br.Success = true
  160. br.Msg = "操作成功"
  161. }
  162. // @router /detail [get]
  163. func (this *BiApproveController) Detail() {
  164. br := new(models.BaseResponse).Init()
  165. defer func() {
  166. if br.ErrMsg == "" {
  167. br.IsSendEmail = false
  168. }
  169. this.Data["json"] = br
  170. this.ServeJSON()
  171. }()
  172. sysUser := this.SysUser
  173. if sysUser == nil {
  174. br.Msg = "请登录"
  175. br.ErrMsg = "请登录,SysUser Is Empty"
  176. br.Ret = 408
  177. return
  178. }
  179. approveId, _ := this.GetInt("BiApproveId")
  180. if approveId <= 0 {
  181. br.Msg = "参数有误"
  182. br.ErrMsg = fmt.Sprintf("参数有误, BiApproveId: %d", approveId)
  183. return
  184. }
  185. resp, msg, err := biapprove.GetApproveDetail(approveId)
  186. if err != nil {
  187. if msg != "" {
  188. br.Msg = msg
  189. } else {
  190. br.Msg = "获取审批详情失败"
  191. }
  192. br.ErrMsg = "获取审批详情失败, Err: " + err.Error()
  193. return
  194. }
  195. br.Data = resp
  196. br.Ret = 200
  197. br.Success = true
  198. br.Msg = "获取成功"
  199. }
  200. // @router /refuse [post]
  201. func (this *BiApproveController) Refuse() {
  202. br := new(models.BaseResponse).Init()
  203. defer func() {
  204. if br.ErrMsg == "" {
  205. br.IsSendEmail = false
  206. }
  207. this.Data["json"] = br
  208. this.ServeJSON()
  209. }()
  210. sysUser := this.SysUser
  211. if sysUser == nil {
  212. br.Msg = "请登录"
  213. br.ErrMsg = "请登录,SysUser Is Empty"
  214. br.Ret = 408
  215. return
  216. }
  217. var req request.BiApproveRefuseReq
  218. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  219. br.Msg = "参数有误"
  220. br.ErrMsg = "参数解析失败, Err: " + e.Error()
  221. return
  222. }
  223. if req.BiApproveId <= 0 {
  224. br.Msg = "参数有误"
  225. br.ErrMsg = fmt.Sprintf("参数有误, BiApproveId: %d", req.BiApproveId)
  226. return
  227. }
  228. maxStrLen := 500
  229. approvelen := len([]rune(req.ApproveRemark))
  230. if approvelen > maxStrLen {
  231. br.Msg = fmt.Sprintf("审批驳回原因不能超过%d字", maxStrLen)
  232. return
  233. }
  234. msg, err := biapprove.BiApproveRefuse(req.BiApproveId, sysUser.AdminId, req.ApproveRemark)
  235. if err != nil {
  236. if msg != "" {
  237. br.Msg = msg
  238. } else {
  239. br.Msg = "操作失败"
  240. }
  241. br.ErrMsg = "驳回审批失败, Err: " + err.Error()
  242. return
  243. }
  244. br.Ret = 200
  245. br.Success = true
  246. br.Msg = "操作成功"
  247. }
  248. // @router /cancel [post]
  249. func (this *BiApproveController) Cancel() {
  250. br := new(models.BaseResponse).Init()
  251. defer func() {
  252. if br.ErrMsg == "" {
  253. br.IsSendEmail = false
  254. }
  255. this.Data["json"] = br
  256. this.ServeJSON()
  257. }()
  258. sysUser := this.SysUser
  259. if sysUser == nil {
  260. br.Msg = "请登录"
  261. br.ErrMsg = "请登录,SysUser Is Empty"
  262. br.Ret = 408
  263. return
  264. }
  265. var req request.BiApproveCancelReq
  266. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  267. br.Msg = "参数有误"
  268. br.ErrMsg = "参数解析失败, Err: " + e.Error()
  269. return
  270. }
  271. if req.BiApproveId <= 0 {
  272. br.Msg = "参数有误"
  273. br.ErrMsg = fmt.Sprintf("参数有误, BiApproveId: %d", req.BiApproveId)
  274. return
  275. }
  276. msg, e := biapprove.BiApproveCancel(req.BiApproveId, sysUser.AdminId, sysUser.RealName)
  277. if e != nil {
  278. if msg != "" {
  279. br.Msg = msg
  280. } else {
  281. br.Msg = "操作失败"
  282. }
  283. br.ErrMsg = "撤销审批失败, Err: " + e.Error()
  284. return
  285. }
  286. br.Ret = 200
  287. br.Success = true
  288. br.Msg = "操作成功"
  289. }
  290. // @router /message/list [get]
  291. func (this *BiApproveController) MessageList() {
  292. br := new(models.BaseResponse).Init()
  293. defer func() {
  294. if br.ErrMsg == "" {
  295. br.IsSendEmail = false
  296. }
  297. this.Data["json"] = br
  298. this.ServeJSON()
  299. }()
  300. sysUser := this.SysUser
  301. if sysUser == nil {
  302. br.Msg = "请登录"
  303. br.ErrMsg = "请登录,SysUser Is Empty"
  304. br.Ret = 408
  305. return
  306. }
  307. currentIndex, _ := this.GetInt("currentIndex")
  308. pageSize, _ := this.GetInt("pageSize")
  309. var startSize int
  310. if pageSize <= 0 {
  311. pageSize = utils.PageSize20
  312. }
  313. if currentIndex <= 0 {
  314. currentIndex = 1
  315. }
  316. startSize = utils.StartIndex(currentIndex, pageSize)
  317. resp := new(response.BiApproveMessageListResp)
  318. resp.List = make([]*response.BiApproveMessageItem, 0)
  319. list, total, unRead, msg, err := biapprove.GetBiApproveMessage(sysUser.AdminId, startSize, pageSize)
  320. if err != nil {
  321. if msg != "" {
  322. br.Msg = msg
  323. } else {
  324. br.Msg = "获取审批消息失败"
  325. }
  326. br.ErrMsg = "获取审批消息失败, Err: " + err.Error()
  327. return
  328. }
  329. resp.List = list
  330. resp.UnreadTotal = unRead
  331. page := paging.GetPaging(currentIndex, pageSize, total)
  332. resp.Paging = page
  333. br.Data = resp
  334. br.Ret = 200
  335. br.Success = true
  336. br.Msg = "获取成功"
  337. }
  338. // @router /message/read [post]
  339. func (this *BiApproveController) MessageRead() {
  340. br := new(models.BaseResponse).Init()
  341. defer func() {
  342. if br.ErrMsg == "" {
  343. br.IsSendEmail = false
  344. }
  345. this.Data["json"] = br
  346. this.ServeJSON()
  347. }()
  348. sysUser := this.SysUser
  349. if sysUser == nil {
  350. br.Msg = "请登录"
  351. br.ErrMsg = "请登录,SysUser Is Empty"
  352. br.Ret = 408
  353. return
  354. }
  355. var req request.BiApproveMessageReadReq
  356. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  357. br.Msg = "参数有误"
  358. br.ErrMsg = "参数解析失败, Err: " + e.Error()
  359. return
  360. }
  361. if req.MessageId <= 0 {
  362. br.Msg = "参数有误"
  363. br.ErrMsg = fmt.Sprintf("参数有误, MessageId: %d", req.MessageId)
  364. return
  365. }
  366. msg, err := biapprove.ReadBiMessage(req.MessageId, sysUser.AdminId)
  367. if err != nil {
  368. if msg != "" {
  369. br.Msg = msg
  370. } else {
  371. br.Msg = "操作失败"
  372. }
  373. br.ErrMsg = "消息已读失败, Err: " + err.Error()
  374. return
  375. }
  376. br.Ret = 200
  377. br.Success = true
  378. br.Msg = "操作成功"
  379. }
  380. // @router /classify/check_open [post]
  381. func (this *BiApproveController) CheckApproveOpen() {
  382. br := new(models.BaseResponse).Init()
  383. defer func() {
  384. if br.ErrMsg == "" {
  385. br.IsSendEmail = false
  386. }
  387. this.Data["json"] = br
  388. this.ServeJSON()
  389. }()
  390. sysUser := this.SysUser
  391. if sysUser == nil {
  392. br.Msg = "请登录"
  393. br.ErrMsg = "请登录,SysUser Is Empty"
  394. br.Ret = 408
  395. return
  396. }
  397. var req request.BiApproveCheckApproveOpenReq
  398. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  399. br.Msg = "参数有误"
  400. br.ErrMsg = "参数解析失败, Err: " + e.Error()
  401. return
  402. }
  403. opening, e := biapprove.CheckBiOpenApprove(req.ClassifyId)
  404. if e != nil {
  405. br.Msg = "操作失败"
  406. br.ErrMsg = "校验报告是否开启审批流失败, Err: " + e.Error()
  407. return
  408. }
  409. br.Data = opening
  410. br.Ret = 200
  411. br.Success = true
  412. br.Msg = "操作成功"
  413. }