34 changed files with 482 additions and 257 deletions
@ -0,0 +1,33 @@ |
|||
package com.epmet.dto.extract.form; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* desc: 从业务数据抽取到统计库Form DTO |
|||
* |
|||
* @Author zxc |
|||
* @DateTime 2020/9/16 6:01 下午 |
|||
*/ |
|||
@Data |
|||
public class AggregationExtractFormDTO implements Serializable { |
|||
|
|||
private static final long serialVersionUID = -5488214001979782952L; |
|||
|
|||
private String customerId; |
|||
/** |
|||
* 开始日期 yyyy-MM-dd |
|||
*/ |
|||
private String startDate; |
|||
|
|||
/** |
|||
* 结束日期 yyyy-MM-dd |
|||
*/ |
|||
private String endDate; |
|||
|
|||
/** |
|||
* 抽取类型 monthly,daily |
|||
*/ |
|||
private String type; |
|||
} |
@ -0,0 +1,163 @@ |
|||
package com.epmet.controller; |
|||
|
|||
import com.epmet.commons.tools.constant.StrConstant; |
|||
import com.epmet.commons.tools.utils.DateUtils; |
|||
import com.epmet.commons.tools.utils.Result; |
|||
import com.epmet.dto.StatsFormDTO; |
|||
import com.epmet.dto.extract.form.AggregationExtractFormDTO; |
|||
import com.epmet.dto.group.form.GroupStatsFormDTO; |
|||
import com.epmet.service.*; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.RequestBody; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author liujianjun |
|||
* @Description 业务数据聚合统计 |
|||
* @ClassName FactAggregationExtractController |
|||
* @Date 2020-06-23 15:18 |
|||
*/ |
|||
@Slf4j |
|||
@RestController |
|||
@RequestMapping("fact/aggregation") |
|||
public class FactAggregationExtractController { |
|||
@Autowired |
|||
private StatsGroupService statsGroupService; |
|||
@Autowired |
|||
private StatsUserService statsUserService; |
|||
@Autowired |
|||
private StatsTopicService statsTopicService; |
|||
@Autowired |
|||
private StatsIssueService statsIssueService; |
|||
@Autowired |
|||
private StatsProjectService statsProjectService; |
|||
@Autowired |
|||
private StatsPublicityService statsPublicityService; |
|||
|
|||
/** |
|||
* desc: 按月或者天抽取业务数据到统计库 |
|||
* |
|||
* @param formDTO |
|||
* @return com.epmet.commons.tools.utils.Result |
|||
* @author LiuJanJun |
|||
* @date 2020/11/10 3:14 下午 |
|||
*/ |
|||
@RequestMapping("extractDailyOrMonthly") |
|||
public Result extractDaily(@RequestBody AggregationExtractFormDTO formDTO) { |
|||
if (StringUtils.isBlank(formDTO.getStartDate()) && StringUtils.isBlank(formDTO.getEndDate())) { |
|||
log.error("抽取日期范围不能为空"); |
|||
return new Result().error(); |
|||
} |
|||
if (formDTO.getStartDate().indexOf(StrConstant.HYPHEN) < 0 || formDTO.getEndDate().indexOf(StrConstant.HYPHEN) < 0) { |
|||
log.error("抽取日期范围格式不正确,yyyy-MM-dd"); |
|||
return new Result().error(); |
|||
} |
|||
List<String> daysBetween = DateUtils.getDaysBetween(formDTO.getStartDate(), formDTO.getEndDate(), DateUtils.DATE_PATTERN, DateUtils.DATE_PATTERN); |
|||
daysBetween.forEach(dateId -> { |
|||
Date date = DateUtils.parse(dateId, DateUtils.DATE_PATTERN); |
|||
StatsFormDTO param = new StatsFormDTO(); |
|||
param.setCustomerId(formDTO.getCustomerId()); |
|||
param.setDate(dateId); |
|||
|
|||
switch (formDTO.getType()) { |
|||
case "monthly": |
|||
extractGroupDataMonthly(param); |
|||
extractArticleDataMonthlyAndQuarterly(param); |
|||
break; |
|||
default: |
|||
extractUserDataDaily(param); |
|||
extractGroupDataDaily(param); |
|||
extractTopicDataDaily(param); |
|||
extractIssueDataDaily(param); |
|||
extractProjectDataDaily(param); |
|||
extractAtricleDataDaily(param); |
|||
} |
|||
}); |
|||
return new Result(); |
|||
} |
|||
|
|||
private void extractUserDataDaily(StatsFormDTO formDTO) { |
|||
try { |
|||
statsUserService.partition(formDTO); |
|||
} catch (Exception e) { |
|||
log.error("抽取【用户】数据失败", e); |
|||
} |
|||
} |
|||
|
|||
private void extractTopicDataDaily(StatsFormDTO formDTO) { |
|||
try { |
|||
statsTopicService.partition(formDTO); |
|||
} catch (Exception e) { |
|||
log.error("抽取【话题】数据失败", e); |
|||
} |
|||
} |
|||
|
|||
private void extractIssueDataDaily(StatsFormDTO formDTO) { |
|||
try { |
|||
statsIssueService.agencyGridIssueStats(formDTO); |
|||
} catch (Exception e) { |
|||
log.error("抽取【议题】数据失败", e); |
|||
} |
|||
} |
|||
|
|||
private void extractProjectDataDaily(StatsFormDTO formDTO) { |
|||
try { |
|||
statsProjectService.gridProjectStats(formDTO); |
|||
statsProjectService.agencyProjectStats(formDTO); |
|||
} catch (Exception e) { |
|||
log.error("抽取【项目】数据失败", e); |
|||
} |
|||
} |
|||
|
|||
private void extractAtricleDataDaily(StatsFormDTO formDTO) { |
|||
try { |
|||
statsPublicityService.articleSummaryDailyStatsjob(formDTO); |
|||
statsPublicityService.tagUsedDailyStatsjob(formDTO); |
|||
statsPublicityService.tagViewedDailyStatsjob(formDTO); |
|||
} catch (Exception e) { |
|||
log.error("抽取【文章】数据失败", e); |
|||
} |
|||
} |
|||
|
|||
private void extractGroupDataDaily(StatsFormDTO formDTO) { |
|||
try { |
|||
GroupStatsFormDTO groupStatsFormDTO = new GroupStatsFormDTO(); |
|||
groupStatsFormDTO.setDate(formDTO.getDate()); |
|||
groupStatsFormDTO.setCustomerId(formDTO.getCustomerId()); |
|||
|
|||
statsGroupService.groupGridDaily(groupStatsFormDTO); |
|||
statsGroupService.groupAgencyDaily(groupStatsFormDTO); |
|||
} catch (Exception e) { |
|||
log.error("抽取【小组】数据失败", e); |
|||
} |
|||
} |
|||
|
|||
private void extractGroupDataMonthly(StatsFormDTO formDTO) { |
|||
try { |
|||
GroupStatsFormDTO groupStatsFormDTO = new GroupStatsFormDTO(); |
|||
groupStatsFormDTO.setDate(formDTO.getDate()); |
|||
groupStatsFormDTO.setCustomerId(formDTO.getCustomerId()); |
|||
|
|||
statsGroupService.groupAgencyMonthly(groupStatsFormDTO); |
|||
} catch (Exception e) { |
|||
log.error("抽取【小组】数据失败", e); |
|||
} |
|||
} |
|||
|
|||
private void extractArticleDataMonthlyAndQuarterly(StatsFormDTO formDTO) { |
|||
try { |
|||
statsPublicityService.tagUsedMonthlyStatsjob(formDTO); |
|||
statsPublicityService.tagUsedQuarterlyStatsjob(formDTO); |
|||
statsPublicityService.tagViewedMonthlyStatsjob(formDTO); |
|||
statsPublicityService.tagViewedQuarterlyStatsjob(formDTO); |
|||
} catch (Exception e) { |
|||
log.error("抽取【文章】数据失败", e); |
|||
} |
|||
} |
|||
} |
@ -1,15 +1,16 @@ |
|||
package com.epmet.service; |
|||
|
|||
import com.epmet.commons.tools.utils.Result; |
|||
import com.epmet.dto.StatsFormDTO; |
|||
|
|||
public interface StatsTopicService { |
|||
|
|||
/** |
|||
* @Description 调用统计服务执行统计 - 话题 |
|||
* @param |
|||
* @return |
|||
* @Description 调用统计服务执行统计 - 话题 |
|||
* @author wangc |
|||
* @date 2020.06.29 09:40 |
|||
**/ |
|||
Result execTopicStatistical(String date); |
|||
Result execTopicStatistical(StatsFormDTO formDTO); |
|||
} |
|||
|
@ -1,15 +1,16 @@ |
|||
package com.epmet.service; |
|||
|
|||
import com.epmet.commons.tools.utils.Result; |
|||
import com.epmet.dto.StatsFormDTO; |
|||
|
|||
public interface StatsUserService { |
|||
|
|||
/** |
|||
* @Description 调用统计服务-用户 |
|||
* @param |
|||
* @return |
|||
* @Description 调用统计服务-用户 |
|||
* @author wangc |
|||
* @date 2020.06.29 09:39 |
|||
**/ |
|||
Result execUserStatistical(String date); |
|||
Result execUserStatistical(StatsFormDTO formDTO); |
|||
} |
|||
|
Loading…
Reference in new issue