提交 d463d87e authored 作者: 马晨俊's avatar 马晨俊

Merge branch 'master' of git.yfzx.zjtys.com.cn:912-system/monitor/inspect

# Conflicts: # src/main/java/com/zjty/inspect/dao/TechnologyDao.java
上级 f349f5ad
......@@ -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);
}
......
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;
/**
* 报告
......
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();
}
......@@ -29,10 +29,7 @@ public class Rule {
@Id
@Column(length = 48)
private String id;
/**
* 关键技术名称
*/
private String technologyName;
/**
* 目标关键字
*/
......
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>> ruleSuffixMap = new HashMap<>();
private Map<String, List<Rule>> ruleSuffixList = new HashMap<>();
private Map<String, List<Path>> ruleSuffixFileMap;
private Map<String, List<Rule>> ruleSuffixMap;
/**
* 规则关联的技术
* 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 : ruleSuffixFileMap.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);
ruleSuffixFileMap.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 : ruleSuffixFileMap.entrySet()) {
//entry,key为后缀,value为文件列表
String key = entry.getKey();
//从ruleSuffixList获取指定后缀的规则列表
List<Rule> rules = ruleSuffixList.get(key);
List<Rule> rules = ruleSuffixMap.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 {
......
......@@ -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;
}
}
......@@ -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);
......
......@@ -94,10 +94,19 @@ public class task implements CommandLineRunner {
coefficientMode5.setMediumCoefficient(0D);
coefficientMode5.setTopCoefficient(0D);
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(0D);
coefficientMode7.setTopCoefficient(0D);
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(0D);
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(0D);
coefficientMode7.setTopCoefficient(0D);
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(0D);
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(0D);
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(0D);
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);
}
}
......@@ -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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论