Parcourir la source

多级部门审批通用代码整理

yuedefeng il y a 6 ans
Parent
commit
09f637d7cf

+ 6 - 0
src/dashoo.cn/backend/api/business/oilsupplier/suppliercert/oilsuppliercert.go

@@ -63,3 +63,9 @@ type OilSupplierVM struct {
 	SupplierTypeName string
 }
 
+const (
+	DRAFT_STATUS string = "0" //草稿状态
+	FIRST_TRIAL_STATUS string = "1" //二级单位初审
+	PROF_AUDIT_STATUS string = "2" //专业科室审核
+)
+

+ 78 - 20
src/dashoo.cn/backend/api/business/oilsupplier/suppliercert/oilsuppliercertService.go

@@ -1,10 +1,16 @@
 package suppliercert
 
 import (
+	"dashoo.cn/backend/api/business/auditsetting"
+	"dashoo.cn/backend/api/business/oilsupplier/classorgsetting"
+	"dashoo.cn/backend/api/business/oilsupplier/suppliercertsub"
 	"dashoo.cn/backend/api/business/workflow"
 	. "dashoo.cn/backend/api/mydb"
-	"dashoo.cn/business/parameter"
+	"dashoo.cn/business2/parameter"
+	"dashoo.cn/business2/userRole"
 	"github.com/go-xorm/xorm"
+	"strconv"
+	"strings"
 )
 
 type OilSupplierCertService struct {
@@ -17,29 +23,81 @@ func GetOilSupplierCertService(xormEngine *xorm.Engine) *OilSupplierCertService
 	return s
 }
 
