|
@ -23,6 +23,7 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; |
|
|
import com.epmet.commons.tools.constant.FieldConstant; |
|
|
import com.epmet.commons.tools.constant.FieldConstant; |
|
|
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.EpmetException; |
|
|
import com.epmet.commons.tools.exception.RenException; |
|
|
import com.epmet.commons.tools.exception.RenException; |
|
|
import com.epmet.commons.tools.page.PageData; |
|
|
import com.epmet.commons.tools.page.PageData; |
|
|
import com.epmet.commons.tools.security.dto.TokenDto; |
|
|
import com.epmet.commons.tools.security.dto.TokenDto; |
|
@ -42,6 +43,7 @@ import com.epmet.dto.result.*; |
|
|
import com.epmet.entity.IssueEntity; |
|
|
import com.epmet.entity.IssueEntity; |
|
|
import com.epmet.entity.IssueVoteStatisticalEntity; |
|
|
import com.epmet.entity.IssueVoteStatisticalEntity; |
|
|
import com.epmet.feign.EpmetUserFeignClient; |
|
|
import com.epmet.feign.EpmetUserFeignClient; |
|
|
|
|
|
import com.epmet.feign.EpmetUserOpenFeignClient; |
|
|
import com.epmet.feign.GovOrgOpenFeignClient; |
|
|
import com.epmet.feign.GovOrgOpenFeignClient; |
|
|
import com.epmet.feign.ResiGroupFeignClient; |
|
|
import com.epmet.feign.ResiGroupFeignClient; |
|
|
import com.epmet.redis.IssueVoteDetailRedis; |
|
|
import com.epmet.redis.IssueVoteDetailRedis; |
|
@ -98,6 +100,8 @@ public class IssueVoteStatisticalServiceImpl extends BaseServiceImpl<IssueVoteSt |
|
|
private GovOrgOpenFeignClient govOrgOpenFeignClient; |
|
|
private GovOrgOpenFeignClient govOrgOpenFeignClient; |
|
|
@Autowired |
|
|
@Autowired |
|
|
private ResiGroupOpenFeignClient resiGroupOpenFeignClient; |
|
|
private ResiGroupOpenFeignClient resiGroupOpenFeignClient; |
|
|
|
|
|
@Autowired |
|
|
|
|
|
private EpmetUserOpenFeignClient epmetUserOpenFeignClient; |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public PageData<IssueVoteStatisticalDTO> page(Map<String, Object> params) { |
|
|
public PageData<IssueVoteStatisticalDTO> page(Map<String, Object> params) { |
|
@ -259,6 +263,48 @@ public class IssueVoteStatisticalServiceImpl extends BaseServiceImpl<IssueVoteSt |
|
|
return votingTrendResultDTO; |
|
|
return votingTrendResultDTO; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public VotingTrendResultDTO votingTrendV2(IssueIdFormDTO issueId) { |
|
|
|
|
|
IssueEntity issueEntity = issueDao.selectById(issueId.getIssueId()); |
|
|
|
|
|
Result<Integer> allResiByGrid = epmetUserOpenFeignClient.getAllResiByGrid(new AllResiByGridFormDTO(issueEntity.getGridId())); |
|
|
|
|
|
if (!allResiByGrid.success()){ |
|
|
|
|
|
throw new EpmetException("查询网格下注册居民失败:"+issueEntity.getGridId()); |
|
|
|
|
|
} |
|
|
|
|
|
//缓存获取议题表决详情
|
|
|
|
|
|
VoteRedisFormDTO voteRedisFormDTO = issueVoteDetailRedis.getVoteStatistical(issueId.getIssueId()); |
|
|
|
|
|
voteRedisFormDTO.setShouldVoteCount(allResiByGrid.getData()); |
|
|
|
|
|
VotingTrendResultDTO votingTrendResultDTO = new VotingTrendResultDTO(); |
|
|
|
|
|
BeanUtils.copyProperties(voteRedisFormDTO, votingTrendResultDTO); |
|
|
|
|
|
votingTrendResultDTO.setRealityVoteCount(voteRedisFormDTO.getSupportAmount() + voteRedisFormDTO.getOppositionAmount()); |
|
|
|
|
|
//DB获取表决 日统计详情
|
|
|
|
|
|
List<PolyLineDTO> polyLineDTOS = issueVoteStatisticalDao.polyLineData(issueId); |
|
|
|
|
|
String startDate = DateUtils.format(issueEntity.getDecidedTime(),DATE_PATTERN); |
|
|
|
|
|
String endDate = null == issueEntity.getVotingDeadline() ? |
|
|
|
|
|
DateUtils.format(new Date(),DATE_PATTERN) : |
|
|
|
|
|
DateUtils.format(issueEntity.getVotingDeadline(),DATE_PATTERN); |
|
|
|
|
|
List<PolyLineDTO> polyLine = getPolyLine(startDate, endDate); |
|
|
|
|
|
String today = LocalDate.now().toString(); |
|
|
|
|
|
if (today.equals(endDate)){ |
|
|
|
|
|
PolyLineDTO polyLineDTO = issueVoteDetailDao.polyLineData(issueId.getIssueId(), endDate); |
|
|
|
|
|
polyLine.get(polyLine.size() - NumConstant.ONE).setSupportIncrement(polyLineDTO.getSupportIncrement()); |
|
|
|
|
|
polyLine.get(polyLine.size() - NumConstant.ONE).setOppositionIncrement(polyLineDTO.getOppositionIncrement()); |
|
|
|
|
|
} |
|
|
|
|
|
if (CollectionUtils.isEmpty(polyLineDTOS)){ |
|
|
|
|
|
votingTrendResultDTO.setPolyLine(polyLine); |
|
|
|
|
|
return votingTrendResultDTO; |
|
|
|
|
|
} |
|
|
|
|
|
polyLineDTOS.forEach(pd -> { |
|
|
|
|
|
polyLine.forEach(p -> { |
|
|
|
|
|
if (pd.getVoteDate().equals(p.getVoteDate())){ |
|
|
|
|
|
p.setOppositionIncrement(pd.getOppositionIncrement()); |
|
|
|
|
|
p.setSupportIncrement(pd.getSupportIncrement()); |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
}); |
|
|
|
|
|
votingTrendResultDTO.setPolyLine(polyLine); |
|
|
|
|
|
return votingTrendResultDTO; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
public List<PolyLineDTO> getPolyLine(String startTime, String endTime){ |
|
|
public List<PolyLineDTO> getPolyLine(String startTime, String endTime){ |
|
|
List<PolyLineDTO> result = new ArrayList<>(); |
|
|
List<PolyLineDTO> result = new ArrayList<>(); |
|
|
Date start = DateUtils.parse(startTime, DATE_PATTERN); |
|
|
Date start = DateUtils.parse(startTime, DATE_PATTERN); |
|
|