safe_audit.service.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. /*
  2. * @description: 安全巡检审批相关
  3. * @Author: LanJianRong
  4. * @Date: 2020-12-18
  5. * @FilePath: \construction_management\web\api\safe_rpc_api.go
  6. */
  7. package services
  8. import (
  9. "errors"
  10. "log"
  11. "github.com/kataras/iris/v12"
  12. "go.mod/dao"
  13. "go.mod/datasource"
  14. "go.mod/web/viewmodels"
  15. )
  16. type SafeAuditService interface {
  17. ValidRule(ctx iris.Context) (viewmodels.SafeAudit, error)
  18. AddAuditor(safeId int, bId int, auditId int, times int) error
  19. CloseAudit(id int, opinion string, curUid int, saveId int) error
  20. BackAudit(id int, opinion string, curUid int, saveId int, auditId int, progress string) error
  21. PassAudit(id int, uid int, auditId int, opinion string) error
  22. }
  23. type safeAuditService struct {
  24. validAdd string
  25. validPass string
  26. validClose string
  27. validBack string
  28. daoSafeAudit *dao.SafeAuditDao
  29. daoSafe *dao.SafeDao
  30. }
  31. //创建项目用户service
  32. func NewSafeAuditService() SafeAuditService {
  33. return &safeAuditService{
  34. validBack: "/api/safe_audit/back",
  35. validAdd: "/api/safe_audit/add",
  36. validClose: "/api/safe_audit/close",
  37. validPass: "/api/safe_audit/pass",
  38. daoSafeAudit: dao.NewSafeAuditDao(datasource.InstanceDbMaster()),
  39. daoSafe: dao.NewSafeDao(datasource.InstanceDbMaster()),
  40. }
  41. }
  42. // 增加审批人
  43. func (s *safeAuditService) AddAuditor(safeId int, bId int, auditId int, times int) error {
  44. err := s.daoSafeAudit.AddAuditor(safeId, bId, auditId, times)
  45. return err
  46. }
  47. // 关闭审批流程
  48. func (s *safeAuditService) CloseAudit(id int, opinion string, curUid int, saveId int) error {
  49. auditor, err := s.daoSafeAudit.FindById(id)
  50. if err != nil {
  51. return err
  52. }
  53. if auditor.AuditId != curUid {
  54. return errors.New("该用户没有审批权限!")
  55. }
  56. // 更改cm_safe_audit的记录
  57. err = s.daoSafeAudit.ChangeStatusById(id, opinion, 3)
  58. if err != nil {
  59. return err
  60. }
  61. // 更改cm_safe的记录
  62. err = s.daoSafe.ChangeStatus(saveId, 3, auditor.Times)
  63. if err != nil {
  64. return err
  65. }
  66. return nil
  67. }
  68. // 审批退回
  69. func (s *safeAuditService) BackAudit(id int, opinion string, curUid int, saveId int, auditId int, progress string) error {
  70. auditor, err := s.daoSafeAudit.FindById(id)
  71. if err != nil {
  72. return err
  73. }
  74. if auditor.AuditId != curUid {
  75. return errors.New("该用户没有审批权限!")
  76. }
  77. // 更改cm_safe_audit的记录
  78. err = s.daoSafeAudit.ChangeStatusById(id, opinion, 2)
  79. if err != nil {
  80. return err
  81. }
  82. safeData := s.daoSafe.FindById(saveId)
  83. // 拷贝审批流程
  84. // 退回检查人-uncheck
  85. // 整改人审批退回-checking
  86. // 复查人审批退回-checkNo
  87. // 审批组退回-checked
  88. err = s.daoSafeAudit.CopyAuditors(saveId, safeData.Times, progress, auditId)
  89. if err != nil {
  90. return err
  91. }
  92. // 更改cm_safe的记录
  93. err = s.daoSafe.ChangeStatus(saveId, 2, auditor.Times+1)
  94. if err != nil {
  95. return err
  96. }
  97. return nil
  98. }
  99. // 审批通过
  100. func (s *safeAuditService) PassAudit(id int, uid int, auditId int, opinion string) error {
  101. auditor, err := s.daoSafeAudit.FindById(id)
  102. if err != nil {
  103. return err
  104. }
  105. if auditor.AuditId != uid {
  106. return errors.New("该用户没有审批权限!")
  107. }
  108. if auditId != 0 {
  109. // 审批人选择了整改人
  110. err := s.daoSafeAudit.ChangeStatusById(auditor.Id, "", 1)
  111. if err != nil {
  112. return err
  113. }
  114. err = s.daoSafeAudit.AddCheckWorker(id, auditId, opinion)
  115. if err != nil {
  116. return err
  117. }
  118. } else {
  119. err := s.daoSafeAudit.ChangeStatusById(auditor.Id, "", 1)
  120. if err != nil {
  121. return err
  122. }
  123. }
  124. return nil
  125. }
  126. // 规则校验
  127. func (s *safeAuditService) ValidRule(ctx iris.Context) (viewmodels.SafeAudit, error) {
  128. safeAuditVaild := viewmodels.SafeAudit{}
  129. if ctx.Method() == "POST" {
  130. err := ctx.ReadJSON(&safeAuditVaild)
  131. if err != nil {
  132. log.Println("safe-ValidRule-ReadJson转换异常, error=", err)
  133. return safeAuditVaild, err
  134. }
  135. if ctx.Path() == s.validAdd {
  136. err = safeAuditVaild.ValidateAddAuditor()
  137. return safeAuditVaild, err
  138. } else if ctx.Path() == s.validClose {
  139. err = safeAuditVaild.ValidateClose()
  140. return safeAuditVaild, err
  141. } else if ctx.Path() == s.validBack {
  142. err = safeAuditVaild.ValidateBack()
  143. return safeAuditVaild, err
  144. } else if ctx.Path() == s.validPass {
  145. err = safeAuditVaild.ValidatePass()
  146. return safeAuditVaild, err
  147. }
  148. return safeAuditVaild, err
  149. }
  150. return safeAuditVaild, nil
  151. }