oilsuppliercertService.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package suppliercert
  2. import (
  3. "dashoo.cn/backend/api/business/auditsetting"
  4. "dashoo.cn/backend/api/business/oilsupplier/classorgsetting"
  5. "dashoo.cn/backend/api/business/workflow"
  6. "dashoo.cn/business2/userRole"
  7. "dashoo.cn/utils"
  8. "strconv"
  9. "strings"
  10. "dashoo.cn/backend/api/business/oilsupplier/suppliercertsub"
  11. . "dashoo.cn/backend/api/mydb"
  12. "github.com/go-xorm/xorm"
  13. )
  14. type OilSupplierCertService struct {
  15. MyServiceBase
  16. }
  17. func GetOilSupplierCertService(xormEngine *xorm.Engine) *OilSupplierCertService {
  18. s := new(OilSupplierCertService)
  19. s.DBE = xormEngine
  20. return s
  21. }
  22. //通用多部门多实例审核方法
  23. func (s *OilSupplierCertService) SubmitOrgAudit(certId, wfName, wfNodeCode, userId, result, remarks, OilSupplierCertSubName, OilClassOrgSettingName string, status string, step string) (processInstanceId, res string) {
  24. //取出审批列表
  25. var supplierCert OilSupplierCert
  26. s.GetEntityById(certId, &supplierCert)
  27. //取出准入分类列表
  28. var subList []suppliercertsub.OilSupplierCertSub
  29. certSubSrv := suppliercertsub.GetOilSupplierCertSubService(s.DBE)
  30. subWhere := " 1=1 "
  31. subWhere += " and SupplierCertId='" + certId + "'"
  32. certSubSrv.GetEntitysByWhere(OilSupplierCertSubName, subWhere, &subList)
  33. var subClassIds string
  34. for _, certSub := range subList {
  35. subClassIds += strconv.Itoa(certSub.SubClassId) + ","
  36. }
  37. subClassIds = strings.Trim(subClassIds, ",")
  38. if len(subClassIds) <= 0 {
  39. panic("没有选择准入分类")
  40. }
  41. //取出审核部门
  42. classorgSrv := classorgsetting.GetOilClassOrgSettingService(s.DBE)
  43. var list []classorgsetting.OilClassOrgSetting
  44. var orgListStr string
  45. var where string
  46. where += " 1=1 "
  47. subWhere += " and SupplierTypeCode='" + supplierCert.SupplierTypeCode + "'"
  48. where += " and ClassId in (" + subClassIds + ")"
  49. where += " and AuditStepCode = '" + wfNodeCode + "'"
  50. classorgSrv.GetEntitysByWhere(OilClassOrgSettingName, where, &list)
  51. if len(list) <= 0 {
  52. panic("未配置准入分类审批部门")
  53. }
  54. subClassIdsCheck := subClassIds + ","
  55. //拼接工作流的需要审批的部门及部门相关的审核人员信息
  56. var orgAudits []workflow.MultiOrgAuditVM
  57. userSvc := userRole.GetUserService(s.DBE)
  58. auditSrv := auditsetting.GetOilAuditSettingService(s.DBE)
  59. for _, certsetting := range list {
  60. var auditSetting auditsetting.Base_OilAuditSetting
  61. var orgAudit workflow.MultiOrgAuditVM
  62. orgAudit.OrgId = strconv.Itoa(certsetting.OrganizeId)
  63. orgAudit.OrgName = certsetting.OrganizeName
  64. auditWhere := " 1=1 "
  65. auditWhere += " and OrganizeId = '" + strconv.Itoa(certsetting.OrganizeId) + "'"
  66. auditWhere += " and AuditStepCode = '" + wfNodeCode + "'"
  67. auditSrv.GetEntity(&auditSetting, auditWhere)
  68. userIds := userSvc.GetUserIdsByRoleId(strconv.Itoa(auditSetting.RoleId))
  69. tempstr := strings.Join(userIds, ",")
  70. orgAudit.UserIds = strings.Replace(tempstr, "uid_", "", -1)
  71. orgAudits = append(orgAudits, orgAudit)
  72. orgListStr += "org_" + strconv.Itoa(certsetting.OrganizeId) + ","
  73. //排除未设置部门的分类
  74. subClassIdsCheck = strings.Replace(subClassIdsCheck, strconv.Itoa(certsetting.ClassId)+",", "", 1)
  75. }
  76. orgListStr = strings.Trim(orgListStr, ",")
  77. if len(subClassIdsCheck) > 0 {
  78. panic("存在准入分类 " + subClassIdsCheck + " 未设置审核部门")
  79. }
  80. if len(orgListStr) <= 0 {
  81. panic("未找到审核部门")
  82. }
  83. //多实例工作流
  84. svcActiviti := workflow.GetActivitiService(s.DBE)
  85. if supplierCert.WorkflowId == "0" || len(supplierCert.WorkflowId) <= 0 {
  86. //启动工作流
  87. processInstanceId = svcActiviti.StartProcess(wfName, certId, userId)
  88. }
  89. //多实例提交给下一步
  90. var ActiComplete workflow.MultiActiCompleteVM
  91. ActiComplete.ProcessKey = wfName
  92. ActiComplete.BusinessKey = certId
  93. ActiComplete.UserNames = ""
  94. ActiComplete.MultiOrgAudits = orgAudits
  95. ActiComplete.UserId = userId
  96. ActiComplete.Result = result
  97. ActiComplete.Remarks = remarks
  98. if status == "" {
  99. ActiComplete.CallbackUrl = ""
  100. } else {
  101. ActiComplete.CallbackUrl = utils.Cfg.MustValue("workflow", "callbackHost")+"/api/suppliercert/auditcallback?Id=" + strconv.Itoa(supplierCert.Id) + "&status=" + status + "&step=" + step
  102. }
  103. res = svcActiviti.MultiTaskComplete(ActiComplete)
  104. return processInstanceId,res
  105. }
  106. //查询已经申请的准入记录
  107. func (s *OilSupplierCertService) IsCanApplyByExtOrganizeUser(applyType, departmentId, userId string, isCompanyUser int) bool {
  108. /*parameterSvc := baseparameter.GetBaseparameterService(s.DBE) //取出外部门ID
  109. extOrganizeId := parameterSvc.GetBaseparameterMessage("GFGL", "paramset", "ExtOrganizeId")
  110. if extOrganizeId == departmentId {*/
  111. if isCompanyUser == 1 {
  112. where := " SupplierTypeCode = '" + applyType + "'"
  113. where += " and CreateUserId = '" + userId + "'"
  114. var model OilSupplierCert
  115. count, _ := s.GetCount(&model, where)
  116. if count > 0 {
  117. return false
  118. }
  119. }
  120. return true
  121. }
  122. func (s *OilSupplierCertService) GetAuditUser(organizeId, auditstepcode string, entitiesPtr interface{}){
  123. where := "( a.DepartmentId=" + organizeId + " OR a.CompanyId=" + organizeId + ") and AuditStepCode='" + auditstepcode + "'"
  124. //where := "a.DepartmentId=" + organizeId + " and AuditStepCode='" + auditstepcode + "'"
  125. sql := "SELECT a.UserId Id, a.UserName RealName FROM Base_OilAuditSetting o LEFT JOIN OilAuditUser a ON o.Id = a.SettingId where " + where
  126. s.DBE.SQL(sql).Find(entitiesPtr)
  127. return
  128. }