quality_audit.service.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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 QualityAuditService interface {
  17. ValidRule(ctx iris.Context) (viewmodels.QualityAudit, error)
  18. ValidStart(ctx iris.Context) (viewmodels.QualityAuditStart, error)
  19. // AddAuditor(safeId int, bId int, auditId int, times int) error
  20. CloseAudit(id int, opinion string, curUid int, saveId int) error
  21. BackAudit(id int, opinion string, curUid int, saveId int, auditId int) error
  22. PassAudit(id int, uid int, auditId int, opinion string, rectifiedInfo string) error
  23. StartAudit(safeId int, bidsectionId int, auditors []int, reAuditors []int, uid int, pid int) error
  24. }
  25. type qualityAuditService struct {
  26. validAdd string
  27. validPass string
  28. validClose string
  29. validBack string
  30. daoQualityAudit *dao.QualityAuditDao
  31. daoQuality *dao.QualityDao
  32. daoApprover *dao.ApproverDao
  33. }
  34. //创建项目用户service
  35. func NewQualityAuditService() QualityAuditService {
  36. return &qualityAuditService{
  37. validBack: "/api/quality_audit/back",
  38. validAdd: "/api/quality_audit/add",
  39. validClose: "/api/quality_audit/close",
  40. validPass: "/api/quality_audit/pass",
  41. daoQualityAudit: dao.NewQualityAuditDao(datasource.InstanceDbMaster()),
  42. daoQuality: dao.NewQualityDao(datasource.InstanceDbMaster()),
  43. daoApprover: dao.NewApproverDao(datasource.InstanceDbMaster()),
  44. }
  45. }
  46. // 关闭审批流程
  47. func (s *qualityAuditService) CloseAudit(id int, opinion string, curUid int, saveId int) error {
  48. err := s.daoApprover.CloseHandler(id, opinion, curUid, saveId)
  49. return err
  50. }
  51. // 审批退回
  52. func (s *qualityAuditService) BackAudit(id int, opinion string, curUid int, saveId int, auditId int) error {
  53. auditor, err := s.daoApprover.FindApproverById(id)
  54. if auditor.AuditId != curUid {
  55. return errors.New("该用户没有审批权限!")
  56. }
  57. safe := s.daoQuality.FindById(saveId)
  58. // 退回到了检查人
  59. if auditId == 0 {
  60. // 初始化审批流程
  61. err = s.daoApprover.InitStatus(auditor.BidsectionId, auditor.DataType, auditor.DataId, auditor.AuditId, safe.Times, auditor.Progress+1, opinion)
  62. } else {
  63. // 退回到审批流程中的某一个人
  64. err = s.daoApprover.BackHandlerWithId(auditId, auditor.AuditId, safe.Times, auditor.Progress+1, opinion)
  65. }
  66. return err
  67. }
  68. // 审批通过
  69. func (s *qualityAuditService) PassAudit(id int, uid int, auditId int, opinion string, rectifiedInfo string) error {
  70. err := s.daoApprover.PassHandler(id, uid, auditId, opinion, rectifiedInfo)
  71. return err
  72. }
  73. func (s *qualityAuditService) StartAudit(safeId int, bidsectionId int, auditors []int, reAuditors []int, uid int, pid int) error {
  74. safe := s.daoQuality.FindById(safeId)
  75. if safe.Uid != uid {
  76. return errors.New("该用户没有操作权限!")
  77. }
  78. // 清除可能有的旧的审批流程
  79. err := s.daoApprover.DeleteOldAuditors(bidsectionId, 1, safeId)
  80. // 增加审批日志
  81. err = s.daoQualityAudit.AddAuditRecord(safeId, bidsectionId, uid, safe.Times, 0, 0, "", "")
  82. // 改变安全巡检表的状态
  83. err = s.daoQuality.ChangeStatus(safeId, 1)
  84. // 创建审批流程
  85. err = s.daoApprover.InsertData(bidsectionId, pid, 1, safeId, auditors, reAuditors)
  86. return err
  87. }
  88. // 规则校验
  89. func (s *qualityAuditService) ValidRule(ctx iris.Context) (viewmodels.QualityAudit, error) {
  90. qualityAuditVaild := viewmodels.QualityAudit{}
  91. if ctx.Method() == "POST" {
  92. err := ctx.ReadJSON(&qualityAuditVaild)
  93. if err != nil {
  94. log.Println("quality-ValidRule-ReadJson转换异常, error=", err)
  95. return qualityAuditVaild, err
  96. }
  97. if ctx.Path() == s.validAdd {
  98. err = qualityAuditVaild.ValidateQualityAddAuditor()
  99. return qualityAuditVaild, err
  100. } else if ctx.Path() == s.validClose {
  101. err = qualityAuditVaild.ValidateQualityClose()
  102. return qualityAuditVaild, err
  103. } else if ctx.Path() == s.validBack {
  104. err = qualityAuditVaild.ValidateQualityBack()
  105. return qualityAuditVaild, err
  106. } else if ctx.Path() == s.validPass {
  107. err = qualityAuditVaild.ValidateQualityPass()
  108. return qualityAuditVaild, err
  109. }
  110. return qualityAuditVaild, err
  111. }
  112. return qualityAuditVaild, nil
  113. }
  114. // 校验审批开始
  115. func (s *qualityAuditService) ValidStart(ctx iris.Context) (viewmodels.QualityAuditStart, error) {
  116. startAuditValid := viewmodels.QualityAuditStart{}
  117. err := ctx.ReadJSON(&startAuditValid)
  118. if err != nil {
  119. log.Println("safe-ValidRule-ReadJson转换异常, error=", err)
  120. return startAuditValid, err
  121. }
  122. err = startAuditValid.ValidateQualityStart()
  123. return startAuditValid, err
  124. }