| 
					
				 | 
			
			
				@@ -9,19 +9,23 @@ package services 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"errors" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"log" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"time" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"github.com/kataras/iris/v12" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"go.mod/dao" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"go.mod/datasource" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"go.mod/models" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"go.mod/web/viewmodels" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 type SafeAuditService interface { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	ValidRule(ctx iris.Context) (viewmodels.SafeAudit, error) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ValidStart(ctx iris.Context) (viewmodels.AuditStart, 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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PassAudit(id int, uid int, auditId int, opinion string, rectifiedInfo string) error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	StartAudit(safeId int, bidsectionId int, times int, auditors []int, reAuditors []int, uid int) error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 type safeAuditService struct { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -61,7 +65,7 @@ func (s *safeAuditService) CloseAudit(id int, opinion string, curUid int, saveId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return errors.New("该用户没有审批权限!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// 更改cm_safe_audit的记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	err = s.daoSafeAudit.ChangeStatusById(id, opinion, 3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	err = s.daoSafeAudit.ChangeStatusById(id, opinion, 3, "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -83,7 +87,7 @@ func (s *safeAuditService) BackAudit(id int, opinion string, curUid int, saveId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return errors.New("该用户没有审批权限!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// 更改cm_safe_audit的记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	err = s.daoSafeAudit.ChangeStatusById(id, opinion, 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	err = s.daoSafeAudit.ChangeStatusById(id, opinion, 2, "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -107,7 +111,7 @@ func (s *safeAuditService) BackAudit(id int, opinion string, curUid int, saveId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 审批通过 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-func (s *safeAuditService) PassAudit(id int, uid int, auditId int, opinion string) error { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (s *safeAuditService) PassAudit(id int, uid int, auditId int, opinion string, rectifiedInfo string) error { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	auditor, err := s.daoSafeAudit.FindById(id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return err 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -117,7 +121,7 @@ func (s *safeAuditService) PassAudit(id int, uid int, auditId int, opinion strin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if auditId != 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// 审批人选择了整改人 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		err := s.daoSafeAudit.ChangeStatusById(auditor.Id, "", 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		err := s.daoSafeAudit.ChangeStatusById(auditor.Id, "", 1, rectifiedInfo) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -126,7 +130,7 @@ func (s *safeAuditService) PassAudit(id int, uid int, auditId int, opinion strin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		err := s.daoSafeAudit.ChangeStatusById(auditor.Id, "", 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		err := s.daoSafeAudit.ChangeStatusById(auditor.Id, "", 1, rectifiedInfo) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -134,6 +138,40 @@ func (s *safeAuditService) PassAudit(id int, uid int, auditId int, opinion strin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (s *safeAuditService) StartAudit(safeId int, bidsectionId int, times int, auditors []int, reAuditors []int, uid int) error { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	safe := s.daoSafe.FindById(safeId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if safe.Uid != uid { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return errors.New("该用户没有操作权限!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data := make([]models.CmSafeAudit, 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for i, item := range auditors { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM := models.CmSafeAudit{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM.AuditId = item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM.BidsectionId = bidsectionId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM.SafeId = safeId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM.AuditOrder = i + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM.CreateTime = time.Now() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM.Progress = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM.Status = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM.Times = times 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		data = append(data, auditVM) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for i, item := range reAuditors { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM := models.CmSafeAudit{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM.AuditId = item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM.BidsectionId = bidsectionId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM.SafeId = safeId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM.AuditOrder = i + 2 + len(auditors) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM.CreateTime = time.Now() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM.Progress = 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM.Status = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		auditVM.Times = times 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		data = append(data, auditVM) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	err := s.daoSafeAudit.InsertData(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 规则校验 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func (s *safeAuditService) ValidRule(ctx iris.Context) (viewmodels.SafeAudit, error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	safeAuditVaild := viewmodels.SafeAudit{} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -160,3 +198,15 @@ func (s *safeAuditService) ValidRule(ctx iris.Context) (viewmodels.SafeAudit, er 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return safeAuditVaild, nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 校验审批开始 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (s *safeAuditService) ValidStart(ctx iris.Context) (viewmodels.AuditStart, error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	startAuditValid := viewmodels.AuditStart{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	err := ctx.ReadJSON(&startAuditValid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		log.Println("safe-ValidRule-ReadJson转换异常, error=", err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return startAuditValid, err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	err = startAuditValid.ValidateStart() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return startAuditValid, err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |