Bläddra i källkod

Merge branch 'dev' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into baseCopy1

wangjun 3 år sedan
förälder
incheckning
3b4e2f7c81

+ 11 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/DetectionPlatformEndpoint.java

@ -55,6 +55,17 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "getRealTimeData")
    @ApiOperation(value = "实时数据")
    public ObjEnvelop getRealTimeData(){
        try {
            JSONObject o = platformService.getRealTimeData();
            return success(o);
        }catch (Exception e){
            return failedObjEnvelopException(e);
        }
    }
    @GetMapping(value = "getDeviceType")
    @ApiOperation(value = "设备类型")
    public ListEnvelop getDeviceType(){

+ 22 - 24
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/contacts/ContactsService.java

@ -259,37 +259,35 @@ public class ContactsService {
        }
        if (1==operType){//新增联系人
            list = sosContactsDao.findByPatientAndDel(patient,1);
            Integer seqid=1;
            Integer seqid=0;
            if (list.size()>=2){
                result.put(ResponseContant.resultFlag,ResponseContant.fail);
                result.put(ResponseContant.resultMsg,"该用户紧急联系人已上线");
                return result;
            }
            else {
                if (list.size()>0){
                    seqid = list.get(0).getPhoneSeqid();
                List<String> sosContacts =list.stream().map(PatientSosContactsDO::getSosPhone).collect(Collectors.toList());
                if (!sosContacts.contains(num)){
                    result.put(ResponseContant.resultFlag,ResponseContant.fail);
                    result.put(ResponseContant.resultMsg,"该用户紧急联系人已上限");
                    return result;
                }
                PatientSosContactsDO contactsDO = new PatientSosContactsDO();
                list = sosContactsDao.findByPatientAndDel(patient,0);
                if (list.size()>0) {
                    contactsDO =list.get(0);
                }
                else {
                    contactsDO.setPhoneSeqid(1==seqid?2:1);
                }
                contactsDO.setDel(1);
                contactsDO.setPatient(patient);
                contactsDO.setSosName(name);
                contactsDO.setSosPhone(num);
                contactsDO.setRelation(Integer.parseInt(relation));
                contactsDO.setSuccessFlag(0);
                sosContactsDao.save(contactsDO);
            }
            if (list.size()>0){
                seqid = list.get(0).getPhoneSeqid();
            }
            PatientSosContactsDO contactsDO = sosContactsDao.findByPatientAndSosPhone(patient,num);
            if(null==contactsDO){
                contactsDO = new PatientSosContactsDO();
                contactsDO.setPhoneSeqid(1==seqid?2:1);
            }
            contactsDO.setDel(1);
            contactsDO.setPatient(patient);
            contactsDO.setSosName(name);
            contactsDO.setSosPhone(num);
            contactsDO.setRelation(Integer.parseInt(relation));
            contactsDO.setSuccessFlag(0);
            sosContactsDao.save(contactsDO);
        }
        result.put(ResponseContant.resultFlag,ResponseContant.success);
        result.put(ResponseContant.resultMsg,"修改成功");
        return result;
    }
    public void delSosNumber(List<Map<String,Object>> sims,String patient,String[] numTmp) {

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/DeviceDetailService.java

@ -169,7 +169,7 @@ public class DeviceDetailService extends BaseJpaService<DeviceDetail, DeviceDeta
			deviceDetail.setApplicantTel(doctor.getMobile());
			deviceDetail.setApplicantMail(doctor.getMobile());
		}
		deviceDetailDao.save(deviceDetail);
		return deviceDetailDao.save(deviceDetail);
	}
	/**

+ 24 - 8
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/statistics/DetectionPlatformService.java

@ -120,17 +120,33 @@ public class DetectionPlatformService  {
        object.put("lawOfIOT",getRange( (securityIsUser.intValue() + healthIsUser.intValue() ),( securityAllCount.intValue() + healthAllCount.intValue()  ) ));//物联率
        object.put("isUseAllIot",(securityIsUser.intValue() + healthIsUser.intValue()));//已发放设备
        object.put("allIot",securityAllCount.intValue() + healthAllCount.intValue());//总设备
//        String unUseSql = "";//连续一周为上传数据
//        List<Map<String , Object>> unUseList = jdbcTemplate.queryForList(unUseSql);
//        Long unUseCount = (Long) securityList.get(0).get("allCount");
////        if (unUseList.size() > 0){
////            unUseCount = (Long) securityList.get(0).get("allCount");
////        }
//        object.put("lostLaw",getRange(unUseCount.intValue(),securityIsUser.intValue() + healthIsUser.intValue()));//设备失联率
        object.put("lostLaw","0%");//设备失联率
        String unUseSql = "SELECT * FROM wlyy_devices WHERE is_binding = 1 AND contact_status = 0";//contact_status = 0   失联
        List<Map<String , Object>> unUseList = jdbcTemplate.queryForList(unUseSql);
        int unUseCount = unUseList.size();
        object.put("unUseCount",unUseCount);//设备失联数量
        object.put("lostLaw",getRange(unUseCount,(securityIsUser.intValue() + healthIsUser.intValue())));//设备失联率    失联设备/已发放设备
        return object;
    }
    public JSONObject getRealTimeData(){
        JSONObject object = new JSONObject();
        String getMonitorPhysicalSignsSql = "SELECT COUNT(1) FROM wlyy_patient_health_index WHERE (type = 1 or type = 2) AND del = 1";
        Integer getMonitorPhysicalSignsCount = jdbcTemplate.queryForObject(getMonitorPhysicalSignsSql,Integer.class);
        object.put("getMonitorPhysicalSignsCount",getMonitorPhysicalSignsCount);      //监测体征
        String getAbnormalSignsSql = "SELECT COUNT(1) FROM wlyy_patient_health_index WHERE (type = 1 or type = 2) AND del = 1 AND status = 1";
        Integer getAbnormalSignsCount = jdbcTemplate.queryForObject(getAbnormalSignsSql,Integer.class);
        object.put("getAbnormalSignsCount",getAbnormalSignsCount);      //异常体征
        String getGiveEarlyWarningSql = "SELECT COUNT(1) FROM base_security_monitoring_order";
        Integer getGiveEarlyWarningCount = jdbcTemplate.queryForObject(getGiveEarlyWarningSql,Integer.class);
        object.put("getGiveEarlyWarningCount",getGiveEarlyWarningCount);      //预警次数
        String getBaseDeviceHealthIndexSql = "SELECT COUNT(1) FROM base_device_health_index";  //烟感气感数据上传次数
        Integer getBaseDeviceHealthIndexCount = jdbcTemplate.queryForObject(getBaseDeviceHealthIndexSql,Integer.class);
        String getBaseYxdeviceIndexSql = "SELECT COUNT(1) FROM base_yxdevice_index";    //拐杖数据上传
        Integer getBaseYxdeviceIndexCount = jdbcTemplate.queryForObject(getBaseYxdeviceIndexSql,Integer.class);
        Integer getExamineIndexSum = getGiveEarlyWarningCount + getBaseDeviceHealthIndexCount + getBaseYxdeviceIndexCount;
        object.put("getExamineIndexSum",getExamineIndexSum);      //监测指标
        return object;
    }
    public String getRange(int first, int second) {
        if (second == 0 && first > 0) {

+ 3 - 0
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/dao/device/BaseSleepNightRecordDao.java

@ -20,4 +20,7 @@ public interface BaseSleepNightRecordDao extends PagingAndSortingRepository<Base
    @Query(value = "select r from BaseSleepNightRecord r where r.deviceSn=?1 and r.patient=?2 and r.status=?3 and r.createTime>?4 and r.day=?5 order by r.createTime desc")
    List<BaseSleepNightRecord> findBySnStaPaTime(String deviceSn,String patient,Integer status, Date benIn,String day);
    @Query(value = "select r from BaseSleepNightRecord r where r.deviceSn=?1 and r.patient=?2 and r.day=?3 order by r.createTime desc")
    List<BaseSleepNightRecord> findBySnPaTime(String deviceSn,String patient,String day);
}

+ 60 - 56
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/DeviceService.java

@ -139,63 +139,65 @@ public class DeviceService {
            Double lat= Double.parseDouble(request.getParameter("lat"));
            Double lon= Double.parseDouble(request.getParameter("lon"));
            List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByDeviceSn(imei);
            DevicePatientDevice deviceDO = devicePatientDeviceDos.get(0);
            BasePatientDO patientDO = patientDao.findById(deviceDO.getUser());
            DeviceSosLogDO logDO = new DeviceSosLogDO();
            logDO.setPatient(patientDO.getId());
            logDO.setPatientName(patientDO.getName());
            logDO.setIdcard(patientDO.getIdcard());
            logDO.setCategoryCode(deviceDO.getCategoryCode());
            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 (deviceDO.getCategoryCode().equals("7")) {
                logDO.setSosAddress(deviceDO.getSosAddress());
                Map<String, String> json = null;
                if (StringUtils.isNotBlank(deviceDO.getSosAddress())) {
                    json = LatitudeUtils.getGeocoderLatitude(deviceDO.getSosAddress().replace("G.", "").replace("(糖友网)", "").replace("(高友网)", ""));
                }
                if (json != null) {
                    logDO.setSosLat(json.get("lat").toString());
                    logDO.setSosLon(json.get("lng").toString());
                }
            }
            //发送紧急救助
            String sql =" select Distinct pack.org_code,pack.org_name\n" +
                    "from base_service_package_sign_record sr INNER JOIN base_service_package_record pr\n" +
                    "on sr.id = pr.sign_id and sr.status=1 INNER JOIN base_service_package_item item on pr.service_package_id = item.service_package_id and item.del=1 \n" +
                    "INNER JOIN base_service_package pack pack on pr.service_package_id = pack.id where item.code='emergencyAssistance' and sr.patient='"+patientDO.getId()+"'";
            List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql);
            if (sqlResult.size()>0){
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("serveAddress",logDO.getSosAddress());
                jsonObject.put("serveLon",logDO.getSosLon());
                jsonObject.put("serveLat",logDO.getSosLat());
                jsonObject.put("orgCode",sqlResult.get(0).get("org_code").toString());
                jsonObject.put("orgName",sqlResult.get(0).get("org_name").toString());
                jsonObject.put("patient",logDO.getPatient());
                jsonObject.put("patientName",logDO.getPatientName());
                jsonObject.put("deviceSn",logDO.getDeviceSn());
                String url = cloudCareUrl+"cloudCare/noLogin/emergency_assistance/newOrder";
                List<NameValuePair> params = new ArrayList<>();
                params.add(new BasicNameValuePair("jsonData", jsonObject.toJSONString()));
                params.add(new BasicNameValuePair("patientId", logDO.getPatient()));
            if (devicePatientDeviceDos.size()>0){
                DevicePatientDevice deviceDO = devicePatientDeviceDos.get(0);
                BasePatientDO patientDO = patientDao.findById(deviceDO.getUser());
                DeviceSosLogDO logDO = new DeviceSosLogDO();
                logDO.setPatient(patientDO.getId());
                logDO.setPatientName(patientDO.getName());
                logDO.setIdcard(patientDO.getIdcard());
                logDO.setCategoryCode(deviceDO.getCategoryCode());
                logDO.setDeviceSn(deviceDO.getDeviceSn());
                logDO.setCreateTime(new Date());
                if (deviceDO.getCategoryCode().equals("4")) {
                    params.add(new BasicNameValuePair("orderSource", "2"));//工单来源工单发起来源状态 1APP 2手环 3居家报警
                    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")) {
                    params.add(new BasicNameValuePair("orderSource", "3"));
                    logDO.setSosAddress(deviceDO.getSosAddress());
                    Map<String, String> json = null;
                    if (StringUtils.isNotBlank(deviceDO.getSosAddress())) {
                        json = LatitudeUtils.getGeocoderLatitude(deviceDO.getSosAddress().replace("G.", "").replace("(糖友网)", "").replace("(高友网)", ""));
                    }
                    if (json != null) {
                        logDO.setSosLat(json.get("lat").toString());
                        logDO.setSosLon(json.get("lng").toString());
                    }
                }
                String response = httpClientUtil.post(url, params,"UTF-8");
                System.out.println(response);
                //发送紧急救助
                String sql =" select Distinct pack.org_code,pack.org_name\n" +
                        "from base_service_package_sign_record sr INNER JOIN base_service_package_record pr\n" +
                        "on sr.id = pr.sign_id and sr.status=1 INNER JOIN base_service_package_item item on pr.service_package_id = item.service_package_id and item.del=1 \n" +
                        "INNER JOIN base_service_package pack pack on pr.service_package_id = pack.id where item.code='emergencyAssistance' and sr.patient='"+patientDO.getId()+"'";
                List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql);
                if (sqlResult.size()>0){
                    JSONObject jsonObject = new JSONObject();
                    jsonObject.put("serveAddress",logDO.getSosAddress());
                    jsonObject.put("serveLon",logDO.getSosLon());
                    jsonObject.put("serveLat",logDO.getSosLat());
                    jsonObject.put("orgCode",sqlResult.get(0).get("org_code").toString());
                    jsonObject.put("orgName",sqlResult.get(0).get("org_name").toString());
                    jsonObject.put("patient",logDO.getPatient());
                    jsonObject.put("patientName",logDO.getPatientName());
                    jsonObject.put("deviceSn",logDO.getDeviceSn());
                    String url = cloudCareUrl+"cloudCare/noLogin/emergency_assistance/newOrder";
                    List<NameValuePair> params = new ArrayList<>();
                    params.add(new BasicNameValuePair("jsonData", jsonObject.toJSONString()));
                    params.add(new BasicNameValuePair("patientId", logDO.getPatient()));
                    if (deviceDO.getCategoryCode().equals("4")) {
                        params.add(new BasicNameValuePair("orderSource", "2"));//工单来源工单发起来源状态 1APP 2手环 3居家报警
                    }
                    if (deviceDO.getCategoryCode().equals("7")) {
                        params.add(new BasicNameValuePair("orderSource", "3"));
                    }
                    String response = httpClientUtil.post(url, params,"UTF-8");
                    System.out.println(response);
                }
                sosLogDao.save(logDO);
            }
            sosLogDao.save(logDO);
        }catch(Exception e){
                e.printStackTrace();
            }
@ -552,6 +554,7 @@ public class DeviceService {
                List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByDeviceSn(device);
                if (devicePatientDeviceDos.size()>0){
                    Date timeDate = DateUtil.strToDate(time_begin);//当前时间
                    String dayTime = null;//检测日期
                    String patient = devicePatientDeviceDos.get(0).getUser();
                    List<BaseSleepPlan> sleepPlans = sleepPlanDao.findByPatientAndDeviceSn(patient,device);
                    BaseSleepPlanDetail planDetail = new BaseSleepPlanDetail();
@ -577,7 +580,7 @@ public class DeviceService {
                        String inTime = sleepPlan.getNightRestTime();
                        Date bedIn = null;// 入睡时间
                        Date bedBegin = null;// 入睡开始时间
                        String dayTime = DateUtil.dateToStr(bedUp,DateUtil.YYYY_MM_DD);//监测日期
                        dayTime = DateUtil.dateToStr(bedUp,DateUtil.YYYY_MM_DD);//监测日期
                        if (inTime.charAt(0)=='0'&&inTime.charAt(1)!='0') {//0点后为睡觉日期
                            bedIn = DateUtil.strToDate(dayTime+" "+sleepPlan.getNightRestTime()+":00");
                            bedIn = DateUtil.getNextDay1(bedIn,1);
@ -627,7 +630,7 @@ public class DeviceService {
                                        orderCreate=true;
                                    }
                                }
                                else if(1 == planDetail.getSiestaStatus()&&null==planDetail.getSiestaTimeEnd()){//午睡起床
                                else if(1 == planDetail.getSiestaStatus()&&null==planDetail.getSiestaLong()){//午睡起床
                                    planDetail.setSiestaTimeEnd(timeDate);
                                    timeDiffer = (planDetail.getSiestaTimeEnd().getTime()-planDetail.getSiestaTimeBegin().getTime())/1000;
                                    planDetail.setSiestaLong(timeDiffer+"");
@ -686,7 +689,7 @@ public class DeviceService {
                                    if (timeDiffer>3600*nightLongWarn*1000){
                                        planDetail.setInStatus(0);
                                        planDetail.setBedStatus(1);
                                        planDetail.setSleepNightRecordList(records);
                                        planDetail.setSleepNightRecordList(nightRecord.findBySnPaTime(device,patient,dayTime));
                                        outBedOrder(null,timeDate,devicePatientDeviceDos.get(0),patient,device,"超时未上床晚休",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
                                        orderCreate=true;
                                    }
@ -703,7 +706,7 @@ public class DeviceService {
                                        record = records.get(0);
                                        timeDiffer = timeDate.getTime()-record.getCreateTime().getTime();
                                        if (timeDiffer>3600*nightLongWarn*1000&&0==records.get(0).getStatus()){//超过2未回床小时 触发工单
                                            planDetail.setSleepNightRecordList(records);
                                            planDetail.setSleepNightRecordList(nightRecord.findBySnPaTime(device,patient,dayTime));
                                            planDetail.setBedStatus(0);
                                            outBedOrder(records.get(0),timeDate,devicePatientDeviceDos.get(0),patient,device,"起夜超时未回床",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
                                            orderCreate=true;
@ -728,6 +731,7 @@ public class DeviceService {
                                    planDetail.setBreath(breath);
                                    planDetail.setHeartRate(heartrate);
                                    planDetail.setBedStatus(1);
                                    planDetail.setSleepNightRecordList(nightRecord.findBySnPaTime(device,patient,dayTime));
                                    outBedOrder(null,timeDate,devicePatientDeviceDos.get(0),patient,device,"心率和呼吸频率异常",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
                                    return null;
                                }
@ -738,6 +742,7 @@ public class DeviceService {
                                    planDetail.setBreath(breath);
                                    planDetail.setHeartRate(heartrate);
                                    planDetail.setBedStatus(1);
                                    planDetail.setSleepNightRecordList(nightRecord.findBySnPaTime(device,patient,dayTime));
                                    outBedOrder(null,timeDate,devicePatientDeviceDos.get(0),patient,device,"心率和呼吸频率异常",JSON.toJSONStringWithDateFormat(planDetail,"yyyy-MM-dd HH:mm:ss",SerializerFeature.WriteMapNullValue));
                                    return null;
                                }
@ -745,7 +750,6 @@ public class DeviceService {
                        }
                    }
                }
            }
        } catch (Exception e) {