| 
					
				 | 
			
			
				@ -1,27 +1,20 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.wlyy.statistics.job.check; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.wlyy.statistics.dao.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.wlyy.statistics.job.business.QuartzHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.wlyy.statistics.job.business.SignAgeGroupDiseaseJob; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.wlyy.statistics.job.business.SignJob; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.wlyy.statistics.model.job.QuartzJobConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.wlyy.statistics.model.job.WlyyQuota; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.wlyy.statistics.model.job.WlyyQuotaResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.wlyy.statistics.model.signfamily.SignFamily; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.wlyy.statistics.util.DateUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.wlyy.statistics.vo.WlyyJobConfigVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.wlyy.statistics.vo.WlyyQuotaVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.quartz.Job; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.quartz.JobExecutionContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.quartz.JobExecutionException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.BeanUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.context.annotation.Scope; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.data.redis.core.StringRedisTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.mail.SimpleMailMessage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.mail.javamail.JavaMailSender; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Component; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.context.support.SpringBeanAutowiringSupport; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * Created by Administrator on 2016.10.11. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -30,201 +23,42 @@ import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Component 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Scope("prototype") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class CheckSignJob implements Job{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String jobKey="CHECK_SIGN_JOB"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String cron="0 0 12 * * ?"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String cron="0 */5 * * * ?"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private WlyyQuotaResultDao wlyyQuotaResultDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private SignFamilyDao signFamilyDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private QuartzHelper quartzHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private StringRedisTemplate redisTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private QuartzJobConfigDao wlyyJobConfigDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private QuotaDao quotaDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private JavaMailSender javaMailSender; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${spring.mail.from}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private String from;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${spring.mail.to}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private String to;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Transactional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void execute(JobExecutionContext context) throws JobExecutionException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //得到需要检验的统计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<WlyyQuotaResult> wlyyQuotaResults=getNeedCheckData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //检验统计数据和签约数据是否一致  key:yes 是需要 no:是不需要 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String,List<WlyyQuotaResult>> wlyyQuotaResultsMap=checkWlyyQuotaResult(wlyyQuotaResults); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //更新不需要下一次统计的任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            upDataNoNeedCheckQuato(wlyyQuotaResultsMap.get("no")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //添加需要重新统计的指标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addNeedCheckQuato(wlyyQuotaResultsMap.get("yes")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //如果出錯立即重新執行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JobExecutionException e2 =new JobExecutionException(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e2.setRefireImmediately(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private void addNeedCheckQuato(List<WlyyQuotaResult> yes)throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(yes.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for(WlyyQuotaResult wlyyQuotaResult:yes){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                QuartzJobConfig quartzJobConfig = wlyyJobConfigDao.findById(wlyyQuotaResult.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (quartzJobConfig == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    throw new Exception("id不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                WlyyQuota wlyyQuota = quotaDao.findOne(quartzJobConfig.getQuotaId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                WlyyQuotaVO wlyyQuotaVO = new WlyyQuotaVO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BeanUtils.copyProperties(wlyyQuota, wlyyQuotaVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Map<String, Object> params = new HashMap<String, Object>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                params.put("quota", wlyyQuotaVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                params.put("jobConfig", wlyyJobConfigVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String daybefore=getNextDate(wlyyQuotaResult.getQuotaDate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String yesterday=wlyyQuotaResult.getQuotaDate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //往quartz框架添加任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                params.put("daybefore", daybefore); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                params.put("yesterday", yesterday); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String jobKey="checkSignQuartz:"+wlyyQuotaResult.getQuotaDate()+":"+wlyyQuotaResult.getQuatoCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(!quartzHelper.isExistJob(jobKey)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    quartzHelper.startAt(weeHours(new Date(),1),SignJob.class,jobKey,params); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //重新生成性别 疾病 扣费 和 年龄的统计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    startJob("6",yesterday,daybefore); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    startJob("7",yesterday,daybefore); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    startJob("8",yesterday,daybefore); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    startJob("12",yesterday,daybefore); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private void startJob(String id, String yesterday, String daybefore) throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        QuartzJobConfig quartzJobConfig = wlyyJobConfigDao.findById(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (quartzJobConfig == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("id不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        WlyyQuota wlyyQuota = quotaDao.findOne(quartzJobConfig.getQuotaId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        WlyyQuotaVO wlyyQuotaVO = new WlyyQuotaVO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BeanUtils.copyProperties(wlyyQuota, wlyyQuotaVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> params = new HashMap<String, Object>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        params.put("quota", wlyyQuotaVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        params.put("jobConfig", wlyyJobConfigVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //往quartz框架添加任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        params.put("daybefore", daybefore); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        params.put("yesterday", yesterday); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String jobKey="checkSignQuartz:"+yesterday+":"+wlyyQuota.getId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!quartzHelper.isExistJob(jobKey)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            quartzHelper.startAt(weeHours(new Date(),1),getClassById(id),jobKey,params); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private Class getClassById(String id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        switch (id){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            case "6":{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return SignJob.class; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            case "7":{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return SignJob.class; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            case "8":{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return SignJob.class; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            case "12":{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return SignAgeGroupDiseaseJob.class; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 更新不需要下一次统计的任务   更新qkdoctorJobName字段为1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param noNeedCheckQuatos 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private void upDataNoNeedCheckQuato(List<WlyyQuotaResult> noNeedCheckQuatos) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(noNeedCheckQuatos.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for(WlyyQuotaResult wlyyQuotaResult:noNeedCheckQuatos){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                wlyyQuotaResult.setQkdoctorJobName("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            wlyyQuotaResultDao.save(noNeedCheckQuatos); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 检验统计数据和签约数据是否一致  key:yes 是需要 no:是不需要 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param wlyyQuotaResults 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private Map<String,List<WlyyQuotaResult>> checkWlyyQuotaResult(List<WlyyQuotaResult> wlyyQuotaResults) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String,List<WlyyQuotaResult>> returnMap=new HashMap<String,List<WlyyQuotaResult>>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<WlyyQuotaResult> yes=new ArrayList<WlyyQuotaResult>();//需要重新统计的 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<WlyyQuotaResult> no=new ArrayList<WlyyQuotaResult>();//不需要重新统计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for(WlyyQuotaResult wlyyQuotaResult:wlyyQuotaResults){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String date=  wlyyQuotaResult.getQuotaDate();//格式  2016-10-20 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String nextDate=getNextDate(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<SignFamily> signFamilys = signFamilyDao.findByJiatingSignYesterdayExpensesStatus(date, nextDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(signFamilys.size()!=Integer.valueOf(wlyyQuotaResult.getResult())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //如果数目不相等 说明需要重新统计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                yes.add(wlyyQuotaResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //如果数目相等 说明需要不需要重新统计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                no.add(wlyyQuotaResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String timeKey=redisTemplate.opsForValue().get("quota:timeKey"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(!redisTemplate.hasKey("quota:16:4:350200:"+timeKey)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //发送邮件给管理员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sendEmail(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        returnMap.put("yes",yes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        returnMap.put("no",no); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return returnMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private String getNextDate(String date) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Date dateTime=  DateUtil.strToDateShort(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Calendar calendar = new GregorianCalendar(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        calendar.setTime(dateTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        calendar.add(calendar.DATE,-1);//把日期往后增加一天.整数往后推,负数往前移动 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Date nextDateTime=calendar.getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return DateUtil.dateToStrShort(nextDateTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private void sendEmail() throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 得到需要检验的统计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private List<WlyyQuotaResult> getNeedCheckData() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<WlyyQuotaResult> wlyyQuotaResults=wlyyQuotaResultDao.findByLevel1TypeAndQkdoctorJobName("4","1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return wlyyQuotaResults; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SimpleMailMessage message=new SimpleMailMessage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        message.setFrom(from);//发送者. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        message.setSubject("实时统计失败");//邮件主题. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        message.setText("实时统计失败,redis数据生成失败 時間:"+ DateUtil.dateToStrLong(new Date()));//邮件内容. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        message.setTo(to); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        javaMailSender.send(message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 获取当前时间所在的凌晨时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *  凌晨 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param date 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @flag 0 返回yyyy-MM-dd 00:00:00日期<br> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *       1 返回yyyy-MM-dd 23:59:59日期 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private  Date weeHours(Date date, int flag) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Calendar cal = Calendar.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        cal.setTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int hour = cal.get(Calendar.HOUR_OF_DAY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int minute = cal.get(Calendar.MINUTE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int second = cal.get(Calendar.SECOND); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //时分秒(毫秒数) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        long millisecond = hour*60*60*1000 + minute*60*1000 + second*1000; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //凌晨00:00:00 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        cal.setTimeInMillis(cal.getTimeInMillis()-millisecond); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (flag == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return cal.getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else if (flag == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //凌晨23:59:59 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            cal.setTimeInMillis(cal.getTimeInMillis()+23*60*60*1000 + 59*60*1000 + 59*1000); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return cal.getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |