diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
index fc5c0c7a31..e1fa2fa2c7 100644
--- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
@@ -303,7 +303,7 @@ public class RedisKeys {
* @return
*/
public static String getIndexCodeFieldReKey() {
- return rootPrefix.concat("data:index:indexcode:field");
+ return rootPrefix.concat("stats:indexcal:indexcode:field");
}
/**
diff --git a/epmet-module/data-statistical/data-statistical-server/pom.xml b/epmet-module/data-statistical/data-statistical-server/pom.xml
index 58730c03e9..688b700e45 100644
--- a/epmet-module/data-statistical/data-statistical-server/pom.xml
+++ b/epmet-module/data-statistical/data-statistical-server/pom.xml
@@ -226,7 +226,7 @@
true
- 8108
+ 8109
local
diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/indexcal/CpcScoreDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/indexcal/CpcScoreDao.java
index a5469cbb79..c03786ecfe 100644
--- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/indexcal/CpcScoreDao.java
+++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/indexcal/CpcScoreDao.java
@@ -80,7 +80,7 @@ public interface CpcScoreDao extends BaseDao {
int deleteByMonthId(@Param("customerId") String customerId, @Param("monthId") String monthId, @Param("indexCode") String indexCode, @Param("deleteSize") Integer deleteSize, @Param("isTotal") String isTotal);
- List getPartScore(@Param("customerId") String customerId, @Param("monthId") String monthId, @Param("allParentCode") String allParentCode);
+ List getPartScore(@Param("customerId") String customerId, @Param("monthId") String monthId, @Param("allParentCode") String allParentCode, @Param("offset") int offset, @Param("pageSize") int pageSize);
int insertBatch(@Param("list") Collection values);
}
\ No newline at end of file
diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/CpcIndexCalculateServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/CpcIndexCalculateServiceImpl.java
index 610b6c51aa..07c268be31 100644
--- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/CpcIndexCalculateServiceImpl.java
+++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/CpcIndexCalculateServiceImpl.java
@@ -79,39 +79,64 @@ public class CpcIndexCalculateServiceImpl implements CpcIndexCalculateService {
}
Map cpcScoreTotalMap = new HashMap<>();
Map indexWeightMap = parentIndexDetails.stream().collect(Collectors.toMap(IndexGroupDetailEntity::getIndexCode, o -> o));
+ int pageNo = NumConstant.ONE;
+ int pageSize = IndexCalConstant.PAGE_SIZE;
+ List list = null;
- //获取数据
- List list = cpcScoreDao.getPartScore(formDTO.getCustomerId(), formDTO.getMonthId(), IndexCodeEnum.DANG_YUAN_XIANG_GUAN.getCode());
- if (CollectionUtils.isEmpty(list)) {
- log.error("calculateTotalScore cpcScoreDao.getPartScore return empty,customerId:{},monthId:{}", formDTO.getCustomerId(), formDTO.getMonthId());
- throw new RenException("客户四级指标分值记录不存在");
- }
- Map> userGroupMap = list.stream().collect(Collectors.groupingBy(CpcScoreEntity::getUserId));
- userGroupMap.forEach((userId, partScoreList) -> {
- CpcScoreEntity totalEntity = null;
- for (CpcScoreEntity part : partScoreList) {
- IndexGroupDetailEntity indexGroupDetailEntity = indexWeightMap.get(part.getIndexCode());
- if (indexGroupDetailEntity == null) {
- log.error(" indexCode:{} 在指标明细中不存在", part.getIndexCode());
- continue;
- }
- if (totalEntity == null) {
- totalEntity = ConvertUtils.sourceToTarget(part, CpcScoreEntity.class);
- totalEntity.setIsTotal(NumConstant.ONE_STR);
- totalEntity.setIndexCode(IndexCodeEnum.DANG_YUAN_XIANG_GUAN.getCode());
- totalEntity.setScore(new BigDecimal(NumConstant.ZERO));
- totalEntity.setAllParentIndexCode(NumConstant.ZERO_STR);
- cpcScoreTotalMap.put(userId, totalEntity);
+ Map preLastCpcScoreTotalMap = new HashMap<>();
+ CpcScoreEntity currentLastCpcScore = null;
+ do {
+ //获取数据
+ list = cpcScoreDao.getPartScore(formDTO.getCustomerId(), formDTO.getMonthId(), IndexCodeEnum.DANG_YUAN_XIANG_GUAN.getCode(), (pageNo - NumConstant.ONE) * pageSize, pageSize);
+ pageNo++;
+ if (CollectionUtils.isEmpty(list)) {
+ log.error("calculateTotalScore cpcScoreDao.getPartScore return empty,customerId:{},monthId:{}", formDTO.getCustomerId(), formDTO.getMonthId());
+ } else {
+ //获取最后一条
+ currentLastCpcScore = list.get(list.size() - 1);
+ if (preLastCpcScoreTotalMap.containsKey(currentLastCpcScore.getUserId())) {
+ cpcScoreTotalMap.putAll(preLastCpcScoreTotalMap);
+ preLastCpcScoreTotalMap.put(currentLastCpcScore.getUserId(), null);
}
- //自建群活跃度——议题转项目率 有阈值 >60%按60%算
- BigDecimal total = part.getScore().multiply(indexGroupDetailEntity.getWeight());
- log.info("userId:{},分数:{},权重:{},total:{}", userId, part.getScore(), indexGroupDetailEntity.getWeight(), total);
- totalEntity.setScore(totalEntity.getScore().add(total));
+ Map> userGroupMap = list.stream().collect(Collectors.groupingBy(CpcScoreEntity::getUserId));
+ userGroupMap.forEach((userId, partScoreList) -> {
+ CpcScoreEntity totalEntity = null;
+ for (CpcScoreEntity part : partScoreList) {
+ IndexGroupDetailEntity indexGroupDetailEntity = indexWeightMap.get(part.getIndexCode());
+ if (indexGroupDetailEntity == null) {
+ log.error(" indexCode:{} 在指标明细中不存在", part.getIndexCode());
+ continue;
+ }
+ if (totalEntity == null) {
+ totalEntity = ConvertUtils.sourceToTarget(part, CpcScoreEntity.class);
+ totalEntity.setIsTotal(NumConstant.ONE_STR);
+ totalEntity.setIndexCode(IndexCodeEnum.DANG_YUAN_XIANG_GUAN.getCode());
+ totalEntity.setScore(new BigDecimal(NumConstant.ZERO));
+ totalEntity.setAllParentIndexCode(NumConstant.ZERO_STR);
+
+ if (preLastCpcScoreTotalMap.containsKey(part.getUserId())) {
+ preLastCpcScoreTotalMap.put(part.getUserId(), part);
+ } else {
+ cpcScoreTotalMap.put(userId, totalEntity);
+ }
+ }
+ //自建群活跃度——议题转项目率 有阈值 >60%按60%算
+ BigDecimal total = part.getScore().multiply(indexGroupDetailEntity.getWeight());
+ log.info("userId:{},分数:{},权重:{},total:{}", userId, part.getScore(), indexGroupDetailEntity.getWeight(), total);
+ totalEntity.setScore(totalEntity.getScore().add(total));
+ }
+ });
}
- });
- //删除总分 然后插入
- cpcScoreDao.deleteByMonthId(formDTO.getCustomerId(), formDTO.getMonthId(), IndexCodeEnum.DANG_YUAN_XIANG_GUAN.getCode(), IndexCalConstant.DELETE_SIZE, NumConstant.ONE_STR);
- insertCpcScoreBatch(formDTO, cpcScoreTotalMap.values().stream().collect(Collectors.toList()), IndexCodeEnum.DANG_YUAN_XIANG_GUAN.getCode());
+
+ //没查询到数据 就把上次的放进去
+ if (list == null || list.size() < pageSize || !CollectionUtils.isEmpty(preLastCpcScoreTotalMap)) {
+ cpcScoreTotalMap.putAll(preLastCpcScoreTotalMap);
+ }
+ //删除总分 然后插入
+ cpcScoreDao.deleteByMonthId(formDTO.getCustomerId(), formDTO.getMonthId(), IndexCodeEnum.DANG_YUAN_XIANG_GUAN.getCode(), IndexCalConstant.DELETE_SIZE, NumConstant.ONE_STR);
+ insertCpcScoreBatch(formDTO, cpcScoreTotalMap.values().stream().collect(Collectors.toList()), IndexCodeEnum.DANG_YUAN_XIANG_GUAN.getCode());
+ } while (!CollectionUtils.isEmpty(list));
+
}
/**
diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/logback-spring.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/logback-spring.xml
index 8ad6400d13..99ae63af58 100644
--- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/logback-spring.xml
+++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/logback-spring.xml
@@ -139,7 +139,7 @@
-
+
diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/indexcal/CpcScoreDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/indexcal/CpcScoreDao.xml
index 4d253f3d76..c6e0decab9 100644
--- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/indexcal/CpcScoreDao.xml
+++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/indexcal/CpcScoreDao.xml
@@ -40,6 +40,8 @@
and MONTH_ID = #{monthId,jdbcType=VARCHAR}
and ALL_PARENT_INDEX_CODE = #{allParentCode,jdbcType=VARCHAR}
AND IS_TOTAL = '0'
+ order by USER_ID
+ limit #{offset}, #{pageSize}