|  | @ -1458,10 +1458,81 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
 | 
	
		
			
				|  |  |         return result;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      *老人家属首页实时监护信息
 | 
	
		
			
				|  |  |      * 居家状态取手表 无手表缺省
 | 
	
		
			
				|  |  |      * 监控
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONObject patientMonitoringInfo2(String patient){
 | 
	
		
			
				|  |  |         JSONObject result = new JSONObject();
 | 
	
		
			
				|  |  |         result.put("atHome",null);// 居家状态
 | 
	
		
			
				|  |  |         result.put("location",null);
 | 
	
		
			
				|  |  |         result.put("fences",null);
 | 
	
		
			
				|  |  |         result.put("gasLeakage",null);
 | 
	
		
			
				|  |  |         result.put("fire",null);
 | 
	
		
			
				|  |  |         result.put("fall",null);
 | 
	
		
			
				|  |  |         result.put("sleep",null);
 | 
	
		
			
				|  |  |         result.put("deviceSn",null);
 | 
	
		
			
				|  |  |         result.put("emeAssistance",false);
 | 
	
		
			
				|  |  |         result.put("monitorInfo",null);
 | 
	
		
			
				|  |  |         String sql = " select dict.code,count(ord.id) total from base_system_dict_entry dict LEFT JOIN base_security_monitoring_order ord " +
 | 
	
		
			
				|  |  |                 " on dict.code = ord.topic_item COLLATE utf8_unicode_ci and ord.status="+SecurityMonitoringOrderDO.Status.apply.getType()+" where dict.dict_code='service_item' " +
 | 
	
		
			
				|  |  |                 "and dict.remark='security' and ord.patient='"+patient+"' GROUP BY dict.code ";
 | 
	
		
			
				|  |  |         List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql);
 | 
	
		
			
				|  |  |         for (Map<String,Object>tmp:sqlResult){
 | 
	
		
			
				|  |  |             switch (tmp.get("code").toString()){
 | 
	
		
			
				|  |  |                 case "preventGasLeakage":
 | 
	
		
			
				|  |  |                     Integer count = Integer.parseInt(tmp.get("total").toString());
 | 
	
		
			
				|  |  |                     if (count>0){
 | 
	
		
			
				|  |  |                         result.put("gasLeakage",true);
 | 
	
		
			
				|  |  |                     }else {
 | 
	
		
			
				|  |  |                         result.put("gasLeakage",false);
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |                 case "preventFire":
 | 
	
		
			
				|  |  |                     count = Integer.parseInt(tmp.get("total").toString());
 | 
	
		
			
				|  |  |                     if (count>0){
 | 
	
		
			
				|  |  |                         result.put("fire",true);
 | 
	
		
			
				|  |  |                     }else {
 | 
	
		
			
				|  |  |                         result.put("fire",false);
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |                 case "preventFall":
 | 
	
		
			
				|  |  |                     count = Integer.parseInt(tmp.get("total").toString());
 | 
	
		
			
				|  |  |                     if (count>0){
 | 
	
		
			
				|  |  |                         result.put("fall",true);
 | 
	
		
			
				|  |  |                     }else {
 | 
	
		
			
				|  |  |                         result.put("fall",false);
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |                 case "preventOutOfBed":
 | 
	
		
			
				|  |  |                     count = Integer.parseInt(tmp.get("total").toString());
 | 
	
		
			
				|  |  |                     if (count>0){
 | 
	
		
			
				|  |  |                         result.put("sleep",true);
 | 
	
		
			
				|  |  |                     }else {
 | 
	
		
			
				|  |  |                         result.put("sleep",false);
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         sql = " select count(id) from base_emergency_assistance_order  where patient='"+patient+"' and status="+ EmergencyAssistanceDO.Status.apply.getType();
 | 
	
		
			
				|  |  |         Integer counnt = jdbcTemplate.queryForObject(sql,Integer.class);
 | 
	
		
			
				|  |  |         if (counnt>0){
 | 
	
		
			
				|  |  |             result.put("emeAssistance",true);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         List<DevicePatientDevice> devices4 = patientDeviceDao.findByUserAndCategoryCode(patient,"4");//手表
 | 
	
		
			
				|  |  |         if (devices4.size()>0){
 | 
	
		
			
				|  |  |             result =  patientSignTopicInfo(result,patient,"preventLost",devices4.get(0).getDeviceSn());
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         patientSignTopicInfo(result,patient,"preventFall",null);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return result;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public void preventLost(JSONObject result,String patient,String deviceSn){
 | 
	
		
			
				|  |  |         //手表与拐杖同时绑定时优先手表,围栏状态其中一个超出围栏即为超出围栏
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             Integer categoryCode=0;
 | 
	
		
			
				|  |  |             Integer categoryCode=0;//未指定设备
 | 
	
		
			
				|  |  |             List<DevicePatientDevice> devicePatientDeviceDos = new ArrayList<>();
 | 
	
		
			
				|  |  |             List<DevicePatientDevice> devicePatientDeviceDos2 = new ArrayList<>();
 | 
	
		
			
				|  |  |             if (StringUtils.isNotBlank(deviceSn)){//查看指定设备详情
 | 
	
	
		
			
				|  | @ -1476,11 +1547,11 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
 | 
	
		
			
				|  |  |                         devicePatientDeviceDos2 = devices;
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }else {
 | 
	
		
			
				|  |  |                 devicePatientDeviceDos = patientDeviceDao.findByUserAndCategoryCode(patient,"4");
 | 
	
		
			
				|  |  |                 devicePatientDeviceDos2 = patientDeviceDao.findByUserAndCategoryCode(patient,"16");
 | 
	
		
			
				|  |  |             }else {//未指定设备
 | 
	
		
			
				|  |  |                 devicePatientDeviceDos = patientDeviceDao.findByUserAndCategoryCode(patient,"4");//手表
 | 
	
		
			
				|  |  |                 devicePatientDeviceDos2 = patientDeviceDao.findByUserAndCategoryCode(patient,"16");//拐杖
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if (devicePatientDeviceDos.size()>0&&(4==categoryCode||0==categoryCode)){
 | 
	
		
			
				|  |  |             if (devicePatientDeviceDos.size()>0&&(4==categoryCode||0==categoryCode)){//手表
 | 
	
		
			
				|  |  |                 DevicePatientDevice device = devicePatientDeviceDos.get(0);
 | 
	
		
			
				|  |  |                 result.put("deviceSn",device.getDeviceSn());
 | 
	
		
			
				|  |  |                 JSONObject response= patientDeviceService.getAqgDeviceInfo2(device.getDeviceSn());
 | 
	
	
		
			
				|  | @ -1495,6 +1566,22 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
 | 
	
		
			
				|  |  |                         tmp.put("province",response.getString("last_province"));
 | 
	
		
			
				|  |  |                         tmp.put("address",response.getString("last_address"));
 | 
	
		
			
				|  |  |                         result.put("location",tmp);
 | 
	
		
			
				|  |  |                         BasePatientDO patientDO = basePatientDao.findById(patient);
 | 
	
		
			
				|  |  |                         if (null != patientDO){
 | 
	
		
			
				|  |  |                             if (StringUtils.isNotBlank(patientDO.getHomeLatLon())){
 | 
	
		
			
				|  |  |                                 String homeLatLon = patientDO.getHomeLatLon();
 | 
	
		
			
				|  |  |                                 double homeLat = Double.parseDouble( homeLatLon.split(",")[0]);
 | 
	
		
			
				|  |  |                                 double homeLon = Double.parseDouble( homeLatLon.split(",")[1]);
 | 
	
		
			
				|  |  |                                 double homeDistance =  countDistance.getDistance(result.getJSONObject("location").getDouble("lat"),result.getJSONObject("location").getDouble("lon"),
 | 
	
		
			
				|  |  |                                        homeLat,homeLon);
 | 
	
		
			
				|  |  |                                 if (homeDistance>50*1000){
 | 
	
		
			
				|  |  |                                     result.put("atHome",false);
 | 
	
		
			
				|  |  |                                 }else {
 | 
	
		
			
				|  |  |                                     result.put("atHome",true);
 | 
	
		
			
				|  |  |                                 }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                             }
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     //围栏信息
 | 
	
		
			
				|  |  |                     if (response.containsKey("fences")&&response.get("fences")!=null){
 | 
	
	
		
			
				|  | @ -1525,7 +1612,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if (devicePatientDeviceDos2.size()>0&&(16==categoryCode||0==categoryCode)) {
 | 
	
		
			
				|  |  |             if (devicePatientDeviceDos2.size()>0&&(16==categoryCode||0==categoryCode)) {//拐杖
 | 
	
		
			
				|  |  |                 DevicePatientDevice deviceDO = devicePatientDeviceDos2.get(0);
 | 
	
		
			
				|  |  |                 double dulat = 0l;
 | 
	
		
			
				|  |  |                 double dulon = 0l;
 | 
	
	
		
			
				|  | @ -1571,11 +1658,11 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
 | 
	
		
			
				|  |  |                             positionTmp.put("lon", areaLon);
 | 
	
		
			
				|  |  |                             fenceLocation.add(positionTmp);
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                         if (devicePatientDeviceDos2.size() > 0 && 0 == categoryCode) {
 | 
	
		
			
				|  |  |                         if (devicePatientDeviceDos2.size() > 0 && 0 == categoryCode && devicePatientDeviceDos2.size()>0) {
 | 
	
		
			
				|  |  |                             JSONObject obj = result.getJSONArray("fences").getJSONObject(0);
 | 
	
		
			
				|  |  |                             if (!obj.getBooleanValue("inFenceStatus")) {
 | 
	
		
			
				|  |  |                             if (obj.getBooleanValue("inFenceStatus")) {
 | 
	
		
			
				|  |  |                                 if (!countDistance.isInPolygon(dulon, dulat, fenceLocation)) {
 | 
	
		
			
				|  |  |                                     obj.put("inFenceStatus", false);
 | 
	
		
			
				|  |  |                                     obj.put("inFenceStatus", false);//超出围栏
 | 
	
		
			
				|  |  |                                     obj = result.getJSONObject("location");
 | 
	
		
			
				|  |  |                                     obj.put("address", address);
 | 
	
		
			
				|  |  |                                     obj.put("lon", dulon);
 | 
	
	
		
			
				|  | @ -1583,7 +1670,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
 | 
	
		
			
				|  |  |                                 }
 | 
	
		
			
				|  |  |                             }
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                         if (devicePatientDeviceDos2.size() > 0 && 16 == categoryCode) {
 | 
	
		
			
				|  |  |                         else if(devicePatientDeviceDos2.size() > 0) {//指定拐杖设备
 | 
	
		
			
				|  |  |                             if (StringUtils.isNotBlank(safeArea)) {
 | 
	
		
			
				|  |  |                                 result.put("deviceSn", deviceDO.getDeviceSn());
 | 
	
		
			
				|  |  |                                 JSONObject location = new JSONObject();
 |