-//关联委托方信息获取任务详情
-func (s *OilSupplierCertService) StartAudit(certId string, userNames string, orgAudits []workflow.MultiOrgAuditVM, userId string, result string, remarks string) {
-	//启动数据录入工作流
-	svcActiviti := workflow.GetActivitiService(s.DBE)
-	processInstanceId := svcActiviti.StartProcess(workflow.OIL_SUPPLIER_APPLY, certId, userId)
+//通用多部门多实例审核方法
+func (s *OilSupplierCertService) SubmitOrgAudit(certId, wfName, wfNodeCode, userId, result, remarks, OilSupplierCertSubName, OilClassOrgSettingName string) (processInstanceId string) {
+	//取出审批列表
+	var supplierCert OilSupplierCert
+	s.GetEntityById(certId, &supplierCert)
 
-	//fmt.Println(processInstanceId)
-	//多实例提交给下一步
-	svcActiviti.MultiTaskComplete(workflow.OIL_SUPPLIER_APPLY, certId, userNames, orgAudits, userId, result, remarks)
+	//取出准入分类列表
+	var subList []suppliercertsub.OilSupplierCertSub
+	certSubSrv := suppliercertsub.GetOilSupplierCertSubService(s.DBE)
+	subWhere := " 1=1 "
+	subWhere += " and SupplierCertId='" + certId + "'"
+	certSubSrv.GetEntitysByWhere(OilSupplierCertSubName, subWhere, &subList)
+	var subClassIds string
+	for _, certSub := range subList {
+		subClassIds += strconv.Itoa(certSub.SubClassId) + ","
+	}
+	subClassIds = strings.Trim(subClassIds, ",")
+	if len(subClassIds) <= 0 {
+		panic("没有选择准入分类")
+	}
 
-	//记下workflowID
-	var supplierCertEntity OilSupplierCert
-	s.GetEntityById(certId, supplierCertEntity)
-	supplierCertEntity.WorkflowId = processInstanceId
-	supplierCertEntity.Status = "2" //二级单位初审
-	cols := []string{
-		"Id",
-		"WorkflowId",
-		"Status",
+	//取出审核部门
+	classorgSrv := classorgsetting.GetOilClassOrgSettingService(s.DBE)
+	var list []classorgsetting.OilClassOrgSetting
+	var orgListStr string
+	var where string
+	where += " 1=1 "
+	subWhere += " and SupplierTypeCode='" + supplierCert.SupplierTypeCode + "'"
+	where += " and ClassId in (" + subClassIds + ")"
+	where += " and AuditStepCode = '" + wfNodeCode + "'"
+	classorgSrv.GetEntitysByWhere(OilClassOrgSettingName, where, &list)
+	if len(list) <= 0 {
+		panic("未配置准入分类审批部门")
 	}
-	s.UpdateEntityByIdCols(certId, supplierCertEntity, cols)
 
-	return
+	subClassIdsCheck := subClassIds + ","
+	//拼接工作流的需要审批的部门及部门相关的审核人员信息
+	var orgAudits []workflow.MultiOrgAuditVM
+	userSvc := userRole.GetUserService(s.DBE)
+	auditSrv := auditsetting.GetOilAuditSettingService(s.DBE)
+	for _, certsetting := range list {
+		var auditSetting auditsetting.Base_OilAuditSetting
+		var orgAudit workflow.MultiOrgAuditVM
+		orgAudit.OrgId = strconv.Itoa(certsetting.OrganizeId)
+		orgAudit.OrgName = certsetting.OrganizeName
+
+		auditWhere := " 1=1 "
+		auditWhere += " and OrganizeId = '" + strconv.Itoa(certsetting.OrganizeId) + "'"
+		auditWhere += " and AuditStepCode = '" + wfNodeCode + "'"
+		auditSrv.GetEntity(&auditSetting, auditWhere)
+		userIds := userSvc.GetUserIdsByRoleId(strconv.Itoa(auditSetting.RoleId))
+		tempstr := strings.Join(userIds, ",")
+		orgAudit.UserIds = strings.Replace(tempstr, "uid_", "", -1)
+		orgAudits = append(orgAudits, orgAudit)
+
+		orgListStr += "org_" + strconv.Itoa(certsetting.OrganizeId) + ","
+		//排除未设置部门的分类
+		subClassIdsCheck = strings.Replace(subClassIdsCheck, strconv.Itoa(certsetting.ClassId)+",", "", 1)
+	}
+	orgListStr = strings.Trim(orgListStr, ",")
+	if len(subClassIdsCheck) > 0 {
+		panic("存在准入分类 " + subClassIdsCheck + " 未设置审核部门")
+	}
+	if len(orgListStr) <= 0 {
+		panic("未找到审核部门")
+	}
+	//多实例工作流
+	svcActiviti := workflow.GetActivitiService(s.DBE)
+	if supplierCert.WorkflowId == "0" || len(supplierCert.WorkflowId) <= 0 {
+		//启动工作流
+		processInstanceId = svcActiviti.StartProcess(wfName, certId, userId)
+	}
+	//多实例提交给下一步
+	svcActiviti.MultiTaskComplete(wfName, certId, "", orgAudits, userId, result, remarks)
+	return processInstanceId
 }
 
 //查询已经申请的准入记录

+ 20 - 77
src/dashoo.cn/backend/api/controllers/oilsupplier/suppliercert.go

@@ -2,13 +2,9 @@ package oilsupplier
 
 import (
 	"encoding/json"
-	"strconv"
 	"strings"
 	"time"
 
-	"dashoo.cn/backend/api/business/auditsetting"
-	"dashoo.cn/backend/api/business/oilsupplier/classorgsetting"
-	"dashoo.cn/backend/api/business/oilsupplier/suppliercertsub"
 	"dashoo.cn/backend/api/business/workflow"
 
 	"dashoo.cn/backend/api/business/baseUser"
@@ -482,7 +478,7 @@ func (this *OilSupplierCertController) DeleteEntity() {
 // @Success	200	{object} controllers.Request
 // @router /audit/:id [post]
 func (this *OilSupplierCertController) AuditEntity() {
-	Id := this.Ctx.Input.Param(":id")
+	certId := this.Ctx.Input.Param(":id")
 
 	var errinfo ErrorDataInfo
 	defer func() { //finally处理失败的异常
@@ -491,81 +487,28 @@ func (this *OilSupplierCertController) AuditEntity() {
 			errinfo.Code = -1
 			this.Data["json"] = &errinfo
 			this.ServeJSON()
+		} else {
+			//返回正确结果
+			errinfo.Message = "审核提交成功"
+			errinfo.Code = 0
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
 		}
 	}()
 
 	//取出审批列表
-	var supplierCert suppliercert.OilSupplierCert
 	certSrv := suppliercert.GetOilSupplierCertService(utils.DBE)
-	certSrv.GetEntityById(Id, &supplierCert)
-
-	//取出准入分类列表
-	var subList []suppliercertsub.OilSupplierCertSub
-	certSubSrv := suppliercertsub.GetOilSupplierCertSubService(utils.DBE)
-	subWhere := " 1=1 "
-	subWhere += " and SupplierCertId='" + Id + "'"
-	certSubSrv.GetEntitysByWhere(OilSupplierCertSubName, subWhere, &subList)
-	var subClassIds string
-	for _, certSub := range subList {
-		subClassIds += strconv.Itoa(certSub.SubClassId) + ","
-	}
-	subClassIds = strings.Trim(subClassIds, ",")
-	if len(subClassIds) <= 0 {
-		panic("没有选择准入分类")
-	}
-
-	//取出审核部门
-	classorgSrv := classorgsetting.GetOilClassOrgSettingService(utils.DBE)
-	var list []classorgsetting.OilClassOrgSetting
-	var orgListStr string
-	var where string
-	where += " 1=1 "
-	subWhere += " and SupplierTypeCode='" + supplierCert.SupplierTypeCode + "'"
-	where += " and ClassId in (" + subClassIds + ")"
-	where += " and AuditStepCode = '" + workflow.FIRST_TRIAL + "'"
-	classorgSrv.GetEntitysByWhere(OilClassOrgSettingName, where, &list)
-	if len(list) <= 0 {
-		panic("未配置准入分类审批部门")
-	}
-
-	subClassIdsCheck := subClassIds + ","
-	//拼接工作流的需要审批的部门及部门相关的审核人员信息
-	var orgAudits []workflow.MultiOrgAuditVM
-	userSvc := userRole.GetUserService(utils.DBE)
-	auditSrv := auditsetting.GetOilAuditSettingService(utils.DBE)
-	for _, certsetting := range list {
-		var auditSetting auditsetting.Base_OilAuditSetting
-		var orgAudit workflow.MultiOrgAuditVM
-		orgAudit.OrgId = strconv.Itoa(certsetting.OrganizeId)
-		orgAudit.OrgName = certsetting.OrganizeName
-
-		auditWhere := " 1=1 "
-		auditWhere += " and OrganizeId = '" + strconv.Itoa(certsetting.OrganizeId) + "'"
-		auditWhere += " and AuditStepCode = '" + workflow.FIRST_TRIAL + "'"
-		auditSrv.GetEntity(&auditSetting, auditWhere)
-		userIds := userSvc.GetUserIdsByRoleId(strconv.Itoa(auditSetting.RoleId))
-		tempstr := strings.Join(userIds, ",")
-		orgAudit.UserIds = strings.Replace(tempstr, "uid_", "", -1)
-		orgAudits = append(orgAudits, orgAudit)
-
-		orgListStr += "org_" + strconv.Itoa(certsetting.OrganizeId) + ","
-		//排除未设置部门的分类
-		subClassIdsCheck = strings.Replace(subClassIdsCheck, strconv.Itoa(certsetting.ClassId)+",", "", 1)
-	}
-	orgListStr = strings.Trim(orgListStr, ",")
-	if len(subClassIdsCheck) > 0 {
-		panic("存在准入分类 " + subClassIdsCheck + " 未设置审核部门")
-	}
-	if len(orgListStr) <= 0 {
-		panic("未找到审核部门")
-	}
-	//多实例工作流
-	svcFlow := suppliercert.GetOilSupplierCertService(utils.DBE)
-	svcFlow.StartAudit(Id, "", orgAudits, this.User.Id, "1", "提交给二级部门初审")
-
-	//返回正确结果
-	errinfo.Message = "审核提交成功"
-	errinfo.Code = 0
-	this.Data["json"] = &errinfo
-	this.ServeJSON()
+	processInstanceId := certSrv.SubmitOrgAudit(certId, workflow.OIL_SUPPLIER_APPLY, workflow.FIRST_TRIAL, this.User.Id, "1", "提交给二级单位初审", OilSupplierCertSubName, OilClassOrgSettingName)
+
+	//记下workflowID(首次提交时才会记录,中间状态请忽略) 及审批状态
+	var supplierCertEntity suppliercert.OilSupplierCert
+	certSrv.GetEntityById(certId, supplierCertEntity)
+	supplierCertEntity.WorkflowId = processInstanceId
+	supplierCertEntity.Status = suppliercert.FIRST_TRIAL_STATUS //二级单位初审
+	cols := []string{
+		"Id",
+		"WorkflowId",
+		"Status",
+	}
+	certSrv.UpdateEntityByIdCols(certId, supplierCertEntity, cols)
 }