Browse Source

添加阈值

dev_shibei_match
yinzuomei 5 years ago
parent
commit
358ced173b
  1. 206
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/indexcal/impl/GridCorreLationServiceImpl.java

206
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,9 +135,13 @@ 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++) {
int pageIndex = (pageNo - NumConstant.ONE) * IndexCalConstant.PAGE_SIZE; int pageIndex = (pageNo - NumConstant.ONE) * IndexCalConstant.PAGE_SIZE;
@ -149,8 +166,8 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
//组织内党员的联系群众能力考评分(平均值) //组织内党员的联系群众能力考评分(平均值)
logger.info("组织内党员的联系群众能力考评分(平均值) 单独处理"); logger.info("组织内党员的联系群众能力考评分(平均值) 单独处理");
//网格内党员的联系群众能力考评分(平均值) //网格内党员的联系群众能力考评分(平均值)
String gridId=(String) recordMap.get(IndexCalConstant.GRID_ID); String gridId = (String) recordMap.get(IndexCalConstant.GRID_ID);
BigDecimal contactMassesAvgValue = getGridContactMassesAvgValue(formDTO,gridId); BigDecimal contactMassesAvgValue = getGridContactMassesAvgValue(formDTO, gridId);
SampleValue<BigDecimal> contactMassesAblityValue = new SampleValue((String) recordMap.get(IndexCalConstant.GRID_ID), contactMassesAvgValue); SampleValue<BigDecimal> contactMassesAblityValue = new SampleValue((String) recordMap.get(IndexCalConstant.GRID_ID), contactMassesAvgValue);
value.getIndexValueVOs().add(contactMassesAblityValue); value.getIndexValueVOs().add(contactMassesAblityValue);
} }
@ -160,96 +177,96 @@ 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
**/ **/
private Map<String, BigDecimal> getContactMassesAblityMap(CalculateCommonFormDTO calculateCommonFormDTO) { private Map<String, BigDecimal> getContactMassesAblityMap(CalculateCommonFormDTO calculateCommonFormDTO) {
Map<String, BigDecimal> map=new HashMap<>(); Map<String, BigDecimal> map = new HashMap<>();
List<BigDecimal> list=cpcScoreDao.selectListGridContactMassesAvgValue(calculateCommonFormDTO); List<BigDecimal> list = cpcScoreDao.selectListGridContactMassesAvgValue(calculateCommonFormDTO);
if(!CollectionUtils.isEmpty(list)){ if (!CollectionUtils.isEmpty(list)) {
BigDecimal minValue=Collections.min(list); BigDecimal minValue = Collections.min(list);
BigDecimal maxValue=Collections.max(list); BigDecimal maxValue = Collections.max(list);
map.put(StrConstant.MIN,minValue); map.put(StrConstant.MIN, minValue);
map.put(StrConstant.MAX,maxValue); map.put(StrConstant.MAX, maxValue);
return map; return map;
} }
map.put(StrConstant.MIN,new BigDecimal(NumConstant.ZERO_STR)); map.put(StrConstant.MIN, new BigDecimal(NumConstant.ZERO_STR));
map.put(StrConstant.MAX,new BigDecimal(NumConstant.ZERO_STR)); map.put(StrConstant.MAX, new BigDecimal(NumConstant.ZERO_STR));
return map; return map;
} }
/** /**
* @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
**/ **/
private BigDecimal getGridContactMassesAvgValue(CalculateCommonFormDTO calculateCommonFormDTO,String gridId) { private BigDecimal getGridContactMassesAvgValue(CalculateCommonFormDTO calculateCommonFormDTO, String gridId) {
BigDecimal result=cpcScoreDao.selectGridContactMassesAvgValue(calculateCommonFormDTO.getCustomerId(),calculateCommonFormDTO.getMonthId(),gridId); BigDecimal result = cpcScoreDao.selectGridContactMassesAvgValue(calculateCommonFormDTO.getCustomerId(), calculateCommonFormDTO.getMonthId(), gridId);
if(null==result){ if (null == result) {
return new BigDecimal(NumConstant.ZERO_STR); return new BigDecimal(NumConstant.ZERO_STR);
} }
return result; return result;
} }
/** /**
* @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
**/ **/
private BigDecimal getGridJoinIssueAvgValue(CalculateCommonFormDTO formDTO, String gridId) { private BigDecimal getGridJoinIssueAvgValue(CalculateCommonFormDTO formDTO, String gridId) {
BigDecimal result=cpcScoreDao.selectGridJoinIssueAvgValue(formDTO.getCustomerId(),formDTO.getMonthId(),gridId); BigDecimal result = cpcScoreDao.selectGridJoinIssueAvgValue(formDTO.getCustomerId(), formDTO.getMonthId(), gridId);
if(null==result){ if (null == result) {
return new BigDecimal(NumConstant.ZERO_STR); return new BigDecimal(NumConstant.ZERO_STR);
} }
return result; return result;
} }
/** /**
* @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
**/ **/
private Map<String, BigDecimal> getJoinIssueAblityMap(CalculateCommonFormDTO calculateCommonFormDTO){ private Map<String, BigDecimal> getJoinIssueAblityMap(CalculateCommonFormDTO calculateCommonFormDTO) {
Map<String, BigDecimal> map=new HashMap<>(); Map<String, BigDecimal> map = new HashMap<>();
List<BigDecimal> list=cpcScoreDao.selectListJoinIssueAvgValue(calculateCommonFormDTO); List<BigDecimal> list = cpcScoreDao.selectListJoinIssueAvgValue(calculateCommonFormDTO);
if(!CollectionUtils.isEmpty(list)){ if (!CollectionUtils.isEmpty(list)) {
BigDecimal minValue=Collections.min(list); BigDecimal minValue = Collections.min(list);
BigDecimal maxValue=Collections.max(list); BigDecimal maxValue = Collections.max(list);
map.put(StrConstant.MIN,minValue); map.put(StrConstant.MIN, minValue);
map.put(StrConstant.MAX,maxValue); map.put(StrConstant.MAX, maxValue);
return map; return map;
} }
map.put(StrConstant.MIN,new BigDecimal(NumConstant.ZERO_STR)); map.put(StrConstant.MIN, new BigDecimal(NumConstant.ZERO_STR));
map.put(StrConstant.MAX,new BigDecimal(NumConstant.ZERO_STR)); map.put(StrConstant.MAX, new BigDecimal(NumConstant.ZERO_STR));
return map; return map;
} }
/** /**
* @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) {
@ -277,7 +294,7 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
}); });
} }
if (!CollectionUtils.isEmpty(gridScoreEntityList)) { if (!CollectionUtils.isEmpty(gridScoreEntityList)) {
gridScoreDao.deleteByCusAndMonthId(formDTO.getCustomerId(), formDTO.getMonthId(), indexCode,isTotal); gridScoreDao.deleteByCusAndMonthId(formDTO.getCustomerId(), formDTO.getMonthId(), indexCode, isTotal);
gridScoreDao.insertBatches(gridScoreEntityList); gridScoreDao.insertBatches(gridScoreEntityList);
} }
} }
@ -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;
@ -335,22 +356,22 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
if (IndexCodeEnum.ZUZHINEIDANGYDLXQZNLKPFPJZ.getCode().equals(index.getIndexCode())) { if (IndexCodeEnum.ZUZHINEIDANGYDLXQZNLKPFPJZ.getCode().equals(index.getIndexCode())) {
//组织内党员的联系群众能力考评分(平均值) 获取最大值,最小值 //组织内党员的联系群众能力考评分(平均值) 获取最大值,最小值
logger.info("组织内党员的联系群众能力考评分(平均值) 单独处理"); logger.info("组织内党员的联系群众能力考评分(平均值) 单独处理");
Map<String,BigDecimal> contactMassesAblityMap= this.getContactMassesAblityMap(formDTO); Map<String, BigDecimal> contactMassesAblityMap = this.getContactMassesAblityMap(formDTO);
minValue=contactMassesAblityMap.get(StrConstant.MIN); minValue = contactMassesAblityMap.get(StrConstant.MIN);
maxValue=contactMassesAblityMap.get(StrConstant.MAX); maxValue = contactMassesAblityMap.get(StrConstant.MAX);
}else if(IndexCodeEnum.ZUZHINEIDANGYDSYYSNLKPFPJZ.getCode().equals(index.getIndexCode())){ } else if (IndexCodeEnum.ZUZHINEIDANGYDSYYSNLKPFPJZ.getCode().equals(index.getIndexCode())) {
logger.info("组织内党员的参与议事能力考评分(平均值) 单独处理"); logger.info("组织内党员的参与议事能力考评分(平均值) 单独处理");
Map<String,BigDecimal> joinIssueAblityMap= this.getJoinIssueAblityMap(formDTO); Map<String, BigDecimal> joinIssueAblityMap = this.getJoinIssueAblityMap(formDTO);
minValue=joinIssueAblityMap.get(StrConstant.MIN); minValue = joinIssueAblityMap.get(StrConstant.MIN);
maxValue=joinIssueAblityMap.get(StrConstant.MAX); maxValue = joinIssueAblityMap.get(StrConstant.MAX);
} else { } else {
//获取指标对应的列名 //获取指标对应的列名
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,9 +413,13 @@ 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++) {
int pageIndex = (pageNo - NumConstant.ONE) * IndexCalConstant.PAGE_SIZE; int pageIndex = (pageNo - NumConstant.ONE) * IndexCalConstant.PAGE_SIZE;
@ -417,8 +442,8 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
value.getIndexValueVOs().add(currentGridIndexValue); value.getIndexValueVOs().add(currentGridIndexValue);
} else if (IndexCodeEnum.ZUZHINEIDANGYDSYYSNLKPFPJZ.getCode().equals(key)) { } else if (IndexCodeEnum.ZUZHINEIDANGYDSYYSNLKPFPJZ.getCode().equals(key)) {
logger.info("组织内党员的参与议事能力考评分(平均值) 单独处理"); logger.info("组织内党员的参与议事能力考评分(平均值) 单独处理");
String gridId=(String) recordMap.get(IndexCalConstant.GRID_ID); String gridId = (String) recordMap.get(IndexCalConstant.GRID_ID);
BigDecimal joinAvgValue = getGridJoinIssueAvgValue(formDTO,gridId); BigDecimal joinAvgValue = getGridJoinIssueAvgValue(formDTO, gridId);
SampleValue<BigDecimal> contactMassesAblityValue = new SampleValue((String) recordMap.get(IndexCalConstant.GRID_ID), joinAvgValue); SampleValue<BigDecimal> contactMassesAblityValue = new SampleValue((String) recordMap.get(IndexCalConstant.GRID_ID), joinAvgValue);
value.getIndexValueVOs().add(contactMassesAblityValue); value.getIndexValueVOs().add(contactMassesAblityValue);
} }
@ -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,9 +477,13 @@ 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++) {
int pageIndex = (pageNo - NumConstant.ONE) * IndexCalConstant.PAGE_SIZE; int pageIndex = (pageNo - NumConstant.ONE) * IndexCalConstant.PAGE_SIZE;
@ -475,8 +504,8 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
//构造样本值对象 //构造样本值对象
SampleValue<BigDecimal> currentGridIndexValue = new SampleValue((String) recordMap.get(IndexCalConstant.GRID_ID), new BigDecimal(sampleValueStr)); SampleValue<BigDecimal> currentGridIndexValue = new SampleValue((String) recordMap.get(IndexCalConstant.GRID_ID), new BigDecimal(sampleValueStr));
value.getIndexValueVOs().add(currentGridIndexValue); value.getIndexValueVOs().add(currentGridIndexValue);
}else{ } else {
logger.error("index_code:"+key+" not find field_name"); logger.error("index_code:" + key + " not find field_name");
} }
}); });
}); });
@ -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,9 +527,13 @@ 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) {
GridScoreEntity gridScoreEntity = new GridScoreEntity(); GridScoreEntity gridScoreEntity = new GridScoreEntity();
gridScoreEntity.setCustomerId(gridScoreDTO.getCustomerId()); gridScoreEntity.setCustomerId(gridScoreDTO.getCustomerId());
gridScoreEntity.setGridId(gridScoreDTO.getGridId()); gridScoreEntity.setGridId(gridScoreDTO.getGridId());
@ -512,12 +545,12 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
gridScoreEntity.setYearId(gridScoreDTO.getYearId()); gridScoreEntity.setYearId(gridScoreDTO.getYearId());
gridScoreEntity.setMonthId(gridScoreDTO.getMonthId()); gridScoreEntity.setMonthId(gridScoreDTO.getMonthId());
gridScoreEntity.setScore(BigDecimal.ZERO); gridScoreEntity.setScore(BigDecimal.ZERO);
if(!CollectionUtils.isEmpty(gridScoreDTO.getDetailList())&&gridScoreDTO.getDetailList().size()!=3){ if (!CollectionUtils.isEmpty(gridScoreDTO.getDetailList()) && gridScoreDTO.getDetailList().size() != 3) {
logger.error("customerId:"+gridScoreDTO.getCustomerId()+";gridId:"+gridScoreDTO.getGridId()+";monthId:"+gridScoreDTO.getMonthId()+"能力值缺失,无法计算总值"); logger.error("customerId:" + gridScoreDTO.getCustomerId() + ";gridId:" + gridScoreDTO.getGridId() + ";monthId:" + gridScoreDTO.getMonthId() + "能力值缺失,无法计算总值");
continue; continue;
} }
for(GridScoreDetailDTO gridScoreDetailDTO:gridScoreDTO.getDetailList()){ for (GridScoreDetailDTO gridScoreDetailDTO : gridScoreDTO.getDetailList()) {
BigDecimal indexScore=gridScoreDetailDTO.getScore().multiply(indexMap.get(gridScoreDetailDTO.getIndexCode()).getWeight()); BigDecimal indexScore = gridScoreDetailDTO.getScore().multiply(indexMap.get(gridScoreDetailDTO.getIndexCode()).getWeight());
gridScoreEntity.setScore(gridScoreEntity.getScore().add(indexScore)); gridScoreEntity.setScore(gridScoreEntity.getScore().add(indexScore));
} }
gridScoreEntityList.add(gridScoreEntity); gridScoreEntityList.add(gridScoreEntity);
@ -529,12 +562,13 @@ public class GridCorreLationServiceImpl implements GridCorreLationService {
} }
public static void main(String[] args) { public static void main(String[] args) {
BigDecimal totalScore=BigDecimal.ZERO; BigDecimal totalScore = BigDecimal.ZERO;
for(int i=1;i<5;i++){ for (int i = 1; i < 5; i++) {
totalScore=totalScore.add(new BigDecimal("1.00")); totalScore = totalScore.add(new BigDecimal("1.00"));
} }
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