浏览代码

Merge branch 'dev' of liubing/wlyy2.0 into dev

liubing 2 年之前
父节点
当前提交
2dfa11fd44

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/care/securitymonitoring/SecurityMonitoringOrderDO.java

@ -318,7 +318,7 @@ public class SecurityMonitoringOrderDO extends UuidIdentityEntityWithOperator {
    private String serviceStatus;//服务类型 1-预约项目 2-即时项目
    private String orderInfo;//工单详情 0-未推送 1-未确认 2-已确认
    private String doctorConfirmFinishImg;
    private Integer orderSource;//工单发起来源状态 1APP 2手环 3居家报警 4监控器发起 5睡眠带 6气感报警器 7 烟感报警器 8拐杖发起 9智慧水表
    private Integer orderSource;//工单发起来源状态 1APP 2手环 3居家报警 4监控器发起 5睡眠带 6气感报警器 7 烟感报警器 8拐杖发起 9智慧水表 10门禁 11电表
    private Integer emergencyCancel;// 紧急预警工单误报警原因 字典emergency_cancel
    private String topicItem;//安防工单所属专题 base_system_dict_entry表service_item
    private String sceneImg;//现场照片

+ 6 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/PatientDeviceService.java

@ -1142,6 +1142,12 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
                        }
                    }
                    break;
                case "18"://日常用水监测
                    break;
                case "19": //门禁 todo 出入记录
                    break;
                case "20": //电表 todo 日常用电情况
                    break;
            }
//        }
                result.put(ResponseContant.resultFlag,ResponseContant.success);

+ 107 - 63
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java

@ -733,6 +733,12 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                case "dailyWater":
                    categoryCode = "'18'";
                    break;
                case "accessControl":
                    categoryCode = "'19'";
                    break;
                case "electricControl":
                    categoryCode = "'20'";
                    break;
            }
            if (StringUtils.isNotBlank(doctor)) {//日常监护医生必传
                BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
@ -905,6 +911,12 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                case "dailyWater":
                    categoryCode = "'18'";
                    break;
                case "accessControl":
                    categoryCode = "'19'";
                    break;
                case "electricControl":
                    categoryCode = "'20'";
                    break;
            }
            if (StringUtils.isNotBlank(doctor)) {//日常监护医生必传
                BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
@ -1692,6 +1704,42 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                        }
                    }
                    break;
                case "accessControl":
                    if (patientDeviceService.patientDeviceListByTopic(patient,"accessControl").size()==0){
                        result.put("accessControl", null);
                    }else {
                        Integer count = Integer.parseInt(tmp.get("total").toString());
                        if (count > 0) {
                            result.put("accessControl", true);
                            sql = " select serve_desc from base_security_monitoring_order where topic_item='accessControl' " +
                                    "and patient='" + patient + "' and `status`=1 order by create_time desc limit 1 ";
                            List<String> serveDesces = jdbcTemplate.queryForList(sql, String.class);
                            if (serveDesces.size() > 0) {
                                result.put("accessControlOrderInfo", serveDesces.get(0));
                            }
                        } else {
                            result.put("accessControl", false);
                        }
                    }
                    break;
                case "electricControl":
                    if (patientDeviceService.patientDeviceListByTopic(patient,"electricControl").size()==0){
                        result.put("electricControl", null);
                    }else {
                        Integer count = Integer.parseInt(tmp.get("total").toString());
                        if (count > 0) {
                            result.put("electricControl", true);
                            sql = " select serve_desc from base_security_monitoring_order where topic_item='electricControl' " +
                                    "and patient='" + patient + "' and `status`=1 order by create_time desc limit 1 ";
                            List<String> serveDesces = jdbcTemplate.queryForList(sql, String.class);
                            if (serveDesces.size() > 0) {
                                result.put("electricControlOrderInfo", serveDesces.get(0));
                            }
                        } else {
                            result.put("electricControl", false);
                        }
                    }
                    break;
            }
        }
        sql = " select count(id) from base_emergency_assistance_order  where patient='" + patient + "' and status=" + EmergencyAssistanceDO.Status.apply.getType();
