|  | @ -571,13 +571,10 @@ public class DeviceService {
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     if (null!=sleepPlan){
 | 
	
		
			
				|  |  |                         Date timeDate = DateUtil.strToDate(time_begin);//当前时间
 | 
	
		
			
				|  |  |                         //12点以后
 | 
	
		
			
				|  |  |                         Calendar today = Calendar.getInstance();
 | 
	
		
			
				|  |  |                         today.set(Calendar.HOUR_OF_DAY, 4);
 | 
	
		
			
				|  |  |                         today.set(Calendar.MINUTE, 59);
 | 
	
		
			
				|  |  |                         today.set(Calendar.SECOND, 59);
 | 
	
		
			
				|  |  |                         today.set(Calendar.MILLISECOND, 999);
 | 
	
		
			
				|  |  |                         Date bedUp = DateUtil.strToDate(DateUtil.getStringDateShort()+" "+sleepPlan.getGetUpTime());// 起床时间 起床前一小时内算为起床
 | 
	
		
			
				|  |  |                         Date bedUp = DateUtil.strToDate(DateUtil.getStringDateShort()+" "+sleepPlan.getGetUpTime()+":00");// 起床时间 起床前一小时内算为起床
 | 
	
		
			
				|  |  |                         if (timeDate.before(bedUp)){
 | 
	
		
			
				|  |  |                             bedUp = DateUtil.getNextDay1(bedUp,-1);
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                         Date bedUpBegin = DateUtil.getNextMin(bedUp,-60);//起床时间 起床前一小时内算为起床
 | 
	
		
			
				|  |  |                         Date bedUpEnd = DateUtil.getNextMin(bedUp,60*3);//起床时间 起床后一小时内算为起床
 | 
	
		
			
				|  |  |                         boolean needSiesta=false;// 是否有午睡习惯
 | 
	
	
		
			
				|  | @ -585,18 +582,18 @@ public class DeviceService {
 | 
	
		
			
				|  |  |                         Date SiestaBegin = null;// 午睡开始时间
 | 
	
		
			
				|  |  |                         if (StringUtils.isNotBlank(sleepPlan.getNapTime())){
 | 
	
		
			
				|  |  |                             needSiesta=true;
 | 
	
		
			
				|  |  |                             SiestaTime = DateUtil.strToDate(DateUtil.getStringDateShort()+" "+sleepPlan.getNapTime());
 | 
	
		
			
				|  |  |                             SiestaTime = DateUtil.strToDate(DateUtil.getStringDateShort()+" "+sleepPlan.getNapTime()+":00");
 | 
	
		
			
				|  |  |                             SiestaBegin = DateUtil.getNextMin(SiestaTime,-60);// 午睡开始时间
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                         String dayTime = DateUtil.dateToStr(bedUp,DateUtil.YYYY_MM_DD);//监测日期
 | 
	
		
			
				|  |  |                         String inTime = sleepPlan.getNightRestTime();
 | 
	
		
			
				|  |  |                         Date bedIn = null;// 入睡时间
 | 
	
		
			
				|  |  |                         Date bedBegin = null;// 入睡开始时间
 | 
	
		
			
				|  |  |                         String dayTime = DateUtil.dateToStr(bedUp,DateUtil.YYYY_MM_DD);//监测日期
 | 
	
		
			
				|  |  |                         if (inTime.charAt(0)=='0') {
 | 
	
		
			
				|  |  |                             bedIn = DateUtil.strToDate(dayTime+" "+sleepPlan.getNightRestTime());
 | 
	
		
			
				|  |  |                             bedIn = DateUtil.strToDate(dayTime+" "+sleepPlan.getNightRestTime()+":00");
 | 
	
		
			
				|  |  |                             bedIn = DateUtil.getNextDay1(bedIn,1);
 | 
	
		
			
				|  |  |                         }else {
 | 
	
		
			
				|  |  |                             bedIn = DateUtil.strToDate(dayTime+" "+sleepPlan.getNightRestTime());
 | 
	
		
			
				|  |  |                             bedIn = DateUtil.strToDate(dayTime+" "+sleepPlan.getNightRestTime()+":00");
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                         bedBegin = DateUtil.getNextMin(bedIn,-60*2);
 | 
	
		
			
				|  |  |                         List<BaseSleepPlanDetail> planDetails = sleepPlanDetailDao.findByDay(dayTime);
 | 
	
	
		
			
				|  | @ -625,7 +622,7 @@ public class DeviceService {
 | 
	
		
			
				|  |  |                                         planDetail.setBedStatus(0);
 | 
	
		
			
				|  |  |                                         planDetail.setBreath(breath);
 | 
	
		
			
				|  |  |                                         planDetail.setHeartRate(heartrate);
 | 
	
		
			
				|  |  |                                         outBedOrder(null,devicePatientDeviceDos.get(0),patient,device,"超时未起床",JSON.toJSONString(planDetail,SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                         outBedOrder(null,devicePatientDeviceDos.get(0),patient,device,"超时未起床",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                         orderCreate=true;
 | 
	
		
			
				|  |  |                                     }
 | 
	
		
			
				|  |  |                                 }
 | 
	
	
		
			
				|  | @ -634,20 +631,21 @@ public class DeviceService {
 | 
	
		
			
				|  |  |                         /***午睡***/
 | 
	
		
			
				|  |  |                         if(needSiesta&&DateUtil.isInArea(timeDate,SiestaBegin,bedIn)){//午睡时段
 | 
	
		
			
				|  |  |                             if ("0".equals(bed_status)){
 | 
	
		
			
				|  |  |                                 if(1==planDetail.getSiestaStatus()&&null==planDetail.getSiestaTimeEnd()){//午睡起床
 | 
	
		
			
				|  |  |                                     planDetail.setSiestaTimeEnd(timeDate);
 | 
	
		
			
				|  |  |                                     timeDiffer = (planDetail.getSiestaTimeEnd().getTime()-planDetail.getSiestaTimeBegin().getTime())/1000;
 | 
	
		
			
				|  |  |                                     planDetail.setSiestaLong(timeDiffer+"");
 | 
	
		
			
				|  |  |                                 }
 | 
	
		
			
				|  |  |                                 else if (null==planDetail.getSiestaStatus()){//超时未午睡午睡
 | 
	
		
			
				|  |  |                                 if (null==planDetail.getSiestaStatus()){//超时未午睡午睡
 | 
	
		
			
				|  |  |                                     timeDiffer = timeDate.getTime() - SiestaTime.getTime();
 | 
	
		
			
				|  |  |                                     if (0<timeDiffer&&timeDiffer<3600*siestaLongWarn*1000){
 | 
	
		
			
				|  |  |                                     if (timeDiffer>3600*siestaLongWarn*1000){
 | 
	
		
			
				|  |  |                                         planDetail.setSiestaStatus(0);
 | 
	
		
			
				|  |  |                                         planDetail.setBedStatus(0);
 | 
	
		
			
				|  |  |                                         outBedOrder(null,devicePatientDeviceDos.get(0),patient,device,"超时未午睡",JSON.toJSONString(planDetail,SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                         outBedOrder(null,devicePatientDeviceDos.get(0),patient,device,"超时未午睡",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                         orderCreate=true;
 | 
	
		
			
				|  |  |                                     }
 | 
	
		
			
				|  |  |                                 }
 | 
	
		
			
				|  |  |                                 else if(1 == planDetail.getSiestaStatus()&&null==planDetail.getSiestaTimeEnd()){//午睡起床
 | 
	
		
			
				|  |  |                                     planDetail.setSiestaTimeEnd(timeDate);
 | 
	
		
			
				|  |  |                                     timeDiffer = (planDetail.getSiestaTimeEnd().getTime()-planDetail.getSiestaTimeBegin().getTime())/1000;
 | 
	
		
			
				|  |  |                                     planDetail.setSiestaLong(timeDiffer+"");
 | 
	
		
			
				|  |  |                                 }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                             }
 | 
	
		
			
				|  |  |                             if ("1".equals(bed_status)){
 | 
	
		
			
				|  |  |                                 if (null==planDetail.getSiestaStatus()){
 | 
	
	
		
			
				|  | @ -660,7 +658,7 @@ public class DeviceService {
 | 
	
		
			
				|  |  |                                         planDetail.setBedStatus(0);
 | 
	
		
			
				|  |  |                                         planDetail.setBreath(breath);
 | 
	
		
			
				|  |  |                                         planDetail.setHeartRate(heartrate);
 | 
	
		
			
				|  |  |                                         outBedOrder(null,devicePatientDeviceDos.get(0),patient,device,"午睡超时未起床",JSON.toJSONString(planDetail,SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                         outBedOrder(null,devicePatientDeviceDos.get(0),patient,device,"午睡超时未起床",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                         orderCreate=true;
 | 
	
		
			
				|  |  |                                     }
 | 
	
		
			
				|  |  |                                 }
 | 
	
	
		
			
				|  | @ -668,7 +666,7 @@ public class DeviceService {
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                         /**晚休***/
 | 
	
		
			
				|  |  |                         timeDiffer = timeDate.getTime() - bedBegin.getTime();
 | 
	
		
			
				|  |  |                         if (timeDiffer>0&&timeDate.before(bedUp)){ //起夜记录
 | 
	
		
			
				|  |  |                         if (timeDiffer>0&&timeDate.after(bedBegin)){ //起夜记录
 | 
	
		
			
				|  |  |                             BaseSleepNightRecord record = new BaseSleepNightRecord();
 | 
	
		
			
				|  |  |                             if ("1".equals(bed_status)){
 | 
	
		
			
				|  |  |                                 if (null==planDetail.getInStatus()){
 | 
	
	
		
			
				|  | @ -690,7 +688,17 @@ public class DeviceService {
 | 
	
		
			
				|  |  |                             }
 | 
	
		
			
				|  |  |                             if ("0".equals(bed_status)){//离床
 | 
	
		
			
				|  |  |                                 List<BaseSleepNightRecord> records = nightRecord.findBySnStaPaTime(device,patient,0,bedIn);
 | 
	
		
			
				|  |  |                                 if (1==planDetail.getInStatus()){
 | 
	
		
			
				|  |  |                                 if(null==planDetail.getInStatus()){
 | 
	
		
			
				|  |  |                                     timeDiffer = timeDate.getTime() - bedIn.getTime();
 | 
	
		
			
				|  |  |                                     if (timeDiffer>3600*nightLongWarn*1000){
 | 
	
		
			
				|  |  |                                         planDetail.setInStatus(0);
 | 
	
		
			
				|  |  |                                         planDetail.setBedStatus(1);
 | 
	
		
			
				|  |  |                                         planDetail.setSleepNightRecordList(records);
 | 
	
		
			
				|  |  |                                         outBedOrder(null,devicePatientDeviceDos.get(0),patient,device,"超时未上床晚休",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                         orderCreate=true;
 | 
	
		
			
				|  |  |                                     }
 | 
	
		
			
				|  |  |                                 }
 | 
	
		
			
				|  |  |                                 else if (1==planDetail.getInStatus()){
 | 
	
		
			
				|  |  |                                     if (records.size()==0){
 | 
	
		
			
				|  |  |                                         record.setPatient(devicePatientDeviceDos.get(0).getUser());
 | 
	
		
			
				|  |  |                                         record.setDeviceSn(device);
 | 
	
	
		
			
				|  | @ -704,18 +712,10 @@ public class DeviceService {
 | 
	
		
			
				|  |  |                                         if (timeDiffer>3600*nightLongWarn*1000){//超过2未回床小时 触发工单
 | 
	
		
			
				|  |  |                                             planDetail.setSleepNightRecordList(records);
 | 
	
		
			
				|  |  |                                             planDetail.setBedStatus(0);
 | 
	
		
			
				|  |  |                                             outBedOrder(records.get(0),devicePatientDeviceDos.get(0),patient,device,"起夜超时未回床",JSON.toJSONString(planDetail,SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                             outBedOrder(records.get(0),devicePatientDeviceDos.get(0),patient,device,"起夜超时未回床",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                             orderCreate=true;
 | 
	
		
			
				|  |  |                                         }
 | 
	
		
			
				|  |  |                                     }
 | 
	
		
			
				|  |  |                                 }else if(null==planDetail.getInStatus()){
 | 
	
		
			
				|  |  |                                     timeDiffer = timeDate.getTime() - bedIn.getTime();
 | 
	
		
			
				|  |  |                                     if (0<timeDiffer&&timeDiffer<3600*nightLongWarn*1000){
 | 
	
		
			
				|  |  |                                         planDetail.setSiestaStatus(0);
 | 
	
		
			
				|  |  |                                         planDetail.setBedStatus(1);
 | 
	
		
			
				|  |  |                                         outBedOrder(null,devicePatientDeviceDos.get(0),patient,device,"超时未上床晚休",JSON.toJSONString(planDetail,SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                         orderCreate=true;
 | 
	
		
			
				|  |  |                                     }
 | 
	
		
			
				|  |  |                                 }
 | 
	
		
			
				|  |  |                             }
 | 
	
		
			
				|  |  |                         }
 | 
	
	
		
			
				|  | @ -735,7 +735,7 @@ public class DeviceService {
 | 
	
		
			
				|  |  |                                     planDetail.setBreath(breath);
 | 
	
		
			
				|  |  |                                     planDetail.setHeartRate(heartrate);
 | 
	
		
			
				|  |  |                                     planDetail.setBedStatus(1);
 | 
	
		
			
				|  |  |                                     outBedOrder(null,devicePatientDeviceDos.get(0),patient,device,"心率和呼吸频率异常",JSON.toJSONString(planDetail,SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                     outBedOrder(null,devicePatientDeviceDos.get(0),patient,device,"心率和呼吸频率异常",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                     return null;
 | 
	
		
			
				|  |  |                                 }
 | 
	
		
			
				|  |  |                             }
 | 
	
	
		
			
				|  | @ -745,7 +745,7 @@ public class DeviceService {
 | 
	
		
			
				|  |  |                                     planDetail.setBreath(breath);
 | 
	
		
			
				|  |  |                                     planDetail.setHeartRate(heartrate);
 | 
	
		
			
				|  |  |                                     planDetail.setBedStatus(1);
 | 
	
		
			
				|  |  |                                     outBedOrder(null,devicePatientDeviceDos.get(0),patient,device,"心率和呼吸频率异常",JSON.toJSONString(planDetail,SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                     outBedOrder(null,devicePatientDeviceDos.get(0),patient,device,"心率和呼吸频率异常",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                     return null;
 | 
	
		
			
				|  |  |                                 }
 | 
	
		
			
				|  |  |                             }
 |