Browse Source

Merge remote-tracking branch 'origin/dev'

dev
zxc 4 years ago
parent
commit
d07ce541bb
  1. 6
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml
  2. 1
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java
  3. 6
      epmet-module/epmet-job/epmet-job-server/pom.xml
  4. 3
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/GovIssueFeignClient.java
  5. 5
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/impl/GovIssueFeignClientFallBack.java
  6. 3
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/IssueVotingDailyStatisticalTaskService.java
  7. 5
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/IssueVotingDailyStatisticalTaskServiceImpl.java
  8. 9
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/DailyStatisticalVoteTask.java
  9. 5
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/PolyLineDTO.java
  10. 26
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/DailyStatisticalVoteJob.java
  11. 70
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/DailyStatisticalVoteJobResultDTO.java
  12. 2
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueManageController.java
  13. 6
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueVoteStatisticalDailyController.java
  14. 21
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java
  15. 9
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteStatisticalDailyDao.java
  16. 7
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueVoteDetailRedis.java
  17. 9
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueVoteStatisticalDailyService.java
  18. 3
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteDetailServiceImpl.java
  19. 81
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalDailyServiceImpl.java
  20. 61
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalServiceImpl.java
  21. 39
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml
  22. 9
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml
  23. 6
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDao.xml
  24. 30
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/EventController.java
  25. 6
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ResiEventController.java
  26. 24
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ResiEventReplyController.java

6
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml

@ -4,7 +4,7 @@
<mapper namespace="com.epmet.dataaggre.dao.govproject.ProjectDao">
<select id="getAllProject" resultType="com.epmet.dataaggre.dto.govproject.result.ProjectInfoDTO">
SELECT
SELECT DISTINCT
p.ID AS projectId,
p.TITLE AS projectTitle,
p.`STATUS` AS projectStatus,
@ -19,12 +19,12 @@
IFNULL( pp.PUBLIC_REPLY, '' ) AS publicReply
FROM
project p
INNER JOIN ( SELECT PROJECT_ID, GRID_ID FROM project_related_personnel WHERE DEL_FLAG = '0' AND SOURCE_TYPE = 'issue' ) prp ON p.ID = prp.PROJECT_ID
LEFT JOIN ( SELECT PROJECT_ID, GRID_ID FROM project_related_personnel WHERE DEL_FLAG = '0' AND SOURCE_TYPE = 'issue' ) prp ON p.ID = prp.PROJECT_ID
INNER JOIN ( SELECT PROJECT_ID, MAX( CREATED_TIME ) AS updateTime FROM project_process ppro GROUP BY PROJECT_ID ) ppro ON p.ID = ppro.PROJECT_ID
INNER JOIN ( SELECT PROJECT_ID, COUNT( DISTINCT DEPARTMENT_NAME ) AS departmentCount FROM project_staff GROUP BY PROJECT_ID ) ps ON ps.PROJECT_ID = p.ID
LEFT JOIN ( SELECT PROJECT_ID, COUNT( ID ) AS processCount FROM project_process WHERE DEL_FLAG = '0' AND OPERATION != 'created' GROUP BY PROJECT_ID ) ppc ON ppc.PROJECT_ID = p.ID
LEFT JOIN project_process pp ON p.ID = pp.PROJECT_ID
AND pp.OPERATION = 'close'
AND pp.OPERATION = 'close' AND pp.DEL_FLAG = '0'
WHERE
p.DEL_FLAG = '0'
AND p.ORG_ID_PATH LIKE concat('%', #{agencyId}, '%')

1
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java

@ -903,6 +903,7 @@ public class DemoController {
ScreenCentralZoneDataFormDTO formDTO = new ScreenCentralZoneDataFormDTO();
formDTO.setCustomerId(customerId);
formDTO.setDateId(dateId);
formDTO.setProjectId(param.getProjectId());
screenProjectSettleService.extractScreenData(formDTO);
});
}

