|
@@ -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: 报告和章节的转移
|