Browse Source

议题表决日统计

release
zxc 4 years ago
parent
commit
64620db2ec
  1. 2
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java
  2. 39
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalDailyServiceImpl.java
  3. 9
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml

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

@ -140,7 +140,7 @@ public interface IssueVoteDetailDao extends BaseDao<IssueVoteDetailEntity> {
* @author zxc
* @date 2021/12/29 2:02 下午
*/
List<DailyStatisticalVoteJobResultDTO> statisticVote(@Param("customerId")String customerId,@Param("dateId")String dateId);
List<DailyStatisticalVoteJobResultDTO> statisticVote(@Param("customerId")String customerId,@Param("dateId")String dateId,@Param("status")Boolean status);
/**
* @Description 根据议题ID查询折线图一天的数据

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

@ -21,6 +21,7 @@ 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.constant.StrConstant;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
@ -339,12 +340,12 @@ public class IssueVoteStatisticalDailyServiceImpl extends BaseServiceImpl<IssueV
List<String> daysBetween = DateUtils.getDaysBetween(form.getStartDate(), form.getEndDate());
customerIds.forEach(customerId -> {
daysBetween.forEach(dateId -> {
statisticVote(customerId,dateId);
statisticVote(customerId,yyyyMMddToLine(dateId));
});
});
}else {
if (StringUtils.isBlank(form.getDateId())){
form.setDateId(LocalDate.now().minusDays(NumConstant.ONE).toString().replace("-", ""));
form.setDateId(LocalDate.now().minusDays(NumConstant.ONE).toString());
}
customerIds.forEach(customerId -> {
statisticVote(customerId, form.getDateId());
@ -352,6 +353,14 @@ public class IssueVoteStatisticalDailyServiceImpl extends BaseServiceImpl<IssueV
}
}
public String yyyyMMddToLine(String dateId){
StringBuilder sb = new StringBuilder();
sb.append(dateId.substring(0,4)).append(StrConstant.HYPHEN);
sb.append(dateId.substring(4,6)).append(StrConstant.HYPHEN);
sb.append(dateId.substring(6,8));
return sb.toString();
}
/**
* @Description 统计 issue_vote_statistical_daily
* 只统计表决日增存在的不存在的不写入查询程序补全
@ -360,28 +369,32 @@ public class IssueVoteStatisticalDailyServiceImpl extends BaseServiceImpl<IssueV
* @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);
List<DailyStatisticalVoteJobResultDTO> dayAdd = issueVoteDetailDao.statisticVote(customerId, dateId, true);
if (CollectionUtils.isNotEmpty(dayAdd)){
//累计
List<DailyStatisticalVoteJobResultDTO> allDayAdd = issueVoteDetailDao.statisticVote(customerId, null);
List<DailyStatisticalVoteJobResultDTO> allDayAdd = issueVoteDetailDao.statisticVote(customerId, dateId, false);
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);
});
delAndInsert(needInsert,customerId,dateId);
}
}
@Transactional(rollbackFor = Exception.class)
public void delAndInsert(List<IssueVoteStatisticalDailyEntity> needInsert,String customerId,String dateId){
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);
});
}
}

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

@ -186,10 +186,10 @@
<select id="statisticVote" resultType="com.epmet.dto.result.DailyStatisticalVoteJobResultDTO">
SELECT
vs.votable_count,
<if test="dateId == null">
<if test="status == false">
(t.oppositionCount + t.supportCount) AS totalCount,
</if>
<if test="dateId != null">
<if test="status == true">
(t.oppositionIncrement + t.supportIncrement) AS todayIncrement,
</if>
t.* FROM
@ -203,9 +203,12 @@
FROM issue_vote_detail vd
WHERE vd.DEL_FLAG = '0'
AND vd.CUSTOMER_ID = #{customerId}
<if test="dateId != null">
<if test="status == true">
AND DATE_FORMAT(vd.CREATED_TIME,'%Y-%m-%d') = #{dateId}
</if>
<if test="status == false">
AND DATE_FORMAT(vd.CREATED_TIME,'%Y-%m-%d') <![CDATA[ <= ]]> #{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>

Loading…
Cancel
Save