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

mcj:添加枚举返回,新增系数

上级 0bb0d495
package com.zjty.inspect.controller; package com.zjty.inspect.controller;
import com.zjty.inspect.dao.TechnologyDao;
import com.zjty.inspect.entity.InspectParameter; import com.zjty.inspect.entity.InspectParameter;
import com.zjty.inspect.entity.ReportVo; import com.zjty.inspect.entity.ReportVo;
import com.zjty.inspect.entity.Technology; import com.zjty.inspect.entity.Technology;
import com.zjty.inspect.entity.Warn; import com.zjty.inspect.entity.Warn;
import com.zjty.inspect.service.InspectService; import com.zjty.inspect.service.InspectService;
import com.zjty.inspect.service.TechnologyService;
import com.zjty.inspect.utils.*; import com.zjty.inspect.utils.*;
import freemarker.template.TemplateException; import freemarker.template.TemplateException;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -34,6 +36,8 @@ public class InspectController { ...@@ -34,6 +36,8 @@ public class InspectController {
@Autowired @Autowired
private InspectService inspectService; private InspectService inspectService;
@Autowired
private TechnologyService technologyService;
/** /**
* 上传代码进行评估 * 上传代码进行评估
...@@ -53,8 +57,8 @@ public class InspectController { ...@@ -53,8 +57,8 @@ public class InspectController {
@PostMapping("/path") @PostMapping("/path")
@ApiOperation("上传代码进行评估") @ApiOperation("上传代码进行评估")
public ResponseEntity inspect(Integer years,Integer systemFund,Integer modules public ResponseEntity inspect(Integer years,Integer systemFund,Integer modules
,String valid,Double framework,Double safety,Double disaster,Integer data ,String valid,Integer framework,Integer safety,Integer disaster,Integer data
,Integer admin,String projectName,String fileName, MultipartFile multfile) throws IOException { ,Integer admin,String projectName,Integer tables,String databaseType, MultipartFile multfile) throws IOException {
File file = FileUtil.saveToLocal(multfile); File file = FileUtil.saveToLocal(multfile);
InspectParameter inspectParameter = new InspectParameter(); InspectParameter inspectParameter = new InspectParameter();
...@@ -63,6 +67,7 @@ public class InspectController { ...@@ -63,6 +67,7 @@ public class InspectController {
inspectParameter.setAdmin(admin); inspectParameter.setAdmin(admin);
inspectParameter.setModules(modules); inspectParameter.setModules(modules);
inspectParameter.setSafety(safety); inspectParameter.setSafety(safety);
inspectParameter.setTables(tables);
inspectParameter.setValid(valid); inspectParameter.setValid(valid);
inspectParameter.setYears(years); inspectParameter.setYears(years);
inspectParameter.setDisaster(disaster); inspectParameter.setDisaster(disaster);
...@@ -72,12 +77,15 @@ public class InspectController { ...@@ -72,12 +77,15 @@ public class InspectController {
inspectParameter.setId(UUIDUtil.getUUID()); inspectParameter.setId(UUIDUtil.getUUID());
ReportVo reportVo = new ReportVo(); ReportVo reportVo = new ReportVo();
int count = technologyService.findAllTEchnologyCount();
reportVo.setTechnologiesNum(count);
reportVo.setId(TimeUtil.getNowDate()); reportVo.setId(TimeUtil.getNowDate());
reportVo.setUploadType("文件上传"); reportVo.setUploadType("文件上传");
reportVo.setFileName(fileName); reportVo.setFileName(file.getName());
reportVo.setProjectName(projectName); reportVo.setProjectName(projectName);
reportVo.setSourceAddress(file.getCanonicalPath()); reportVo.setSourceAddress(file.getCanonicalPath());
reportVo.setDatabaseType(databaseType);
ReportVo inspect = inspectService.inspect(reportVo,inspectParameter); ReportVo inspect = inspectService.inspect(reportVo,inspectParameter);
// Map map=new HashMap(); // Map map=new HashMap();
......
...@@ -45,7 +45,7 @@ public class CoefficientModel { ...@@ -45,7 +45,7 @@ public class CoefficientModel {
private Integer scale; private Integer scale;
public Double countCoefficient(Double data) { public Double countCoefficient(Integer data) {
if(data<min){ if(data<min){
return 1+belowCoefficient; return 1+belowCoefficient;
}else if(data>max){ }else if(data>max){
......
...@@ -51,10 +51,20 @@ public class InspectParameter { ...@@ -51,10 +51,20 @@ public class InspectParameter {
* 数据量 * 数据量
*/ */
private Integer data; private Integer data;
/**
* 代码量
*/
private Integer codeSize;
/** /**
* 架构 * 架构
*/ */
private Double framework; private Integer framework;
/**
* 数据库表数量
*/
private Integer tables;
/** /**
* 安全能力 * 安全能力
...@@ -62,7 +72,7 @@ public class InspectParameter { ...@@ -62,7 +72,7 @@ public class InspectParameter {
* 2:弱 * 2:弱
* 3:强 * 3:强
*/ */
private Double safety; private Integer safety;
/** /**
* 容灾 * 容灾
...@@ -70,7 +80,7 @@ public class InspectParameter { ...@@ -70,7 +80,7 @@ public class InspectParameter {
* 2:有0,无-0.05 * 2:有0,无-0.05
* 3:有0,无-0.1 * 3:有0,无-0.1
*/ */
private Double disaster; private Integer disaster;
/** /**
* git地址 * git地址
...@@ -113,4 +123,9 @@ public class InspectParameter { ...@@ -113,4 +123,9 @@ public class InspectParameter {
* 0:否 * 0:否
*/ */
private Integer admin; private Integer admin;
/**
* 方式
*/
private Integer recastMethod;
} }
...@@ -62,8 +62,7 @@ public class ReportVo { ...@@ -62,8 +62,7 @@ public class ReportVo {
* 1:适配 * 1:适配
* 2:重构 * 2:重构
*/ */
@Column(length = 5) private Integer recastMethod;
private String recastMethod;
/** /**
* 源代码地址 * 源代码地址
...@@ -73,7 +72,7 @@ public class ReportVo { ...@@ -73,7 +72,7 @@ public class ReportVo {
/** /**
* 预算详情 * 预算详情
*/ */
private List<Budget> budgets; private BudgetVo budgets;
/** /**
* 依赖 * 依赖
...@@ -85,12 +84,22 @@ public class ReportVo { ...@@ -85,12 +84,22 @@ public class ReportVo {
*/ */
private List<Technology> technologies; private List<Technology> technologies;
private HashMap<String,Technology> technologyNameMap = new HashMap<>();
/** /**
* 告警点 * 告警点
*/ */
private HashMap<String, List<Warn>> warnDetails; private HashMap<String, List<Warn>> warnDetails;
/**
* 关键技术个数
*/
private Integer technologiesNum;
/**
* 需要改造的技术
*/
private Integer technologiesRepair;
/** /**
* 评估时间 * 评估时间
*/ */
......
...@@ -5,6 +5,7 @@ import com.zjty.inspect.entity.*; ...@@ -5,6 +5,7 @@ import com.zjty.inspect.entity.*;
import com.zjty.inspect.enums.DependenceManagement; import com.zjty.inspect.enums.DependenceManagement;
import com.zjty.inspect.enums.Framework; import com.zjty.inspect.enums.Framework;
import com.zjty.inspect.enums.Language; import com.zjty.inspect.enums.Language;
import com.zjty.inspect.enums.RecastMethod;
import com.zjty.inspect.utils.*; import com.zjty.inspect.utils.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
...@@ -79,6 +80,7 @@ public class Inspector { ...@@ -79,6 +80,7 @@ public class Inspector {
*/ */
private InspectParameter inspectParameter; private InspectParameter inspectParameter;
private double codeSize = 0;
/** /**
* 报告对象 * 报告对象
*/ */
...@@ -176,6 +178,8 @@ public class Inspector { ...@@ -176,6 +178,8 @@ public class Inspector {
for (Map.Entry<String, PathMatcher> entry : languageSuffixMatcherMapping.entrySet()) { for (Map.Entry<String, PathMatcher> entry : languageSuffixMatcherMapping.entrySet()) {
//通过正则表达式匹配.java类型后缀文件,并+1 //通过正则表达式匹配.java类型后缀文件,并+1
if (entry.getValue().matches(file)) { if (entry.getValue().matches(file)) {
long length = file.toFile().length();
codeSize+=length/1024;
languageMatchMap.get(entry.getKey()).plus(); languageMatchMap.get(entry.getKey()).plus();
} }
} }
...@@ -246,6 +250,7 @@ public class Inspector { ...@@ -246,6 +250,7 @@ public class Inspector {
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
inspectParameter.setCodeSize((int) codeSize);
return analysis(); return analysis();
} }
...@@ -331,7 +336,7 @@ public class Inspector { ...@@ -331,7 +336,7 @@ public class Inspector {
} }
//计算预算 //计算预算
if (inspectParameter.getValid() != null) { if (inspectParameter.getValid() != null) {
List<Budget> budget = budgetUitl.getBudget(fund, inspectParameter); BudgetVo budget = budgetUitl.getBudget(fund, report, inspectParameter);
report.setBudgets(budget); report.setBudgets(budget);
inspectParameter.setId(UUIDUtil.getUUID()); inspectParameter.setId(UUIDUtil.getUUID());
parameterDao.save(inspectParameter); parameterDao.save(inspectParameter);
...@@ -350,7 +355,6 @@ public class Inspector { ...@@ -350,7 +355,6 @@ public class Inspector {
HashMap<String, List<Warn>> warnMap = getWarnMap(map); HashMap<String, List<Warn>> warnMap = getWarnMap(map);
ruleDao.saveAll(rules); ruleDao.saveAll(rules);
report.setWarnDetails(warnMap); report.setWarnDetails(warnMap);
report.setTechnologyNameMap(map);
return report; return report;
} }
...@@ -373,9 +377,9 @@ public class Inspector { ...@@ -373,9 +377,9 @@ public class Inspector {
report.setFramework(languageMatchMap.get("jsp").i > 0 ? Framework.混合型架构.getStatus() : Framework.分离型架构.getStatus()); report.setFramework(languageMatchMap.get("jsp").i > 0 ? Framework.混合型架构.getStatus() : Framework.分离型架构.getStatus());
//设置是否需要重构 //设置是否需要重构
if (languageMatchMap.get("jsp").i == 0 & languageMatchMap.get("java").i == 0) { if (languageMatchMap.get("jsp").i == 0 & languageMatchMap.get("java").i == 0) {
report.setRecastMethod("建议重构"); report.setRecastMethod(RecastMethod.适配重构.getStatus());
} else { } else {
report.setRecastMethod("建议适配"); report.setRecastMethod(RecastMethod.代码修改.getStatus());
} }
} }
......
...@@ -30,4 +30,10 @@ public interface TechnologyService { ...@@ -30,4 +30,10 @@ public interface TechnologyService {
void update(Technology technology); void update(Technology technology);
Page<Technology> findSearch(Map searchMap, int page, int size); Page<Technology> findSearch(Map searchMap, int page, int size);
/**
* 查询个数
* @return
*/
int findAllTEchnologyCount();
} }
...@@ -27,7 +27,6 @@ public class InspectServiceImpl implements InspectService { ...@@ -27,7 +27,6 @@ public class InspectServiceImpl implements InspectService {
@Autowired @Autowired
Inspector inspector; Inspector inspector;
@Transactional @Transactional
@Override @Override
public ReportVo inspect(ReportVo reportVo,InspectParameter inspectParameter) { public ReportVo inspect(ReportVo reportVo,InspectParameter inspectParameter) {
...@@ -49,6 +48,8 @@ public class InspectServiceImpl implements InspectService { ...@@ -49,6 +48,8 @@ public class InspectServiceImpl implements InspectService {
inspector.setSuffixLanguageMapping(suffixLanguageMapping); inspector.setSuffixLanguageMapping(suffixLanguageMapping);
ReportVo report = inspector.inspect(); ReportVo report = inspector.inspect();
return report; return report;
} }
......
package com.zjty.inspect.utils; package com.zjty.inspect.utils;
import com.zjty.inspect.dao.CoefficientModelDao; import com.zjty.inspect.dao.CoefficientModelDao;
import com.zjty.inspect.entity.Budget; import com.zjty.inspect.entity.*;
import com.zjty.inspect.entity.CoefficientModel;
import com.zjty.inspect.entity.InspectParameter;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -27,12 +25,26 @@ public class BudgetUitl { ...@@ -27,12 +25,26 @@ public class BudgetUitl {
/** /**
* 获取预算数据 * 获取预算数据
* @param fund 技术费用 * @param fund 技术费用
* @param report
* @param inspectParameter 计算所需数据 * @param inspectParameter 计算所需数据
* @return * @return
*/ */
public List<Budget> getBudget(Integer fund, InspectParameter inspectParameter){ public BudgetVo getBudget(Integer fund, ReportVo report, InspectParameter inspectParameter){
BudgetVo budgetVo = new BudgetVo();
// TODO: 2020-03-05 查询年复利率
inspectParameter.setMoneyRate(1.04); inspectParameter.setMoneyRate(1.04);
//代码重构比
double refactorProportion = 0D;
//代码修改比
double updateProportion = 0D;
if(report.getRecastMethod()==1){
inspectParameter.setProportion(0.6); inspectParameter.setProportion(0.6);
}else{
// TODO: 2020-03-05 查询config表0.3或者0.15
inspectParameter.setProportion(0.3);
}
int scale; int scale;
Integer systemFund = inspectParameter.getSystemFund(); Integer systemFund = inspectParameter.getSystemFund();
if(systemFund==0){ if(systemFund==0){
...@@ -46,58 +58,94 @@ public class BudgetUitl { ...@@ -46,58 +58,94 @@ public class BudgetUitl {
}else{ }else{
scale=3; scale=3;
} }
Budget budget = new Budget();
budget.setBudgetName("代码重构预算");
Double moneyRate = inspectParameter.getMoneyRate(); Double moneyRate = inspectParameter.getMoneyRate();
int i = 2020 - inspectParameter.getYears(); int years = inspectParameter.getYears();
double pow = Math.pow(moneyRate, i); double pow = Math.pow(moneyRate, years);
//不带修正系数资金 //不带修正系数资金
double v = inspectParameter.getProportion() * pow * systemFund + fund; double fundNotRepair = inspectParameter.getProportion() * pow * systemFund + fund;
//带修正系数资金 //带修正系数资金
ArrayList<String> strings = new ArrayList<>(); ArrayList<String> strings = new ArrayList<>();
Double v1 = v; Double fundRepair = fundNotRepair;
strings.add("安全能力"); strings.add("安全能力");
strings.add("容灾能力"); strings.add("容灾能力");
strings.add("架构"); strings.add("架构");
strings.add("数据量"); strings.add("数据量");
strings.add("模块数"); strings.add("模块数");
strings.add("数据库表");
strings.add("代码量");
int coefficient = 0;
List<CoefficientModel> nameIn = coefficientModelDao.findAllByNameIn(strings); List<CoefficientModel> nameIn = coefficientModelDao.findAllByNameIn(strings);
List<CoefficientModel> collect = nameIn.stream().filter(a -> a.getScale() == scale).collect(Collectors.toList()); List<CoefficientModel> collect = nameIn.stream().filter(a -> a.getScale() == scale).collect(Collectors.toList());
for (CoefficientModel model : collect) { for (CoefficientModel model : collect) {
CoefficientModelVo coefficientModelVo = new CoefficientModelVo();
coefficientModelVo.setName(model.getName());
if("架构".equals(model.getName())){ if("架构".equals(model.getName())){
Double aDouble = model.countCoefficient(inspectParameter.getFramework()); Double value = model.countCoefficient(inspectParameter.getFramework());
v1*=aDouble; coefficientModelVo.setValue(value);
coefficient*=value;
}else if("容灾能力".equals(model.getName())){ }else if("容灾能力".equals(model.getName())){
Double aDouble = model.countCoefficient(inspectParameter.getDisaster()); Double value = model.countCoefficient(inspectParameter.getDisaster());
v1*=aDouble; coefficientModelVo.setValue(value);
coefficient*=value;
} }
else if("安全能力".equals(model.getName())){ else if("安全能力".equals(model.getName())){
Double aDouble = model.countCoefficient(inspectParameter.getSafety()); Double value = model.countCoefficient(inspectParameter.getSafety());
v1*=aDouble; coefficientModelVo.setValue(value);
coefficient*=value;
} }
else if("数据量".equals(model.getName())){ else if("数据量".equals(model.getName())){
Double aDouble = model.countCoefficient(Double.valueOf(inspectParameter.getData())); Double value = model.countCoefficient(inspectParameter.getData());
v1*=aDouble; coefficientModelVo.setValue(value);
coefficient*=value;
} }
else if("模块数".equals(model.getName())){ else if("模块数".equals(model.getName())){
Double aDouble = model.countCoefficient(Double.valueOf(inspectParameter.getModules())); Double value = model.countCoefficient(inspectParameter.getModules());
v1*=aDouble; coefficientModelVo.setValue(value);
coefficient*=value;
}
else if("数据库表".equals(model.getName())){
Double value = model.countCoefficient(inspectParameter.getTables());
coefficientModelVo.setValue(value);
coefficient*=value;
} }
else if("代码量".equals(model.getName())){
Double value = model.countCoefficient(inspectParameter.getCodeSize());
coefficientModelVo.setValue(value);
coefficient*=value;
} }
budgetVo.getCoefficientModelVos().add(coefficientModelVo);
}
Budget codeRefactor = new Budget();
codeRefactor.setBudgetName("代码重构预算");
if(fundNotRepair<fundRepair){
codeRefactor.setFund(fundNotRepair +"--"+fundRepair);
}else if(fundNotRepair>fundRepair){
codeRefactor.setFund(fundRepair +"--"+fundNotRepair);
}else{
codeRefactor.setFund(fundRepair +"--"+fundNotRepair);
}
codeRefactor.setFundDetail("普通业务开发费用:"+fundNotRepair);
codeRefactor.setFundDetail("普通业务开发费用(修正):"+fundRepair);
codeRefactor.setFundDetail("关键适配技术成本:"+fund);
if(v<v1){ Budget codeUpdate = new Budget();
budget.setFund(v +"--"+v1); codeUpdate.setBudgetName("代码修改替换预算");
}else if(v>v1){
budget.setFund(v1 +"--"+v); if(fundNotRepair<fundRepair){
codeUpdate.setFund(fundNotRepair +"--"+fundRepair);
}else if(fundNotRepair>fundRepair){
codeUpdate.setFund(fundRepair +"--"+fundNotRepair);
}else{ }else{
budget.setFund(v1 +"--"+v); codeUpdate.setFund(fundRepair +"--"+fundNotRepair);
} }
budget.setFundDetail("普通业务开发费用:"+v); codeUpdate.setFundDetail("普通业务开发费用:"+fundNotRepair);
budget.setFundDetail("普通业务开发费用(修正):"+v1); codeUpdate.setFundDetail("普通业务开发费用(修正):"+fundRepair);
budget.setFundDetail("关键适配技术成本:"+fund); codeUpdate.setFundDetail("关键适配技术成本:"+fund);
budgetVo.getBudget().add(codeRefactor);
budgetVo.getBudget().add(codeUpdate);
ArrayList<Budget> budgets = new ArrayList<>(); return budgetVo;
budgets.add(budget);
return budgets;
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论