Browse Source

话题转议题时,初始化表决缓存信息

dev_shibei_match
wangchao 5 years ago
parent
commit
37fb90da24
  1. 14
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueVoteStatisticalController.java
  2. 2
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueVoteDetailRedis.java
  3. 7
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
  4. 12
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalServiceImpl.java
  5. 5
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java
  6. 12
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml

14
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueVoteStatisticalController.java

@ -131,4 +131,18 @@ public class IssueVoteStatisticalController {
return new Result();
}
/**
* @Description 根据issueId将指定issue的表决数据从缓存同步至数据库
* @param issueIdFormDTO
* @return
* @author wangc
* @date 2020.05.27 17:17
**/
@PostMapping("syncvotingcacheanddbsingle")
public Result syncVotingCacheAndDbSingle(@RequestBody IssueIdFormDTO issueIdFormDTO){
ValidatorUtils.validateEntity(issueIdFormDTO);
issueVoteStatisticalService.syncVotingCacheToDbByIssueId(issueIdFormDTO.getIssueId());
return new Result();
}
}

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

@ -191,7 +191,7 @@ public class IssueVoteDetailRedis {
//如果缓存中没有,去表决详情中计算出实时数据,并放入缓存中
//无需查询issue_vote_statistical中的数据,因为不是实时数据,可能不准确,有定时任务会自动同步
VoteRedisFormDTO voteCache = new VoteRedisFormDTO();
voteCache.setIssueId(issueId);
voteCache.setSupportAmount(issueVoteDetailService.getVotingCount(issueId,IssueConstant.SUPPORT));
voteCache.setOppositionAmount(issueVoteDetailService.getVotingCount(issueId,IssueConstant.OPPOSE));
IssueDTO issue = issueService.get(issueId);

7
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java

@ -29,6 +29,7 @@ import com.epmet.entity.IssueProjectRelationEntity;
import com.epmet.entity.IssueVoteStatisticalEntity;
import com.epmet.feign.*;
import com.epmet.redis.GovIssueRedis;
import com.epmet.redis.IssueVoteDetailRedis;
import com.epmet.resi.group.dto.topic.ResiTopicDTO;
import com.epmet.resi.group.dto.topic.form.GovTopicIssueInfoFormDTO;
import com.epmet.resi.group.dto.topic.form.TopicInfoFormDTO;
@ -70,6 +71,8 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
private GovProjectFeignClient govProjectFeignClient;
@Autowired
private IssueProjectRelationDao issueProjectRelationDao;
@Autowired
private IssueVoteDetailRedis issueVoteDetailRedis;
protected static final Logger logger = LoggerFactory.getLogger(IssueServiceImpl.class);
@ -251,6 +254,10 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
//应表决数,该网格下所有的居民
voteStatistical.setVotableCount(issueShiftedFromTopicFormDTO.getVotableCount());
issueVoteStatisticalService.save(voteStatistical);
VoteRedisFormDTO voteInitCache = new VoteRedisFormDTO();
voteInitCache.setIssueId(issueDTO.getId());
voteInitCache.setShouldVoteCount(issueShiftedFromTopicFormDTO.getVotableCount());
issueVoteDetailRedis.set(voteInitCache);
//4.该网格下表决中议题总数量+1
govIssueRedis.addWorkGrassrootsIssueRedDotValue(issueShiftedFromTopicFormDTO.getGridId());
return issueDTO.getId();

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

@ -412,7 +412,7 @@ public class IssueVoteStatisticalServiceImpl extends BaseServiceImpl<IssueVoteSt
@Override
public void syncVotingCacheToDbByIssueId(String issueId) {
VoteRedisFormDTO vote = issueVoteDetailRedis.getVoteStatistical(issueId);
if(null == vote) return;
if(null == vote) throw new RenException(String.format(ModuleConstants.ISSUE_NOT_FOUND_EXCEPTION_TEMPLATE,issueId));
IssueVoteStatisticalDTO toUpd = ConvertUtils.sourceToTarget(vote,IssueVoteStatisticalDTO.class);
toUpd.setUpdatedBy("system");
IssueEntity issue = issueDao.selectById(issueId);
@ -425,10 +425,15 @@ public class IssueVoteStatisticalServiceImpl extends BaseServiceImpl<IssueVoteSt
toUpd.setVotableCount(votableCount.getData());
}
}else {
toUpd.setVotableCount(NumConstant.ZERO);
}
toUpd.setVotableCount(NumConstant.ZERO);
IssueVoteStatisticalDTO existedStatistical = getByIssueId(issueId);
if(null != existedStatistical && StringUtils.isNotBlank(existedStatistical.getId())){
toUpd.setId(existedStatistical.getId());
}
update(toUpd);
}
/**
@ -464,6 +469,7 @@ public class IssueVoteStatisticalServiceImpl extends BaseServiceImpl<IssueVoteSt
VoteRedisFormDTO cache = issueVoteDetailRedis.get(issue.getId());
if(null == cache)
continue;
if(StringUtils.isBlank(cache.getIssueId())) cache.setIssueId(issue.getId());
vote.setCreatedBy("system");
vote.setUpdatedBy("system");
vote.setSupportCount(cache.getSupportAmount());
@ -474,7 +480,7 @@ public class IssueVoteStatisticalServiceImpl extends BaseServiceImpl<IssueVoteSt
);
list.add(vote);
if(cache.getShouldVoteCount() != vote.getVotableCount()){
issueVoteDetailRedis.hset(issue.getId(),ModuleConstants.SHOULD_VOTE_COUNT,vote.getVotableCount());
issueVoteDetailRedis.set(cache);
}
}
}

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

@ -99,4 +99,9 @@ public interface ModuleConstants {
*/
String SHOULD_VOTE_COUNT = "shouldVoteCount";
/**
* 没有找到指定议题异常模板
* */
String ISSUE_NOT_FOUND_EXCEPTION_TEMPLATE = "没有找到指定议题,议题Id:【%s】";
}

12
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml

@ -354,7 +354,7 @@
ORDER BY created_time DESC
LIMIT #{pageSize}
</select>
<!-- 条件查询出符合指定条件的议题ID集合 -->
<!-- 条件查询出符合指定条件的议题ID集合 以及从昨天到现在被关闭或者转项目的议题 -->
<select id="selectIssueIdsByCondition" parameterType="com.epmet.dto.IssueDTO" resultType="com.epmet.dto.IssueDTO">
SELECT
ID,
@ -365,16 +365,6 @@
DEL_FLAG = '0'
AND
ISSUE_STATUS = #{issueStatus}
OR (
ISSUE_STATUS = 'closed'
AND
TO_DAYS( NOW( ) ) - TO_DAYS( issue.CLOSED_TIME ) = 0
)
OR (
ISSUE_STATUS = 'shift_project'
AND
TO_DAYS( NOW( ) ) - TO_DAYS( issue.SHIFTED_TIME ) = 0
)
</select>
<!-- 校验话题是否已转议题 -->

Loading…
Cancel
Save