LAPTOP-KB9HII50\70708 3 rokov pred
rodič
commit
c0e3bfd739

+ 3 - 0
common/common-entity/sql记录

@ -1550,3 +1550,6 @@ CREATE TABLE `base_yunxing_channel` (
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='云信会话关联表';
-- 2021-10-14 ysj
ALTER table wlyy_devices add column collect_num int(20) default null COMMENT '采集数据次数';
ALTER table wlyy_devices add column abnormal_num int(20) default null COMMENT '异常指标数据次数';

+ 20 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/device/DeviceDetail.java

@ -54,6 +54,8 @@ public class DeviceDetail extends IdEntity {
    private String imsi;//设备物联卡imsi
    private String categoryCode; // 设备类型 dm_device表定义
    private Long collectNum;//采集数据次数
    private Long abnormalNum;//异常指标数据次数
    //导入设备错误信息
    private String errorMsg;
@ -376,6 +378,24 @@ public class DeviceDetail extends IdEntity {
        this.categoryCode = categoryCode;
    }
    @Column(name = "collect_num")
    public Long getCollectNum() {
        return collectNum;
    }
    public void setCollectNum(Long collectNum) {
        this.collectNum = collectNum;
    }
    @Column(name = "abnormal_num")
    public Long getAbnormalNum() {
        return abnormalNum;
    }
    public void setAbnormalNum(Long abnormalNum) {
        this.abnormalNum = abnormalNum;
    }
    @Transient
    public String getErrorMsg() {
        return errorMsg;

+ 9 - 3
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/DeviceUploadService.java

@ -191,6 +191,9 @@ public class DeviceUploadService {
                        content_notice = content_notice.substring(0,content_notice.length()-1);
                        message.put("content_notice","您的key1过高,请注意饮食,尽量食用少油少盐食物".replace("key1",content_notice));
                        messageDO.setContent("您的key1过高,请注意饮食,尽量食用少油少盐食物".replace("key1",content_notice));
                        hvDeviceService.updContactStatus(deviceSn,1,true);
                    }else{
                        hvDeviceService.updContactStatus(deviceSn,1,false);
                    }
                    patientHealthIndexDao.save(result);
                    systemMessageDao.save(messageDO);
@ -490,6 +493,7 @@ public class DeviceUploadService {
                        }
                        double dulat =Double.parseDouble(lat);
                        double dulon = Double.parseDouble(lon);
                        boolean flag = false;
                        if (!(dulat==0.0&&dulon==0.0)){//判断是否触发工单
                            com.alibaba.fastjson.JSONObject position = gpsUtil.Gps84_To_bd09(dulat,dulon);
                            dulat = position.getDouble("lat");
@ -524,6 +528,7 @@ public class DeviceUploadService {
                                        addressInfo.put("lon",dulon+"");
                                        addressInfo.put("address",LatitudeUtils.getLocationAddress(dulat+"",dulon+""));
                                        orderUtil.createSecurityOrder(sn,null,null,addressInfo,8,"1","preventLost",null);
                                        flag = true;
                                    }
                                }
                            }
@ -534,7 +539,7 @@ public class DeviceUploadService {
                        deviceIndex.setLat(dulat+"");
                        deviceIndex.setLon(dulon+"");
                        yxDeviceIndexDao.save(deviceIndex);
                        hvDeviceService.updContactStatus(sn,1);
                        hvDeviceService.updContactStatus(sn,1,flag);
                    }
                    if ("AL".equals(tmp1[0])){//触发报警 SOS
                        String lat,lon;
@ -548,7 +553,7 @@ public class DeviceUploadService {
                        double dulat =Double.parseDouble(lat);
                        double dulon = Double.parseDouble(lon);
                        boolean flag = false;
                        if ((dulat==0.0&&dulon==0.0)){
                            String sql=" SELECT * FROM base_yxdevice_index WHERE sn = '"+sn+"' " +
                                    "AND create_time LIKE '"+DateUtil.getStringDateShort()+"%' AND lon != 0 AND lat != 0 ORDER BY create_time DESC  ";
@ -601,6 +606,7 @@ public class DeviceUploadService {
                            logDO.setSosLat(dulat+"");
                            logDO.setSosLon(dulon+"");
                            logDO.setSosAddress(LatitudeUtils.getLocationAddress(dulat+"",dulon+""));
                            flag = true;
                            orderUtil.createEmeOrder(logDO,"4");
                        }
                        BaseYxDeviceIndex deviceIndex = new BaseYxDeviceIndex();
@ -608,7 +614,7 @@ public class DeviceUploadService {
                        deviceIndex.setLat(dulat+"");
                        deviceIndex.setLon(dulon+"");
                        yxDeviceIndexDao.save(deviceIndex);
                        hvDeviceService.updContactStatus(sn,1);
                        hvDeviceService.updContactStatus(sn,1,flag);
                    }
                }
            }

+ 19 - 4
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/HvDeviceService.java

@ -166,7 +166,7 @@ public class HvDeviceService {
                list.add(index);
                dataPushLogUtil.savePushLog(resourceSerial,jsonObject.toJSONString(jsonObject,SerializerFeature.WriteMapNullValue),"烟探测器监测信息接收");
            }
            updContactStatus(resourceSerial,1);
            updContactStatus(resourceSerial,1,false);
        }
        if(list.size()>0){
            deviceHealthIndexDao.save(list);
@ -185,17 +185,18 @@ public class HvDeviceService {
            List<HvDeviceRecord> list = hvdeviceRecordDao.findByDeviceId(deviceID);
            dataPushLogUtil.savePushLog(deviceID,jsonObject.toJSONString(jsonObject,SerializerFeature.WriteMapNullValue),"气感烟感探测器监测信息接收");
            if(list.size()>0){
                updContactStatus(list.get(0).getDeviceSn(),Integer.valueOf(deviceStatus));
                updContactStatus(list.get(0).getDeviceSn(),Integer.valueOf(deviceStatus),null);
            }
        }
    }
    /**
     * 更新在线状态
     * 更新在线状态 及次数
     * @param sn
     * @param status
     * @param flag 状态 true 异常 false 正常 null其他
     */
    public void updContactStatus(String sn,Integer status){
    public void updContactStatus(String sn,Integer status,Boolean flag){
        DeviceDetail deviceDetail = deviceDetailDao.findBySn(sn);
        if(deviceDetail!=null){
            deviceDetail.setContactStatus(status);
@ -205,6 +206,20 @@ public class HvDeviceService {
               deviceLostMessageUtil.deviceLostMessage(sns);
            }
            deviceDetail.setContactStatusTime(new Date());
            if(deviceDetail.getCollectNum()==null){
                deviceDetail.setCollectNum(0L);
            }
            if(deviceDetail.getAbnormalNum()==null){
                deviceDetail.setAbnormalNum(0L);
            }
            if(flag!=null){
                deviceDetail.setCollectNum(deviceDetail.getCollectNum()+1L);
                if(flag){
                    deviceDetail.setAbnormalNum(deviceDetail.getAbnormalNum()+1L);
                }
            }
            deviceDetailDao.save(deviceDetail);
        }
    }

+ 34 - 15
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/OnenetService.java

@ -93,27 +93,29 @@ public class OnenetService {
            }else if("15".equals(categoryCode)){
                title = "烟探测器监测信息接收";
            }
            hvDeviceService.updContactStatus(deviceSn,1);
            dataPushLogUtil.savePushLog(deviceSn,msg.toJSONString(),title);
            //未来鹰设备 类型2是设备状态(不准)
            Integer type = msg.getInteger("type");
            String value = msg.getString("value");
            boolean flag = false;
            if("1".equals(onenetDevice.getDeviceType())){
                if ("14".equals(categoryCode)){//燃气
                    wlyDateDelGas(categoryCode,msg);
                    flag = wlyDateDelGas(categoryCode,msg);
                }
                if ("15".equals(categoryCode)){//烟雾设备
                    wlyDateDelSmoke(msg);
                    flag = wlyDateDelSmoke(msg);
                }
            }else if("2".equals(onenetDevice.getDeviceType())){
                //海康设备
                if("14".equals(onenetDevice.getCategoryCode())){
                    hkDeviceQi(onenetDevice,msg);
                    flag = hkDeviceQi(onenetDevice,msg);
                }else if("15".equals(onenetDevice.getCategoryCode())){
                    hkDeviceYan(onenetDevice,msg);
                    flag = hkDeviceYan(onenetDevice,msg);
                }
            }
            hvDeviceService.updContactStatus(deviceSn,1,flag);
            record.setContent(msg.toJSONString());
            record.setStatus(1);
@ -166,7 +168,8 @@ public class OnenetService {
    /**
     * 海康设备解析-烟感
     */
    public void hkDeviceYan(OnenetDevice onenetDevice,JSONObject jsonObject){
    public boolean hkDeviceYan(OnenetDevice onenetDevice,JSONObject jsonObject){
        boolean flag = false;
        String value = jsonObject.getString("value");
        String byMessageId = value.substring(0,2);
//        String byDevType = value.substring(4,6);
@ -190,7 +193,7 @@ public class OnenetService {
                    addDeviceIndex(resourceSerial,monitorValue,time,"2","%");
                    dataPushLogUtil.savePushLog(resourceSerial,jsonObject.toJSONString(jsonObject,SerializerFeature.WriteMapNullValue),"可燃气体探测器监测信息接收");
                }
                return;
                return flag;
            }
        }
@ -220,15 +223,16 @@ public class OnenetService {
                        tmp.put("smoke",monitorValue);
                        orderUtil.createSecurityOrder(resourceSerial,null,new JSONObject(),null,7,"10","preventFire",JSON.toJSONString(tmp, SerializerFeature.WriteMapNullValue));
                        dataPushLogUtil.savePushLog(resourceSerial,jsonObject.toJSONString(jsonObject,SerializerFeature.WriteMapNullValue),"烟感探测器报警信息接收");
                        flag = true;
                    }
                    addDeviceIndex(resourceSerial,monitorValue,time,"2","%");
                }
                return;
                return flag;
            }
        }
        //其他信息暂时不处理
        // 03消音 04自检 05故障 06信号查询 07注册 08注销 ...
        return flag;
    }
    /**
@ -252,7 +256,8 @@ public class OnenetService {
    /**
     * 海康设备解析-气感
     */
    public void hkDeviceQi(OnenetDevice onenetDevice,JSONObject jsonObject){
    public boolean hkDeviceQi(OnenetDevice onenetDevice,JSONObject jsonObject){
        boolean flag = false;
        String value = jsonObject.getString("value");
        String byMessageId = value.substring(0,2);
//        String byDevType = value.substring(4,6);
@ -274,7 +279,7 @@ public class OnenetService {
                addDeviceIndex(resourceSerial,monitorValue,time,"1","%LEL");
                dataPushLogUtil.savePushLog(resourceSerial,jsonObject.toJSONString(jsonObject,SerializerFeature.WriteMapNullValue),"可燃气体探测器监测信息接收");
            }
            return;
            return flag;
        }
        if("02".equals(byMessageId)){
            //报警
@ -304,6 +309,7 @@ public class OnenetService {
                        tmp.put("gas",monitorValue);
                        orderUtil.createSecurityOrder(resourceSerial,null,new JSONObject(),null,6,"11","preventGasLeakage",JSON.toJSONString(tmp, SerializerFeature.WriteMapNullValue));
                        dataPushLogUtil.savePushLog(resourceSerial,jsonObject.toJSONString(jsonObject,SerializerFeature.WriteMapNullValue),"可燃气体探测器报警信息接收");
                        flag = true;
                    }
                    addDeviceIndex(resourceSerial,monitorValue,time,"1","%LEL");
                }
@ -311,7 +317,7 @@ public class OnenetService {
        }
        //其他信息暂时不处理
        // 03消音 04自检 05故障 06信号查询 07注册 08注销 ...
        return flag;
    }
    /**
@ -372,7 +378,8 @@ public class OnenetService {
     * 未来鹰设备烟雾数据处理
     * @param msg
     */
    public void wlyDateDelSmoke(JSONObject msg){
    public boolean wlyDateDelSmoke(JSONObject msg){
        boolean flag = false;
        String dsId = msg.getString("ds_id");
        String msgId = dsId.split("_")[2];
        String value = msg.getString("value");
@ -387,6 +394,7 @@ public class OnenetService {
                    JSONObject tmp = new JSONObject();
                    tmp.put("smoke",value);
                    orderUtil.createSecurityOrder(deviceSn,null,new JSONObject(),null,7,"10","preventFire",JSON.toJSONString(tmp, SerializerFeature.WriteMapNullValue));
                    flag = true;
                }
            }
            DeviceHealthIndex index = new DeviceHealthIndex();
@ -406,12 +414,21 @@ public class OnenetService {
                    JSONObject tmp = new JSONObject();
                    tmp.put("smoke","100");
                    orderUtil.createSecurityOrder(deviceSn,null,new JSONObject(),null,7,"10","preventFire",JSON.toJSONString(tmp, SerializerFeature.WriteMapNullValue));
                    flag = true;
                }
            }
        }
        return flag;
    }
    public void wlyDateDelGas(String categoryCode,JSONObject msg){
    /**
     * 返回数据是否异常 true异常
     * @param categoryCode
     * @param msg
     * @return
     */
    public boolean wlyDateDelGas(String categoryCode,JSONObject msg){
        boolean flag = false;
        String deviceSn = msg.getString("imei");
        Integer type = msg.getInteger("type");
        String value = msg.getString("value");
@ -422,7 +439,6 @@ public class OnenetService {
            Integer gas = Integer.parseInt(gas_Level, 16);
            if(gas>0){
                //气体浓度大于0触发报警
                String sql = "select count(*) from base_device_health_index where device_sn = '"+deviceSn+"'" +
                        " and value>0 and create_time>='"+DateUtil.getNextMinute(-60)+"' ";
                Integer count = jdbcTemplate.queryForObject(sql,Integer.class);
@ -432,6 +448,7 @@ public class OnenetService {
                    JSONObject tmp = new JSONObject();
                    tmp.put("gas",gas);
                    orderUtil.createSecurityOrder(deviceSn,null,new JSONObject(),null,6,"11","preventGasLeakage",JSON.toJSONString(tmp, SerializerFeature.WriteMapNullValue));
                    flag = true;
                }
            }
            DeviceHealthIndex index = new DeviceHealthIndex();
@ -448,5 +465,7 @@ public class OnenetService {
            index.setRecordTime(DateUtil.getStringDate());
            deviceHealthIndexDao.save(index);
        }
        return flag;
    }
}