Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
I
inspect
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
912协同工作系统
项目监控管理工具
inspect
Commits
d463d87e
提交
d463d87e
authored
3月 04, 2020
作者:
马晨俊
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Merge branch 'master' of git.yfzx.zjtys.com.cn:912-system/monitor/inspect
# Conflicts: # src/main/java/com/zjty/inspect/dao/TechnologyDao.java
上级
f349f5ad
显示空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
264 行增加
和
160 行删除
+264
-160
InspectController.java
...n/java/com/zjty/inspect/controller/InspectController.java
+20
-8
Report.java
src/main/java/com/zjty/inspect/entity/Report.java
+0
-4
ReportVo.java
src/main/java/com/zjty/inspect/entity/ReportVo.java
+25
-0
Rule.java
src/main/java/com/zjty/inspect/entity/Rule.java
+1
-4
Inspector.java
src/main/java/com/zjty/inspect/inspect/Inspector.java
+120
-84
InspectServiceImpl.java
...ava/com/zjty/inspect/service/impl/InspectServiceImpl.java
+2
-1
RuleServiceImpl.java
...n/java/com/zjty/inspect/service/impl/RuleServiceImpl.java
+0
-2
task.java
src/main/java/com/zjty/inspect/task/task.java
+85
-54
BudgetUitl.java
src/main/java/com/zjty/inspect/utils/BudgetUitl.java
+11
-3
没有找到文件。
src/main/java/com/zjty/inspect/controller/InspectController.java
浏览文件 @
d463d87e
...
...
@@ -34,10 +34,16 @@ public class InspectController {
/**
* 上传代码进行评估
* @param years
* @param systemFund
* @param modules
* @param multfile
* @param years 系统开发时间
* @param systemFund 系统开发费用
* @param modules 模块数
* @param valid 预算数据是否可用
* @param framework 架构
* @param safety 安全能力
* @param disaster 容灾能力
* @param data 数据量
* @param admin 是否管理员
* @param multfile 文件
* @return
* @throws IOException
*/
...
...
@@ -45,7 +51,7 @@ public class InspectController {
@ApiOperation
(
"上传代码进行评估"
)
public
ResponseEntity
inspect
(
Integer
years
,
Integer
systemFund
,
Integer
modules
,
String
valid
,
Double
framework
,
Double
safety
,
Double
disaster
,
Integer
data
,
Integer
admin
,
MultipartFile
multfile
)
throws
IOException
{
,
Integer
admin
,
String
projectName
,
String
fileName
,
MultipartFile
multfile
)
throws
IOException
{
File
file
=
FileUtil
.
saveToLocal
(
multfile
);
InspectParameter
inspectParameter
=
new
InspectParameter
();
...
...
@@ -62,6 +68,9 @@ public class InspectController {
inspectParameter
.
setPath
(
file
.
getCanonicalPath
());
inspectParameter
.
setId
(
UUIDUtil
.
getUUID
());
ReportVo
reportVo
=
new
ReportVo
();
reportVo
.
setUploadType
(
"文件上传"
);
reportVo
.
setFileName
(
fileName
);
reportVo
.
setProjectName
(
projectName
);
reportVo
.
setSourceAddress
(
file
.
getCanonicalPath
());
ReportVo
inspect
=
inspectService
.
inspect
(
reportVo
,
inspectParameter
);
return
ResponseEntity
.
ok
(
inspect
);
...
...
@@ -77,9 +86,12 @@ public class InspectController {
public
ResponseEntity
inspect1
(
@RequestBody
InspectParameter
inspectParameter
){
String
path
=
GitLabUtil
.
downLoadProject
(
inspectParameter
.
getGitAddress
(),
inspectParameter
.
getGitName
());
inspectParameter
.
setId
(
UUIDUtil
.
getUUID
());
ReportVo
report1
=
new
ReportVo
();
report1
.
setSourceAddress
(
path
);
inspectService
.
inspect
(
report1
,
inspectParameter
);
inspectParameter
.
setPath
(
path
);
ReportVo
reportVo
=
new
ReportVo
();
reportVo
.
setUploadType
(
"git下载"
);
reportVo
.
setSourceAddress
(
path
);
reportVo
.
setGitAddress
(
inspectParameter
.
getGitAddress
());
inspectService
.
inspect
(
reportVo
,
inspectParameter
);
return
ResponseEntity
.
ok
(
200
);
}
...
...
src/main/java/com/zjty/inspect/entity/Report.java
浏览文件 @
d463d87e
package
com
.
zjty
.
inspect
.
entity
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.zjty.inspect.utils.Inspector
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
...
...
@@ -10,8 +8,6 @@ import org.hibernate.annotations.GenerationTime;
import
javax.persistence.*
;
import
java.sql.Timestamp
;
import
java.util.Date
;
import
java.util.List
;
/**
* 报告
...
...
src/main/java/com/zjty/inspect/entity/ReportVo.java
浏览文件 @
d463d87e
package
com
.
zjty
.
inspect
.
entity
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
javax.persistence.Column
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
...
...
@@ -12,6 +14,18 @@ import java.util.List;
@Data
public
class
ReportVo
{
/**
* 文件名称
*/
private
String
fileName
;
/**
* 项目名称
*/
private
String
projectName
;
/**
* 上传类型
*/
private
String
uploadType
;
/**
* git源代码地址
*/
...
...
@@ -27,6 +41,11 @@ public class ReportVo {
*/
private
String
manager
;
/**
* 数据库类型
*/
private
String
databaseType
;
/**
* 语言
*/
...
...
@@ -69,4 +88,10 @@ public class ReportVo {
* 告警点
*/
private
HashMap
<
String
,
List
<
Warn
>>
warnDetails
;
/**
* 评估时间
*/
@JsonFormat
(
pattern
=
"YYYY-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
createDate
=
new
Date
();
}
src/main/java/com/zjty/inspect/entity/Rule.java
浏览文件 @
d463d87e
...
...
@@ -29,10 +29,7 @@ public class Rule {
@Id
@Column
(
length
=
48
)
private
String
id
;
/**
* 关键技术名称
*/
private
String
technologyName
;
/**
* 目标关键字
*/
...
...
src/main/java/com/zjty/inspect/
utils
/Inspector.java
→
src/main/java/com/zjty/inspect/
inspect
/Inspector.java
浏览文件 @
d463d87e
package
com
.
zjty
.
inspect
.
utils
;
package
com
.
zjty
.
inspect
.
inspect
;
import
com.zjty.inspect.dao.*
;
import
com.zjty.inspect.entity.*
;
import
com.zjty.inspect.utils.*
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
...
...
@@ -11,7 +12,6 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
java.io.IOException
;
import
java.nio.charset.MalformedInputException
;
import
java.nio.file.*
;
import
java.nio.file.attribute.BasicFileAttributes
;
import
java.util.*
;
...
...
@@ -25,8 +25,9 @@ import java.util.stream.Collectors;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Service
@Service
(
"property"
)
@Slf4j
@Transactional
()
public
class
Inspector
{
@Autowired
...
...
@@ -49,7 +50,10 @@ public class Inspector {
/**
* 添加规则时去重使用
* key:mysql-connect:*
* key:mysql-connect : *
* mysql-connect:*
* mysql-connect:.java
*
* value:随意
*/
private
HashMap
<
String
,
Rule
>
ruleMap
=
new
HashMap
<>();
...
...
@@ -57,16 +61,16 @@ public class Inspector {
/**
* 支持的国产化技术
*/
Technology
techJavaSupport
;
private
Technology
techJavaSupport
;
/**
* 不支持的国产化技术
*/
Technology
techNotCnSupport
;
private
Technology
techNotCnSupport
;
/**
* 未知依赖
*/
Technology
techUnKnowSupport
;
private
Technology
techUnKnowSupport
;
/**
* 计算预算的参数对象
*/
...
...
@@ -103,9 +107,14 @@ public class Inspector {
private
Map
<
String
,
List
<
Path
>>
configFileTypePathsMapping
=
new
HashMap
<>();
private
Map
<
String
,
List
<
Path
>>
ruleSuffix
Map
=
new
HashMap
<>()
;
private
Map
<
String
,
List
<
Rule
>>
ruleSuffix
List
=
new
HashMap
<>()
;
private
Map
<
String
,
List
<
Path
>>
ruleSuffix
FileMap
;
private
Map
<
String
,
List
<
Rule
>>
ruleSuffix
Map
;
/**
* 规则关联的技术
* key:技术id
* value:Technology
*/
private
Map
<
String
,
Technology
>
technologyHashMap
=
new
HashMap
<>();
/**
...
...
@@ -118,47 +127,18 @@ public class Inspector {
* @return 报告
*/
public
ReportVo
inspect
()
{
ruleSuffixFileMap
=
new
HashMap
<>();
ruleSuffixMap
=
new
HashMap
<>();
warns
.
clear
();
rules
.
clear
();
//查询技术,构造支持与非支持技术对象
techJavaSupport
=
technologyDao
.
findAllByTechnologyNameEquals
(
"Java依赖"
);
techNotCnSupport
=
technologyDao
.
findAllByTechnologyNameEquals
(
"非国产化依赖"
);
techUnKnowSupport
=
technologyDao
.
findAllByTechnologyNameEquals
(
"未知依赖"
);
findExistTechnology
();
//统计项目组成文件构成
for
(
String
languageName
:
suffixLanguageMapping
.
keySet
())
{
//配置如:java,0
languageMatchMap
.
put
(
languageName
,
new
Counter
());
}
//统计文件地址
this
.
configFileTypePathsMapping
=
new
HashMap
<>();
configFileTypePathsMapping
.
put
(
"xml"
,
new
ArrayList
<>());
configFileTypePathsMapping
.
put
(
"json"
,
new
ArrayList
<>());
configFileTypePathsMapping
.
put
(
"gradle"
,
new
ArrayList
<>());
configFileTypePathsMapping
.
put
(
"properties"
,
new
ArrayList
<>());
configFileTypePathsMapping
.
put
(
"yml"
,
new
ArrayList
<>());
statisticsLanguage
();
//统计配置文件地址
statisticsConfigFile
();
//查询所有规则
this
.
ruleList
=
ruleDao
.
findAll
();
Set
<
String
>
id
=
ruleList
.
stream
().
map
(
Rule:
:
getTechnologyId
).
collect
(
Collectors
.
toSet
());
List
<
Technology
>
technologies
=
technologyDao
.
findAllByIdIn
(
new
ArrayList
<>(
id
));
for
(
Technology
technology
:
technologies
)
{
technologyHashMap
.
put
(
technology
.
getId
(),
technology
);
}
for
(
Rule
rule
:
ruleList
)
{
if
(!
ruleSuffixMap
.
containsKey
(
rule
.
getSuffix
()))
{
//用于存储各种后缀的文件集合
ruleSuffixMap
.
put
(
rule
.
getSuffix
(),
new
ArrayList
<>());
//将每个后缀的规则分类
//key:规则后缀
//value:规则集合
ruleSuffixList
.
put
(
rule
.
getSuffix
(),
new
ArrayList
<>());
ruleSuffixList
.
get
(
rule
.
getSuffix
()).
add
(
rule
);
}
else
{
ruleSuffixList
.
get
(
rule
.
getSuffix
()).
add
(
rule
);
}
//规则添加时去重使用,mysql-connect:*
ruleMap
.
put
(
rule
.
getTarget
()
+
":"
+
rule
.
getSuffix
(),
rule
);
}
ruleTransform
();
try
{
//以下为计算文件名称匹配正则表达式
FileSystem
aDefault
=
FileSystems
.
getDefault
();
...
...
@@ -174,7 +154,7 @@ public class Inspector {
}
//构造规则后缀的正则表达式
Map
<
PathMatcher
,
String
>
ruleSuffix
=
new
HashMap
<>(
16
);
for
(
String
s
:
ruleSuffixMap
.
keySet
())
{
for
(
String
s
:
ruleSuffix
File
Map
.
keySet
())
{
ruleSuffix
.
put
(
aDefault
.
getPathMatcher
(
"glob:**/*."
+
s
),
s
);
}
//文件读取
...
...
@@ -205,7 +185,7 @@ public class Inspector {
for
(
Map
.
Entry
<
PathMatcher
,
String
>
entry
:
ruleSuffix
.
entrySet
())
{
//通过规则匹配后缀正则表达式匹配,记录匹配上的文件地址
if
(
entry
.
getKey
().
matches
(
file
))
{
ruleSuffixMap
.
get
(
entry
.
getValue
()).
add
(
file
);
ruleSuffix
File
Map
.
get
(
entry
.
getValue
()).
add
(
file
);
}
}
//检查到普通jar包
...
...
@@ -218,6 +198,7 @@ public class Inspector {
PomDependency
pomDependency
=
new
PomDependency
();
pomDependency
.
setArtifactId
(
split
[
0
]);
projectPom
.
getDependencies
().
add
(
pomDependency
);
// TODO: 2020-03-04 界定rule唯一,修改数据,一条数据绑定两种技术
//当参数为1时代表上传者管理员,代码可绝对信任,将jar名称当作可支持依赖添加进规则库中
if
(
inspectParameter
.
getAdmin
()
==
1
)
{
//新建规则对象
...
...
@@ -229,6 +210,7 @@ public class Inspector {
rule
.
setSuffix
(
"*"
);
rule
.
setId
(
UUIDUtil
.
getUUID
());
//做规则查询,不用去数据库查询
if
(!
ruleMap
.
containsKey
(
split
[
0
]
+
":"
+
rule
.
getSuffix
()))
{
rules
.
add
(
rule
);
ruleMap
.
put
(
split
[
0
]
+
":"
+
rule
.
getSuffix
(),
rule
);
...
...
@@ -263,32 +245,14 @@ public class Inspector {
}
/**
*
构成报告所需要到
数据
*
解析
数据
*
* @return Report
*/
@Transactional
public
ReportVo
analysis
()
{
DependencyVo
dependencyVo
=
new
DependencyVo
();
String
most
=
null
;
int
maxnum
=
0
;
//统计文件最多的
for
(
Map
.
Entry
<
String
,
Counter
>
entry
:
languageMatchMap
.
entrySet
())
{
if
(
entry
.
getValue
().
getNumber
()
>
maxnum
)
{
most
=
suffixLanguageMapping
.
get
(
entry
.
getKey
()).
name
();
maxnum
=
entry
.
getValue
().
getNumber
();
}
}
//设置语言
report
.
setLanguage
(
most
==
null
?
Report
.
Language
.
UNKNOW
.
name
()
:
most
);
//设置架构
report
.
setFramework
(
languageMatchMap
.
get
(
"jsp"
).
i
>
0
?
"混合型架构"
:
"分离型架构"
);
//设置是否需要重构
if
(
languageMatchMap
.
get
(
"jsp"
).
i
==
0
&
languageMatchMap
.
get
(
"java"
).
i
==
0
)
{
report
.
setRecastMethod
(
"建议重构"
);
}
else
{
report
.
setRecastMethod
(
"建议适配"
);
}
setReportLanguageAndFrame
();
//解析配置文件集合
for
(
Map
.
Entry
<
String
,
List
<
Path
>>
entry
:
configFileTypePathsMapping
.
entrySet
())
{
switch
(
entry
.
getKey
())
{
...
...
@@ -330,20 +294,17 @@ public class Inspector {
}
}
//指定后缀到文件匹配关键字
for
(
Map
.
Entry
<
String
,
List
<
Path
>>
entry
:
ruleSuffixMap
.
entrySet
())
{
for
(
Map
.
Entry
<
String
,
List
<
Path
>>
entry
:
ruleSuffix
File
Map
.
entrySet
())
{
//entry,key为后缀,value为文件列表
String
key
=
entry
.
getKey
();
//从ruleSuffixList获取指定后缀的规则列表
List
<
Rule
>
rules
=
ruleSuffix
List
.
get
(
key
);
List
<
Rule
>
rules
=
ruleSuffix
Map
.
get
(
key
);
for
(
Path
path1
:
entry
.
getValue
())
{
try
{
//如果文件类型为jar活着class则不读取
if
(
path1
.
toAbsolutePath
().
toString
().
endsWith
(
"jar"
)
||
path1
.
toAbsolutePath
().
toString
().
endsWith
(
"class"
))
{
continue
;
}
if
(
path1
.
toAbsolutePath
().
toString
().
endsWith
(
"xml"
))
{
System
.
out
.
println
(
"d"
);
}
//将文件的每一行都与规则匹配
List
<
String
>
strings
=
Files
.
readAllLines
(
path1
);
for
(
int
i
=
0
;
i
<
strings
.
size
();
i
++)
{
...
...
@@ -357,12 +318,11 @@ public class Inspector {
//将得到的告警信息根据技术id进行转换
Set
<
String
>
collect
=
warns
.
stream
().
map
(
Warn:
:
getTechnologyId
).
collect
(
Collectors
.
toSet
());
List
<
Technology
>
allById
=
technologyDao
.
findAllById
(
collect
);
Integer
fund
=
0
;
//计算技术金额
Integer
fund
=
0
;
for
(
Technology
tech
:
allById
)
{
fund
+=
tech
.
getFund
();
}
//计算预算
if
(
inspectParameter
.
getValid
()
!=
null
)
{
List
<
Budget
>
budget
=
budgetUitl
.
getBudget
(
fund
,
inspectParameter
);
...
...
@@ -381,6 +341,84 @@ public class Inspector {
for
(
Technology
technology1
:
allById
)
{
map
.
put
(
technology1
.
getId
(),
technology1
);
}
HashMap
<
String
,
List
<
Warn
>>
warnMap
=
getWarnMap
(
map
);
ruleDao
.
saveAll
(
rules
);
report
.
setWarnDetails
(
warnMap
);
return
report
;
}
private
void
setReportLanguageAndFrame
()
{
String
most
=
null
;
int
maxnum
=
0
;
//统计文件最多的
for
(
Map
.
Entry
<
String
,
Counter
>
entry
:
languageMatchMap
.
entrySet
())
{
if
(
entry
.
getValue
().
getNumber
()
>
maxnum
)
{
most
=
suffixLanguageMapping
.
get
(
entry
.
getKey
()).
name
();
maxnum
=
entry
.
getValue
().
getNumber
();
}
}
//设置语言
report
.
setLanguage
(
most
==
null
?
Report
.
Language
.
UNKNOW
.
name
()
:
most
);
//设置架构
report
.
setFramework
(
languageMatchMap
.
get
(
"jsp"
).
i
>
0
?
"混合型架构"
:
"分离型架构"
);
//设置是否需要重构
if
(
languageMatchMap
.
get
(
"jsp"
).
i
==
0
&
languageMatchMap
.
get
(
"java"
).
i
==
0
)
{
report
.
setRecastMethod
(
"建议重构"
);
}
else
{
report
.
setRecastMethod
(
"建议适配"
);
}
}
/**
* rule所需要数据装配
*/
private
void
ruleTransform
()
{
this
.
ruleList
=
ruleDao
.
findAll
();
Set
<
String
>
id
=
ruleList
.
stream
().
map
(
Rule:
:
getTechnologyId
).
collect
(
Collectors
.
toSet
());
List
<
Technology
>
technologies
=
technologyDao
.
findAllByIdIn
(
new
ArrayList
<>(
id
));
for
(
Technology
technology
:
technologies
)
{
technologyHashMap
.
put
(
technology
.
getId
(),
technology
);
}
//根据后缀名,收集文件进行操作
for
(
Rule
rule
:
ruleList
)
{
if
(!
ruleSuffixFileMap
.
containsKey
(
rule
.
getSuffix
()))
{
ruleSuffixFileMap
.
put
(
rule
.
getSuffix
(),
new
ArrayList
<>());
}
}
//根据后缀名进行规则收集
for
(
Rule
rule
:
ruleList
)
{
if
(!
ruleSuffixMap
.
containsKey
(
rule
.
getSuffix
())){
ruleSuffixMap
.
put
(
rule
.
getSuffix
(),
new
ArrayList
<>());
ruleSuffixMap
.
get
(
rule
.
getSuffix
()).
add
(
rule
);
}
else
{
ruleSuffixMap
.
get
(
rule
.
getSuffix
()).
add
(
rule
);
}
}
}
private
void
statisticsConfigFile
()
{
this
.
configFileTypePathsMapping
=
new
HashMap
<>();
configFileTypePathsMapping
.
put
(
"xml"
,
new
ArrayList
<>());
configFileTypePathsMapping
.
put
(
"json"
,
new
ArrayList
<>());
configFileTypePathsMapping
.
put
(
"gradle"
,
new
ArrayList
<>());
configFileTypePathsMapping
.
put
(
"properties"
,
new
ArrayList
<>());
configFileTypePathsMapping
.
put
(
"yml"
,
new
ArrayList
<>());
}
private
void
statisticsLanguage
()
{
for
(
String
languageName
:
suffixLanguageMapping
.
keySet
())
{
//配置如:java,0
languageMatchMap
.
put
(
languageName
,
new
Counter
());
}
}
private
void
findExistTechnology
()
{
techJavaSupport
=
technologyDao
.
findAllByTechnologyNameEquals
(
"Java依赖"
);
techNotCnSupport
=
technologyDao
.
findAllByTechnologyNameEquals
(
"非国产化依赖"
);
techUnKnowSupport
=
technologyDao
.
findAllByTechnologyNameEquals
(
"未知依赖"
);
}
private
HashMap
<
String
,
List
<
Warn
>>
getWarnMap
(
HashMap
<
String
,
Technology
>
map
)
{
HashMap
<
String
,
List
<
Warn
>>
warnMap
=
new
HashMap
<>();
for
(
Warn
warn
:
warns
)
{
if
(!
warnMap
.
containsKey
(
map
.
get
(
warn
.
getTechnologyId
()).
getTechnologyName
()))
{
...
...
@@ -391,9 +429,7 @@ public class Inspector {
warnMap
.
get
(
map
.
get
(
warn
.
getTechnologyId
()).
getTechnologyName
()).
add
(
warn
);
}
}
ruleDao
.
saveAll
(
rules
);
report
.
setWarnDetails
(
warnMap
);
return
report
;
return
warnMap
;
}
/**
...
...
@@ -436,7 +472,7 @@ public class Inspector {
/**
* 将数据与规则进行匹配,得出是否支持
* 将数据与规则进行匹配,得出
当前依赖
是否支持
*
* @param rules 规则
* @param path 匹配的文件
...
...
@@ -446,7 +482,7 @@ public class Inspector {
*/
public
int
valiWarn
(
List
<
Rule
>
rules
,
Path
path
,
String
data
,
int
num
)
{
//默认未知依赖
int
a
=
3
;
int
supportStatus
=
3
;
for
(
Rule
rule
:
rules
)
{
//规则目标字符串为null 或者 空时
if
(
rule
.
getTarget
()
==
null
||
rule
.
getTarget
().
isEmpty
())
{
...
...
@@ -467,14 +503,14 @@ public class Inspector {
if
(
technologyHashMap
.
get
(
rule
.
getTechnologyId
()).
getSupport
()
==
2
)
{
warns
.
add
(
warn
);
//设置a=0代表当前依赖有问题
a
=
2
;
supportStatus
=
2
;
}
else
if
(
technologyHashMap
.
get
(
rule
.
getTechnologyId
()).
getSupport
()
==
3
)
{
warns
.
add
(
warn
);
a
=
3
;
supportStatus
=
3
;
}
}
}
return
a
;
return
supportStatus
;
}
public
class
Counter
{
...
...
src/main/java/com/zjty/inspect/service/impl/InspectServiceImpl.java
浏览文件 @
d463d87e
...
...
@@ -4,7 +4,7 @@ import com.zjty.inspect.entity.InspectParameter;
import
com.zjty.inspect.entity.Report
;
import
com.zjty.inspect.entity.ReportVo
;
import
com.zjty.inspect.service.InspectService
;
import
com.zjty.inspect.
utils
.Inspector
;
import
com.zjty.inspect.
inspect
.Inspector
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -43,6 +43,7 @@ public class InspectServiceImpl implements InspectService {
//需要重构
inspector
.
setSuffixLanguageMapping
(
suffixLanguageMapping
);
ReportVo
report
=
inspector
.
inspect
();
return
report
;
}
}
src/main/java/com/zjty/inspect/service/impl/RuleServiceImpl.java
浏览文件 @
d463d87e
...
...
@@ -39,7 +39,6 @@ public class RuleServiceImpl implements RuleService {
// TODO: 2020-02-27 适配技术与扫描关键字关联
Rule
rule
=
new
Rule
();
rule
.
setTarget
(
ruleQo
.
getTarget
());
rule
.
setTechnologyName
(
ruleQo
.
getTechnologyName
());
rule
.
setSuffix
(
ruleQo
.
getSuffix
());
rule
.
setTechnologyId
(
ruleQo
.
getTechnologyId
());
rule
.
setId
(
UUIDUtil
.
getUUID
());
...
...
@@ -51,7 +50,6 @@ public class RuleServiceImpl implements RuleService {
Rule
rule
=
new
Rule
();
rule
.
setTarget
(
ruleQo
.
getTarget
());
rule
.
setSuffix
(
ruleQo
.
getSuffix
());
rule
.
setTechnologyName
(
ruleQo
.
getTechnologyName
());
rule
.
setTechnologyId
(
ruleQo
.
getTechnologyId
());
rule
.
setId
(
ruleQo
.
getId
());
ruleDao
.
save
(
rule
);
...
...
src/main/java/com/zjty/inspect/task/task.java
浏览文件 @
d463d87e
...
...
@@ -94,10 +94,19 @@ public class task implements CommandLineRunner {
coefficientMode5
.
setMediumCoefficient
(
0
D
);
coefficientMode5
.
setTopCoefficient
(
0
D
);
CoefficientModel
coefficientMode7
=
new
CoefficientModel
();
coefficientMode7
.
setScale
(
3
);
coefficientMode7
.
setId
(
UUIDUtil
.
getUUID
());
coefficientMode7
.
setName
(
"容灾能力"
);
coefficientMode7
.
setMin
(
1
);
coefficientMode7
.
setMax
(
3
);
coefficientMode7
.
setBelowCoefficient
(-
0.1
);
coefficientMode7
.
setMediumCoefficient
(
0
D
);
coefficientMode7
.
setTopCoefficient
(
0
D
);
CoefficientModel
coefficientMode6
=
new
CoefficientModel
();
coefficientMode6
.
setScale
(
3
);
coefficientMode6
.
setId
(
UUIDUtil
.
getUUID
());
coefficientMode6
.
setName
(
"模块"
);
coefficientMode6
.
setName
(
"模块
数
"
);
coefficientMode6
.
setMin
(
4
);
coefficientMode6
.
setMax
(
10
);
coefficientMode6
.
setBelowCoefficient
(-
0.3
);
...
...
@@ -107,7 +116,7 @@ public class task implements CommandLineRunner {
CoefficientModel
coefficientMode8
=
new
CoefficientModel
();
coefficientMode8
.
setScale
(
2
);
coefficientMode8
.
setId
(
UUIDUtil
.
getUUID
());
coefficientMode8
.
setName
(
"模块"
);
coefficientMode8
.
setName
(
"模块
数
"
);
coefficientMode8
.
setMin
(
4
);
coefficientMode8
.
setMax
(
10
);
coefficientMode8
.
setBelowCoefficient
(-
0.3
);
...
...
@@ -117,23 +126,42 @@ public class task implements CommandLineRunner {
CoefficientModel
coefficientMode9
=
new
CoefficientModel
();
coefficientMode9
.
setScale
(
1
);
coefficientMode9
.
setId
(
UUIDUtil
.
getUUID
());
coefficientMode9
.
setName
(
"模块"
);
coefficientMode9
.
setName
(
"模块
数
"
);
coefficientMode9
.
setMin
(
4
);
coefficientMode9
.
setMax
(
10
);
coefficientMode9
.
setBelowCoefficient
(-
0.3
);
coefficientMode9
.
setMediumCoefficient
(
0
D
);
coefficientMode9
.
setTopCoefficient
(
0.3
);
CoefficientModel
coefficientMode7
=
new
CoefficientModel
();
coefficientMode7
.
setScale
(
3
);
coefficientMode7
.
setId
(
UUIDUtil
.
getUUID
());
coefficientMode7
.
setName
(
"容灾能力"
);
coefficientMode7
.
setMin
(
1
);
coefficientMode7
.
setMax
(
3
);
coefficientMode7
.
setBelowCoefficient
(-
0.1
);
coefficientMode7
.
setMediumCoefficient
(
0
D
);
coefficientMode7
.
setTopCoefficient
(
0
D
);
CoefficientModel
coefficientMode10
=
new
CoefficientModel
();
coefficientMode10
.
setScale
(
1
);
coefficientMode10
.
setId
(
UUIDUtil
.
getUUID
());
coefficientMode10
.
setName
(
"数据量"
);
coefficientMode10
.
setMin
(
1
);
coefficientMode10
.
setMax
(
100
);
coefficientMode10
.
setBelowCoefficient
(-
0.05
);
coefficientMode10
.
setMediumCoefficient
(
0
D
);
coefficientMode10
.
setTopCoefficient
(
0.05
);
CoefficientModel
coefficientMode11
=
new
CoefficientModel
();
coefficientMode11
.
setScale
(
2
);
coefficientMode11
.
setId
(
UUIDUtil
.
getUUID
());
coefficientMode11
.
setName
(
"数据量"
);
coefficientMode11
.
setMin
(
1
);
coefficientMode11
.
setMax
(
100
);
coefficientMode11
.
setBelowCoefficient
(-
0.05
);
coefficientMode11
.
setMediumCoefficient
(
0
D
);
coefficientMode11
.
setTopCoefficient
(
0.05
);
CoefficientModel
coefficientMode12
=
new
CoefficientModel
();
coefficientMode12
.
setScale
(
3
);
coefficientMode12
.
setId
(
UUIDUtil
.
getUUID
());
coefficientMode12
.
setName
(
"数据量"
);
coefficientMode12
.
setMin
(
1
);
coefficientMode12
.
setMax
(
100
);
coefficientMode12
.
setBelowCoefficient
(-
0.05
);
coefficientMode12
.
setMediumCoefficient
(
0
D
);
coefficientMode12
.
setTopCoefficient
(
0.05
);
coefficientModels
.
add
(
coefficientMode6
);
coefficientModels
.
add
(
coefficientMode5
);
coefficientModels
.
add
(
coefficientMode4
);
...
...
@@ -143,53 +171,56 @@ public class task implements CommandLineRunner {
coefficientModels
.
add
(
coefficientMode7
);
coefficientModels
.
add
(
coefficientMode8
);
coefficientModels
.
add
(
coefficientMode9
);
coefficientModels
.
add
(
coefficientMode10
);
coefficientModels
.
add
(
coefficientMode11
);
coefficientModels
.
add
(
coefficientMode12
);
coefficientModelDao
.
saveAll
(
coefficientModels
);
Technology
technology
=
new
Technology
();
technology
.
setTechnologyName
(
"Java依赖"
);
technology
.
setAdvice
(
"国产化支持的依赖"
);
technology
.
setFund
(
5
);
technology
.
setId
(
UUIDUtil
.
getUUID
());
technology
.
setSupport
(
1
);
Technology
technology1
=
new
Technology
();
technology1
.
setTechnologyName
(
"非国产化依赖"
);
technology1
.
setSupport
(
2
);
technology1
.
setAdvice
(
"国产化不支持的依赖"
);
technology1
.
setFund
(
5
);
technology1
.
setId
(
UUIDUtil
.
getUUID
());
Technology
technology2
=
new
Technology
();
technology2
.
setTechnologyName
(
"未知依赖"
);
technology2
.
setSupport
(
3
);
technology2
.
setAdvice
(
"未知的依赖"
);
technology2
.
setFund
(
5
);
technology2
.
setId
(
UUIDUtil
.
getUUID
());
Technology
JavaTechnology
=
new
Technology
();
JavaTechnology
.
setTechnologyName
(
"Java依赖"
);
JavaTechnology
.
setAdvice
(
"国产化支持的依赖"
);
JavaTechnology
.
setFund
(
5
);
JavaTechnology
.
setId
(
UUIDUtil
.
getUUID
());
JavaTechnology
.
setSupport
(
1
);
Technology
NotCnTechnology
=
new
Technology
();
NotCnTechnology
.
setTechnologyName
(
"非国产化依赖"
);
NotCnTechnology
.
setSupport
(
2
);
NotCnTechnology
.
setAdvice
(
"国产化不支持的依赖"
);
NotCnTechnology
.
setFund
(
5
);
NotCnTechnology
.
setId
(
UUIDUtil
.
getUUID
());
Technology
UnKnowunTechnology
=
new
Technology
();
UnKnowunTechnology
.
setTechnologyName
(
"未知依赖"
);
UnKnowunTechnology
.
setSupport
(
3
);
UnKnowunTechnology
.
setAdvice
(
"未知的依赖"
);
UnKnowunTechnology
.
setFund
(
5
);
UnKnowunTechnology
.
setId
(
UUIDUtil
.
getUUID
());
Rule
NotCnJavaTechnology
=
new
Rule
();
NotCnJavaTechnology
.
setId
(
UUIDUtil
.
getUUID
());
NotCnJavaTechnology
.
setSuffix
(
"*"
);
NotCnJavaTechnology
.
setTarget
(
"mysql-connect"
);
NotCnJavaTechnology
.
setTechnologyId
(
NotCnTechnology
.
getId
());
Rule
rule
=
new
Rule
();
rule
.
setId
(
UUIDUtil
.
getUUID
());
rule
.
setSuffix
(
"*"
);
rule
.
setTarget
(
"ruleService"
);
rule
.
setTechnologyId
(
technology
.
getId
());
Rule
rule1
=
new
Rule
();
rule1
.
setId
(
UUIDUtil
.
getUUID
());
rule1
.
setSuffix
(
"*"
);
rule1
.
setTarget
(
"mysql-connect"
);
rule1
.
setTechnologyId
(
technology1
.
getId
());
Rule
rule2
=
new
Rule
();
rule2
.
setId
(
UUIDUtil
.
getUUID
());
rule2
.
setSuffix
(
"*"
);
rule2
.
setTarget
(
"mysql-connect"
);
rule2
.
setTechnologyId
(
technology2
.
getId
());
technologyDao
.
save
(
technology
);
technologyDao
.
save
(
technology1
);
technologyDao
.
save
(
technology2
);
rule
.
setTarget
(
"mysql-connect"
);
rule
.
setTechnologyId
(
UnKnowunTechnology
.
getId
());
// Rule UnknowunMysqlRule = new Rule();
// UnknowunMysqlRule.setId(UUIDUtil.getUUID());
// UnknowunMysqlRule.setSuffix("*");
// UnknowunMysqlRule.setTarget("mysql-connect");
// UnknowunMysqlRule.setTechnologyId(UnKnowunTechnology.getId());
technologyDao
.
save
(
JavaTechnology
);
technologyDao
.
save
(
NotCnTechnology
);
technologyDao
.
save
(
UnKnowunTechnology
);
ruleDao
.
save
(
rule
);
ruleDao
.
save
(
rule1
);
ruleDao
.
save
(
rule2
);
ruleDao
.
save
(
NotCnJavaTechnology
);
// ruleDao.save(UnknowunMysqlRule
);
}
}
src/main/java/com/zjty/inspect/utils/BudgetUitl.java
浏览文件 @
d463d87e
...
...
@@ -59,10 +59,10 @@ public class BudgetUitl {
strings
.
add
(
"安全能力"
);
strings
.
add
(
"容灾能力"
);
strings
.
add
(
"架构"
);
strings
.
add
(
"数据量"
);
strings
.
add
(
"模块数"
);
List
<
CoefficientModel
>
nameIn
=
coefficientModelDao
.
findAllByNameIn
(
strings
);
List
<
CoefficientModel
>
collect
=
nameIn
.
stream
().
filter
(
a
->
{
return
a
.
getScale
()
==
scale
;
}).
collect
(
Collectors
.
toList
());
List
<
CoefficientModel
>
collect
=
nameIn
.
stream
().
filter
(
a
->
a
.
getScale
()
==
scale
).
collect
(
Collectors
.
toList
());
for
(
CoefficientModel
model
:
collect
)
{
if
(
"架构"
.
equals
(
model
.
getName
())){
Double
aDouble
=
model
.
countCoefficient
(
inspectParameter
.
getFramework
());
...
...
@@ -75,6 +75,14 @@ public class BudgetUitl {
Double
aDouble
=
model
.
countCoefficient
(
inspectParameter
.
getSafety
());
v1
*=
aDouble
;
}
else
if
(
"数据量"
.
equals
(
model
.
getName
())){
Double
aDouble
=
model
.
countCoefficient
(
Double
.
valueOf
(
inspectParameter
.
getData
()));
v1
*=
aDouble
;
}
else
if
(
"模块数"
.
equals
(
model
.
getName
())){
Double
aDouble
=
model
.
countCoefficient
(
Double
.
valueOf
(
inspectParameter
.
getModules
()));
v1
*=
aDouble
;
}
}
if
(
v
<
v1
){
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论