|  | @ -1,18 +1,30 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.hospital.prescription.service;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.fasterxml.jackson.databind.ObjectMapper;
 | 
	
		
			
				|  |  | import com.yihu.jw.doctor.dao.BaseDoctorDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.doctor.service.excel.DoctorWorkTimeExcelDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.doctor.service.excel.DoctorWorkTimeMainExcelDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.org.BaseOrgDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.hospital.doctor.WlyyDoctorWorkTimeDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.hospital.prescription.WlyyHospitalWorkRuleDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.hospital.doctor.dao.DoctorWorkTimeDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.hospital.prescription.dao.WlyyHospitalWorkRuleDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.org.dao.BaseOrgDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.util.date.DateUtil;
 | 
	
		
			
				|  |  | import com.yihu.jw.utils.hibernate.HibenateUtils;
 | 
	
		
			
				|  |  | import org.apache.commons.collections.map.HashedMap;
 | 
	
		
			
				|  |  | import org.slf4j.Logger;
 | 
	
		
			
				|  |  | import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import java.util.ArrayList;
 | 
	
		
			
				|  |  | import java.util.Date;
 | 
	
		
			
				|  |  | import java.util.List;
 | 
	
		
			
				|  |  | import java.util.Map;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * Created by Trick on 2020/3/24.
 | 
	
	
		
			
				|  | @ -32,6 +44,18 @@ public class WorkTimeService {
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private DoctorWorkTimeDao doctorWorkTimeDao;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private HibenateUtils hibenateUtils;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private BaseDoctorDao baseDoctorDao;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private BaseDoctorHospitalDao hospitalDao;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private BaseOrgDao baseOrgDao;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 保存排班规则
 | 
	
		
			
				|  |  |      * @param workTimeRuleJson
 | 
	
	
		
			
				|  | @ -67,17 +91,90 @@ public class WorkTimeService {
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public Boolean checkDoctorWork(String doctor){
 | 
	
		
			
				|  |  |         List<WlyyDoctorWorkTimeDO> list = doctorWorkTimeDao.checkDoctorWork(doctor,new Date());
 | 
	
		
			
				|  |  |         String sql = "SELECT " +
 | 
	
		
			
				|  |  |                 " t.id " +
 | 
	
		
			
				|  |  |                 " FROM " +
 | 
	
		
			
				|  |  |                 " wlyy_doctor_work_time t " +
 | 
	
		
			
				|  |  |                 " WHERE " +
 | 
	
		
			
				|  |  |                 " t.doctor =:doctor " +
 | 
	
		
			
				|  |  |                 " AND t.start_time <=:startTime " +
 | 
	
		
			
				|  |  |                 " ANd t.end_time >=:endTime";
 | 
	
		
			
				|  |  |         Map<String,Object> params = new HashedMap();
 | 
	
		
			
				|  |  |         params.put("doctor",doctor);
 | 
	
		
			
				|  |  |         Date date = new Date();
 | 
	
		
			
				|  |  |         params.put("startTime",date);
 | 
	
		
			
				|  |  |         params.put("endTime",date);
 | 
	
		
			
				|  |  |         List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,params);
 | 
	
		
			
				|  |  |         if(list!=null&&list.size()>0){
 | 
	
		
			
				|  |  |             return true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return false;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public String saveWorkInfo(List<DoctorWorkTimeMainExcelDO> list,String date,String hospital){
 | 
	
		
			
				|  |  |         Map<String,Object> rs = new HashedMap();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         List<DoctorWorkTimeMainExcelDO> error =new ArrayList<>();
 | 
	
		
			
				|  |  |         List<DoctorWorkTimeMainExcelDO> succ = new ArrayList<>();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if(list!=null&&list.size()>0){
 | 
	
		
			
				|  |  |             for(DoctorWorkTimeMainExcelDO excelDO:list){
 | 
	
		
			
				|  |  |                 List<BaseDoctorDO> doctorDOs = baseDoctorDao.findByIdcard(excelDO.getIdCard());
 | 
	
		
			
				|  |  |                 if(doctorDOs==null||doctorDOs.size()==0){
 | 
	
		
			
				|  |  |                     excelDO.setErrorMes("第"+(excelDO.getRow()+1)+"行,医生身份证号不存在!");
 | 
	
		
			
				|  |  |                     error.add(excelDO);
 | 
	
		
			
				|  |  |                     continue;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 BaseDoctorDO doctorDO = doctorDOs.get(0);
 | 
	
		
			
				|  |  |                 BaseOrgDO orgDO = baseOrgDao.findByCode(hospital);
 | 
	
		
			
				|  |  |                 WlyyHospitalWorkRuleDO ruleDO = findWorkTimeRule(hospital);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 //判断是否为本月
 | 
	
		
			
				|  |  |                 String dm = DateUtil.dateToStr(new Date(),"yyyy-MM");
 | 
	
		
			
				|  |  |                 if(dm.equals(date)){
 | 
	
		
			
				|  |  |                     //本月
 | 
	
		
			
				|  |  |                 }else{
 | 
	
		
			
				|  |  |                     //判断日期是否大于本月
 | 
	
		
			
				|  |  |                     Date now = DateUtil.strToDate(dm,"yyyy-MM");
 | 
	
		
			
				|  |  |                     Date work = DateUtil.strToDate(date,"yyyy-MM");
 | 
	
		
			
				|  |  |                     if(now.before(work)){
 | 
	
		
			
				|  |  |                         //
 | 
	
		
			
				|  |  |                         //导入的月份大于当前月份,删除导入月份所有历史排班记录
 | 
	
		
			
				|  |  |                         List<WlyyDoctorWorkTimeDO> timeDOs = doctorWorkTimeDao.findDoctorWorkTimeByMonth(doctorDO.getId(),"%"+date+"%");
 | 
	
		
			
				|  |  |                         if(timeDOs!=null&&timeDOs.size()>0){
 | 
	
		
			
				|  |  |                             doctorWorkTimeDao.delete(timeDOs);
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                         List<DoctorWorkTimeExcelDO> worktimes = excelDO.getWorkTime();
 | 
	
		
			
				|  |  |                         if(worktimes!=null&&worktimes.size()>0){
 | 
	
		
			
				|  |  |                             for(DoctorWorkTimeExcelDO worktime:worktimes){
 | 
	
		
			
				|  |  |                                 WlyyDoctorWorkTimeDO workTimeDO = new WlyyDoctorWorkTimeDO();
 | 
	
		
			
				|  |  |                                 workTimeDO.setDoctor(doctorDO.getId());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                                 //上午
 | 
	
		
			
				|  |  |                                 if("1".equals(worktime.getType())){
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                                 }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | //                                workTimeDO.setSourceNumber(ruleDO.);
 | 
	
		
			
				|  |  |                             }
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return null;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public static void main(String ag[]){
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | //    public static void main(String ag[]){
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //        Date start = DateUtil.stringToDate("2020-03-24 08:00:00","yyyy-MM-dd HH:mm:ss");
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //        Date end = DateUtil.stringToDate("2020-03-24 12:00:00","yyyy-MM-dd HH:mm:ss");
 | 
	
	
		
			
				|  | @ -87,8 +184,11 @@ public class WorkTimeService {
 | 
	
		
			
				|  |  | //        Long jg = total/100;
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //        start.setTime(start.getTime()+jg);
 | 
	
		
			
				|  |  | //
 | 
	
		
			
				|  |  | //        System.out.println(DateUtil.dateToStr(start,"yyyy-MM-dd HH:mm:ss"));
 | 
	
		
			
				|  |  | //    }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         Date now = DateUtil.strToDate("2020-04","yyyy-MM");
 | 
	
		
			
				|  |  |         Date work = DateUtil.strToDate("2020-04","yyyy-MM");
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         System.out.println(now.before(work));
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | }
 |