6
epmet-module/epmet-job/epmet-job-server/pom.xml

@ -90,6 +90,12 @@
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>gov-issue-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>

3
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/GovIssueFeignClient.java

@ -2,6 +2,7 @@ package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.DailyStatisticalVoteJob;
import com.epmet.feign.impl.GovIssueFeignClientFallBack;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@ -22,7 +23,7 @@ public interface GovIssueFeignClient {
* @date 2020.05.20 15:39
**/
@PostMapping(value = "gov/issue/issuevotestatisticaldaily/dailystatisticalvotejob")
Result dailyStatisticalVoteJob();
Result dailyStatisticalVoteJob(DailyStatisticalVoteJob form);
/**
* @Description 将所有表决中的投票数从缓存同步到数据库要进行数据对比若数据一致无需更新

5
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/impl/GovIssueFeignClientFallBack.java

@ -3,6 +3,7 @@ package com.epmet.feign.impl;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.DailyStatisticalVoteJob;
import com.epmet.feign.GovIssueFeignClient;
import org.springframework.stereotype.Component;
@ -15,8 +16,8 @@ import org.springframework.stereotype.Component;
@Component
public class GovIssueFeignClientFallBack implements GovIssueFeignClient {
@Override
public Result dailyStatisticalVoteJob() {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "dailyStatisticalVoteJob");
public Result dailyStatisticalVoteJob(DailyStatisticalVoteJob form) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "dailyStatisticalVoteJob",form);
}
@Override

3
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/IssueVotingDailyStatisticalTaskService.java

@ -2,6 +2,7 @@ package com.epmet.service;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.DailyStatisticalVoteJob;
/**
* @Description 生成议题表决日统计数定时任务
@ -10,6 +11,6 @@ import com.epmet.commons.tools.utils.Result;
*/
public interface IssueVotingDailyStatisticalTaskService {
Result issueVotingDailyStatistical();
Result issueVotingDailyStatistical(DailyStatisticalVoteJob form);
}

5
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/IssueVotingDailyStatisticalTaskServiceImpl.java

@ -1,6 +1,7 @@
package com.epmet.service.impl;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.DailyStatisticalVoteJob;
import com.epmet.feign.GovIssueFeignClient;
import com.epmet.service.IssueVotingDailyStatisticalTaskService;
import org.springframework.beans.factory.annotation.Autowired;
@ -18,7 +19,7 @@ public class IssueVotingDailyStatisticalTaskServiceImpl implements IssueVotingDa
private GovIssueFeignClient govIssueFeignClient;
@Override
public Result issueVotingDailyStatistical() {
return govIssueFeignClient.dailyStatisticalVoteJob();
public Result issueVotingDailyStatistical(DailyStatisticalVoteJob form) {
return govIssueFeignClient.dailyStatisticalVoteJob(form);
}
}

9
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/DailyStatisticalVoteTask.java

@ -1,7 +1,10 @@
package com.epmet.task;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.DailyStatisticalVoteJob;
import com.epmet.service.IssueVotingDailyStatisticalTaskService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -24,7 +27,11 @@ public class DailyStatisticalVoteTask implements ITask{
@Override
public void run(String params) {
logger.debug("dailyStatisticalVoteTask定时任务正在执行,参数为:{}", params);
Result result=issueVotingDailyStatisticalTaskService.issueVotingDailyStatistical();
DailyStatisticalVoteJob form = new DailyStatisticalVoteJob();
if (StringUtils.isNotBlank(params)) {
form = JSON.parseObject(params, DailyStatisticalVoteJob.class);
}
Result result=issueVotingDailyStatisticalTaskService.issueVotingDailyStatistical(form);
if(result.success()){
logger.debug("dailyStatisticalVoteTask定时任务正在执行定时任务执行成功");
}else{

5
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/PolyLineDTO.java

@ -1,5 +1,6 @@
package com.epmet.dto;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
@ -29,4 +30,8 @@ public class PolyLineDTO implements Serializable {
*/
private Integer oppositionIncrement;
public PolyLineDTO() {
this.supportIncrement = NumConstant.ZERO;
this.oppositionIncrement = NumConstant.ZERO;
}
}

26
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/DailyStatisticalVoteJob.java

@ -0,0 +1,26 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/12/29 10:56 上午
* @DESC
*/
@Data
public class DailyStatisticalVoteJob implements Serializable {
private static final long serialVersionUID = -3685299478100771134L;
private String customerId;
private String dateId;
private String startDate;
private String endDate;
}

70
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/DailyStatisticalVoteJobResultDTO.java

@ -0,0 +1,70 @@
package com.epmet.dto.result;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Author zxc
* @DateTime 2021/12/29 1:52 下午
* @DESC
*/
@Data
public class DailyStatisticalVoteJobResultDTO implements Serializable {
private static final long serialVersionUID = 5266996778036448163L;
private String issueId;
/**
* 统计日期
*/
private Date statisticalDate;
/**
* 到该日的总赞成数
*/
private Integer supportCount;
/**
* 到该日的总反对数
*/
private Integer oppositionCount;
/**
* 到该日的总票数
*/
private Integer totalCount;
/**
* 该日增量
*/
private Integer todayIncrement;
/**
* 该日赞成增量
*/
private Integer supportIncrement;
/**
* 该日反对增量
*/
private Integer oppositionIncrement;
/**
* 应表决数
*/
private Integer votableCount;
public DailyStatisticalVoteJobResultDTO() {
this.supportCount = NumConstant.ZERO;
this.oppositionCount = NumConstant.ZERO;
this.totalCount = NumConstant.ZERO;
this.todayIncrement = NumConstant.ZERO;
this.supportIncrement = NumConstant.ZERO;
this.oppositionIncrement = NumConstant.ZERO;
this.votableCount = NumConstant.ZERO;
}
}

2
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueManageController.java

@ -83,7 +83,7 @@ public class IssueManageController {
* @author zxc
*/
@PostMapping("votingtrend")
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_GRASSROOTS_ISSUE_DETAIL)
// @RequirePermission(requirePermission = RequirePermissionEnum.WORK_GRASSROOTS_ISSUE_DETAIL)
public Result<VotingTrendResultDTO> votingTrend(@RequestBody IssueIdFormDTO issueId){
return new Result<VotingTrendResultDTO>().ok(issueVoteStatisticalService.votingTrend(issueId));
}

6
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueVoteStatisticalDailyController.java

@ -26,6 +26,7 @@ import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.dto.IssueVoteStatisticalDailyDTO;
import com.epmet.dto.form.DailyStatisticalVoteJob;
import com.epmet.excel.IssueVoteStatisticalDailyExcel;
import com.epmet.service.IssueVoteStatisticalDailyService;
import org.springframework.beans.factory.annotation.Autowired;
@ -99,8 +100,9 @@ public class IssueVoteStatisticalDailyController {
* @date 2020.05.20 15:39
**/
@PostMapping(value = "dailystatisticalvotejob")
public Result dailyStatisticalVoteJob(){
issueVoteStatisticalDailyService.countVotingDailyStatistic();
public Result dailyStatisticalVoteJob(@RequestBody DailyStatisticalVoteJob form){
// issueVoteStatisticalDailyService.countVotingDailyStatistic();
issueVoteStatisticalDailyService.countVotingDailyStatisticNew(form);
return new Result();
}
}

21
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java

@ -19,8 +19,10 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.IssueVoteDetailDTO;
import com.epmet.dto.PolyLineDTO;
import com.epmet.dto.form.VoteFormDTO;
import com.epmet.dto.form.VoteRedisFormDTO;
import com.epmet.dto.result.DailyStatisticalVoteJobResultDTO;
import com.epmet.dto.result.IssueAttitudeCountResultDTO;
import com.epmet.dto.result.IssueVoteResultDTO;
import com.epmet.dto.result.MyPartIssuesResultDTO;
@ -130,4 +132,23 @@ public interface IssueVoteDetailDao extends BaseDao<IssueVoteDetailEntity> {
* @date 2021/5/12 1:48 下午
*/
List<IssueVoteResultDTO> selectIssueVoteCountBatch(@Param("issueIds")List<String> issueIds);
/**
* @Description 查询客户下的议题表决日增
* @param customerId
* @param dateId 当dateId为空时查询的是累计值
* @author zxc
* @date 2021/12/29 2:02 下午
*/
List<DailyStatisticalVoteJobResultDTO> statisticVote(@Param("customerId")String customerId,@Param("dateId")String dateId);
/**
* @Description 根据议题ID查询折线图一天的数据
* @param issueId
* @param dateId
* @author zxc
* @date 2021/12/29 4:19 下午
*/
PolyLineDTO polyLineData(@Param("issueId")String issueId,@Param("dateId")String dateId);;
}

9
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteStatisticalDailyDao.java

@ -78,4 +78,13 @@ public interface IssueVoteStatisticalDailyDao extends BaseDao<IssueVoteStatistic
* @date 2020.05.20 14:54
**/
void updateBatch(@Param("list") List<IssueVoteStatisticalDailyEntity> list);
/**
* @Description 删除历史数据
* @param customerId
* @param dateId
* @author zxc
* @date 2021/12/29 2:51 下午
*/
Integer delHistoryData(@Param("customerId")String customerId,@Param("dateId")String dateId);
}

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

@ -256,12 +256,17 @@ public class IssueVoteDetailRedis {
IssueDTO issue = issueService.get(issueId);
if(null != issue){
// 如果是表决中的议题,数据现算
VoteRedisFormDTO voteCache = new VoteRedisFormDTO();
VoteRedisFormDTO voteCache;
if (issue.getIssueStatus().equals(IssueConstant.ISSUE_VOTING)){
SelectIssueVotingDetailFormDTO formDTO = new SelectIssueVotingDetailFormDTO();
formDTO.setIssueId(issueId);
formDTO.setGridId(issue.getGridId());
voteCache = issueVoteDetailService.selectIssueVotingDetail(formDTO);
IssueVoteStatisticalDTO dto = ConvertUtils.sourceToTarget(voteCache, IssueVoteStatisticalDTO.class);
dto.setVotableCount(voteCache.getShouldVoteCount());
dto.setSupportCount(voteCache.getSupportAmount());
dto.setOppositionCount(voteCache.getOppositionAmount());
issueVoteStatisticalDao.updateBtIssueId(dto);
}else {
// 状态是关闭,转议题的,直接从结果表查询
voteCache = issueVoteStatisticalDao.selectVoteDetail(issueId);

9
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueVoteStatisticalDailyService.java

@ -20,6 +20,7 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.IssueVoteStatisticalDailyDTO;
import com.epmet.dto.form.DailyStatisticalVoteJob;
import com.epmet.entity.IssueVoteStatisticalDailyEntity;
import java.util.List;
@ -101,4 +102,12 @@ public interface IssueVoteStatisticalDailyService extends BaseService<IssueVoteS
* @date 2020.05.19 09:23
**/
void countVotingDailyStatistic();
/**
* @Description 统计前一天所有有表决动作的议题
* @param
* @author zxc
* @date 2021/12/29 10:31 上午
*/
void countVotingDailyStatisticNew(DailyStatisticalVoteJob form);
}

3
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteDetailServiceImpl.java

@ -253,8 +253,11 @@ public class IssueVoteDetailServiceImpl extends BaseServiceImpl<IssueVoteDetailD
@Override
public void updateVote(SelectIssueVotingDetailFormDTO formDTO) {
VoteRedisFormDTO voteRedisFormDTO = this.selectIssueVotingDetail(formDTO);
issueVoteDetailRedis.set(voteRedisFormDTO);
IssueVoteStatisticalDTO dto = ConvertUtils.sourceToTarget(voteRedisFormDTO, IssueVoteStatisticalDTO.class);
dto.setVotableCount(voteRedisFormDTO.getShouldVoteCount());
dto.setSupportCount(voteRedisFormDTO.getSupportAmount());
dto.setOppositionCount(voteRedisFormDTO.getOppositionAmount());
issueVoteStatisticalDao.updateBtIssueId(dto);
}

81
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalDailyServiceImpl.java

@ -21,18 +21,27 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.IssueVoteDetailDao;
import com.epmet.dao.IssueVoteStatisticalDailyDao;
import com.epmet.dto.CustomerDTO;
import com.epmet.dto.IssueVoteStatisticalDailyDTO;
import com.epmet.dto.form.DailyStatisticalVoteJob;
import com.epmet.dto.result.DailyStatisticalVoteJobResultDTO;
import com.epmet.dto.result.IssuesToBeCountedResultDTO;
import com.epmet.entity.IssueVoteStatisticalDailyEntity;
import com.epmet.feign.OperCrmOpenFeignClient;
import com.epmet.redis.IssueVoteStatisticalDailyRedis;
import com.epmet.service.IssueVoteStatisticalDailyService;
import com.epmet.utils.ModuleConstants;
import oracle.sql.NUMBER;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -40,6 +49,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
@ -58,6 +68,9 @@ public class IssueVoteStatisticalDailyServiceImpl extends BaseServiceImpl<IssueV
@Autowired
private IssueVoteDetailDao issueVoteDetailDao;
@Autowired
private OperCrmOpenFeignClient operCrmOpenFeignClient;
protected static final Logger logger = LoggerFactory.getLogger(IssueVoteStatisticalDailyServiceImpl.class);
@Override
@ -303,4 +316,72 @@ public class IssueVoteStatisticalDailyServiceImpl extends BaseServiceImpl<IssueV
}
/**
* @Description 统计前一天所有有表决动作的议题
* @param
* @author zxc
* @date 2021/12/29 10:31 上午
*/
@Override
public void countVotingDailyStatisticNew(DailyStatisticalVoteJob form) {
// 先处理下纬度
List<String> customerIds = new ArrayList<>();
if (StringUtils.isBlank(form.getCustomerId())){
Result<List<CustomerDTO>> allCustomerList = operCrmOpenFeignClient.getAllCustomerList();
if (!allCustomerList.success() || CollectionUtils.isEmpty(allCustomerList.getData())){
throw new EpmetException("查询所有客户失败...");
}
customerIds = allCustomerList.getData().stream().map(m -> m.getId()).collect(Collectors.toList());
}else {
customerIds.add(form.getCustomerId());
}
if (StringUtils.isNotBlank(form.getStartDate()) && StringUtils.isNotBlank(form.getEndDate())){
List<String> daysBetween = DateUtils.getDaysBetween(form.getStartDate(), form.getEndDate());
customerIds.forEach(customerId -> {
daysBetween.forEach(dateId -> {
statisticVote(customerId,dateId);
});
});
}else {
if (StringUtils.isBlank(form.getDateId())){
form.setDateId(LocalDate.now().minusDays(NumConstant.ONE).toString().replace("-", ""));
}
customerIds.forEach(customerId -> {
statisticVote(customerId, form.getDateId());
});
}
}
/**
* @Description 统计 issue_vote_statistical_daily
* 只统计表决日增存在的不存在的不写入查询程序补全
* @param customerId
* @param dateId 格式YYYY-MM-DD
* @author zxc
* @date 2021/12/29 1:46 下午
*/
@Transactional(rollbackFor = Exception.class)
public void statisticVote(String customerId,String dateId){
// 日增
List<DailyStatisticalVoteJobResultDTO> dayAdd = issueVoteDetailDao.statisticVote(customerId, dateId);
if (CollectionUtils.isNotEmpty(dayAdd)){
//累计
List<DailyStatisticalVoteJobResultDTO> allDayAdd = issueVoteDetailDao.statisticVote(customerId, null);
dayAdd.forEach(d -> allDayAdd.stream().filter(a -> a.getIssueId().equals(d.getIssueId())).forEach(a -> {
d.setOppositionCount(a.getOppositionCount());
d.setSupportCount(a.getSupportCount());
d.setTotalCount(a.getTotalCount());
}));
List<IssueVoteStatisticalDailyEntity> needInsert = ConvertUtils.sourceToTarget(dayAdd, IssueVoteStatisticalDailyEntity.class);
Integer delNum;
do {
delNum = baseDao.delHistoryData(customerId, dateId);
} while (delNum != null && delNum > NumConstant.ZERO);
List<List<IssueVoteStatisticalDailyEntity>> partition = ListUtils.partition(needInsert, NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
baseDao.insertBatch(p);
});
}
}
}

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

@ -27,6 +27,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.IssueConstant;
import com.epmet.dao.IssueDao;
@ -66,6 +67,9 @@ import java.time.ZoneOffset;
import java.util.*;
import java.util.stream.Collectors;
import static com.epmet.commons.tools.utils.DateUtils.DATE_PATTERN;
import static com.epmet.commons.tools.utils.DateUtils.DATE_PATTERN_YYYYMMDD;
/**
* 议题表决统计表
*
@ -205,12 +209,36 @@ public class IssueVoteStatisticalServiceImpl extends BaseServiceImpl<IssueVoteSt
votingTrendResultDTO.setRealityVoteCount(voteRedisFormDTO.getSupportAmount() + voteRedisFormDTO.getOppositionAmount());
//DB获取表决 日统计详情
List<PolyLineDTO> polyLineDTOS = issueVoteStatisticalDao.polyLineData(issueId);
PolyLineDTO polyLineDTO = new PolyLineDTO();
polyLineDTO.setVoteDate(LocalDateTime.now().toEpochSecond(ZoneOffset.of(IssueConstant.BEIJING_TIME_ZONE)));
// PolyLineDTO polyLineDTO = new PolyLineDTO();
// polyLineDTO.setVoteDate(LocalDateTime.now().toEpochSecond(ZoneOffset.of(IssueConstant.BEIJING_TIME_ZONE)));
//议题 已转项目 或 已结案 的时间
String date = issueDao.operateTime(issueId.getIssueId());
// String date = issueDao.operateTime(issueId.getIssueId());
IssueEntity issueEntity = issueDao.selectById(issueId.getIssueId());
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());
}
});
});
//今天刚转项目或刚刚关闭,当天数据DB没有,直接从缓存拿
if (polyLineDTOS.size() == NumConstant.ZERO && date.equals(LocalDate.now().toString())) {
/*if (polyLineDTOS.size() == NumConstant.ZERO && date.equals(LocalDate.now().toString())) {
polyLineDTO.setSupportIncrement(voteRedisFormDTO.getSupportAmount());
polyLineDTO.setOppositionIncrement(voteRedisFormDTO.getOppositionAmount());
polyLineDTOS.add(polyLineDTO);
@ -222,18 +250,37 @@ public class IssueVoteStatisticalServiceImpl extends BaseServiceImpl<IssueVoteSt
polyLineDTOS.add(polyLineDTO);
}
//从古至今一直在表决中
IssueEntity issueEntity = issueDao.selectById(issueId.getIssueId());
if (issueEntity.getIssueStatus().equals(IssueConstant.ISSUE_VOTING)){
polyLineDTO.setSupportIncrement(voteRedisFormDTO.getSupportAmount());
polyLineDTO.setOppositionIncrement(voteRedisFormDTO.getOppositionAmount());
polyLineDTOS.add(polyLineDTO);
}
}
}*/
//今天之前 “已转项目”或“已关闭”
votingTrendResultDTO.setPolyLine(polyLineDTOS);
votingTrendResultDTO.setPolyLine(polyLine);
return votingTrendResultDTO;
}
public List<PolyLineDTO> getPolyLine(String startTime, String endTime){
List<PolyLineDTO> result = new ArrayList<>();
Date start = DateUtils.parse(startTime, DATE_PATTERN);
Date end = DateUtils.parse(endTime, DATE_PATTERN);
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
// 日期加1(包含结束)
tempEnd.add(Calendar.DATE, +1);
while (tempStart.before(tempEnd)) {
PolyLineDTO dto = new PolyLineDTO();
dto.setVoteDate(tempStart.getTimeInMillis()/1000);
result.add(dto);
tempStart.add(Calendar.DAY_OF_YEAR, 1);
}
return result;
}
/**
* @param formDTO
* @Description 满意度评价列表已关闭

39
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml

@ -181,4 +181,43 @@
</foreach>
)
</select>
<!-- 查询客户下的议题表决日增 -->
<select id="statisticVote" resultType="com.epmet.dto.result.DailyStatisticalVoteJobResultDTO">
SELECT
vs.votable_count,
<if test="dateId == null">
(t.oppositionCount + t.supportCount) AS totalCount,
</if>
<if test="dateId != null">
(t.oppositionIncrement + t.supportIncrement) AS todayIncrement,
</if>
t.* FROM
(SELECT
vd.ISSUE_ID,
COUNT(CASE WHEN vd.ATTITUDE = 'opposition' THEN 1 END) AS oppositionCount,
COUNT(CASE WHEN vd.ATTITUDE = 'opposition' THEN 1 END) AS oppositionIncrement,
COUNT(CASE WHEN vd.ATTITUDE = 'support' THEN 1 END) AS supportCount,
COUNT(CASE WHEN vd.ATTITUDE = 'support' THEN 1 END) AS supportIncrement,
str_to_date(#{dateId},'%Y-%m-%d') AS statisticalDate
FROM issue_vote_detail vd
WHERE vd.DEL_FLAG = '0'
AND vd.CUSTOMER_ID = #{customerId}
<if test="dateId != null">
AND DATE_FORMAT(vd.CREATED_TIME,'%Y-%m-%d') = #{dateId}
</if>
GROUP BY vd.ISSUE_ID)t
INNER JOIN issue_vote_statistical vs ON (vs.ISSUE_ID = t.ISSUE_ID AND vs.DEL_FLAG = '0')
</select>
<!-- 根据议题ID查询折线图一天的数据 -->
<select id="polyLineData" resultType="com.epmet.dto.PolyLineDTO">
SELECT
COUNT(CASE WHEN vd.ATTITUDE = 'opposition' THEN 1 END) AS oppositionIncrement,
COUNT(CASE WHEN vd.ATTITUDE = 'support' THEN 1 END) AS supportIncrement
FROM issue_vote_detail vd
WHERE vd.DEL_FLAG = '0'
AND DATE_FORMAT(vd.CREATED_TIME,'%Y-%m-%d') = #{dateId}
AND ISSUE_ID = #{issueId}
</select>
</mapper>

9
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml

@ -280,4 +280,13 @@
id = #{item.id}
</foreach>
</update>
<!-- 删除历史数据 -->
<delete id="delHistoryData">
DELETE FROM issue_vote_statistical_daily
WHERE CUSTOMER_ID = #{customerId}
AND STATISTICAL_DATE = #{dateId}
LIMIT 1000
</delete>
</mapper>

6
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDao.xml

@ -119,9 +119,9 @@
<select id="selectVoteDetail" resultType="com.epmet.dto.form.VoteRedisFormDTO">
SELECT
ISSUE_ID,
SUPPORT_COUNT,
OPPOSITION_COUNT,
VOTABLE_COUNT
SUPPORT_COUNT AS supportAmount,
OPPOSITION_COUNT AS oppositionAmount,
VOTABLE_COUNT AS shouldVoteCount
FROM issue_vote_statistical
WHERE DEL_FLAG = '0'
AND ISSUE_ID = #{issueId}

30
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/EventController.java

@ -1,30 +0,0 @@
package com.epmet.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.EventListFormDTO;
import com.epmet.dto.form.UpdateViewTimeFormDTO;
import com.epmet.dto.result.EventListResultDTO;
import com.epmet.service.ResiEventService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 居民报事表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-08-03
*/
@RestController
@RequestMapping("event")
public class EventController {
@Autowired
private ResiEventService resiEventService;
}

6
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ResiEventController.java

@ -18,6 +18,7 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
@ -77,6 +78,7 @@ public class ResiEventController {
* @author yinzuomei
* @date 2021/8/3 10:46
*/
@NoRepeatSubmit
@PostMapping("report")
public Result<ResiEventIdDTO> report(@LoginUser TokenDto tokenDto, @RequestBody ResiEventFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
@ -93,6 +95,7 @@ public class ResiEventController {
* @author yinzuomei
* @date 2021/8/3 10:54
*/
@NoRepeatSubmit
@PostMapping("recall")
public Result recall(@LoginUser TokenDto tokenDto, @RequestBody ReCallEventFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
@ -205,6 +208,7 @@ public class ResiEventController {
* @author yinzuomei
* @date 2021/8/5 10:47
*/
@NoRepeatSubmit
@PostMapping("close")
public Result closeResiEvent(@LoginUser TokenDto tokenDto, @RequestBody CloseResiEventFormDTO formDTO) {
formDTO.setUserId(tokenDto.getUserId());
@ -254,4 +258,4 @@ public class ResiEventController {
ValidatorUtils.validateEntity(formDTO,ResiEventResearchAnalysisFormDTO.AddUserInternalGroup.class);
return new Result<ResiEventResearchAnalysisResDTO>().ok(resiEventService.queryResiEventResearchAnalysis(formDTO));
}
}
}

24
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ResiEventReplyController.java

@ -18,6 +18,7 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
@ -43,7 +44,7 @@ import java.util.List;
@RestController
@RequestMapping("resieventreply")
public class ResiEventReplyController {
@Autowired
private ResiEventReplyService resiEventReplyService;
@ -62,13 +63,14 @@ public class ResiEventReplyController {
/**
* 报事-工作人员回复
*
*
* @param tokenDto
* @param replyFormDTO
* @return com.epmet.commons.tools.utils.Result
* @author yinzuomei
* @param replyFormDTO
* @return com.epmet.commons.tools.utils.Result
* @author yinzuomei
* @date 2021/8/4 14:19
*/
@NoRepeatSubmit
@PostMapping("govReply")
public Result govReply(@LoginUser TokenDto tokenDto,@RequestBody ReplyFormDTO replyFormDTO){
replyFormDTO.setUserId(tokenDto.getUserId());
@ -79,13 +81,14 @@ public class ResiEventReplyController {
/**
* 报事当事人回复
*
*
* @param tokenDto
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
* @author yinzuomei
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
* @author yinzuomei
* @date 2021/8/4 14:37
*/
@NoRepeatSubmit
@PostMapping("selfReply")
public Result selfReply(@LoginUser TokenDto tokenDto,@RequestBody ReplyFormDTO formDTO){
formDTO.setUserId(tokenDto.getUserId());
@ -103,6 +106,7 @@ public class ResiEventReplyController {
* @author yinzuomei
* @date 2021/8/4 15:06
*/
@NoRepeatSubmit
@PostMapping("atReply")
public Result atReply(@LoginUser TokenDto tokenDto,@RequestBody ReplyFormDTO formDTO){
formDTO.setUserId(tokenDto.getUserId());
@ -110,4 +114,4 @@ public class ResiEventReplyController {
resiEventReplyService.atReply(formDTO);
return new Result();
}
}
}

Loading…
Cancel
Save