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 * @author zxc
* @date 2021/12/29 2:02 下午 * @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查询折线图一天的数据 * @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.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
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.exception.EpmetException; import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils; 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()); List<String> daysBetween = DateUtils.getDaysBetween(form.getStartDate(), form.getEndDate());
customerIds.forEach(customerId -> { customerIds.forEach(customerId -> {
daysBetween.forEach(dateId -> { daysBetween.forEach(dateId -> {
statisticVote(customerId,dateId); statisticVote(customerId,yyyyMMddToLine(dateId));
}); });
}); });
}else { }else {
if (StringUtils.isBlank(form.getDateId())){ 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 -> { customerIds.forEach(customerId -> {
statisticVote(customerId, form.getDateId()); 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 * @Description 统计 issue_vote_statistical_daily
* 只统计表决日增存在的不存在的不写入查询程序补全 * 只统计表决日增存在的不存在的不写入查询程序补全
@ -360,28 +369,32 @@ public class IssueVoteStatisticalDailyServiceImpl extends BaseServiceImpl<IssueV
* @author zxc * @author zxc
* @date 2021/12/29 1:46 下午 * @date 2021/12/29 1:46 下午
*/ */
@Transactional(rollbackFor = Exception.class)
public void statisticVote(String customerId,String dateId){ 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)){ 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 -> { dayAdd.forEach(d -> allDayAdd.stream().filter(a -> a.getIssueId().equals(d.getIssueId())).forEach(a -> {
d.setOppositionCount(a.getOppositionCount()); d.setOppositionCount(a.getOppositionCount());
d.setSupportCount(a.getSupportCount()); d.setSupportCount(a.getSupportCount());
d.setTotalCount(a.getTotalCount()); d.setTotalCount(a.getTotalCount());
})); }));
List<IssueVoteStatisticalDailyEntity> needInsert = ConvertUtils.sourceToTarget(dayAdd, IssueVoteStatisticalDailyEntity.class); List<IssueVoteStatisticalDailyEntity> needInsert = ConvertUtils.sourceToTarget(dayAdd, IssueVoteStatisticalDailyEntity.class);
Integer delNum; delAndInsert(needInsert,customerId,dateId);
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);
});
} }
} }
@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 id="statisticVote" resultType="com.epmet.dto.result.DailyStatisticalVoteJobResultDTO">
SELECT SELECT
vs.votable_count, vs.votable_count,
<if test="dateId == null"> <if test="status == false">
(t.oppositionCount + t.supportCount) AS totalCount, (t.oppositionCount + t.supportCount) AS totalCount,
</if> </if>
<if test="dateId != null"> <if test="status == true">
(t.oppositionIncrement + t.supportIncrement) AS todayIncrement, (t.oppositionIncrement + t.supportIncrement) AS todayIncrement,
</if> </if>
t.* FROM t.* FROM
@ -203,9 +203,12 @@
FROM issue_vote_detail vd FROM issue_vote_detail vd
WHERE vd.DEL_FLAG = '0' WHERE vd.DEL_FLAG = '0'
AND vd.CUSTOMER_ID = #{customerId} AND vd.CUSTOMER_ID = #{customerId}
<if test="dateId != null"> <if test="status == true">
AND DATE_FORMAT(vd.CREATED_TIME,'%Y-%m-%d') = #{dateId} AND DATE_FORMAT(vd.CREATED_TIME,'%Y-%m-%d') = #{dateId}
</if> </if>
<if test="status == false">
AND DATE_FORMAT(vd.CREATED_TIME,'%Y-%m-%d') <![CDATA[ <= ]]> #{dateId}
</if>
GROUP BY vd.ISSUE_ID)t GROUP BY vd.ISSUE_ID)t
INNER JOIN issue_vote_statistical vs ON (vs.ISSUE_ID = t.ISSUE_ID AND vs.DEL_FLAG = '0') INNER JOIN issue_vote_statistical vs ON (vs.ISSUE_ID = t.ISSUE_ID AND vs.DEL_FLAG = '0')
</select> </select>

Loading…
Cancel
Save