14 changed files with 332 additions and 171 deletions
@ -1,30 +0,0 @@ |
|||||
package com.epmet.feign; |
|
||||
|
|
||||
import com.epmet.commons.tools.constant.ServiceConstant; |
|
||||
import com.epmet.commons.tools.utils.Result; |
|
||||
import com.epmet.dto.extract.form.ExtractFormDTO; |
|
||||
import com.epmet.feign.impl.FactExtractOpenFeignClientFallBack; |
|
||||
import org.springframework.cloud.openfeign.FeignClient; |
|
||||
import org.springframework.web.bind.annotation.PostMapping; |
|
||||
import org.springframework.web.bind.annotation.RequestBody; |
|
||||
|
|
||||
/** |
|
||||
* desc: 数据抽取 对外feign client |
|
||||
* |
|
||||
* @return: |
|
||||
* @date: 2020/6/22 17:39 |
|
||||
* @author: jianjun liu |
|
||||
*/ |
|
||||
@FeignClient(name = ServiceConstant.DATA_STATISTICAL_SERVER, fallback = FactExtractOpenFeignClientFallBack.class) |
|
||||
public interface FactExtractOpenFeignClient { |
|
||||
|
|
||||
/** |
|
||||
* desc: 【日】抽取业务数据到统计库 小组 话题 议题 项目 |
|
||||
* |
|
||||
* @date: 2020/6/22 9:09 |
|
||||
* @author: jianjun liu |
|
||||
*/ |
|
||||
@PostMapping(value = "data/stats/factorigin/extractall") |
|
||||
Result extractall(@RequestBody(required = false) ExtractFormDTO formDTO); |
|
||||
|
|
||||
} |
|
@ -1,135 +0,0 @@ |
|||||
package com.epmet.controller; |
|
||||
|
|
||||
import com.epmet.commons.tools.utils.DateUtils; |
|
||||
import com.epmet.commons.tools.utils.Result; |
|
||||
import com.epmet.commons.tools.validator.ValidatorUtils; |
|
||||
import com.epmet.dto.extract.form.ExtractFormDTO; |
|
||||
import com.epmet.service.evaluationindex.extract.*; |
|
||||
import com.epmet.util.DimIdGenerator; |
|
||||
import org.apache.commons.lang3.StringUtils; |
|
||||
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.Date; |
|
||||
|
|
||||
|
|
||||
/** |
|
||||
* 原始数据清洗 |
|
||||
* |
|
||||
* @author yinzuomei@elink-cn.com |
|
||||
* @date 2020/9/15 11:06 |
|
||||
*/ |
|
||||
@RestController |
|
||||
@RequestMapping("factorigin") |
|
||||
public class FactOriginController { |
|
||||
@Autowired |
|
||||
private FactOriginExtractService factOriginExtractService; |
|
||||
@Autowired |
|
||||
private IssueExtractService issueExtractService; |
|
||||
@Autowired |
|
||||
private FactOriginTopicMainDailyService factOriginTopicMainDailyService; |
|
||||
@Autowired |
|
||||
private ProjectExtractService projectExtractService; |
|
||||
@Autowired |
|
||||
private GroupExtractService groupExtractService; |
|
||||
|
|
||||
/** |
|
||||
* desc:抽取业务数据到统计库 |
|
||||
* |
|
||||
* @param extractFormDTO 默认统计前一天 |
|
||||
* @return |
|
||||
*/ |
|
||||
@PostMapping("extractall") |
|
||||
public Result extractAll(@RequestBody ExtractFormDTO extractFormDTO) { |
|
||||
if (StringUtils.isNotBlank(extractFormDTO.getStartDate()) && StringUtils.isNotBlank(extractFormDTO.getEndDate())) { |
|
||||
Date startDate = DateUtils.stringToDate(extractFormDTO.getStartDate(), "yyyyMMdd"); |
|
||||
Date endDate = DateUtils.stringToDate(extractFormDTO.getEndDate(), "yyyyMMdd"); |
|
||||
do { |
|
||||
String dateDimId = DimIdGenerator.getDateDimId(startDate); |
|
||||
extractFormDTO.setDateId(dateDimId); |
|
||||
factOriginExtractService.extractAll(extractFormDTO); |
|
||||
startDate = DateUtils.addDateDays(DateUtils.stringToDate(extractFormDTO.getStartDate(), "yyyyMMdd"), 1); |
|
||||
} while (endDate.compareTo(startDate) >= 0); |
|
||||
} else { |
|
||||
factOriginExtractService.extractAll(extractFormDTO); |
|
||||
} |
|
||||
return new Result(); |
|
||||
} |
|
||||
|
|
||||
|
|
||||
/** |
|
||||
* @param extractFormDTO |
|
||||
* @Description 议题抽取(main) |
|
||||
* @author zxc |
|
||||
* @date 2020/9/15 2:02 下午 |
|
||||
*/ |
|
||||
@PostMapping("issueextractmain") |
|
||||
public Result issueExtractMain(@RequestBody ExtractFormDTO extractFormDTO) { |
|
||||
ValidatorUtils.validateEntity(extractFormDTO, ExtractFormDTO.ExtractForm.class); |
|
||||
issueExtractService.issueExtractMain(extractFormDTO); |
|
||||
return new Result(); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* @Description 议题抽取(log) |
|
||||
* @param extractFormDTO |
|
||||
* @author zxc |
|
||||
* @date 2020/9/16 9:41 上午 |
|
||||
*/ |
|
||||
@PostMapping("issueextractlog") |
|
||||
public Result issueExtractLog(@RequestBody ExtractFormDTO extractFormDTO){ |
|
||||
ValidatorUtils.validateEntity(extractFormDTO, ExtractFormDTO.ExtractForm.class); |
|
||||
issueExtractService.issueExtractLog(extractFormDTO); |
|
||||
return new Result(); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* @param extractFormDTO |
|
||||
* @return com.epmet.commons.tools.utils.Result |
|
||||
* @author yinzuomei |
|
||||
* @description 话题 (fact_origin_topic_main_daily 话题主表_日统计 fact_origin_topic_log_daily 话题明细_日统计) |
|
||||
* @Date 2020/9/15 13:39 |
|
||||
**/ |
|
||||
@PostMapping("topic") |
|
||||
public Result topicDataCleaning(@RequestBody ExtractFormDTO extractFormDTO) { |
|
||||
if (StringUtils.isNotBlank(extractFormDTO.getCustomerId()) && StringUtils.isNotBlank(extractFormDTO.getDateId())) { |
|
||||
factOriginTopicMainDailyService.topicCleaning(extractFormDTO); |
|
||||
} |
|
||||
return new Result(); |
|
||||
} |
|
||||
|
|
||||
@PostMapping("project") |
|
||||
public Result projectData(@RequestBody ExtractFormDTO extractFormDTO) { |
|
||||
projectExtractService.saveOriginProjectDaily(extractFormDTO); |
|
||||
return new Result(); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* @Description 项目节点历时数据清洗 |
|
||||
* @param param |
|
||||
* @return |
|
||||
* @author wangc |
|
||||
* @date 2020.09.20 16:11 |
|
||||
**/ |
|
||||
@PostMapping("projectorgperiodcleanning") |
|
||||
public Result projectOrgPeriodCleaning(@RequestBody ExtractFormDTO param){ |
|
||||
projectExtractService.extractProjectPeriodData(param); |
|
||||
return new Result(); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* @Description 小组数据清洗 |
|
||||
* @param |
|
||||
* @return |
|
||||
* @author wangc |
|
||||
* @date 2020.09.20 16:11 |
|
||||
**/ |
|
||||
@PostMapping("groupdatacleaning") |
|
||||
public Result groupDataCleaning(@RequestBody ExtractFormDTO param){ |
|
||||
groupExtractService.extractGroupData(param); |
|
||||
return new Result(); |
|
||||
} |
|
||||
} |
|
@ -0,0 +1,37 @@ |
|||||
|
package com.epmet.controller; |
||||
|
|
||||
|
import com.epmet.commons.tools.utils.Result; |
||||
|
import com.epmet.dto.extract.form.ExtractIndexFormDTO; |
||||
|
import com.epmet.service.evaluationindex.extract.dataToIndex.IndexOriginExtractService; |
||||
|
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; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 原始数据清洗 |
||||
|
* |
||||
|
* @author yinzuomei@elink-cn.com |
||||
|
* @date 2020/9/15 11:06 |
||||
|
*/ |
||||
|
@RestController |
||||
|
@RequestMapping("indexorigin") |
||||
|
public class IndexOriginExtractController { |
||||
|
@Autowired |
||||
|
private IndexOriginExtractService indexOriginExtractService; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* desc:抽取统计数据到指标库 |
||||
|
* |
||||
|
* @param extractFormDTO 默认统计上一个月 |
||||
|
* @return |
||||
|
*/ |
||||
|
@PostMapping("extractall") |
||||
|
public Result extractAll(@RequestBody ExtractIndexFormDTO extractFormDTO) { |
||||
|
indexOriginExtractService.indexOriginExtractAll(extractFormDTO); |
||||
|
return new Result(); |
||||
|
} |
||||
|
} |
@ -0,0 +1,18 @@ |
|||||
|
package com.epmet.service.evaluationindex.extract.dataToIndex; |
||||
|
|
||||
|
import com.epmet.dto.extract.form.ExtractIndexFormDTO; |
||||
|
|
||||
|
/** |
||||
|
* desc:将统计库对象数据抽取到指标库 服务接口 |
||||
|
* |
||||
|
* @author yinzuomei@elink-cn.com |
||||
|
* @date 2020/9/17 14:05 |
||||
|
*/ |
||||
|
public interface IndexOriginExtractService { |
||||
|
/** |
||||
|
* desc:从统计库对象抽取指标数据 |
||||
|
* |
||||
|
* @param formDTO |
||||
|
*/ |
||||
|
void indexOriginExtractAll(ExtractIndexFormDTO formDTO); |
||||
|
} |
@ -0,0 +1,105 @@ |
|||||
|
package com.epmet.service.evaluationindex.extract.dataToIndex.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.ExtractIndexFormDTO; |
||||
|
import com.epmet.service.evaluationindex.extract.CalCpcIndexService; |
||||
|
import com.epmet.service.evaluationindex.extract.CalGridIndexService; |
||||
|
import com.epmet.service.evaluationindex.extract.dataToIndex.IndexOriginExtractService; |
||||
|
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 IndexOriginExtractServiceImpl implements IndexOriginExtractService { |
||||
|
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() |
||||
|
.setNameFormat("indexOriginExtract-pool-%d").build(); |
||||
|
ExecutorService threadPool = new ThreadPoolExecutor(2, 8, |
||||
|
10L, TimeUnit.MINUTES, |
||||
|
new LinkedBlockingQueue<>(500), namedThreadFactory, new ThreadPoolExecutor.CallerRunsPolicy()); |
||||
|
|
||||
|
@Autowired |
||||
|
private CalCpcIndexService calCpcIndexService; |
||||
|
@Autowired |
||||
|
private CalGridIndexService calGridIndexService; |
||||
|
@Autowired |
||||
|
private DimCustomerService dimCustomerService; |
||||
|
|
||||
|
/** |
||||
|
* desc:从统计库对象抽取指标数据 |
||||
|
* |
||||
|
* @param formDTO |
||||
|
*/ |
||||
|
@Override |
||||
|
public void indexOriginExtractAll(ExtractIndexFormDTO formDTO) { |
||||
|
String monthId = formDTO.getMonthId(); |
||||
|
String customerId = formDTO.getCustomerId(); |
||||
|
if (StringUtils.isBlank(monthId)) { |
||||
|
monthId = DimIdGenerator.getDateDimId(DateUtils.addDateMonths(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("indexOriginExtractAll 获取客户Id为空"); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
String finalMonthId = monthId; |
||||
|
customerIds.forEach(cId -> { |
||||
|
ExtractIndexFormDTO param = new ExtractIndexFormDTO(); |
||||
|
param.setCustomerId(cId); |
||||
|
param.setMonthId(finalMonthId); |
||||
|
submitJob(param); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
private void submitJob(ExtractIndexFormDTO param) { |
||||
|
final String customerId = param.getCustomerId(); |
||||
|
final String monthId = param.getMonthId(); |
||||
|
threadPool.submit(() -> { |
||||
|
try { |
||||
|
calCpcIndexService.calCpcPartyAbility(customerId, monthId); |
||||
|
} catch (Exception e) { |
||||
|
log.error("抽取【党员相关数据】发生异常,参数:" + JSON.toJSONString(param), e); |
||||
|
} |
||||
|
}); |
||||
|
threadPool.submit(() -> { |
||||
|
try { |
||||
|
calGridIndexService.calGridIndexGovernAbility(customerId, monthId); |
||||
|
} catch (Exception e) { |
||||
|
log.error("抽取【网格治理能力数据】发生异常,参数:" + JSON.toJSONString(param), e); |
||||
|
} |
||||
|
try { |
||||
|
calGridIndexService.calGridIndexPartyAbility(customerId, monthId); |
||||
|
} catch (Exception e) { |
||||
|
log.error("抽取【网格党建能力数据】发生异常,参数:" + JSON.toJSONString(param), e); |
||||
|
} |
||||
|
try { |
||||
|
calGridIndexService.calGridIndexServiceAbility(customerId, monthId); |
||||
|
} catch (Exception e) { |
||||
|
log.error("抽取【网格服务能力数据】发生异常,参数:" + JSON.toJSONString(param), e); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
} |
@ -0,0 +1,24 @@ |
|||||
|
package com.epmet.service; |
||||
|
|
||||
|
|
||||
|
import com.epmet.commons.tools.utils.Result; |
||||
|
import com.epmet.dto.extract.form.ExtractIndexFormDTO; |
||||
|
|
||||
|
/** |
||||
|
* desc: 统计库数据抽取到指标库服务类 |
||||
|
* |
||||
|
* @return: |
||||
|
* @date: 2020/6/22 10:24 |
||||
|
* @author: jianjun liu |
||||
|
*/ |
||||
|
public interface IndexOriginExtractTaskService { |
||||
|
|
||||
|
/** |
||||
|
* desc: 【月】抽取 数据到指标库 |
||||
|
* |
||||
|
* @param formDTO |
||||
|
* @date: 2020/6/22 9:09 |
||||
|
* @author: jianjun liu |
||||
|
*/ |
||||
|
Result indexOriginExtractJob(ExtractIndexFormDTO formDTO); |
||||
|
} |
@ -0,0 +1,30 @@ |
|||||
|
package com.epmet.service.impl; |
||||
|
|
||||
|
import com.epmet.commons.tools.utils.Result; |
||||
|
import com.epmet.dto.extract.form.ExtractIndexFormDTO; |
||||
|
import com.epmet.feign.DataStatisticalOpenFeignClient; |
||||
|
import com.epmet.service.IndexOriginExtractTaskService; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
/** |
||||
|
* desc:指标原始数据统计 任务服务类 |
||||
|
*/ |
||||
|
@Service |
||||
|
public class IndexOriginExtractTaskServiceImpl implements IndexOriginExtractTaskService { |
||||
|
@Autowired |
||||
|
private DataStatisticalOpenFeignClient dataStatisticalOpenFeignClient; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* desc: 【月】抽取 统计库对象数据到统计库 |
||||
|
* |
||||
|
* @param formDTO |
||||
|
* @date: 2020/6/22 9:09 |
||||
|
* @author: jianjun liu |
||||
|
*/ |
||||
|
@Override |
||||
|
public Result indexOriginExtractJob(ExtractIndexFormDTO formDTO) { |
||||
|
return dataStatisticalOpenFeignClient.indexOriginExtractAll(formDTO); |
||||
|
} |
||||
|
} |
@ -0,0 +1,38 @@ |
|||||
|
package com.epmet.task; |
||||
|
|
||||
|
import com.alibaba.fastjson.JSON; |
||||
|
import com.epmet.commons.tools.utils.Result; |
||||
|
import com.epmet.dto.extract.form.ExtractFormDTO; |
||||
|
import com.epmet.service.FactOriginExtractTaskService; |
||||
|
import org.apache.commons.lang3.StringUtils; |
||||
|
import org.slf4j.Logger; |
||||
|
import org.slf4j.LoggerFactory; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
/** |
||||
|
* desc:数据抽取定时任务 定时任务 |
||||
|
*/ |
||||
|
@Component("indexOriginExtractTask") |
||||
|
public class IndexOriginExtractTask implements ITask { |
||||
|
private Logger logger = LoggerFactory.getLogger(getClass()); |
||||
|
|
||||
|
@Autowired |
||||
|
private FactOriginExtractTaskService factOriginExtractTaskService; |
||||
|
|
||||
|
|
||||
|
@Override |
||||
|
public void run(String params) { |
||||
|
logger.info("indexOriginExtractTask定时任务正在执行,参数为:{}", params); |
||||
|
ExtractFormDTO formDTO = new ExtractFormDTO(); |
||||
|
if (StringUtils.isNotBlank(params)) { |
||||
|
formDTO = JSON.parseObject(params, ExtractFormDTO.class); |
||||
|
} |
||||
|
Result result = factOriginExtractTaskService.factOriginExtractJob(formDTO); |
||||
|
if (result.success()) { |
||||
|
logger.info("indexOriginExtractTask定时任务执行成功"); |
||||
|
} else { |
||||
|
logger.error("indexOriginExtractTask定时任务执行失败:" + result.getMsg()); |
||||
|
} |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue