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

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

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