123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- /*
- * @description: 安全巡检审批相关
- * @Author: LanJianRong
- * @Date: 2020-12-18
- * @FilePath: \construction_management\web\api\safe_rpc_api.go
- */
- package services
- import (
- "errors"
- "log"
- "github.com/kataras/iris/v12"
- "go.mod/dao"
- "go.mod/datasource"
- "go.mod/web/viewmodels"
- )
- type SafeAuditService interface {
- ValidRule(ctx iris.Context) (viewmodels.SafeAudit, error)
- AddAuditor(safeId int, bId int, auditId int, times int) error
- CloseAudit(id int, opinion string, curUid int, saveId int) error
- BackAudit(id int, opinion string, curUid int, saveId int, auditId int, progress string) error
- PassAudit(id int, uid int, auditId int, opinion string) error
- }
- type safeAuditService struct {
- validAdd string
- validPass string
- validClose string
- validBack string
- daoSafeAudit *dao.SafeAuditDao
- daoSafe *dao.SafeDao
- }
- //创建项目用户service
- func NewSafeAuditService() SafeAuditService {
- return &safeAuditService{
- validBack: "/api/safe_audit/back",
- validAdd: "/api/safe_audit/add",
- validClose: "/api/safe_audit/close",
- validPass: "/api/safe_audit/pass",
- daoSafeAudit: dao.NewSafeAuditDao(datasource.InstanceDbMaster()),
- daoSafe: dao.NewSafeDao(datasource.InstanceDbMaster()),
- }
- }
- // 增加审批人
- func (s *safeAuditService) AddAuditor(safeId int, bId int, auditId int, times int) error {
- err := s.daoSafeAudit.AddAuditor(safeId, bId, auditId, times)
- return err
- }
- // 关闭审批流程
- func (s *safeAuditService) CloseAudit(id int, opinion string, curUid int, saveId int) error {
- auditor, err := s.daoSafeAudit.FindById(id)
- if err != nil {
- return err
- }
- if auditor.AuditId != curUid {
- return errors.New("该用户没有审批权限!")
- }
- // 更改cm_safe_audit的记录
- err = s.daoSafeAudit.ChangeStatusById(id, opinion, 3)
- if err != nil {
- return err
- }
- // 更改cm_safe的记录
- err = s.daoSafe.ChangeStatus(saveId, 3, auditor.Times)
- if err != nil {
- return err
- }
- return nil
- }
- // 审批退回
- func (s *safeAuditService) BackAudit(id int, opinion string, curUid int, saveId int, auditId int, progress string) error {
- auditor, err := s.daoSafeAudit.FindById(id)
- if err != nil {
- return err
- }
- if auditor.AuditId != curUid {
- return errors.New("该用户没有审批权限!")
- }
- // 更改cm_safe_audit的记录
- err = s.daoSafeAudit.ChangeStatusById(id, opinion, 2)
- if err != nil {
- return err
- }
- safeData := s.daoSafe.FindById(saveId)
- // 拷贝审批流程
- // 退回检查人-uncheck
- // 整改人审批退回-checking
- // 复查人审批退回-checkNo
- // 审批组退回-checked
- err = s.daoSafeAudit.CopyAuditors(saveId, safeData.Times, progress, auditId)
- if err != nil {
- return err
- }
- // 更改cm_safe的记录
- err = s.daoSafe.ChangeStatus(saveId, 2, auditor.Times+1)
- if err != nil {
- return err
- }
- return nil
- }
- // 审批通过
- func (s *safeAuditService) PassAudit(id int, uid int, auditId int, opinion string) error {
- auditor, err := s.daoSafeAudit.FindById(id)
- if err != nil {
- return err
- }
- if auditor.AuditId != uid {
- return errors.New("该用户没有审批权限!")
- }
- if auditId != 0 {
- // 审批人选择了整改人
- err := s.daoSafeAudit.ChangeStatusById(auditor.Id, "", 1)
- if err != nil {
- return err
- }
- err = s.daoSafeAudit.AddCheckWorker(id, auditId, opinion)
- if err != nil {
- return err
- }
- } else {
- err := s.daoSafeAudit.ChangeStatusById(auditor.Id, "", 1)
- if err != nil {
- return err
- }
- }
- return nil
- }
- // 规则校验
- func (s *safeAuditService) ValidRule(ctx iris.Context) (viewmodels.SafeAudit, error) {
- safeAuditVaild := viewmodels.SafeAudit{}
- if ctx.Method() == "POST" {
- err := ctx.ReadJSON(&safeAuditVaild)
- if err != nil {
- log.Println("safe-ValidRule-ReadJson转换异常, error=", err)
- return safeAuditVaild, err
- }
- if ctx.Path() == s.validAdd {
- err = safeAuditVaild.ValidateAddAuditor()
- return safeAuditVaild, err
- } else if ctx.Path() == s.validClose {
- err = safeAuditVaild.ValidateClose()
- return safeAuditVaild, err
- } else if ctx.Path() == s.validBack {
- err = safeAuditVaild.ValidateBack()
- return safeAuditVaild, err
- } else if ctx.Path() == s.validPass {
- err = safeAuditVaild.ValidatePass()
- return safeAuditVaild, err
- }
- return safeAuditVaild, err
- }
- return safeAuditVaild, nil
- }
|