oilsuppliercertService.go 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. package suppliercert
  2. import (
  3. "strconv"
  4. "strings"
  5. "dashoo.cn/backend/api/business/auditsetting"
  6. "dashoo.cn/backend/api/business/oilsupplier/classorgsetting"
  7. "dashoo.cn/backend/api/business/workflow"
  8. "dashoo.cn/business2/userRole"
  9. "dashoo.cn/utils"
  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, commercialNo, 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. var tempMap []map[string]string
  113. sql:= "select 1 from OilSupplier a left join OilSupplierCert b on a.Id=b.SupplierId where b.SupplierTypeCode = '" + applyType + "' and (b.CreateUserId = '" + userId + "' or a.CommercialNo='"+commercialNo+"')"
  114. tempMap,_=s.DBE.QueryString(sql)
  115. if tempMap!=nil && tempMap[0]["1"] !="" {
  116. return false
  117. }
  118. }
  119. return true
  120. }
  121. func (s *OilSupplierCertService) GetAuditUser(organizeId, auditstepcode string, entitiesPtr interface{}) {
  122. where := "( a.DepartmentId in (" + organizeId + ") OR a.CompanyId in (" + organizeId + ")) and AuditStepCode='" + auditstepcode + "'"
  123. //where := "a.DepartmentId=" + organizeId + " and AuditStepCode='" + auditstepcode + "'"
  124. sql := "SELECT a.UserId Id, a.UserName RealName FROM Base_OilAuditSetting o LEFT JOIN OilAuditUser a ON o.Id = a.SettingId where " + where
  125. s.DBE.SQL(sql).Find(entitiesPtr)
  126. return
  127. }
  128. func (s *OilSupplierCertService) GetAuditUserInSetting(organizeId, auditstepcode string, entitiesPtr interface{}) {
  129. where := "u.UnitId=" + organizeId
  130. //where := "a.DepartmentId=" + organizeId + " and AuditStepCode='" + auditstepcode + "'"
  131. sql := "SELECT a.UserId Id, a.UserName RealName FROM Base_OilAuditSetting o LEFT JOIN Base_User a ON o.Id = a.SettingId where " + where
  132. s.DBE.SQL(sql).Find(entitiesPtr)
  133. return
  134. }
  135. func (s *OilSupplierCertService) GetAuditUserByNoLogin(organizeId string, entitiesPtr interface{}) {
  136. where := "( a.DepartmentId=" + organizeId + " OR a.CompanyId=" + organizeId + ")"
  137. sql := "SELECT a.UserId Id, a.UserName RealName FROM Base_OilAuditSetting o LEFT JOIN OilAuditUser a ON o.Id = a.SettingId where " + where
  138. s.DBE.SQL(sql).Find(entitiesPtr)
  139. return
  140. }