diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/index/result/IndexScoreDetailResult.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/index/result/IndexScoreDetailResult.java index 8b30af940f..cdec4cc3e9 100644 --- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/index/result/IndexScoreDetailResult.java +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/index/result/IndexScoreDetailResult.java @@ -1,5 +1,6 @@ package com.epmet.evaluationindex.index.result; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import java.io.Serializable; @@ -40,9 +41,10 @@ public class IndexScoreDetailResult implements Serializable { private String weight; /** - * 数量 + * 类型 取原始值 还是数量 */ - private String quantity; + @JsonIgnore + private String type; diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/index/result/IndexScoreResult.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/index/result/IndexScoreResult.java index c817b5de55..d6ca46a913 100644 --- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/index/result/IndexScoreResult.java +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/index/result/IndexScoreResult.java @@ -32,9 +32,15 @@ public class IndexScoreResult implements Serializable { * 原始值 */ private String originValue; + /** * 数量 */ - private String quantity; + private String sampleCount; + + /** + * 值类型 + */ + private String valueType; } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/constant/IndexConstant.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/constant/IndexConstant.java index af1ae3588d..e6a4b3bfac 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/constant/IndexConstant.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/constant/IndexConstant.java @@ -18,12 +18,12 @@ public class IndexConstant { public static final List ScoreLastHeader = Arrays.asList("指标值", "得分", "权重"); public static final List QuantityLastHeader = Arrays.asList("数量", "平均值", "权重"); - private static final String DJZS_CN = "党建指数"; - private static final String FWZS_CN = "服务指数"; - private static final String ZLZS_CN = "治理指数"; - private static final String ZB_CN = "指标"; - private static final String BEN_JI_CN = "本级"; - private static final String XIA_JI_CN = "下级"; + public static final String DJZS_CN = "党建指数"; + public static final String FWZS_CN = "服务指数"; + public static final String ZLZS_CN = "治理指数"; + public static final String ZB_CN = "指标"; + public static final String BEN_JI_CN = "本级"; + public static final String XIA_JI_CN = "下级"; public static final String ZI_SHEN = "zishen"; public static final String XIA_JI = "xiaji"; @@ -33,6 +33,8 @@ public class IndexConstant { public static final String INDEX_SCORE_DESC = "含义:自然月周期内,当月指数得分=党建指数得分*相关权重+治理指数得分*相关权重+服务指数得分*相关权重"; public static final String INDEX_DISTRINCT_TABLE1_INDEX_CODE = "suoyoujiedaozlnlpjz"; public static final String ZHI_LI_NENG_LI = "zhilinengli"; + public static final String PATTERN_D = "d"; + public static final String QUAN_QU_ZHI_LI_INDEX_CODE = "quanquxiangguan:zhilinengli"; /** diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/index/impl/IndexExplainServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/index/impl/IndexExplainServiceImpl.java index 5c8ceaf757..572fb3b4b8 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/index/impl/IndexExplainServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/index/impl/IndexExplainServiceImpl.java @@ -22,6 +22,7 @@ import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.enums.OrgLevelEnum; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.constant.DataSourceConstant; +import com.epmet.datareport.constant.FactConstant; import com.epmet.datareport.constant.IndexConstant; import com.epmet.datareport.dao.evaluationindex.index.IndexExplainDao; import com.epmet.datareport.dao.evaluationindex.index.IndexGroupDetailDao; @@ -99,6 +100,16 @@ public class IndexExplainServiceImpl implements IndexExplainService { results.add(result); result.setTitle(explainDTO.getTitle()); result.setMeaning(explainDTO.getMeaning()); + + //全区相关的服务能力的含义中 有权重 所以特殊处理下 + if (explainDTO.getOrgLevel().equals(OrgLevelEnum.DISTRICT.getCode()) && IndexConstant.ZLZS_CN.equals(explainDTO.getTitle())) { + List detailResults = detailEntityMap.get(IndexConstant.QUAN_QU_ZHI_LI_INDEX_CODE); + detailResults.forEach(index -> { + String newMeaning = result.getMeaning().replaceFirst(IndexConstant.PATTERN_D, + index.getWeight().multiply(new BigDecimal(NumConstant.ONE_HUNDRED)).setScale(NumConstant.ZERO, BigDecimal.ROUND_HALF_UP).toString()); + result.setMeaning(newMeaning); + }); + } //设置表格数据 setTableData(formDTO, detailEntityMap, explainDTO, result); //子节点 @@ -162,7 +173,6 @@ public class IndexExplainServiceImpl implements IndexExplainService { List indexGroupDetailEntities = new ArrayList<>(); for (IndexGroupDetailResult index : detailResults) { - if (IndexConstant.INDEX_DISTRINCT_TABLE1_INDEX_CODE.equals(index.getIndexCode())) { indexGroupDetailEntities.add(index); setDefaultTableData(orgLevel, type, detailEntityMap, result, allIndexCodePath, indexGroupDetailEntities); @@ -184,10 +194,10 @@ public class IndexExplainServiceImpl implements IndexExplainService { break; default: - log.error("暂不支持更高级别的查询,level:{}",orgLevel); + log.error("暂不支持更高级别的查询,level:{}", orgLevel); } - setRealValue(result.getTableDataList(), realScoreList); + setRealValue(result.getTableDataList(), realScoreList, tableHeaders); } } @@ -196,11 +206,12 @@ public class IndexExplainServiceImpl implements IndexExplainService { * * @param tableList * @param scoreList + * @param tableHeaders * @return void * @author LiuJanJun * @date 2021/5/19 2:07 下午 */ - private void setRealValue(List tableList, List scoreList) { + private void setRealValue(List tableList, List scoreList, List tableHeaders) { if (CollectionUtils.isEmpty(tableList) || CollectionUtils.isEmpty(scoreList)) { return; } @@ -209,19 +220,39 @@ public class IndexExplainServiceImpl implements IndexExplainService { if (!tb.getIndexCode().equals(score.getIndexCode())) { continue; } - tb.setOriginValue(score.getOriginValue()); tb.setScore(String.valueOf(score.getScore())); - if (StringUtils.isNotBlank(score.getQuantity())) { - tb.setQuantity(score.getQuantity()); + tb.setWeight(score.getWeight().multiply(new BigDecimal(NumConstant.ONE_HUNDRED)).setScale(0, BigDecimal.ROUND_HALF_UP) + "%"); + if (tableHeaders.contains("平均值")) { + if (StringUtils.isNotBlank(score.getSampleCount())) { + tb.setOriginValue(score.getSampleCount()); + } + } else { + tb.setOriginValue(score.getOriginValue()); + formatOriginValue(score, tb); } - tb.setWeight(score.getWeight().multiply(new BigDecimal(NumConstant.ONE_HUNDRED)) + "%"); } } } + private void formatOriginValue(IndexScoreResult score, IndexScoreDetailResult index) { + //小数类型,四舍五入保留小数点后一位 + if (FactConstant.INTEGER.equals(score.getValueType())) { + BigDecimal num = new BigDecimal(index.getOriginValue()).setScale(0, BigDecimal.ROUND_HALF_UP); + index.setOriginValue(num.toString()); + } + if (FactConstant.DECIMAL.equals(score.getValueType())) { + BigDecimal num = new BigDecimal(index.getOriginValue()).setScale(1, BigDecimal.ROUND_HALF_UP); + index.setOriginValue(num.toString()); + } + //百分数类型,四舍五入保留小数点后一位并转成百分比 + if (FactConstant.PERCENT.equals(score.getValueType())) { + BigDecimal num = new BigDecimal(index.getOriginValue()).setScale(1, BigDecimal.ROUND_HALF_UP); + index.setOriginValue(num + "%"); + } + } + private List setDefaultTableData(String orgLevel, String type, Map> detailEntityMap, IndexExplainResult result, String allIndexCodePath, List indexGroupDetailEntities) { - if (indexGroupDetailEntities == null) { indexGroupDetailEntities = detailEntityMap.get(allIndexCodePath); } @@ -233,18 +264,21 @@ public class IndexExplainServiceImpl implements IndexExplainService { List threlodList = new ArrayList<>(); indexGroupDetailEntities.forEach(index -> { IndexScoreDetailResult table = new IndexScoreDetailResult(); - if ("grid".equals(orgLevel) && IndexConstant.ZI_SHEN.equals(type) && index.getAllIndexCodePath().contains(IndexConstant.XIA_JI)) { + if (OrgLevelEnum.GRID.getCode().equals(orgLevel) && IndexConstant.ZI_SHEN.equals(type) && index.getAllIndexCodePath().contains(IndexConstant.XIA_JI)) { + return; + } + if (OrgLevelEnum.DISTRICT.getCode().equals(orgLevel) && !index.getAllIndexCodePath().contains(type) && !index.getAllIndexCodePath().contains(IndexConstant.ZHI_LI_NENG_LI)) { return; } - if ((!"grid".equals(orgLevel) && !"district".equals(orgLevel)) && !index.getAllIndexCodePath().contains(type)) { + if (!OrgLevelEnum.GRID.getCode().equals(orgLevel) && !OrgLevelEnum.DISTRICT.getCode().equals(orgLevel) && !index.getAllIndexCodePath().contains(type)) { return; } table.setIndexCode(index.getIndexCode()); table.setIndexName(index.getIndexName()); table.setOriginValue(NumConstant.ZERO_STR); table.setScore(NumConstant.ZERO_STR); - table.setWeight(index.getWeight().multiply(new BigDecimal(100)).setScale(NumConstant.TWO, BigDecimal.ROUND_HALF_UP) + "%"); - table.setQuantity(NumConstant.ZERO_STR); + table.setWeight(index.getWeight().multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP) + "%"); + table.setType(type); tableList.add(table); if (new BigDecimal(-1).compareTo(index.getThreshold()) != 0) { threlodList.add(index.getIndexName().concat(String.format(IndexConstant.THRESHOLD_TEXT, index.getThreshold().intValue()))); @@ -277,13 +311,14 @@ public class IndexExplainServiceImpl implements IndexExplainService { private List getTableHeaders(String type, String allIndexCode, String orgLevel) { List headers = new ArrayList<>(); - switch (orgLevel) { - case "grid": + OrgLevelEnum anEnum = OrgLevelEnum.getEnum(orgLevel); + switch (anEnum) { + case GRID: //还没确定怎么搞 - if ("zishen".equals(type)) { + if (IndexConstant.ZI_SHEN.equals(type)) { headers = IndexConstant.getStandardSelfHeaders(allIndexCode); - } else if ("xiaji".equals(type)) { + } else if (IndexConstant.XIA_JI.equals(type)) { headers = new ArrayList<>(IndexConstant.QuantityLastHeader); if (allIndexCode.contains("canyuyishi")) { headers.add(0, "组织内党员的参与议事指数考评分(平均值)"); @@ -292,11 +327,11 @@ public class IndexExplainServiceImpl implements IndexExplainService { } break; } - case "district": - if ("zishen".equals(type)) { + case DISTRICT: + if (IndexConstant.ZI_SHEN.equals(type)) { headers = IndexConstant.getStandardSelfHeaders(allIndexCode); - } else if ("xiaji".equals(type)) { + } else if (IndexConstant.XIA_JI.equals(type)) { headers = new ArrayList<>(IndexConstant.QuantityLastHeader); if (allIndexCode.contains("quzhibumen")) { headers.add(0, "区直部门各项治理指数指标"); @@ -306,10 +341,10 @@ public class IndexExplainServiceImpl implements IndexExplainService { } break; default: - if ("zishen".equals(type)) { + if (IndexConstant.ZI_SHEN.equals(type)) { headers = IndexConstant.getStandardSelfHeaders(allIndexCode); - } else if ("xiaji".equals(type)) { + } else if (IndexConstant.XIA_JI.equals(type)) { headers = IndexConstant.getStandardSubHeaders(allIndexCode); } } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/fact/impl/FactIndexServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/fact/impl/FactIndexServiceImpl.java index 596b1e9dd6..7a5eeee0d1 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/fact/impl/FactIndexServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/fact/impl/FactIndexServiceImpl.java @@ -335,6 +335,11 @@ public class FactIndexServiceImpl implements FactIndexService { resultList.forEach(result -> { list.stream().filter(dto -> dto.getIndexCode().equals(result.getKey())).forEach(l -> { result.setShowType(l.getValueType()); + //整数 + if (FactConstant.DECIMAL.equals(l.getValueType())) { + BigDecimal num = new BigDecimal(result.getValue()).setScale(0, BigDecimal.ROUND_HALF_UP); + result.setValue(num.toString()); + } //小数类型,四舍五入保留小数点后一位 if (FactConstant.DECIMAL.equals(l.getValueType())) { BigDecimal num = new BigDecimal(result.getValue()).setScale(1, BigDecimal.ROUND_HALF_UP); diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactIndexAgencySubScoreDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactIndexAgencySubScoreDao.xml index d1b1dafeea..aafd8dd25b 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactIndexAgencySubScoreDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactIndexAgencySubScoreDao.xml @@ -46,9 +46,12 @@ fact.index_code, IF(fact.origin_value='',0,IFNULL(fact.origin_value,0)) AS origin_value, round(fact.score,1) AS score, - round(fact.WEIGHT,2) AS weight + round(fact.WEIGHT,2) AS weight, + SAMPLE_COUNT, + dict.VALUE_TYPE FROM fact_index_agency_sub_score fact + LEFT JOIN index_dict dict ON fact.index_code = dict.index_code WHERE fact.del_flag = '0' AND fact.all_parent_index_code = #{allParentIndexCode} diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactIndexCpcSubScoreDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactIndexCpcSubScoreDao.xml index 84ea0eca60..4e7171912d 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactIndexCpcSubScoreDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactIndexCpcSubScoreDao.xml @@ -29,7 +29,7 @@ +