14 changed files with 916 additions and 0 deletions
@ -0,0 +1,30 @@ |
|||
package com.epmet.topic.constant; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @CreateTime 2020/6/20 17:19 |
|||
*/ |
|||
public interface TopicConstant { |
|||
|
|||
/** |
|||
* 讨论中 |
|||
*/ |
|||
String DISCUSSING = "discussing"; |
|||
|
|||
/** |
|||
* 已屏蔽 |
|||
*/ |
|||
String HIDDEN = "hidden"; |
|||
|
|||
/** |
|||
* 已关闭 |
|||
*/ |
|||
String CLOSED = "closed"; |
|||
|
|||
String RATIO = "%"; |
|||
|
|||
String SHIFTED = "已转议题"; |
|||
|
|||
String MONTH = "month"; |
|||
String DATE = "date"; |
|||
} |
@ -0,0 +1,24 @@ |
|||
package com.epmet.topic.dto.form; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotBlank; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @CreateTime 2020/6/20 16:24 |
|||
*/ |
|||
@Data |
|||
public class TopicIncrTrendFormDTO implements Serializable { |
|||
|
|||
private static final long serialVersionUID = -4929038359220814068L; |
|||
|
|||
public interface TopicIncr{} |
|||
|
|||
/** |
|||
* 类型 month:代表月 date:代表日 |
|||
*/ |
|||
@NotBlank(message = "month / date 类型不能为空",groups = {TopicIncr.class}) |
|||
private String type; |
|||
} |
@ -0,0 +1,30 @@ |
|||
package com.epmet.topic.dto.result; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @CreateTime 2020/6/20 16:09 |
|||
*/ |
|||
@Data |
|||
public class TopicIncrTrendResultDTO implements Serializable { |
|||
|
|||
private static final long serialVersionUID = 6905657684644153197L; |
|||
|
|||
/** |
|||
* 日期 |
|||
*/ |
|||
private String date; |
|||
|
|||
/** |
|||
* 值 |
|||
*/ |
|||
private Integer value; |
|||
|
|||
/** |
|||
* 类型 |
|||
*/ |
|||
private String type; |
|||
} |
@ -0,0 +1,25 @@ |
|||
package com.epmet.topic.dto.result; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @CreateTime 2020/6/20 17:32 |
|||
*/ |
|||
@Data |
|||
public class TopicShiftedCountResultDTO implements Serializable { |
|||
|
|||
private static final long serialVersionUID = -7470748727678087785L; |
|||
|
|||
/** |
|||
* 已转议题数量 |
|||
*/ |
|||
private Integer shiftedIssueCount; |
|||
|
|||
/** |
|||
* 数据更新至 时间 |
|||
*/ |
|||
private String deadline; |
|||
} |
@ -0,0 +1,25 @@ |
|||
package com.epmet.topic.dto.result; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @CreateTime 2020/6/20 17:10 |
|||
*/ |
|||
@Data |
|||
public class TopicStatusResultDTO implements Serializable { |
|||
|
|||
private static final long serialVersionUID = -6461755954651271901L; |
|||
|
|||
/** |
|||
* 话题数量 |
|||
*/ |
|||
private Integer topicCount; |
|||
|
|||
/** |
|||
* 话题状态 已关闭:closed、已屏蔽:hidden、 讨论中:discussing |
|||
*/ |
|||
private String topicStatus; |
|||
} |
@ -0,0 +1,35 @@ |
|||
package com.epmet.topic.dto.result; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @CreateTime 2020/6/20 16:13 |
|||
*/ |
|||
@Data |
|||
public class TopicSubAgencyResultDTO implements Serializable { |
|||
|
|||
private static final long serialVersionUID = 70586943923355457L; |
|||
|
|||
/** |
|||
* 名称 |
|||
*/ |
|||
private String name; |
|||
|
|||
/** |
|||
* 值 |
|||
*/ |
|||
private Integer value; |
|||
|
|||
/** |
|||
* 类型 |
|||
*/ |
|||
private String type; |
|||
|
|||
/** |
|||
* 机关Id |
|||
*/ |
|||
private String agencyId; |
|||
} |
@ -0,0 +1,35 @@ |
|||
package com.epmet.topic.dto.result; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @CreateTime 2020/6/20 16:13 |
|||
*/ |
|||
@Data |
|||
public class TopicSubGridResultDTO implements Serializable { |
|||
|
|||
private static final long serialVersionUID = -7251687622455341118L; |
|||
|
|||
/** |
|||
* 名称 |
|||
*/ |
|||
private String name; |
|||
|
|||
/** |
|||
* 值 |
|||
*/ |
|||
private Integer value; |
|||
|
|||
/** |
|||
* 类型 |
|||
*/ |
|||
private String type; |
|||
|
|||
/** |
|||
* 网格Id |
|||
*/ |
|||
private String gridId; |
|||
} |
@ -0,0 +1,30 @@ |
|||
package com.epmet.topic.dto.result; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @CreateTime 2020/6/20 16:14 |
|||
*/ |
|||
@Data |
|||
public class TopicSummaryInfoResultDTO implements Serializable { |
|||
|
|||
private static final long serialVersionUID = 1103298182001744033L; |
|||
|
|||
/** |
|||
* 名称 |
|||
*/ |
|||
private String name; |
|||
|
|||
/** |
|||
* 值 |
|||
*/ |
|||
private Integer value; |
|||
|
|||
/** |
|||
* 百分比 |
|||
*/ |
|||
private String ratio; |
|||
} |
@ -0,0 +1,45 @@ |
|||
package com.epmet.topic.dto.result; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @CreateTime 2020/6/20 16:04 |
|||
*/ |
|||
@Data |
|||
public class TopicSummaryResultDTO implements Serializable { |
|||
|
|||
private static final long serialVersionUID = -6051892596892952025L; |
|||
|
|||
/** |
|||
* 话题总数 |
|||
*/ |
|||
private Integer topicTotalCount; |
|||
|
|||
/** |
|||
* 讨论中话题数量 |
|||
*/ |
|||
private Integer talkingTotalCount; |
|||
|
|||
/** |
|||
* 已关闭话题数量 |
|||
*/ |
|||
private Integer closedTotalCount; |
|||
|
|||
/** |
|||
* 已屏蔽话题数量 |
|||
*/ |
|||
private Integer shieldedTotalCount; |
|||
|
|||
/** |
|||
* 话题已转议题数量 |
|||
*/ |
|||
private Integer shiftedTotalCount; |
|||
|
|||
/** |
|||
* 数据更新至 时间 |
|||
*/ |
|||
private String deadline; |
|||
} |
@ -0,0 +1,81 @@ |
|||
package com.epmet.module.topic.controller; |
|||
|
|||
import com.epmet.commons.tools.annotation.LoginUser; |
|||
import com.epmet.commons.tools.security.dto.TokenDto; |
|||
import com.epmet.commons.tools.utils.Result; |
|||
import com.epmet.commons.tools.validator.ValidatorUtils; |
|||
import com.epmet.module.topic.service.TopicService; |
|||
import com.epmet.topic.dto.form.TopicIncrTrendFormDTO; |
|||
import com.epmet.topic.dto.result.*; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.PostMapping; |
|||
import org.springframework.web.bind.annotation.RequestBody; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @CreateTime 2020/6/20 15:55 |
|||
*/ |
|||
@RestController |
|||
@RequestMapping("topic") |
|||
public class TopicController { |
|||
|
|||
@Autowired |
|||
private TopicService topicService; |
|||
|
|||
/** |
|||
* @Description 话题:话题总数、讨论中话题数量、已关闭话题数量、已屏蔽话题数量、话题已转议题数量、数据更新至2020-06-17 |
|||
* @param tokenDto |
|||
* @author zxc |
|||
*/ |
|||
@PostMapping("topicsummary") |
|||
public Result<TopicSummaryResultDTO> topicSummary(@LoginUser TokenDto tokenDto){ |
|||
return new Result<TopicSummaryResultDTO>().ok(topicService.topicSummary(tokenDto)); |
|||
} |
|||
|
|||
/** |
|||
* @Description 话题——话题分析 |
|||
* @param tokenDto |
|||
* @param formDTO |
|||
* @author zxc |
|||
*/ |
|||
@PostMapping("incrtrend") |
|||
public Result<List<TopicIncrTrendResultDTO>> topicIncrTrend(@LoginUser TokenDto tokenDto, @RequestBody TopicIncrTrendFormDTO formDTO){ |
|||
ValidatorUtils.validateEntity(formDTO, TopicIncrTrendFormDTO.TopicIncr.class); |
|||
return new Result<List<TopicIncrTrendResultDTO>>().ok(topicService.topicIncrTrend(tokenDto,formDTO)); |
|||
} |
|||
|
|||
/** |
|||
* @Description 话题——直属网格话题数 |
|||
* @param tokenDto |
|||
* @author zxc |
|||
*/ |
|||
@PostMapping("subgrid") |
|||
public Result<List<TopicSubGridResultDTO>> topicSubGrid(@LoginUser TokenDto tokenDto){ |
|||
return new Result<List<TopicSubGridResultDTO>>().ok(topicService.topicSubGrid(tokenDto)); |
|||
} |
|||
|
|||
/** |
|||
* @Description 话题——下级机关话题数 |
|||
* @param tokenDto |
|||
* @author zxc |
|||
*/ |
|||
@PostMapping("subagency") |
|||
public Result<List<TopicSubAgencyResultDTO>> topicSubAgency(@LoginUser TokenDto tokenDto){ |
|||
return new Result<List<TopicSubAgencyResultDTO>>().ok(topicService.topicSubAgency(tokenDto)); |
|||
} |
|||
|
|||
/** |
|||
* @Description 话题——话题分析表 |
|||
* @param tokenDto |
|||
* @author zxc |
|||
*/ |
|||
@PostMapping("summaryinfo") |
|||
public Result<List<TopicSummaryInfoResultDTO>> topicSummaryInfo(@LoginUser TokenDto tokenDto){ |
|||
return new Result<List<TopicSummaryInfoResultDTO>>().ok(topicService.topicSummaryInfo(tokenDto)); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,108 @@ |
|||
package com.epmet.module.topic.dao; |
|||
|
|||
import com.epmet.group.dto.result.GroupIncrTrendResultDTO; |
|||
import com.epmet.topic.dto.result.*; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
import org.apache.ibatis.annotations.Param; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @CreateTime 2020/6/20 15:55 |
|||
*/ |
|||
@Mapper |
|||
public interface TopicDao { |
|||
|
|||
/** |
|||
* @Description 获取话题数量及状态 |
|||
* @param agencyId |
|||
* @author zxc |
|||
*/ |
|||
List<TopicStatusResultDTO> getTopicStatus(@Param("agencyId")String agencyId); |
|||
|
|||
/** |
|||
* @Description 获取机关下已转议题数量 |
|||
* @param agencyId |
|||
* @author zxc |
|||
*/ |
|||
TopicShiftedCountResultDTO getShiftedCount(@Param("agencyId")String agencyId); |
|||
|
|||
/** |
|||
* @Description 获取话题信息(状态,数量,百分比) |
|||
* @param agencyId |
|||
* @author zxc |
|||
*/ |
|||
List<TopicSummaryInfoResultDTO> topicSummaryInfo(@Param("agencyId")String agencyId); |
|||
|
|||
/** |
|||
* @Description 根据当前机关判断是否有下级机关 |
|||
* @param agencyId |
|||
* @author zxc |
|||
*/ |
|||
List<String> getSubAgencyIdList(@Param("agencyId")String agencyId); |
|||
|
|||
/** |
|||
* @Description 获取最后一天的所有话题数据 【fact_topic_status_agency_daily】 |
|||
* @param |
|||
* @author zxc |
|||
*/ |
|||
List<TopicSubAgencyResultDTO> getAllTopicInfoLastDay(); |
|||
|
|||
/** |
|||
* @Description 获取最后一天的所有话题已转议题数据 |
|||
* @param |
|||
* @author zxc |
|||
*/ |
|||
List<TopicSubAgencyResultDTO> getAllTopicShiftedInfoLastDay(); |
|||
|
|||
/** |
|||
* @Description 校验机关下是否存在直属网格 |
|||
* @param agencyId |
|||
* @author zxc |
|||
*/ |
|||
List<String> getSubGridIdList(@Param("agencyId")String agencyId); |
|||
|
|||
/** |
|||
* @Description 获取最后一天的所有话题数据 【fact_topic_status_grid_daily】【grid】 |
|||
* @param |
|||
* @author zxc |
|||
*/ |
|||
List<TopicSubGridResultDTO> getGridAllTopicInfoLastDay(); |
|||
|
|||
/** |
|||
* @Description 获取最后一天的所有话题已转议题数据【grid】 |
|||
* @param |
|||
* @author zxc |
|||
*/ |
|||
List<TopicSubGridResultDTO> getGridAllTopicShiftedInfoLastDay(); |
|||
|
|||
/** |
|||
* @Description 话题日增长 |
|||
* @param agencyId |
|||
* @author zxc |
|||
*/ |
|||
List<TopicIncrTrendResultDTO> getTopicIncrDaily(@Param("agencyId") String agencyId); |
|||
|
|||
/** |
|||
* @Description 话题转议题日增长 |
|||
* @param agencyId |
|||
* @author zxc |
|||
*/ |
|||
List<TopicIncrTrendResultDTO> getTopicShiftedIncrDaily(@Param("agencyId") String agencyId); |
|||
|
|||
/** |
|||
* @Description 话题月增长 |
|||
* @param agencyId |
|||
* @author zxc |
|||
*/ |
|||
List<TopicIncrTrendResultDTO> getTopicIncrMonthly(@Param("agencyId") String agencyId); |
|||
|
|||
/** |
|||
* @Description 话题转议题月增长 |
|||
* @param agencyId |
|||
* @author zxc |
|||
*/ |
|||
List<TopicIncrTrendResultDTO> getTopicShiftedIncrMonthly(@Param("agencyId") String agencyId); |
|||
|
|||
} |
@ -0,0 +1,51 @@ |
|||
package com.epmet.module.topic.service; |
|||
|
|||
import com.epmet.commons.tools.security.dto.TokenDto; |
|||
import com.epmet.topic.dto.form.TopicIncrTrendFormDTO; |
|||
import com.epmet.topic.dto.result.*; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @CreateTime 2020/6/20 15:58 |
|||
*/ |
|||
public interface TopicService { |
|||
|
|||
/** |
|||
* @Description 话题:话题总数、讨论中话题数量、已关闭话题数量、已屏蔽话题数量、话题已转议题数量、数据更新至2020-06-17 |
|||
* @param tokenDto |
|||
* @author zxc |
|||
*/ |
|||
TopicSummaryResultDTO topicSummary(TokenDto tokenDto); |
|||
|
|||
/** |
|||
* @Description 话题——话题分析 |
|||
* @param tokenDto |
|||
* @param formDTO |
|||
* @author zxc |
|||
*/ |
|||
List<TopicIncrTrendResultDTO> topicIncrTrend(TokenDto tokenDto, TopicIncrTrendFormDTO formDTO); |
|||
|
|||
/** |
|||
* @Description 话题——直属网格话题数 |
|||
* @param tokenDto |
|||
* @author zxc |
|||
*/ |
|||
List<TopicSubGridResultDTO> topicSubGrid( TokenDto tokenDto); |
|||
|
|||
/** |
|||
* @Description 话题——下级机关话题数 |
|||
* @param tokenDto |
|||
* @author zxc |
|||
*/ |
|||
List<TopicSubAgencyResultDTO> topicSubAgency(TokenDto tokenDto); |
|||
|
|||
/** |
|||
* @Description 话题——话题分析表 |
|||
* @param tokenDto |
|||
* @author zxc |
|||
*/ |
|||
List<TopicSummaryInfoResultDTO> topicSummaryInfo(TokenDto tokenDto); |
|||
|
|||
} |
@ -0,0 +1,182 @@ |
|||
package com.epmet.module.topic.service.impl; |
|||
|
|||
import com.epmet.commons.tools.constant.NumConstant; |
|||
import com.epmet.commons.tools.security.dto.TokenDto; |
|||
import com.epmet.dto.form.LoginUserDetailsFormDTO; |
|||
import com.epmet.dto.result.LoginUserDetailsResultDTO; |
|||
import com.epmet.feign.EpmetUserOpenFeignClient; |
|||
import com.epmet.module.topic.dao.TopicDao; |
|||
import com.epmet.module.topic.service.TopicService; |
|||
import com.epmet.topic.constant.TopicConstant; |
|||
import com.epmet.topic.dto.form.TopicIncrTrendFormDTO; |
|||
import com.epmet.topic.dto.result.*; |
|||
import org.springframework.beans.BeanUtils; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.Comparator; |
|||
import java.util.List; |
|||
import java.util.stream.Collectors; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @CreateTime 2020/6/20 15:58 |
|||
*/ |
|||
@Service |
|||
public class TopicServiceImpl implements TopicService { |
|||
|
|||
@Autowired |
|||
private TopicDao topicDao; |
|||
@Autowired |
|||
private EpmetUserOpenFeignClient epmetUserOpenFeignClient; |
|||
|
|||
/** |
|||
* @Description 话题:话题总数、讨论中话题数量、已关闭话题数量、已屏蔽话题数量、话题已转议题数量、数据更新至2020-06-17 |
|||
* @param tokenDto |
|||
* @author zxc |
|||
*/ |
|||
@Override |
|||
public TopicSummaryResultDTO topicSummary(TokenDto tokenDto) { |
|||
TopicSummaryResultDTO result = new TopicSummaryResultDTO(); |
|||
String agencyId = this.getLoginUserDetails(tokenDto); |
|||
List<TopicStatusResultDTO> topicStatus = topicDao.getTopicStatus(agencyId); |
|||
if (topicStatus.size() != NumConstant.ZERO){ |
|||
topicStatus.forEach(topic -> { |
|||
if (topic.getTopicStatus().equals(TopicConstant.DISCUSSING)){ |
|||
result.setTalkingTotalCount(topic.getTopicCount()); |
|||
}else if (topic.getTopicStatus().equals(TopicConstant.CLOSED)){ |
|||
result.setClosedTotalCount(topic.getTopicCount()); |
|||
}else { |
|||
result.setShieldedTotalCount(topic.getTopicCount()); |
|||
} |
|||
}); |
|||
result.setTopicTotalCount(topicStatus.stream().collect(Collectors.summingInt(TopicStatusResultDTO::getTopicCount))); |
|||
} |
|||
TopicShiftedCountResultDTO shiftedCount = topicDao.getShiftedCount(agencyId); |
|||
if (shiftedCount != null){ |
|||
result.setShiftedTotalCount(shiftedCount.getShiftedIssueCount()); |
|||
result.setDeadline(shiftedCount.getDeadline()); |
|||
} |
|||
return result; |
|||
} |
|||
|
|||
/** |
|||
* @Description 话题——话题分析 |
|||
* @param tokenDto |
|||
* @param formDTO |
|||
* @author zxc |
|||
*/ |
|||
@Override |
|||
public List<TopicIncrTrendResultDTO> topicIncrTrend(TokenDto tokenDto, TopicIncrTrendFormDTO formDTO) { |
|||
String agencyId = this.getLoginUserDetails(tokenDto); |
|||
List<TopicIncrTrendResultDTO> result = new ArrayList<>(); |
|||
if (formDTO.getType().equals(TopicConstant.DATE)){ |
|||
List<TopicIncrTrendResultDTO> topicIncrDaily = topicDao.getTopicIncrDaily(agencyId); |
|||
List<TopicIncrTrendResultDTO> topicShiftedIncrDaily = topicDao.getTopicShiftedIncrDaily(agencyId); |
|||
topicIncrDaily.addAll(topicShiftedIncrDaily); |
|||
result = topicIncrDaily.stream().sorted(Comparator.comparing(TopicIncrTrendResultDTO::getDate).reversed()).collect(Collectors.toList()); |
|||
}else { |
|||
List<TopicIncrTrendResultDTO> topicIncrMonthly = topicDao.getTopicIncrMonthly(agencyId); |
|||
List<TopicIncrTrendResultDTO> topicShiftedIncrMonthly = topicDao.getTopicShiftedIncrMonthly(agencyId); |
|||
topicIncrMonthly.addAll(topicShiftedIncrMonthly); |
|||
result = topicIncrMonthly.stream().sorted(Comparator.comparing(TopicIncrTrendResultDTO::getDate).reversed()).collect(Collectors.toList()); |
|||
} |
|||
return result; |
|||
} |
|||
|
|||
/** |
|||
* @Description 话题——直属网格话题数 |
|||
* @param tokenDto |
|||
* @author zxc |
|||
*/ |
|||
@Override |
|||
public List<TopicSubGridResultDTO> topicSubGrid(TokenDto tokenDto) { |
|||
String agencyId = this.getLoginUserDetails(tokenDto); |
|||
List<TopicSubGridResultDTO> result = new ArrayList<>(); |
|||
List<String> subGridIdList = topicDao.getSubGridIdList(agencyId); |
|||
if (subGridIdList.size() != NumConstant.ZERO){ |
|||
List<TopicSubGridResultDTO> gridAllTopicInfoLastDay = topicDao.getGridAllTopicInfoLastDay(); |
|||
List<TopicSubGridResultDTO> gridAllTopicShiftedInfoLastDay = topicDao.getGridAllTopicShiftedInfoLastDay(); |
|||
subGridIdList.forEach(gridId -> { |
|||
gridAllTopicInfoLastDay.forEach(gridTopic -> { |
|||
if (gridId.equals(gridTopic.getGridId())){ |
|||
result.add(gridTopic); |
|||
} |
|||
}); |
|||
gridAllTopicShiftedInfoLastDay.forEach(gridShift -> { |
|||
if (gridId.equals(gridShift.getGridId())){ |
|||
result.add(gridShift); |
|||
} |
|||
}); |
|||
}); |
|||
return result; |
|||
} |
|||
return new ArrayList<>(); |
|||
} |
|||
|
|||
/** |
|||
* @Description 话题——下级机关话题数 |
|||
* @param tokenDto |
|||
* @author zxc |
|||
*/ |
|||
@Override |
|||
public List<TopicSubAgencyResultDTO> topicSubAgency(TokenDto tokenDto) { |
|||
String agencyId = this.getLoginUserDetails(tokenDto); |
|||
List<TopicSubAgencyResultDTO> result = new ArrayList<>(); |
|||
List<String> subAgencyIdList = topicDao.getSubAgencyIdList(agencyId); |
|||
//存在下级机关
|
|||
if (subAgencyIdList.size() != NumConstant.ZERO){ |
|||
List<TopicSubAgencyResultDTO> allTopicInfoLastDay = topicDao.getAllTopicInfoLastDay(); |
|||
List<TopicSubAgencyResultDTO> allTopicShiftedInfoLastDay = topicDao.getAllTopicShiftedInfoLastDay(); |
|||
//话题状态为 已关闭、讨论中、已屏蔽
|
|||
subAgencyIdList.forEach(agencyIdOne -> { |
|||
allTopicInfoLastDay.forEach(agency -> { |
|||
if (agencyIdOne.equals(agency.getAgencyId())){ |
|||
result.add(agency); |
|||
} |
|||
}); |
|||
allTopicShiftedInfoLastDay.forEach(shiftTopic -> { |
|||
if (agencyIdOne.equals(shiftTopic.getAgencyId())){ |
|||
result.add(shiftTopic); |
|||
} |
|||
}); |
|||
}); |
|||
return result; |
|||
} |
|||
//不存在
|
|||
return new ArrayList<>(); |
|||
} |
|||
|
|||
/** |
|||
* @Description 话题——话题分析表 |
|||
* @param tokenDto |
|||
* @author zxc |
|||
*/ |
|||
@Override |
|||
public List<TopicSummaryInfoResultDTO> topicSummaryInfo(TokenDto tokenDto) { |
|||
String agencyId = this.getLoginUserDetails(tokenDto); |
|||
List<TopicSummaryInfoResultDTO> topicSummaryInfo = topicDao.topicSummaryInfo(agencyId); |
|||
TopicShiftedCountResultDTO shiftedCount = topicDao.getShiftedCount(agencyId); |
|||
int i = (shiftedCount.getShiftedIssueCount() / topicSummaryInfo.stream().collect(Collectors.summingInt(TopicSummaryInfoResultDTO::getValue))) * NumConstant.ONE_HUNDRED; |
|||
String ratio = String.valueOf(i) + TopicConstant.RATIO; |
|||
TopicSummaryInfoResultDTO result = new TopicSummaryInfoResultDTO(); |
|||
result.setName(TopicConstant.SHIFTED); |
|||
result.setRatio(ratio); |
|||
result.setValue(shiftedCount.getShiftedIssueCount()); |
|||
topicSummaryInfo.add(result); |
|||
return topicSummaryInfo; |
|||
} |
|||
|
|||
/** |
|||
* @Description 获取机关ID |
|||
* @param tokenDto |
|||
* @author zxc |
|||
*/ |
|||
public String getLoginUserDetails(TokenDto tokenDto){ |
|||
LoginUserDetailsFormDTO dto = new LoginUserDetailsFormDTO(); |
|||
BeanUtils.copyProperties(tokenDto,dto); |
|||
LoginUserDetailsResultDTO data = epmetUserOpenFeignClient.getLoginUserDetails(dto).getData(); |
|||
return data.getAgencyId(); |
|||
} |
|||
} |
@ -0,0 +1,215 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
|
|||
<mapper namespace="com.epmet.module.topic.dao.TopicDao"> |
|||
|
|||
<!--获取话题数量及状态--> |
|||
<select id="getTopicStatus" parameterType="java.lang.String" resultType="com.epmet.topic.dto.result.TopicStatusResultDTO"> |
|||
SELECT |
|||
topic_count AS topicCount, |
|||
topic_status_id AS topicStatus |
|||
FROM |
|||
fact_topic_status_agency_daily |
|||
WHERE |
|||
del_flag = '0' |
|||
AND agency_id = #{agencyId} |
|||
GROUP BY |
|||
topic_status_id |
|||
ORDER BY |
|||
date_id DESC |
|||
</select> |
|||
|
|||
<!--获取机关下已转议题数量--> |
|||
<select id="getShiftedCount" parameterType="java.lang.String" resultType="com.epmet.topic.dto.result.TopicShiftedCountResultDTO"> |
|||
SELECT |
|||
issue_total AS shiftedIssueCount, |
|||
DATE_FORMAT( date_id, '%Y-%m-%d' ) AS deadline |
|||
FROM |
|||
fact_topic_issue_agency_daily |
|||
WHERE |
|||
del_flag = '0' |
|||
AND agency_id = #{agencyId} |
|||
ORDER BY |
|||
date_id DESC |
|||
LIMIT 1 |
|||
</select> |
|||
|
|||
<!-- 获取话题信息(状态,数量,百分比) --> |
|||
<select id="topicSummaryInfo" parameterType="java.lang.String" resultType="com.epmet.topic.dto.result.TopicSummaryInfoResultDTO"> |
|||
SELECT |
|||
topic_count AS value, |
|||
(case WHEN topic_status_id = 'discussing' THEN '讨论中' |
|||
WHEN topic_status_id = 'hidden' THEN '已屏蔽' |
|||
WHEN topic_status_id = 'closed' THEN '已关闭' |
|||
ELSE '无' END) AS name, |
|||
topic_proportion AS ratio |
|||
FROM |
|||
fact_topic_status_agency_daily |
|||
WHERE |
|||
del_flag = '0' |
|||
AND agency_id = #{agencyId} |
|||
GROUP BY |
|||
topic_status_id |
|||
ORDER BY |
|||
date_id DESC |
|||
</select> |
|||
|
|||
<!--根据当前机关判断是否有下级机关--> |
|||
<select id="getSubAgencyIdList" parameterType="java.lang.String" resultType="java.lang.String"> |
|||
SELECT |
|||
id AS agencyId |
|||
FROM |
|||
dim_agency |
|||
WHERE |
|||
del_flag = '0' |
|||
AND pid = #{agencyId} |
|||
</select> |
|||
|
|||
<!--获取最后一天的所有话题数据--> |
|||
<select id="getAllTopicInfoLastDay" resultType="com.epmet.topic.dto.result.TopicSubAgencyResultDTO"> |
|||
SELECT |
|||
ftsad.agency_id AS agencyId, |
|||
ftsad.topic_count AS value, |
|||
(case WHEN ftsad.topic_status_id = 'discussing' THEN '讨论中' |
|||
WHEN ftsad.topic_status_id = 'hidden' THEN '已屏蔽' |
|||
WHEN ftsad.topic_status_id = 'closed' THEN '已关闭' |
|||
ELSE '无' END) AS type, |
|||
da.agency_name AS name |
|||
FROM |
|||
fact_topic_status_agency_daily ftsad |
|||
LEFT JOIN dim_agency da ON da.id = ftsad.agency_id AND da.del_flag = '0' |
|||
WHERE |
|||
ftsad.del_flag = '0' |
|||
GROUP BY |
|||
ftsad.topic_status_id |
|||
ORDER BY |
|||
ftsad.date_id DESC |
|||
</select> |
|||
|
|||
<!--获取最后一天的所有话题已转议题数据--> |
|||
<select id="getAllTopicShiftedInfoLastDay" resultType="com.epmet.topic.dto.result.TopicSubAgencyResultDTO"> |
|||
SELECT |
|||
ftiad.issue_total AS value, |
|||
'已转议题' AS type, |
|||
ftiad.agency_id AS agencyId, |
|||
da.agency_name AS name |
|||
FROM |
|||
fact_topic_issue_agency_daily ftiad |
|||
LEFT JOIN dim_agency da ON da.id = ftiad.agency_id AND da.del_flag = '0' |
|||
WHERE |
|||
ftiad.del_flag = '0' |
|||
GROUP BY ftiad.agency_id |
|||
ORDER BY ftiad.date_id DESC |
|||
</select> |
|||
|
|||
<!--校验机关下是否存在直属网格--> |
|||
<select id="getSubGridIdList" parameterType="java.lang.String" resultType="java.lang.String"> |
|||
SELECT |
|||
id AS gridId |
|||
FROM |
|||
dim_grid |
|||
WHERE |
|||
del_flag = '0' |
|||
AND agency_id = #{agencyId} |
|||
</select> |
|||
|
|||
<!--获取最后一天的所有话题数据--> |
|||
<select id="getGridAllTopicInfoLastDay" resultType="com.epmet.topic.dto.result.TopicSubGridResultDTO"> |
|||
SELECT |
|||
ftsad.grid_id AS gridId, |
|||
ftsad.topic_count AS value, |
|||
(case WHEN ftsad.topic_status_id = 'discussing' THEN '讨论中' |
|||
WHEN ftsad.topic_status_id = 'hidden' THEN '已屏蔽' |
|||
WHEN ftsad.topic_status_id = 'closed' THEN '已关闭' |
|||
ELSE '无' END) AS type, |
|||
dg.grid_name AS name |
|||
FROM |
|||
fact_topic_status_grid_daily ftsad |
|||
LEFT JOIN dim_grid dg ON dg.id = ftsad.grid_id AND dg.del_flag = '0' |
|||
WHERE |
|||
ftsad.del_flag = '0' |
|||
GROUP BY |
|||
ftsad.topic_status_id |
|||
ORDER BY |
|||
ftsad.date_id DESC |
|||
</select> |
|||
|
|||
<!--获取最后一天的所有话题已转议题数据--> |
|||
<select id="getGridAllTopicShiftedInfoLastDay" resultType="com.epmet.topic.dto.result.TopicSubGridResultDTO"> |
|||
SELECT |
|||
ftiad.issue_total AS value, |
|||
'已转议题' AS type, |
|||
ftiad.grid_id AS gridId, |
|||
da.grid_name AS name |
|||
FROM |
|||
fact_topic_issue_grid_daily ftiad |
|||
LEFT JOIN dim_grid da ON da.id = ftiad.grid_id AND da.del_flag = '0' |
|||
WHERE |
|||
ftiad.del_flag = '0' |
|||
GROUP BY ftiad.grid_id |
|||
ORDER BY ftiad.date_id DESC |
|||
</select> |
|||
|
|||
<!--话题日增长--> |
|||
<select id="getTopicIncrDaily" parameterType="java.lang.String" resultType="com.epmet.topic.dto.result.TopicIncrTrendResultDTO"> |
|||
SELECT |
|||
DATE_FORMAT( date_id, '%Y/%m/%d' ) AS date, |
|||
topic_increment AS value, |
|||
(case WHEN topic_status_id = 'discussing' THEN '讨论中' |
|||
WHEN topic_status_id = 'hidden' THEN '已屏蔽' |
|||
WHEN topic_status_id = 'closed' THEN '已关闭' |
|||
ELSE '无' END) AS type |
|||
FROM |
|||
fact_topic_status_agency_daily |
|||
WHERE |
|||
del_flag = '0' |
|||
AND agency_id = #{agencyId} |
|||
ORDER BY |
|||
date_id DESC |
|||
</select> |
|||
|
|||
<!--话题转议题--> |
|||
<select id="getTopicShiftedIncrDaily" parameterType="java.lang.String" resultType="com.epmet.topic.dto.result.TopicIncrTrendResultDTO"> |
|||
SELECT |
|||
DATE_FORMAT( date_id, '%Y/%m/%d' ) AS date, |
|||
issue_incr AS value, |
|||
'已转议题' AS type |
|||
FROM |
|||
fact_topic_issue_agency_daily |
|||
WHERE |
|||
del_flag = '0' |
|||
AND agency_id = #{agencyId} |
|||
ORDER BY date_id DESC |
|||
</select> |
|||
|
|||
<select id="getTopicIncrMonthly" parameterType="java.lang.String" resultType="com.epmet.topic.dto.result.TopicIncrTrendResultDTO"> |
|||
SELECT |
|||
CONCAT(SUBSTRING(month_id,1,4),'/',SUBSTRING(month_id,5,6)) AS date, |
|||
topic_incr AS value, |
|||
(case WHEN topic_status_id = 'discussing' THEN '讨论中' |
|||
WHEN topic_status_id = 'hidden' THEN '已屏蔽' |
|||
WHEN topic_status_id = 'closed' THEN '已关闭' |
|||
ELSE '无' END) AS type |
|||
FROM |
|||
fact_topic_status_agency_monthly |
|||
WHERE |
|||
del_flag = '0' |
|||
AND agency_id = #{agencyId} |
|||
ORDER BY |
|||
month_id DESC |
|||
</select> |
|||
|
|||
<select id="getTopicShiftedIncrMonthly" parameterType="java.lang.String" resultType="com.epmet.topic.dto.result.TopicIncrTrendResultDTO"> |
|||
SELECT |
|||
CONCAT(SUBSTRING(month_id,1,4),'/',SUBSTRING(month_id,5,6)) AS date, |
|||
issue_incr AS value, |
|||
'已转议题' AS type |
|||
FROM |
|||
fact_topic_issue_agency_monthly |
|||
WHERE |
|||
del_flag = '0' |
|||
AND agency_id = #{agencyId} |
|||
ORDER BY month_id DESC |
|||
</select> |
|||
|
|||
</mapper> |
Loading…
Reference in new issue