Browse Source

fix: 报告审批

hsun 1 year ago
parent
commit
19470ae16c

+ 72 - 6
controllers/report_approve/report_approve.go

@@ -573,14 +573,47 @@ func (this *ReportApproveController) Approve() {
 		br.ErrMsg = "参数解析失败, Err: " + e.Error()
 		return
 	}
-	if req.ReportApproveRecordId <= 0 {
+	if req.ReportApproveId <= 0 {
 		br.Msg = "参数有误"
-		br.ErrMsg = fmt.Sprintf("参数有误, ReportApproveRecordId: %d", req.ReportApproveRecordId)
+		br.ErrMsg = fmt.Sprintf("参数有误, ReportApproveId: %d", req.ReportApproveId)
+		return
+	}
+
+	approveOb := new(report_approve.ReportApprove)
+	approveItem, e := approveOb.GetItemById(req.ReportApproveId)
+	if e != nil {
+		if e.Error() == utils.ErrNoRow() {
+			br.Msg = "审批不存在, 请刷新页面"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取审批信息失败, Err: " + e.Error()
+		return
+	}
+	if approveItem.State != report_approve.ReportApproveStateApproving {
+		br.Msg = "审批状态有误, 请刷新页面"
+		br.ErrMsg = fmt.Sprintf("审批状态有误, State: %d", approveItem.State)
+		return
+	}
+
+	// 校验审批记录和审批
+	recordOb := new(report_approve.ReportApproveRecord)
+	recordCond := fmt.Sprintf(` AND %s = ? AND %s = ? AND %s = ?`, report_approve.ReportApproveRecordCols.ReportApproveId, report_approve.ReportApproveRecordCols.ApproveUserId, report_approve.ReportApproveRecordCols.State)
+	recordPars := make([]interface{}, 0)
+	recordPars = append(recordPars, approveItem.ReportApproveId, sysUser.AdminId, report_approve.ReportApproveStateApproving)
+	recordItem, e := recordOb.GetItemByCondition(recordCond, recordPars, "")
+	if e != nil {
+		if e.Error() == utils.ErrNoRow() {
+			br.Msg = "无权审批"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取审批记录失败, Err: " + e.Error()
 		return
 	}
 
 	// 通过审批
-	if e := services.PassReportApprove(req.ReportApproveRecordId, sysUser.AdminId, sysUser.RealName); e != nil {
+	if e = services.PassReportApprove(approveItem, recordItem, sysUser.AdminId, sysUser.RealName); e != nil {
 		br.Msg = "操作失败"
 		br.ErrMsg = "通过审批失败, Err: " + e.Error()
 		return
@@ -619,14 +652,47 @@ func (this *ReportApproveController) Refuse() {
 		br.ErrMsg = "参数解析失败, Err: " + e.Error()
 		return
 	}
-	if req.ReportApproveRecordId <= 0 {
+	if req.ReportApproveId <= 0 {
 		br.Msg = "参数有误"
-		br.ErrMsg = fmt.Sprintf("参数有误, ReportApproveRecordId: %d", req.ReportApproveRecordId)
+		br.ErrMsg = fmt.Sprintf("参数有误, ReportApproveId: %d", req.ReportApproveId)
+		return
+	}
+
+	approveOb := new(report_approve.ReportApprove)
+	approveItem, e := approveOb.GetItemById(req.ReportApproveId)
+	if e != nil {
+		if e.Error() == utils.ErrNoRow() {
+			br.Msg = "审批不存在, 请刷新页面"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取审批信息失败, Err: " + e.Error()
+		return
+	}
+	if approveItem.State != report_approve.ReportApproveStateApproving {
+		br.Msg = "审批状态有误, 请刷新页面"
+		br.ErrMsg = fmt.Sprintf("审批状态有误, State: %d", approveItem.State)
+		return
+	}
+
+	// 校验审批记录和审批
+	recordOb := new(report_approve.ReportApproveRecord)
+	recordCond := fmt.Sprintf(` AND %s = ? AND %s = ? AND %s = ?`, report_approve.ReportApproveRecordCols.ReportApproveId, report_approve.ReportApproveRecordCols.ApproveUserId, report_approve.ReportApproveRecordCols.State)
+	recordPars := make([]interface{}, 0)
+	recordPars = append(recordPars, approveItem.ReportApproveId, sysUser.AdminId, report_approve.ReportApproveStateApproving)
+	recordItem, e := recordOb.GetItemByCondition(recordCond, recordPars, "")
+	if e != nil {
+		if e.Error() == utils.ErrNoRow() {
+			br.Msg = "无权审批"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取审批记录失败, Err: " + e.Error()
 		return
 	}
 
 	// 驳回审批
-	if e := services.RefuseReportApprove(req.ReportApproveRecordId, req.ApproveRemark, sysUser.AdminId); e != nil {
+	if e = services.RefuseReportApprove(approveItem, recordItem, req.ApproveRemark, sysUser.AdminId); e != nil {
 		br.Msg = "操作失败"
 		br.ErrMsg = "驳回审批失败, Err: " + e.Error()
 		return

+ 3 - 3
models/report_approve/report_approve.go

@@ -423,13 +423,13 @@ func (m *ReportApprove) CreateApproveAndRecord(approveItem *ReportApprove, recor
 
 // ReportApprovePassReq 审批通过请求体
 type ReportApprovePassReq struct {
-	ReportApproveRecordId int `description:"审批记录ID"`
+	ReportApproveId int `description:"审批ID"`
 }
 
 // ReportApproveRefuseReq 审批驳回请求体
 type ReportApproveRefuseReq struct {
-	ReportApproveRecordId int    `description:"审批记录ID"`
-	ApproveRemark         string `description:"驳回理由"`
+	ReportApproveId int    `description:"审批ID"`
+	ApproveRemark   string `description:"驳回理由"`
 }
 
 // ReportApproveCancelReq 撤销审批请求体

+ 16 - 54
services/report_approve.go

@@ -415,33 +415,13 @@ func updateReportApproveState(reportType, reportId, approveId, state int) (err e
 }
 
 // PassReportApprove 通过审批
-func PassReportApprove(approveRecordId, sysAdminId int, sysAdminName string) (err error) {
-	// 校验审批记录和审批
-	recordOb := new(report_approve.ReportApproveRecord)
-	recordItem, e := recordOb.GetItemById(approveRecordId)
-	if e != nil {
-		if e.Error() == utils.ErrNoRow() {
-			return
-		}
-		err = fmt.Errorf("获取审批记录失败, Err: %s", e.Error())
-		return
-	}
-	if recordItem.State != report_approve.ReportApproveStateApproving {
-		err = fmt.Errorf("审批记录状态有误")
-		return
-	}
-	if recordItem.ApproveUserId != sysAdminId {
-		err = fmt.Errorf("无权审批")
-		return
-	}
-	approveOb := new(report_approve.ReportApprove)
-	approveItem, e := approveOb.GetItemById(recordItem.ReportApproveId)
-	if e != nil {
-		err = fmt.Errorf("获取审批失败, Err: %s", e.Error())
+func PassReportApprove(approveItem *report_approve.ReportApprove, recordItem *report_approve.ReportApproveRecord, sysAdminId int, sysAdminName string) (err error) {
+	if approveItem == nil {
+		err = fmt.Errorf("审批信息有误")
 		return
 	}
-	if approveItem.State != report_approve.ReportApproveStateApproving {
-		err = fmt.Errorf("审批状态有误")
+	if recordItem == nil {
+		err = fmt.Errorf("审批记录有误")
 		return
 	}
 
@@ -576,10 +556,11 @@ func PassReportApprove(approveRecordId, sysAdminId int, sysAdminName string) (er
 	// 会签
 	if currNode.ApproveType == report_approve.NodeApproveTypeAll {
 		// 查询其他审批人是否已审批
+		otherOb := new(report_approve.ReportApproveRecord)
 		otherCond := fmt.Sprintf(` AND %s = ? AND %s = ? AND %s <> ?`, report_approve.ReportApproveRecordCols.ReportApproveId, report_approve.ReportApproveRecordCols.NodeId, report_approve.ReportApproveRecordCols.ApproveUserId)
 		otherPars := make([]interface{}, 0)
 		otherPars = append(otherPars, approveItem.ReportApproveId, recordItem.NodeId, sysAdminId)
-		otherRecords, e := recordOb.GetItemsByCondition(otherCond, otherPars, []string{}, "")
+		otherRecords, e := otherOb.GetItemsByCondition(otherCond, otherPars, []string{}, "")
 		if e != nil {
 			err = fmt.Errorf("获取节点审批记录失败, Err: %s", e.Error())
 			return
@@ -677,32 +658,13 @@ func PassReportApprove(approveRecordId, sysAdminId int, sysAdminName string) (er
 }
 
 // RefuseReportApprove 驳回审批
-func RefuseReportApprove(approveRecordId int, approveRemark string, sysAdminId int) (err error) {
-	recordOb := new(report_approve.ReportApproveRecord)
-	recordItem, e := recordOb.GetItemById(approveRecordId)
-	if e != nil {
-		if e.Error() == utils.ErrNoRow() {
-			return
-		}
-		err = fmt.Errorf("获取审批记录失败, Err: %s", e.Error())
-		return
-	}
-	if recordItem.State != report_approve.ReportApproveStateApproving {
-		err = fmt.Errorf("审批记录状态有误")
-		return
-	}
-	if recordItem.ApproveUserId != sysAdminId {
-		err = fmt.Errorf("无权审批")
-		return
-	}
-	approveOb := new(report_approve.ReportApprove)
-	approveItem, e := approveOb.GetItemById(recordItem.ReportApproveId)
-	if e != nil {
-		err = fmt.Errorf("获取审批失败, Err: %s", e.Error())
+func RefuseReportApprove(approveItem *report_approve.ReportApprove, recordItem *report_approve.ReportApproveRecord, approveRemark string, sysAdminId int) (err error) {
+	if approveItem == nil {
+		err = fmt.Errorf("审批信息有误")
 		return
 	}
-	if approveItem.State != report_approve.ReportApproveStateApproving {
-		err = fmt.Errorf("审批状态有误")
+	if recordItem == nil {
+		err = fmt.Errorf("审批记录有误")
 		return
 	}
 
@@ -713,7 +675,7 @@ func RefuseReportApprove(approveRecordId int, approveRemark string, sysAdminId i
 	recordItem.ApproveTime = now
 	recordItem.ModifyTime = now
 	recordCols := []string{"State", "ApproveRemark", "ApproveTime", "ModifyTime"}
-	if e = recordItem.Update(recordCols); e != nil {
+	if e := recordItem.Update(recordCols); e != nil {
 		err = fmt.Errorf("更新审批记录状态失败, Err: %s", e.Error())
 		return
 	}
@@ -724,11 +686,11 @@ func RefuseReportApprove(approveRecordId int, approveRemark string, sysAdminId i
 	approveItem.ApproveTime = now
 	approveItem.ModifyTime = now
 	approveCols := []string{"State", "ApproveRemark", "ApproveTime", "ModifyTime"}
-	if e = approveItem.Update(approveCols); e != nil {
+	if e := approveItem.Update(approveCols); e != nil {
 		err = fmt.Errorf("更新审批状态失败, Err: %s", e.Error())
 		return
 	}
-	if e = updateReportApproveState(approveItem.ReportType, approveItem.ReportId, approveItem.ReportApproveId, models.ReportStateRefused); e != nil {
+	if e := updateReportApproveState(approveItem.ReportType, approveItem.ReportId, approveItem.ReportApproveId, models.ReportStateRefused); e != nil {
 		err = fmt.Errorf("更新报告状态失败, Err: %s", e.Error())
 		return
 	}
@@ -744,7 +706,7 @@ func RefuseReportApprove(approveRecordId int, approveRemark string, sysAdminId i
 		messageItem.ApproveState = report_approve.ReportApproveStateRefuse
 		messageItem.CreateTime = now
 		messageItem.ModifyTime = now
-		if e = messageItem.Create(); e != nil {
+		if e := messageItem.Create(); e != nil {
 			utils.FileLog.Info(fmt.Sprintf("ApproveReport message err: %s", e.Error()))
 			return
 		}