| 
					
				 | 
			
			
				@@ -165,13 +165,13 @@ func (d *ApproverDao) InitStatus(bid int, dataType int, dataId int, auditId int, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		session.Rollback() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	_, err = session.Exec("update cm_safe set status = ? where id = ?", 0, dataId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, 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} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	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() 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -184,13 +184,100 @@ func (d *ApproverDao) InitStatus(bid int, dataType int, dataId int, auditId int, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 审批流程-退回 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-func (d *ApproverDao) BackHandlerWithId(id int, cur_audit int, times int, progress int, opinion string) error { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 审批通过 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (d *ApproverDao) PassHandler(id int, uid int, auditId int, opinion string, rectifiedInfo string) error { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	session := d.engine.NewSession() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	defer session.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// add Begin() before any action 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	err := session.Begin() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	auditor, err := d.FindApproverById(id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if auditor.AuditId != uid { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return errors.New("该用户没有审批权限!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	safe := &models.CmSafe{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, err = session.ID(auditor.DataId).Get(safe) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		session.Rollback() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 增加审批日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	auditReacord := &models.CmSafeAudit{BidsectionId: auditor.BidsectionId, SafeId: auditor.DataId, AuditId: auditor.AuditId, Times: safe.Times, CreateTime: time.Now(), Status: 0, Progress: auditor.Progress + 1, Opinion: opinion, Rectifiedinfo: rectifiedInfo} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, err = session.Insert(auditReacord) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		session.Rollback() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 改变审批流程中当前审批人以及下一个审批人的审批流程状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curData := &models.CmApprover{Status: 2} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, err = session.ID(id).Cols("status").Update(curData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		session.Rollback() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	nextData := &models.CmApprover{Status: 1} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, err = session.Where("bidsection_id = ? and data_type = ? and data_id = ? and audit_order = ?", auditor.BidsectionId, auditor.DataType, auditor.DataId, auditor.AuditOrder+1).Cols("status").Update(nextData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		session.Rollback() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if auditId != 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 审批人选择了整改人 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 修改cm_safe表的status状态为待整改 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		_, err = session.Exec("update `cm_safe` set status = ? where id = ?", 2, auditor.DataId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			session.Rollback() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 改变审批流程中的整改人id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		_, err = session.Exec("update `cm_approver` set `audit_id` = ? where `bidsection_id` = ? and `data_type` = ? and `data_id` = ? and `audit_order` = ?", auditId, auditor.BidsectionId, auditor.DataType, auditor.DataId, auditor.AuditOrder+1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			session.Rollback() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if auditor.Progress == 1 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 整改人审批流程 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 修改cm_safe表的status状态为待复查 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			_, err = session.Exec("update `cm_safe` set status = ? where id = ?", 3, auditor.DataId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				session.Rollback() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 复查流程 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 查找最后一个审批人 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			lastAuditor := &models.CmApprover{BidsectionId: auditor.BidsectionId, DataType: auditor.DataType, DataId: auditor.DataId} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			_, err = session.Desc("audit_order").Limit(1).Get(lastAuditor) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				session.Rollback() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if lastAuditor.AuditId == auditor.AuditId { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 说明审批流程已经走完 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				_, err = session.Exec("update `cm_safe` set status = ? where id = ?", 4, auditor.DataId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					session.Rollback() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	err = session.Commit() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 审批流程-退回 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (d *ApproverDao) BackHandlerWithId(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} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// 将往后的所有记录的status改为0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	_, err = session.Where("bidsection_id = ? and data_type = ? and data_id = ? and audit_order > ?", auditor.BidsectionId, auditor.DataType, auditor.DataId, auditor.AuditOrder).Cols("status").Update(data) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -206,12 +293,50 @@ func (d *ApproverDao) BackHandlerWithId(id int, cur_audit int, times int, progre 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// 增加审批日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	safeAudit := &models.CmSafeAudit{BidsectionId: auditor.BidsectionId, SafeId: auditor.DataId, Times: times, AuditId: cur_audit, Status: 1, Progress: progress, CreateTime: time.Now(), Opinion: opinion} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	err = session.Commit() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (d *ApproverDao) CloseHandler(id int, opinion string, curUid int, saveId int) error { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	session := d.engine.NewSession() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	defer session.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// add Begin() before any action 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	err := session.Begin() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	auditor, err := d.FindApproverById(id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 更改cm_approver的记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, err = session.Exec("update `cm_approver` set status = ? where id = ? ", 3, id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		session.Rollback() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |