2
3

qualchangeService.go 4.8 KB

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