Commit c2085ae8 by dengwei

权重配置,多层权重计算逻辑优化

parent 2bc0b35b
......@@ -432,9 +432,17 @@ public class WeightDataEnterCtrl {
value.setIndId(ind.getIndId());
value.setIndUnit(ind.getIndUnit());
// 设置综合评价权重
value.setSynthesizeWeight(new BigDecimal(synthesizeWeight));
if (StringUtils.isNotBlank(synthesizeWeight)) {
value.setSynthesizeWeight(new BigDecimal(synthesizeWeight));
}else {
value.setSynthesizeWeight(BigDecimal.ZERO);
}
// 设置改善提升权重
value.setImproveWeight(new BigDecimal(improveWeight));
if (StringUtils.isNotBlank(improveWeight)) {
value.setImproveWeight(new BigDecimal(improveWeight));
}else {
value.setImproveWeight(BigDecimal.ZERO);
}
// 设置维度权重
value.setDimensionWeight(dimensionWeight);
String indName=ind.getIndName();
......
......@@ -7,6 +7,7 @@ import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author DW
......@@ -67,4 +68,7 @@ public class ObjScoreIndWeightDetail {
// 大类权重
private BigDecimal bigWeight;
// 创建时间
private Date createTime;
}
......@@ -545,8 +545,10 @@ public class ScoreRuleService {
objScoreCalResult = this.calGroupIndAverageOrSum(compareCatalog,objScoreCalResult,
scoreRule, compareObj, date, scoreRule.getCalType(),code,dateMark);
}else {//4:多层权重
logger.info("多层权重结果1:" + objScoreCalResult);
objScoreCalResult = this.calMoreIndWeight(compareCatalog,objScoreCalResult ,scoreRule,
compareObj, date, code, dateMark);
logger.info("多层权重结果2:" + objScoreCalResult);
}
objScoreCalResult.setCompareCatalog(compareCatalog);
objScoreCalResult.setCompareId(compareId);
......@@ -560,7 +562,8 @@ public class ScoreRuleService {
for(ObjScoreCalResult scoreResult : datas) {
//计算综合评价和改善提升总分
Double scoreSum = Double.parseDouble(scoreResult.getScoreValue());
if("1".equals(scoreRule.getScoreType())){
// 新增判断是否为多层权重
if("1".equals(scoreRule.getScoreType()) && !"4".equals(scoreRule.getCalType())){
scoreSum = Double.parseDouble(scoreResult.getScoreValue())+
Double.parseDouble(scoreResult.getImproveValue());
}
......@@ -578,6 +581,7 @@ public class ScoreRuleService {
}
datas = null;
}
logger.info("最终存表的结果集合:" + dbDatas);
//批量新增或修改
if(!dbDatas.isEmpty()) {
this.batchSaveOrUpdateObjScoreCalResult(dbDatas);
......@@ -643,7 +647,9 @@ public class ScoreRuleService {
synthesizeWeight = weightIndValue.getSynthesizeWeight().divide(new BigDecimal(100));
}
BigDecimal finalScore = score.multiply(synthesizeWeight).multiply(dimensionWeight);
scoreValues.add(String.valueOf(finalScore));
if (finalScore.doubleValue() > 0) {
scoreValues.add(String.valueOf(finalScore));
}
}
if (!StringUtils.equals("0.0", map.get("maxImproveScore"))) {
BigDecimal improveScore = new BigDecimal(map.get("maxImproveScore"));
......@@ -652,7 +658,9 @@ public class ScoreRuleService {
improveWeight = weightIndValue.getImproveWeight().divide(new BigDecimal(100));
}
BigDecimal finalImproveScore = improveScore.multiply(improveWeight).multiply(dimensionWeight);
improveValues.add(String.valueOf(finalImproveScore));
if (finalImproveScore.doubleValue() > 0) {
improveValues.add(String.valueOf(finalImproveScore));
}
}
for (TaskRuleIndicator indicator : indicators) {
groupIndIds.append(indicator.getIndId());
......@@ -671,16 +679,20 @@ public class ScoreRuleService {
improveWeight = weightIndValue.getImproveWeight().divide(new BigDecimal(100));
}
BigDecimal finalImproveScore = improveScore.multiply(improveWeight).multiply(dimensionWeight);
improveValues.add(String.valueOf(finalImproveScore));
if (finalImproveScore.doubleValue() > 0) {
improveValues.add(String.valueOf(finalImproveScore));
}
}
if(!"NaN".equals(calResult.getValue()) && !"Infinite".equals(calResult.getValue()) && !"0".equals(calResult.getValue())) {
if(!"No".equals(calResult.getScore()) && StringUtils.isNotBlank(calResult.getScore())) {
BigDecimal score = new BigDecimal(calResult.getScore());
BigDecimal synthesizeWeight = BigDecimal.ZERO;
if (weightIndValue.getSynthesizeWeight() != null && weightIndValue.getSynthesizeWeight().doubleValue() != 0) {
synthesizeWeight = weightIndValue.getSynthesizeWeight().divide(new BigDecimal(100));
}
BigDecimal finalScore = score.multiply(synthesizeWeight).multiply(dimensionWeight);
scoreValues.add(String.valueOf(finalScore));
if (finalScore.doubleValue() > 0) {
scoreValues.add(String.valueOf(finalScore));
}
}
}
}
......@@ -743,7 +755,7 @@ public class ScoreRuleService {
maxImproveScore = driveIndCalResultDef.getImproveScore();
}
}
if(!"NaN".equals(driveIndCalResultDef.getValue()) && !"Infinite".equals(driveIndCalResultDef.getValue()) && !"0".equals(driveIndCalResultDef.getValue())) {
if(!"No".equals(driveIndCalResultDef.getScore()) && StringUtils.isNotBlank(driveIndCalResultDef.getScore())) {
// 比较大小
BigDecimal score = new BigDecimal(driveIndCalResultDef.getScore());
// 计算两个指标改善提升分数的差值
......
......@@ -16,6 +16,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
......@@ -60,6 +61,7 @@ public class WeightIndValueServiceImpl implements WeightIndValueService {
for (WeightIndValue indValue : values) {
DriveIndDef indDef = driveIndDefMapper.selectByPrimaryKey(indValue.getIndId());
ObjScoreIndWeightDetail weightDetail = new ObjScoreIndWeightDetail();
weightDetail.setCreateTime(new Date());
weightDetail.setCfgId(weightId);
weightDetail.setCode(weightCfg.getOrgNo());
weightDetail.setLevelName(weightCfg.getLevelName());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment