Pārlūkot izejas kodu

feat: 安全巡检审批通过

lanjianrong 4 gadi atpakaļ
vecāks
revīzija
698a8f9c84

+ 22 - 7
dao/safe_audit_dao.go

@@ -79,13 +79,13 @@ func (d *SafeAuditDao) GetAuditHistory(id int, times int) map[int][]viewmodels.H
 	auditorHistory := make(map[int][]viewmodels.HistorySafeAudit, 0)
 	for i := 1; i <= times; i++ {
 		auditors := make([]viewmodels.HistorySafeAudit, 0)
-		d.engine.Sql("select ca.`id`, pa.`name`, pa.`position`, ca.`create_time` as createTime, ca.`end_time` as endTime, ca.`progress`, ca.`opinion`, ca.`status` from `cm_project_account` as pa, `cm_safe_audit` as ca where ca.`safe_id` = ? and ca.audit_id = pa.id and times = ? order by `audit_order`", id, i).Find(&auditors)
+		d.engine.Sql("select ca.`id`, pa.`name`, pa.`position`, ca.`create_time`, ca.`end_time`, ca.`progress`, ca.`opinion`, ca.`status` from `cm_project_account` as pa, `cm_safe_audit` as ca where ca.`safe_id` = ? and ca.audit_id = pa.id and times = ? order by `audit_order`", id, i).Find(&auditors)
 		auditorsArr := make([]viewmodels.HistorySafeAudit, 0)
 		for _, auditor := range auditors {
 			auditorVM := viewmodels.HistorySafeAudit{}
 			id, _ := comm.AesEncrypt(auditor.Id, conf.SignSecret)
 			auditorVM.Id = id
-			auditorVM.Createtime = auditor.Createtime
+			auditorVM.CreateTime = auditor.CreateTime
 			auditorVM.EndTime = auditor.EndTime
 			auditorVM.Name = auditor.Name
 			auditorVM.Position = auditor.Position
@@ -122,7 +122,6 @@ func (d *SafeAuditDao) CopyAuditors(safeId int, times int, auditType string, uid
 	}
 
 	var copyStatus = true
-	fmt.Println("auditType", auditType)
 	newAuditors := make([]models.CmSafeAudit, 0)
 	for _, auditor := range oldAuditors {
 		auditorVM := models.CmSafeAudit{}
@@ -153,13 +152,13 @@ func (d *SafeAuditDao) CopyAuditors(safeId int, times int, auditType string, uid
 }
 
 // 增加整改人
-func (d *SafeAuditDao) AddCheckWorker(id int, auditId int, opinion string) error {
+func (d *SafeAuditDao) AddCheckWorker(id int, auditId int) error {
 	auditor, err := d.FindById(id)
 	if err != nil {
 		return err
 	}
 
-	data := &models.CmSafeAudit{SafeId: auditor.SafeId, BidsectionId: auditor.BidsectionId, AuditOrder: auditor.AuditOrder + 1, Times: auditor.Times, AuditId: auditId, Status: 0, Progress: 1, CreateTime: time.Now(), Opinion: opinion}
+	data := &models.CmSafeAudit{SafeId: auditor.SafeId, BidsectionId: auditor.BidsectionId, AuditOrder: auditor.AuditOrder + 1, Times: auditor.Times, AuditId: auditId, Status: 0, Progress: 1, CreateTime: time.Now()}
 	_, err = d.engine.Insert(data)
 	if err != nil {
 		return err
@@ -177,14 +176,30 @@ func (d *SafeAuditDao) GetLastedOrder(safeId int) ([]viewmodels.CheckOrderVM, er
 // 获取当前的审核人
 func (d *SafeAuditDao) GetLastedAuditor(times int, safeId int) (*viewmodels.LatestAuditorVM, error) {
 	data := &viewmodels.LatestAuditorVM{}
-	_, err := d.engine.Sql("select audit_id, progress, status from cm_safe_audit where times = ? and safe_id = ? and status = 0 order by `audit_order` limit 1", times, safeId).Get(data)
+	_, err := d.engine.Sql("select id, audit_id, progress, status from cm_safe_audit where times = ? and safe_id = ? and status = 1 order by `audit_order` limit 1", times, safeId).Get(data)
 	auditId, _ := comm.AesEncrypt(data.AuditId, conf.SignSecret)
 	data.AuditId = auditId
+	Id, _ := comm.AesEncrypt(data.Id, conf.SignSecret)
+	data.Id = Id
 	return data, err
 }
 
-//
+// 插入审批记录
 func (d *SafeAuditDao) InsertData(data []models.CmSafeAudit) error {
 	_, err := d.engine.Insert(&data)
 	return err
 }
+
+// 改变下一条审批记录为待审核状态
+func (d *SafeAuditDao) ChangeNextRecord(times int, audit_order int) error {
+	data := &models.CmSafeAudit{Status: 1}
+	_, err := d.engine.Where("times = ? and audit_order = ?", times, audit_order).Update(data)
+	return err
+}
+
+// 获取最后一个审批人
+func (d *SafeAuditDao) GetLastAuditor(times int, safeId int) (*models.CmSafeAudit, error) {
+	data := &models.CmSafeAudit{}
+	_, err := d.engine.Where("times = ? and safe_id = ?", times, safeId).Desc("audit_order").Limit(1).Get(data)
+	return data, err
+}

+ 31 - 8
services/safe_audit.service.go

@@ -65,12 +65,12 @@ 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, 4, "")
 	if err != nil {
 		return err
 	}
 	// 更改cm_safe的记录
-	err = s.daoSafe.ChangeStatus(saveId, 3, auditor.Times)
+	err = s.daoSafe.ChangeStatus(saveId, 5, auditor.Times)
 	if err != nil {
 		return err
 	}
@@ -121,20 +121,43 @@ func (s *safeAuditService) PassAudit(id int, uid int, auditId int, opinion strin
 	}
 	if auditId != 0 {
 		// 审批人选择了整改人
-		err := s.daoSafeAudit.ChangeStatusById(auditor.Id, "", 1, rectifiedInfo)
-		if err != nil {
-			return err
-		}
-		err = s.daoSafeAudit.AddCheckWorker(id, auditId, opinion)
+		// 改变当前审批记录的状态为已通过
+		err := s.daoSafeAudit.ChangeStatusById(auditor.Id, opinion, 2, rectifiedInfo)
+		// 修改cm_safe表的status状态为待整改
+		err = s.daoSafe.ChangeStatus(auditor.SafeId, 2, auditor.Times)
+		// 增加整改人的审批记录
+		err = s.daoSafeAudit.AddCheckWorker(id, auditId)
 		if err != nil {
 			return err
 		}
 	} else {
-		err := s.daoSafeAudit.ChangeStatusById(auditor.Id, "", 1, rectifiedInfo)
+		// 改变当前记录的状态为已通过
+		err := s.daoSafeAudit.ChangeStatusById(auditor.Id, opinion, 2, rectifiedInfo)
+		if auditor.Progress == 1 {
+			// 整改人审批流程
+			// 修改cm_safe表的status状态为待复查
+			err = s.daoSafe.ChangeStatus(auditor.SafeId, 3, auditor.Times)
+		} else {
+			// 复查流程
+			// 查找最后一个审批人
+			lastAuditor, err := s.daoSafeAudit.GetLastAuditor(auditor.Times, auditor.SafeId)
+			if err != nil {
+				return err
+			}
+			if lastAuditor.Id == auditor.Id {
+				// 说明审批流程已经走完
+				err = s.daoSafe.ChangeStatus(auditor.SafeId, 4, auditor.Times)
+			}
+		}
 		if err != nil {
 			return err
 		}
 	}
+	// 改变下一条记录为待审核
+	err = s.daoSafeAudit.ChangeNextRecord(auditor.Times, auditor.AuditOrder+1)
+	if err != nil {
+		return err
+	}
 	return nil
 }
 

+ 2 - 0
services/safe_service.go

@@ -144,9 +144,11 @@ func (s *safeService) GetDetail(id int, pid int) viewmodels.SafeDetail {
 	}
 	auditHistory := s.daoSafeAudit.GetAuditHistory(safeData.Id, safeData.Times)
 	data.AuditHistory = auditHistory
+	// 整改单
 	rectifiedInfo, _ := s.daoSafeAudit.GetLastedOrder(safeData.Id)
 	data.RectifiedInfo = rectifiedInfo
 
+	// 最新审批人信息
 	latestAuditor, _ := s.daoSafeAudit.GetLastedAuditor(safeData.Times, safeData.Id)
 	data.LatestdAuditor = latestAuditor
 	data.Auditors = encryptAuditors

+ 3 - 2
web/viewmodels/safe_audit.go

@@ -31,7 +31,7 @@ type HistorySafeAudit struct {
 	Id         string    `from:"id" json:"id"`
 	Name       string    `from:"name" json:"name"`
 	Position   string    `from:"position" json:"position"`
-	Createtime time.Time `from:"create_time" json:"create_time"`
+	CreateTime time.Time `from:"create_time" json:"create_time"`
 	EndTime    time.Time `from:"end_time" json:"end_time"`
 	Opinion    string    `from:"opinion" json:"opinion"`
 	Status     int       `from:"status" json:"status"`
@@ -39,7 +39,8 @@ type HistorySafeAudit struct {
 }
 
 type LatestAuditorVM struct {
-	AuditId  string `fron:"audit_id" json:"audit_id"`
+	Id       string `from:"id" json:"id"`
+	AuditId  string `from:"audit_id" json:"audit_id"`
 	Status   int    `from:"status" json:"status"`
 	Progress string `form:"progress" json:"progress" `
 }