| 
					
				 | 
			
			
				@@ -1,23 +1,13 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package cn.hnthyy.thmz.common.scheduled; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import cn.hnthyy.thmz.Utils.DateUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import cn.hnthyy.thmz.common.Constants; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import cn.hnthyy.thmz.entity.thmz.Mzmxsr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import cn.hnthyy.thmz.enums.YesNoEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import cn.hnthyy.thmz.service.his.ChargeFeeVoService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import cn.hnthyy.thmz.service.his.ZyDayclosingRecordService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import cn.hnthyy.thmz.service.thmz.MzmxsrService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.hnthyy.thmz.service.thmz.TokenService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import cn.hnthyy.thmz.vo.ThmzmxsrParamsVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import lombok.extern.slf4j.Slf4j; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.context.annotation.Configuration; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.scheduling.annotation.EnableScheduling; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.scheduling.annotation.Scheduled; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.math.BigDecimal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 定时任务类 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -29,12 +19,7 @@ import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class ScheduledService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private TokenService tokenService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private ChargeFeeVoService chargeFeeVoService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private ZyDayclosingRecordService zyDayclosingRecordService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private MzmxsrService mzmxsrService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 每20分钟执行一次 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -44,171 +29,4 @@ public class ScheduledService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 每天凌晨零点五分运行一次 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Scheduled(cron = "5 0 0 * * *") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void scheduled() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        processMzsrmx(DateUtil.getPrevDayFirstSecond(),DateUtil.getFirstSecond()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 每天23时58分将自助收费做日结 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Scheduled(cron = "0 58 23 * * *") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void scheduledFull() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        processZzRj(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//     * 处理入库数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//    private void process() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        List<MzyRequest> requests = mzyRequestService.queryMzyRequestByRequestDay(DateFormatUtils.format(new Date(), "yyyy-MM-dd")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        //此时排班表数据没有同步过来,需要手动同步,以后排班系统重做后需要移除此功能 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        if(requests==null || requests.size()==0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            mzyRequestService.synchronizationRequest(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 定时处理自助缴费日结 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void processZzRj() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           Integer count = chargeFeeVoService.queryCountCanDaily(Constants.BRZZJF_CODE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           if (count == null || count == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-               log.warn("99999 费用结算失败,无可结算费用"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-               return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           count = chargeFeeVoService.queryTFWDFPCount(Constants.BRZZJF_CODE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           if (count > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-               log.warn("99999 存在退费后发票未重打的发票信息,请 处理后再结账!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-               return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           chargeFeeVoService.dcountCharge(Constants.BRZZJF_CODE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           log.error("门诊自助日结出错。"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            zyDayclosingRecordService.dayclosing(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("住院自助日结出错。"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//    @Scheduled(cron = "30 01 11 22 * *") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//    public void scheduledFullMzsrmx() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        ProcessYpCountThread ypCountThread_2012=new ProcessYpCountThread(chargeFeeVoService,mzmxsrService,2012); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        new Thread(ypCountThread_2012).start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        ProcessYpCountThread ypCountThread_2013=new ProcessYpCountThread(chargeFeeVoService,mzmxsrService,2013); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        new Thread(ypCountThread_2013).start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        ProcessYpCountThread ypCountThread_2014=new ProcessYpCountThread(chargeFeeVoService,mzmxsrService,2014); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        new Thread(ypCountThread_2014).start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        ProcessYpCountThread ypCountThread_2015=new ProcessYpCountThread(chargeFeeVoService,mzmxsrService,2015); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        new Thread(ypCountThread_2015).start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        ProcessYpCountThread ypCountThread_2016=new ProcessYpCountThread(chargeFeeVoService,mzmxsrService,2016); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        new Thread(ypCountThread_2016).start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        ProcessYpCountThread ypCountThread_2017=new ProcessYpCountThread(chargeFeeVoService,mzmxsrService,2017); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        new Thread(ypCountThread_2017).start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        ProcessYpCountThread ypCountThread_2018=new ProcessYpCountThread(chargeFeeVoService,mzmxsrService,2018); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        new Thread(ypCountThread_2018).start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        ProcessYpCountThread ypCountThread_2019=new ProcessYpCountThread(chargeFeeVoService,mzmxsrService,2019); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        new Thread(ypCountThread_2019).start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        ProcessYpCountThread ypCountThread_2020=new ProcessYpCountThread(chargeFeeVoService,mzmxsrService,2020); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        new Thread(ypCountThread_2020).start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 处理入库数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param beginTime 查询开始时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param endTime   查询结束时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void processMzsrmx(Date beginTime, Date endTime) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ThmzmxsrParamsVo thmzmxsrParamsVo = new ThmzmxsrParamsVo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        thmzmxsrParamsVo.setCaseType(YesNoEnum.NO.code.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        thmzmxsrParamsVo.setBeginDate(beginTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        thmzmxsrParamsVo.setEndDate(endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        thmzmxsrParamsVo.setHisData(YesNoEnum.NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Mzmxsr> thmzmxsrs = chargeFeeVoService.queryThmzmxsr(thmzmxsrParamsVo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        thmzmxsrParamsVo.setHisData(YesNoEnum.YES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Mzmxsr> thmzmxsrsHis = chargeFeeVoService.queryThmzmxsr(thmzmxsrParamsVo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        fomartThmzmxsr(thmzmxsrs, thmzmxsrsHis); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Map<String,Object>> list=chargeFeeVoService.querySumAmount(thmzmxsrParamsVo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<String,BigDecimal> sumMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (list!=null && list.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (Map map :list){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                String patientId = (String) map.get("patient_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Double totalChargeD = (Double) map.get("total_charge"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal totalCharge =BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(totalChargeD!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    totalCharge=BigDecimal.valueOf(totalChargeD); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                sumMap.put(patientId,totalCharge); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date inputDate = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //批量导入入库方式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Mzmxsr> insertList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        thmzmxsrs.forEach(mzmxsr -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if("497189-4".equals(mzmxsr.getPatientId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                System.out.println(mzmxsr.getPatientId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            mzmxsr.setInputDate(inputDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal totalCharge =sumMap.get(mzmxsr.getPatientId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(totalCharge!=null && totalCharge.compareTo(BigDecimal.ZERO)!=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                insertList.add(mzmxsr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (insertList.size() >= 50) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        mzmxsrService.batchSaveMzmxsr(insertList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        insertList.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        log.error("统计门诊收入明细信息保存出错,参数列表长度{},错误信息:{}", thmzmxsrs.size(),e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (insertList.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                mzmxsrService.batchSaveMzmxsr(insertList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                insertList.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                log.error("统计门诊收入明细信息保存出错,参数列表长度{},错误信息:{}", thmzmxsrs.size(),e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void fomartThmzmxsr(List<Mzmxsr> thmzmxsrs, List<Mzmxsr> thmzmxsrsHis) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Set<Date> repeatSet = new HashSet<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (thmzmxsrs != null && thmzmxsrs.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (Mzmxsr mzmxsr : thmzmxsrs) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                repeatSet.add(mzmxsr.getDcountDate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (thmzmxsrsHis != null && thmzmxsrsHis.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (Mzmxsr mzmxsr : thmzmxsrsHis) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (repeatSet.contains(mzmxsr.getDcountDate())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                thmzmxsrs.add(mzmxsr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |