2
3

organizeService.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package organize
  2. import (
  3. "dashoo.cn/business2/userRole"
  4. "fmt"
  5. "strconv"
  6. "strings"
  7. "dashoo.cn/utils"
  8. . "dashoo.cn/utils/db"
  9. "github.com/go-xorm/xorm"
  10. )
  11. type OrganizeService struct {
  12. ServiceBase
  13. }
  14. func GetOrganizeService(xormEngine *xorm.Engine) *OrganizeService {
  15. s := new(OrganizeService)
  16. s.DBE = xormEngine
  17. return s
  18. }
  19. //获得某节点的所有子节点(包括自身)
  20. func (s *OrganizeService) GetAllChildByTopId(topid, uid string) string {
  21. mod := new(Id_Str)
  22. s.DBE.Sql(`select fun_getOrganizechildlistuserid ('` + topid + `','` + uid + `') as Id`).Get(mod)
  23. return mod.Id
  24. }
  25. //获得某节点的所有父节点(包括自身)
  26. func (s *OrganizeService) GetAllParentByTopId(topid, uid string) string {
  27. mod := new(Id_Str)
  28. s.DBE.Sql(`select fun_getOrganizeparentlistuserid ('` + topid + `','` + uid + `') as Id`).Get(mod)
  29. return mod.Id
  30. }
  31. //根据AccCode获得某节点的所有父节点(包括自身)
  32. func (s *OrganizeService) GetAllParentByTopAccCode(topid, acccode string) string {
  33. mod := new(Id_Str)
  34. s.DBE.Sql(`select fun_getOrganizeparentlistuseracccode ('` + topid + `','` + acccode + `') as Id`).Get(mod)
  35. return mod.Id
  36. }
  37. //根据
  38. func (s *OrganizeService) GetCollectionDetailviewlist(where string) []Base_Organizebandparentname {
  39. var sql string
  40. sql = `select *
  41. from Base_Organize where ParentId = ( select id from Base_Organize where ParentId = 0 and AccCode = ` + where + `)`
  42. List := make([]Base_Organizebandparentname, 0)
  43. utils.DBE.Sql(sql).Find(&List)
  44. return List
  45. }
  46. //根据ID获得名称
  47. func (s *OrganizeService) GetNameById(id string) string {
  48. mod := new(Id_Str)
  49. s.DBE.Sql(`select Fullname Id from Base_Organize where Id = ` + id).Get(mod)
  50. return mod.Id
  51. }
  52. //判断是否有子节点
  53. func (s *OrganizeService) IsHaveChild(id string) bool {
  54. mod := new(Id_Int)
  55. s.DBE.Sql(`select count(1) Id from Base_Organize where ParentId = ` + id).Get(mod)
  56. return mod.Id > 0
  57. }
  58. //判断是否有用户使用
  59. func (s *OrganizeService) IsHaveUserUse(id string) bool {
  60. mod := new(Id_Int)
  61. s.DBE.Sql(`select count(1) Id from Base_User where DepartmentId = ` + id).Get(mod)
  62. return mod.Id > 0
  63. }
  64. //判断是否有设备使用
  65. func (s *OrganizeService) IsHaveEquiUse(id string) bool {
  66. mod := new(Id_Int)
  67. s.DBE.Sql(`select count(1) Id from Equipment where OrganizeId = ` + id).Get(mod)
  68. return mod.Id > 0
  69. }
  70. func (s *OrganizeService) GetListbandparentname(pageIndex, itemsPerPage int64, order, searchstring string) (int64, []Base_Organizebandparentname) {
  71. var err error
  72. var total int64
  73. //获取总记录数
  74. sqlCount := "select count(*) from Base_Organize a where " + searchstring + " "
  75. var sql, limitstr string = "", ""
  76. if pageIndex > 0 {
  77. limitstr = ` limit ` + utils.ToStr((pageIndex-1)*itemsPerPage) + "," + utils.ToStr(itemsPerPage)
  78. }
  79. sql = `select a.*,b.Fullname Parentname from Base_Organize a
  80. left join Base_Organize b on a.ParentId=b.Id
  81. where ` + searchstring + ` order by ` + order + limitstr
  82. List := make([]Base_Organizebandparentname, 0)
  83. utils.DBE.Sql(sql).Find(&List)
  84. resultsSlice, err := s.DBE.Query(sqlCount)
  85. LogError(err)
  86. if len(resultsSlice) > 0 {
  87. results := resultsSlice[0]
  88. for _, value := range results {
  89. total, err = strconv.ParseInt(string(value), 10, 64)
  90. LogError(err)
  91. break
  92. }
  93. }
  94. return total, List
  95. }
  96. func (s *OrganizeService) QueryEntity(where string) (entity Base_Organize) {
  97. sql := "select * from Base_Organize where " + where
  98. s.DBE.Sql(sql).Get(&entity)
  99. return
  100. }
  101. //根据
  102. func (s *OrganizeService) GetAllChildById(topid string) string {
  103. mod := new(Id_Str)
  104. s.DBE.Sql(`select fun_getOrganizechildlist ('` + topid + `') as Id`).Get(mod)
  105. return mod.Id
  106. }
  107. //根据 物质类
  108. func (s *OrganizeService) GetAllGoodsChildById(topid string) string {
  109. mod := new(Id_Str)
  110. s.DBE.Sql(`select fun_getOilGoodsAptitudeClasschildlist ('` + topid + `') as Id`).Get(mod)
  111. return mod.Id
  112. }
  113. //判断用户是否具有某角色
  114. func (s *OrganizeService) UserInRoleById(userId, RoleId string) bool {
  115. var roleList []userRole.UserRoleModel
  116. sqlcommand := fmt.Sprintf(`select * from Base_Role b where b.Id=%v `, RoleId)
  117. s.DBE.SQL(sqlcommand).Find(&roleList)
  118. if len(roleList) <1{
  119. return false
  120. }else{
  121. roleidlist:=utils.RBAC.GetRolesForUserInDomain("uid_" + userId, utils.DOMAIN)
  122. return strings.Contains(strings.Join(roleidlist, ","), "rid_" + strconv.Itoa(roleList[0].Id))
  123. }
  124. }
  125. //获得category为unit的父节点
  126. func (s *OrganizeService) GetMyUnitDepartmentId(topid string) string {
  127. var entity Base_Organize
  128. ids := s.GetAllParentByTopAccCode(topid, "")
  129. if len(ids) <= 0 { //没有父节点
  130. return topid
  131. }
  132. sql := "select * from Base_Organize where id in (" + ids + ") and Category='unit'"
  133. s.DBE.Sql(sql).Get(&entity)
  134. if &entity == nil || entity.Id <= 0 {//没有category为unit的父节点
  135. return topid
  136. }
  137. return strconv.Itoa( entity.Id )
  138. }