forked from rongchao/epmet-cloud-rizhao
				
			
				 35 changed files with 483 additions and 258 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