@ -1715,67 +1763,14 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                "and dict.remark='security'  GROUP BY dict.code ";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        for (Map<String, Object> tmp : list) {
            switch (tmp.get("code").toString()) {
                case "preventGasLeakage":
                    List<Map<String,Object>> devices = patientDeviceService.patientDeviceListByTopic(patient,"preventGasLeakage");
                    if (devices.size()>0) {
                        tmp.put("band", true);
                        tmp.put("devices", devices);
                    }else {
                        tmp.put("band", false);
                        tmp.put("devices", null);
                    }
                    break;
                case "preventFire":
                    devices = patientDeviceService.patientDeviceListByTopic(patient,"preventFire");
                    if (devices.size()>0){
                        tmp.put("band", true);
                        tmp.put("devices", devices);
                    }else {
                        tmp.put("band", false);
                        tmp.put("devices", null);
                    }
                    break;
                case "preventFall":
                    devices = patientDeviceService.patientDeviceListByTopic(patient,"preventFall");
                    if (devices.size()>0){
                        tmp.put("band", true);
                        tmp.put("devices", devices);
                    }else {
                        tmp.put("band", false);
                        tmp.put("devices", null);
                    }
                    break;
                case "preventOutOfBed":
                    devices = patientDeviceService.patientDeviceListByTopic(patient,"preventOutOfBed");
                    if (devices.size()>0){
                        tmp.put("band", true);
                        tmp.put("devices", devices);
                    }else {
                        tmp.put("band", false);
                        tmp.put("devices", null);
                    }
                    break;
                case "preventLost":
                    devices = patientDeviceService.patientDeviceListByTopic(patient,"preventLost");
                    if (devices.size()>0){
                        tmp.put("band", true);
                        tmp.put("devices", devices);
                    }else {
                        tmp.put("band", false);
                        tmp.put("devices", null);
                    }
                    break;
                case "dailyWater":
                    devices = patientDeviceService.patientDeviceListByTopic(patient,"dailyWater");
                    if (devices.size()>0){
                        tmp.put("band", true);
                        tmp.put("devices", devices);
                    }else {
                        tmp.put("band", false);
                        tmp.put("devices", null);
                    }
                    break;
            String topicStr = tmp.get("code").toString();
            List<Map<String,Object>> devices = patientDeviceService.patientDeviceListByTopic(patient,topicStr);
            if (devices.size()>0) {
                tmp.put("band", true);
                tmp.put("devices", devices);
            }else {
                tmp.put("band", false);
                tmp.put("devices", null);
            }
        }
        sql = " select 'emeAssistance' as code,ord.id,ord.patient,'20' as OrderType,'紧急呼叫' as serveDesc " +
@ -1883,7 +1878,34 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                        result.put("dailyWater", false);
                    }
                    break;
                case "accessControl":
                    count = Integer.parseInt(tmp.get("total").toString());
                    if (count > 0) {
                        result.put("accessControl", true);
                        sql = " select serve_desc from base_security_monitoring_order where topic_item='accessControl' " +
                                "and patient='" + patient + "' and `status`=1 order by create_time desc limit 1 ";
                        List<String> serveDesces = jdbcTemplate.queryForList(sql, String.class);
                        if (serveDesces.size() > 0) {
                            result.put("accessControlOrderInfo", serveDesces.get(0));
                        }
                    } else {
                        result.put("accessControl", false);
                    }
                    break;
                case "electricControl":
                    count = Integer.parseInt(tmp.get("total").toString());
                    if (count > 0) {
                        result.put("electricControl", true);
                        sql = " select serve_desc from base_security_monitoring_order where topic_item='electricControl' " +
                                "and patient='" + patient + "' and `status`=1 order by create_time desc limit 1 ";
                        List<String> serveDesces = jdbcTemplate.queryForList(sql, String.class);
                        if (serveDesces.size() > 0) {
                            result.put("electricControlOrderInfo", serveDesces.get(0));
                        }
                    } else {
                        result.put("electricControl", false);
                    }
                    break;
            }
        }
        sql = " select count(id) from base_emergency_assistance_order  where patient='" + patient + "' and status=" + EmergencyAssistanceDO.Status.apply.getType();
