qualchangeService.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package qualchange
  2. import (
  3. "dashoo.cn/backend/api/business/auditsetting"
  4. "dashoo.cn/backend/api/business/oilsupplier/classorgsetting"
  5. "dashoo.cn/backend/api/business/oilsupplier/suppliercert"
  6. "dashoo.cn/backend/api/business/oilsupplier/suppliercertsub"
  7. "dashoo.cn/backend/api/business/workflow"
  8. . "dashoo.cn/backend/api/mydb"
  9. "dashoo.cn/business2/userRole"
  10. "strings"
  11. "strconv"
  12. "dashoo.cn/utils"
  13. . "dashoo.cn/utils/db"
  14. "github.com/go-xorm/xorm"
  15. )
  16. type QualChangeService struct {
  17. MyServiceBase
  18. }
  19. func GetQualChangeService(xormEngine *xorm.Engine) *QualChangeService {
  20. s := new(QualChangeService)
  21. s.DBE = xormEngine
  22. return s
  23. }
  24. //获取资质列表
  25. func (s *QualChangeService) GetQualPagingEntitiesWithOrderBytbl(supname, supcername, supfilename, qualmainname, order, where string, pageIndex, itemsPerPage int64) (int64,[]OilSupplierQual) {
  26. var err error
  27. var total int64
  28. if where == "" {
  29. where = " 1=1 "
  30. }
  31. //获取总记录数
  32. sqlCount := `select count(*) from ` + supname + ` a
  33. left join ` + supcername + ` b on a.Id=b.SupplierId left join `+ qualmainname + ` c on a.Id = c.SupplierId
  34. where a.Id in ( select SupplierId from `+ supfilename +`) and `+ where
  35. var sql string
  36. sql = `select a.*, b.AccessCardNo, b.Id CertId, c.Id QualId, c.Status Status, c.Step Step, c.WorkFlowId WorkFlowId, c.CreateOn ConmmitTime from ` + supname + ` a
  37. left join ` + supcername + ` b on a.Id=b.SupplierId left join `+ qualmainname + ` c on a.Id = c.SupplierId
  38. where a.Id in ( select SupplierId from `+ supfilename +`) and` + where + ` order by ` + order +
  39. ` limit ` + utils.ToStr((pageIndex-1)*itemsPerPage) + "," + utils.ToStr(itemsPerPage)
  40. List := make([]OilSupplierQual, 0)
  41. utils.DBE.Sql(sql).Find(&List)
  42. resultsSlice, err := s.DBE.Query(sqlCount)
  43. LogError(err)
  44. if len(resultsSlice) > 0 {
  45. results := resultsSlice[0]
  46. for _, value := range results {
  47. total, err = strconv.ParseInt(string(value), 10, 64)
  48. LogError(err)
  49. break
  50. }
  51. }
  52. return total, List
  53. }
  54. //通用多部门多实例审核方法
  55. func (s *QualChangeService) SubmitOrgAudit(workflowid, certId, annualId, wfName, wfNodeCode, userId, result, remarks, OilSupplierCertSubName, OilClassOrgSettingName string) (processInstanceId string) {
  56. //取出审批列表
  57. var supplierCert suppliercert.OilSupplierCert
  58. s.GetEntityById(certId, &supplierCert)
  59. //取出准入分类列表
  60. var subList []suppliercertsub.OilSupplierCertSub
  61. certSubSrv := suppliercertsub.GetOilSupplierCertSubService(s.DBE)
  62. subWhere := " 1=1 "
  63. subWhere += " and SupplierCertId='" + certId + "'"
  64. certSubSrv.GetEntitysByWhere(OilSupplierCertSubName, subWhere, &subList)
  65. var subClassIds string
  66. for _, certSub := range subList {
  67. subClassIds += strconv.Itoa(certSub.SubClassId) + ","
  68. }
  69. subClassIds = strings.Trim(subClassIds, ",")
  70. if len(subClassIds) <= 0 {
  71. panic("没有选择准入分类")
  72. }
  73. //取出审核部门
  74. classorgSrv := classorgsetting.GetOilClassOrgSettingService(s.DBE)
  75. var list []classorgsetting.OilClassOrgSetting
  76. var orgListStr string
  77. var where string
  78. where += " 1=1 "
  79. subWhere += " and SupplierTypeCode='" + supplierCert.SupplierTypeCode + "'"
  80. where += " and ClassId in (" + subClassIds + ")"
  81. where += " and AuditStepCode = '" + wfNodeCode + "'"
  82. classorgSrv.GetEntitysByWhere(OilClassOrgSettingName, where, &list)
  83. if len(list) <= 0 {
  84. panic("未配置准入分类审批部门")
  85. }
  86. subClassIdsCheck := subClassIds + ","
  87. //拼接工作流的需要审批的部门及部门相关的审核人员信息
  88. var orgAudits []workflow.MultiOrgAuditVM
  89. userSvc := userRole.GetUserService(s.DBE)
  90. auditSrv := auditsetting.GetOilAuditSettingService(s.DBE)
  91. for _, certsetting := range list {
  92. var auditSetting auditsetting.Base_OilAuditSetting
  93. var orgAudit workflow.MultiOrgAuditVM
  94. orgAudit.OrgId = strconv.Itoa(certsetting.OrganizeId)
  95. orgAudit.OrgName = certsetting.OrganizeName
  96. auditWhere := " 1=1 "
  97. auditWhere += " and OrganizeId = '" + strconv.Itoa(certsetting.OrganizeId) + "'"
  98. auditWhere += " and AuditStepCode = '" + wfNodeCode + "'"
  99. auditSrv.GetEntity(&auditSetting, auditWhere)
  100. userIds := userSvc.GetUserIdsByRoleId(strconv.Itoa(auditSetting.RoleId))
  101. tempstr := strings.Join(userIds, ",")
  102. orgAudit.UserIds = strings.Replace(tempstr, "uid_", "", -1)
  103. orgAudits = append(orgAudits, orgAudit)
  104. orgListStr += "org_" + strconv.Itoa(certsetting.OrganizeId) + ","
  105. //排除未设置部门的分类
  106. subClassIdsCheck = strings.Replace(subClassIdsCheck, strconv.Itoa(certsetting.ClassId)+",", "", 1)
  107. }
  108. orgListStr = strings.Trim(orgListStr, ",")
  109. if len(subClassIdsCheck) > 0 {
  110. panic("存在准入分类 " + subClassIdsCheck + " 未设置审核部门")
  111. }
  112. if len(orgListStr) <= 0 {
  113. panic("未找到审核部门")
  114. }
  115. //多实例工作流
  116. svcActiviti := workflow.GetActivitiService(s.DBE)
  117. if workflowid == "0" || len(workflowid) <= 0 {
  118. //启动工作流
  119. processInstanceId = svcActiviti.StartProcess(wfName, annualId, userId)
  120. }
  121. //多实例提交给下一步
  122. var ActiComplete workflow.MultiActiCompleteVM
  123. ActiComplete.ProcessKey = wfName
  124. ActiComplete.BusinessKey = annualId
  125. ActiComplete.UserNames = ""
  126. ActiComplete.MultiOrgAudits = orgAudits
  127. ActiComplete.UserId = userId
  128. ActiComplete.Result = result
  129. ActiComplete.Remarks = remarks
  130. ActiComplete.CallbackUrl = ""
  131. svcActiviti.MultiTaskComplete(ActiComplete)
  132. return processInstanceId
  133. }