|  | @@ -151,7 +151,7 @@ func (d *ApproverDao) GetLastAuditor(bid int, dataType int, dataId int) (*models
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // 初始化审批流程状态
 | 
	
		
			
				|  |  | -func (d *ApproverDao) InitStatus(bid int, dataType int, dataId int, auditId int, times int, progress int, opinion string) error {
 | 
	
		
			
				|  |  | +func (d *ApproverDao) InitStatus(auditType string, bid int, dataType int, dataId int, auditId int, times int, progress int, opinion string) error {
 | 
	
		
			
				|  |  |  	session := d.engine.NewSession()
 | 
	
		
			
				|  |  |  	defer session.Close()
 | 
	
		
			
				|  |  |  	err := session.Begin()
 | 
	
	
		
			
				|  | @@ -165,23 +165,42 @@ func (d *ApproverDao) InitStatus(bid int, dataType int, dataId int, auditId int,
 | 
	
		
			
				|  |  |  		session.Rollback()
 | 
	
		
			
				|  |  |  		return err
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | -	_, err = session.Exec("update cm_safe set status = ?, times = ? where id = ?", 0, times+1, dataId)
 | 
	
		
			
				|  |  | -	if err != nil {
 | 
	
		
			
				|  |  | -		session.Rollback()
 | 
	
		
			
				|  |  | -		return err
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	// 增加审批日志
 | 
	
		
			
				|  |  | -	safeAudit := &models.CmSafeAudit{BidsectionId: bid, SafeId: dataId, Times: times, AuditId: auditId, Status: 1, Progress: 0, CreateTime: time.Now(), Opinion: opinion}
 | 
	
		
			
				|  |  | -	_, err = session.Insert(safeAudit)
 | 
	
		
			
				|  |  | -	if err != nil {
 | 
	
		
			
				|  |  | -		session.Rollback()
 | 
	
		
			
				|  |  | -		return err
 | 
	
		
			
				|  |  | +	if auditType == "safe" {
 | 
	
		
			
				|  |  | +		_, err = session.Exec("update cm_safe set status = ?, times = ? where id = ?", 0, times+1, dataId)
 | 
	
		
			
				|  |  | +		if err != nil {
 | 
	
		
			
				|  |  | +			session.Rollback()
 | 
	
		
			
				|  |  | +			return err
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		// 增加审批日志
 | 
	
		
			
				|  |  | +		safeAudit := &models.CmSafeAudit{BidsectionId: bid, SafeId: dataId, Times: times, AuditId: auditId, Status: 1, Progress: progress, CreateTime: time.Now(), Opinion: opinion}
 | 
	
		
			
				|  |  | +		_, err = session.Insert(safeAudit)
 | 
	
		
			
				|  |  | +		if err != nil {
 | 
	
		
			
				|  |  | +			session.Rollback()
 | 
	
		
			
				|  |  | +			return err
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		// 说明本身除于整改人流程,退回原报,要将整改总数-1,未整改总数+1
 | 
	
		
			
				|  |  | +		if progress-1 != 0 {
 | 
	
		
			
				|  |  | +			_, err = session.Exec("update cm_tree set safe_rectification = safe_rectification + 1, safe_rectification_in = if(safe_rectification_in >= 1, safe_rectification_in - 1, 0) where bidsection_id = ?", bid)
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	} else {
 | 
	
		
			
				|  |  | +		_, err = session.Exec("update cm_quality set status = ?, times = ? where id = ?", 0, times+1, dataId)
 | 
	
		
			
				|  |  | +		if err != nil {
 | 
	
		
			
				|  |  | +			session.Rollback()
 | 
	
		
			
				|  |  | +			return err
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		// 增加审批日志
 | 
	
		
			
				|  |  | +		qualityAudit := &models.CmQualityAudit{BidsectionId: bid, QualityId: dataId, Times: times, AuditId: auditId, Status: 1, Progress: progress, CreateTime: time.Now(), Opinion: opinion}
 | 
	
		
			
				|  |  | +		_, err = session.Insert(qualityAudit)
 | 
	
		
			
				|  |  | +		if err != nil {
 | 
	
		
			
				|  |  | +			session.Rollback()
 | 
	
		
			
				|  |  | +			return err
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if progress-1 != 0 {
 | 
	
		
			
				|  |  | +			_, err = session.Exec("update cm_tree set quality_rectification = quality_rectification + 1, quality_rectification_in = if(quality_rectification_in >= 1, quality_rectification_in - 1, 0) where bidsection_id = ?", bid)
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	err = session.Commit()
 | 
	
		
			
				|  |  | -	if err != nil {
 | 
	
		
			
				|  |  | -		return err
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	return nil
 | 
	
		
			
				|  |  | +	return err
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // 审批通过
 | 
	
	
		
			
				|  | @@ -272,7 +291,7 @@ func (d *ApproverDao) PassHandler(auditType string, id int, uid int, auditId int
 | 
	
		
			
				|  |  |  						return err
 | 
	
		
			
				|  |  |  					}
 | 
	
		
			
				|  |  |  					// 将cm_tree的safe_rectification_finish待整改+1
 | 
	
		
			
				|  |  | -					_, err := session.Exec("update cm_tree set safe_rectification_finish = safe_rectification_finish + 1,  safe_rectification_finish = if(safe_rectification_finish >= 1, safe_rectification_finish - 1, 0)where bidsection_id = ?", auditor.BidsectionId)
 | 
	
		
			
				|  |  | +					_, err := session.Exec("update cm_tree set safe_rectification_finish = safe_rectification_finish + 1,  safe_rectification_in = if(safe_rectification_in >= 1, safe_rectification_in - 1, 0)where bidsection_id = ?", auditor.BidsectionId)
 | 
	
		
			
				|  |  |  					if err != nil {
 | 
	
		
			
				|  |  |  						session.Rollback()
 | 
	
		
			
				|  |  |  						return err
 | 
	
	
		
			
				|  | @@ -355,7 +374,7 @@ func (d *ApproverDao) PassHandler(auditType string, id int, uid int, auditId int
 | 
	
		
			
				|  |  |  						return err
 | 
	
		
			
				|  |  |  					}
 | 
	
		
			
				|  |  |  					// 将cm_tree的quality_rectification_finish待整改+1
 | 
	
		
			
				|  |  | -					_, err := session.Exec("update cm_tree set quality_rectification_finish = quality_rectification_finish + 1, quality_rectification_finish = if(quality_rectification_finish >= 1, quality_rectification_finish - 1, 0) where bidsection_id = ?", auditor.BidsectionId)
 | 
	
		
			
				|  |  | +					_, err := session.Exec("update cm_tree set quality_rectification_finish = quality_rectification_finish + 1, quality_rectification_in = if(quality_rectification_in >= 1, quality_rectification_in - 1, 0) where bidsection_id = ?", auditor.BidsectionId)
 | 
	
		
			
				|  |  |  					if err != nil {
 | 
	
		
			
				|  |  |  						session.Rollback()
 | 
	
		
			
				|  |  |  						return err
 | 
	
	
		
			
				|  | @@ -370,12 +389,10 @@ func (d *ApproverDao) PassHandler(auditType string, id int, uid int, auditId int
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // 审批流程-退回
 | 
	
		
			
				|  |  | -func (d *ApproverDao) BackHandlerWithId(id int, uid int, times int, progress int, opinion string) error {
 | 
	
		
			
				|  |  | +func (d *ApproverDao) BackHandlerWithId(auditType string, id int, uid int, times int, progress int, opinion string) error {
 | 
	
		
			
				|  |  |  	session := d.engine.NewSession()
 | 
	
		
			
				|  |  |  	defer session.Close()
 | 
	
		
			
				|  |  | -	// add Begin() before any action
 | 
	
		
			
				|  |  |  	err := session.Begin()
 | 
	
		
			
				|  |  | -	// auditor, err := d.FindApproverById(id)
 | 
	
		
			
				|  |  |  	auditor := &models.CmApprover{}
 | 
	
		
			
				|  |  |  	_, err = session.ID(id).Get(auditor)
 | 
	
		
			
				|  |  |  	data := &models.CmApprover{Status: 0}
 | 
	
	
		
			
				|  | @@ -393,17 +410,46 @@ func (d *ApproverDao) BackHandlerWithId(id int, uid int, times int, progress int
 | 
	
		
			
				|  |  |  		return err
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	// 增加审批日志
 | 
	
		
			
				|  |  | -	safeAudit := &models.CmSafeAudit{BidsectionId: auditor.BidsectionId, SafeId: auditor.DataId, Times: times, AuditId: uid, Status: 1, Progress: progress, CreateTime: time.Now(), Opinion: opinion}
 | 
	
		
			
				|  |  | -	_, err = session.Insert(safeAudit)
 | 
	
		
			
				|  |  | +	if auditType == "safe" {
 | 
	
		
			
				|  |  | +		safeAudit := &models.CmSafeAudit{BidsectionId: auditor.BidsectionId, SafeId: auditor.DataId, Times: times, AuditId: uid, Status: 1, Progress: progress, CreateTime: time.Now(), Opinion: opinion}
 | 
	
		
			
				|  |  | +		_, err = session.Insert(safeAudit)
 | 
	
		
			
				|  |  | +		if err != nil {
 | 
	
		
			
				|  |  | +			session.Rollback()
 | 
	
		
			
				|  |  | +			return err
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	} else {
 | 
	
		
			
				|  |  | +		qualityAudit := &models.CmQualityAudit{BidsectionId: auditor.BidsectionId, QualityId: auditor.DataId, Times: times, AuditId: uid, Status: 1, Progress: progress, CreateTime: time.Now(), Opinion: opinion}
 | 
	
		
			
				|  |  | +		_, err = session.Insert(qualityAudit)
 | 
	
		
			
				|  |  | +		if err != nil {
 | 
	
		
			
				|  |  | +			session.Rollback()
 | 
	
		
			
				|  |  | +			return err
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	curAuditor := &models.CmApprover{}
 | 
	
		
			
				|  |  | +	_, err = session.ID(uid).Get(curAuditor)
 | 
	
		
			
				|  |  |  	if err != nil {
 | 
	
		
			
				|  |  |  		session.Rollback()
 | 
	
		
			
				|  |  |  		return err
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | +	// 当前审批人是整改或者复查流程的并且退回的是审批流程的
 | 
	
		
			
				|  |  | +	if curAuditor.Progress >= 1 && auditor.Progress == 0 {
 | 
	
		
			
				|  |  | +		var sql string
 | 
	
		
			
				|  |  | +		if auditType == "safe" {
 | 
	
		
			
				|  |  | +			sql = "update cm_tree set safe_rectification = safe_rectification_in + 1 and safe_rectification_in = if(safe_rectification_in >= 1, safe_rectification_in - 1, 0) where bidseciont_id = ?"
 | 
	
		
			
				|  |  | +		} else {
 | 
	
		
			
				|  |  | +			sql = "update cm_tree set quality_rectification = quality_rectification_in + 1 and quality_rectification_in = if(quality_rectification_in >= 1, quality_rectification_in - 1, 0) where bidseciont_id = ?"
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		_, err = session.Exec(sql, auditor.BidsectionId)
 | 
	
		
			
				|  |  | +		if err != nil {
 | 
	
		
			
				|  |  | +			session.Rollback()
 | 
	
		
			
				|  |  | +			return err
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  	err = session.Commit()
 | 
	
		
			
				|  |  |  	return err
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -func (d *ApproverDao) CloseHandler(id int, opinion string, curUid int, saveId int) error {
 | 
	
		
			
				|  |  | +func (d *ApproverDao) CloseHandler(auditType string, id int, opinion string, curUid int, saveId int) error {
 | 
	
		
			
				|  |  |  	session := d.engine.NewSession()
 | 
	
		
			
				|  |  |  	defer session.Close()
 | 
	
		
			
				|  |  |  	// add Begin() before any action
 | 
	
	
		
			
				|  | @@ -412,24 +458,46 @@ func (d *ApproverDao) CloseHandler(id int, opinion string, curUid int, saveId in
 | 
	
		
			
				|  |  |  	if auditor.AuditId != curUid {
 | 
	
		
			
				|  |  |  		return errors.New("该用户没有审批权限!")
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | -	safe := &models.CmSafe{}
 | 
	
		
			
				|  |  | -	_, err = session.ID(saveId).Get(safe)
 | 
	
		
			
				|  |  | -	if err != nil {
 | 
	
		
			
				|  |  | -		session.Rollback()
 | 
	
		
			
				|  |  | -		return err
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	// 增加审批日志
 | 
	
		
			
				|  |  | -	safeAudit := &models.CmSafeAudit{BidsectionId: auditor.BidsectionId, SafeId: auditor.DataId, Times: safe.Times, AuditId: auditor.AuditId, Status: 2, Progress: auditor.Progress, CreateTime: time.Now(), Opinion: opinion}
 | 
	
		
			
				|  |  | -	_, err = session.Insert(safeAudit)
 | 
	
		
			
				|  |  | -	if err != nil {
 | 
	
		
			
				|  |  | -		session.Rollback()
 | 
	
		
			
				|  |  | -		return err
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	// 更改cm_safe的记录
 | 
	
		
			
				|  |  | -	_, err = session.Exec("update `cm_safe` set status = ? where id = ? ", 5, saveId)
 | 
	
		
			
				|  |  | -	if err != nil {
 | 
	
		
			
				|  |  | -		session.Rollback()
 | 
	
		
			
				|  |  | -		return err
 | 
	
		
			
				|  |  | +	if auditType == "safe" {
 | 
	
		
			
				|  |  | +		safe := &models.CmSafe{}
 | 
	
		
			
				|  |  | +		_, err = session.ID(saveId).Get(safe)
 | 
	
		
			
				|  |  | +		if err != nil {
 | 
	
		
			
				|  |  | +			session.Rollback()
 | 
	
		
			
				|  |  | +			return err
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		// 增加审批日志
 | 
	
		
			
				|  |  | +		safeAudit := &models.CmSafeAudit{BidsectionId: auditor.BidsectionId, SafeId: auditor.DataId, Times: safe.Times, AuditId: auditor.AuditId, Status: 2, Progress: auditor.Progress, CreateTime: time.Now(), Opinion: opinion}
 | 
	
		
			
				|  |  | +		_, err = session.Insert(safeAudit)
 | 
	
		
			
				|  |  | +		if err != nil {
 | 
	
		
			
				|  |  | +			session.Rollback()
 | 
	
		
			
				|  |  | +			return err
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		// 更改cm_safe的记录
 | 
	
		
			
				|  |  | +		_, err = session.Exec("update `cm_safe` set status = ? where id = ? ", 5, saveId)
 | 
	
		
			
				|  |  | +		if err != nil {
 | 
	
		
			
				|  |  | +			session.Rollback()
 | 
	
		
			
				|  |  | +			return err
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	} else {
 | 
	
		
			
				|  |  | +		quality := &models.CmQuality{}
 | 
	
		
			
				|  |  | +		_, err = session.ID(saveId).Get(quality)
 | 
	
		
			
				|  |  | +		if err != nil {
 | 
	
		
			
				|  |  | +			session.Rollback()
 | 
	
		
			
				|  |  | +			return err
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		// 增加审批日志
 | 
	
		
			
				|  |  | +		qualityAudit := &models.CmQualityAudit{BidsectionId: auditor.BidsectionId, QualityId: auditor.DataId, Times: quality.Times, AuditId: auditor.AuditId, Status: 2, Progress: auditor.Progress, CreateTime: time.Now(), Opinion: opinion}
 | 
	
		
			
				|  |  | +		_, err = session.Insert(qualityAudit)
 | 
	
		
			
				|  |  | +		if err != nil {
 | 
	
		
			
				|  |  | +			session.Rollback()
 | 
	
		
			
				|  |  | +			return err
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		// 更改cm_quality的记录
 | 
	
		
			
				|  |  | +		_, err = session.Exec("update `cm_quality` set status = ? where id = ? ", 5, saveId)
 | 
	
		
			
				|  |  | +		if err != nil {
 | 
	
		
			
				|  |  | +			session.Rollback()
 | 
	
		
			
				|  |  | +			return err
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	// 更改cm_approver的记录
 | 
	
		
			
				|  |  |  	_, err = session.Exec("update `cm_approver` set status = ? where id = ? ", 3, id)
 |