|  | @ -1131,19 +1131,34 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public List<WlyyDoctorWorkTimeVO> findDoctorWorkTime(String doctor, String hospital) {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         List<WlyyHospitalWorkRuleDO> list = wlyyHospitalWorkRuleDao.findByHospital(hospital);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (list != null && list.size() > 0) {
 | 
	
		
			
				|  |  |             WlyyHospitalWorkRuleDO rule = list.get(0);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             Date openTime = DateUtil.strToDate(DateUtil.dateToStr(new Date(), "yyyy-MM-dd") + " " + rule.getMaxDayOpenTime() + ":00", "yyyy-MM-dd HH:mm:ss");
 | 
	
		
			
				|  |  |             String openTimeString = DateUtil.dateToStr(new Date(), "yyyy-MM-dd")+ " " + rule.getMaxDayOpenTime() + ":00";
 | 
	
		
			
				|  |  |             logger.info("today openTimeString :"+openTimeString);
 | 
	
		
			
				|  |  |             Date openTime = DateUtil.strToDate(openTimeString, "yyyy-MM-dd HH:mm:ss");
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             Integer openDay = rule.getMaxDay();
 | 
	
		
			
				|  |  |             if (openTime.before(new Date())) {
 | 
	
		
			
				|  |  |                 openDay = openDay - 1;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             Date endDate = DateUtil.stringToDate(DateUtil.dateToStr(DateUtil.getPreDays(new Date(), openDay), "yyyy-MM-dd") + "23:59:59", "yyyy-MM-dd HH:mm:ss");
 | 
	
		
			
				|  |  |             Date preDate =  DateUtil.getPreDays(new Date(), openDay);
 | 
	
		
			
				|  |  |             String maxDateString = DateUtil.dateToStr(preDate,"yyyy-MM-dd")+" 23:59:59";
 | 
	
		
			
				|  |  |             logger.info("maxDateString :"+maxDateString);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             Date endDate = DateUtil.stringToDate(maxDateString, "yyyy-MM-dd HH:mm:ss");
 | 
	
		
			
				|  |  |             List<WlyyDoctorWorkTimeVO> timeVOs = new ArrayList<>();
 | 
	
		
			
				|  |  |             List<WlyyDoctorWorkTimeDO> timeDOs = doctorWorkTimeDao.findDoctorWorkTime(doctor, new Date(), endDate);
 | 
	
		
			
				|  |  |             convertToModels(timeDOs, timeVOs, WlyyDoctorWorkTimeVO.class);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             if (timeVOs != null && timeVOs.size() > 0) {
 | 
	
		
			
				|  |  |                 for (WlyyDoctorWorkTimeVO timeVO : timeVOs) {
 | 
	
		
			
				|  |  |                     timeVO.setCount(findWorkTimeInfoCout(timeVO.getId()));
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             return timeVOs;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return null;
 | 
	
	
		
			
				|  | @ -2281,114 +2296,115 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public List<WlyyDoctorWorkTimeVO> findDoctorWorkTime(String doctor) {
 | 
	
		
			
				|  |  |         //获取医生排班规则
 | 
	
		
			
				|  |  |         List<WlyyHospitalSysDictDO> list = sysDictDao.findByDictName("Scheduling");
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         Calendar ncTime = Calendar.getInstance();
 | 
	
		
			
				|  |  |         ncTime.setTime(new Date());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         Calendar scTime = Calendar.getInstance();
 | 
	
		
			
				|  |  |         scTime.setTime(new Date());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         Calendar ecTime = Calendar.getInstance();
 | 
	
		
			
				|  |  |         ecTime.setTime(new Date());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //设置几天号源,及最后天号源的开放时间
 | 
	
		
			
				|  |  |         int days = Integer.parseInt(findHospitalSysDictValue(list, "OpenDays"));
 | 
	
		
			
				|  |  |         String closeTime = findHospitalSysDictValue(list, "CloseTime");
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //比较当前时间是否超过开放时间
 | 
	
		
			
				|  |  |         if (DateUtil.strToDate(DateUtil.getTimeShort(), DateUtil.HH_MM_SS).after(DateUtil.strToDate(closeTime, DateUtil.HH_MM))) {
 | 
	
		
			
				|  |  |             //当前时间超过开放时间,可以预约最后一天全部号源
 | 
	
		
			
				|  |  |             ecTime.add(Calendar.DAY_OF_MONTH, days);
 | 
	
		
			
				|  |  |             ecTime.set(ecTime.get(Calendar.YEAR), ecTime.get(Calendar.MONTH), ecTime.get(Calendar.DATE), 23, 59, 59);
 | 
	
		
			
				|  |  |         } else {
 | 
	
		
			
				|  |  |             //当前时间没超过开放时间,可以预约最后一天前一天全部号源
 | 
	
		
			
				|  |  |             ecTime.add(Calendar.DAY_OF_MONTH, days > 1 ? days - 1 : 0);
 | 
	
		
			
				|  |  |             ecTime.set(ecTime.get(Calendar.YEAR), ecTime.get(Calendar.MONTH), ecTime.get(Calendar.DATE), 23, 59, 59);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         List<WlyyDoctorWorkTimeDO> times = doctorWorkTimeDao.findDoctorWorkTime(doctor, scTime.getTime(), ecTime.getTime());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         workTimeFilter(list, times);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         List<WlyyDoctorWorkTimeVO> timeVOs = new ArrayList<>();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         convertToModels(times, timeVOs, WlyyDoctorWorkTimeVO.class);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (timeVOs != null && timeVOs.size() > 0) {
 | 
	
		
			
				|  |  |             for (WlyyDoctorWorkTimeVO timeVO : timeVOs) {
 | 
	
		
			
				|  |  |                 timeVO.setCount(findWorkTimeCount(timeVO.getId()));
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return timeVOs;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public List<WlyyDoctorWorkTimeDO> workTimeFilter(List<WlyyHospitalSysDictDO> sys, List<WlyyDoctorWorkTimeDO> times) {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (times != null && times.size() > 0) {
 | 
	
		
			
				|  |  |             //上午号源开放的最早天数
 | 
	
		
			
				|  |  |             int AMCloseDays = Integer.parseInt(findHospitalSysDictValue(sys, "AMCloseDays"));
 | 
	
		
			
				|  |  |             //每一天上午的最早预约的过号时间
 | 
	
		
			
				|  |  |             String AMCloseTime = findHospitalSysDictValue(sys, "AMCloseTime");
 | 
	
		
			
				|  |  |             //下午号源开放的最早天数
 | 
	
		
			
				|  |  |             int PMCloseDays = Integer.parseInt(findHospitalSysDictValue(sys, "PMCloseDays"));
 | 
	
		
			
				|  |  |             //每一天下午的最早预约的过号时间
 | 
	
		
			
				|  |  |             String PMCloseTime = findHospitalSysDictValue(sys, "PMCloseTime");
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             Iterator it = times.iterator();
 | 
	
		
			
				|  |  |             while (it.hasNext()) {
 | 
	
		
			
				|  |  |                 //设置上午过号时间
 | 
	
		
			
				|  |  |                 Calendar scAMTime = Calendar.getInstance();
 | 
	
		
			
				|  |  |                 scAMTime.setTime(new Date());
 | 
	
		
			
				|  |  |                 scAMTime.add(Calendar.DAY_OF_MONTH, AMCloseDays);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 //设置下午午过号时间
 | 
	
		
			
				|  |  |                 Calendar scPMTime = Calendar.getInstance();
 | 
	
		
			
				|  |  |                 scPMTime.setTime(new Date());
 | 
	
		
			
				|  |  |                 scPMTime.add(Calendar.DAY_OF_MONTH, PMCloseDays);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 WlyyDoctorWorkTimeDO time = (WlyyDoctorWorkTimeDO) it.next();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 Boolean filter = true;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 //1.【上午的排班中】 且 【排班结束时间】如果在【开放时间】前,则移除
 | 
	
		
			
				|  |  |                 if (filter && "1".equals(time.getTimeType()) && time.getEndTime().before(scAMTime.getTime())) {
 | 
	
		
			
				|  |  |                     it.remove();
 | 
	
		
			
				|  |  |                     filter = false;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 //2.【下午午的排班中】 且 【排班结束时间】如果在【开放时间】前,则移除该排班
 | 
	
		
			
				|  |  |                 if (filter && "2".equals(time.getTimeType()) && time.getEndTime().before(scPMTime.getTime())) {
 | 
	
		
			
				|  |  |                     it.remove();
 | 
	
		
			
				|  |  |                     filter = false;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 //3.如果【当前时间】过了【上午放号时间】,则移除所有上午的排班
 | 
	
		
			
				|  |  |                 if (filter && "1".equals(time.getTimeType()) &&
 | 
	
		
			
				|  |  |                         DateUtil.strToDate(DateUtil.getTimeShort(), DateUtil.HH_MM_SS).after(DateUtil.strToDate(AMCloseTime, DateUtil.HH_MM))) {
 | 
	
		
			
				|  |  |                     scAMTime.set(scAMTime.get(Calendar.YEAR), scAMTime.get(Calendar.MONTH), scAMTime.get(Calendar.DATE), 12, 00, 00);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                     if (time.getEndTime().before(scAMTime.getTime())) {
 | 
	
		
			
				|  |  |                         it.remove();
 | 
	
		
			
				|  |  |                         filter = false;
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 //4.如果【当前时间】过了【下午午放号时间】,则移除所有下午的排班
 | 
	
		
			
				|  |  |                 if (filter && "2".equals(time.getTimeType()) &&
 | 
	
		
			
				|  |  |                         DateUtil.strToDate(DateUtil.getTimeShort(), DateUtil.HH_MM_SS).after(DateUtil.strToDate(PMCloseTime, DateUtil.HH_MM))) {
 | 
	
		
			
				|  |  |                     scPMTime.set(scAMTime.get(Calendar.YEAR), scAMTime.get(Calendar.MONTH), scAMTime.get(Calendar.DATE), 12, 00, 00);
 | 
	
		
			
				|  |  | //      过时
 | 
	
		
			
				|  |  | //    public List<WlyyDoctorWorkTimeVO> findDoctorWorkTime(String doctor) {
 | 
	
		
			
				|  |  | //        //获取医生排班规则
 | 
	
		
			
				|  |  | //        List<WlyyHospitalSysDictDO> list = sysDictDao.findByDictName("Scheduling");
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //        Calendar ncTime = Calendar.getInstance();
 | 
	
		
			
				|  |  | //        ncTime.setTime(new Date());
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //        Calendar scTime = Calendar.getInstance();
 | 
	
		
			
				|  |  | //        scTime.setTime(new Date());
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //        Calendar ecTime = Calendar.getInstance();
 | 
	
		
			
				|  |  | //        ecTime.setTime(new Date());
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //        //设置几天号源,及最后天号源的开放时间
 | 
	
		
			
				|  |  | //        int days = Integer.parseInt(findHospitalSysDictValue(list, "OpenDays"));
 | 
	
		
			
				|  |  | //        String closeTime = findHospitalSysDictValue(list, "CloseTime");
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //        //比较当前时间是否超过开放时间
 | 
	
		
			
				|  |  | //        if (DateUtil.strToDate(DateUtil.getTimeShort(), DateUtil.HH_MM_SS).after(DateUtil.strToDate(closeTime, DateUtil.HH_MM))) {
 | 
	
		
			
				|  |  | //            //当前时间超过开放时间,可以预约最后一天全部号源
 | 
	
		
			
				|  |  | //            ecTime.add(Calendar.DAY_OF_MONTH, days);
 | 
	
		
			
				|  |  | //            ecTime.set(ecTime.get(Calendar.YEAR), ecTime.get(Calendar.MONTH), ecTime.get(Calendar.DATE), 23, 59, 59);
 | 
	
		
			
				|  |  | //        } else {
 | 
	
		
			
				|  |  | //            //当前时间没超过开放时间,可以预约最后一天前一天全部号源
 | 
	
		
			
				|  |  | //            ecTime.add(Calendar.DAY_OF_MONTH, days > 1 ? days - 1 : 0);
 | 
	
		
			
				|  |  | //            ecTime.set(ecTime.get(Calendar.YEAR), ecTime.get(Calendar.MONTH), ecTime.get(Calendar.DATE), 23, 59, 59);
 | 
	
		
			
				|  |  | //        }
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //        List<WlyyDoctorWorkTimeDO> times = doctorWorkTimeDao.findDoctorWorkTime(doctor, scTime.getTime(), ecTime.getTime());
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //        workTimeFilter(list, times);
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //        List<WlyyDoctorWorkTimeVO> timeVOs = new ArrayList<>();
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //        convertToModels(times, timeVOs, WlyyDoctorWorkTimeVO.class);
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //        if (timeVOs != null && timeVOs.size() > 0) {
 | 
	
		
			
				|  |  | //            for (WlyyDoctorWorkTimeVO timeVO : timeVOs) {
 | 
	
		
			
				|  |  | //                timeVO.setCount(findWorkTimeCount(timeVO.getId()));
 | 
	
		
			
				|  |  | //            }
 | 
	
		
			
				|  |  | //        }
 | 
	
		
			
				|  |  | //        return timeVOs;
 | 
	
		
			
				|  |  | //    }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                     if (time.getEndTime().before(scPMTime.getTime())) {
 | 
	
		
			
				|  |  |                         it.remove();
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return times;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | //    public List<WlyyDoctorWorkTimeDO> workTimeFilter(List<WlyyHospitalSysDictDO> sys, List<WlyyDoctorWorkTimeDO> times) {
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //        if (times != null && times.size() > 0) {
 | 
	
		
			
				|  |  | //            //上午号源开放的最早天数
 | 
	
		
			
				|  |  | //            int AMCloseDays = Integer.parseInt(findHospitalSysDictValue(sys, "AMCloseDays"));
 | 
	
		
			
				|  |  | //            //每一天上午的最早预约的过号时间
 | 
	
		
			
				|  |  | //            String AMCloseTime = findHospitalSysDictValue(sys, "AMCloseTime");
 | 
	
		
			
				|  |  | //            //下午号源开放的最早天数
 | 
	
		
			
				|  |  | //            int PMCloseDays = Integer.parseInt(findHospitalSysDictValue(sys, "PMCloseDays"));
 | 
	
		
			
				|  |  | //            //每一天下午的最早预约的过号时间
 | 
	
		
			
				|  |  | //            String PMCloseTime = findHospitalSysDictValue(sys, "PMCloseTime");
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //            Iterator it = times.iterator();
 | 
	
		
			
				|  |  | //            while (it.hasNext()) {
 | 
	
		
			
				|  |  | //                //设置上午过号时间
 | 
	
		
			
				|  |  | //                Calendar scAMTime = Calendar.getInstance();
 | 
	
		
			
				|  |  | //                scAMTime.setTime(new Date());
 | 
	
		
			
				|  |  | //                scAMTime.add(Calendar.DAY_OF_MONTH, AMCloseDays);
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //                //设置下午午过号时间
 | 
	
		
			
				|  |  | //                Calendar scPMTime = Calendar.getInstance();
 | 
	
		
			
				|  |  | //                scPMTime.setTime(new Date());
 | 
	
		
			
				|  |  | //                scPMTime.add(Calendar.DAY_OF_MONTH, PMCloseDays);
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //                WlyyDoctorWorkTimeDO time = (WlyyDoctorWorkTimeDO) it.next();
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //                Boolean filter = true;
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //                //1.【上午的排班中】 且 【排班结束时间】如果在【开放时间】前,则移除
 | 
	
		
			
				|  |  | //                if (filter && "1".equals(time.getTimeType()) && time.getEndTime().before(scAMTime.getTime())) {
 | 
	
		
			
				|  |  | //                    it.remove();
 | 
	
		
			
				|  |  | //                    filter = false;
 | 
	
		
			
				|  |  | //                }
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //                //2.【下午午的排班中】 且 【排班结束时间】如果在【开放时间】前,则移除该排班
 | 
	
		
			
				|  |  | //                if (filter && "2".equals(time.getTimeType()) && time.getEndTime().before(scPMTime.getTime())) {
 | 
	
		
			
				|  |  | //                    it.remove();
 | 
	
		
			
				|  |  | //                    filter = false;
 | 
	
		
			
				|  |  | //                }
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //                //3.如果【当前时间】过了【上午放号时间】,则移除所有上午的排班
 | 
	
		
			
				|  |  | //                if (filter && "1".equals(time.getTimeType()) &&
 | 
	
		
			
				|  |  | //                        DateUtil.strToDate(DateUtil.getTimeShort(), DateUtil.HH_MM_SS).after(DateUtil.strToDate(AMCloseTime, DateUtil.HH_MM))) {
 | 
	
		
			
				|  |  | //                    scAMTime.set(scAMTime.get(Calendar.YEAR), scAMTime.get(Calendar.MONTH), scAMTime.get(Calendar.DATE), 12, 00, 00);
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //                    if (time.getEndTime().before(scAMTime.getTime())) {
 | 
	
		
			
				|  |  | //                        it.remove();
 | 
	
		
			
				|  |  | //                        filter = false;
 | 
	
		
			
				|  |  | //                    }
 | 
	
		
			
				|  |  | //                }
 | 
	
		
			
				|  |  | //                //4.如果【当前时间】过了【下午午放号时间】,则移除所有下午的排班
 | 
	
		
			
				|  |  | //                if (filter && "2".equals(time.getTimeType()) &&
 | 
	
		
			
				|  |  | //                        DateUtil.strToDate(DateUtil.getTimeShort(), DateUtil.HH_MM_SS).after(DateUtil.strToDate(PMCloseTime, DateUtil.HH_MM))) {
 | 
	
		
			
				|  |  | //                    scPMTime.set(scAMTime.get(Calendar.YEAR), scAMTime.get(Calendar.MONTH), scAMTime.get(Calendar.DATE), 12, 00, 00);
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //                    if (time.getEndTime().before(scPMTime.getTime())) {
 | 
	
		
			
				|  |  | //                        it.remove();
 | 
	
		
			
				|  |  | //                    }
 | 
	
		
			
				|  |  | //                }
 | 
	
		
			
				|  |  | //            }
 | 
	
		
			
				|  |  | //        }
 | 
	
		
			
				|  |  | //        return times;
 | 
	
		
			
				|  |  | //    }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public String findHospitalSysDictValue(List<WlyyHospitalSysDictDO> list, String dictCode) {
 | 
	
	
		
			
				|  | @ -2453,7 +2469,6 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
 | 
	
		
			
				|  |  |             Date temp =new Date();
 | 
	
		
			
				|  |  |             temp.setTime(sc.getTime().getTime()+s);
 | 
	
		
			
				|  |  |             sc.setTime(temp);
 | 
	
		
			
				|  |  | //            sc.add(Calendar.MINUTE,timeDO.getTimeInterval());
 | 
	
		
			
				|  |  |             //如果结束时间大于排班时间则不再拆分号源
 | 
	
		
			
				|  |  |             if(sc.getTime().after(timeDO.getEndTime())){
 | 
	
		
			
				|  |  |                 break;
 | 
	
	
		
			
				|  | @ -2476,6 +2491,66 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
 | 
	
		
			
				|  |  |         return rs;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 计算号源数目
 | 
	
		
			
				|  |  |      * @param id
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public Integer findWorkTimeInfoCout(String id){
 | 
	
		
			
				|  |  |         WlyyDoctorWorkTimeDO timeDO = doctorWorkTimeDao.findOne(id);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         Long ss = timeDO.getEndTime().getTime()-timeDO.getStartTime().getTime();
 | 
	
		
			
				|  |  |         Long s = ss/timeDO.getSourceNumber();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         Calendar sc = Calendar.getInstance();
 | 
	
		
			
				|  |  |         sc.setTime(timeDO.getStartTime());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         List<Map<String,Object>> rs = new ArrayList<>();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //1.根据当前时间,去取已过时间的号源
 | 
	
		
			
				|  |  |         while (sc.getTime().before(timeDO.getEndTime())){
 | 
	
		
			
				|  |  |             if(new Date().before(sc.getTime())){
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             //加上时间间隔
 | 
	
		
			
				|  |  |             Date temp =new Date();
 | 
	
		
			
				|  |  |             temp.setTime(sc.getTime().getTime()+s);
 | 
	
		
			
				|  |  |             sc.setTime(temp);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         List<WlyyPatientRegisterTimeDO> registerTimeDOs = patientRegisterTimeDao.findByDoctorAndWorkId(timeDO.getDoctor(),id);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //2.根据时间间隔拆分号源
 | 
	
		
			
				|  |  |         while (sc.getTime().before(timeDO.getEndTime())){
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             Map<String,Object> t = new HashedMap();
 | 
	
		
			
				|  |  |             t.put("startTime",DateUtil.dateToStr(sc.getTime(),"yyyy-MM-dd HH:mm:ss"));
 | 
	
		
			
				|  |  |             //加上时间间隔
 | 
	
		
			
				|  |  |             Date temp =new Date();
 | 
	
		
			
				|  |  |             temp.setTime(sc.getTime().getTime()+s);
 | 
	
		
			
				|  |  |             sc.setTime(temp);
 | 
	
		
			
				|  |  |             //如果结束时间大于排班时间则不再拆分号源
 | 
	
		
			
				|  |  |             if(sc.getTime().after(timeDO.getEndTime())){
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             t.put("endTime",DateUtil.dateToStr(sc.getTime(),"yyyy-MM-dd HH:mm:ss"));
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             //如果号源被预约了,标记为true
 | 
	
		
			
				|  |  |             Boolean registered = false;
 | 
	
		
			
				|  |  |             if(registerTimeDOs!=null&®isterTimeDOs.size()>0){
 | 
	
		
			
				|  |  |                 for(WlyyPatientRegisterTimeDO registerTimeDO : registerTimeDOs){
 | 
	
		
			
				|  |  |                     if(t.get("startTime").equals(DateUtil.dateToStr(registerTimeDO.getStartTime(),"yyyy-MM-dd HH:mm:ss"))){
 | 
	
		
			
				|  |  |                         registered = true;
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if(!registered){
 | 
	
		
			
				|  |  |                 rs.add(t);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return rs.size();
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Deprecated
 | 
	
		
			
				|  |  |     public List<Map<String,Object>> findWorkTimeInfoOld(String id){
 | 
	
		
			
				|  |  |         WlyyDoctorWorkTimeDO timeDO = doctorWorkTimeDao.findOne(id);
 | 
	
	
		
			
				|  | @ -2598,11 +2673,17 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
 | 
	
		
			
				|  |  |                rs.put("winNo",org.getWinNo());
 | 
	
		
			
				|  |  |                rs.put("deptName",hospitalDOs.get(0).getDeptName());
 | 
	
		
			
				|  |  |                rs.put("dept",hospitalDOs.get(0).getDeptCode());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                if(StringUtils.isNotBlank(withWork)&&"1".equals(withWork)){
 | 
	
		
			
				|  |  |                   List<WlyyDoctorWorkTimeVO> times = findDoctorWorkTime(doctor,hospitalDOs.get(0).getOrgCode());
 | 
	
		
			
				|  |  |                   rs.put("workTime",times);
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |             }else{
 | 
	
		
			
				|  |  |                rs.put("hospital",null);
 | 
	
		
			
				|  |  |                rs.put("winNo",null);
 | 
	
		
			
				|  |  |                rs.put("deptName",null);
 | 
	
		
			
				|  |  |                rs.put("dept",null);
 | 
	
		
			
				|  |  |                 rs.put("workTime",null);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
	
		
			
				|  | @ -2630,21 +2711,18 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
 | 
	
		
			
				|  |  |                 rs.put("registerCount",0);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             //医生问诊量
 | 
	
		
			
				|  |  | //            List<WlyyOutpatientDO> wlyyOutpatientDOs = outpatientDao.findByDoctorAndStatus(doctor,"2");
 | 
	
		
			
				|  |  | //            if(wlyyOutpatientDOs!=null&&wlyyOutpatientDOs.size()>0){
 | 
	
		
			
				|  |  | //                rs.put("outpatientCount",wlyyOutpatientDOs.size());
 | 
	
		
			
				|  |  | //            }else{
 | 
	
		
			
				|  |  | //                rs.put("outpatientCount",0);
 | 
	
		
			
				|  |  | //            }
 | 
	
		
			
				|  |  |             List<WlyyOutpatientDO> wlyyOutpatientDOs = outpatientDao.findByDoctorAndStatus(doctor,"2");
 | 
	
		
			
				|  |  |             if(wlyyOutpatientDOs!=null&&wlyyOutpatientDOs.size()>0){
 | 
	
		
			
				|  |  |                 rs.put("outpatientCount",wlyyOutpatientDOs.size());
 | 
	
		
			
				|  |  |             }else{
 | 
	
		
			
				|  |  |                 rs.put("outpatientCount",0);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             //协同门诊量
 | 
	
		
			
				|  |  | //            Integer coordinationCout = outpatientDao.countByDoctorAndStatusAndOutpatientType(doctor,"2","2");
 | 
	
		
			
				|  |  | //            rs.put("coordinationCout",coordinationCout);
 | 
	
		
			
				|  |  |             Integer coordinationCout = outpatientDao.countByDoctorAndStatusAndOutpatientType(doctor,"2","2");
 | 
	
		
			
				|  |  |             rs.put("coordinationCout",coordinationCout);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | //            if(StringUtils.isNotBlank(withWork)&&"1".equals(withWork)){
 | 
	
		
			
				|  |  | //                List<WlyyDoctorWorkTimeVO> times = findDoctorWorkTime(doctor);
 | 
	
		
			
				|  |  | //                rs.put("workTime",times);
 | 
	
		
			
				|  |  | //            }
 | 
	
		
			
				|  |  |     
 | 
	
		
			
				|  |  |             //专家咨询
 | 
	
		
			
				|  |  |             String zjCountsql = "SELECT id FROM wlyy_consult_team WHERE doctor='"+doctor+"' AND (type=1 OR type=15)";
 | 
	
	
		
			
				|  | @ -3453,7 +3531,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
 | 
	
		
			
				|  |  |             List<Map<String,Object>> doctors = jdbcTemplate.queryForList(sql);
 | 
	
		
			
				|  |  |             List<WlyyDoctorWorkTimeDO> workTimeDOs =makeDoctorWorkTimeDOList(doctors,wlyyDoctorWorkTimeDOs);
 | 
	
		
			
				|  |  |             saveDoctorWorkTime(workTimeDOs,date,doctors);
 | 
	
		
			
				|  |  |             //科室
 | 
	
		
			
				|  |  |         //科室
 | 
	
		
			
				|  |  |         }else if("2".equals(type)){
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             String sql ="SELECT " +
 |