|  | @ -30,6 +30,7 @@ import org.springframework.beans.factory.annotation.Value;
 | 
	
		
			
				|  |  | import org.springframework.data.redis.core.StringRedisTemplate;
 | 
	
		
			
				|  |  | import org.springframework.http.HttpEntity;
 | 
	
		
			
				|  |  | import org.springframework.http.HttpHeaders;
 | 
	
		
			
				|  |  | import org.springframework.http.HttpMethod;
 | 
	
		
			
				|  |  | import org.springframework.jdbc.core.JdbcTemplate;
 | 
	
		
			
				|  |  | import org.springframework.scheduling.annotation.Async;
 | 
	
		
			
				|  |  | import org.springframework.stereotype.Service;
 | 
	
	
		
			
				|  | @ -37,6 +38,7 @@ import org.springframework.util.LinkedMultiValueMap;
 | 
	
		
			
				|  |  | import org.springframework.util.MultiValueMap;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import javax.servlet.http.HttpServletRequest;
 | 
	
		
			
				|  |  | import java.text.MessageFormat;
 | 
	
		
			
				|  |  | import java.util.*;
 | 
	
		
			
				|  |  | import java.util.concurrent.TimeUnit;
 | 
	
		
			
				|  |  | 
 | 
	
	
		
			
				|  | @ -144,8 +146,14 @@ public class DeviceService {
 | 
	
		
			
				|  |  |     public void aqgsos(String imei,String label_mac,String time_begin, HttpServletRequest request) {
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             String address= request.getParameter("address");
 | 
	
		
			
				|  |  |             Double lat= Double.parseDouble(request.getParameter("lat"));
 | 
	
		
			
				|  |  |             Double lon= Double.parseDouble(request.getParameter("lon"));
 | 
	
		
			
				|  |  |             Double lat= null;
 | 
	
		
			
				|  |  |             Double lon= null;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             if (null==request.getParameter("lat")||null==request.getParameter("lon")){//呼叫时可能无该参数
 | 
	
		
			
				|  |  |             }else {
 | 
	
		
			
				|  |  |                 lat= Double.parseDouble(request.getParameter("lat"));
 | 
	
		
			
				|  |  |                 lon= Double.parseDouble(request.getParameter("lon"));
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByDeviceSn(imei);
 | 
	
		
			
				|  |  |             if (devicePatientDeviceDos.size()>0){
 | 
	
		
			
				|  |  |                 DevicePatientDevice deviceDO = devicePatientDeviceDos.get(0);
 | 
	
	
		
			
				|  | @ -158,10 +166,27 @@ public class DeviceService {
 | 
	
		
			
				|  |  |                 logDO.setDeviceSn(deviceDO.getDeviceSn());
 | 
	
		
			
				|  |  |                 logDO.setCreateTime(new Date());
 | 
	
		
			
				|  |  |                 if (deviceDO.getCategoryCode().equals("4")) {
 | 
	
		
			
				|  |  |                     JSONObject position = gpsUtil.gcj02_To_Bd09(lat,lon);
 | 
	
		
			
				|  |  |                     logDO.setSosAddress(address);
 | 
	
		
			
				|  |  |                     logDO.setSosLat(position.getDouble("lat")+"");
 | 
	
		
			
				|  |  |                     logDO.setSosLon(position.getDouble("lon")+"");
 | 
	
		
			
				|  |  |                     if (null==lat||null==lon){//获取最新定位
 | 
	
		
			
				|  |  |                         String url = cloudCareUrl+"cloudCare/noLogin/device/getDeviceLastLocation";
 | 
	
		
			
				|  |  |                         List<NameValuePair> params = new ArrayList<>();
 | 
	
		
			
				|  |  |                         params.add(new BasicNameValuePair("deviceSn", imei));
 | 
	
		
			
				|  |  |                         String response = httpClientUtil.get(url, params,"UTF-8");
 | 
	
		
			
				|  |  |                         JSONObject resObj = JSONObject.parseObject(response);
 | 
	
		
			
				|  |  |                         if (resObj.getInteger("status")==200){
 | 
	
		
			
				|  |  |                             lat = resObj.getJSONObject("data").getJSONObject("obj").getJSONObject("locationdata").getJSONObject("point").getDouble("lat");
 | 
	
		
			
				|  |  |                             lon = resObj.getJSONObject("data").getJSONObject("obj").getJSONObject("locationdata").getJSONObject("point").getDouble("lon");
 | 
	
		
			
				|  |  |                             address = resObj.getJSONObject("data").getJSONObject("obj").getJSONObject("locationdata").getString("address").replace(" ","");
 | 
	
		
			
				|  |  |                             logDO.setSosAddress(address);
 | 
	
		
			
				|  |  |                             logDO.setSosLat(lat+"");
 | 
	
		
			
				|  |  |                             logDO.setSosLon(lon+"");
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     else {
 | 
	
		
			
				|  |  |                         JSONObject position = gpsUtil.gcj02_To_Bd09(lat,lon);
 | 
	
		
			
				|  |  |                         logDO.setSosAddress(address);
 | 
	
		
			
				|  |  |                         logDO.setSosLat(position.getDouble("lat")+"");
 | 
	
		
			
				|  |  |                         logDO.setSosLon(position.getDouble("lon")+"");
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 if (deviceDO.getCategoryCode().equals("7")) {
 | 
	
		
			
				|  |  |                     logDO.setSosAddress(deviceDO.getSosAddress());
 | 
	
	
		
			
				|  | @ -620,6 +645,7 @@ public class DeviceService {
 | 
	
		
			
				|  |  |                                         planDetail.setBedStatus(1);
 | 
	
		
			
				|  |  |                                         planDetail.setBreath(breath);
 | 
	
		
			
				|  |  |                                         planDetail.setHeartRate(heartrate);
 | 
	
		
			
				|  |  |                                         sleepPlanDetailDao.save(planDetail);
 | 
	
		
			
				|  |  |                                         outBedOrder(null, timeDate,devicePatientDeviceDos.get(0), patient, device, "超时未起床", JSON.toJSONStringWithDateFormat(planDetail, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                         orderCreate = true;
 | 
	
		
			
				|  |  |                                     }
 | 
	
	
		
			
				|  | @ -634,6 +660,7 @@ public class DeviceService {
 | 
	
		
			
				|  |  |                                     if (timeDiffer>3600*siestaLongWarn*1000){
 | 
	
		
			
				|  |  |                                         planDetail.setSiestaStatus(0);
 | 
	
		
			
				|  |  |                                         planDetail.setBedStatus(0);
 | 
	
		
			
				|  |  |                                         sleepPlanDetailDao.save(planDetail);
 | 
	
		
			
				|  |  |                                         outBedOrder(null,timeDate,devicePatientDeviceDos.get(0),patient,device,"超时未午睡",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                         orderCreate=true;
 | 
	
		
			
				|  |  |                                     }
 | 
	
	
		
			
				|  | @ -658,6 +685,7 @@ public class DeviceService {
 | 
	
		
			
				|  |  |                                             planDetail.setSiestaTimeEnd(timeDate);//设置临时结束时间但不计算时长 避免重复发起工单
 | 
	
		
			
				|  |  |                                             planDetail.setBreath(breath);
 | 
	
		
			
				|  |  |                                             planDetail.setHeartRate(heartrate);
 | 
	
		
			
				|  |  |                                             sleepPlanDetailDao.save(planDetail);
 | 
	
		
			
				|  |  |                                             outBedOrder(null,timeDate,devicePatientDeviceDos.get(0),patient,device,"午睡超时未起床",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                             orderCreate=true;
 | 
	
		
			
				|  |  |                                         }
 | 
	
	
		
			
				|  | @ -698,6 +726,7 @@ public class DeviceService {
 | 
	
		
			
				|  |  |                                         planDetail.setInStatus(0);
 | 
	
		
			
				|  |  |                                         planDetail.setBedStatus(1);
 | 
	
		
			
				|  |  |                                         planDetail.setSleepNightRecordList(nightRecord.findBySnPaTime(device,patient,dayTime));
 | 
	
		
			
				|  |  |                                         sleepPlanDetailDao.save(planDetail);
 | 
	
		
			
				|  |  |                                         outBedOrder(null,timeDate,devicePatientDeviceDos.get(0),patient,device,"超时未上床晚休",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                         orderCreate=true;
 | 
	
		
			
				|  |  |                                     }
 | 
	
	
		
			
				|  | @ -716,6 +745,7 @@ public class DeviceService {
 | 
	
		
			
				|  |  |                                         if (timeDiffer>3600*nightLongWarn*1000&&0==records.get(0).getStatus()){//超过2未回床小时 触发工单
 | 
	
		
			
				|  |  |                                             planDetail.setSleepNightRecordList(nightRecord.findBySnPaTime(device,patient,dayTime));
 | 
	
		
			
				|  |  |                                             planDetail.setBedStatus(0);
 | 
	
		
			
				|  |  |                                             sleepPlanDetailDao.save(planDetail);
 | 
	
		
			
				|  |  |                                             outBedOrder(records.get(0),timeDate,devicePatientDeviceDos.get(0),patient,device,"起夜超时未回床",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |                                             orderCreate=true;
 | 
	
		
			
				|  |  |                                         }
 | 
	
	
		
			
				|  | @ -877,6 +907,13 @@ public class DeviceService {
 | 
	
		
			
				|  |  |     @Async
 | 
	
		
			
				|  |  |     public void byOnlineStatus(String device,String onlinestatu,String time_begin){
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             if(StringUtils.isNotBlank(device)){
 | 
	
		
			
				|  |  |                 List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByDeviceSn(device);
 | 
	
		
			
				|  |  |                 if (devicePatientDeviceDos.size()>0){
 | 
	
		
			
				|  |  |                     DevicePatientDevice tmp = devicePatientDeviceDos.get(0);
 | 
	
		
			
				|  |  |                     patientDeviceDao.save(tmp);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             DeviceDetail deviceDetail = deviceDetailDao.findBySn(device);
 | 
	
		
			
				|  |  |             if(deviceDetail!=null){
 | 
	
		
			
				|  |  |                 deviceDetail.setContactStatus(Integer.parseInt(onlinestatu));
 | 
	
	
		
			
				|  | @ -894,9 +931,69 @@ public class DeviceService {
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public static void main(String[] args) {
 | 
	
		
			
				|  |  |         String ss="123123,2323";
 | 
	
		
			
				|  |  |         System.out.println(String.join(",",ss));
 | 
	
		
			
				|  |  |     //睡眠带心率呼吸数据
 | 
	
		
			
				|  |  |     @Async
 | 
	
		
			
				|  |  |     public void sleepHealthIndex(String device,String heartrate,String breath,String time_begin) {
 | 
	
		
			
				|  |  |         List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByDeviceSn(device);
 | 
	
		
			
				|  |  |         if (devicePatientDeviceDos.size() > 0) {
 | 
	
		
			
				|  |  |             Integer theshold_breath_h = 25;
 | 
	
		
			
				|  |  |             Integer theshold_breath_l = 8;
 | 
	
		
			
				|  |  |             Integer theshold_heartrate_h = 100;
 | 
	
		
			
				|  |  |             Integer theshold_heartrate_l = 50;
 | 
	
		
			
				|  |  |             if (StringUtils.isNotBlank(heartrate)) {
 | 
	
		
			
				|  |  |                 if (!"0".equals(heartrate)) {
 | 
	
		
			
				|  |  |                     DevicePatientDevice devicePatientDevice = devicePatientDeviceDos.get(0);
 | 
	
		
			
				|  |  |                     BasePatientDO patientDO = patientDao.findById(devicePatientDevice.getUser());
 | 
	
		
			
				|  |  |                     DevicePatientHealthIndex patientHealthIndex = new DevicePatientHealthIndex();
 | 
	
		
			
				|  |  |                     patientHealthIndex.setName(patientDO.getName());
 | 
	
		
			
				|  |  |                     patientHealthIndex.setDeviceSn(device);
 | 
	
		
			
				|  |  |                     patientHealthIndex.setUser(devicePatientDevice.getUser());
 | 
	
		
			
				|  |  |                     patientHealthIndex.setIdcard(devicePatientDevice.getUserIdcard());
 | 
	
		
			
				|  |  |                     patientHealthIndex.setValue1(heartrate + "");
 | 
	
		
			
				|  |  |                     patientHealthIndex.setType(5);
 | 
	
		
			
				|  |  |                     Date recordDate = DateUtil.strToDate(time_begin);
 | 
	
		
			
				|  |  |                     patientHealthIndex.setRecordDate(recordDate);
 | 
	
		
			
				|  |  |                     patientHealthIndex.setSortDate(recordDate);
 | 
	
		
			
				|  |  |                     patientHealthIndex.setCzrq(new Date());
 | 
	
		
			
				|  |  |                     patientHealthIndex.setStatus(0);
 | 
	
		
			
				|  |  |                     Integer heartrate1 = Integer.parseInt(heartrate);
 | 
	
		
			
				|  |  |                     if (heartrate1>theshold_heartrate_h||theshold_heartrate_h<theshold_heartrate_l){
 | 
	
		
			
				|  |  |                         patientHealthIndex.setStatus(1);
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     else {
 | 
	
		
			
				|  |  |                         patientHealthIndex.setStatus(0);
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     patientHealthIndex.setDel("1");
 | 
	
		
			
				|  |  |                     healthIndexDao.save(patientHealthIndex);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if (StringUtils.isNotBlank(breath)){
 | 
	
		
			
				|  |  |                 if (!"0".equals(breath)){
 | 
	
		
			
				|  |  |                     DevicePatientDevice devicePatientDevice = devicePatientDeviceDos.get(0);
 | 
	
		
			
				|  |  |                     BasePatientDO patientDO = patientDao.findById(devicePatientDevice.getUser());
 | 
	
		
			
				|  |  |                     DevicePatientHealthIndex patientHealthIndex = new DevicePatientHealthIndex();
 | 
	
		
			
				|  |  |                     patientHealthIndex.setName(patientDO.getName());
 | 
	
		
			
				|  |  |                     patientHealthIndex.setDeviceSn(device);
 | 
	
		
			
				|  |  |                     patientHealthIndex.setUser(devicePatientDevice.getUser());
 | 
	
		
			
				|  |  |                     patientHealthIndex.setIdcard(devicePatientDevice.getUserIdcard());
 | 
	
		
			
				|  |  |                     patientHealthIndex.setValue1(heartrate + "");
 | 
	
		
			
				|  |  |                     patientHealthIndex.setType(7);
 | 
	
		
			
				|  |  |                     Date recordDate = DateUtil.strToDate(time_begin);
 | 
	
		
			
				|  |  |                     patientHealthIndex.setRecordDate(recordDate);
 | 
	
		
			
				|  |  |                     patientHealthIndex.setSortDate(recordDate);
 | 
	
		
			
				|  |  |                     patientHealthIndex.setCzrq(new Date());
 | 
	
		
			
				|  |  |                     Integer breath1 = Integer.parseInt(breath);
 | 
	
		
			
				|  |  |                     if (breath1>theshold_breath_h||breath1<theshold_breath_l){
 | 
	
		
			
				|  |  |                         patientHealthIndex.setStatus(1);
 | 
	
		
			
				|  |  |                     }else {
 | 
	
		
			
				|  |  |                         patientHealthIndex.setStatus(0);
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     patientHealthIndex.setStatus(0);
 | 
	
		
			
				|  |  |                     patientHealthIndex.setDel("1");
 | 
	
		
			
				|  |  |                     healthIndexDao.save(patientHealthIndex);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | }
 |