|
@ -0,0 +1,116 @@
|
|
|
|
package com.yihu.wlyy.statistics.job.business;
|
|
|
|
|
|
|
|
import com.yihu.wlyy.statistics.dao.QuartzJobLogDao;
|
|
|
|
import com.yihu.wlyy.statistics.etl.dataFilter.SignDataFilter;
|
|
|
|
import com.yihu.wlyy.statistics.etl.extract.DBExtract;
|
|
|
|
import com.yihu.wlyy.statistics.etl.model.CacheModel;
|
|
|
|
import com.yihu.wlyy.statistics.etl.model.ETLModel;
|
|
|
|
import com.yihu.wlyy.statistics.etl.model.FilterModel;
|
|
|
|
import com.yihu.wlyy.statistics.etl.mycache.CachePool;
|
|
|
|
import com.yihu.wlyy.statistics.etl.role.Level1Role;
|
|
|
|
import com.yihu.wlyy.statistics.etl.role.Level2Role;
|
|
|
|
import com.yihu.wlyy.statistics.etl.storage.DBStorage;
|
|
|
|
import com.yihu.wlyy.statistics.model.job.QuartzJobLog;
|
|
|
|
import com.yihu.wlyy.statistics.model.signfamily.SignFamily;
|
|
|
|
import com.yihu.wlyy.statistics.util.JsonUtil;
|
|
|
|
import com.yihu.wlyy.statistics.vo.WlyyJobConfigVO;
|
|
|
|
import com.yihu.wlyy.statistics.vo.WlyyQuotaVO;
|
|
|
|
import org.quartz.*;
|
|
|
|
import org.quartz.Calendar;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.context.annotation.Scope;
|
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
|
|
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Created by Administrator on 2016.11.01.
|
|
|
|
* 年龄和疾病
|
|
|
|
*/
|
|
|
|
@Component
|
|
|
|
@Scope("prototype")
|
|
|
|
@DisallowConcurrentExecution
|
|
|
|
public class AgeAndDiseaseJob implements Job {
|
|
|
|
private WlyyQuotaVO wlyyQuota;//指标对象
|
|
|
|
private WlyyJobConfigVO wlyyJobConfig;//配置对象
|
|
|
|
@Autowired
|
|
|
|
private QuartzJobLogDao quartzJobLogDao;//执行日志Dao
|
|
|
|
@Autowired
|
|
|
|
private JdbcTemplate jdbcTemplate;
|
|
|
|
@Autowired
|
|
|
|
private Level1Role levelRole;
|
|
|
|
@Autowired
|
|
|
|
private Level2Role level2Role;
|
|
|
|
@Autowired
|
|
|
|
private DBStorage dbStorage;
|
|
|
|
@Autowired
|
|
|
|
private SignDataFilter signDataFilter;
|
|
|
|
@Autowired
|
|
|
|
private CachePool cachePool;
|
|
|
|
|
|
|
|
String yesterday;
|
|
|
|
String daybefore;
|
|
|
|
|
|
|
|
public void execute(JobExecutionContext context)
|
|
|
|
throws JobExecutionException {
|
|
|
|
try{
|
|
|
|
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
|
|
|
|
//初始化参数
|
|
|
|
JobDataMap map = context.getJobDetail().getJobDataMap();
|
|
|
|
wlyyQuota = (WlyyQuotaVO) map.get("quota");
|
|
|
|
wlyyJobConfig = (WlyyJobConfigVO) map.get("jobConfig");
|
|
|
|
daybefore = StringUtils.isEmpty(map.get("daybefore")) ? SignJob.getDayString(-2) : map.get("daybefore").toString();
|
|
|
|
yesterday = StringUtils.isEmpty(map.get("yesterday")) ? SignJob.getDayString(-1) : map.get("yesterday").toString();
|
|
|
|
//计算指标
|
|
|
|
computequota();
|
|
|
|
}catch (Exception e){
|
|
|
|
e.printStackTrace();
|
|
|
|
//如果出錯立即重新執行
|
|
|
|
JobExecutionException e2 =new JobExecutionException(e);
|
|
|
|
e2.setRefireImmediately(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 计算指标
|
|
|
|
*/
|
|
|
|
private void computequota()throws Exception {
|
|
|
|
jdbcTemplate.execute("delete from wlyy_quota_result where quota_date='" + yesterday + "' and quato_code='" + 17 + "'");
|
|
|
|
try{
|
|
|
|
//新建任务日志对象
|
|
|
|
QuartzJobLog quartzJobLog = new QuartzJobLog();
|
|
|
|
quartzJobLog.setJobStartTime(new Date());
|
|
|
|
quartzJobLog.setJobId(wlyyJobConfig.getId());
|
|
|
|
quartzJobLog.setJobName(wlyyJobConfig.getJobName());
|
|
|
|
//从缓存取数据
|
|
|
|
CacheModel cacheModel=cachePool.getSignFamilysWithExpenseStatus1ByDate(yesterday);
|
|
|
|
//清洗數據
|
|
|
|
FilterModel etlModels= signDataFilter.filter(cacheModel.getSignFamilies(),SignDataFilter.level2AgeDisease,cacheModel.getSql(),yesterday);
|
|
|
|
//统计数据 1级维度
|
|
|
|
List<Map<String, List<ETLModel>>> returnDatas= levelRole.elt(etlModels.getEtlModelList());
|
|
|
|
//统计数据 二级维度
|
|
|
|
List<Map<String, Map<String, List<ETLModel>>>> level2Data= level2Role.elt(returnDatas);;
|
|
|
|
//保存数据
|
|
|
|
dbStorage.saveByLevel2(level2Data,yesterday,wlyyQuota,3,7);
|
|
|
|
//保存日志
|
|
|
|
quartzJobLog.setJobEndTime(new Date());
|
|
|
|
quartzJobLog.setJobContent(JsonUtil.objToStr(etlModels.getLogModel()));
|
|
|
|
quartzJobLog.setJobType(etlModels.getError()?"1":"0");
|
|
|
|
quartzJobLogDao.save(quartzJobLog);
|
|
|
|
}catch (Exception e){
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getYesterday() {
|
|
|
|
java.util.Calendar cal = java.util.Calendar.getInstance();
|
|
|
|
cal.add(java.util.Calendar.DATE, -1);
|
|
|
|
String yesterday = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
|
|
|
|
return yesterday;
|
|
|
|
}
|
|
|
|
}
|