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
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
177 additions
and
106 deletions
+177
-106
TagCtrl.java
src/main/java/com/keymobile/tagmanager/api/TagCtrl.java
+21
-7
TagService.java
...ain/java/com/keymobile/tagmanager/service/TagService.java
+156
-99
No files found.
src/main/java/com/keymobile/tagmanager/api/TagCtrl.java
View file @
06bf1140
package
com
.
keymobile
.
tagmanager
.
api
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
...
...
@@ -15,7 +15,6 @@ import com.keymobile.tagmanager.model.SysTag;
import
com.keymobile.tagmanager.model.Tag
;
import
com.keymobile.tagmanager.service.TagService
;
import
com.keymobile.tagmanager.util.JsonTreeHelper.JsonNode
;
import
com.keymobile.tagmanager.util.Constants
;
import
com.keymobile.tagmanager.util.UserInfoUtils
;
import
io.swagger.annotations.Api
;
...
...
@@ -74,7 +73,10 @@ public class TagCtrl {
@RequestParam
(
required
=
false
)
String
deptIdPath
)
throws
TagNotExistException
{
//获取当前登录用户机构
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
return
tagService
.
queryDimensionTagAsTree
(
deptIdPath
,
parentId
);
//考虑一个用户对应多个机构的情况
List
<
String
>
orgIds
=
new
ArrayList
<>();
orgIds
.
add
(
deptIdPath
);
return
tagService
.
queryDimensionTagAsTree
(
orgIds
,
parentId
);
}
@ApiOperation
(
value
=
"获取个人标签树"
,
notes
=
"获取个人标签树"
)
...
...
@@ -84,9 +86,12 @@ public class TagCtrl {
@RequestParam
(
required
=
false
)
String
deptIdPath
)
throws
TagNotExistException
{
//获取当前登录用户机构id
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
//考虑一个用户对应多个机构的情况
List
<
String
>
orgIds
=
new
ArrayList
<>();
orgIds
.
add
(
deptIdPath
);
//获取当前登录用户id
String
userId
=
UserInfoUtils
.
getUserId
();
return
tagService
.
queryPersonalTagAsTree
(
parentId
,
userId
,
deptIdPath
);
return
tagService
.
queryPersonalTagAsTree
(
parentId
,
userId
,
orgIds
);
}
@ApiOperation
(
value
=
"搜索维度标签里面的个人标签"
,
notes
=
"搜索维度标签里面的个人标签"
)
...
...
@@ -100,7 +105,10 @@ public class TagCtrl {
@RequestParam
(
"pageSize"
)
Integer
pageSize
)
throws
TagNotExistException
{
String
userName
=
UserInfoUtils
.
getUserId
();
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
));
}
...
...
@@ -114,7 +122,10 @@ public class TagCtrl {
@RequestParam
(
"pageSize"
)
Integer
pageSize
)
throws
TagNotExistException
{
String
userName
=
UserInfoUtils
.
getUserId
();
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")
...
...
@@ -142,7 +153,10 @@ public class TagCtrl {
@RequestParam
(
required
=
false
)
String
deptIdPath
)
throws
TagNotExistException
{
String
userName
=
UserInfoUtils
.
getUserId
();
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:分享)"
)
...
...
src/main/java/com/keymobile/tagmanager/service/TagService.java
View file @
06bf1140
package
com
.
keymobile
.
tagmanager
.
service
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.UUID
;
import
java.util.stream.Collectors
;
...
...
@@ -115,18 +117,20 @@ 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
<>();
//根据当前登录用户所属机构获取对应公司机构id
String
companyOrgId
=
this
.
getCompanyOrgIdByUserOrgId
(
dept
);
List
<
String
>
companyOrgIdList
=
this
.
getCompanyOrgIdListByUserOrgIds
(
orgIds
);
if
(!
companyOrgIdList
.
isEmpty
())
{
if
(
StringUtils
.
isEmpty
(
parentId
))
{
//从根节点开始获取
tags
=
mongoOperations
.
find
(
createDimensionTagQuery
(
companyOrgId
),
Tag
.
class
);
tags
=
mongoOperations
.
find
(
createDimensionTagQuery
(
companyOrgIdList
),
Tag
.
class
);
}
else
{
Tag
parentTag
=
getTagById
(
parentId
);
//获取父节点标签下的所有子标签
tags
=
getDimensionSubTag
(
parentTag
,
companyOrgId
);
tags
=
getDimensionSubTag
(
parentTag
,
companyOrgIdList
);
//tags.forEach(tag -> tag.setPath(tag.getPath().replaceAll(parentTag.getPath(), parentTag.getName())));
}
}
List
<
JsonNode
>
nodes
=
new
ArrayList
<>();
tags
.
forEach
(
p
->
{
JsonNode
node
=
new
JsonNode
(
p
.
getPath
(),
p
.
getId
(),
p
.
getPath
(),
p
.
getIdPath
());
...
...
@@ -144,16 +148,17 @@ public class TagService {
//获取个人标签树
public
JsonNode
[]
queryPersonalTagAsTree
(
String
parentId
,
String
userId
,
String
dept
)
throws
TagNotExistException
{
List
<
String
>
orgIds
)
throws
TagNotExistException
{
List
<
Tag
>
tags
=
new
ArrayList
<>();
//根据用户所属机构id获取对应的公司机构id
String
companyOrgId
=
this
.
getCompanyOrgIdByUserOrgId
(
dept
);
List
<
String
>
companyOrgIdList
=
this
.
getCompanyOrgIdListByUserOrgIds
(
orgIds
);
if
(!
companyOrgIdList
.
isEmpty
())
{
if
(
StringUtils
.
isEmpty
(
parentId
))
{
//从根目录开始查找
tags
=
mongoOperations
.
find
(
this
.
createNewPersonalTagQuery
(
userId
,
dept
,
companyOrgId
),
Tag
.
class
);
tags
=
mongoOperations
.
find
(
this
.
createNewPersonalTagQuery
(
userId
,
orgIds
,
companyOrgIdList
),
Tag
.
class
);
}
else
{
Tag
parentTag
=
getTagById
(
parentId
);
tags
=
this
.
getNewPersonSubTag
(
parentTag
,
userId
,
dept
,
companyOrgId
);
tags
=
this
.
getNewPersonSubTag
(
parentTag
,
userId
,
orgIds
,
companyOrgIdList
);
}
}
List
<
JsonNode
>
nodes
=
new
ArrayList
<>();
tags
.
forEach
(
p
->
{
...
...
@@ -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
public
String
getCompanyOrgIdByUserOrgId
(
String
dept
)
throws
TagNotExistException
{
//根据用户机构id获取机构信息
...
...
@@ -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
{
Criteria
andCriterias
=
createPersonalDimensionTagCriteria
(
userName
,
path
,
dept
);
List
<
String
>
companyOrgIdList
=
this
.
getCompanyOrgIdListByUserOrgIds
(
orgIds
);
page
.
setData
(
new
ArrayList
<
ExtTag
>());
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
);
}
return
page
;
}
...
...
@@ -223,9 +250,13 @@ 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
{
Criteria
andCriterias
=
createPersonalTagCriteria
(
userName
,
dept
,
path
);
page
.
setData
(
new
ArrayList
<
ExtTag
>());
page
.
setTotal
(
0L
);
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
));
}
...
...
@@ -235,6 +266,7 @@ public class TagService {
long
count
=
mongoOperations
.
count
(
q
,
Tag
.
class
);
page
.
setData
(
decoratorToExtTag
(
tags
,
userName
));
page
.
setTotal
(
count
);
}
return
page
;
}
...
...
@@ -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
<>();
//根据普通用户机构id获取机构信息
String
companyOrgId
=
this
.
getCompanyOrgIdByUserOrgId
(
dept
);
if
(
StringUtils
.
isEmpty
(
parentId
))
{
tags
=
mongoOperations
.
find
(
createPersonalExcludeOpenTypeTagQuery
(
userName
,
companyOrgId
),
Tag
.
class
);
List
<
String
>
companyOrgIdList
=
this
.
getCompanyOrgIdListByUserOrgIds
(
orgIds
);
if
(!
companyOrgIdList
.
isEmpty
())
{
tags
=
mongoOperations
.
find
(
createPersonalExcludeOpenTypeTagQuery
(
userName
,
companyOrgIdList
),
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
<>();
tags
.
forEach
(
p
->
{
JsonNode
node
=
new
JsonNode
(
p
.
getPath
(),
p
.
getId
(),
p
.
getPath
(),
p
.
getIdPath
());
...
...
@@ -332,18 +360,29 @@ public class TagService {
}
//拼接个人维度标签树查询条件
private
Query
createDimensionTagQuery
(
String
dept
)
{
return
Query
.
query
(
Criteria
.
where
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
)
private
Query
createDimensionTagQuery
(
List
<
String
>
companyOrgIdList
)
{
Criteria
criteriaOr
=
new
Criteria
();
for
(
String
companyOrgId
:
companyOrgIdList
)
{
Criteria
criteria
=
Criteria
.
where
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
)
.
and
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
.
and
(
"proDept"
).
is
(
dept
))
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
.
and
(
"proDept"
).
is
(
companyOrgId
);
//加入or条件中
criteriaOr
.
orOperator
(
criteria
);
}
return
Query
.
query
(
criteriaOr
).
with
(
Sort
.
by
(
getDefaultTagOrders
()));
}
//根据机构获取当前维度标签的所有子标签
private
List
<
Tag
>
getDimensionSubTag
(
Tag
parentTag
,
String
companyOrgId
)
{
List
<
Tag
>
dirs
=
mongoOperations
.
find
(
new
Query
().
addCriteria
(
Criteria
.
where
(
"path"
)
private
List
<
Tag
>
getDimensionSubTag
(
Tag
parentTag
,
List
<
String
>
companyOrgIdList
)
{
Criteria
criteriaOr
=
new
Criteria
();
for
(
String
companyOrgId
:
companyOrgIdList
)
{
Criteria
criteria
=
Criteria
.
where
(
"path"
)
.
regex
(
"^"
+
parentTag
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
)
.
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
)
.
and
(
"proDept"
).
is
(
companyOrgId
))
.
and
(
"proDept"
).
is
(
companyOrgId
);
//加入or条件中
criteriaOr
.
orOperator
(
criteria
);
}
List
<
Tag
>
dirs
=
mongoOperations
.
find
(
new
Query
().
addCriteria
(
criteriaOr
)
.
with
(
Sort
.
by
(
getDefaultTagOrders
())),
Tag
.
class
);
dirs
.
add
(
parentTag
);
return
dirs
;
...
...
@@ -363,32 +402,42 @@ public class TagService {
return
orders
;
}
//拼接查找个人标签条件
private
Query
createNewPersonalTagQuery
(
String
userId
,
String
deptId
,
String
companyId
)
{
private
Query
createNewPersonalTagQuery
(
String
userId
,
List
<
String
>
orgIds
,
List
<
String
>
companyOrgIdList
)
{
Criteria
criteria
=
Criteria
.
where
(
"tagType"
).
is
(
"1"
);
//获取自定义标签
criteria
.
orOperator
(
Criteria
.
where
(
"proDept"
).
is
(
companyId
)
.
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
),
//标签是维度管理员机构的
Criteria
.
where
(
"dept"
).
is
(
deptId
).
and
(
"tagUser"
).
is
(
userId
),
//标签是普通用户结构且普通用户名创建
Criteria
.
where
(
"proDept"
).
is
(
companyId
)
.
and
(
"isOpen"
).
is
(
Constants
.
TAG_OPEN_STATUS
)
//公司机构id是companyId和是共享状态的
);
for
(
String
companyOrgId
:
companyOrgIdList
)
{
Criteria
criteriaDim
=
Criteria
.
where
(
"proDept"
).
is
(
companyOrgId
)
.
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
);
//标签是维度管理员机构的
Criteria
criteriaShare
=
Criteria
.
where
(
"proDept"
).
is
(
companyOrgId
)
.
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
)
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
}
//根据父标签查找子标签
private
List
<
Tag
>
getNewPersonSubTag
(
Tag
parentTag
,
String
userId
,
String
deptId
,
String
companyId
)
{
List
<
Tag
>
dirs
=
mongoOperations
.
find
(
new
Query
().
addCriteria
(
Criteria
.
where
(
"path"
)
private
List
<
Tag
>
getNewPersonSubTag
(
Tag
parentTag
,
String
userId
,
List
<
String
>
orgIds
,
List
<
String
>
companyOrgIdList
)
{
Criteria
criteria
=
Criteria
.
where
(
"path"
)
.
regex
(
"^"
+
parentTag
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
)
.
and
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
.
orOperator
(
Criteria
.
where
(
"proDept"
).
is
(
companyId
)
.
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
),
//标签是维度管理员机构的
Criteria
.
where
(
"dept"
).
is
(
deptId
).
and
(
"tagUser"
).
is
(
userId
),
//标签是普通用户结构且普通用户名创建
Criteria
.
where
(
"proDept"
).
is
(
companyId
)
.
and
(
"isOpen"
).
is
(
Constants
.
TAG_OPEN_STATUS
)
//公司机构id是companyId和是共享状态的
)).
with
(
Sort
.
by
(
getDefaultTagOrders
())),
Tag
.
class
);
.
and
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
);
for
(
String
companyOrgId
:
companyOrgIdList
)
{
Criteria
criteriaDim
=
Criteria
.
where
(
"proDept"
).
is
(
companyOrgId
)
.
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
);
//标签是维度管理员机构的
Criteria
criteriaShare
=
Criteria
.
where
(
"proDept"
).
is
(
companyOrgId
)
.
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
);
}
List
<
Tag
>
dirs
=
mongoOperations
.
find
(
new
Query
().
addCriteria
(
criteria
)
.
with
(
Sort
.
by
(
getDefaultTagOrders
())),
Tag
.
class
);
dirs
.
add
(
parentTag
);
return
dirs
;
}
...
...
@@ -401,16 +450,17 @@ public class TagService {
}
//拼接根据机构id查询个人维度标签
private
Criteria
createPersonalDimensionTagCriteria
(
String
userName
,
String
path
,
String
dept
)
throws
TagNotExistException
{
//根据当前用户所属机构获取公司结构id
String
companyOrgId
=
this
.
getCompanyOrgIdByUserOrgId
(
dept
);
String
path
,
List
<
String
>
companyOrgIdList
)
throws
TagNotExistException
{
Criteria
criteriaOr
=
new
Criteria
();
for
(
String
companyOrgId
:
companyOrgIdList
)
{
Criteria
criteria
=
Criteria
.
where
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
.
and
(
"proDept"
).
is
(
companyOrgId
).
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
);
criteriaOr
.
orOperator
(
criteria
);
}
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
)
{
...
...
@@ -436,24 +486,26 @@ public class TagService {
}).
collect
(
Collectors
.
toList
());
}
//拼接个人标签查询条件
private
Criteria
createPersonalTagCriteria
(
String
userName
,
String
dept
,
String
path
)
throws
TagNotExistException
{
//根据当前用户机构id获取所属公司机构id
String
companyOrgId
=
this
.
getCompanyOrgIdByUserOrgId
(
dept
);
Criteria
criteria1
=
Criteria
.
where
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
.
and
(
"dept"
).
is
(
dept
).
and
(
"tagUser"
).
is
(
userName
);
private
Criteria
createPersonalTagCriteria
(
String
userName
,
List
<
String
>
orgIds
,
List
<
String
>
companyOrgIdList
,
String
path
)
throws
TagNotExistException
{
Criteria
criteriaOr
=
new
Criteria
();
for
(
String
orgId
:
orgIds
)
{
Criteria
criteria
=
Criteria
.
where
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
.
and
(
"dept"
).
is
(
orgId
).
and
(
"tagUser"
).
is
(
userName
);
if
(
StringUtils
.
isNotBlank
(
path
))
{
criteria1
=
criteria1
.
and
(
"path"
).
regex
(
"^"
+
path
);
return
new
Criteria
().
orOperator
(
criteria1
,
//查询共享个人标签
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
));
criteria
.
and
(
"path"
).
regex
(
"^"
+
path
);
}
criteriaOr
.
orOperator
(
criteria
);
}
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
)
{
...
...
@@ -465,9 +517,14 @@ public class TagService {
return
dirs
;
}
//拼接获取维度标签条件
private
Query
createPersonalExcludeOpenTypeTagQuery
(
String
userName
,
String
dept
)
{
return
Query
.
query
(
Criteria
.
where
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
.
and
(
"dept"
).
is
(
dept
).
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
))
private
Query
createPersonalExcludeOpenTypeTagQuery
(
String
userName
,
List
<
String
>
companyOrgIdList
)
{
Criteria
criteriaOr
=
new
Criteria
();
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
()));
}
...
...
@@ -504,27 +561,27 @@ public class TagService {
// return new JsonNode[] {};
// }
private
Query
createPersonalTagQuery
(
String
userName
,
String
dept
,
Criteria
...
serachCriterias
)
throws
TagNotExistException
{
return
Query
.
query
(
createPersonalTagCriteria
(
userName
,
dept
,
null
))
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
}
public
List
<
Tag
>
getPersonSubTag
(
Tag
parentTag
,
String
userName
)
{
List
<
Tag
>
dirs
=
mongoOperations
.
find
(
new
Query
().
addCriteria
(
Criteria
.
where
(
"path"
)
.
regex
(
"^"
+
parentTag
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
)
.
and
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
.
orOperator
(
Criteria
.
where
(
"openStatus"
).
is
(
Constants
.
TAG_OPEN_STATUS
),
Criteria
.
where
(
"creator"
).
is
(
userName
)))
.
with
(
Sort
.
by
(
getDefaultTagOrders
())),
Tag
.
class
);
dirs
.
add
(
parentTag
);
return
dirs
;
}
private
Criteria
createPathRegexQuery
(
String
path
)
{
return
Criteria
.
where
(
"path"
).
regex
(
"^"
+
path
);
}
//
private Query createPersonalTagQuery(String userName, String dept, Criteria... serachCriterias)throws TagNotExistException {
//
return Query.query(
//
createPersonalTagCriteria(userName, dept, null))
//
.with(Sort.by(getDefaultTagOrders()));
//
}
//
//
public List<Tag> getPersonSubTag(Tag parentTag, String userName) {
//
List<Tag> dirs = mongoOperations.find(new Query().addCriteria(Criteria.where("path")
//
.regex("^"+parentTag.getPath() + Constants.TAG_PATH_SEPARATOR)
//
.and("tagType").is(Constants.TAG_PERSONAL_TYPE)
//
.orOperator(
//
Criteria.where("openStatus").is(Constants.TAG_OPEN_STATUS),
//
Criteria.where("creator").is(userName)))
//
.with(Sort.by(getDefaultTagOrders())), Tag.class);
//
dirs.add(parentTag);
//
return dirs;
//
}
//
//
private Criteria createPathRegexQuery(String path) {
//
return Criteria.where("path").regex("^"+path);
//
}
public
List
<
SysTag
>
listSysTags
()
{
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