7 changed files with 166 additions and 26 deletions
@ -0,0 +1,18 @@ |
|||||
|
package com.epmet.service.evaluationindex.extract; |
||||
|
|
||||
|
import com.epmet.dto.extract.form.ExtractFormDTO; |
||||
|
|
||||
|
/** |
||||
|
* @author zhaoqifeng |
||||
|
* @dscription |
||||
|
* @date 2020/9/15 14:00 |
||||
|
*/ |
||||
|
public interface FactOriginExtractService { |
||||
|
|
||||
|
/** |
||||
|
* desc:抽取所有业务数据到统计库 |
||||
|
* |
||||
|
* @param extractFormDTO |
||||
|
*/ |
||||
|
void extractAll(ExtractFormDTO extractFormDTO); |
||||
|
} |
@ -0,0 +1,100 @@ |
|||||
|
package com.epmet.service.evaluationindex.extract.impl; |
||||
|
|
||||
|
import com.alibaba.fastjson.JSON; |
||||
|
import com.epmet.commons.tools.constant.NumConstant; |
||||
|
import com.epmet.commons.tools.utils.DateUtils; |
||||
|
import com.epmet.dto.extract.form.ExtractFormDTO; |
||||
|
import com.epmet.service.evaluationindex.extract.FactOriginExtractService; |
||||
|
import com.epmet.service.evaluationindex.extract.FactOriginTopicMainDailyService; |
||||
|
import com.epmet.service.evaluationindex.extract.IssueExtractService; |
||||
|
import com.epmet.service.evaluationindex.extract.ProjectExtractService; |
||||
|
import com.epmet.service.stats.DimCustomerService; |
||||
|
import com.epmet.util.DimIdGenerator; |
||||
|
import com.google.common.util.concurrent.ThreadFactoryBuilder; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.apache.commons.lang3.StringUtils; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.springframework.util.CollectionUtils; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.Date; |
||||
|
import java.util.List; |
||||
|
import java.util.concurrent.*; |
||||
|
|
||||
|
/** |
||||
|
* desc:抽取业务数据 到 统计库 汇聚类 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@Service |
||||
|
public class FactOriginExtractServiceImpl implements FactOriginExtractService { |
||||
|
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() |
||||
|
.setNameFormat("factOriginExtract-pool-%d").build(); |
||||
|
ExecutorService threadPool = new ThreadPoolExecutor(4, 8, |
||||
|
10L, TimeUnit.MINUTES, |
||||
|
new LinkedBlockingQueue<>(100), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); |
||||
|
|
||||
|
@Autowired |
||||
|
private IssueExtractService issueExtractService; |
||||
|
@Autowired |
||||
|
private FactOriginTopicMainDailyService factOriginTopicMainDailyService; |
||||
|
@Autowired |
||||
|
private ProjectExtractService projectExtractService; |
||||
|
@Autowired |
||||
|
private DimCustomerService dimCustomerService; |
||||
|
|
||||
|
|
||||
|
@Override |
||||
|
public void extractAll(ExtractFormDTO extractFormDTO) { |
||||
|
String dateId = extractFormDTO.getDateId(); |
||||
|
String customerId = extractFormDTO.getCustomerId(); |
||||
|
if (StringUtils.isBlank(dateId)) { |
||||
|
dateId = DimIdGenerator.getDateDimId(DateUtils.addDateDays(new Date(), -1)); |
||||
|
} |
||||
|
List<String> customerIds = new ArrayList<>(); |
||||
|
if (StringUtils.isNotBlank(customerId)) { |
||||
|
customerIds.add(customerId); |
||||
|
} |
||||
|
int pageNo = NumConstant.ONE; |
||||
|
int pageSize = NumConstant.ONE_HUNDRED; |
||||
|
customerIds = dimCustomerService.selectCustomerIdPage(pageNo, pageSize); |
||||
|
if (CollectionUtils.isEmpty(customerIds)) { |
||||
|
log.error("extractAll 获取客户Id为空"); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
String finalDateId = dateId; |
||||
|
customerIds.forEach(cId -> { |
||||
|
ExtractFormDTO param = new ExtractFormDTO(); |
||||
|
param.setCustomerId(cId); |
||||
|
param.setDateId(finalDateId); |
||||
|
submitJob(param); |
||||
|
}); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
private void submitJob(ExtractFormDTO param) { |
||||
|
threadPool.submit(() -> { |
||||
|
try { |
||||
|
factOriginTopicMainDailyService.topicCleaning(param); |
||||
|
} catch (Exception e) { |
||||
|
log.error("抽取【话题数据】发生异常,参数:" + JSON.toJSONString(param), e); |
||||
|
} |
||||
|
}); |
||||
|
threadPool.submit(() -> { |
||||
|
try { |
||||
|
issueExtractService.issueExtractMain(param); |
||||
|
issueExtractService.issueExtractLog(param); |
||||
|
} catch (Exception e) { |
||||
|
log.error("抽取【议题数据】发生异常,参数:" + JSON.toJSONString(param), e); |
||||
|
} |
||||
|
}); |
||||
|
threadPool.submit(() -> { |
||||
|
try { |
||||
|
projectExtractService.saveOriginProjectDaily(param); |
||||
|
} catch (Exception e) { |
||||
|
log.error("抽取【项目数据】发生异常,参数:" + JSON.toJSONString(param), e); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue