|  | @ -1,5 +1,7 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.hospital.prescription.service;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSONArray;
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  | import com.fasterxml.jackson.databind.ObjectMapper;
 | 
	
		
			
				|  |  | import com.yihu.jw.doctor.dao.BaseDoctorDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
 | 
	
	
		
			
				|  | @ -64,13 +66,26 @@ public class WorkTimeService {
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      * @throws Exception
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public WlyyHospitalWorkRuleDO saveWorkTimeRule(String workTimeRuleJson)throws Exception{
 | 
	
		
			
				|  |  |     public WlyyHospitalWorkRuleDO saveWorkTimeRule(String workTimeRuleJson,String isDoctorWork) throws Exception{
 | 
	
		
			
				|  |  |         WlyyHospitalWorkRuleDO ruleDO = objectMapper.readValue(workTimeRuleJson,WlyyHospitalWorkRuleDO.class);
 | 
	
		
			
				|  |  |         List<WlyyHospitalWorkRuleDO> orgRules = wlyyHospitalWorkRuleDao.findByHospital(ruleDO.getHospital());
 | 
	
		
			
				|  |  |         if(orgRules!=null&&orgRules.size()>0){
 | 
	
		
			
				|  |  |             wlyyHospitalWorkRuleDao.delete(orgRules);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         wlyyHospitalWorkRuleDao.save(ruleDO);
 | 
	
		
			
				|  |  |         if (StringUtils.isNoneBlank(isDoctorWork)){
 | 
	
		
			
				|  |  |             JSONArray jsonArray = JSONArray.parseArray(isDoctorWork);
 | 
	
		
			
				|  |  |             if (jsonArray!=null&&jsonArray.size()>0){
 | 
	
		
			
				|  |  |                 for(int i=0;i<jsonArray.size();i++){
 | 
	
		
			
				|  |  |                     JSONObject jsonObject = jsonArray.getJSONObject(i);
 | 
	
		
			
				|  |  |                     WlyyHospitalSysDictDO wlyyHospitalSysDictDO = wlyyHospitalSysDictDao.findById(jsonObject.getString("id"));
 | 
	
		
			
				|  |  |                     if (wlyyHospitalSysDictDO!=null&&StringUtils.isNoneBlank(jsonObject.get("value")==null?"":jsonObject.getString("value"))){
 | 
	
		
			
				|  |  |                         wlyyHospitalSysDictDO.setDictValue(jsonObject.getString("value"));
 | 
	
		
			
				|  |  |                         wlyyHospitalSysDictDao.save(wlyyHospitalSysDictDO);
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return ruleDO;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
	
		
			
				|  | @ -95,44 +110,89 @@ public class WorkTimeService {
 | 
	
		
			
				|  |  |     public Boolean checkDoctorWork(String doctor,String ywCode){
 | 
	
		
			
				|  |  |         logger.info("当前判断的业务Code:"+ywCode);
 | 
	
		
			
				|  |  |         if (StringUtils.isNoneBlank(ywCode)){
 | 
	
		
			
				|  |  |             WlyyHospitalSysDictDO wlyyHospitalSysDictDO = wlyyHospitalSysDictDao.findById(ywCode);
 | 
	
		
			
				|  |  |             String isCheckDoctorWork = "1";
 | 
	
		
			
				|  |  |             if (wlyyHospitalSysDictDO!=null){
 | 
	
		
			
				|  |  |                 isCheckDoctorWork = wlyyHospitalSysDictDO.getDictValue();
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if ("1".equalsIgnoreCase(isCheckDoctorWork)){
 | 
	
		
			
				|  |  |                 String sql = "SELECT " +
 | 
	
		
			
				|  |  |                         " d.id " +
 | 
	
		
			
				|  |  |                         " FROM " +
 | 
	
		
			
				|  |  |                         " base_doctor d " +
 | 
	
		
			
				|  |  |                         " WHERE " +
 | 
	
		
			
				|  |  |                         " d.id =:doctor " +
 | 
	
		
			
				|  |  |                         " AND ( " +
 | 
	
		
			
				|  |  |                         " EXISTS ( " +
 | 
	
		
			
				|  |  |                         "  SELECT " +
 | 
	
		
			
				|  |  |                         "   t.id " +
 | 
	
		
			
				|  |  |                         "  FROM " +
 | 
	
		
			
				|  |  |                         "   wlyy_doctor_work_time t " +
 | 
	
		
			
				|  |  |                         "  WHERE " +
 | 
	
		
			
				|  |  |                         "   t.doctor = d.id " +
 | 
	
		
			
				|  |  |                         "  AND t.start_time <=:startTime " +
 | 
	
		
			
				|  |  |                         "  AND t.end_time >=:endTime" +
 | 
	
		
			
				|  |  |                         " ) " +
 | 
	
		
			
				|  |  |                         " OR d.consult_status = '1' " +
 | 
	
		
			
				|  |  |                         ")";
 | 
	
		
			
				|  |  |                 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;
 | 
	
		
			
				|  |  |                 }else {
 | 
	
		
			
				|  |  |                     return false;
 | 
	
		
			
				|  |  |             if (ywCode.contains(",")){
 | 
	
		
			
				|  |  |                 String[] split = ywCode.split(",");
 | 
	
		
			
				|  |  |                 for (int i = 0;i<split.length;i++){
 | 
	
		
			
				|  |  |                     WlyyHospitalSysDictDO wlyyHospitalSysDictDO = wlyyHospitalSysDictDao.findById(split[i]);
 | 
	
		
			
				|  |  |                     String isCheckDoctorWork = "1";
 | 
	
		
			
				|  |  |                     if (wlyyHospitalSysDictDO!=null){
 | 
	
		
			
				|  |  |                         isCheckDoctorWork = wlyyHospitalSysDictDO.getDictValue();
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     if ("1".equalsIgnoreCase(isCheckDoctorWork)){
 | 
	
		
			
				|  |  |                         String sql = "SELECT " +
 | 
	
		
			
				|  |  |                                 " d.id " +
 | 
	
		
			
				|  |  |                                 " FROM " +
 | 
	
		
			
				|  |  |                                 " base_doctor d " +
 | 
	
		
			
				|  |  |                                 " WHERE " +
 | 
	
		
			
				|  |  |                                 " d.id =:doctor " +
 | 
	
		
			
				|  |  |                                 " AND ( " +
 | 
	
		
			
				|  |  |                                 " EXISTS ( " +
 | 
	
		
			
				|  |  |                                 "  SELECT " +
 | 
	
		
			
				|  |  |                                 "   t.id " +
 | 
	
		
			
				|  |  |                                 "  FROM " +
 | 
	
		
			
				|  |  |                                 "   wlyy_doctor_work_time t " +
 | 
	
		
			
				|  |  |                                 "  WHERE " +
 | 
	
		
			
				|  |  |                                 "   t.doctor = d.id " +
 | 
	
		
			
				|  |  |                                 "  AND t.start_time <=:startTime " +
 | 
	
		
			
				|  |  |                                 "  AND t.end_time >=:endTime" +
 | 
	
		
			
				|  |  |                                 " ) " +
 | 
	
		
			
				|  |  |                                 " OR d.consult_status = '1' " +
 | 
	
		
			
				|  |  |                                 ")";
 | 
	
		
			
				|  |  |                         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;
 | 
	
		
			
				|  |  |                         }else {
 | 
	
		
			
				|  |  |                             return false;
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                     }else {
 | 
	
		
			
				|  |  |                         return true;
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }else {
 | 
	
		
			
				|  |  |                 return true;
 | 
	
		
			
				|  |  |                 WlyyHospitalSysDictDO wlyyHospitalSysDictDO = wlyyHospitalSysDictDao.findById(ywCode);
 | 
	
		
			
				|  |  |                 String isCheckDoctorWork = "1";
 | 
	
		
			
				|  |  |                 if (wlyyHospitalSysDictDO!=null){
 | 
	
		
			
				|  |  |                     isCheckDoctorWork = wlyyHospitalSysDictDO.getDictValue();
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 if ("1".equalsIgnoreCase(isCheckDoctorWork)){
 | 
	
		
			
				|  |  |                     String sql = "SELECT " +
 | 
	
		
			
				|  |  |                             " d.id " +
 | 
	
		
			
				|  |  |                             " FROM " +
 | 
	
		
			
				|  |  |                             " base_doctor d " +
 | 
	
		
			
				|  |  |                             " WHERE " +
 | 
	
		
			
				|  |  |                             " d.id =:doctor " +
 | 
	
		
			
				|  |  |                             " AND ( " +
 | 
	
		
			
				|  |  |                             " EXISTS ( " +
 | 
	
		
			
				|  |  |                             "  SELECT " +
 | 
	
		
			
				|  |  |                             "   t.id " +
 | 
	
		
			
				|  |  |                             "  FROM " +
 | 
	
		
			
				|  |  |                             "   wlyy_doctor_work_time t " +
 | 
	
		
			
				|  |  |                             "  WHERE " +
 | 
	
		
			
				|  |  |                             "   t.doctor = d.id " +
 | 
	
		
			
				|  |  |                             "  AND t.start_time <=:startTime " +
 | 
	
		
			
				|  |  |                             "  AND t.end_time >=:endTime" +
 | 
	
		
			
				|  |  |                             " ) " +
 | 
	
		
			
				|  |  |                             " OR d.consult_status = '1' " +
 | 
	
		
			
				|  |  |                             ")";
 | 
	
		
			
				|  |  |                     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;
 | 
	
		
			
				|  |  |                     }else {
 | 
	
		
			
				|  |  |                         return false;
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }else {
 | 
	
		
			
				|  |  |                     return true;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }else {
 | 
	
		
			
				|  |  |             String sql = "SELECT " +
 |