@ -2610,6 +2632,12 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
            case "dailyWater":
                categoryCode = "'18'";
                break;
            case "accessControl":
                categoryCode = "'19'";
                break;
            case "electricControl":
                categoryCode = "'20'";
                break;
        }
        fliter = " and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id  " +
@ -2745,6 +2773,12 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
            case "dailyWater":
                categoryCode = "'18'";
                break;
            case "accessControl":
                categoryCode = "'19'";
                break;
            case "electricControl":
                categoryCode = "'20'";
                break;
            case "emergencyAssistance":
                categoryCode = "'7','4'";
                break;
@ -2941,7 +2975,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
    public List<Map<String,Object>> getPatientDeviceTopic(String patient){
        List<Map<String,Object>> result = new ArrayList<>();
        String sql = " select distinct pd.device_sn,pd.category_code from wlyy_patient_device pd where pd.del=0  " +
                " and pd.category_code in (4,7,12,13,14,15,18) and pd.`user`='"+patient+"' " +
                " and pd.category_code in (4,7,12,13,14,15,18,19,20) and pd.`user`='"+patient+"' " +
                " group by pd.category_code ";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> tmp:list){
@ -2983,6 +3017,16 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                    mapTmp.put("topic","dailyWater");
                    result.add(mapTmp);
                    break;
                case "19":
                    mapTmp.put("deviceSn",tmp.get("device_sn").toString());
                    mapTmp.put("topic","accessControl");
                    result.add(mapTmp);
                    break;
                case "20":
                    mapTmp.put("deviceSn",tmp.get("device_sn").toString());
                    mapTmp.put("topic","electricControl");
                    result.add(mapTmp);
                    break;
            }
        }
        return  result;

+ 36 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/third/PatientInfoPlatFormService.java

@ -999,6 +999,42 @@ public class PatientInfoPlatFormService {
                    detailInfo.put("location", null);
                }
                break;
            case "18"://日常用水监测
                sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                      " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                      " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1  " +
                      "ORDER BY create_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql);
                if (sqlResult.size()>0){
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("orderInfo",sqlResult.get(0));
                }else {
                    detailInfo.put("warnStatus",false);
                }
            case "19"://门禁监测
                sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1  " +
                        "ORDER BY create_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql);
                if (sqlResult.size()>0){
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("orderInfo",sqlResult.get(0));
                }else {
                    detailInfo.put("warnStatus",false);
                }
            case "20"://电表监测
                sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1  " +
                        "ORDER BY create_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql);
                if (sqlResult.size()>0){
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("orderInfo",sqlResult.get(0));
                }else {
                    detailInfo.put("warnStatus",false);
                }
        }
        return detailInfo;
    }

+ 2 - 1
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/endpoint/DeviceController.java

@ -69,7 +69,8 @@ public class DeviceController {
            long startTime=System.currentTimeMillis();
            String paraString = JSON.toJSONString(request.getParameterMap());
            deviceService.aqgsos(imei, label_mac, time_begin,request);
//            触发改为另外一个接口触发
//            deviceService.aqgsos(imei, label_mac, time_begin,request);
            long endTime=System.currentTimeMillis();
            dataPushLogUtil.savePushLog(imei,paraString,"爱牵挂SOS数据接收");
            dataPushLogUtil.updContactStatus(imei,1,false);

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

@ -353,6 +353,77 @@ public class DeviceService {
                    }
                }
                else if (type==1){
                    Double lat= null;
                    Double lon= null;
                    String address=null;
                    List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByDeviceSn(deviceid);
                    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")) {
                            //获取最新定位
                            String url = cloudCareUrl+"cloudCare/noLogin/device/getDeviceLastLocation";
                            List<NameValuePair> params = new ArrayList<>();
                            params.add(new BasicNameValuePair("deviceSn", deviceid));
                            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 {
                                return;
                            }
                        } else 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 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 orderSource=null;
                            if (deviceDO.getCategoryCode().equals("4")) {
                                orderSource="2";
                            }
                            if (deviceDO.getCategoryCode().equals("7")) {
                                orderSource="3";
                            }
                            orderUtil.createEmeOrder(logDO,orderSource);
                        }
                    }
                }
            }