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
bc6720bc
Commit
bc6720bc
authored
Feb 21, 2020
by
zhangkb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
标签共享代码提交
parent
fd83c649
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
188 additions
and
34 deletions
+188
-34
TagCtrl.java
src/main/java/com/keymobile/tagmanager/api/TagCtrl.java
+12
-0
ExtTag.java
src/main/java/com/keymobile/tagmanager/model/ExtTag.java
+45
-30
RepoServiceClient.java
...va/com/keymobile/tagmanager/remote/RepoServiceClient.java
+1
-0
TagFileService.java
...java/com/keymobile/tagmanager/service/TagFileService.java
+1
-1
TagService.java
...ain/java/com/keymobile/tagmanager/service/TagService.java
+127
-2
Constants.java
src/main/java/com/keymobile/tagmanager/util/Constants.java
+2
-1
No files found.
src/main/java/com/keymobile/tagmanager/api/TagCtrl.java
View file @
bc6720bc
...
@@ -2,6 +2,7 @@ package com.keymobile.tagmanager.api;
...
@@ -2,6 +2,7 @@ package com.keymobile.tagmanager.api;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Set
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
...
@@ -117,6 +118,7 @@ public class TagCtrl {
...
@@ -117,6 +118,7 @@ public class TagCtrl {
//获取当前登录用户机构id
//获取当前登录用户机构id
deptIdPath
=
/**UserInfoUtils.getDataRoleOrg()*/
String
.
valueOf
(
GrantedAuthHelper
.
getUserOrg
());
deptIdPath
=
/**UserInfoUtils.getDataRoleOrg()*/
String
.
valueOf
(
GrantedAuthHelper
.
getUserOrg
());
logger
.
info
(
"personalDept:"
+
deptIdPath
);
logger
.
info
(
"personalDept:"
+
deptIdPath
);
//考虑一个用户对应多个机构的情况
//考虑一个用户对应多个机构的情况
List
<
String
>
orgIds
=
new
ArrayList
<>();
List
<
String
>
orgIds
=
new
ArrayList
<>();
orgIds
.
add
(
deptIdPath
);
orgIds
.
add
(
deptIdPath
);
...
@@ -261,6 +263,16 @@ public class TagCtrl {
...
@@ -261,6 +263,16 @@ public class TagCtrl {
return
tagExportService
.
exportTagAnalysisExcel
(
dataType
,
type
,
response
);
return
tagExportService
.
exportTagAnalysisExcel
(
dataType
,
type
,
response
);
}
}
@ApiOperation
(
value
=
"根据用户授予的数据权限加载标签元数据"
,
notes
=
"根据用户授予的数据权限加载标签元数据"
)
@PostMapping
(
value
=
"/getByTagWithPrivilege"
)
public
Map
<
String
,
Object
>
getTagMetadataWithDataPrivilege
(
@RequestParam
String
dimensionType
,
@RequestParam
String
idPath
,
@RequestParam
(
required
=
false
)
String
keyword
,
@RequestParam
(
required
=
false
)
String
modelPath
,
@RequestParam
int
pageNum
,
@RequestParam
int
pageSize
,
@RequestParam
String
tagType
){
return
tagService
.
getTagMetadataWithDataPrivilege
(
dimensionType
,
idPath
,
keyword
,
modelPath
,
pageNum
,
pageSize
,
tagType
);
}
//---------------以下为导入系统的时候用到------------------
//---------------以下为导入系统的时候用到------------------
@ApiOperation
(
value
=
"查询系统标签"
,
notes
=
"查询系统标签"
)
@ApiOperation
(
value
=
"查询系统标签"
,
notes
=
"查询系统标签"
)
...
...
src/main/java/com/keymobile/tagmanager/model/ExtTag.java
View file @
bc6720bc
package
com
.
keymobile
.
tagmanager
.
model
;
package
com
.
keymobile
.
tagmanager
.
model
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
com.keymobile.tagmanager.util.Constants
;
import
com.keymobile.tagmanager.util.Constants
;
public
class
ExtTag
extends
Tag
{
public
class
ExtTag
extends
Tag
{
/**
/**
*
*
*/
*/
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
private
String
operable
=
Constants
.
TAG_OPERABLE_FALSE
;
private
String
operable
=
Constants
.
TAG_OPERABLE_FALSE
;
public
ExtTag
(
Tag
t
,
String
operable
)
{
private
String
shareable
=
Constants
.
TAG_SHAREABLE_FALSE
;
BeanUtils
.
copyProperties
(
t
,
this
);
this
.
operable
=
operable
;
public
ExtTag
(
Tag
t
,
String
operable
)
{
}
BeanUtils
.
copyProperties
(
t
,
this
);
this
.
operable
=
operable
;
public
void
setOperable
(
String
operable
)
{
}
this
.
operable
=
operable
;
}
public
ExtTag
(
Tag
t
,
String
operable
,
String
shareable
)
{
BeanUtils
.
copyProperties
(
t
,
this
);
public
String
getOperable
()
{
this
.
operable
=
operable
;
return
operable
;
this
.
shareable
=
shareable
;
}
}
public
void
setOperable
(
String
operable
)
{
}
this
.
operable
=
operable
;
}
public
String
getOperable
()
{
return
operable
;
}
public
String
getShareable
()
{
return
shareable
;
}
public
void
setShareable
(
String
shareable
)
{
this
.
shareable
=
shareable
;
}
}
src/main/java/com/keymobile/tagmanager/remote/RepoServiceClient.java
View file @
bc6720bc
...
@@ -14,6 +14,7 @@ public interface RepoServiceClient {
...
@@ -14,6 +14,7 @@ public interface RepoServiceClient {
public
Map
<
String
,
Object
>
getTagMetadata
(
@RequestParam
String
dimensionType
,
public
Map
<
String
,
Object
>
getTagMetadata
(
@RequestParam
String
dimensionType
,
@RequestParam
String
idPath
,
@RequestParam
String
idPath
,
@RequestParam
(
required
=
false
)
String
keyword
,
@RequestParam
(
required
=
false
)
String
keyword
,
@RequestParam
(
required
=
false
)
String
modelPath
,
@RequestParam
(
required
=
false
)
int
pageNum
,
@RequestParam
(
required
=
false
)
int
pageNum
,
@RequestParam
(
required
=
false
)
int
pageSize
,
@RequestParam
(
required
=
false
)
int
pageSize
,
@RequestParam
String
tagType
);
@RequestParam
String
tagType
);
...
...
src/main/java/com/keymobile/tagmanager/service/TagFileService.java
View file @
bc6720bc
...
@@ -111,7 +111,7 @@ public class TagFileService {
...
@@ -111,7 +111,7 @@ public class TagFileService {
public
int
exportTagMetadataExcel
(
String
idPath
,
String
dimensionType
,
public
int
exportTagMetadataExcel
(
String
idPath
,
String
dimensionType
,
String
tagType
,
HttpServletResponse
response
)
{
String
tagType
,
HttpServletResponse
response
)
{
//获取标签元数据信息
//获取标签元数据信息
Map
<
String
,
Object
>
data
=
repoService
.
getTagMetadata
(
dimensionType
,
idPath
,
""
,
1
,
1
0000
,
tagType
);
Map
<
String
,
Object
>
data
=
repoService
.
getTagMetadata
(
dimensionType
,
idPath
,
""
,
null
,
1
,
10
0000
,
tagType
);
List
<
Map
<
String
,
Object
>>
content
=
(
List
<
Map
<
String
,
Object
>>)
data
.
get
(
"content"
);
List
<
Map
<
String
,
Object
>>
content
=
(
List
<
Map
<
String
,
Object
>>)
data
.
get
(
"content"
);
List
<
TagMetadata
>
toExportTagMeta
=
new
ArrayList
<>();
List
<
TagMetadata
>
toExportTagMeta
=
new
ArrayList
<>();
for
(
Map
<
String
,
Object
>
map
:
content
)
{
for
(
Map
<
String
,
Object
>
map
:
content
)
{
...
...
src/main/java/com/keymobile/tagmanager/service/TagService.java
View file @
bc6720bc
...
@@ -4,9 +4,11 @@ import java.util.Arrays;
...
@@ -4,9 +4,11 @@ import java.util.Arrays;
import
java.util.Collections
;
import
java.util.Collections
;
import
java.util.Comparator
;
import
java.util.Comparator
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.Optional
;
import
java.util.Set
;
import
java.util.UUID
;
import
java.util.UUID
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -21,6 +23,9 @@ import org.springframework.data.mongodb.core.MongoOperations;
...
@@ -21,6 +23,9 @@ import org.springframework.data.mongodb.core.MongoOperations;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
com.keymobile.auth.common.security.GrantedAuthHelper
;
import
com.keymobile.tagmanager.exception.TagDuplicateException
;
import
com.keymobile.tagmanager.exception.TagDuplicateException
;
import
com.keymobile.tagmanager.exception.TagException
;
import
com.keymobile.tagmanager.exception.TagException
;
import
com.keymobile.tagmanager.exception.TagNotExistException
;
import
com.keymobile.tagmanager.exception.TagNotExistException
;
...
@@ -34,6 +39,7 @@ import com.keymobile.tagmanager.remote.AuthServiceClient;
...
@@ -34,6 +39,7 @@ import com.keymobile.tagmanager.remote.AuthServiceClient;
import
com.keymobile.tagmanager.remote.RepoServiceClient
;
import
com.keymobile.tagmanager.remote.RepoServiceClient
;
import
com.keymobile.tagmanager.util.Constants
;
import
com.keymobile.tagmanager.util.Constants
;
import
com.keymobile.tagmanager.util.JsonTreeHelper
;
import
com.keymobile.tagmanager.util.JsonTreeHelper
;
import
com.keymobile.tagmanager.util.UserInfoUtils
;
import
com.keymobile.tagmanager.util.JsonTreeHelper.JsonNode
;
import
com.keymobile.tagmanager.util.JsonTreeHelper.JsonNode
;
@Service
@Service
...
@@ -166,6 +172,14 @@ public class TagService {
...
@@ -166,6 +172,14 @@ public class TagService {
tags
=
this
.
getNewPersonSubTag
(
parentTag
,
userId
,
orgIds
,
companyOrgIdList
);
tags
=
this
.
getNewPersonSubTag
(
parentTag
,
userId
,
orgIds
,
companyOrgIdList
);
}
}
}
}
//判断共享节点是否可见
Iterator
<
Tag
>
iterator
=
tags
.
iterator
();
while
(
iterator
.
hasNext
())
{
Tag
tag
=
iterator
.
next
();
if
(
"1"
.
equals
(
tag
.
getIsOpen
())
&&
!
isShareTag
(
tag
))
{
//如果不是共享可见的
iterator
.
remove
();
}
}
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
()
...
@@ -267,7 +281,7 @@ public class TagService {
...
@@ -267,7 +281,7 @@ public class TagService {
List
<
Tag
>
tags
=
mongoOperations
.
find
(
q
,
Tag
.
class
);
List
<
Tag
>
tags
=
mongoOperations
.
find
(
q
,
Tag
.
class
);
long
count
=
mongoOperations
.
count
(
q
,
Tag
.
class
);
long
count
=
mongoOperations
.
count
(
q
,
Tag
.
class
);
page
.
setData
(
decoratorToExtTag
(
tags
,
userName
));
page
.
setData
(
decorator
AndShare
ToExtTag
(
tags
,
userName
));
page
.
setTotal
(
count
);
page
.
setTotal
(
count
);
}
}
return
page
;
return
page
;
...
@@ -616,6 +630,14 @@ public class TagService {
...
@@ -616,6 +630,14 @@ public class TagService {
Constants
.
TAG_OPERABLE_TRUE
:
Constants
.
TAG_OPERABLE_FALSE
);
Constants
.
TAG_OPERABLE_TRUE
:
Constants
.
TAG_OPERABLE_FALSE
);
}).
collect
(
Collectors
.
toList
());
}).
collect
(
Collectors
.
toList
());
}
}
//2020-2-20 desc:判断标签是否能被分享使用
private
List
<
ExtTag
>
decoratorAndShareToExtTag
(
List
<
Tag
>
tags
,
String
userName
){
return
tags
.
stream
().
map
(
t
->
{
return
new
ExtTag
(
t
,
t
.
getTagUser
().
equals
(
userName
)
?
Constants
.
TAG_OPERABLE_TRUE
:
Constants
.
TAG_OPERABLE_FALSE
,
this
.
isShareTag
(
t
)
?
Constants
.
TAG_SHAREABLE_TRUE
:
Constants
.
TAG_SHAREABLE_FALSE
);
}).
collect
(
Collectors
.
toList
());
}
//拼接个人标签查询条件
//拼接个人标签查询条件
private
Criteria
createPersonalTagCriteria
(
String
userName
,
List
<
String
>
orgIds
,
private
Criteria
createPersonalTagCriteria
(
String
userName
,
List
<
String
>
orgIds
,
List
<
String
>
companyOrgIdList
,
String
path
,
String
keyword
)
throws
TagNotExistException
{
List
<
String
>
companyOrgIdList
,
String
path
,
String
keyword
)
throws
TagNotExistException
{
...
@@ -671,7 +693,111 @@ public class TagService {
...
@@ -671,7 +693,111 @@ public class TagService {
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
}
}
//根据授予的元数据数据权限过滤标签关联的元数据
@SuppressWarnings
(
"unchecked"
)
public
Map
<
String
,
Object
>
getTagMetadataWithDataPrivilege
(
String
dimensionType
,
String
idPath
,
String
keyword
,
String
modelPath
,
int
pageNum
,
int
pageSize
,
String
tagType
){
//调用repo接口获取标签关联的元数据
Map
<
String
,
Object
>
tagData
=
repoService
.
getTagMetadata
(
dimensionType
,
idPath
,
keyword
,
modelPath
,
pageNum
,
pageSize
,
tagType
);
List
<
Map
<
String
,
Object
>>
content
=
(
List
<
Map
<
String
,
Object
>>)
tagData
.
get
(
"content"
);
if
(
content
.
isEmpty
())
{
return
tagData
;
}
else
{
//获取用户关联的数据权限
Map
<
Long
,
Set
<
String
>>
systemTagMap
=
GrantedAuthHelper
.
getDataPrivileges
();
logger
.
info
(
"tag metadata user privilege:"
+
systemTagMap
);
if
(
systemTagMap
.
isEmpty
())
{
tagData
.
put
(
"content"
,
new
String
[
0
]);
tagData
.
put
(
"totalElements"
,
0
);
tagData
.
put
(
"totalPages"
,
0
);
tagData
.
put
(
"numberOfElements"
,
0
);
return
tagData
;
}
else
{
//比较标签关联的元数据所属系统跟用户被授予的系统是否一致
for
(
Map
<
String
,
Object
>
mData
:
content
)
{
mData
.
put
(
"operable"
,
"0"
);
if
(
mData
.
get
(
"sysList"
)!=
null
)
{
List
<
String
>
sysList
=
(
List
<
String
>)
mData
.
get
(
"sysList"
);
//比较系统,有同个系统的则为可见的共享标签
for
(
String
sys
:
sysList
)
{
if
(
systemTagMap
.
get
(
Long
.
valueOf
(
sys
))!=
null
)
{
if
(
systemTagMap
.
get
(
Long
.
valueOf
(
sys
)).
contains
(
"*"
))
{
mData
.
put
(
"operable"
,
"1"
);
}
else
{
//根据当前用户被授予的标签获取关联的元数据
Set
<
String
>
tags
=
systemTagMap
.
get
(
Long
.
valueOf
(
sys
));
for
(
String
usrTag
:
tags
)
{
Map
<
String
,
Object
>
userTagData
=
repoService
.
getTagMetadata
(
"1"
,
usrTag
,
""
,
null
,
1
,
100000
,
"1"
);
List
<
Map
<
String
,
Object
>>
tagContent
=
(
List
<
Map
<
String
,
Object
>>)
userTagData
.
get
(
"content"
);
if
(
tagContent
.
contains
(
mData
))
{
mData
.
put
(
"operable"
,
"1"
);
}
}
}
}
}
}
}
tagData
.
put
(
"content"
,
content
);
return
tagData
;
}
}
}
//判断共享的标签是否可见
@SuppressWarnings
(
"unchecked"
)
public
boolean
isShareTag
(
Tag
tag
)
{
//获取当前用户id
String
userName
=
UserInfoUtils
.
getUserId
();
if
(
StringUtils
.
isNotBlank
(
userName
))
{
//如果共享标签是当前客户所创,标识为true
if
(
userName
.
equals
(
tag
.
getTagUser
()))
{
return
true
;
}
else
{
/*获取当前用户关联的标签和系统(接口返回的数据格式:{4=[*], 9=[*]}或者
{4=["3c8fd99f-73cb-42d3-a864-6a86f0dd0d81,eb866730-e02d-455e-b880-58de4603c967",
"3c8fd99f-73cb-42d3-a864-6a86f0dd0d81,37eb3327-a63c-41b8-b1fd-385fd4eb58a4"]})*/
Map
<
Long
,
Set
<
String
>>
systemTagMap
=
GrantedAuthHelper
.
getDataPrivileges
();
logger
.
info
(
"tag share systemTagMap:"
+
systemTagMap
);
if
(!
systemTagMap
.
isEmpty
())
{
//获取传入的标签关联的元数据
Map
<
String
,
Object
>
data
=
repoService
.
getTagMetadata
(
tag
.
getDimensionType
(),
tag
.
getIdPath
(),
""
,
null
,
1
,
100000
,
tag
.
getTagType
());
List
<
Map
<
String
,
Object
>>
content
=
(
List
<
Map
<
String
,
Object
>>)
data
.
get
(
"content"
);
if
(!
content
.
isEmpty
())
{
//比较标签关联的元数据所属系统跟用户被授予的系统是否一致
for
(
Map
<
String
,
Object
>
mData
:
content
)
{
if
(
mData
.
get
(
"sysList"
)!=
null
)
{
List
<
String
>
sysList
=
(
List
<
String
>)
mData
.
get
(
"sysList"
);
//比较系统,有同个系统的则为可见的共享标签
for
(
String
sys
:
sysList
)
{
if
(
systemTagMap
.
get
(
Long
.
valueOf
(
sys
))!=
null
)
{
if
(
systemTagMap
.
get
(
Long
.
valueOf
(
sys
)).
contains
(
"*"
))
{
return
true
;
}
else
{
//根据当前用户被授予的标签获取关联的元数据
Set
<
String
>
tags
=
systemTagMap
.
get
(
Long
.
valueOf
(
sys
));
for
(
String
usrTag
:
tags
)
{
Map
<
String
,
Object
>
tagData
=
repoService
.
getTagMetadata
(
"1"
,
usrTag
,
""
,
null
,
1
,
100000
,
"1"
);
List
<
Map
<
String
,
Object
>>
tagContent
=
(
List
<
Map
<
String
,
Object
>>)
tagData
.
get
(
"content"
);
if
(
tagContent
.
contains
(
mData
))
{
return
true
;
}
}
}
}
}
}
}
}
}
}
}
return
false
;
}
...
@@ -745,5 +871,4 @@ public class TagService {
...
@@ -745,5 +871,4 @@ public class TagService {
mongoOperations
.
save
(
sysTag
);
mongoOperations
.
save
(
sysTag
);
return
sysTag
;
return
sysTag
;
}
}
}
}
src/main/java/com/keymobile/tagmanager/util/Constants.java
View file @
bc6720bc
...
@@ -92,5 +92,6 @@ public final class Constants {
...
@@ -92,5 +92,6 @@ public final class Constants {
public
static
final
String
DEPT_DEFAULT_ID_PATH
=
"4285,4287"
;
public
static
final
String
DEPT_DEFAULT_ID_PATH
=
"4285,4287"
;
public
static
final
String
DEPT_DEFAULT_SEPERATOR
=
","
;
public
static
final
String
DEPT_DEFAULT_SEPERATOR
=
","
;
public
static
final
String
TAG_SHAREABLE_TRUE
=
"1"
;
public
static
final
String
TAG_SHAREABLE_FALSE
=
"0"
;
}
}
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