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

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

......@@ -188,6 +188,8 @@ public class InspectController {
将马晨俊的数据放入输出的表单
*/
AssessmentReport assessmentReport = new AssessmentReport();
//适配还是改造
assessmentReport.setType(reform.getMode());
SysScale sysScale = new SysScale();
Scale scale = new Scale();
//文件数量
......@@ -209,7 +211,7 @@ public class InspectController {
//评估时间
assessmentReport.setTime(inspect.getCreateDate());
//适配预算
assessmentReport.setBudget(inspect.getBudgets().getBudget().get(0).getFund());
// assessmentReport.setBudget(inspect.getBudgets().getBudget().get(0).getFund());
//原系统规模,马晨俊没放进去
//技术详情,马晨俊的警告点,同时统计技术的数量
//样式调整
......@@ -220,6 +222,8 @@ public class InspectController {
int plugIn = 0;
//jni数量
int jni = 0;
//中间件依赖数量
int dependOnNum = 0;
HashMap<String, List<Warn>> warnDetails = inspect.getWarnDetails();
Set<String> keySet = warnDetails.keySet();
List<TechnologyReport> technologyReports = new ArrayList<>();
......@@ -236,6 +240,10 @@ public class InspectController {
technologyContent.setFile(warn.getFilePath());
technologyContent.setKeyWord(warn.getRule());
technologyContent.setPosition(warn.getLineNum().toString());
String categoryId = warn.getCategoryId();
if(!Objects.equals(categoryId, "0") &&categoryId!=null&& Objects.equals(categoryId, "1")){
dependOnNum += 1;
}
technologyContents.add(technologyContent);
}
if(Objects.equals(key, "Microsoft CSS extensions(不支持)")){
......@@ -294,27 +302,27 @@ public class InspectController {
dependencies.addAll(projectPom.getDependencies());
}
HashMap<String,Integer> num = new HashMap<>();
for (PomDependency pomDependency:dependencies) {
String groupId = pomDependency.getGroupId();
Integer integer = num.get(groupId);
if(integer == null){
num.put(groupId,1);
}else{
integer = integer+1;
num.put(groupId,integer);
}
}
System.out.println("所有依赖:"+JSON.toJSONString(num));
Set<String> strings = num.keySet();
List<DependOnNum> dependOnNums = new ArrayList<>();
for (String s:strings) {
DependOnNum dependOnNum = new DependOnNum();
dependOnNum.setName(s);
dependOnNum.setNum(num.get(s));
dependOnNums.add(dependOnNum);
}
middlewareDifficulty.setDependOnNum(dependOnNums);
// HashMap<String,Integer> num = new HashMap<>();
// for (PomDependency pomDependency:dependencies) {
// String groupId = pomDependency.getGroupId();
// Integer integer = num.get(groupId);
// if(integer == null){
// num.put(groupId,1);
// }else{
// integer = integer+1;
// num.put(groupId,integer);
// }
// }
// System.out.println("所有依赖:"+JSON.toJSONString(num));
// Set<String> strings = num.keySet();
// List<DependOnNum> dependOnNums = new ArrayList<>();
// for (String s:strings) {
// DependOnNum dependOnNum = new DependOnNum();
// dependOnNum.setName(s);
// dependOnNum.setNum(num.get(s));
// dependOnNums.add(dependOnNum);
// }
middlewareDifficulty.setDependOnNum(dependOnNum);
Middleware middleware = reform.getMiddleware();
middlewareDifficulty.setWeb(middleware.getWeb());
middlewareDifficulty.setJms(middleware.getJms());
......@@ -334,8 +342,8 @@ public class InspectController {
//本地程序难度
ProgramDifficulty programDifficulty = new ProgramDifficulty();
List<DependOnNum> dependOns = new ArrayList<>();
DependOnNum dependOnNum = new DependOnNum("jni",jni);
dependOns.add(dependOnNum);
DependOnNum dependOnNum2 = new DependOnNum("jni",jni);
dependOns.add(dependOnNum2);
programDifficulty.setDependOnNum(dependOns);
difficultyAssessment.setProgramDifficulty(programDifficulty);
System.out.println("programDifficulty+:"+JSON.toJSONString(programDifficulty));
......
......@@ -122,7 +122,7 @@ public class TechnologyController {
dependOnNums.add(dependOnNum);
DifficultyAssessment difficultyAssessment = assessmentReport.getDifficultyAssessment();
difficultyAssessment.getDatabaseDifficulty().setDependOnNum(dependOnNums);
difficultyAssessment.getMiddlewareDifficulty().setDependOnNum(dependOnNums);
difficultyAssessment.getMiddlewareDifficulty().setDependOnNum(10);
difficultyAssessment.getProgramDifficulty().setDependOnNum(dependOnNums);
......
......@@ -24,5 +24,5 @@ public class Apply {
/**
* 原因
*/
private String reason = "";
private String reason = "-1";
}
......@@ -22,12 +22,12 @@ public class AssessmentReport {
/**
* 单位名称
*/
private String orgName = "****";
private String orgName;
/**
* 系统名称
*/
private String sysName = "****";
private String sysName;
/**
* 评估时间
......@@ -37,18 +37,18 @@ public class AssessmentReport {
/**
* 难度系数
*/
private double difficulty = 1.1;
private double difficulty;
/**
* 类型预算 1:适配、2:改造
*/
private Integer type = 1;
private Integer type;
/**
* 预算金额 double
*/
private String budget = "53.973348451903085--129.498761216";
private String budget;
/**
* 原系统规模
......
......@@ -18,10 +18,10 @@ public class Basis {
/**
* 开发量
*/
private double developmentVolume = 1.1;
private double developmentVolume;
/**
* 修正系数
*/
private double correctionFactor = 1.1;
private double correctionFactor;
}
......@@ -17,37 +17,37 @@ public class BrowserDifficulty {
/**
* 系统评估
*/
private double systemEvaluation = 1.1;
private double systemEvaluation;
/**
* 额外信息
*/
private double message = 1.1;
private double message;
/**
* 综合难度
*/
private double difficulty = 1.1;
private double difficulty;
/**
* 工作量
*/
private double load = 0.0;
private double load;
/**
* 样式
*/
private Integer style = 10;
private Integer style;
/**
* api
*/
private Integer api = 10;
private Integer api;
/**
* 插件
*/
private Integer plugInUnit = 10;
private Integer plugInUnit;
/**
* 用户额外需求
......
......@@ -30,7 +30,7 @@ public class DatabaseDifficulty {
/**
* 综合难度
*/
private double difficulty = 1.1;
private double difficulty;
/**
* 工作量
......@@ -45,25 +45,25 @@ public class DatabaseDifficulty {
/**
* 容灾 (1:否 2:主备 3:分布式)
*/
private Integer disasterTolerance = 1;
private Integer disasterTolerance;
/**
* 安全 1:是 2:否
*/
private Integer safe = 1;
private Integer safe;
/**
* 读写分离 1:是 2:否
*/
private Integer separate = 1;
private Integer separate;
/**
* 更高性能 1:是 2:否
*/
private Integer performance = 1;
private Integer performance;
/**
* 其他内容
*/
private String otherContent = "其他内容";
private String otherContent;
}
......@@ -18,10 +18,10 @@ public class DependOnNum {
/**
* 依赖/jni名称
*/
private String name = "******";
private String name;
/**
* 数量
*/
private Integer num = -1;
private Integer num;
}
......@@ -19,7 +19,7 @@ public class DifficultyAssessment {
6.数据库
7.本地程序
*/
private String des = "*************************";
private String des;
/**
* 系统部署架构难度
......
......@@ -18,16 +18,16 @@ public class Estimate {
/**
* 计算值
*/
private double Calculation = 1.1;
private double Calculation;
/**
* 操作
*/
private String operation = "*****";
private String operation;
/**
* 调整后
*/
private double adjustment = 1.1;
private double adjustment;
}
......@@ -18,45 +18,45 @@ public class FrameDifficulty {
/**
* 系统评估
*/
private double systemEvaluation = 1.1;
private double systemEvaluation;
/**
* 额外信息
*/
private double message = 1.1;
private double message;
/**
* 综合难度
*/
private double difficulty = 1.1;
private double difficulty;
/**
* 工作量
*/
private double load = 0.0;
private double load;
/**
* 详情 1:混合 2:前后端分离
*/
private Integer details = 1;
private Integer details;
/**
* 分布式 int 1:是 2:否
*/
private Integer distributed = 1;
private Integer distributed;
/**
* 负载均衡 int 1:是 2:否
*/
private Integer loadBalance = 1;
private Integer loadBalance;
/**
* 容灾 int 1:是 2:否
*/
private Integer disaster = 1;
private Integer disaster;
/**
* 其他需求
*/
private String otherDemand = "***********";
private String otherDemand;
}
......@@ -20,27 +20,27 @@ public class MiddlewareDifficulty {
/**
* 系统评估
*/
private double systemEvaluation = 1.1;
private double systemEvaluation;
/**
* 额外信息
*/
private double message = 1.1;
private double message;
/**
* 综合难度
*/
private double difficulty = 1.1;
private double difficulty;
/**
* 工作量
*/
private double load = 0.0;
private double load;
/**
* 依赖详情
*/
private List<DependOnNum> dependOnNum = new ArrayList<>();
private Integer dependOnNum;
/*
*用户额外信息详情
......@@ -48,21 +48,21 @@ public class MiddlewareDifficulty {
/**
*Web集群 1:是 2:否
*/
private Integer web = 1;
private Integer web;
/**
* Jndi集群 1:是 2:否
*/
private Integer jndi = 1;
private Integer jndi;
/**
* Jms集群 1:是 2:否
*/
private Integer jms = 1;
private Integer jms;
/**
* 消息路由 1:是 2:否
*/
private Integer route = 1;
private Integer route;
}
......@@ -30,12 +30,12 @@ public class ProgramDifficulty {
/**
* 综合难度
*/
private double difficulty = 1.1;
private double difficulty;
/**
* 工作量
*/
private double load = 0.0;
private double load;
/**
* 依赖详情
......
......@@ -18,25 +18,25 @@ public class TechnologyContent {
/**
* 本地程序开发
*/
private String local = "*****";
private String local;
/**
* 关键字
*/
private String keyWord= "********";
private String keyWord;
/**
* 所在文件
*/
private String file = "*****";
private String file;
/**
* 位置
*/
private String position = "*******";
private String position;
/**
* 替换策略
*/
private Integer strategy = 1;
private Integer strategy;
}
......@@ -21,7 +21,7 @@ public class TechnologyList {
/**
* 建议
*/
private String des = "***************************************************";
private String des;
/**
* 技术列表
......
......@@ -21,7 +21,7 @@ public class TechnologyReport {
/**
* 关键技术
*/
private String technology = "*******";
private String technology;
/**
......
......@@ -17,17 +17,17 @@ public class Workload {
/**
* 描述
*/
private String des = "***************";
private String des;
/**
* 开发费用
*/
private double cost = 1.2;
private double cost;
/**
*模块数
*/
private Integer mode = 19;
private Integer mode;
/*
* 依据
......
......@@ -250,16 +250,6 @@ public class WorkLoadUtil {
//总计J = F(马) * 人工费
double j = f/r;
logger.info("f:"+f+"r:"+r+"总计J:"+j);
/*
计算以下三项,拼接字符串,完成关键技术及替换策略建议:
*/
//关键技术xx个
//本地程序开发项xx个
//中间件依赖修改项xx个
String string = "本系统通过源代码评估适配关键技术"+report.getTechnologyList().getTechnologyReports().size()+"项,"
+"其中本地程序开发修改项"+report.getDifficultyAssessment().getProgramDifficulty().getDependOnNum().size()+"项,"
+"中间件依赖修改项"+report.getDifficultyAssessment().getMiddlewareDifficulty().getDependOnNum().size()+"个....";
report.getWorkload().setDes(string);
/*
先计算难度,再算基础工作量
*/
......@@ -311,9 +301,10 @@ public class WorkLoadUtil {
MiddlewareDifficulty middlewareDifficulty = report.getDifficultyAssessment().getMiddlewareDifficulty();
//中间件系统评估P (1+0.001*依赖数量)*(1+0.001*依赖数量)
double pMiddle = 1;
for(DependOnNum dependOnNum:middlewareDifficulty.getDependOnNum()){
pMiddle*=(1.0+0.001*dependOnNum.getNum());
}
// for(DependOnNum dependOnNum:middlewareDifficulty.getDependOnNum()){
// pMiddle*=(1.0+0.001*dependOnNum.getNum());
// }
pMiddle*=(1.0+0.001*middlewareDifficulty.getDependOnNum());
pMiddle = pMiddle>1.3?1.3:pMiddle;
logger.info("中间件难度-评估:"+pMiddle);
middlewareDifficulty.setSystemEvaluation(Double.valueOf(nf.format(pMiddle)));
......@@ -368,9 +359,6 @@ public class WorkLoadUtil {
logger.info("本地程序工作量2*j"+j+"*(综合难度-1):"+programWorkload);
programDifficulty.setLoad(Double.valueOf(nf.format(programWorkload)));
//综合难度未知***************************
double multipleHardrage = 0.0;
report.getDifficultyAssessment().setDes("本系统通过源代码评估,及用户额外信息提供,认为综合难度系数:"+multipleHardrage);
/*
基础工作量评估
*/
......@@ -404,6 +392,28 @@ public class WorkLoadUtil {
report.getWorkload().getTotal().setDevelopmentVolume(Double.valueOf(nf.format(totalWorkload)));
report.getWorkload().getTotal().setCorrectionFactor(-1);
/*
建议:
*/
StringBuilder string = new StringBuilder("本系统通过源代码评估适配关键技术"+report.getTechnologyList().getTechnologyReports().size()+"项,");
if(report.getTechnologyList().getTechnologyReports().size()>0){
string.append("其中");
}
for(TechnologyReport technologyReport:report.getTechnologyList().getTechnologyReports()){
string .append( technologyReport.getTechnology()+"修改项"+technologyReport.getTechnologyContents().size()+"个,");
}
report.getTechnologyList().setDes(string.substring(0,string.length()-1)+"。");
String type = "";
if(report.getType()==1){
type = "改造";
}else if(report.getType()==2){
type = "适配";
}
String workloadDes = "本系统通过选择"+type+"方式部署到国产化安全自主可控环境上。代码层面的关键工作量包含"+nf.format(totalWorkload)+"人工月(包含对不可预见的估算)";
report.getWorkload().setDes(workloadDes);
double multipleHardrage = totalWorkload*r/f;
report.getDifficultyAssessment().setDes("本系统通过源代码评估,及用户额外信息提供,认为综合难度系数:"+Double.valueOf(nf.format(multipleHardrage)));
/**
* 人工单价、基础工作量(人月)、难度系数、额外申请(万元)、预算费用 的计算值
*/
......@@ -415,11 +425,15 @@ public class WorkLoadUtil {
report.getManufacturingCost().getDegreeOfDifficulty().setAdjustment(Double.valueOf(nf.format(multipleHardrage)));
report.getManufacturingCost().getApply().setCalculation(Double.valueOf(nf.format(reform.getApply().getCost()==-1?0:reform.getApply().getCost())));
report.getManufacturingCost().getApply().setAdjustment(0);
report.getManufacturingCost().getBudgetaryCost().setCalculation(Double.valueOf(nf.format(r*totalWorkload+reform.getApply().getCost())));
Double totalManey = Double.valueOf(nf.format(r * totalWorkload + (reform.getApply().getCost() == -1 ? 0 : reform.getApply().getCost())));
report.getManufacturingCost().getBudgetaryCost().setCalculation(totalManey);
report.getManufacturingCost().getBudgetaryCost().setAdjustment(Double.valueOf(nf.format(r*totalWorkload)));
logger.info("人工费:"+r+"万元");
logger.info("额外申请"+(reform.getApply().getCost()==-1?0:reform.getApply().getCost())+"万元");
logger.info("费用总计"+(r*totalWorkload+reform.getApply().getCost()));
report.setBudget(totalManey.toString());
//修正系数+1
//额外申请原因
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论