|  | @ -16,6 +16,8 @@ import com.yihu.wlyy.statistics.vo.WlyyJobConfigVO;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.statistics.vo.WlyyQuotaVO;
 | 
	
		
			
				|  |  | import org.json.JSONObject;
 | 
	
		
			
				|  |  | import org.quartz.*;
 | 
	
		
			
				|  |  | import org.slf4j.Logger;
 | 
	
		
			
				|  |  | import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | import org.springframework.context.annotation.Scope;
 | 
	
		
			
				|  |  | import org.springframework.jdbc.core.JdbcTemplate;
 | 
	
	
		
			
				|  | @ -35,6 +37,8 @@ import java.util.Calendar;
 | 
	
		
			
				|  |  | @Scope("prototype")
 | 
	
		
			
				|  |  | @DisallowConcurrentExecution//防止到了执行时间点前一任务还在执行中,但是这时有空闲的线程,那么马上又会执行,这样一来就会存在同一job被并行执行
 | 
	
		
			
				|  |  | public class SignJob implements Job {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private Logger logger = LoggerFactory.getLogger(SignJob.class);
 | 
	
		
			
				|  |  |     private WlyyQuotaVO wlyyQuota;//指标对象
 | 
	
		
			
				|  |  |     private WlyyJobConfigVO wlyyJobConfig;//配置对象
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
	
		
			
				|  | @ -58,7 +62,7 @@ public class SignJob implements Job {
 | 
	
		
			
				|  |  |     @Override
 | 
	
		
			
				|  |  |     public void execute(JobExecutionContext context)
 | 
	
		
			
				|  |  |             throws JobExecutionException {
 | 
	
		
			
				|  |  |         try{
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
 | 
	
		
			
				|  |  |             //初始化参数
 | 
	
		
			
				|  |  |             JobDataMap map = context.getJobDetail().getJobDataMap();
 | 
	
	
		
			
				|  | @ -95,9 +99,10 @@ public class SignJob implements Job {
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }catch (Exception e){
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             e.printStackTrace();
 | 
	
		
			
				|  |  |             //如果出錯立即重新執行
 | 
	
		
			
				|  |  |             JobExecutionException e2 =new JobExecutionException(e);
 | 
	
		
			
				|  |  |             JobExecutionException e2 = new JobExecutionException(e);
 | 
	
		
			
				|  |  |             e2.setRefireImmediately(true);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
	
		
			
				|  | @ -109,38 +114,40 @@ public class SignJob implements Job {
 | 
	
		
			
				|  |  |     private void computequotaByPatientSex() {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         jdbcTemplate.execute("delete from wlyy_quota_result where quota_date='" + yesterday + "' and quato_code='" + 6 + "'");
 | 
	
		
			
				|  |  |         try{
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             //新建任务日志对象
 | 
	
		
			
				|  |  |             QuartzJobLog quartzJobLog = new QuartzJobLog();
 | 
	
		
			
				|  |  |             quartzJobLog.setJobStartTime(new Date());
 | 
	
		
			
				|  |  |             quartzJobLog.setJobId(wlyyJobConfig.getId());
 | 
	
		
			
				|  |  |             quartzJobLog.setJobName(wlyyJobConfig.getJobName());
 | 
	
		
			
				|  |  |             //从缓存取数据
 | 
	
		
			
				|  |  |             CacheModel cacheModel=cachePool.getSignFamilysWithExpenseStatus1ByDate(yesterday);
 | 
	
		
			
				|  |  |             CacheModel cacheModel = cachePool.getSignFamilysWithExpenseStatus1ByDate(yesterday);
 | 
	
		
			
				|  |  |             //清洗數據
 | 
	
		
			
				|  |  |             FilterModel etlModels= signDataFilter.filter(cacheModel.getSignFamilies(),SignDataFilter.level2Sex,cacheModel.getSql(),yesterday);
 | 
	
		
			
				|  |  |             FilterModel etlModels = signDataFilter.filter(cacheModel.getSignFamilies(), SignDataFilter.level2Sex, cacheModel.getSql(), yesterday);
 | 
	
		
			
				|  |  |             //统计数据 1级维度
 | 
	
		
			
				|  |  |             List<Map<String, List<ETLModel>>>  returnDatas= levelRole.elt(etlModels.getEtlModelList());
 | 
	
		
			
				|  |  |             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,1);
 | 
	
		
			
				|  |  |             List<Map<String, Map<String, List<ETLModel>>>> level2Data = level2Role.elt(returnDatas);
 | 
	
		
			
				|  |  |             ;
 | 
	
		
			
				|  |  |             //保存数据
 | 
	
		
			
				|  |  |             dbStorage.saveByLevel2(level2Data, yesterday, wlyyQuota, 3, 1);
 | 
	
		
			
				|  |  |             //保存日志
 | 
	
		
			
				|  |  |             quartzJobLog.setJobEndTime(new Date());
 | 
	
		
			
				|  |  |             quartzJobLog.setJobContent(JsonUtil.objToStr(etlModels.getLogModel()));
 | 
	
		
			
				|  |  |             quartzJobLog.setJobType(etlModels.getError()?"1":"0");
 | 
	
		
			
				|  |  |             quartzJobLog.setJobType(etlModels.getError() ? "1" : "0");
 | 
	
		
			
				|  |  |             quartzJobLogDao.save(quartzJobLog);
 | 
	
		
			
				|  |  |         }catch (Exception e){
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             e.printStackTrace();
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 机构维度患者分组维度计算指标
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     @Transactional
 | 
	
		
			
				|  |  |     private void computequotaByPatientGroup() {
 | 
	
		
			
				|  |  |         try{
 | 
	
		
			
				|  |  |             jdbcTemplate.execute("delete from wlyy_quota_result where quota_date='"+yesterday+"' and quato_code='"+7+"'");
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             jdbcTemplate.execute("delete from wlyy_quota_result where quota_date='" + yesterday + "' and quato_code='" + 7 + "'");
 | 
	
		
			
				|  |  |             //新建任务日志对象
 | 
	
		
			
				|  |  |             QuartzJobLog quartzJobLog = new QuartzJobLog();
 | 
	
		
			
				|  |  |             quartzJobLog.setJobStartTime(new Date());
 | 
	
	
		
			
				|  | @ -152,23 +159,23 @@ public class SignJob implements Job {
 | 
	
		
			
				|  |  |             //抽取數據
 | 
	
		
			
				|  |  |             //List<SignFamily> signFamilies= dbExtract.extract(SignFamily.class,sql);
 | 
	
		
			
				|  |  |             //从缓存取数据
 | 
	
		
			
				|  |  |             CacheModel cacheModel=cachePool.getSignFamilysWithExpenseStatus1ByDate(yesterday);
 | 
	
		
			
				|  |  |             CacheModel cacheModel = cachePool.getSignFamilysWithExpenseStatus1ByDate(yesterday);
 | 
	
		
			
				|  |  |             //清洗數據
 | 
	
		
			
				|  |  |             FilterModel etlModels= signDataFilter.filter(cacheModel.getSignFamilies(),SignDataFilter.level2Group,cacheModel.getSql(),yesterday);
 | 
	
		
			
				|  |  |             FilterModel etlModels = signDataFilter.filter(cacheModel.getSignFamilies(), SignDataFilter.level2Group, cacheModel.getSql(), yesterday);
 | 
	
		
			
				|  |  |             //统计数据 1级维度
 | 
	
		
			
				|  |  |             List<Map<String, List<ETLModel>>>  returnDatas= levelRole.elt(etlModels.getEtlModelList());
 | 
	
		
			
				|  |  |             List<Map<String, List<ETLModel>>> returnDatas = levelRole.elt(etlModels.getEtlModelList());
 | 
	
		
			
				|  |  |             //统计数据 二级维度
 | 
	
		
			
				|  |  |             List<Map<String, Map<String, List<ETLModel>>>>  level2Data= level2Role.elt(returnDatas);
 | 
	
		
			
				|  |  |             List<Map<String, Map<String, List<ETLModel>>>> level2Data = level2Role.elt(returnDatas);
 | 
	
		
			
				|  |  |             //保存数据 1 表示:从1开始循环 6表示:循环6次 3表示 2级维度是 3
 | 
	
		
			
				|  |  |              dbStorage.saveByLevel2(level2Data,yesterday,wlyyQuota,7,3,-1);
 | 
	
		
			
				|  |  |             dbStorage.saveByLevel2(level2Data, yesterday, wlyyQuota, 7, 3, -1);
 | 
	
		
			
				|  |  |             //dbStorage.saveByLevel2(level2Data,yesterday,wlyyQuota,6,3,-1);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             //保存日志
 | 
	
		
			
				|  |  |             quartzJobLog.setJobEndTime(new Date());
 | 
	
		
			
				|  |  |             quartzJobLog.setJobContent(JsonUtil.objToStr(etlModels.getLogModel()));
 | 
	
		
			
				|  |  |             quartzJobLog.setJobType(etlModels.getError()?"1":"0");
 | 
	
		
			
				|  |  |             quartzJobLog.setJobType(etlModels.getError() ? "1" : "0");
 | 
	
		
			
				|  |  |             quartzJobLogDao.save(quartzJobLog);
 | 
	
		
			
				|  |  |         }catch (Exception e){
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             e.printStackTrace();
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
	
		
			
				|  | @ -187,19 +194,21 @@ public class SignJob implements Job {
 | 
	
		
			
				|  |  |             quartzJobLog.setJobId(wlyyJobConfig.getId());
 | 
	
		
			
				|  |  |             quartzJobLog.setJobName(wlyyJobConfig.getJobName());
 | 
	
		
			
				|  |  |             //从缓存取数据
 | 
	
		
			
				|  |  |             CacheModel cacheModel=cachePool.getSignFamilysWithExpenseStatus1ByDate(yesterday);
 | 
	
		
			
				|  |  |             CacheModel cacheModel = cachePool.getSignFamilysWithExpenseStatus1ByDate(yesterday);
 | 
	
		
			
				|  |  |             //清洗數據
 | 
	
		
			
				|  |  |             FilterModel etlModels= signDataFilter.filter(cacheModel.getSignFamilies(),SignDataFilter.level2Age,cacheModel.getSql(),yesterday);
 | 
	
		
			
				|  |  |             FilterModel etlModels = signDataFilter.filter(cacheModel.getSignFamilies(), SignDataFilter.level2Age, cacheModel.getSql(), yesterday);
 | 
	
		
			
				|  |  |             //统计数据 1级维度
 | 
	
		
			
				|  |  |             List<Map<String, List<ETLModel>>>  returnDatas= levelRole.elt(etlModels.getEtlModelList());
 | 
	
		
			
				|  |  |             List<Map<String, List<ETLModel>>> returnDatas = levelRole.elt(etlModels.getEtlModelList());
 | 
	
		
			
				|  |  |             //统计数据 二级维度
 | 
	
		
			
				|  |  |             List<Map<String, Map<String, List<ETLModel>>>>  level2Data= level2Role.elt(returnDatas);;
 | 
	
		
			
				|  |  |             List<Map<String, Map<String, List<ETLModel>>>> level2Data = level2Role.elt(returnDatas);
 | 
	
		
			
				|  |  |             ;
 | 
	
		
			
				|  |  |             //保存数据
 | 
	
		
			
				|  |  |             dbStorage.saveByLevel2(level2Data,yesterday,wlyyQuota,6,2);
 | 
	
		
			
				|  |  |             dbStorage.saveByLevel2(level2Data, yesterday, wlyyQuota, 6, 2);
 | 
	
		
			
				|  |  |             //保存日志
 | 
	
		
			
				|  |  |             quartzJobLog.setJobEndTime(new Date());;
 | 
	
		
			
				|  |  |             quartzJobLog.setJobEndTime(new Date());
 | 
	
		
			
				|  |  |             ;
 | 
	
		
			
				|  |  |             quartzJobLog.setJobContent(JsonUtil.objToStr(etlModels.getLogModel()));
 | 
	
		
			
				|  |  |             quartzJobLog.setJobType(etlModels.getError()?"1":"0");
 | 
	
		
			
				|  |  |             quartzJobLog.setJobType(etlModels.getError() ? "1" : "0");
 | 
	
		
			
				|  |  |             quartzJobLogDao.save(quartzJobLog);
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             e.printStackTrace();
 | 
	
	
		
			
				|  | @ -211,7 +220,7 @@ public class SignJob implements Job {
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     @Transactional
 | 
	
		
			
				|  |  |     private void computequota() {
 | 
	
		
			
				|  |  |         try{
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             jdbcTemplate.execute("delete from wlyy_quota_result where quota_date='" + yesterday + "' and quato_code='" + 1 + "'");
 | 
	
		
			
				|  |  |             //新建任务日志对象
 | 
	
		
			
				|  |  |             QuartzJobLog quartzJobLog = new QuartzJobLog();
 | 
	
	
		
			
				|  | @ -219,26 +228,29 @@ public class SignJob implements Job {
 | 
	
		
			
				|  |  |             quartzJobLog.setJobId(wlyyJobConfig.getId());
 | 
	
		
			
				|  |  |             quartzJobLog.setJobName(wlyyJobConfig.getJobName());
 | 
	
		
			
				|  |  |             //找出今天的签约信息 yesterday,now
 | 
	
		
			
				|  |  |            // String sql=" select code,idcard,hospital,admin_team_code from wlyy_sign_family a where  a.type =2 and  a.expenses_time< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
 | 
	
		
			
				|  |  |             // String sql=" select code,idcard,hospital,admin_team_code from wlyy_sign_family a where  a.type =2 and  a.expenses_time< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
 | 
	
		
			
				|  |  |             //抽取數據
 | 
	
		
			
				|  |  |            // List<SignFamily> signFamilies= dbExtract.extract(SignFamily.class,sql);
 | 
	
		
			
				|  |  |             // List<SignFamily> signFamilies= dbExtract.extract(SignFamily.class,sql);
 | 
	
		
			
				|  |  |             //从缓存取数据
 | 
	
		
			
				|  |  |             CacheModel cacheModel=cachePool.getSignFamilysWithExpenseStatus1ByDate(yesterday);
 | 
	
		
			
				|  |  |             CacheModel cacheModel = cachePool.getSignFamilysWithExpenseStatus1ByDate(yesterday);
 | 
	
		
			
				|  |  |             logger.info("size:" + cacheModel.getSignFamilies().size());
 | 
	
		
			
				|  |  |             logger.info("sql:" + cacheModel.getSql());
 | 
	
		
			
				|  |  |             //清洗數據
 | 
	
		
			
				|  |  |             FilterModel etlModels= signDataFilter.filter(cacheModel.getSignFamilies(),cacheModel.getSql(),yesterday);
 | 
	
		
			
				|  |  |             FilterModel etlModels = signDataFilter.filter(cacheModel.getSignFamilies(), cacheModel.getSql(), yesterday);
 | 
	
		
			
				|  |  |             //统计数据
 | 
	
		
			
				|  |  |             List<Map<String, List<ETLModel>>>  returnDatas= levelRole.elt(etlModels.getEtlModelList());
 | 
	
		
			
				|  |  |             List<Map<String, List<ETLModel>>> returnDatas = levelRole.elt(etlModels.getEtlModelList());
 | 
	
		
			
				|  |  |             //保存数据
 | 
	
		
			
				|  |  |             dbStorage.saveByLevel1(returnDatas,yesterday,wlyyQuota);
 | 
	
		
			
				|  |  |             dbStorage.saveByLevel1(returnDatas, yesterday, wlyyQuota);
 | 
	
		
			
				|  |  |             //保存日志
 | 
	
		
			
				|  |  |             quartzJobLog.setJobEndTime(new Date());
 | 
	
		
			
				|  |  |             quartzJobLog.setJobContent(JsonUtil.objToStr(etlModels.getLogModel()));
 | 
	
		
			
				|  |  |             quartzJobLog.setJobType(etlModels.getError()?"1":"0");
 | 
	
		
			
				|  |  |             quartzJobLog.setJobType(etlModels.getError() ? "1" : "0");
 | 
	
		
			
				|  |  |             quartzJobLogDao.save(quartzJobLog);
 | 
	
		
			
				|  |  |         }catch (Exception e){
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             e.printStackTrace();
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /*
 | 
	
		
			
				|  |  |     得到昨天的日期字符串  yyyy-MM-dd
 | 
	
		
			
				|  |  |      */
 |