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
10ed975e
Commit
10ed975e
authored
Jan 07, 2020
by
zhangkb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改标签管理维度标签和个人标签根据当前登录用户过滤
parent
3ff544a8
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
1344 additions
and
1062 deletions
+1344
-1062
TagCtrl.java
src/main/java/com/keymobile/tagmanager/api/TagCtrl.java
+63
-49
TagFileCtrl.java
src/main/java/com/keymobile/tagmanager/api/TagFileCtrl.java
+71
-74
Tag.java
src/main/java/com/keymobile/tagmanager/model/Tag.java
+260
-249
Org.java
.../java/com/keymobile/tagmanager/model/authService/Org.java
+24
-0
AuthServiceClient.java
...va/com/keymobile/tagmanager/remote/AuthServiceClient.java
+17
-0
TagFileService.java
...java/com/keymobile/tagmanager/service/TagFileService.java
+279
-275
TagService.java
...ain/java/com/keymobile/tagmanager/service/TagService.java
+546
-408
UserInfoUtils.java
...ain/java/com/keymobile/tagmanager/util/UserInfoUtils.java
+34
-7
application-test.yml
src/main/resources/application-test.yml
+50
-0
No files found.
src/main/java/com/keymobile/tagmanager/api/TagCtrl.java
View file @
10ed975e
...
@@ -30,14 +30,20 @@ public class TagCtrl {
...
@@ -30,14 +30,20 @@ public class TagCtrl {
@Autowired
@Autowired
private
TagService
tagService
;
private
TagService
tagService
;
//author:zhangkb time:2020-1-6 desc:修改标签相关接口
@ApiOperation
(
value
=
"新增或更新标签"
,
notes
=
"新增或更新标签"
)
@ApiOperation
(
value
=
"新增或更新标签"
,
notes
=
"新增或更新标签"
)
@PostMapping
(
value
=
"/addOrUpdateTag"
)
@PostMapping
(
value
=
"/addOrUpdateTag"
)
public
Tag
addTag
(
@RequestParam
(
value
=
"parentId"
,
required
=
false
)
String
parentId
,
public
Tag
addTag
(
@RequestParam
(
value
=
"parentId"
,
required
=
false
)
String
parentId
,
@RequestBody
Tag
tag
)
throws
Exception
{
@RequestBody
Tag
tag
)
throws
Exception
{
//获取当前登录用户名和id
String
userName
=
UserInfoUtils
.
getUserName
();
String
userName
=
UserInfoUtils
.
getUserName
();
String
userId
=
UserInfoUtils
.
getUserId
();
//获取当前登录用户所属机构
String
org
=
UserInfoUtils
.
getDataRoleOrg
();
tag
.
setCreator
(
userName
);
tag
.
setCreator
(
userName
);
tag
.
setDept
(
UserInfoUtils
.
getUserCompanyIdPath
());
tag
.
setTagUser
(
userId
);
tag
.
setDept
(
org
);
//调用新增或者修改标签接口
return
tagService
.
addOrUpdateTag
(
parentId
,
tag
,
userName
);
return
tagService
.
addOrUpdateTag
(
parentId
,
tag
,
userName
);
}
}
...
@@ -55,21 +61,13 @@ public class TagCtrl {
...
@@ -55,21 +61,13 @@ public class TagCtrl {
return
tagService
.
hasChild
(
tagId
,
userName
);
return
tagService
.
hasChild
(
tagId
,
userName
);
}
}
@ApiOperation
(
value
=
"获取维度标签树"
,
notes
=
"获取维度标签树"
)
// @PreAuthorize("principal.authorities.?[authority.startsWith('ROLE_tagmanager_admin')].size() > 0")
@ApiOperation
(
value
=
"查询系统标签树"
,
notes
=
"查询系统标签树"
)
@GetMapping
(
value
=
"/querySystemTagAsTree"
)
public
JsonNode
[]
querySystemTagAsTree
(
@RequestParam
(
value
=
"parentId"
,
required
=
false
)
String
parentId
)
throws
TagNotExistException
{
return
tagService
.
querySystemTagAsTree
(
parentId
);
}
@ApiOperation
(
value
=
"查询维度标签树"
,
notes
=
"查询维度标签树"
)
@GetMapping
(
value
=
"/queryDimensionTagAsTree"
)
@GetMapping
(
value
=
"/queryDimensionTagAsTree"
)
public
JsonNode
[]
queryDimensionTagAsTree
(
public
JsonNode
[]
queryDimensionTagAsTree
(
@RequestParam
(
value
=
"parentId"
,
required
=
false
)
String
parentId
,
@RequestParam
(
value
=
"parentId"
,
required
=
false
)
String
parentId
,
@RequestParam
(
required
=
false
)
String
deptIdPath
)
throws
TagNotExistException
{
@RequestParam
(
required
=
false
)
String
deptIdPath
)
throws
TagNotExistException
{
if
(
StringUtils
.
isBlank
(
deptIdPath
))
//获取当前登录用户机构
deptIdPath
=
UserInfoUtils
.
getUserCompanyIdPath
();
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
return
tagService
.
queryDimensionTagAsTree
(
deptIdPath
,
parentId
);
return
tagService
.
queryDimensionTagAsTree
(
deptIdPath
,
parentId
);
}
}
...
@@ -78,35 +76,12 @@ public class TagCtrl {
...
@@ -78,35 +76,12 @@ public class TagCtrl {
public
JsonNode
[]
queryPersonalTagAsTree
(
public
JsonNode
[]
queryPersonalTagAsTree
(
@RequestParam
(
value
=
"parentId"
,
required
=
false
)
String
parentId
,
@RequestParam
(
value
=
"parentId"
,
required
=
false
)
String
parentId
,
@RequestParam
(
required
=
false
)
String
deptIdPath
)
throws
TagNotExistException
{
@RequestParam
(
required
=
false
)
String
deptIdPath
)
throws
TagNotExistException
{
if
(
StringUtils
.
isBlank
(
deptIdPath
))
//获取当前登录用户机构id
deptIdPath
=
UserInfoUtils
.
getUserCompanyIdPath
();
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
String
userName
=
UserInfoUtils
.
getUserName
();
//获取当前登录用户id
return
tagService
.
queryPersonalTagAsTree
(
parentId
,
userName
,
deptIdPath
);
String
userId
=
UserInfoUtils
.
getUserId
();
}
return
tagService
.
queryPersonalTagAsTree
(
parentId
,
userId
,
deptIdPath
);
@ApiOperation
(
value
=
"查询个人标签树不包括分享的标签"
,
notes
=
"查询个人标签树不包括分享的标签"
)
@GetMapping
(
value
=
"/queryPersonalTagExcludeOpenTypeAsTree"
)
public
JsonNode
[]
queryPersonalTagExcludeOpenTypeAsTree
(
@RequestParam
(
value
=
"parentId"
,
required
=
false
)
String
parentId
,
@RequestParam
(
required
=
false
)
String
deptIdPath
)
throws
TagNotExistException
{
String
userName
=
UserInfoUtils
.
getUserName
();
if
(
StringUtils
.
isBlank
(
deptIdPath
))
deptIdPath
=
UserInfoUtils
.
getUserCompanyIdPath
();
return
tagService
.
queryPersonalTagExcludeOpenTypeAsTree
(
parentId
,
userName
,
deptIdPath
);
}
@ApiOperation
(
value
=
"搜索系統标签"
,
notes
=
"搜索系統标签"
)
@GetMapping
(
value
=
"/searchSystemTagByPage"
)
public
Page
searchSystemTagByPage
(
@RequestParam
(
required
=
false
,
value
=
"keyword"
)
String
keyword
,
@RequestParam
(
required
=
false
,
value
=
"domain"
)
Integer
domain
,
@RequestParam
(
required
=
false
,
value
=
"path"
)
String
path
,
@RequestParam
(
"pageNo"
)
Integer
pageNo
,
@RequestParam
(
"pageSize"
)
Integer
pageSize
)
{
String
userName
=
UserInfoUtils
.
getUserName
();
return
tagService
.
searchSystemTagByPage
(
userName
,
keyword
,
path
,
domain
,
new
Page
(
pageSize
,
pageNo
));
}
}
@ApiOperation
(
value
=
"搜索维度标签里面的个人标签"
,
notes
=
"搜索维度标签里面的个人标签"
)
@ApiOperation
(
value
=
"搜索维度标签里面的个人标签"
,
notes
=
"搜索维度标签里面的个人标签"
)
@GetMapping
(
value
=
"/searchPersonalDimensionTagByPage"
)
@GetMapping
(
value
=
"/searchPersonalDimensionTagByPage"
)
public
Page
searchPersonalDimensionTagByPage
(
public
Page
searchPersonalDimensionTagByPage
(
...
@@ -116,10 +91,10 @@ public class TagCtrl {
...
@@ -116,10 +91,10 @@ public class TagCtrl {
@RequestParam
(
required
=
false
,
value
=
"path"
)
String
path
,
@RequestParam
(
required
=
false
,
value
=
"path"
)
String
path
,
@RequestParam
(
"pageNo"
)
Integer
pageNo
,
@RequestParam
(
"pageNo"
)
Integer
pageNo
,
@RequestParam
(
"pageSize"
)
Integer
pageSize
)
{
@RequestParam
(
"pageSize"
)
Integer
pageSize
)
{
String
userName
=
UserInfoUtils
.
getUser
Name
();
String
userName
=
UserInfoUtils
.
getUser
Id
();
if
(
StringUtils
.
isBlank
(
deptIdPath
))
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
deptIdPath
=
UserInfoUtils
.
getUserCompanyIdPath
();
return
tagService
.
searchPersonalDimensionTagByPage
(
userName
,
deptIdPath
,
keyword
,
return
tagService
.
searchPersonalDimensionTagByPage
(
userName
,
deptIdPath
,
keyword
,
path
,
domain
,
new
Page
(
pageSize
,
pageNo
));
path
,
domain
,
new
Page
(
pageSize
,
pageNo
));
}
}
@ApiOperation
(
value
=
"搜索个人标签"
,
notes
=
"搜索个人标签"
)
@ApiOperation
(
value
=
"搜索个人标签"
,
notes
=
"搜索个人标签"
)
...
@@ -130,12 +105,51 @@ public class TagCtrl {
...
@@ -130,12 +105,51 @@ public class TagCtrl {
@RequestParam
(
required
=
false
,
value
=
"deptIdPath"
)
String
deptIdPath
,
@RequestParam
(
required
=
false
,
value
=
"deptIdPath"
)
String
deptIdPath
,
@RequestParam
(
"pageNo"
)
Integer
pageNo
,
@RequestParam
(
"pageNo"
)
Integer
pageNo
,
@RequestParam
(
"pageSize"
)
Integer
pageSize
)
{
@RequestParam
(
"pageSize"
)
Integer
pageSize
)
{
String
userName
=
UserInfoUtils
.
getUserName
();
String
userName
=
UserInfoUtils
.
getUserId
();
if
(
StringUtils
.
isBlank
(
deptIdPath
))
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
deptIdPath
=
UserInfoUtils
.
getUserCompanyIdPath
();
return
tagService
.
searchPersonalTagByPage
(
userName
,
deptIdPath
,
keyword
,
path
,
domain
,
new
Page
(
pageSize
,
pageNo
));
return
tagService
.
searchPersonalTagByPage
(
userName
,
deptIdPath
,
keyword
,
path
,
domain
,
new
Page
(
pageSize
,
pageNo
));
}
}
// @PreAuthorize("principal.authorities.?[authority.startsWith('ROLE_tagmanager_admin')].size() > 0")
@ApiOperation
(
value
=
"查询系统标签树"
,
notes
=
"查询系统标签树"
)
@GetMapping
(
value
=
"/querySystemTagAsTree"
)
public
JsonNode
[]
querySystemTagAsTree
(
@RequestParam
(
value
=
"parentId"
,
required
=
false
)
String
parentId
)
throws
TagNotExistException
{
return
tagService
.
querySystemTagAsTree
(
parentId
);
}
@ApiOperation
(
value
=
"搜索系統标签"
,
notes
=
"搜索系統标签"
)
@GetMapping
(
value
=
"/searchSystemTagByPage"
)
public
Page
searchSystemTagByPage
(
@RequestParam
(
required
=
false
,
value
=
"keyword"
)
String
keyword
,
@RequestParam
(
required
=
false
,
value
=
"domain"
)
Integer
domain
,
@RequestParam
(
required
=
false
,
value
=
"path"
)
String
path
,
@RequestParam
(
"pageNo"
)
Integer
pageNo
,
@RequestParam
(
"pageSize"
)
Integer
pageSize
)
{
String
userName
=
UserInfoUtils
.
getUserId
();
return
tagService
.
searchSystemTagByPage
(
userName
,
keyword
,
path
,
domain
,
new
Page
(
pageSize
,
pageNo
));
}
@ApiOperation
(
value
=
"查询个人标签树不包括分享的标签"
,
notes
=
"查询个人标签树不包括分享的标签"
)
@GetMapping
(
value
=
"/queryPersonalTagExcludeOpenTypeAsTree"
)
public
JsonNode
[]
queryPersonalTagExcludeOpenTypeAsTree
(
@RequestParam
(
value
=
"parentId"
,
required
=
false
)
String
parentId
,
@RequestParam
(
required
=
false
)
String
deptIdPath
)
throws
TagNotExistException
{
String
userName
=
UserInfoUtils
.
getUserId
();
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
return
tagService
.
queryPersonalTagExcludeOpenTypeAsTree
(
parentId
,
userName
,
deptIdPath
);
}
@ApiOperation
(
value
=
"分享标签"
,
notes
=
"分享标签"
)
@ApiOperation
(
value
=
"分享标签"
,
notes
=
"分享标签"
)
@PostMapping
(
value
=
"/shareTags"
)
@PostMapping
(
value
=
"/shareTags"
)
public
void
shareTags
(
@RequestBody
List
<
String
>
tagIds
)
throws
Exception
{
public
void
shareTags
(
@RequestBody
List
<
String
>
tagIds
)
throws
Exception
{
...
...
src/main/java/com/keymobile/tagmanager/api/TagFileCtrl.java
View file @
10ed975e
package
com
.
keymobile
.
tagmanager
.
api
;
package
com
.
keymobile
.
tagmanager
.
api
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
org.apache.commons.lang3.StringUtils
;
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
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
com.keymobile.tagmanager.model.Page
;
import
com.keymobile.tagmanager.model.Page
;
import
com.keymobile.tagmanager.service.TagFileService
;
import
com.keymobile.tagmanager.service.TagFileService
;
import
com.keymobile.tagmanager.util.UserInfoUtils
;
import
com.keymobile.tagmanager.util.UserInfoUtils
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
@Api
(
value
=
"文件"
,
tags
=
"文件"
)
@Api
(
value
=
"文件"
,
tags
=
"文件"
)
@RestController
@RestController
@RequestMapping
(
value
=
"/file"
)
@RequestMapping
(
value
=
"/file"
)
public
class
TagFileCtrl
{
public
class
TagFileCtrl
{
@Autowired
@Autowired
private
TagFileService
tagExportService
;
private
TagFileService
tagExportService
;
@GetMapping
(
"/exportTag"
)
@GetMapping
(
"/exportTag"
)
public
int
export
(
HttpServletResponse
response
,
@RequestParam
(
required
=
false
,
value
=
"deptIdPath"
)
String
deptIdPath
)
{
public
int
export
(
HttpServletResponse
response
,
@RequestParam
(
required
=
false
,
value
=
"deptIdPath"
)
String
deptIdPath
)
{
if
(
StringUtils
.
isBlank
(
deptIdPath
))
{
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
deptIdPath
=
UserInfoUtils
.
getUserCompanyIdPath
();
return
tagExportService
.
exportExcel
(
deptIdPath
,
response
);
}
}
return
tagExportService
.
exportExcel
(
deptIdPath
,
response
);
}
@PostMapping
(
"/importTag"
)
public
String
importExcel
(
MultipartFile
file
,
HttpServletResponse
response
,
@PostMapping
(
"/importTag"
)
@RequestParam
(
required
=
false
,
value
=
"deptIdPath"
)
String
deptIdPath
)
throws
Exception
{
public
String
importExcel
(
MultipartFile
file
,
HttpServletResponse
response
,
String
userName
=
UserInfoUtils
.
getUserName
();
@RequestParam
(
required
=
false
,
value
=
"deptIdPath"
)
String
deptIdPath
)
throws
Exception
{
String
userId
=
UserInfoUtils
.
getUserId
();
String
userName
=
UserInfoUtils
.
getUserName
();
deptIdPath
=
UserInfoUtils
.
getDataRoleOrg
();
if
(
StringUtils
.
isBlank
(
deptIdPath
))
{
return
tagExportService
.
importExcel
(
userName
,
userId
,
deptIdPath
,
file
);
deptIdPath
=
UserInfoUtils
.
getUserCompanyIdPath
();
}
}
return
tagExportService
.
importExcel
(
userName
,
deptIdPath
,
file
);
@ApiOperation
(
value
=
"分页获取导入日志"
,
notes
=
"分页获取导入日志"
)
}
@GetMapping
(
value
=
"/listImportTagLogByPage"
)
public
Page
searchPersonalDimensionTagByPage
(
@ApiOperation
(
value
=
"分页获取导入日志"
,
notes
=
"分页获取导入日志"
)
@RequestParam
(
required
=
false
,
value
=
"deptIdPath"
)
String
deptIdPath
,
@GetMapping
(
value
=
"/listImportTagLogByPage"
)
@RequestParam
(
"pageNo"
)
Integer
pageNo
,
public
Page
searchPersonalDimensionTagByPage
(
@RequestParam
(
"pageSize"
)
Integer
pageSize
)
{
@RequestParam
(
required
=
false
,
value
=
"deptIdPath"
)
String
deptIdPath
,
if
(
StringUtils
.
isBlank
(
deptIdPath
))
{
@RequestParam
(
"pageNo"
)
Integer
pageNo
,
deptIdPath
=
UserInfoUtils
.
getUserCompanyIdPath
();
@RequestParam
(
"pageSize"
)
Integer
pageSize
)
{
}
if
(
StringUtils
.
isBlank
(
deptIdPath
))
{
return
tagExportService
.
listImportlogByPage
(
deptIdPath
,
new
Page
(
pageSize
,
pageNo
));
deptIdPath
=
UserInfoUtils
.
getUserCompanyIdPath
();
}
}
return
tagExportService
.
listImportlogByPage
(
deptIdPath
,
new
Page
(
pageSize
,
pageNo
));
@ApiOperation
(
value
=
"撤销导入"
,
notes
=
"撤销导入"
)
}
@PostMapping
(
value
=
"/undoImportTag"
)
public
void
undoImportExcel
(
@RequestParam
(
"importlogId"
)
String
importlogId
)
{
@ApiOperation
(
value
=
"撤销导入"
,
notes
=
"撤销导入"
)
tagExportService
.
undoImportExcel
(
importlogId
);
@PostMapping
(
value
=
"/undoImportTag"
)
}
public
void
undoImportExcel
(
@RequestParam
(
"importlogId"
)
String
importlogId
)
{
tagExportService
.
undoImportExcel
(
importlogId
);
}
//----------------------以下为导入系统的时候
@PostMapping
(
"/importSystem"
)
//----------------------以下为导入系统的时候
public
String
importSystem
(
MultipartFile
file
,
HttpServletResponse
response
)
throws
Exception
{
String
userName
=
UserInfoUtils
.
getUserName
();
@PostMapping
(
"/importSystem"
)
return
tagExportService
.
importSystem
(
userName
,
file
);
public
String
importSystem
(
MultipartFile
file
,
HttpServletResponse
response
)
throws
Exception
{
}
String
userName
=
UserInfoUtils
.
getUserName
();
return
tagExportService
.
importSystem
(
userName
,
file
);
}
}
}
src/main/java/com/keymobile/tagmanager/model/Tag.java
View file @
10ed975e
package
com
.
keymobile
.
tagmanager
.
model
;
package
com
.
keymobile
.
tagmanager
.
model
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
javax.persistence.Id
;
import
javax.persistence.Id
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
com.keymobile.tagmanager.util.Constants
;
import
com.keymobile.tagmanager.util.Constants
;
import
cn.afterturn.easypoi.excel.annotation.Excel
;
import
cn.afterturn.easypoi.excel.annotation.Excel
;
import
cn.afterturn.easypoi.excel.annotation.ExcelTarget
;
import
cn.afterturn.easypoi.excel.annotation.ExcelTarget
;
import
cn.afterturn.easypoi.handler.inter.IExcelDataModel
;
import
cn.afterturn.easypoi.handler.inter.IExcelDataModel
;
import
cn.afterturn.easypoi.handler.inter.IExcelModel
;
import
cn.afterturn.easypoi.handler.inter.IExcelModel
;
@ExcelTarget
(
"20"
)
@ExcelTarget
(
"20"
)
@Document
(
collection
=
"Tag"
)
@Document
(
collection
=
"Tag"
)
public
class
Tag
implements
Serializable
,
IExcelModel
,
IExcelDataModel
{
public
class
Tag
implements
Serializable
,
IExcelModel
,
IExcelDataModel
{
/**
/**
*
*
*/
*/
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@Id
@Id
private
String
id
;
private
String
id
;
@Excel
(
name
=
"名称"
,
orderNum
=
"0"
,
width
=
30
)
@Excel
(
name
=
"名称"
,
orderNum
=
"0"
,
width
=
30
)
@NotNull
@NotNull
private
String
name
;
private
String
name
;
@Excel
(
name
=
"英文名"
,
orderNum
=
"1"
,
width
=
30
)
@Excel
(
name
=
"英文名"
,
orderNum
=
"1"
,
width
=
30
)
private
String
nameEn
;
private
String
nameEn
;
@Excel
(
name
=
"路径"
,
orderNum
=
"2"
,
width
=
30
)
@Excel
(
name
=
"路径"
,
orderNum
=
"2"
,
width
=
30
)
@NotNull
@NotNull
private
String
path
;
private
String
path
;
@Excel
(
name
=
"描述"
,
orderNum
=
"3"
,
width
=
30
)
@Excel
(
name
=
"描述"
,
orderNum
=
"3"
,
width
=
30
)
private
String
desc
;
private
String
desc
;
private
String
imgId
;
private
String
imgId
;
@Excel
(
name
=
"排序权重"
,
orderNum
=
"4"
,
width
=
30
)
@Excel
(
name
=
"排序权重"
,
orderNum
=
"4"
,
width
=
30
)
private
Integer
order
;
private
Integer
order
;
private
Integer
level
;
private
Integer
level
;
@Excel
(
name
=
"标签类型"
,
replace
=
{
"系统标签_0"
,
"自定义标签_1"
},
orderNum
=
"5"
,
width
=
30
)
@Excel
(
name
=
"标签类型"
,
replace
=
{
"系统标签_0"
,
"自定义标签_1"
},
orderNum
=
"5"
,
width
=
30
)
private
String
tagType
;
//0, 系统标签, 1 ,自定义标签
private
String
tagType
;
//0, 系统标签, 1 ,自定义标签
private
String
idPath
;
private
String
idPath
;
private
String
creator
;
private
String
creator
;
private
String
createDate
;
private
String
createDate
;
private
String
isOpen
=
Constants
.
TAG_CLOSE_STATUS
;
//0 不公开, 1, 公开
private
String
isOpen
=
Constants
.
TAG_CLOSE_STATUS
;
//0 不公开, 1, 公开
private
Integer
domain
;
private
Integer
domain
;
private
String
dimensionType
=
Constants
.
TAG_DIMENSION_FALSE
;
//0 非维度标签, 1 维度标签
private
String
dimensionType
=
Constants
.
TAG_DIMENSION_FALSE
;
//0 非维度标签, 1 维度标签
private
String
dept
;
// 部门
private
String
dept
;
// 部门
private
String
importId
;
//记录导入的Id,后面撤销用到
private
String
importId
;
//记录导入的Id,后面撤销用到
public
Tag
()
{}
//author:zhangkb time:2020-1-6 desc:添加标签创建对应的用户id,普通用户创建自定义标签有用到
private
String
tagUser
;
public
Tag
(
String
name
,
String
desc
)
{
this
.
name
=
name
;
public
Tag
()
{}
this
.
desc
=
desc
;
this
.
path
=
name
;
public
Tag
(
String
name
,
String
desc
)
{
}
this
.
name
=
name
;
this
.
desc
=
desc
;
public
Tag
(
String
parentPath
,
String
name
,
String
desc
,
String
imgId
)
{
this
.
path
=
name
;
this
.
name
=
name
;
}
this
.
desc
=
desc
;
if
(
StringUtils
.
isEmpty
(
parentPath
))
{
public
Tag
(
String
parentPath
,
String
name
,
String
desc
,
String
imgId
)
{
this
.
path
=
name
;
this
.
name
=
name
;
}
else
{
this
.
desc
=
desc
;
this
.
path
=
parentPath
+
Constants
.
TAG_PATH_SEPARATOR
+
name
;
if
(
StringUtils
.
isEmpty
(
parentPath
))
{
}
this
.
path
=
name
;
this
.
imgId
=
imgId
;
}
else
{
}
this
.
path
=
parentPath
+
Constants
.
TAG_PATH_SEPARATOR
+
name
;
}
public
void
setCreateDate
(
String
createDate
)
{
this
.
imgId
=
imgId
;
this
.
createDate
=
createDate
;
}
}
public
void
setCreateDate
(
String
createDate
)
{
public
String
getCreateDate
()
{
this
.
createDate
=
createDate
;
return
createDate
;
}
}
public
String
getCreateDate
()
{
public
Tag
(
String
parentPath
,
String
name
,
String
id
)
{
return
createDate
;
this
(
parentPath
,
name
,
""
,
""
);
}
this
.
id
=
id
;
}
public
Tag
(
String
parentPath
,
String
name
,
String
id
)
{
this
(
parentPath
,
name
,
""
,
""
);
public
String
getId
()
{
this
.
id
=
id
;
return
id
;
}
}
public
String
getId
()
{
public
void
setImportId
(
String
importId
)
{
return
id
;
this
.
importId
=
importId
;
}
}
public
void
setImportId
(
String
importId
)
{
public
String
getImportId
()
{
this
.
importId
=
importId
;
return
importId
;
}
}
public
String
getImportId
()
{
public
void
setId
(
String
id
)
{
return
importId
;
this
.
id
=
id
;
}
}
public
void
setId
(
String
id
)
{
public
String
getName
()
{
this
.
id
=
id
;
return
name
;
}
}
public
String
getName
()
{
public
void
setName
(
String
name
)
{
return
name
;
this
.
name
=
name
;
}
}
public
void
setName
(
String
name
)
{
public
String
getNameEn
()
{
this
.
name
=
name
;
return
nameEn
;
}
}
public
String
getNameEn
()
{
public
void
setNameEn
(
String
nameEn
)
{
return
nameEn
;
this
.
nameEn
=
nameEn
;
}
}
public
void
setNameEn
(
String
nameEn
)
{
public
String
getPath
()
{
this
.
nameEn
=
nameEn
;
return
path
;
}
}
public
String
getPath
()
{
public
void
setPath
(
String
path
)
{
return
path
;
this
.
path
=
path
;
}
}
public
void
setPath
(
String
path
)
{
public
String
getDesc
()
{
this
.
path
=
path
;
return
desc
;
}
}
public
String
getDesc
()
{
public
void
setDesc
(
String
desc
)
{
return
desc
;
this
.
desc
=
desc
;
}
}
public
void
setDesc
(
String
desc
)
{
public
String
getImgId
()
{
this
.
desc
=
desc
;
return
imgId
;
}
}
public
String
getImgId
()
{
public
void
setImgId
(
String
imgId
)
{
return
imgId
;
this
.
imgId
=
imgId
;
}
}
public
void
setImgId
(
String
imgId
)
{
public
Integer
getOrder
()
{
this
.
imgId
=
imgId
;
return
order
;
}
}
public
Integer
getOrder
()
{
public
void
setOrder
(
Integer
order
)
{
return
order
;
this
.
order
=
order
;
}
}
public
void
setOrder
(
Integer
order
)
{
public
Integer
getLevel
()
{
this
.
order
=
order
;
return
level
;
}
}
public
Integer
getLevel
()
{
public
void
setLevel
(
Integer
level
)
{
return
level
;
this
.
level
=
level
;
}
}
public
void
setLevel
(
Integer
level
)
{
public
String
getTagType
()
{
this
.
level
=
level
;
return
tagType
;
}
}
public
String
getTagType
()
{
public
void
setTagType
(
String
tagType
)
{
return
tagType
;
this
.
tagType
=
tagType
;
}
}
public
void
setTagType
(
String
tagType
)
{
public
String
getCreator
()
{
this
.
tagType
=
tagType
;
return
creator
;
}
}
public
String
getCreator
()
{
public
void
setCreator
(
String
creator
)
{
return
creator
;
this
.
creator
=
creator
;
}
}
public
void
setCreator
(
String
creator
)
{
public
String
getIsOpen
()
{
this
.
creator
=
creator
;
return
isOpen
;
}
}
public
String
getIsOpen
()
{
public
void
setIsOpen
(
String
isOpen
)
{
return
isOpen
;
this
.
isOpen
=
isOpen
;
}
}
public
void
setIsOpen
(
String
isOpen
)
{
public
Integer
getDomain
()
{
this
.
isOpen
=
isOpen
;
return
domain
;
}
}
public
Integer
getDomain
()
{
public
void
setDomain
(
Integer
domain
)
{
return
domain
;
this
.
domain
=
domain
;
}
}
public
void
setDomain
(
Integer
domain
)
{
public
void
setDimensionType
(
String
dimensionType
)
{
this
.
domain
=
domain
;
this
.
dimensionType
=
dimensionType
;
}
}
public
void
setDimensionType
(
String
dimensionType
)
{
public
String
getDimensionType
()
{
this
.
dimensionType
=
dimensionType
;
return
dimensionType
;
}
}
public
String
getDimensionType
()
{
public
void
setIdPath
(
String
idPath
)
{
return
dimensionType
;
this
.
idPath
=
idPath
;
}
}
public
void
setIdPath
(
String
idPath
)
{
public
String
getIdPath
()
{
this
.
idPath
=
idPath
;
return
idPath
;
}
}
public
String
getIdPath
()
{
public
void
setDept
(
String
dept
)
{
return
idPath
;
this
.
dept
=
dept
;
}
}
public
void
setDept
(
String
dept
)
{
public
String
getDept
()
{
this
.
dept
=
dept
;
return
dept
;
}
}
public
String
getDept
()
{
@Override
return
dept
;
public
String
toString
()
{
}
return
"Tag [id="
+
id
+
", name="
+
name
+
", nameEn="
+
nameEn
+
", path="
+
path
+
", desc="
+
desc
+
", imgId="
+
imgId
+
", order="
+
order
+
", level="
+
level
+
", tagType="
+
tagType
+
", creator="
@Override
+
creator
+
", createDate="
+
createDate
+
", isOpen="
+
isOpen
+
", domain="
+
domain
public
String
toString
()
{
+
", dimensionType="
+
dimensionType
+
"]"
;
return
"Tag [id="
+
id
+
", name="
+
name
+
", nameEn="
+
nameEn
+
", path="
+
path
+
", desc="
+
desc
}
+
", imgId="
+
imgId
+
", order="
+
order
+
", level="
+
level
+
", tagType="
+
tagType
+
", creator="
+
creator
+
", createDate="
+
createDate
+
", isOpen="
+
isOpen
+
", domain="
+
domain
@org
.
springframework
.
data
.
annotation
.
Transient
+
", dimensionType="
+
dimensionType
+
"]"
;
private
String
errMsg
;
}
@org
.
springframework
.
data
.
annotation
.
Transient
@org
.
springframework
.
data
.
annotation
.
Transient
private
int
excelRowNum
;
private
String
errMsg
;
@Override
@org
.
springframework
.
data
.
annotation
.
Transient
public
String
getErrorMsg
()
{
private
int
excelRowNum
;
return
errMsg
;
}
@Override
public
String
getErrorMsg
()
{
@Override
return
errMsg
;
public
void
setErrorMsg
(
String
errorMsg
)
{
}
this
.
errMsg
=
errorMsg
;
}
@Override
public
void
setErrorMsg
(
String
errorMsg
)
{
@Override
this
.
errMsg
=
errorMsg
;
public
Integer
getRowNum
()
{
}
return
excelRowNum
;
}
@Override
public
Integer
getRowNum
()
{
@Override
return
excelRowNum
;
public
void
setRowNum
(
Integer
rowNum
)
{
}
this
.
excelRowNum
=
rowNum
;
}
@Override
public
void
setRowNum
(
Integer
rowNum
)
{
}
this
.
excelRowNum
=
rowNum
;
}
public
String
getTagUser
()
{
return
tagUser
;
}
public
void
setTagUser
(
String
tagUser
)
{
this
.
tagUser
=
tagUser
;
}
}
src/main/java/com/keymobile/tagmanager/model/authService/Org.java
0 → 100644
View file @
10ed975e
package
com
.
keymobile
.
tagmanager
.
model
.
authService
;
/**
* author:zhangkb time:2020-1-6 desc:定义用于接收结构信息实体
*/
public
class
Org
{
private
Long
id
;
private
String
fullName
;
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
Long
getId
()
{
return
id
;
}
public
String
getFullName
()
{
return
fullName
;
}
public
void
setFullName
(
String
fullName
)
{
this
.
fullName
=
fullName
;
}
}
src/main/java/com/keymobile/tagmanager/remote/AuthServiceClient.java
0 → 100644
View file @
10ed975e
package
com
.
keymobile
.
tagmanager
.
remote
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
com.keymobile.tagmanager.model.authService.Org
;
@FeignClient
(
name
=
"authService"
)
public
interface
AuthServiceClient
{
@GetMapping
(
value
=
"/orgs/{orgId}"
)
public
Org
getOrgs
(
@PathVariable
(
"orgId"
)
String
orgId
);
@GetMapping
(
value
=
"/orgs/findByFullName"
)
public
Org
findByFullName
(
@RequestParam
(
"orgFullName"
)
String
orgFullName
);
}
src/main/java/com/keymobile/tagmanager/service/TagFileService.java
View file @
10ed975e
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.Date
;
import
java.util.Date
;
import
java.util.LinkedList
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.UUID
;
import
java.util.UUID
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.domain.Sort.Direction
;
import
org.springframework.data.domain.Sort.Direction
;
import
org.springframework.data.domain.Sort.Order
;
import
org.springframework.data.domain.Sort.Order
;
import
org.springframework.data.mongodb.core.MongoOperations
;
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.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
com.keymobile.tagmanager.model.ImportLog
;
import
com.keymobile.tagmanager.model.ImportLog
;
import
com.keymobile.tagmanager.model.Page
;
import
com.keymobile.tagmanager.model.Page
;
import
com.keymobile.tagmanager.model.SysTag
;
import
com.keymobile.tagmanager.model.SysTag
;
import
com.keymobile.tagmanager.model.Tag
;
import
com.keymobile.tagmanager.model.Tag
;
import
com.keymobile.tagmanager.persistence.TagRepository
;
import
com.keymobile.tagmanager.persistence.TagRepository
;
import
com.keymobile.tagmanager.util.Constants
;
import
com.keymobile.tagmanager.util.Constants
;
import
com.keymobile.tagmanager.util.DateUtils
;
import
com.keymobile.tagmanager.util.DateUtils
;
import
com.keymobile.tagmanager.util.ExcelUtils
;
import
com.keymobile.tagmanager.util.ExcelUtils
;
import
cn.afterturn.easypoi.excel.ExcelImportUtil
;
import
cn.afterturn.easypoi.excel.ExcelImportUtil
;
import
cn.afterturn.easypoi.excel.entity.ImportParams
;
import
cn.afterturn.easypoi.excel.entity.ImportParams
;
import
cn.afterturn.easypoi.excel.entity.result.ExcelImportResult
;
import
cn.afterturn.easypoi.excel.entity.result.ExcelImportResult
;
import
cn.afterturn.easypoi.excel.entity.result.ExcelVerifyHandlerResult
;
import
cn.afterturn.easypoi.excel.entity.result.ExcelVerifyHandlerResult
;
import
cn.afterturn.easypoi.handler.inter.IExcelVerifyHandler
;
import
cn.afterturn.easypoi.handler.inter.IExcelVerifyHandler
;
@Service
@Service
public
class
TagFileService
{
public
class
TagFileService
{
@Autowired
@Autowired
private
MongoOperations
mongoOperations
;
private
MongoOperations
mongoOperations
;
@Autowired
@Autowired
private
TagRepository
tagRepository
;
private
TagRepository
tagRepository
;
public
int
exportExcel
(
String
dept
,
HttpServletResponse
response
)
{
public
int
exportExcel
(
String
dept
,
HttpServletResponse
response
)
{
List
<
Tag
>
toExportTags
=
mongoOperations
.
find
(
Query
.
query
(
Criteria
.
where
(
"dept"
).
is
(
dept
)
List
<
Tag
>
toExportTags
=
mongoOperations
.
find
(
Query
.
query
(
Criteria
.
where
(
"dept"
).
is
(
dept
)
.
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
)),
Tag
.
class
);
.
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
)),
Tag
.
class
);
// 导出操作
// 导出操作
ExcelUtils
.
exportExcel
(
toExportTags
,
null
,
"sheet1"
,
Tag
.
class
,
"标签.xlsx"
,
response
);
ExcelUtils
.
exportExcel
(
toExportTags
,
null
,
"sheet1"
,
Tag
.
class
,
"标签.xlsx"
,
response
);
return
toExportTags
.
size
();
return
toExportTags
.
size
();
}
}
public
String
importExcel
(
String
userName
,
String
dept
,
MultipartFile
file
)
throws
Exception
{
public
String
importExcel
(
String
userName
,
String
userId
,
String
dept
,
MultipartFile
file
)
throws
Exception
{
ImportLog
importLog
=
new
ImportLog
(
UUID
.
randomUUID
().
toString
());
ImportLog
importLog
=
new
ImportLog
(
UUID
.
randomUUID
().
toString
());
importLog
.
setCreator
(
userName
);
importLog
.
setCreator
(
userName
);
importLog
.
setDept
(
dept
);
importLog
.
setDept
(
dept
);
mongoOperations
.
save
(
importLog
);
mongoOperations
.
save
(
importLog
);
new
Thread
(
new
ExcelImportExecutor
(
userName
,
dept
,
file
,
importLog
)).
start
();
new
Thread
(
new
ExcelImportExecutor
(
userName
,
userId
,
dept
,
file
,
importLog
)).
start
();
return
"ok"
;
return
"ok"
;
}
}
public
String
importSystem
(
String
userName
,
MultipartFile
file
)
throws
Exception
{
public
String
importSystem
(
String
userName
,
MultipartFile
file
)
throws
Exception
{
ImportLog
importLog
=
new
ImportLog
(
UUID
.
randomUUID
().
toString
());
ImportLog
importLog
=
new
ImportLog
(
UUID
.
randomUUID
().
toString
());
importLog
.
setType
(
Constants
.
SYS_TAG_LOG_TYPE
);
importLog
.
setType
(
Constants
.
SYS_TAG_LOG_TYPE
);
importLog
.
setCreator
(
userName
);
importLog
.
setCreator
(
userName
);
mongoOperations
.
save
(
importLog
);
mongoOperations
.
save
(
importLog
);
new
Thread
(
new
SysExcelImportExecutor
(
userName
,
file
,
importLog
)).
start
();
new
Thread
(
new
SysExcelImportExecutor
(
userName
,
file
,
importLog
)).
start
();
return
"ok"
;
return
"ok"
;
}
}
class
SysExcelVerifyHandler
implements
IExcelVerifyHandler
<
SysTag
>
{
class
SysExcelVerifyHandler
implements
IExcelVerifyHandler
<
SysTag
>
{
private
Map
<
String
,
SysTag
>
codeSysTags
;
private
Map
<
String
,
SysTag
>
codeSysTags
;
private
Map
<
String
,
SysTag
>
nameSysTags
;
private
Map
<
String
,
SysTag
>
nameSysTags
;
public
SysExcelVerifyHandler
(
Map
<
String
,
SysTag
>
codeSysTags
,
Map
<
String
,
SysTag
>
nameSysTags
)
{
public
SysExcelVerifyHandler
(
Map
<
String
,
SysTag
>
codeSysTags
,
Map
<
String
,
SysTag
>
nameSysTags
)
{
this
.
codeSysTags
=
codeSysTags
;
this
.
codeSysTags
=
codeSysTags
;
this
.
nameSysTags
=
nameSysTags
;
this
.
nameSysTags
=
nameSysTags
;
}
}
@Override
@Override
public
ExcelVerifyHandlerResult
verifyHandler
(
SysTag
t
)
{
public
ExcelVerifyHandlerResult
verifyHandler
(
SysTag
t
)
{
ExcelVerifyHandlerResult
result
=
new
ExcelVerifyHandlerResult
(
true
);
ExcelVerifyHandlerResult
result
=
new
ExcelVerifyHandlerResult
(
true
);
if
(
codeSysTags
.
get
(
t
.
getSystemCode
())
!=
null
)
{
if
(
codeSysTags
.
get
(
t
.
getSystemCode
())
!=
null
)
{
result
.
setSuccess
(
false
);
result
.
setSuccess
(
false
);
result
.
setMsg
(
String
.
format
(
"系统代码[%s]已经存在"
,
t
.
getSystemCode
()));
result
.
setMsg
(
String
.
format
(
"系统代码[%s]已经存在"
,
t
.
getSystemCode
()));
}
}
if
(
nameSysTags
.
get
(
t
.
getName
())
!=
null
)
{
if
(
nameSysTags
.
get
(
t
.
getName
())
!=
null
)
{
result
.
setSuccess
(
false
);
result
.
setSuccess
(
false
);
result
.
setMsg
(
String
.
format
(
"名称[%s]已经存在"
,
t
.
getName
()));
result
.
setMsg
(
String
.
format
(
"名称[%s]已经存在"
,
t
.
getName
()));
}
}
return
result
;
return
result
;
}
}
}
}
class
SysExcelImportExecutor
implements
Runnable
{
class
SysExcelImportExecutor
implements
Runnable
{
private
MultipartFile
file
;
private
MultipartFile
file
;
private
ImportLog
importLog
;
private
ImportLog
importLog
;
public
SysExcelImportExecutor
(
String
userName
,
MultipartFile
file
,
ImportLog
importLog
)
{
public
SysExcelImportExecutor
(
String
userName
,
MultipartFile
file
,
ImportLog
importLog
)
{
this
.
file
=
file
;
this
.
file
=
file
;
this
.
importLog
=
importLog
;
this
.
importLog
=
importLog
;
}
}
@Override
@Override
public
void
run
()
{
public
void
run
()
{
List
<
SysTag
>
tags
=
mongoOperations
.
findAll
(
SysTag
.
class
);
List
<
SysTag
>
tags
=
mongoOperations
.
findAll
(
SysTag
.
class
);
Map
<
String
,
SysTag
>
codeSysTags
=
tags
.
stream
().
collect
(
Collectors
.
toMap
(
SysTag:
:
getSystemCode
,
tag
->
tag
));
Map
<
String
,
SysTag
>
codeSysTags
=
tags
.
stream
().
collect
(
Collectors
.
toMap
(
SysTag:
:
getSystemCode
,
tag
->
tag
));
Map
<
String
,
SysTag
>
nameSysTags
=
tags
.
stream
().
collect
(
Collectors
.
toMap
(
SysTag:
:
getName
,
tag
->
tag
));
Map
<
String
,
SysTag
>
nameSysTags
=
tags
.
stream
().
collect
(
Collectors
.
toMap
(
SysTag:
:
getName
,
tag
->
tag
));
try
{
try
{
ImportParams
params
=
new
ImportParams
();
ImportParams
params
=
new
ImportParams
();
params
.
setTitleRows
(
0
);
params
.
setTitleRows
(
0
);
params
.
setHeadRows
(
1
);
params
.
setHeadRows
(
1
);
params
.
setNeedVerify
(
true
);
params
.
setNeedVerify
(
true
);
params
.
setVerifyHandler
(
new
SysExcelVerifyHandler
(
codeSysTags
,
nameSysTags
));
params
.
setVerifyHandler
(
new
SysExcelVerifyHandler
(
codeSysTags
,
nameSysTags
));
ExcelImportResult
<
SysTag
>
excelImportResult
=
ExcelImportUtil
.
importExcelMore
(
file
.
getInputStream
(),
SysTag
.
class
,
params
);
ExcelImportResult
<
SysTag
>
excelImportResult
=
ExcelImportUtil
.
importExcelMore
(
file
.
getInputStream
(),
SysTag
.
class
,
params
);
List
<
String
>
successIds
=
new
ArrayList
<>();
List
<
String
>
successIds
=
new
ArrayList
<>();
List
<
SysTag
>
sysTags
=
excelImportResult
.
getList
();
List
<
SysTag
>
sysTags
=
excelImportResult
.
getList
();
boolean
hasOtherFail
=
false
;
boolean
hasOtherFail
=
false
;
for
(
SysTag
t
:
sysTags
)
{
for
(
SysTag
t
:
sysTags
)
{
t
.
setId
(
UUID
.
randomUUID
().
toString
());
t
.
setId
(
UUID
.
randomUUID
().
toString
());
mongoOperations
.
save
(
t
);
mongoOperations
.
save
(
t
);
successIds
.
add
(
t
.
getId
());
successIds
.
add
(
t
.
getId
());
}
}
excelImportResult
.
getFailList
().
forEach
(
tag
->
{
excelImportResult
.
getFailList
().
forEach
(
tag
->
{
importLog
.
appendErrorMsg
(
String
.
format
(
"第%s行, %s"
,
tag
.
getRowNum
()
+
params
.
getTitleRows
()
+
params
.
getReadRows
(),
tag
.
getErrorMsg
()));
importLog
.
appendErrorMsg
(
String
.
format
(
"第%s行, %s"
,
tag
.
getRowNum
()
+
params
.
getTitleRows
()
+
params
.
getReadRows
(),
tag
.
getErrorMsg
()));
});
});
importLog
.
setHasFailNum
(!
excelImportResult
.
getFailList
().
isEmpty
()
||
hasOtherFail
);
importLog
.
setHasFailNum
(!
excelImportResult
.
getFailList
().
isEmpty
()
||
hasOtherFail
);
importLog
.
setTotalNum
(
excelImportResult
.
getList
().
size
()
+
excelImportResult
.
getFailList
().
size
());
importLog
.
setTotalNum
(
excelImportResult
.
getList
().
size
()
+
excelImportResult
.
getFailList
().
size
());
importLog
.
setSuccessIds
(
successIds
);
importLog
.
setSuccessIds
(
successIds
);
importLog
.
setReport
(
importLog
.
generateReport
());
importLog
.
setReport
(
importLog
.
generateReport
());
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
importLog
.
appendErrorMsg
(
e
.
getCause
().
getMessage
());
importLog
.
appendErrorMsg
(
e
.
getCause
().
getMessage
());
}
finally
{
}
finally
{
importLog
.
setEndTime
(
DateUtils
.
formatDate
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
));
importLog
.
setEndTime
(
DateUtils
.
formatDate
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
));
importLog
.
setHasFinish
(
true
);
importLog
.
setHasFinish
(
true
);
mongoOperations
.
save
(
importLog
);
mongoOperations
.
save
(
importLog
);
}
}
}
}
}
}
class
ExcelImportExecutor
implements
Runnable
{
class
ExcelImportExecutor
implements
Runnable
{
private
String
dept
;
private
String
dept
;
private
MultipartFile
file
;
private
MultipartFile
file
;
private
ImportLog
importLog
;
private
ImportLog
importLog
;
private
String
userName
;
private
String
userName
;
public
ExcelImportExecutor
(
String
userName
,
String
dept
,
MultipartFile
file
,
ImportLog
importLog
)
{
private
String
userId
;
this
.
userName
=
userName
;
public
ExcelImportExecutor
(
String
userName
,
String
userId
,
String
dept
,
this
.
dept
=
dept
;
MultipartFile
file
,
ImportLog
importLog
)
{
this
.
file
=
file
;
this
.
userName
=
userName
;
this
.
importLog
=
importLog
;
this
.
userId
=
userId
;
}
this
.
dept
=
dept
;
@Override
this
.
file
=
file
;
public
void
run
()
{
this
.
importLog
=
importLog
;
List
<
Tag
>
dimensionTags
=
mongoOperations
.
find
(
Query
.
query
(
}
Criteria
.
where
(
"dept"
).
is
(
dept
).
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
)),
@Override
Tag
.
class
);
public
void
run
()
{
Map
<
String
,
Tag
>
pathTags
=
dimensionTags
.
stream
().
collect
(
Collectors
.
toMap
(
Tag:
:
getPath
,
tag
->
tag
));
List
<
Tag
>
dimensionTags
=
mongoOperations
.
find
(
Query
.
query
(
try
{
Criteria
.
where
(
"dept"
).
is
(
dept
).
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
)),
ImportParams
params
=
new
ImportParams
();
Tag
.
class
);
params
.
setTitleRows
(
0
);
Map
<
String
,
Tag
>
pathTags
=
dimensionTags
.
stream
().
collect
(
Collectors
.
toMap
(
Tag:
:
getPath
,
tag
->
tag
));
params
.
setHeadRows
(
1
);
try
{
params
.
setNeedVerify
(
true
);
ImportParams
params
=
new
ImportParams
();
params
.
setVerifyHandler
(
new
ExcelVerifyHandler
(
pathTags
));
params
.
setTitleRows
(
0
);
ExcelImportResult
<
Tag
>
excelImportResult
=
ExcelImportUtil
.
importExcelMore
(
file
.
getInputStream
(),
Tag
.
class
,
params
);
params
.
setHeadRows
(
1
);
List
<
String
>
successIds
=
new
ArrayList
<>();
params
.
setNeedVerify
(
true
);
List
<
Tag
>
tags
=
excelImportResult
.
getList
();
params
.
setVerifyHandler
(
new
ExcelVerifyHandler
(
pathTags
));
tags
.
forEach
(
tag
->
{
ExcelImportResult
<
Tag
>
excelImportResult
=
ExcelImportUtil
.
importExcelMore
(
file
.
getInputStream
(),
Tag
.
class
,
params
);
tag
.
setId
(
UUID
.
randomUUID
().
toString
());
List
<
String
>
successIds
=
new
ArrayList
<>();
pathTags
.
put
(
tag
.
getPath
(),
tag
);
List
<
Tag
>
tags
=
excelImportResult
.
getList
();
});
tags
.
forEach
(
tag
->
{
tag
.
setId
(
UUID
.
randomUUID
().
toString
());
boolean
hasOtherFail
=
false
;
pathTags
.
put
(
tag
.
getPath
(),
tag
);
for
(
Tag
t
:
tags
)
{
});
String
parentIdPath
=
""
;
if
(
t
.
getPath
().
split
(
Constants
.
TAG_PATH_SEPARATOR
).
length
>
1
)
{
boolean
hasOtherFail
=
false
;
String
parentPath
=
t
.
getPath
().
substring
(
0
,
t
.
getPath
().
lastIndexOf
(
Constants
.
TAG_PATH_SEPARATOR
));
for
(
Tag
t
:
tags
)
{
if
(
pathTags
.
get
(
parentPath
)
==
null
)
{
String
parentIdPath
=
""
;
importLog
.
appendErrorMsg
(
String
.
format
(
"第%s行, 路径为[%s]的标签找不到父节点"
,
t
.
getRowNum
(),
t
.
getPath
()));
if
(
t
.
getPath
().
split
(
Constants
.
TAG_PATH_SEPARATOR
).
length
>
1
)
{
hasOtherFail
=
true
;
String
parentPath
=
t
.
getPath
().
substring
(
0
,
t
.
getPath
().
lastIndexOf
(
Constants
.
TAG_PATH_SEPARATOR
));
continue
;
if
(
pathTags
.
get
(
parentPath
)
==
null
)
{
}
else
{
importLog
.
appendErrorMsg
(
String
.
format
(
"第%s行, 路径为[%s]的标签找不到父节点"
,
t
.
getRowNum
(),
t
.
getPath
()));
//主题域,HSE,物资
hasOtherFail
=
true
;
String
[]
ts
=
parentPath
.
split
(
Constants
.
TAG_PATH_SEPARATOR
);
continue
;
List
<
String
>
parentIdList
=
new
LinkedList
<>();
}
else
{
List
<
String
>
path
=
new
LinkedList
<>();
//主题域,HSE,物资
for
(
int
a
=
0
;
a
<
ts
.
length
;
a
++)
{
String
[]
ts
=
parentPath
.
split
(
Constants
.
TAG_PATH_SEPARATOR
);
path
.
add
(
ts
[
a
]);
List
<
String
>
parentIdList
=
new
LinkedList
<>();
parentIdList
.
add
(
pathTags
.
get
(
String
.
join
(
Constants
.
TAG_PATH_SEPARATOR
,
path
)).
getId
());
List
<
String
>
path
=
new
LinkedList
<>();
}
for
(
int
a
=
0
;
a
<
ts
.
length
;
a
++)
{
parentIdPath
=
String
.
join
(
Constants
.
TAG_PATH_SEPARATOR
,
parentIdList
);
path
.
add
(
ts
[
a
]);
}
parentIdList
.
add
(
pathTags
.
get
(
String
.
join
(
Constants
.
TAG_PATH_SEPARATOR
,
path
)).
getId
());
}
}
t
.
setIdPath
(
parentIdPath
+
Constants
.
TAG_PATH_SEPARATOR
+
t
.
getId
());
parentIdPath
=
String
.
join
(
Constants
.
TAG_PATH_SEPARATOR
,
parentIdList
);
t
.
setLevel
(
t
.
getPath
().
split
(
","
).
length
);
}
t
.
setCreator
(
userName
);
}
t
.
setDept
(
dept
);
t
.
setIdPath
(
parentIdPath
+
Constants
.
TAG_PATH_SEPARATOR
+
t
.
getId
());
t
.
setDimensionType
(
Constants
.
TAG_DIMENSION_TRUE
);
t
.
setLevel
(
t
.
getPath
().
split
(
","
).
length
);
t
.
setCreateDate
(
DateUtils
.
formatDate
(
new
Date
(),
"yyyy-MM-dd"
));
t
.
setCreator
(
userName
);
t
.
setImportId
(
importLog
.
getId
());
t
.
setTagUser
(
userId
);
t
=
tagRepository
.
save
(
t
);
t
.
setDept
(
dept
);
successIds
.
add
(
t
.
getId
());
t
.
setDimensionType
(
Constants
.
TAG_DIMENSION_TRUE
);
}
t
.
setCreateDate
(
DateUtils
.
formatDate
(
new
Date
(),
"yyyy-MM-dd"
));
excelImportResult
.
getFailList
().
forEach
(
tag
->
{
t
.
setImportId
(
importLog
.
getId
());
importLog
.
appendErrorMsg
(
String
.
format
(
"第%s行, %s"
,
tag
.
getRowNum
()
+
params
.
getTitleRows
()
+
params
.
getReadRows
(),
tag
.
getErrorMsg
()));
t
=
tagRepository
.
save
(
t
);
});
successIds
.
add
(
t
.
getId
());
importLog
.
setHasFailNum
(!
excelImportResult
.
getFailList
().
isEmpty
()
||
hasOtherFail
);
}
importLog
.
setTotalNum
(
excelImportResult
.
getList
().
size
()
+
excelImportResult
.
getFailList
().
size
());
excelImportResult
.
getFailList
().
forEach
(
tag
->
{
importLog
.
setSuccessIds
(
successIds
);
importLog
.
appendErrorMsg
(
String
.
format
(
"第%s行, %s"
,
tag
.
getRowNum
()
+
params
.
getTitleRows
()
+
params
.
getReadRows
(),
tag
.
getErrorMsg
()));
importLog
.
setReport
(
importLog
.
generateReport
());
});
}
catch
(
Exception
e
)
{
importLog
.
setHasFailNum
(!
excelImportResult
.
getFailList
().
isEmpty
()
||
hasOtherFail
);
importLog
.
appendErrorMsg
(
e
.
getCause
().
getMessage
());
importLog
.
setTotalNum
(
excelImportResult
.
getList
().
size
()
+
excelImportResult
.
getFailList
().
size
());
}
finally
{
importLog
.
setSuccessIds
(
successIds
);
importLog
.
setEndTime
(
DateUtils
.
formatDate
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
));
importLog
.
setReport
(
importLog
.
generateReport
());
importLog
.
setHasFinish
(
true
);
}
catch
(
Exception
e
)
{
mongoOperations
.
save
(
importLog
);
importLog
.
appendErrorMsg
(
e
.
getCause
().
getMessage
());
}
}
finally
{
importLog
.
setEndTime
(
DateUtils
.
formatDate
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
));
}
importLog
.
setHasFinish
(
true
);
}
mongoOperations
.
save
(
importLog
);
}
class
ExcelVerifyHandler
implements
IExcelVerifyHandler
<
Tag
>
{
}
private
Map
<
String
,
Tag
>
tags
;
}
public
ExcelVerifyHandler
(
Map
<
String
,
Tag
>
tags
)
{
this
.
tags
=
tags
;
class
ExcelVerifyHandler
implements
IExcelVerifyHandler
<
Tag
>
{
}
@Override
private
Map
<
String
,
Tag
>
tags
;
public
ExcelVerifyHandlerResult
verifyHandler
(
Tag
t
)
{
public
ExcelVerifyHandler
(
Map
<
String
,
Tag
>
tags
)
{
ExcelVerifyHandlerResult
result
=
new
ExcelVerifyHandlerResult
(
true
);
this
.
tags
=
tags
;
if
(!
Constants
.
TAG_SYSTEM_TYPE
.
equals
(
t
.
getTagType
())
}
&&
!
Constants
.
TAG_PERSONAL_TYPE
.
equals
(
t
.
getTagType
()))
{
@Override
result
.
setSuccess
(
false
);
public
ExcelVerifyHandlerResult
verifyHandler
(
Tag
t
)
{
result
.
setMsg
(
String
.
format
(
"标签类型错误,不能为[%s]"
,
t
.
getTagType
()));
ExcelVerifyHandlerResult
result
=
new
ExcelVerifyHandlerResult
(
true
);
}
if
(!
Constants
.
TAG_SYSTEM_TYPE
.
equals
(
t
.
getTagType
())
if
(
tags
.
get
(
t
.
getPath
())
!=
null
&&
!
Constants
.
TAG_PERSONAL_TYPE
.
equals
(
t
.
getTagType
()))
{
&&
tags
.
get
(
t
.
getPath
()).
getTagType
().
equals
(
t
.
getTagType
()))
{
result
.
setSuccess
(
false
);
result
.
setSuccess
(
false
);
result
.
setMsg
(
String
.
format
(
"标签类型错误,不能为[%s]"
,
t
.
getTagType
()));
result
.
setMsg
(
String
.
format
(
"标签类型为[%s], 路径为[%s]的标签已经存在"
,
}
Constants
.
TAG_PERSONAL_TYPE
.
equals
(
t
.
getTagType
())
?
"个人标签"
:
"系统标签"
,
t
.
getPath
()));
if
(
tags
.
get
(
t
.
getPath
())
!=
null
}
&&
tags
.
get
(
t
.
getPath
()).
getTagType
().
equals
(
t
.
getTagType
()))
{
if
(!
t
.
getPath
().
endsWith
(
t
.
getName
()))
{
result
.
setSuccess
(
false
);
result
.
setSuccess
(
false
);
result
.
setMsg
(
String
.
format
(
"标签类型为[%s], 路径为[%s]的标签已经存在"
,
result
.
setMsg
(
String
.
format
(
"名称和路径不匹配,名称为[%s],路径为[%s]"
,
t
.
getName
(),
t
.
getPath
()));
Constants
.
TAG_PERSONAL_TYPE
.
equals
(
t
.
getTagType
())
?
"个人标签"
:
"系统标签"
,
t
.
getPath
()));
}
}
return
result
;
if
(!
t
.
getPath
().
endsWith
(
t
.
getName
()))
{
}
result
.
setSuccess
(
false
);
}
result
.
setMsg
(
String
.
format
(
"名称和路径不匹配,名称为[%s],路径为[%s]"
,
t
.
getName
(),
t
.
getPath
()));
}
public
Page
listImportlogByPage
(
String
dept
,
Page
page
)
{
return
result
;
Query
q
=
createImportlogPageQuery
(
dept
,
page
);
}
List
<
ImportLog
>
logs
=
mongoOperations
}
.
find
(
q
,
ImportLog
.
class
);
long
count
=
mongoOperations
.
count
(
q
,
ImportLog
.
class
);
public
Page
listImportlogByPage
(
String
dept
,
Page
page
)
{
page
.
setData
(
logs
);
Query
q
=
createImportlogPageQuery
(
dept
,
page
);
page
.
setTotal
(
count
);
List
<
ImportLog
>
logs
=
mongoOperations
return
page
;
.
find
(
q
,
ImportLog
.
class
);
}
long
count
=
mongoOperations
.
count
(
q
,
ImportLog
.
class
);
page
.
setData
(
logs
);
private
Query
createImportlogPageQuery
(
String
dept
,
Page
page
)
{
page
.
setTotal
(
count
);
Query
q
=
new
Query
();
return
page
;
q
.
addCriteria
(
Criteria
.
where
(
"type"
).
is
(
Constants
.
COMMON_TAG_LOG_TYPE
));
}
q
.
addCriteria
(
Criteria
.
where
(
"dept"
).
is
(
dept
));
q
.
skip
(
page
.
getOffset
());
private
Query
createImportlogPageQuery
(
String
dept
,
Page
page
)
{
q
.
limit
(
page
.
getPageSize
());
Query
q
=
new
Query
();
q
.
with
(
Sort
.
by
(
Arrays
.
asList
(
new
Order
(
Direction
.
DESC
,
"startTime"
))));
q
.
addCriteria
(
Criteria
.
where
(
"type"
).
is
(
Constants
.
COMMON_TAG_LOG_TYPE
));
return
q
;
q
.
addCriteria
(
Criteria
.
where
(
"dept"
).
is
(
dept
));
}
q
.
skip
(
page
.
getOffset
());
q
.
limit
(
page
.
getPageSize
());
public
void
undoImportExcel
(
String
importlogId
)
{
q
.
with
(
Sort
.
by
(
Arrays
.
asList
(
new
Order
(
Direction
.
DESC
,
"startTime"
))));
mongoOperations
.
remove
(
Query
.
query
(
Criteria
.
where
(
"importId"
).
is
(
importlogId
)),
Tag
.
class
);
return
q
;
}
}
}
public
void
undoImportExcel
(
String
importlogId
)
{
mongoOperations
.
remove
(
Query
.
query
(
Criteria
.
where
(
"importId"
).
is
(
importlogId
)),
Tag
.
class
);
}
}
src/main/java/com/keymobile/tagmanager/service/TagService.java
View file @
10ed975e
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.List
;
import
java.util.List
;
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
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.domain.Sort.Direction
;
import
org.springframework.data.domain.Sort.Direction
;
import
org.springframework.data.domain.Sort.Order
;
import
org.springframework.data.domain.Sort.Order
;
import
org.springframework.data.mongodb.core.MongoOperations
;
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
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
;
import
com.keymobile.tagmanager.model.ExtTag
;
import
com.keymobile.tagmanager.model.ExtTag
;
import
com.keymobile.tagmanager.model.Page
;
import
com.keymobile.tagmanager.model.Page
;
import
com.keymobile.tagmanager.model.SysTag
;
import
com.keymobile.tagmanager.model.SysTag
;
import
com.keymobile.tagmanager.model.Tag
;
import
com.keymobile.tagmanager.model.Tag
;
import
com.keymobile.tagmanager.persistence.TagRepository
;
import
com.keymobile.tagmanager.model.authService.Org
;
import
com.keymobile.tagmanager.util.Constants
;
import
com.keymobile.tagmanager.persistence.TagRepository
;
import
com.keymobile.tagmanager.util.JsonTreeHelper
;
import
com.keymobile.tagmanager.remote.AuthServiceClient
;
import
com.keymobile.tagmanager.util.JsonTreeHelper.JsonNode
;
import
com.keymobile.tagmanager.util.Constants
;
import
com.keymobile.tagmanager.util.JsonTreeHelper
;
@Service
import
com.keymobile.tagmanager.util.JsonTreeHelper.JsonNode
;
public
class
TagService
{
@Service
@Autowired
public
class
TagService
{
private
MongoOperations
mongoOperations
;
@Autowired
@Autowired
private
TagRepository
tagRepository
;
private
MongoOperations
mongoOperations
;
@Autowired
private
Logger
logger
=
LoggerFactory
.
getLogger
(
TagService
.
class
);
private
TagRepository
tagRepository
;
@Autowired
public
Tag
addOrUpdateTag
(
String
parentId
,
Tag
tag
,
String
userName
)
throws
TagNotExistException
,
TagDuplicateException
,
TagException
{
private
AuthServiceClient
authService
;
String
originId
=
tag
.
getId
();
if
(
StringUtils
.
isNotBlank
(
parentId
))
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
TagService
.
class
);
Tag
parent
=
getTagById
(
parentId
);
String
parentIdPath
=
parent
.
getIdPath
();
//新增或修改标签
String
tagId
=
StringUtils
.
isNotBlank
(
originId
)
?
originId
:
UUID
.
randomUUID
().
toString
();
public
Tag
addOrUpdateTag
(
String
parentId
,
Tag
tag
,
String
userName
)
throws
TagNotExistException
,
TagDuplicateException
,
TagException
{
tag
.
setId
(
tagId
);
//定义保存原来的id
tag
.
setIdPath
(
parentIdPath
+
Constants
.
TAG_PATH_SEPARATOR
+
tagId
);
String
originId
=
tag
.
getId
();
tag
.
setPath
(
parent
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
+
tag
.
getName
());
if
(
StringUtils
.
isNotBlank
(
parentId
))
{
//如果新增子节点
}
else
{
//根据父节点id获取对应的父标签
tag
.
setPath
(
tag
.
getName
());
Tag
parentTag
=
getTagById
(
parentId
);
String
tagId
=
StringUtils
.
isNotBlank
(
originId
)
?
originId
:
UUID
.
randomUUID
().
toString
();
//设置新增标签的idpath和path
tag
.
setId
(
tagId
);
String
tagId
=
StringUtils
.
isNotBlank
(
originId
)
?
originId
:
UUID
.
randomUUID
().
toString
();
tag
.
setIdPath
(
tagId
);
tag
.
setId
(
tagId
);
}
tag
.
setIdPath
(
parentTag
.
getIdPath
()
+
Constants
.
TAG_PATH_SEPARATOR
+
tagId
);
changeNameToAvoidConflict
(
tag
,
userName
);
tag
.
setPath
(
parentTag
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
+
tag
.
getName
());
checkTagValid
(
tag
,
userName
);
}
else
{
//如果是新增根目录
if
(
StringUtils
.
isNotBlank
(
originId
))
{
String
tagId
=
StringUtils
.
isNotBlank
(
originId
)
?
originId
:
UUID
.
randomUUID
().
toString
();
//update
tag
.
setId
(
tagId
);
Tag
origin
=
mongoOperations
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"_id"
).
is
(
tag
.
getId
())),
Tag
.
class
);
tag
.
setIdPath
(
tagId
);
List
<
Tag
>
relationNamepathTags
=
mongoOperations
.
find
(
tag
.
setPath
(
tag
.
getName
());
Query
.
query
(
createRelationNamepathCriteria
(
userName
,
origin
)),
Tag
.
class
);
}
relationNamepathTags
.
forEach
(
p
->
{
changeNameToAvoidConflict
(
tag
,
userName
);
p
.
setIdPath
(
p
.
getIdPath
().
replaceAll
(
origin
.
getIdPath
(),
tag
.
getIdPath
()));
checkTagValid
(
tag
,
userName
);
p
.
setPath
(
p
.
getPath
().
replaceAll
(
origin
.
getPath
(),
tag
.
getPath
()));
if
(
StringUtils
.
isNotBlank
(
originId
))
{
p
.
setLevel
(
p
.
getPath
().
split
(
","
).
length
);
//update
});
Tag
origin
=
mongoOperations
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"_id"
).
is
(
tag
.
getId
())),
Tag
.
class
);
tagRepository
.
saveAll
(
relationNamepathTags
);
List
<
Tag
>
relationNamepathTags
=
mongoOperations
.
find
(
}
Query
.
query
(
createRelationNamepathCriteria
(
userName
,
origin
)),
Tag
.
class
);
tag
.
setLevel
(
tag
.
getPath
().
split
(
","
).
length
);
relationNamepathTags
.
forEach
(
p
->
{
return
tagRepository
.
save
(
tag
);
p
.
setIdPath
(
p
.
getIdPath
().
replaceAll
(
origin
.
getIdPath
(),
tag
.
getIdPath
()));
}
p
.
setPath
(
p
.
getPath
().
replaceAll
(
origin
.
getPath
(),
tag
.
getPath
()));
p
.
setLevel
(
p
.
getPath
().
split
(
","
).
length
);
private
void
changeNameToAvoidConflict
(
Tag
tag
,
String
userName
)
{
});
Tag
t
=
mongoOperations
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"path"
).
is
(
tag
.
getPath
())
tagRepository
.
saveAll
(
relationNamepathTags
);
.
and
(
"dept"
).
is
(
tag
.
getDept
())
}
.
and
(
"creator"
).
ne
(
userName
)),
Tag
.
class
);
tag
.
setLevel
(
tag
.
getPath
().
split
(
","
).
length
);
if
(
t
!=
null
)
{
return
tagRepository
.
save
(
tag
);
String
changeName
=
String
.
format
(
"%s(%s)"
,
t
.
getName
(),
userName
);
}
logger
.
info
(
String
.
format
(
"other creator has create same name in target, change tagName to %s"
,
changeName
));
tag
.
setName
(
changeName
);
//删除标签
tag
.
setPath
(
t
.
getPath
().
substring
(
0
,
t
.
getPath
().
lastIndexOf
(
Constants
.
TAG_PATH_SEPARATOR
))
+
t
.
getName
());
public
void
deleteTag
(
String
tagId
,
String
userName
)
throws
TagException
{
}
Optional
<
Tag
>
optional
=
tagRepository
.
findById
(
tagId
);
}
if
(
optional
.
isPresent
())
{
Tag
parentTag
=
optional
.
get
();
private
Criteria
createRelationNamepathCriteria
(
String
userName
,
Tag
origin
)
{
List
<
Tag
>
childs
=
mongoOperations
.
find
(
Query
.
query
(
createRelationNamepathCriteria
(
userName
,
if
(
Constants
.
TAG_DIMENSION_TRUE
.
equals
(
origin
.
getDimensionType
()))
{
parentTag
)),
Tag
.
class
);
return
Criteria
.
where
(
"path"
).
regex
(
"^"
+
origin
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
).
and
(
"dept"
).
is
(
origin
.
getDept
());
if
(!
childs
.
isEmpty
())
{
}
throw
new
TagException
(
"存在子节点,不允许删除!"
);
return
Criteria
.
where
(
"path"
).
regex
(
"^"
+
origin
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
)
}
.
and
(
"creator"
).
is
(
userName
);
tagRepository
.
deleteById
(
tagId
);
}
}
}
public
Tag
getTagById
(
String
tagId
)
throws
TagNotExistException
{
Tag
t
=
mongoOperations
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"_id"
).
is
(
tagId
)),
Tag
.
class
);
//判断标签是否有子节点
if
(
t
==
null
)
public
boolean
hasChild
(
String
tagId
,
String
userName
)
throws
TagException
{
throw
new
TagNotExistException
(
"ID=["
+
tagId
+
"] tag not exist!"
);
Optional
<
Tag
>
optional
=
tagRepository
.
findById
(
tagId
);
return
t
;
if
(
optional
.
isPresent
())
{
}
Tag
parentTag
=
optional
.
get
();
List
<
Tag
>
childs
=
mongoOperations
.
find
(
Query
.
query
(
createRelationNamepathCriteria
(
userName
,
parentTag
)),
Tag
.
class
);
return
!
childs
.
isEmpty
();
private
void
checkTagValid
(
Tag
tag
,
String
userName
)
throws
TagDuplicateException
,
TagException
{
}
if
(!
Constants
.
TAG_PERSONAL_TYPE
.
equals
(
tag
.
getTagType
())
return
false
;
&&
!
Constants
.
TAG_SYSTEM_TYPE
.
equals
(
tag
.
getTagType
()))
{
}
throw
new
TagException
(
String
.
format
(
"No such tagType %s"
,
tag
.
getTagType
()));
}
//根据标签id获取标签
Tag
t
=
mongoOperations
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"path"
).
is
(
tag
.
getPath
())
public
Tag
getTagById
(
String
tagId
)
throws
TagNotExistException
{
.
and
(
"creator"
).
is
(
userName
)),
Tag
.
class
);
Tag
t
=
mongoOperations
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"_id"
).
is
(
tagId
)),
Tag
.
class
);
if
(
t
!=
null
&&
!
t
.
getId
().
equals
(
tag
.
getId
()))
if
(
t
==
null
)
throw
new
TagDuplicateException
(
"标签 ["
+
tag
.
getName
()
+
"] 已经存在!"
);
throw
new
TagNotExistException
(
"ID=["
+
tagId
+
"] tag not exist!"
);
return
t
;
}
}
public
JsonNode
[]
queryPersonalTagAsTree
(
String
parentId
,
String
userName
,
String
dept
)
throws
TagNotExistException
{
//获取维度标签树
List
<
Tag
>
tags
=
new
ArrayList
<>();
public
JsonNode
[]
queryDimensionTagAsTree
(
String
dept
,
String
parentId
)
throws
TagNotExistException
{
if
(
StringUtils
.
isEmpty
(
parentId
))
{
List
<
Tag
>
tags
=
new
ArrayList
<>();
tags
=
mongoOperations
.
find
(
createPersonalTagQuery
(
userName
,
dept
),
Tag
.
class
);
if
(
StringUtils
.
isEmpty
(
parentId
))
{
//从根节点开始获取
}
else
{
tags
=
mongoOperations
.
find
(
createDimensionTagQuery
(
dept
),
Tag
.
class
);
Tag
parentTag
=
getTagById
(
parentId
);
}
else
{
tags
=
getPersonSubTag
(
parentTag
,
userName
);
Tag
parentTag
=
getTagById
(
parentId
);
tags
.
forEach
(
tag
->
tag
.
setPath
(
tag
.
getPath
().
replaceAll
(
parentTag
.
getPath
(),
parentTag
.
getName
())));
//获取父节点标签下的所有子标签
}
tags
=
getDimensionSubTag
(
parentTag
);
List
<
JsonNode
>
nodes
=
new
ArrayList
<>();
//tags.forEach(tag -> tag.setPath(tag.getPath().replaceAll(parentTag.getPath(), parentTag.getName())));
tags
.
forEach
(
p
->
{
}
JsonNode
node
=
new
JsonNode
(
p
.
getPath
(),
p
.
getId
(),
p
.
getPath
(),
p
.
getIdPath
());
List
<
JsonNode
>
nodes
=
new
ArrayList
<>();
nodes
.
add
(
node
);
tags
.
forEach
(
p
->
{
});
JsonNode
node
=
new
JsonNode
(
p
.
getPath
(),
p
.
getId
(),
p
.
getPath
(),
p
.
getIdPath
());
JsonNode
root
=
JsonTreeHelper
.
toJsonTree
(
nodes
,
Constants
.
TAG_PATH_SEPARATOR
);
nodes
.
add
(
node
);
if
(
root
.
children
!=
null
)
});
return
root
.
children
;
//自定拼接成树结构
else
JsonNode
root
=
JsonTreeHelper
.
toJsonTree
(
nodes
,
Constants
.
TAG_PATH_SEPARATOR
);
return
new
JsonNode
[]
{};
if
(
root
.
children
!=
null
)
{
}
return
root
.
children
;
}
private
Query
createPersonalTagQuery
(
String
userName
,
String
dept
,
Criteria
...
serachCriterias
)
{
else
{
return
Query
.
query
(
return
new
JsonNode
[]
{};
createPersonalTagCriteria
(
userName
,
dept
,
null
))
}
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
}
}
//获取个人标签树
private
Criteria
createPersonalTagCriteria
(
String
userName
,
String
dept
,
String
path
)
{
public
JsonNode
[]
queryPersonalTagAsTree
(
String
parentId
,
String
userId
,
Criteria
criteria
=
Criteria
.
where
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
String
dept
)
.
and
(
"dept"
).
is
(
dept
);
throws
TagNotExistException
{
if
(
StringUtils
.
isNotBlank
(
path
))
{
List
<
Tag
>
tags
=
new
ArrayList
<>();
criteria
=
criteria
.
and
(
"path"
).
regex
(
"^"
+
path
);;
//根据用户机构id获取机构信息
}
Org
org
=
authService
.
getOrgs
(
dept
);
return
criteria
.
orOperator
(
if
(
org
==
null
)
{
Criteria
.
where
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
),
throw
new
TagNotExistException
(
"get org by id error;"
);
Criteria
.
where
(
"isOpen"
).
is
(
Constants
.
TAG_OPEN_STATUS
),
}
Criteria
.
where
(
"creator"
).
is
(
userName
));
//获取机构fullname
}
String
fullname
=
org
.
getFullName
();
//分隔fullname
private
Criteria
createSystemTagCriteria
(
String
path
)
{
String
[]
fullnames
=
fullname
.
split
(
","
);
Criteria
criteria
=
Criteria
.
where
(
"tagType"
).
is
(
Constants
.
TAG_SYSTEM_TYPE
);
//如果fullname没有两层结构
if
(
StringUtils
.
isNotBlank
(
path
))
{
if
(
fullnames
.
length
<
2
)
{
return
criteria
.
and
(
"path"
).
regex
(
"^"
+
path
);
throw
new
TagNotExistException
(
"get org by id the fullname:"
+
fullname
+
" at least 2 level;"
);
}
}
return
criteria
;
String
companyPath
=
fullnames
[
0
]+
Constants
.
TAG_PATH_SEPARATOR
+
fullnames
[
1
];
}
//根据companyPath获取机构信息
Org
companyOrg
=
authService
.
findByFullName
(
companyPath
);
private
Criteria
createPersonalDimensionTagCriteria
(
String
userName
,
String
dept
)
{
if
(
companyOrg
==
null
)
{
return
Criteria
.
where
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
throw
new
TagNotExistException
(
"get company org by fullname is null;"
);
.
and
(
"dept"
).
is
(
dept
).
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
);
}
}
String
companyOrgId
=
String
.
valueOf
(
companyOrg
.
getId
());
if
(
StringUtils
.
isEmpty
(
parentId
))
{
//从根目录开始查找
//
private
Query
createPersonalExcludeOpenTypeTagQuery
(
String
userName
,
String
dept
)
{
tags
=
mongoOperations
.
find
(
this
.
createNewPersonalTagQuery
(
userId
,
dept
,
companyOrgId
),
Tag
.
class
);
return
Query
.
query
(
Criteria
.
where
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
}
else
{
.
and
(
"dept"
).
is
(
dept
)
Tag
parentTag
=
getTagById
(
parentId
);
.
orOperator
(
tags
=
this
.
getNewPersonSubTag
(
parentTag
,
userId
,
dept
,
companyOrgId
);
Criteria
.
where
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
),
}
Criteria
.
where
(
"creator"
).
is
(
userName
)))
List
<
JsonNode
>
nodes
=
new
ArrayList
<>();
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
tags
.
forEach
(
p
->
{
}
JsonNode
node
=
new
JsonNode
(
p
.
getPath
(),
p
.
getId
(),
p
.
getPath
(),
p
.
getIdPath
());
nodes
.
add
(
node
);
private
List
<
Order
>
getDefaultTagOrders
()
{
});
List
<
Order
>
orders
=
new
ArrayList
<>();
JsonNode
root
=
JsonTreeHelper
.
toJsonTree
(
nodes
,
Constants
.
TAG_PATH_SEPARATOR
);
orders
.
add
(
new
Order
(
Direction
.
ASC
,
"level"
));
if
(
root
.
children
!=
null
)
{
orders
.
add
(
new
Order
(
Direction
.
DESC
,
"order"
));
return
root
.
children
;
return
orders
;
}
else
{
}
return
new
JsonNode
[]
{};
}
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
)
public
Page
searchPersonalDimensionTagByPage
(
String
userName
,
String
dept
,
String
keyword
,
String
path
,
Integer
domain
,
Page
page
)
{
.
orOperator
(
Criteria
andCriterias
=
createPersonalDimensionTagCriteria
(
userName
,
dept
);
Criteria
.
where
(
"openStatus"
).
is
(
Constants
.
TAG_OPEN_STATUS
),
if
(
StringUtils
.
isNotBlank
(
keyword
)
&&
!
"*"
.
equals
(
keyword
))
{
Criteria
.
where
(
"creator"
).
is
(
userName
)))
andCriterias
.
andOperator
(
createKeywordRegexQuery
(
Arrays
.
asList
(
"name"
,
"nameEn"
,
"desc"
),
keyword
));
.
with
(
Sort
.
by
(
getDefaultTagOrders
())),
Tag
.
class
);
}
dirs
.
add
(
parentTag
);
Query
q
=
createPageQuery
(
page
,
andCriterias
);
return
dirs
;
List
<
Tag
>
tags
=
mongoOperations
.
find
(
q
,
Tag
.
class
);
}
long
count
=
mongoOperations
.
count
(
q
,
Tag
.
class
);
page
.
setData
(
decoratorToExtTag
(
tags
,
userName
));
page
.
setTotal
(
count
);
public
Page
searchPersonalTagByPage
(
String
userName
,
String
dept
,
String
keyword
,
String
path
,
Integer
domain
,
Page
page
)
{
return
page
;
Criteria
andCriterias
=
createPersonalTagCriteria
(
userName
,
dept
,
path
);
}
if
(
StringUtils
.
isNotBlank
(
keyword
)
&&
!
"*"
.
equals
(
keyword
))
{
andCriterias
.
andOperator
(
createKeywordRegexQuery
(
Arrays
.
asList
(
"name"
,
"nameEn"
,
"desc"
),
keyword
));
//根据关键字查找系统标签
}
public
Page
searchSystemTagByPage
(
String
userName
,
String
keyword
,
String
path
,
Integer
domain
,
Page
page
)
{
Query
q
=
new
Query
(
andCriterias
);
Criteria
andCriterias
=
createSystemTagCriteria
(
path
);
q
.
skip
(
page
.
getOffset
());
if
(
StringUtils
.
isNotBlank
(
keyword
)
&&
!
"*"
.
equals
(
keyword
))
{
q
.
limit
(
page
.
getPageSize
());
andCriterias
.
andOperator
(
createKeywordRegexQuery
(
Arrays
.
asList
(
"name"
,
"nameEn"
,
"desc"
),
keyword
));
List
<
Tag
>
tags
=
mongoOperations
}
.
find
(
q
,
Tag
.
class
);
Query
q
=
createPageQuery
(
page
,
andCriterias
);
long
count
=
mongoOperations
.
count
(
q
,
Tag
.
class
);
List
<
Tag
>
tags
=
mongoOperations
.
find
(
q
,
Tag
.
class
);
page
.
setData
(
decoratorToExtTag
(
tags
,
userName
));
long
count
=
mongoOperations
.
count
(
q
,
Tag
.
class
);
page
.
setTotal
(
count
);
page
.
setData
(
decoratorToExtTag
(
tags
,
userName
));
return
page
;
page
.
setTotal
(
count
);
return
page
;
}
}
private
Criteria
createKeywordRegexQuery
(
List
<
String
>
asList
,
String
keyword
)
{
//根据关键字查找个人标签
Criteria
criteriaSearch
=
new
Criteria
();
public
Page
searchPersonalTagByPage
(
String
userName
,
String
dept
,
String
keyword
,
String
path
,
Integer
domain
,
Page
page
)
{
return
criteriaSearch
.
orOperator
(
asList
.
stream
().
map
(
col
->
{
Criteria
andCriterias
=
createPersonalTagCriteria
(
userName
,
dept
,
path
);
return
Criteria
.
where
(
col
).
regex
(
keyword
,
"i"
);
if
(
StringUtils
.
isNotBlank
(
keyword
)
&&
!
"*"
.
equals
(
keyword
))
{
}).
collect
(
Collectors
.
toList
()).
toArray
(
new
Criteria
[
0
]));
andCriterias
.
andOperator
(
createKeywordRegexQuery
(
Arrays
.
asList
(
"name"
,
"nameEn"
,
"desc"
),
keyword
));
}
}
Query
q
=
new
Query
(
andCriterias
);
private
Criteria
createPathRegexQuery
(
String
path
)
{
q
.
skip
(
page
.
getOffset
());
return
Criteria
.
where
(
"path"
).
regex
(
"^"
+
path
);
q
.
limit
(
page
.
getPageSize
());
}
List
<
Tag
>
tags
=
mongoOperations
.
find
(
q
,
Tag
.
class
);
long
count
=
mongoOperations
.
count
(
q
,
Tag
.
class
);
public
JsonNode
[]
querySystemTagAsTree
(
String
parentId
)
throws
TagNotExistException
{
page
.
setData
(
decoratorToExtTag
(
tags
,
userName
));
List
<
Tag
>
tags
=
new
ArrayList
<>();
page
.
setTotal
(
count
);
if
(
StringUtils
.
isEmpty
(
parentId
))
{
return
page
;
tags
=
mongoOperations
.
find
(
Query
.
query
(
Criteria
}
.
where
(
"tagType"
).
is
(
Constants
.
TAG_SYSTEM_TYPE
)).
with
(
Sort
.
by
(
getDefaultTagOrders
())),
Tag
.
class
);
}
else
{
//获取系统标签树
Tag
parentTag
=
getTagById
(
parentId
);
public
JsonNode
[]
querySystemTagAsTree
(
String
parentId
)
throws
TagNotExistException
{
tags
=
getSystemSubTag
(
parentTag
);
List
<
Tag
>
tags
=
new
ArrayList
<>();
tags
.
forEach
(
tag
->
tag
.
setPath
(
tag
.
getPath
().
replaceAll
(
parentTag
.
getPath
(),
parentTag
.
getName
())));
if
(
StringUtils
.
isEmpty
(
parentId
))
{
}
tags
=
mongoOperations
.
find
(
Query
.
query
(
Criteria
List
<
JsonNode
>
nodes
=
new
ArrayList
<>();
.
where
(
"tagType"
).
is
(
Constants
.
TAG_SYSTEM_TYPE
)).
with
(
Sort
.
by
(
getDefaultTagOrders
())),
Tag
.
class
);
tags
.
forEach
(
p
->
{
}
else
{
JsonNode
node
=
new
JsonNode
(
p
.
getPath
(),
p
.
getId
(),
p
.
getPath
(),
p
.
getIdPath
());
Tag
parentTag
=
getTagById
(
parentId
);
nodes
.
add
(
node
);
tags
=
getSystemSubTag
(
parentTag
);
});
//tags.forEach(tag -> tag.setPath(tag.getPath().replaceAll(parentTag.getPath(), parentTag.getName())));
JsonNode
root
=
JsonTreeHelper
.
toJsonTree
(
nodes
,
Constants
.
TAG_PATH_SEPARATOR
);
}
if
(
root
.
children
!=
null
)
List
<
JsonNode
>
nodes
=
new
ArrayList
<>();
return
root
.
children
;
tags
.
forEach
(
p
->
{
else
JsonNode
node
=
new
JsonNode
(
p
.
getPath
(),
p
.
getId
(),
p
.
getPath
(),
p
.
getIdPath
());
return
new
JsonNode
[]
{};
nodes
.
add
(
node
);
}
});
JsonNode
root
=
JsonTreeHelper
.
toJsonTree
(
nodes
,
Constants
.
TAG_PATH_SEPARATOR
);
public
Page
searchSystemTagByPage
(
String
userName
,
String
keyword
,
String
path
,
Integer
domain
,
Page
page
)
{
if
(
root
.
children
!=
null
)
Criteria
andCriterias
=
createSystemTagCriteria
(
path
);
return
root
.
children
;
if
(
StringUtils
.
isNotBlank
(
keyword
)
&&
!
"*"
.
equals
(
keyword
))
{
else
andCriterias
.
andOperator
(
createKeywordRegexQuery
(
Arrays
.
asList
(
"name"
,
"nameEn"
,
"desc"
),
keyword
));
return
new
JsonNode
[]
{};
}
}
Query
q
=
createPageQuery
(
page
,
andCriterias
);
List
<
Tag
>
tags
=
mongoOperations
.
find
(
q
,
Tag
.
class
);
//获取新增个人标签加载上级标签树接口
long
count
=
mongoOperations
.
count
(
q
,
Tag
.
class
);
public
JsonNode
[]
queryPersonalTagExcludeOpenTypeAsTree
(
String
parentId
,
String
userName
,
String
dept
)
throws
TagNotExistException
{
page
.
setData
(
decoratorToExtTag
(
tags
,
userName
));
List
<
Tag
>
tags
=
new
ArrayList
<>();
page
.
setTotal
(
count
);
//根据普通用户机构id获取机构信息
return
page
;
Org
org
=
authService
.
getOrgs
(
dept
);
}
if
(
org
==
null
)
{
throw
new
TagNotExistException
(
"get org by id error;"
);
private
Query
createPageQuery
(
Page
page
,
Criteria
andCriterias
)
{
}
Query
q
=
new
Query
(
andCriterias
);
//获取机构fullname
q
.
skip
(
page
.
getOffset
());
String
fullname
=
org
.
getFullName
();
q
.
limit
(
page
.
getPageSize
());
//分隔fullname
q
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
String
[]
fullnames
=
fullname
.
split
(
","
);
return
q
;
//如果fullname没有两层结构
}
if
(
fullnames
.
length
<
2
)
{
throw
new
TagNotExistException
(
"get org by id the fullname:"
+
fullname
+
" at least 2 level;"
);
private
List
<
ExtTag
>
decoratorToExtTag
(
List
<
Tag
>
tags
,
String
userName
)
{
}
return
tags
.
stream
().
map
(
t
->
{
String
companyPath
=
fullnames
[
0
]+
Constants
.
TAG_PATH_SEPARATOR
+
fullnames
[
1
];
return
new
ExtTag
(
t
,
t
.
getCreator
().
equals
(
userName
)
?
Constants
.
TAG_OPERABLE_TRUE
:
//根据companyPath获取机构信息
Constants
.
TAG_OPERABLE_FALSE
);
Org
companyOrg
=
authService
.
findByFullName
(
companyPath
);
}).
collect
(
Collectors
.
toList
());
if
(
companyOrg
==
null
)
{
}
throw
new
TagNotExistException
(
"get company org by fullname is null;"
);
}
private
List
<
Tag
>
getSystemSubTag
(
Tag
parentTag
)
{
String
companyOrgId
=
String
.
valueOf
(
companyOrg
.
getId
());
List
<
Tag
>
dirs
=
mongoOperations
.
find
(
new
Query
().
addCriteria
(
Criteria
.
where
(
"path"
)
if
(
StringUtils
.
isEmpty
(
parentId
))
{
.
regex
(
"^"
+
parentTag
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
)
tags
=
mongoOperations
.
find
(
createPersonalExcludeOpenTypeTagQuery
(
userName
,
companyOrgId
),
Tag
.
class
);
.
and
(
"tagType"
).
is
(
Constants
.
TAG_SYSTEM_TYPE
))
}
.
with
(
Sort
.
by
(
getDefaultTagOrders
())),
Tag
.
class
);
/**else {
dirs
.
add
(
parentTag
);
Tag parentTag = getTagById(parentId);
return
dirs
;
tags = getPersonSubTag(parentTag, userName);
}
//tags.forEach(tag -> tag.setPath(tag.getPath().replaceAll(parentTag.getPath(), parentTag.getName())));
}*/
public
void
deleteTag
(
String
tagId
,
String
userName
)
throws
TagException
{
List
<
JsonNode
>
nodes
=
new
ArrayList
<>();
Optional
<
Tag
>
optional
=
tagRepository
.
findById
(
tagId
);
tags
.
forEach
(
p
->
{
if
(
optional
.
isPresent
())
{
JsonNode
node
=
new
JsonNode
(
p
.
getPath
(),
p
.
getId
(),
p
.
getPath
(),
p
.
getIdPath
());
Tag
parentTag
=
optional
.
get
();
nodes
.
add
(
node
);
List
<
Tag
>
childs
=
mongoOperations
.
find
(
Query
.
query
(
createRelationNamepathCriteria
(
userName
,
parentTag
)),
Tag
.
class
);
});
if
(!
childs
.
isEmpty
())
{
JsonNode
root
=
JsonTreeHelper
.
toJsonTree
(
nodes
,
Constants
.
TAG_PATH_SEPARATOR
);
throw
new
TagException
(
"存在子节点,不允许删除!"
);
if
(
root
.
children
!=
null
)
{
}
return
root
.
children
;
tagRepository
.
deleteById
(
tagId
);
}
}
else
{
}
return
new
JsonNode
[]
{};
}
public
boolean
hasChild
(
String
tagId
,
String
userName
)
throws
TagException
{
}
Optional
<
Tag
>
optional
=
tagRepository
.
findById
(
tagId
);
if
(
optional
.
isPresent
())
{
Tag
parentTag
=
optional
.
get
();
List
<
Tag
>
childs
=
mongoOperations
.
find
(
Query
.
query
(
createRelationNamepathCriteria
(
userName
,
parentTag
)),
Tag
.
class
);
//如果标签存在冲突,修改当前标签名字和路径
return
!
childs
.
isEmpty
();
private
void
changeNameToAvoidConflict
(
Tag
tag
,
String
userName
)
{
}
Tag
t
=
mongoOperations
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"path"
).
is
(
tag
.
getPath
())
return
false
;
.
and
(
"dept"
).
is
(
tag
.
getDept
())
}
.
and
(
"creator"
).
ne
(
userName
)),
Tag
.
class
);
if
(
t
!=
null
)
{
public
void
shareTags
(
List
<
String
>
tagIds
)
{
String
changeName
=
String
.
format
(
"%s(%s)"
,
t
.
getName
(),
userName
);
Iterable
<
Tag
>
tags
=
tagRepository
.
findAllById
(
tagIds
);
logger
.
info
(
String
.
format
(
"other creator has create same name in target, change tagName to %s"
,
changeName
));
tags
.
forEach
(
t
->
{
tag
.
setName
(
changeName
);
t
.
setIsOpen
(
Constants
.
TAG_OPEN_STATUS
);
tag
.
setPath
(
t
.
getPath
().
substring
(
0
,
t
.
getPath
().
lastIndexOf
(
Constants
.
TAG_PATH_SEPARATOR
))
+
t
.
getName
());
});
}
tagRepository
.
saveAll
(
tags
);
}
}
//拼接path和username的查询条件
private
Criteria
createRelationNamepathCriteria
(
String
userName
,
Tag
origin
)
{
public
JsonNode
[]
queryDimensionTagAsTree
(
String
dept
,
String
parentId
)
throws
TagNotExistException
{
if
(
Constants
.
TAG_DIMENSION_TRUE
.
equals
(
origin
.
getDimensionType
()))
{
List
<
Tag
>
tags
=
new
ArrayList
<>();
return
Criteria
.
where
(
"path"
).
regex
(
"^"
+
origin
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
).
and
(
"dept"
).
is
(
origin
.
getDept
());
if
(
StringUtils
.
isEmpty
(
parentId
))
{
}
tags
=
mongoOperations
.
find
(
createDimensionTagQuery
(
dept
),
Tag
.
class
);
return
Criteria
.
where
(
"path"
).
regex
(
"^"
+
origin
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
)
}
else
{
.
and
(
"creator"
).
is
(
userName
);
Tag
parentTag
=
getTagById
(
parentId
);
}
tags
=
getDimensionSubTag
(
parentTag
);
//判断标签是否已经存在
tags
.
forEach
(
tag
->
tag
.
setPath
(
tag
.
getPath
().
replaceAll
(
parentTag
.
getPath
(),
parentTag
.
getName
())));
private
void
checkTagValid
(
Tag
tag
,
String
userName
)
throws
TagDuplicateException
,
TagException
{
}
if
(!
Constants
.
TAG_PERSONAL_TYPE
.
equals
(
tag
.
getTagType
())
List
<
JsonNode
>
nodes
=
new
ArrayList
<>();
&&
!
Constants
.
TAG_SYSTEM_TYPE
.
equals
(
tag
.
getTagType
()))
{
tags
.
forEach
(
p
->
{
throw
new
TagException
(
String
.
format
(
"No such tagType %s"
,
tag
.
getTagType
()));
JsonNode
node
=
new
JsonNode
(
p
.
getPath
(),
p
.
getId
(),
p
.
getPath
(),
p
.
getIdPath
());
}
nodes
.
add
(
node
);
Tag
t
=
mongoOperations
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"path"
).
is
(
tag
.
getPath
())
});
.
and
(
"creator"
).
is
(
userName
)),
Tag
.
class
);
JsonNode
root
=
JsonTreeHelper
.
toJsonTree
(
nodes
,
Constants
.
TAG_PATH_SEPARATOR
);
if
(
t
!=
null
&&
!
t
.
getId
().
equals
(
tag
.
getId
()))
if
(
root
.
children
!=
null
)
throw
new
TagDuplicateException
(
"标签 ["
+
tag
.
getName
()
+
"] 已经存在!"
);
return
root
.
children
;
else
}
return
new
JsonNode
[]
{};
//拼接个人维度标签树查询条件
}
private
Query
createDimensionTagQuery
(
String
dept
)
{
return
Query
.
query
(
Criteria
.
where
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
)
private
List
<
Tag
>
getDimensionSubTag
(
Tag
parentTag
)
{
.
and
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
List
<
Tag
>
dirs
=
mongoOperations
.
find
(
new
Query
().
addCriteria
(
Criteria
.
where
(
"path"
)
.
and
(
"dept"
).
is
(
dept
))
.
regex
(
"^"
+
parentTag
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
)
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
.
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
)
}
.
and
(
"dept"
).
is
(
parentTag
.
getDept
()))
//根据机构获取当前维度标签的所有子标签
.
with
(
Sort
.
by
(
getDefaultTagOrders
())),
Tag
.
class
);
private
List
<
Tag
>
getDimensionSubTag
(
Tag
parentTag
)
{
dirs
.
add
(
parentTag
);
List
<
Tag
>
dirs
=
mongoOperations
.
find
(
new
Query
().
addCriteria
(
Criteria
.
where
(
"path"
)
return
dirs
;
.
regex
(
"^"
+
parentTag
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
)
}
.
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
)
.
and
(
"dept"
).
is
(
parentTag
.
getDept
()))
private
Query
createDimensionTagQuery
(
String
dept
)
{
.
with
(
Sort
.
by
(
getDefaultTagOrders
())),
Tag
.
class
);
return
Query
.
query
(
Criteria
.
where
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
)
dirs
.
add
(
parentTag
);
.
and
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
return
dirs
;
.
and
(
"dept"
).
is
(
dept
))
}
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
//拼接默认配许条件
}
private
List
<
Order
>
getDefaultTagOrders
()
{
List
<
Order
>
orders
=
new
ArrayList
<>();
public
JsonNode
[]
queryPersonalTagExcludeOpenTypeAsTree
(
String
parentId
,
String
userName
,
String
dept
)
throws
TagNotExistException
{
orders
.
add
(
new
Order
(
Direction
.
ASC
,
"level"
));
List
<
Tag
>
tags
=
new
ArrayList
<>();
orders
.
add
(
new
Order
(
Direction
.
DESC
,
"order"
));
if
(
StringUtils
.
isEmpty
(
parentId
))
{
return
orders
;
tags
=
mongoOperations
.
find
(
createPersonalExcludeOpenTypeTagQuery
(
userName
,
dept
),
Tag
.
class
);
}
}
else
{
//拼接查找个人标签条件
Tag
parentTag
=
getTagById
(
parentId
);
private
Query
createNewPersonalTagQuery
(
String
userId
,
String
deptId
,
tags
=
getPersonSubTag
(
parentTag
,
userName
);
String
companyId
)
{
tags
.
forEach
(
tag
->
tag
.
setPath
(
tag
.
getPath
().
replaceAll
(
parentTag
.
getPath
(),
parentTag
.
getName
())));
Criteria
criteria
=
Criteria
.
where
(
"tagType"
).
is
(
"1"
);
//获取自定义标签
}
criteria
.
orOperator
(
List
<
JsonNode
>
nodes
=
new
ArrayList
<>();
Criteria
.
where
(
"dept"
).
is
(
companyId
),
//标签是维度管理员机构的
tags
.
forEach
(
p
->
{
Criteria
.
where
(
"dept"
).
is
(
deptId
).
and
(
"tagUser"
).
is
(
userId
)
//标签是普通用户结构且普通用户名创建
JsonNode
node
=
new
JsonNode
(
p
.
getPath
(),
p
.
getId
(),
p
.
getPath
(),
p
.
getIdPath
());
/**,Criteria.where("path").regex("^"+companyPath + Constants.TAG_PATH_SEPARATOR)
nodes
.
add
(
node
);
.and("isOpen").is(Constants.TAG_OPEN_STATUS)*/
);
//标签是维度标签路径下的
});
return
Query
.
query
(
criteria
)
JsonNode
root
=
JsonTreeHelper
.
toJsonTree
(
nodes
,
Constants
.
TAG_PATH_SEPARATOR
);
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
if
(
root
.
children
!=
null
)
}
return
root
.
children
;
//根据父标签查找子标签
else
private
List
<
Tag
>
getNewPersonSubTag
(
Tag
parentTag
,
String
userId
,
String
deptId
,
return
new
JsonNode
[]
{};
String
companyId
)
{
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
)
public
Page
searchPersonalDimensionTagByPage
(
String
userName
,
String
dept
,
String
keyword
,
String
path
,
Integer
domain
,
Page
page
)
{
.
orOperator
(
Criteria
andCriterias
=
createPersonalDimensionTagCriteria
(
userName
,
dept
);
Criteria
.
where
(
"dept"
).
is
(
companyId
),
//标签是维度管理员机构的
if
(
StringUtils
.
isNotBlank
(
keyword
)
&&
!
"*"
.
equals
(
keyword
))
{
Criteria
.
where
(
"dept"
).
is
(
deptId
).
and
(
"tagUser"
).
is
(
userId
)
//标签是普通用户结构且普通用户名创建
andCriterias
.
andOperator
(
createKeywordRegexQuery
(
Arrays
.
asList
(
"name"
,
"nameEn"
,
"desc"
),
keyword
));
)).
with
(
Sort
.
by
(
getDefaultTagOrders
())),
Tag
.
class
);
}
dirs
.
add
(
parentTag
);
Query
q
=
createPageQuery
(
page
,
andCriterias
);
return
dirs
;
List
<
Tag
>
tags
=
mongoOperations
.
find
(
q
,
Tag
.
class
);
}
long
count
=
mongoOperations
.
count
(
q
,
Tag
.
class
);
//拼接关键子查询字段
page
.
setData
(
decoratorToExtTag
(
tags
,
userName
));
private
Criteria
createKeywordRegexQuery
(
List
<
String
>
asList
,
String
keyword
)
{
page
.
setTotal
(
count
);
Criteria
criteriaSearch
=
new
Criteria
();
return
page
;
return
criteriaSearch
.
orOperator
(
asList
.
stream
().
map
(
col
->
{
return
Criteria
.
where
(
col
).
regex
(
keyword
,
"i"
);
}
}).
collect
(
Collectors
.
toList
()).
toArray
(
new
Criteria
[
0
]));
}
public
List
<
SysTag
>
listSysTags
()
{
//拼接根据机构id查询个人维度标签
return
mongoOperations
.
findAll
(
SysTag
.
class
);
private
Criteria
createPersonalDimensionTagCriteria
(
String
userName
,
String
dept
)
{
}
return
Criteria
.
where
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
.
and
(
"dept"
).
is
(
dept
).
and
(
"dimensionType"
).
is
(
Constants
.
TAG_DIMENSION_TRUE
);
public
SysTag
getSystemByCode
(
String
code
)
{
}
return
mongoOperations
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"systemCode"
).
is
(
code
)),
SysTag
.
class
);
//拼接查找系统标签条件
}
private
Criteria
createSystemTagCriteria
(
String
path
)
{
Criteria
criteria
=
Criteria
.
where
(
"tagType"
).
is
(
Constants
.
TAG_SYSTEM_TYPE
);
public
SysTag
updateSystemExtractInfo
(
String
code
,
boolean
hasExtract
,
int
tableNum
,
int
columnNum
)
throws
TagNotExistException
{
if
(
StringUtils
.
isNotBlank
(
path
))
{
SysTag
sysTag
=
mongoOperations
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"systemCode"
).
is
(
code
)),
SysTag
.
class
);
return
criteria
.
and
(
"path"
).
regex
(
"^"
+
path
);
if
(
sysTag
==
null
)
{
}
throw
new
TagNotExistException
(
String
.
format
(
"编码[为%s]的系统不存在"
,
code
));
return
criteria
;
}
}
sysTag
.
setHasExtract
(
hasExtract
);
//拼接分页查找条件
sysTag
.
setTableNum
(
tableNum
);
private
Query
createPageQuery
(
Page
page
,
Criteria
andCriterias
)
{
sysTag
.
setColumnNum
(
columnNum
);
Query
q
=
new
Query
(
andCriterias
);
mongoOperations
.
save
(
sysTag
);
q
.
skip
(
page
.
getOffset
());
return
sysTag
;
q
.
limit
(
page
.
getPageSize
());
}
q
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
return
q
;
}
}
//根据用户id标识该标签能否被操作
private
List
<
ExtTag
>
decoratorToExtTag
(
List
<
Tag
>
tags
,
String
userName
)
{
return
tags
.
stream
().
map
(
t
->
{
return
new
ExtTag
(
t
,
/**t.getCreator()*/
t
.
getTagUser
().
equals
(
userName
)
?
Constants
.
TAG_OPERABLE_TRUE
:
Constants
.
TAG_OPERABLE_FALSE
);
}).
collect
(
Collectors
.
toList
());
}
//拼接个人标签查询条件
private
Criteria
createPersonalTagCriteria
(
String
userName
,
String
dept
,
String
path
)
{
Criteria
criteria
=
Criteria
.
where
(
"tagType"
).
is
(
Constants
.
TAG_PERSONAL_TYPE
)
.
and
(
"dept"
).
is
(
dept
).
and
(
"tagUser"
).
is
(
userName
);
if
(
StringUtils
.
isNotBlank
(
path
))
{
criteria
=
criteria
.
and
(
"path"
).
regex
(
"^"
+
path
);;
}
return
criteria
/**.orOperator(
Criteria.where("dimensionType").is(Constants.TAG_DIMENSION_TRUE),
Criteria.where("isOpen").is(Constants.TAG_OPEN_STATUS),
Criteria.where("creator").is(userName))*/
;
}
//拼接查询当前系统标签子标签条件
private
List
<
Tag
>
getSystemSubTag
(
Tag
parentTag
)
{
List
<
Tag
>
dirs
=
mongoOperations
.
find
(
new
Query
().
addCriteria
(
Criteria
.
where
(
"path"
)
.
regex
(
"^"
+
parentTag
.
getPath
()
+
Constants
.
TAG_PATH_SEPARATOR
)
.
and
(
"tagType"
).
is
(
Constants
.
TAG_SYSTEM_TYPE
))
.
with
(
Sort
.
by
(
getDefaultTagOrders
())),
Tag
.
class
);
dirs
.
add
(
parentTag
);
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
))
.
with
(
Sort
.
by
(
getDefaultTagOrders
()));
}
// public JsonNode[] queryPersonalTagAsTree(String parentId, String userName, String dept) throws TagNotExistException {
// List<Tag> tags = new ArrayList<>();
// if (StringUtils.isEmpty(parentId)) {
// tags = mongoOperations.find(createPersonalTagQuery(userName, dept), 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());
// nodes.add(node);
// });
// JsonNode root = JsonTreeHelper.toJsonTree(nodes, Constants.TAG_PATH_SEPARATOR);
// if (root.children != null)
// return root.children;
// else
// return new JsonNode[] {};
// }
private
Query
createPersonalTagQuery
(
String
userName
,
String
dept
,
Criteria
...
serachCriterias
)
{
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
void
shareTags
(
List
<
String
>
tagIds
)
{
Iterable
<
Tag
>
tags
=
tagRepository
.
findAllById
(
tagIds
);
tags
.
forEach
(
t
->
{
t
.
setIsOpen
(
Constants
.
TAG_OPEN_STATUS
);
});
tagRepository
.
saveAll
(
tags
);
}
public
List
<
SysTag
>
listSysTags
()
{
return
mongoOperations
.
findAll
(
SysTag
.
class
);
}
public
SysTag
getSystemByCode
(
String
code
)
{
return
mongoOperations
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"systemCode"
).
is
(
code
)),
SysTag
.
class
);
}
public
SysTag
updateSystemExtractInfo
(
String
code
,
boolean
hasExtract
,
int
tableNum
,
int
columnNum
)
throws
TagNotExistException
{
SysTag
sysTag
=
mongoOperations
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"systemCode"
).
is
(
code
)),
SysTag
.
class
);
if
(
sysTag
==
null
)
{
throw
new
TagNotExistException
(
String
.
format
(
"编码[为%s]的系统不存在"
,
code
));
}
sysTag
.
setHasExtract
(
hasExtract
);
sysTag
.
setTableNum
(
tableNum
);
sysTag
.
setColumnNum
(
columnNum
);
mongoOperations
.
save
(
sysTag
);
return
sysTag
;
}
}
src/main/java/com/keymobile/tagmanager/util/UserInfoUtils.java
View file @
10ed975e
package
com
.
keymobile
.
tagmanager
.
util
;
package
com
.
keymobile
.
tagmanager
.
util
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Set
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.security.core.GrantedAuthority
;
import
org.springframework.security.core.context.SecurityContextHolder
;
import
org.springframework.security.core.context.SecurityContextHolder
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.security.core.userdetails.UserDetails
;
...
@@ -38,10 +43,6 @@ public class UserInfoUtils {
...
@@ -38,10 +43,6 @@ public class UserInfoUtils {
return
domainIds
;
return
domainIds
;
}
}
public
static
String
getUserName
()
{
return
SecurityContextHolder
.
getContext
().
getAuthentication
().
getName
().
split
(
":"
)[
0
];
}
public
static
String
getUserCompanyIdPath
()
{
public
static
String
getUserCompanyIdPath
()
{
if
(
SecurityContextHolder
.
getContext
().
getAuthentication
().
getName
().
split
(
":"
).
length
>
5
)
{
if
(
SecurityContextHolder
.
getContext
().
getAuthentication
().
getName
().
split
(
":"
).
length
>
5
)
{
String
deptIdPath
=
SecurityContextHolder
.
getContext
().
getAuthentication
().
getName
().
split
(
":"
)[
5
];
String
deptIdPath
=
SecurityContextHolder
.
getContext
().
getAuthentication
().
getName
().
split
(
":"
)[
5
];
...
@@ -67,8 +68,34 @@ public class UserInfoUtils {
...
@@ -67,8 +68,34 @@ public class UserInfoUtils {
// return SecurityContextHolder.getContext().getAuthentication().getName().split(":")[5];
// return SecurityContextHolder.getContext().getAuthentication().getName().split(":")[5];
// }
// }
public
static
Integer
getUserId
()
{
//author:zhangkb time:2020-1-6 desc:添加标签用到获取session属性接口
return
Integer
.
valueOf
(
SecurityContextHolder
.
getContext
().
getAuthentication
().
getName
().
split
(
":"
)[
1
]);
public
static
String
getUserName
()
{
return
SecurityContextHolder
.
getContext
().
getAuthentication
().
getName
().
split
(
":"
)[
0
];
}
public
static
String
getUserId
()
{
return
SecurityContextHolder
.
getContext
().
getAuthentication
().
getName
().
split
(
":"
)[
1
];
}
}
//获取当前用户所属机构(id:name)
public
static
String
[]
getUserOrg
()
{
GrantedAuthority
userOrg
=
SecurityContextHolder
.
getContext
().
getAuthentication
().
getAuthorities
().
stream
()
.
filter
(
auth
->
auth
.
getAuthority
().
contains
(
"USER_ORG_"
)).
findFirst
().
get
();
if
(
userOrg
==
null
)
{
return
null
;
}
else
{
String
[]
userOrgParts
=
userOrg
.
getAuthority
().
split
(
":"
);
return
new
String
[]
{
userOrgParts
[
0
].
substring
(
"USER_ORG_"
.
length
()),
userOrgParts
[
1
]
};
}
}
public
static
String
getDataRoleOrg
()
{
GrantedAuthority
dataRoleOrg
=
SecurityContextHolder
.
getContext
().
getAuthentication
().
getAuthorities
().
stream
()
.
filter
(
auth
->
auth
.
getAuthority
().
contains
(
"USER_DATA_ROLE_ORG_"
)).
findFirst
().
get
();
if
(
dataRoleOrg
==
null
)
{
return
null
;
}
else
{
return
dataRoleOrg
.
getAuthority
().
substring
(
"USER_DATA_ROLE_ORG_"
.
length
());
}
}
}
}
src/main/resources/application-test.yml
0 → 100644
View file @
10ed975e
mongodb
:
database
:
tagManagerCGN_dev
uri
:
dev-vm-00:27017
username
:
root
password
:
dataPlatform
maxConnectionIdleTime
:
120000
eureka
:
client
:
registryFetchIntervalSeconds
:
5
region
:
default
serviceUrl
:
defaultZone
:
http://dev-vm-22:8081/eureka/
instance
:
prefer-ip-address
:
false
hostname
:
192.168.0.109
spring
:
application
:
name
:
tagManager
session
:
store-type
:
redis
redis
:
namespace
:
cgn2
redis
:
host
:
dev-vm-00
port
:
6379
datasource
:
url
:
jdbc:mysql://dev-vm-00:3306/cgn2_dev?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
username
:
test
password
:
test
hikari
:
maximum-pool-size
:
3
server
:
port
:
8072
#security permit true :permitAll ;flase:authenticated
security
:
authUser
:
root
authPwd
:
pwd
permit
:
false
feign
:
client
:
config
:
default
:
ReadTimeout
:
30000
ConnectTimeout
:
30000
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