|
|
@@ -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
|
|
|
}
|
|
|
|
|
|
//查询已经申请的准入记录
|