Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
tagManager
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lanmw
tagManager
Commits
06bf1140
Commit
06bf1140
authored
Jan 10, 2020
by
zhangkb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改加载标签兼容一个用户多个机构情况
parent
ac28d254
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
207 additions
and
136 deletions
+207
-136
TagCtrl.java
src/main/java/com/keymobile/tagmanager/api/TagCtrl.java
+21
-7
TagService.java
...ain/java/com/keymobile/tagmanager/service/TagService.java
+186
-129
No files found.
src/main/java/com/keymobile/tagmanager/api/TagCtrl.java
View file @
06bf1140
package
com
.
keymobile
.
tagmanager
.
api
;
package
com
.
keymobile
.
tagmanager
.
api
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
...
@@ -15,7 +15,6 @@ import com.keymobile.tagmanager.model.SysTag;
...
@@ -15,7 +15,6 @@ import com.keymobile.tagmanager.model.SysTag;
import
com.keymobile.tagmanager.model.Tag
;
import
com.keymobile.tagmanager.model.Tag
;
import
com.keymobile.tagmanager.service.TagService
;
import
com.keymobile.tagmanager.service.TagService
;
import
com.keymobile.tagmanager.util.JsonTreeHelper.JsonNode
;
import
com.keymobile.tagmanager.util.JsonTreeHelper.JsonNode
;
import
com.keymobile.tagmanager.util.Constants
;
import
com.keymobile.tagmanager.util.UserInfoUtils
;
import
com.keymobile.tagmanager.util.UserInfoUtils
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
...
@@ -74,7 +73,10 @@ public class TagCtrl {
...
@@ -74,7 +73,10 @@ public class TagCtrl {
@RequestParam
(
required
=
false
)
String
deptIdPath
)
throws
TagNotExistException
{
@RequestParam
(
required
=
false
)
String
deptIdPath
)
throws
TagNotExistException
{
//获取当前登录用户机构
//获取当前登录用户机构
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
return
tagService
.
queryDimensionTagAsTree
(
deptIdPath
,
parentId
);
//考虑一个用户对应多个机构的情况
List
<
String
>
orgIds
=
new
ArrayList
<>();
orgIds
.
add
(
deptIdPath
);
return
tagService
.
queryDimensionTagAsTree
(
orgIds
,
parentId
);
}
}
@ApiOperation
(
value
=
"获取个人标签树"
,
notes
=
"获取个人标签树"
)
@ApiOperation
(
value
=
"获取个人标签树"
,
notes
=
"获取个人标签树"
)
...
@@ -84,9 +86,12 @@ public class TagCtrl {
...
@@ -84,9 +86,12 @@ public class TagCtrl {
@RequestParam
(
required
=
false
)
String
deptIdPath
)
throws
TagNotExistException
{
@RequestParam
(
required
=
false
)
String
deptIdPath
)
throws
TagNotExistException
{
//获取当前登录用户机构id
//获取当前登录用户机构id
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
//考虑一个用户对应多个机构的情况
List
<
String
>
orgIds
=
new
ArrayList
<>();
orgIds
.
add
(
deptIdPath
);
//获取当前登录用户id
//获取当前登录用户id
String
userId
=
UserInfoUtils
.
getUserId
();
String
userId
=
UserInfoUtils
.
getUserId
();
return
tagService
.
queryPersonalTagAsTree
(
parentId
,
userId
,
deptIdPath
);
return
tagService
.
queryPersonalTagAsTree
(
parentId
,
userId
,
orgIds
);
}
}
@ApiOperation
(
value
=
"搜索维度标签里面的个人标签"
,
notes
=
"搜索维度标签里面的个人标签"
)
@ApiOperation
(
value
=
"搜索维度标签里面的个人标签"
,
notes
=
"搜索维度标签里面的个人标签"
)
...
@@ -100,7 +105,10 @@ public class TagCtrl {
...
@@ -100,7 +105,10 @@ public class TagCtrl {
@RequestParam
(
"pageSize"
)
Integer
pageSize
)
throws
TagNotExistException
{
@RequestParam
(
"pageSize"
)
Integer
pageSize
)
throws
TagNotExistException
{
String
userName
=
UserInfoUtils
.
getUserId
();
String
userName
=
UserInfoUtils
.
getUserId
();
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
return
tagService
.
searchPersonalDimensionTagByPage
(
userName
,
deptIdPath
,
keyword
,
//考虑一个用户对应多个机构的情况
List
<
String
>
orgIds
=
new
ArrayList
<>();
orgIds
.
add
(
deptIdPath
);
return
tagService
.
searchPersonalDimensionTagByPage
(
userName
,
orgIds
,
keyword
,
path
,
domain
,
new
Page
(
pageSize
,
pageNo
));
path
,
domain
,
new
Page
(
pageSize
,
pageNo
));
}
}
...
@@ -114,7 +122,10 @@ public class TagCtrl {
...
@@ -114,7 +122,10 @@ public class TagCtrl {
@RequestParam
(
"pageSize"
)
Integer
pageSize
)
throws
TagNotExistException
{
@RequestParam
(
"pageSize"
)
Integer
pageSize
)
throws
TagNotExistException
{
String
userName
=
UserInfoUtils
.
getUserId
();
String
userName
=
UserInfoUtils
.
getUserId
();
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
return
tagService
.
searchPersonalTagByPage
(
userName
,
deptIdPath
,
keyword
,
path
,
domain
,
new
Page
(
pageSize
,
pageNo
));
//考虑一个用户对应多个机构的情况
List
<
String
>
orgIds
=
new
ArrayList
<>();
orgIds
.
add
(
deptIdPath
);
return
tagService
.
searchPersonalTagByPage
(
userName
,
orgIds
,
keyword
,
path
,
domain
,
new
Page
(
pageSize
,
pageNo
));
}
}
// @PreAuthorize("principal.authorities.?[authority.startsWith('ROLE_tagmanager_admin')].size() > 0")
// @PreAuthorize("principal.authorities.?[authority.startsWith('ROLE_tagmanager_admin')].size() > 0")
...
@@ -142,7 +153,10 @@ public class TagCtrl {
...
@@ -142,7 +153,10 @@ public class TagCtrl {
@RequestParam
(
required
=
false
)
String
deptIdPath
)
throws
TagNotExistException
{
@RequestParam
(
required
=
false
)
String
deptIdPath
)
throws
TagNotExistException
{
String
userName
=
UserInfoUtils
.
getUserId
();
String
userName
=
UserInfoUtils
.
getUserId
();
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
return
tagService
.
queryPersonalTagExcludeOpenTypeAsTree
(
parentId
,
userName
,
deptIdPath
);
//考虑一个用户对应多个机构的情况
List
<
String
>
orgIds
=
new
ArrayList
<>();
orgIds
.
add
(
deptIdPath
);
return
tagService
.
queryPersonalTagExcludeOpenTypeAsTree
(
parentId
,
userName
,
orgIds
);
}
}
@ApiOperation
(
value
=
"分享/取消分享标签(0:取消分享 1:分享)"
,
notes
=
"分享/取消分享标签(0:取消分享 1:分享)"
)
@ApiOperation
(
value
=
"分享/取消分享标签(0:取消分享 1:分享)"
,
notes
=
"分享/取消分享标签(0:取消分享 1:分享)"
)
...
...
src/main/java/com/keymobile/tagmanager/service/TagService.java
View file @
06bf1140
package
com
.
keymobile
.
tagmanager
.
service
;
package
com
.
keymobile
.
tagmanager
.
service
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.Optional
;
import
java.util.UUID
;
import
java.util.UUID
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -115,17 +117,19 @@ public class TagService {
...
@@ -115,17 +117,19 @@ public class TagService {
}
}
//获取维度标签树
//获取维度标签树
public
JsonNode
[]
queryDimensionTagAsTree
(
String
dept
,
String
parentId
)
throws
TagNotExistException
{
public
JsonNode
[]
queryDimensionTagAsTree
(
List
<
String
>
orgIds
,
String
parentId
)
throws
TagNotExistException
{
List
<
Tag
>
tags
=
new
ArrayList
<>();
List
<
Tag
>
tags
=
new
ArrayList
<>();
//根据当前登录用户所属机构获取对应公司机构id
List
<
String
>
companyOrgIdList
=
this
.
getCompanyOrgIdListByUserOrgIds
(
orgIds
);
String
companyOrgId
=
this
.
getCompanyOrgIdByUserOrgId
(
dept
);
if
(!
companyOrgIdList
.
isEmpty
())
{
if
(
StringUtils
.
isEmpty
(
parentId
))
{
//从根节点开始获取
if
(
StringUtils
.
isEmpty
(
parentId
))
{
//从根节点开始获取
tags
=
mongoOperations
.
find
(
createDimensionTagQuery
(
companyOrgId
),
Tag
.
class
);
tags
=
mongoOperations
.
find
(
createDimensionTagQuery
(
companyOrgIdList
),
Tag
.
class
);
}
else
{
}
else
{
Tag
parentTag
=
getTagById
(
parentId
);
Tag
parentTag
=
getTagById
(
parentId
);
//获取父节点标签下的所有子标签
//获取父节点标签下的所有子标签
tags
=
getDimensionSubTag
(
parentTag
,
companyOrgId
);
tags
=
getDimensionSubTag
(
parentTag
,
companyOrgIdList
);
//tags.forEach(tag -> tag.setPath(tag.getPath().replaceAll(parentTag.getPath(), parentTag.getName())));
//tags.forEach(tag -> tag.setPath(tag.getPath().replaceAll(parentTag.getPath(), parentTag.getName())));
}
}
}
List
<
JsonNode
>
nodes
=
new
ArrayList
<>();
List
<
JsonNode
>
nodes
=
new
ArrayList
<>();
tags
.
forEach
(
p
->
{
tags
.
forEach
(
p
->
{
...
@@ -144,16 +148,17 @@ public class TagService {
...
@@ -144,16 +148,17 @@ public class TagService {
//获取个人标签树
//获取个人标签树
public
JsonNode
[]
queryPersonalTagAsTree
(
String
parentId
,
String
userId
,
public
JsonNode
[]
queryPersonalTagAsTree
(
String
parentId
,
String
userId
,
String
dept
)
List
<
String
>
orgIds
)
throws
TagNotExistException
{
throws
TagNotExistException
{
List
<
Tag
>
tags
=
new
ArrayList
<>();
List
<
Tag
>
tags
=
new
ArrayList
<>();
//根据用户所属机构id获取对应的公司机构id
List
<
String
>
companyOrgIdList
=
this
.
getCompanyOrgIdListByUserOrgIds
(
orgIds
);
String
companyOrgId
=
this
.
getCompanyOrgIdByUserOrgId
(
dept
);
if
(!
companyOrgIdList
.
isEmpty
())
{
if
(
StringUtils
.
isEmpty
(
parentId
))
{
//从根目录开始查找
if
(
StringUtils
.
isEmpty
(
parentId
))
{
//从根目录开始查找
tags
=
mongoOperations
.
find
(
this
.
createNewPersonalTagQuery
(
userId
,
dept
,
companyOrgId
),
Tag
.
class
);
tags
=
mongoOperations
.
find
(
this
.
createNewPersonalTagQuery
(
userId
,
orgIds
,
}
else
{
companyOrgIdList
),
Tag
.
class
);
Tag
parentTag
=
getTagById
(
parentId
);
}
else
{
tags
=
this
.
getNewPersonSubTag
(
parentTag
,
userId
,
dept
,
companyOrgId
);
Tag
parentTag
=
getTagById
(
parentId
);
tags
=
this
.
getNewPersonSubTag
(
parentTag
,
userId
,
orgIds
,
companyOrgIdList
);
}
}
}
List
<
JsonNode
>
nodes
=
new
ArrayList
<>();
List
<
JsonNode
>
nodes
=
new
ArrayList
<>();
tags
.
forEach
(
p
->
{
tags
.
forEach
(
p
->
{
...
@@ -168,6 +173,24 @@ public class TagService {
...
@@ -168,6 +173,24 @@ public class TagService {
}
}
}
}
//根据用户管理的机构list获取公司机构id
public
List
<
String
>
getCompanyOrgIdListByUserOrgIds
(
List
<
String
>
orgIds
)
throws
TagNotExistException
{
List
<
String
>
companyOrgIdList
=
new
ArrayList
<>();
//定义用于去重用户公司机构id的map
Map
<
String
,
String
>
companyOrgIdMap
=
new
HashMap
<>();
for
(
String
orgId
:
orgIds
)
{
//根据当前登录用户所属机构获取对应公司机构id
String
companyOrgId
=
this
.
getCompanyOrgIdByUserOrgId
(
orgId
);
companyOrgIdMap
.
put
(
companyOrgId
,
companyOrgId
);
}
//遍历map,获取去重的公司机构id的list
for
(
Map
.
Entry
<
String
,
String
>
entry
:
companyOrgIdMap
.
entrySet
())
{
companyOrgIdList
.
add
(
entry
.
getValue
());
}
return
companyOrgIdList
;
}
//根据用户所属机构id获取对应的公司机构id
//根据用户所属机构id获取对应的公司机构id
public
String
getCompanyOrgIdByUserOrgId
(
String
dept
)
throws
TagNotExistException
{
public
String
getCompanyOrgIdByUserOrgId
(
String
dept
)
throws
TagNotExistException
{
//根据用户机构id获取机构信息
//根据用户机构id获取机构信息
...
@@ -193,18 +216,22 @@ public class TagService {
...
@@ -193,18 +216,22 @@ public class TagService {
}
}
//根据关键字查询维度标签数据
//根据关键字查询维度标签数据
public
Page
searchPersonalDimensionTagByPage
(
String
userName
,
String
dept
,
String
keyword
,
public
Page
searchPersonalDimensionTagByPage
(
String
userName
,
List
<
String
>
orgIds
,
String
keyword
,
String
path
,
Integer
domain
,
Page
page
)
throws
TagNotExistException
{
String
path
,
Integer
domain
,
Page
page
)
throws
TagNotExistException
{
Criteria
andCriterias
=
createPersonalDimensionTagCriteria
(
userName
,
path
,
dept
);
List
<
String
>
companyOrgIdList
=
this
.
getCompanyOrgIdListByUserOrgIds
(
orgIds
);
if
(
StringUtils
.
isNotBlank
(
keyword
)
&&
!
"*"
.
equals
(
keyword
))
{
page
.
setData
(
new
ArrayList
<
ExtTag
>());
andCriterias
.
andOperator
(
createKeywordRegexQuery
(
Arrays
.
asList
(
"name"
,
"nameEn"
,
"desc"
),
keyword
));
page
.
setTotal
(
0L
);
if
(!
companyOrgIdList
.
isEmpty
())
{
Criteria
andCriterias
=
createPersonalDimensionTagCriteria
(
userName
,
path
,
companyOrgIdList
);
if
(
StringUtils
.
isNotBlank
(
keyword
)
&&
!
"*"
.
equals
(
keyword
))
{
andCriterias
.
andOperator
(
createKeywordRegexQuery
(
Arrays
.
asList
(
"name"
,
"nameEn"
,
"desc"
),
keyword
));
}
Query
q
=
createPageQuery
(
page
,
andCriterias
);
List
<
Tag
>
tags
=
mongoOperations
.
find
(
q
,
Tag
.
class
);
long
count
=
mongoOperations
.
count
(
q
,
Tag
.
class
);
page
.
setData
(
decoratorToExtTag
(
tags
,
userName
));
page
.
setTotal
(
count
);
}
}
Query
q
=
createPageQuery
(
page
,
andCriterias
);
List
<
Tag
>
tags
=
mongoOperations
.
find
(
q
,
Tag
.
class
);
long
count
=
mongoOperations
.
count
(
q
,
Tag
.
class
);
page
.
setData
(
decoratorToExtTag
(
tags
,
userName
));
page
.
setTotal
(
count
);
return
page
;
return
page
;
}
}
...
@@ -223,18 +250,23 @@ public class TagService {
...
@@ -223,18 +250,23 @@ public class TagService {
}
}
//根据关键字查找个人标签
//根据关键字查找个人标签
public
Page
searchPersonalTagByPage
(
String
userName
,
String
dept
,
String
keyword
,
String
path
,
public
Page
searchPersonalTagByPage
(
String
userName
,
List
<
String
>
orgIds
,
String
keyword
,
String
path
,
Integer
domain
,
Page
page
)
throws
TagNotExistException
{
Integer
domain
,
Page
page
)
throws
TagNotExistException
{
Criteria
andCriterias
=
createPersonalTagCriteria
(
userName
,
dept
,
path
);
page
.
setData
(
new
ArrayList
<
ExtTag
>());
if
(
StringUtils
.
isNotBlank
(
keyword
)
&&
!
"*"
.
equals
(
keyword
))
{
page
.
setTotal
(
0L
);
andCriterias
.
andOperator
(
createKeywordRegexQuery
(
Arrays
.
asList
(
"name"
,
"nameEn"
,
"desc"
),
keyword
));
List
<
String
>
companyOrgIdList
=
this
.
getCompanyOrgIdListByUserOrgIds
(
orgIds
);
if
(!
companyOrgIdList
.
isEmpty
())
{
Criteria
andCriterias
=
createPersonalTagCriteria
(
userName
,
orgIds
,
companyOrgIdList
,
path
);
if
(
StringUtils
.
isNotBlank
(
keyword
)
&&
!
"*"
.
equals
(
keyword
))
{
andCriterias
.
andOperator
(
createKeywordRegexQuery
(
Arrays
.
asList
(
"name"
,
"nameEn"
,
"desc"
),
keyword
));
}
Query
q
=
createPageQuery
(
page
,
andCriterias
);
List
<
Tag
>
tags
=
mongoOperations
.
find
(
q
,
Tag
.
class
);
long
count
=
mongoOperations
.
count
(
q
,
Tag
.
class
);
page
.
setData
(
decoratorToExtTag
(
tags
,
userName
));
page
.
setTotal
(
count
);
}
}
Query
q
=
createPageQuery
(
page
,
andCriterias
);
List
<
Tag
>
tags
=
mongoOperations
.
find
(
q
,
Tag
.
class
);
long
count
=
mongoOperations
.
count
(
q
,
Tag
.
class
);
page
.
setData
(
decoratorToExtTag
(
tags
,
userName
));
page
.
setTotal
(
count
);
return
page
;
return
page
;
}
}
...
@@ -262,18 +294,14 @@ public class TagService {
...
@@ -262,18 +294,14 @@ public class TagService {
}
}
//获取新增个人标签加载上级标签树接口
//获取新增个人标签加载上级标签树接口
public
JsonNode
[]
queryPersonalTagExcludeOpenTypeAsTree
(
String
parentId
,
String
userName
,
String
dept
)
throws
TagNotExistException
{
public
JsonNode
[]
queryPersonalTagExcludeOpenTypeAsTree
(
String
parentId
,
String
userName
,
List
<
String
>
orgIds
)
throws
TagNotExistException
{
List
<
Tag
>
tags
=
new
ArrayList
<>();
List
<
Tag
>
tags
=
new
ArrayList
<>();
//根据普通用户机构id获取机构信息
List
<
String
>
companyOrgIdList
=
this
.
getCompanyOrgIdListByUserOrgIds
(
orgIds
);
String
companyOrgId
=
this
.
getCompanyOrgIdByUserOrgId
(
dept
);
if
(!
companyOrgIdList
.
isEmpty
())
{
if
(
StringUtils
.
isEmpty
(
parentId
))
{
tags
=
mongoOperations
.
find
(
createPersonalExcludeOpenTypeTagQuery
(
userName
,
companyOrgIdList
),
tags
=
mongoOperations
.
find
(
createPersonalExcludeOpenTypeTagQuery
(
userName
,
companyOrgId
),
Tag
.
class
);
Tag
.
class
);
}
}
/**else {
Tag parentTag = getTagById(parentId);
tags = getPersonSubTag(parentTag, userName);
//tags.forEach(tag -> tag.setPath(tag.getPath().replaceAll(parentTag.getPath(), parentTag.getName())));
}*/
List
<
JsonNode
>
nodes
=
new
ArrayList
<>();
List
<
JsonNode
>
nodes
=
new
ArrayList
<>();
tags
.
forEach
(
p
->
{
tags
.
forEach
(
p
->
{
JsonNode
node
=
new
JsonNode
(
p
.
getPath
(),
p
.
getId
(),
p
.
getPath
(),
p
.
getIdPath
());
JsonNode
node
=
new
JsonNode
(
p
.
getPath
(),
p
.
getId
(),
p
.
getPath
(),
p
.
getIdPath
());
...
@@ -332,18 +360,29 @@ public class TagService {
...
@@ -332,18 +360,29 @@ public class TagService {
}
}
//拼接个人维度标签树查询条件
//拼接个人维度标签树查询条件
private
Query
createDimensionTagQuery
(
String
dept
)
{
private
Query
createDimensionTagQuery
(
List
<
String
>
companyOrgIdList
)
{
return
Query
.
query
(
Criteria
.
where
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
)
Criteria
criteriaOr
=
new
Criteria
();
.
and
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
for
(
String
companyOrgId
:
companyOrgIdList
)
{
.
and
(
"proDept"
).
is
(
dept
))
Criteria
criteria
=
Criteria
.
where
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
)
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
.
and
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
.
and
(
"proDept"
).
is
(
companyOrgId
);
//加入or条件中
criteriaOr
.
orOperator
(
criteria
);
}
return
Query
.
query
(
criteriaOr
).
with
(
Sort
.
by
(
getDefaultTagOrders
()));
}
}
//根据机构获取当前维度标签的所有子标签
//根据机构获取当前维度标签的所有子标签
private
List
<
Tag
>
getDimensionSubTag
(
Tag
parentTag
,
String
companyOrgId
)
{
private
List
<
Tag
>
getDimensionSubTag
(
Tag
parentTag
,
List
<
String
>
companyOrgIdList
)
{
List
<
Tag
>
dirs
=
mongoOperations
.
find
(
new
Query
().
addCriteria
(
Criteria
.
where
(
"path"
)
Criteria
criteriaOr
=
new
Criteria
();
.
regex
(
"^"
+
parentTag
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
)
for
(
String
companyOrgId
:
companyOrgIdList
)
{
.
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
)
Criteria
criteria
=
Criteria
.
where
(
"path"
)
.
and
(
"proDept"
).
is
(
companyOrgId
))
.
regex
(
"^"
+
parentTag
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
)
.
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
)
.
and
(
"proDept"
).
is
(
companyOrgId
);
//加入or条件中
criteriaOr
.
orOperator
(
criteria
);
}
List
<
Tag
>
dirs
=
mongoOperations
.
find
(
new
Query
().
addCriteria
(
criteriaOr
)
.
with
(
Sort
.
by
(
getDefaultTagOrders
())),
Tag
.
class
);
.
with
(
Sort
.
by
(
getDefaultTagOrders
())),
Tag
.
class
);
dirs
.
add
(
parentTag
);
dirs
.
add
(
parentTag
);
return
dirs
;
return
dirs
;
...
@@ -363,32 +402,42 @@ public class TagService {
...
@@ -363,32 +402,42 @@ public class TagService {
return
orders
;
return
orders
;
}
}
//拼接查找个人标签条件
//拼接查找个人标签条件
private
Query
createNewPersonalTagQuery
(
String
userId
,
String
deptId
,
private
Query
createNewPersonalTagQuery
(
String
userId
,
List
<
String
>
orgIds
,
String
companyId
)
{
List
<
String
>
companyOrgIdList
)
{
Criteria
criteria
=
Criteria
.
where
(
"tagType"
).
is
(
"1"
);
//获取自定义标签
Criteria
criteria
=
Criteria
.
where
(
"tagType"
).
is
(
"1"
);
//获取自定义标签
criteria
.
orOperator
(
for
(
String
companyOrgId
:
companyOrgIdList
)
{
Criteria
.
where
(
"proDept"
).
is
(
companyId
)
Criteria
criteriaDim
=
Criteria
.
where
(
"proDept"
).
is
(
companyOrgId
)
.
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
),
//标签是维度管理员机构的
.
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
);
//标签是维度管理员机构的
Criteria
.
where
(
"dept"
).
is
(
deptId
).
and
(
"tagUser"
).
is
(
userId
),
//标签是普通用户结构且普通用户名创建
Criteria
criteriaShare
=
Criteria
.
where
(
"proDept"
).
is
(
companyOrgId
)
Criteria
.
where
(
"proDept"
).
is
(
companyId
)
.
and
(
"isOpen"
).
is
(
Constants
.
TAG_OPEN_STATUS
);
//公司机构id是companyId和是共享状态的
.
and
(
"isOpen"
).
is
(
Constants
.
TAG_OPEN_STATUS
)
//公司机构id是companyId和是共享状态的
criteria
.
orOperator
(
criteriaDim
,
criteriaShare
);
);
}
for
(
String
orgId
:
orgIds
)
{
Criteria
criteriaUser
=
Criteria
.
where
(
"dept"
).
is
(
orgId
).
and
(
"tagUser"
).
is
(
userId
);
criteria
.
orOperator
(
criteriaUser
);
}
return
Query
.
query
(
criteria
)
return
Query
.
query
(
criteria
)
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
}
}
//根据父标签查找子标签
//根据父标签查找子标签
private
List
<
Tag
>
getNewPersonSubTag
(
Tag
parentTag
,
String
userId
,
String
deptId
,
private
List
<
Tag
>
getNewPersonSubTag
(
Tag
parentTag
,
String
userId
,
List
<
String
>
orgIds
,
String
companyId
)
{
List
<
String
>
companyOrgIdList
)
{
List
<
Tag
>
dirs
=
mongoOperations
.
find
(
new
Query
().
addCriteria
(
Criteria
.
where
(
"path"
)
Criteria
criteria
=
Criteria
.
where
(
"path"
)
.
regex
(
"^"
+
parentTag
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
)
.
regex
(
"^"
+
parentTag
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
)
.
and
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
.
and
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
);
.
orOperator
(
for
(
String
companyOrgId
:
companyOrgIdList
)
{
Criteria
.
where
(
"proDept"
).
is
(
companyId
)
Criteria
criteriaDim
=
Criteria
.
where
(
"proDept"
).
is
(
companyOrgId
)
.
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
),
//标签是维度管理员机构的
.
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
);
//标签是维度管理员机构的
Criteria
.
where
(
"dept"
).
is
(
deptId
).
and
(
"tagUser"
).
is
(
userId
),
//标签是普通用户结构且普通用户名创建
Criteria
criteriaShare
=
Criteria
.
where
(
"proDept"
).
is
(
companyOrgId
)
Criteria
.
where
(
"proDept"
).
is
(
companyId
)
.
and
(
"isOpen"
).
is
(
Constants
.
TAG_OPEN_STATUS
);
//公司机构id是companyId和是共享状态的
.
and
(
"isOpen"
).
is
(
Constants
.
TAG_OPEN_STATUS
)
//公司机构id是companyId和是共享状态的
criteria
.
orOperator
(
criteriaDim
,
criteriaShare
);
)).
with
(
Sort
.
by
(
getDefaultTagOrders
())),
Tag
.
class
);
}
for
(
String
orgId
:
orgIds
)
{
Criteria
criteriaUser
=
Criteria
.
where
(
"dept"
).
is
(
orgId
).
and
(
"tagUser"
).
is
(
userId
);
criteria
.
orOperator
(
criteriaUser
);
}
List
<
Tag
>
dirs
=
mongoOperations
.
find
(
new
Query
().
addCriteria
(
criteria
)
.
with
(
Sort
.
by
(
getDefaultTagOrders
())),
Tag
.
class
);
dirs
.
add
(
parentTag
);
dirs
.
add
(
parentTag
);
return
dirs
;
return
dirs
;
}
}
...
@@ -401,16 +450,17 @@ public class TagService {
...
@@ -401,16 +450,17 @@ public class TagService {
}
}
//拼接根据机构id查询个人维度标签
//拼接根据机构id查询个人维度标签
private
Criteria
createPersonalDimensionTagCriteria
(
String
userName
,
private
Criteria
createPersonalDimensionTagCriteria
(
String
userName
,
String
path
,
String
dept
)
throws
TagNotExistException
String
path
,
List
<
String
>
companyOrgIdList
)
throws
TagNotExistException
{
{
Criteria
criteriaOr
=
new
Criteria
();
//根据当前用户所属机构获取公司结构id
for
(
String
companyOrgId
:
companyOrgIdList
)
{
String
companyOrgId
=
this
.
getCompanyOrgIdByUserOrgId
(
dept
);
Criteria
criteria
=
Criteria
.
where
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
Criteria
criteria
=
Criteria
.
where
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
.
and
(
"proDept"
).
is
(
companyOrgId
).
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
);
.
and
(
"proDept"
).
is
(
companyOrgId
).
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
);
criteriaOr
.
orOperator
(
criteria
);
}
if
(
StringUtils
.
isNotBlank
(
path
))
{
if
(
StringUtils
.
isNotBlank
(
path
))
{
criteria
.
and
(
"path"
).
regex
(
"^"
+
path
);
criteria
Or
.
and
(
"path"
).
regex
(
"^"
+
path
);
}
}
return
criteria
;
return
criteria
Or
;
}
}
//拼接查找系统标签条件
//拼接查找系统标签条件
private
Criteria
createSystemTagCriteria
(
String
path
)
{
private
Criteria
createSystemTagCriteria
(
String
path
)
{
...
@@ -436,24 +486,26 @@ public class TagService {
...
@@ -436,24 +486,26 @@ public class TagService {
}).
collect
(
Collectors
.
toList
());
}).
collect
(
Collectors
.
toList
());
}
}
//拼接个人标签查询条件
//拼接个人标签查询条件
private
Criteria
createPersonalTagCriteria
(
String
userName
,
String
dept
,
String
path
)
throws
TagNotExistException
{
private
Criteria
createPersonalTagCriteria
(
String
userName
,
List
<
String
>
orgIds
,
//根据当前用户机构id获取所属公司机构id
List
<
String
>
companyOrgIdList
,
String
path
)
throws
TagNotExistException
{
String
companyOrgId
=
this
.
getCompanyOrgIdByUserOrgId
(
dept
);
Criteria
criteriaOr
=
new
Criteria
();
Criteria
criteria1
=
Criteria
.
where
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
for
(
String
orgId
:
orgIds
)
{
.
and
(
"dept"
).
is
(
dept
).
and
(
"tagUser"
).
is
(
userName
);
Criteria
criteria
=
Criteria
.
where
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
if
(
StringUtils
.
isNotBlank
(
path
))
{
.
and
(
"dept"
).
is
(
orgId
).
and
(
"tagUser"
).
is
(
userName
);
criteria1
=
criteria1
.
and
(
"path"
).
regex
(
"^"
+
path
);
if
(
StringUtils
.
isNotBlank
(
path
))
{
return
new
Criteria
().
orOperator
(
criteria
.
and
(
"path"
).
regex
(
"^"
+
path
);
criteria1
,
}
//查询共享个人标签
criteriaOr
.
orOperator
(
criteria
);
Criteria
.
where
(
"proDept"
).
is
(
companyOrgId
)
.
and
(
"path"
).
regex
(
"^"
+
path
).
and
(
"isOpen"
).
is
(
Constants
.
TAG_OPEN_STATUS
));
}
else
{
return
new
Criteria
().
orOperator
(
criteria1
,
//查询共享个人标签
Criteria
.
where
(
"proDept"
).
is
(
companyOrgId
).
and
(
"isOpen"
).
is
(
Constants
.
TAG_OPEN_STATUS
));
}
}
for
(
String
companyOrgId
:
companyOrgIdList
)
{
Criteria
criteria
=
Criteria
.
where
(
"proDept"
).
is
(
companyOrgId
)
.
and
(
"isOpen"
).
is
(
Constants
.
TAG_OPEN_STATUS
);
if
(
StringUtils
.
isNotBlank
(
path
))
{
criteria
.
and
(
"path"
).
regex
(
"^"
+
path
);
}
criteriaOr
.
orOperator
(
criteria
);
}
return
criteriaOr
;
}
}
//拼接查询当前系统标签子标签条件
//拼接查询当前系统标签子标签条件
private
List
<
Tag
>
getSystemSubTag
(
Tag
parentTag
)
{
private
List
<
Tag
>
getSystemSubTag
(
Tag
parentTag
)
{
...
@@ -465,9 +517,14 @@ public class TagService {
...
@@ -465,9 +517,14 @@ public class TagService {
return
dirs
;
return
dirs
;
}
}
//拼接获取维度标签条件
//拼接获取维度标签条件
private
Query
createPersonalExcludeOpenTypeTagQuery
(
String
userName
,
String
dept
)
{
private
Query
createPersonalExcludeOpenTypeTagQuery
(
String
userName
,
List
<
String
>
companyOrgIdList
)
{
return
Query
.
query
(
Criteria
.
where
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
Criteria
criteriaOr
=
new
Criteria
();
.
and
(
"dept"
).
is
(
dept
).
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
))
for
(
String
companyOrgId
:
companyOrgIdList
)
{
Criteria
criteria
=
Criteria
.
where
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
.
and
(
"dept"
).
is
(
companyOrgId
).
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
);
criteriaOr
.
orOperator
(
criteria
);
}
return
Query
.
query
(
criteriaOr
)
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
}
}
...
@@ -504,27 +561,27 @@ public class TagService {
...
@@ -504,27 +561,27 @@ public class TagService {
// return new JsonNode[] {};
// return new JsonNode[] {};
// }
// }
private
Query
createPersonalTagQuery
(
String
userName
,
String
dept
,
Criteria
...
serachCriterias
)
throws
TagNotExistException
{
//
private Query createPersonalTagQuery(String userName, String dept, Criteria... serachCriterias)throws TagNotExistException {
return
Query
.
query
(
//
return Query.query(
createPersonalTagCriteria
(
userName
,
dept
,
null
))
//
createPersonalTagCriteria(userName, dept, null))
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
//
.with(Sort.by(getDefaultTagOrders()));
}
//
}
//
public
List
<
Tag
>
getPersonSubTag
(
Tag
parentTag
,
String
userName
)
{
//
public List<Tag> getPersonSubTag(Tag parentTag, String userName) {
List
<
Tag
>
dirs
=
mongoOperations
.
find
(
new
Query
().
addCriteria
(
Criteria
.
where
(
"path"
)
//
List<Tag> dirs = mongoOperations.find(new Query().addCriteria(Criteria.where("path")
.
regex
(
"^"
+
parentTag
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
)
//
.regex("^"+parentTag.getPath() + Constants.TAG_PATH_SEPARATOR)
.
and
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
//
.and("tagType").is(Constants.TAG_PERSONAL_TYPE)
.
orOperator
(
//
.orOperator(
Criteria
.
where
(
"openStatus"
).
is
(
Constants
.
TAG_OPEN_STATUS
),
//
Criteria.where("openStatus").is(Constants.TAG_OPEN_STATUS),
Criteria
.
where
(
"creator"
).
is
(
userName
)))
//
Criteria.where("creator").is(userName)))
.
with
(
Sort
.
by
(
getDefaultTagOrders
())),
Tag
.
class
);
//
.with(Sort.by(getDefaultTagOrders())), Tag.class);
dirs
.
add
(
parentTag
);
//
dirs.add(parentTag);
return
dirs
;
//
return dirs;
}
//
}
//
private
Criteria
createPathRegexQuery
(
String
path
)
{
//
private Criteria createPathRegexQuery(String path) {
return
Criteria
.
where
(
"path"
).
regex
(
"^"
+
path
);
//
return Criteria.where("path").regex("^"+path);
}
//
}
public
List
<
SysTag
>
listSysTags
()
{
public
List
<
SysTag
>
listSysTags
()
{
return
mongoOperations
.
findAll
(
SysTag
.
class
);
return
mongoOperations
.
findAll
(
SysTag
.
class
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment