Browse Source

暂存

master
wangchao 5 years ago
parent
commit
a2ea1ddd53
  1. 14
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueVoteDetailRedis.java
  2. 100
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalServiceImpl.java
  3. 6
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java

14
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueVoteDetailRedis.java

@ -211,5 +211,19 @@ public class IssueVoteDetailRedis {
}
}
/**
* @Description 修改缓存中某个属性 - hash
* @param issueId
* @param field
* @param value
* @return void
* @author wangc
* @date 2020.05.22 11:31
**/
public void hset(String issueId,String field,Object value){
String key = new StringBuilder(IssueConstant.REDIS_KEY).append(issueId).toString();
redisUtils.hSet(key,field,value);
}
}

100
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalServiceImpl.java

@ -268,9 +268,21 @@ public class IssueVoteStatisticalServiceImpl extends BaseServiceImpl<IssueVoteSt
Set<String> notExistedIds = new HashSet<String>();
notExistedIds.addAll(ids);
notExistedIds.removeAll(statisiticalIds);
Set<String> existedIds = new HashSet<>();
existedIds.addAll(ids);
existedIds.retainAll(statisiticalIds);
//更新
//TODO 对ids进行更新 - 从缓存中拿取
//对ids进行更新 - 从缓存中拿取
List<IssueVoteStatisticalDTO> listToUpdate = new ArrayList<>();
setVotableCountsAndUpdateCache(listToUpdate,
existedIds.stream().flatMap(existedId -> issues.stream().filter(issue ->
StringUtils.equals(issue.getId(),existedId)).map(issueDTO -> {
return issueDTO;
})).collect(Collectors.toSet()),
votableCountMap);
//TODO 批量更新listToUpdate
if (notExistedIds.size() > NumConstant.ZERO) {
//新增
@ -325,7 +337,29 @@ public class IssueVoteStatisticalServiceImpl extends BaseServiceImpl<IssueVoteSt
.collect(Collectors.toList());
}
//TODO 批量查找collect的votableCount
//批量查找summary的votableCount
Map<String,List<IssueDTO>> gridIssueMap =
issues.stream().collect(Collectors.groupingBy(IssueDTO::getGridId));
for(IssueVoteStatisticalDTO vote : summary){
for(Map.Entry<String,List<IssueDTO>> entry : gridIssueMap.entrySet()){
String k = entry.getKey();
List<IssueDTO> v = entry.getValue();
if(null == v || v.size() < NumConstant.ONE) continue;
for(IssueDTO issue : v){
if(StringUtils.equals(vote.getIssueId(),issue.getId()))
vote.setVotableCount(
null == votableCountMap ? NumConstant.ZERO
: null == votableCountMap.get(k) ? NumConstant.ZERO : votableCountMap.get(k)
);
}
}
}
for(Map.Entry<String,List<IssueDTO>> entry : gridIssueMap.entrySet()){
String k = entry.getKey();
List<IssueDTO> v = entry.getValue();
}
//TODO 批量插入
}
@ -347,29 +381,9 @@ public class IssueVoteStatisticalServiceImpl extends BaseServiceImpl<IssueVoteSt
Map<String,List<IssueDTO>> gridIssueMap =
issues.stream().collect(Collectors.groupingBy(IssueDTO::getGridId));
setVotableCountsAndUpdateCache(listToUpdate,issues,votableCountMap);
for(Map.Entry<String,List<IssueDTO>> entry : gridIssueMap.entrySet()){
String k = entry.getKey();
List<IssueDTO> v = entry.getValue();
for(IssueDTO issue : v){
IssueVoteStatisticalDTO vote = new IssueVoteStatisticalDTO();
vote.setIssueId(issue.getId());
VoteRedisFormDTO cache = issueVoteDetailRedis.get(issue.getId());
if(null == cache)
continue;
vote.setSupportCount(cache.getSupportAmount());
vote.setOppositionCount(cache.getOppositionAmount());
vote.setVotableCount( null == votableCountMap ?
NumConstant.ZERO :
null == votableCountMap.get(k) ? NumConstant.ZERO : votableCountMap.get(k)
);
//if(cache.get)
}
}
//TODO listToUpdate批量更新
}
@ -406,4 +420,40 @@ public class IssueVoteStatisticalServiceImpl extends BaseServiceImpl<IssueVoteSt
return baseDao.selectByIssueId(issueId);
}
/**
* @Description 遍历应表决数
* @param list - List<IssueVoteStatisticalDTO> | Set<IssueDTO> | Map<String,Integer>
* @return
* @author wangc
* @date 2020.05.22 11:55
**/
private void setVotableCountsAndUpdateCache(List<IssueVoteStatisticalDTO> list,
Set<IssueDTO> issues,
Map<String,Integer> votableCountMap){
Map<String,List<IssueDTO>> gridIssueMap =
issues.stream().collect(Collectors.groupingBy(IssueDTO::getGridId));
for(Map.Entry<String,List<IssueDTO>> entry : gridIssueMap.entrySet()){
String k = entry.getKey();
List<IssueDTO> v = entry.getValue();
for(IssueDTO issue : v){
IssueVoteStatisticalDTO vote = new IssueVoteStatisticalDTO();
vote.setIssueId(issue.getId());
VoteRedisFormDTO cache = issueVoteDetailRedis.get(issue.getId());
if(null == cache)
continue;
vote.setSupportCount(cache.getSupportAmount());
vote.setOppositionCount(cache.getOppositionAmount());
vote.setVotableCount( null == votableCountMap ?
NumConstant.ZERO :
null == votableCountMap.get(k) ? NumConstant.ZERO : votableCountMap.get(k)
);
list.add(vote);
if(cache.getShouldVoteCount() != vote.getVotableCount()){
issueVoteDetailRedis.hset(issue.getId(),ModuleConstants.SHOULD_VOTE_COUNT,vote.getVotableCount());
}
}
}
}
}

6
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java

@ -93,4 +93,10 @@ public interface ModuleConstants {
String CREATED_OR_UPDATED_BY_SYSTEM = "system";
/**
* 缓存中应表决数
*
*/
String SHOULD_VOTE_COUNT = "shouldVoteCount";
}

Loading…
Cancel
Save