瀏覽代碼

fix:添加分类的时候,新增是否存在审批单的判断;
标记状态,1:编辑中,2:查询状态,3:编辑完成

Roc 9 月之前
父節點
當前提交
c93a25b778
共有 4 個文件被更改,包括 78 次插入8 次删除
  1. 1 1
      controllers/report.go
  2. 2 2
      models/report.go
  3. 70 0
      services/classify.go
  4. 5 5
      services/report.go

+ 1 - 1
controllers/report.go

@@ -1977,7 +1977,7 @@ func (this *ReportController) MarkEditStatus() {
 		br.Msg = "缺少报告Id"
 		return
 	}
-	if req.Status <= 0 {
+	if req.Status < 0 {
 		br.Msg = "标记状态异常"
 		return
 	}

+ 2 - 2
models/report.go

@@ -1286,7 +1286,7 @@ func UpdateReportChapterPublishTime(reportId int, videoNameDate string) (err err
 type MarkEditReport struct {
 	ReportId        int `description:"研报id"`
 	ReportChapterId int `description:"研报章节id"`
-	Status          int `description:"标记状态,1:编辑中,2:编辑完成"`
+	Status          int `description:"标记状态,1:编辑中,2:查询状态,3:编辑完成"`
 }
 
 type MarkReportResp struct {
@@ -1428,4 +1428,4 @@ func UpdatePdfUrlReportById(reportId int) (err error) {
 	sql := `UPDATE report SET detail_img_url = '',detail_pdf_url='',modify_time=NOW() WHERE id = ? `
 	_, err = o.Raw(sql, reportId).Exec()
 	return
-}
+}

+ 70 - 0
services/classify.go

@@ -235,6 +235,12 @@ func AddReportClassify(classifyName string, parentId int, chartPermissionIdList
 			return
 		}
 
+		// 判断是否分类存在待操作的审批单
+		err, errMsg = checkClassifyApprove(parentClassifyItem)
+		if err != nil {
+			return
+		}
+
 		// 获取父级分类下的子分类数量
 		childClassifyCount, err = models.GetCountClassifyChildByParentId(parentId)
 		if err != nil {
@@ -376,6 +382,70 @@ func AddReportClassify(classifyName string, parentId int, chartPermissionIdList
 	return
 }
 
+// checkClassifyApprove
+// @Description: 判断分类是否存在待操作的审批单
+// @author: Roc
+// @datetime 2024-06-27 13:19:15
+// @param currClassify *models.Classify
+// @return err error
+// @return errMsg string
+func checkClassifyApprove(currClassify *models.Classify) (err error, errMsg string) {
+	errMsg = `判断是否有审批流关联失败`
+	var firstClassifyId, secondClassifyId int
+	if currClassify.ParentId > 0 {
+		parentClassifyItem, tmpErr := models.GetClassifyById(currClassify.ParentId)
+		if tmpErr != nil {
+			err = tmpErr
+			errMsg = "获取父级分类信息失败"
+			if tmpErr.Error() == utils.ErrNoRow() {
+				errMsg = "父级分类不存在"
+			}
+			return
+		}
+		firstClassifyId = parentClassifyItem.Id
+		secondClassifyId = currClassify.Id
+	} else {
+		firstClassifyId = currClassify.Id
+	}
+	// 校验审批流是否关联了进行中的审批
+	{
+		flowOb := new(report_approve.ReportApproveFlow)
+
+		existCond := fmt.Sprintf(` AND %s = ? AND %s = ? AND %s = ? AND %s = ?`, report_approve.ReportApproveFlowCols.ReportType, report_approve.ReportApproveFlowCols.ClassifyFirstId, report_approve.ReportApproveFlowCols.ClassifySecondId, report_approve.ReportApproveFlowCols.ClassifyThirdId)
+		existPars := make([]interface{}, 0)
+		existPars = append(existPars, report_approve.FlowReportTypeChinese, firstClassifyId, secondClassifyId, 0)
+		flowItem, e := flowOb.GetItemByCondition(existCond, existPars, "")
+		if e != nil {
+			// 父级分类如果没有审批流,那么就正常进行就好了
+			if e.Error() != utils.ErrNoRow() {
+				return
+			}
+			err = errors.New("获取审批流是否已存在失败, Err: " + e.Error())
+			return
+		}
+		if flowItem == nil {
+			return
+		}
+
+		approvingOb := new(report_approve.ReportApprove)
+		approvingCond := fmt.Sprintf(` AND %s = ? AND %s = ? AND %s = ?`, report_approve.ReportApproveCols.FlowId, report_approve.ReportApproveCols.FlowVersion, report_approve.ReportApproveCols.State)
+		approvingPars := make([]interface{}, 0)
+		approvingPars = append(approvingPars, flowItem.ReportApproveFlowId, flowItem.CurrVersion, report_approve.ReportApproveStateApproving)
+		count, e := approvingOb.GetCountByCondition(approvingCond, approvingPars)
+		if e != nil {
+			err = errors.New("获取审批流关联进行中的审批数失败. Err: " + e.Error())
+			return
+		}
+		if count > 0 {
+			errMsg = "当前有未走完流程的报告,请走完流程后再做变更"
+			err = errors.New(errMsg)
+			return
+		}
+	}
+
+	return
+}
+
 // 关于研报分类,因只允许报告或品种关联在最小分类下,所以当某个父分类(非三级分类)已关联报告或品种,需要在该父分类下增加子分类,则第一个子分类添加成功时,默认把该父分类关联的品种和报告转移至新创建的子分类(第一个子分类)下
 // moveReportByAddClassify
 // @Description: 报告和章节的转移

+ 5 - 5
services/report.go

@@ -1056,7 +1056,7 @@ func GetReportContentSubWithoutIframe(content string) (contentSub string, err er
 }
 
 // UpdateReportEditMark 更新研报当前更新状态
-// status 枚举值 1:编辑中,0:完成编辑, 2:只做查询
+// status 枚举值 1:编辑中, 2:只做查询,3:完成编辑
 func UpdateReportEditMark(reportId, reportChapterId, nowUserId, status int, nowUserName, lang string) (ret models.MarkReportResp, err error) {
 	//更新标记key
 	key := fmt.Sprint(`crm:report:edit:`, reportId)
@@ -1121,12 +1121,12 @@ func UpdateReportEditMark(reportId, reportChapterId, nowUserId, status int, nowU
 			return
 		}
 		if opUserId > 0 {
-			utils.Rc.Do("SETEX", key, int64(180), string(bt)) //3分钟缓存
+			utils.Rc.Do("SETEX", key, int64(60), string(bt)) //3分钟缓存
 		} else {
-			utils.Rc.SetNX(key, string(bt), time.Second*60*3) //3分钟缓存
+			utils.Rc.SetNX(key, string(bt), time.Second*60*1) //3分钟缓存
 		}
-	} else if status == 0 {
-		//清除编辑缓存
+	} else if status == 3 {
+		//完成编辑,开始清除编辑缓存
 		_ = utils.Rc.Delete(key)
 	}
 	return