Browse Source

Merge remote-tracking branch 'origin/dev_screen_data' into dev_screen_data

dev_shibei_match
wxz 5 years ago
parent
commit
792ffb54db
  1. 98
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/indexcal/impl/GridCorreLationServiceImpl.java

98
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/indexcal/impl/GridCorreLationServiceImpl.java

@ -2,6 +2,7 @@ package com.epmet.service.indexcal.impl;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.constant.IndexCalConstant; import com.epmet.constant.IndexCalConstant;
import com.epmet.dao.indexcoll.FactIndexGovrnAblityGridMonthlyDao; import com.epmet.dao.indexcoll.FactIndexGovrnAblityGridMonthlyDao;
@ -70,33 +71,45 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
@Override @Override
public Boolean calculateGridCorreLation(CalculateCommonFormDTO formDTO) { public Boolean calculateGridCorreLation(CalculateCommonFormDTO formDTO) {
boolean resultFlag = false; boolean resultFlag = false;
//1、计算网格相关-党建能力
List<IndexGroupDetailEntity> dangJianNengLiList = indexGroupDetailService.getDetailListByParentCode(formDTO.getCustomerId(), List<IndexGroupDetailEntity> dangJianNengLiList = indexGroupDetailService.getDetailListByParentCode(formDTO.getCustomerId(),
IndexCodeEnum.WANG_GE_XIANG_GUAN.getCode(), IndexCodeEnum.WANG_GE_XIANG_GUAN.getCode(),
IndexCodeEnum.DANG_JIAN_NENG_LI.getCode()); IndexCodeEnum.DANG_JIAN_NENG_LI.getCode());
if (!CollectionUtils.isEmpty(dangJianNengLiList)) { if (CollectionUtils.isEmpty(dangJianNengLiList)) {
//1、计算网格相关-党建能力 logger.warn("calculateGridDangJian customerId:{} have not any indexGroupDetail", formDTO.getCustomerId());
calculateGridDangJian(formDTO, dangJianNengLiList); throw new RenException("客户【网格相关:党建能力】指标权重信息不存在");
} }
calculateGridDangJian(formDTO, dangJianNengLiList);
//2、计算网格相关-治理能力
List<IndexGroupDetailEntity> zhiLiNengLiList = indexGroupDetailService.getDetailListByParentCode(formDTO.getCustomerId(), List<IndexGroupDetailEntity> zhiLiNengLiList = indexGroupDetailService.getDetailListByParentCode(formDTO.getCustomerId(),
IndexCodeEnum.WANG_GE_XIANG_GUAN.getCode(), IndexCodeEnum.WANG_GE_XIANG_GUAN.getCode(),
IndexCodeEnum.ZHI_LI_NENG_LI.getCode()); IndexCodeEnum.ZHI_LI_NENG_LI.getCode());
if (!CollectionUtils.isEmpty(zhiLiNengLiList)) { if (CollectionUtils.isEmpty(zhiLiNengLiList)) {
//2、计算网格相关-治理能力 logger.warn("calculateGridZhiLi customerId:{} have not any indexGroupDetail", formDTO.getCustomerId());
calculateGridZhiLi(formDTO, zhiLiNengLiList); throw new RenException("客户【网格相关:治理能力】指标权重信息不存在");
} }
calculateGridZhiLi(formDTO, zhiLiNengLiList);
//3、计算网格相关-服务能力
List<IndexGroupDetailEntity> fuWuNengLiList = indexGroupDetailService.getDetailListByParentCode(formDTO.getCustomerId(), List<IndexGroupDetailEntity> fuWuNengLiList = indexGroupDetailService.getDetailListByParentCode(formDTO.getCustomerId(),
IndexCodeEnum.WANG_GE_XIANG_GUAN.getCode(), IndexCodeEnum.WANG_GE_XIANG_GUAN.getCode(),
IndexCodeEnum.FU_WU_NENG_LI.getCode()); IndexCodeEnum.FU_WU_NENG_LI.getCode());
if (!CollectionUtils.isEmpty(fuWuNengLiList)) { if (CollectionUtils.isEmpty(fuWuNengLiList)) {
//3、计算网格相关-服务能力 logger.warn("calculateGridFuWu customerId:{} have not any indexGroupDetail", formDTO.getCustomerId());
calculateGridFuWu(formDTO, fuWuNengLiList); throw new RenException("客户【网格相关:服务能力】指标权重信息不存在");
} }
//计算网格相关总分 calculateGridFuWu(formDTO, fuWuNengLiList);
//4、计算网格相关总分
List<IndexGroupDetailEntity> wgxgList = indexGroupDetailService.getDetailListByParentCode(formDTO.getCustomerId(), List<IndexGroupDetailEntity> wgxgList = indexGroupDetailService.getDetailListByParentCode(formDTO.getCustomerId(),
IndexCodeEnum.WANG_GE_XIANG_GUAN.getCode()); IndexCodeEnum.WANG_GE_XIANG_GUAN.getCode());
if (!CollectionUtils.isEmpty(wgxgList)) { if (CollectionUtils.isEmpty(wgxgList)) {
calculateGridTotal(formDTO, wgxgList,IndexCodeEnum.WANG_GE_XIANG_GUAN.getCode()); logger.warn("calculateGridTotal customerId:{} have not any indexGroupDetail", formDTO.getCustomerId());
throw new RenException("客户【网格相关】指标权重信息不存在");
} }
calculateGridTotal(formDTO, wgxgList, IndexCodeEnum.WANG_GE_XIANG_GUAN.getCode());
resultFlag = true; resultFlag = true;
return resultFlag; return resultFlag;
} }
@ -122,8 +135,12 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
logger.info(String.format("共%s条数据,分%s次计算", total, totalPage)); logger.info(String.format("共%s条数据,分%s次计算", total, totalPage));
//每一组指标的最大值,key:code_MIN/MAX //每一组指标的最大值,key:code_MIN/MAX
Map<String, Object> minAndMaxMap = queryPartyAblityGridMinAndMax(formDTO.getCustomerId(), formDTO.getMonthId()); Map<String, Object> minAndMaxMap = queryPartyAblityGridMinAndMax(formDTO.getCustomerId(), formDTO.getMonthId());
if (CollectionUtils.isEmpty(minAndMaxMap)) {
logger.error("calculateGridDangJian queryPartyAblityGridMinAndMax customerId:{} monthId:{} have not any fact record", formDTO.getCustomerId(),formDTO.getMonthId());
return;
}
//指标集合 //指标集合
Map<String, IndexInputVO<BigDecimal>> indexMap = getGridCorrelationIndexInputVO(formDTO, indexList, minAndMaxMap); Map<String, IndexInputVO<BigDecimal>> indexMap = buildGridCorrelationIndexInputVO(formDTO, indexList, minAndMaxMap);
List<HashMap<String, BigDecimal>> resultMapList = new ArrayList<>(); List<HashMap<String, BigDecimal>> resultMapList = new ArrayList<>();
//分页查询采集记录 //分页查询采集记录
for (int pageNo = 1; pageNo <= totalPage; pageNo++) { for (int pageNo = 1; pageNo <= totalPage; pageNo++) {
@ -160,12 +177,12 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
resultMapList.add(resultMap); resultMapList.add(resultMap);
} }
// 保存中间表 // 保存中间表
saveGridCorreLationDangJian(formDTO, resultMapList,IndexCodeEnum.DANG_JIAN_NENG_LI.getCode(),NumConstant.ZERO_STR); saveGridCorreLationResult(formDTO, resultMapList, IndexCodeEnum.DANG_JIAN_NENG_LI.getCode(), NumConstant.ZERO_STR);
} }
/** /**
* @return java.util.Map<java.lang.String,java.math.BigDecimal>
* @param calculateCommonFormDTO * @param calculateCommonFormDTO
* @return java.util.Map<java.lang.String, java.math.BigDecimal>
* @author yinzuomei * @author yinzuomei
* @description 获取网格内党员的联系群众能力考评分平均值的最大值最小值 * @description 获取网格内党员的联系群众能力考评分平均值的最大值最小值
* @Date 2020/8/31 9:51 * @Date 2020/8/31 9:51
@ -186,9 +203,9 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
} }
/** /**
* @return java.math.BigDecimal
* @param calculateCommonFormDTO * @param calculateCommonFormDTO
* @param gridId 网格id * @param gridId 网格id
* @return java.math.BigDecimal
* @author yinzuomei * @author yinzuomei
* @description 获取网格组织内党员的联系群众能力考评分平均值 * @description 获取网格组织内党员的联系群众能力考评分平均值
* @Date 2020/8/31 9:50 * @Date 2020/8/31 9:50
@ -202,9 +219,9 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
} }
/** /**
* @return java.math.BigDecimal
* @param formDTO * @param formDTO
* @param gridId * @param gridId
* @return java.math.BigDecimal
* @author yinzuomei * @author yinzuomei
* @description 组织内党员的参与议事能力考评分平均值 * @description 组织内党员的参与议事能力考评分平均值
* @Date 2020/8/31 15:51 * @Date 2020/8/31 15:51
@ -218,8 +235,8 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
} }
/** /**
* @return java.util.Map<java.lang.String,java.math.BigDecimal>
* @param calculateCommonFormDTO * @param calculateCommonFormDTO
* @return java.util.Map<java.lang.String, java.math.BigDecimal>
* @author yinzuomei * @author yinzuomei
* @description 网格内党员的参与议事能力考评分平均值 最大值最小值 * @description 网格内党员的参与议事能力考评分平均值 最大值最小值
* @Date 2020/8/31 14:41 * @Date 2020/8/31 14:41
@ -242,14 +259,14 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
/** /**
* @param formDTO 客户id 月份id: yyyyMM * @param formDTO 客户id 月份id: yyyyMM
* @param resultMapList * @param resultMapList
* @param indexCode 指标编码 * @param indexCode 指标编码: 党建能力dangjiannengli治理能力zhilinengli服务能力fuwunengli
* @param isTotal 1总分0不是 * @param isTotal 1总分0不是
* @return void * @return void
* @author yinzuomei * @author yinzuomei
* @description 保存网格相关三大能力值 * @description 保存网格相关三大能力值
* @Date 2020/8/30 22:50 * @Date 2020/8/30 22:50
**/ **/
private void saveGridCorreLationDangJian(CalculateCommonFormDTO formDTO, private void saveGridCorreLationResult(CalculateCommonFormDTO formDTO,
List<HashMap<String, BigDecimal>> resultMapList, List<HashMap<String, BigDecimal>> resultMapList,
String indexCode, String indexCode,
String isTotal) { String isTotal) {
@ -286,21 +303,24 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
* @param indexMap * @param indexMap
* @return java.util.List<com.epmet.support.normalizing.batch.IndexOutputVO> * @return java.util.List<com.epmet.support.normalizing.batch.IndexOutputVO>
* @author yinzuomei * @author yinzuomei
* @description * @description 调用计算器计算每个指标下各个网格的总分
* @Date 2020/8/30 21:40 * @Date 2020/8/30 21:40
**/ **/
private HashMap<String, BigDecimal> calculate(Map<String, IndexInputVO<BigDecimal>> indexMap) { private HashMap<String, BigDecimal> calculate(Map<String, IndexInputVO<BigDecimal>> indexMap) {
//构造入参 //构造入参
List<IndexInputVO> indexInputVOS = this.getIndexInputVOList(indexMap); List<IndexInputVO> indexInputVOS = this.getIndexInputVOList(indexMap);
logger.info("计算的参数:{}", indexInputVOS);
BatchScoreCalculator batchScoreCalculator = new BatchScoreCalculator(); BatchScoreCalculator batchScoreCalculator = new BatchScoreCalculator();
return batchScoreCalculator.getScoreCountOfSampleId(indexInputVOS); HashMap<String, BigDecimal> resultMap = batchScoreCalculator.getScoreCountOfSampleId(indexInputVOS);
logger.info("计算的结果:{}", resultMap);
return resultMap;
} }
/** /**
* @param indexMap * @param indexMap
* @return java.util.List<com.epmet.support.normalizing.batch.IndexInputVO> * @return java.util.List<com.epmet.support.normalizing.batch.IndexInputVO>
* @author yinzuomei * @author yinzuomei
* @description * @description map遍历转为List
* @Date 2020/8/30 18:34 * @Date 2020/8/30 18:34
**/ **/
private List<IndexInputVO> getIndexInputVOList(Map<String, IndexInputVO<BigDecimal>> indexMap) { private List<IndexInputVO> getIndexInputVOList(Map<String, IndexInputVO<BigDecimal>> indexMap) {
@ -321,13 +341,14 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
* @description 构造网格相关 指标计算参数 * @description 构造网格相关 指标计算参数
* @Date 2020/8/30 15:56 * @Date 2020/8/30 15:56
**/ **/
private Map<String, IndexInputVO<BigDecimal>> getGridCorrelationIndexInputVO(CalculateCommonFormDTO formDTO, List<IndexGroupDetailEntity> indexList, Map<String, Object> minAndMaxMap) { private Map<String, IndexInputVO<BigDecimal>> buildGridCorrelationIndexInputVO(CalculateCommonFormDTO formDTO, List<IndexGroupDetailEntity> indexList, Map<String, Object> minAndMaxMap) {
Map<String, IndexInputVO<BigDecimal>> map = new HashMap<>(); Map<String, IndexInputVO<BigDecimal>> map = new HashMap<>();
for (int indexNum = 0; indexNum < indexList.size(); indexNum++) { for (IndexGroupDetailEntity index : indexList) {
IndexGroupDetailEntity index = indexList.get(indexNum);
IndexInputVO indexInputVO = new IndexInputVO(); IndexInputVO indexInputVO = new IndexInputVO();
// 指标code // 指标code
indexInputVO.setIndexId(index.getIndexCode()); indexInputVO.setIndexId(index.getIndexCode());
//阈值
indexInputVO.setThreshold(index.getThreshold());
//权重 //权重
indexInputVO.setWeight(index.getWeight()); indexInputVO.setWeight(index.getWeight());
BigDecimal minValue = null; BigDecimal minValue = null;
@ -347,10 +368,10 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
//获取指标对应的列名 //获取指标对应的列名
String fieldName = indexCodeFieldReService.getFieldNameByIndexCode(index.getIndexCode()); String fieldName = indexCodeFieldReService.getFieldNameByIndexCode(index.getIndexCode());
if (StringUtils.isBlank(fieldName)) { if (StringUtils.isBlank(fieldName)) {
logger.error("index_code:"+index.getIndexCode()+" not find field_name"); logger.error("index_code:{} ",index.getIndexCode(),"not find field_name");
continue; continue;
} }
logger.info("INDEX_CODE=" + index.getIndexCode()+";FIELD_ID=" + fieldName ); logger.info("index_code:{} ",index.getIndexCode(),"field_id :{} ",fieldName);
String minValueKey = fieldName.concat(StrConstant.UNDER_LINE).concat(StrConstant.MIN); String minValueKey = fieldName.concat(StrConstant.UNDER_LINE).concat(StrConstant.MIN);
String maxValueKey = fieldName.concat(StrConstant.UNDER_LINE).concat(StrConstant.MAX); String maxValueKey = fieldName.concat(StrConstant.UNDER_LINE).concat(StrConstant.MAX);
minValue = new BigDecimal(String.valueOf(minAndMaxMap.get(minValueKey))); minValue = new BigDecimal(String.valueOf(minAndMaxMap.get(minValueKey)));
@ -392,8 +413,12 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
logger.info(String.format("共%s条数据,分%s次计算", total, totalPage)); logger.info(String.format("共%s条数据,分%s次计算", total, totalPage));
//每一组指标的最大值,key:code_MIN/MAX //每一组指标的最大值,key:code_MIN/MAX
Map<String, Object> minAndMaxMap = queryGovrnAblityGridMinAndMax(formDTO.getCustomerId(), formDTO.getMonthId()); Map<String, Object> minAndMaxMap = queryGovrnAblityGridMinAndMax(formDTO.getCustomerId(), formDTO.getMonthId());
if (CollectionUtils.isEmpty(minAndMaxMap)) {
logger.error("calculateGridZhiLi queryGovrnAblityGridMinAndMax customerId:{} monthId:{} have not any fact record", formDTO.getCustomerId(),formDTO.getMonthId());
return;
}
//指标集合 //指标集合
Map<String, IndexInputVO<BigDecimal>> indexMap = getGridCorrelationIndexInputVO(formDTO, indexList, minAndMaxMap); Map<String, IndexInputVO<BigDecimal>> indexMap = buildGridCorrelationIndexInputVO(formDTO, indexList, minAndMaxMap);
List<HashMap<String, BigDecimal>> resultMapList = new ArrayList<>(); List<HashMap<String, BigDecimal>> resultMapList = new ArrayList<>();
//分页查询采集记录 //分页查询采集记录
for (int pageNo = 1; pageNo <= totalPage; pageNo++) { for (int pageNo = 1; pageNo <= totalPage; pageNo++) {
@ -428,7 +453,7 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
resultMapList.add(resultMap); resultMapList.add(resultMap);
} }
// 保存中间表 // 保存中间表
saveGridCorreLationDangJian(formDTO, resultMapList,IndexCodeEnum.ZHI_LI_NENG_LI.getCode(),NumConstant.ZERO_STR); saveGridCorreLationResult(formDTO, resultMapList, IndexCodeEnum.ZHI_LI_NENG_LI.getCode(), NumConstant.ZERO_STR);
} }
@ -452,8 +477,12 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
logger.info(String.format("共%s条数据,分%s次计算", total, totalPage)); logger.info(String.format("共%s条数据,分%s次计算", total, totalPage));
//每一组指标的最大值,key:code_MIN/MAX //每一组指标的最大值,key:code_MIN/MAX
Map<String, Object> minAndMaxMap = queryServiceAblityGridMinAndMax(formDTO.getCustomerId(), formDTO.getMonthId()); Map<String, Object> minAndMaxMap = queryServiceAblityGridMinAndMax(formDTO.getCustomerId(), formDTO.getMonthId());
if (CollectionUtils.isEmpty(minAndMaxMap)) {
logger.error("calculateGridFuWu queryServiceAblityGridMinAndMax customerId:{} monthId:{} have not any fact record", formDTO.getCustomerId(),formDTO.getMonthId());
return;
}
//指标集合 //指标集合
Map<String, IndexInputVO<BigDecimal>> indexMap = getGridCorrelationIndexInputVO(formDTO, indexList, minAndMaxMap); Map<String, IndexInputVO<BigDecimal>> indexMap = buildGridCorrelationIndexInputVO(formDTO, indexList, minAndMaxMap);
List<HashMap<String, BigDecimal>> resultMapList = new ArrayList<>(); List<HashMap<String, BigDecimal>> resultMapList = new ArrayList<>();
//分页查询采集记录 //分页查询采集记录
for (int pageNo = 1; pageNo <= totalPage; pageNo++) { for (int pageNo = 1; pageNo <= totalPage; pageNo++) {
@ -484,7 +513,7 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
resultMapList.add(resultMap); resultMapList.add(resultMap);
} }
// 保存中间表 // 保存中间表
saveGridCorreLationDangJian(formDTO, resultMapList,IndexCodeEnum.FU_WU_NENG_LI.getCode(),NumConstant.ZERO_STR); saveGridCorreLationResult(formDTO, resultMapList, IndexCodeEnum.FU_WU_NENG_LI.getCode(), NumConstant.ZERO_STR);
} }
/** /**
@ -498,6 +527,10 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
private void calculateGridTotal(CalculateCommonFormDTO formDTO, List<IndexGroupDetailEntity> indexList, String indexCode) { private void calculateGridTotal(CalculateCommonFormDTO formDTO, List<IndexGroupDetailEntity> indexList, String indexCode) {
//查询总记录数 //查询总记录数
List<GridScoreDTO> gridScoreDTOList = gridScoreDao.selectList(formDTO); List<GridScoreDTO> gridScoreDTOList = gridScoreDao.selectList(formDTO);
if(CollectionUtils.isEmpty(gridScoreDTOList)){
logger.error("calculateGridTotal gridScoreDao.selectList return empty,customerId:{},monthId:{}", formDTO.getCustomerId(), formDTO.getMonthId());
throw new RenException("客户一级指标分值记录不存在");
}
Map<String, IndexGroupDetailEntity> indexMap = indexList.stream().collect(Collectors.toMap(IndexGroupDetailEntity::getIndexCode, Function.identity())); Map<String, IndexGroupDetailEntity> indexMap = indexList.stream().collect(Collectors.toMap(IndexGroupDetailEntity::getIndexCode, Function.identity()));
List<GridScoreEntity> gridScoreEntityList = new ArrayList<>(); List<GridScoreEntity> gridScoreEntityList = new ArrayList<>();
for (GridScoreDTO gridScoreDTO : gridScoreDTOList) { for (GridScoreDTO gridScoreDTO : gridScoreDTOList) {
@ -535,6 +568,7 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
} }
System.out.println(totalScore); System.out.println(totalScore);
} }
/** /**
* @param customerId * @param customerId
* @return com.epmet.dto.indexcal.CustomerGridInfoDTO * @return com.epmet.dto.indexcal.CustomerGridInfoDTO

Loading…
Cancel
Save