| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- package suppliercert
- import (
- "dashoo.cn/backend/api/business/auditsetting"
- "dashoo.cn/backend/api/business/oilsupplier/classorgsetting"
- "dashoo.cn/backend/api/business/workflow"
- "dashoo.cn/business2/userRole"
- "dashoo.cn/utils"
- "strconv"
- "strings"
- "dashoo.cn/backend/api/business/oilsupplier/suppliercertsub"
- . "dashoo.cn/backend/api/mydb"
- "github.com/go-xorm/xorm"
- )
- type OilSupplierCertService struct {
- MyServiceBase
- }
- func GetOilSupplierCertService(xormEngine *xorm.Engine) *OilSupplierCertService {
- s := new(OilSupplierCertService)
- s.DBE = xormEngine
- return s
- }
- //通用多部门多实例审核方法
- func (s *OilSupplierCertService) SubmitOrgAudit(certId, wfName, wfNodeCode, userId, result, remarks, OilSupplierCertSubName, OilClassOrgSettingName string, status string, step string) (processInstanceId, res string) {
- //取出审批列表
- var supplierCert OilSupplierCert
- s.GetEntityById(certId, &supplierCert)
- //取出准入分类列表
- 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("没有选择准入分类")
- }
- //取出审核部门
- 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("未配置准入分类审批部门")
- }
- 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)
- }
- //多实例提交给下一步
- var ActiComplete workflow.MultiActiCompleteVM
- ActiComplete.ProcessKey = wfName
- ActiComplete.BusinessKey = certId
- ActiComplete.UserNames = ""
- ActiComplete.MultiOrgAudits = orgAudits
- ActiComplete.UserId = userId
- ActiComplete.Result = result
- ActiComplete.Remarks = remarks
- if status == "" {
- ActiComplete.CallbackUrl = ""
- } else {
- ActiComplete.CallbackUrl = utils.Cfg.MustValue("workflow", "callbackHost")+"/api/suppliercert/auditcallback?Id=" + strconv.Itoa(supplierCert.Id) + "&status=" + status + "&step=" + step
- }
- res = svcActiviti.MultiTaskComplete(ActiComplete)
- return processInstanceId,res
- }
- //查询已经申请的准入记录
- func (s *OilSupplierCertService) IsCanApplyByExtOrganizeUser(applyType, departmentId, userId string, isCompanyUser int) bool {
- /*parameterSvc := baseparameter.GetBaseparameterService(s.DBE) //取出外部门ID
- extOrganizeId := parameterSvc.GetBaseparameterMessage("GFGL", "paramset", "ExtOrganizeId")
- if extOrganizeId == departmentId {*/
- if isCompanyUser == 1 {
- where := " SupplierTypeCode = '" + applyType + "'"
- where += " and CreateUserId = '" + userId + "'"
- var model OilSupplierCert
- count, _ := s.GetCount(&model, where)
- if count > 0 {
- return false
- }
- }
- return true
- }
- func (s *OilSupplierCertService) GetAuditUser(organizeId, auditstepcode string, entitiesPtr interface{}){
- where := "( a.DepartmentId=" + organizeId + " OR a.CompanyId=" + organizeId + ") and AuditStepCode='" + auditstepcode + "'"
- //where := "a.DepartmentId=" + organizeId + " and AuditStepCode='" + auditstepcode + "'"
- sql := "SELECT a.UserId Id, a.UserName RealName FROM Base_OilAuditSetting o LEFT JOIN OilAuditUser a ON o.Id = a.SettingId where " + where
- s.DBE.SQL(sql).Find(entitiesPtr)
- return
- }
|