南昌市物联网技防平台-后台
Administrator
2021-03-05 83f08194fb16c5feea1b05d682120fe76d599775
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyServer/ServerHandler.java
@@ -9,6 +9,7 @@
import org.springblade.jfpt.Netty.service.nettyService;
import org.springblade.jfpt.alarm.entity.Alarm;
import org.springblade.jfpt.alarm.service.IAlarmService;
import org.springblade.jfpt.animalheat.service.AnimalHeatService;
import org.springblade.jfpt.catalog.service.catalogService;
import org.springblade.jfpt.equipment.service.IEquipmentService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -41,6 +42,9 @@
   @Autowired
   private IEquipmentService equipmentService;
   @Autowired
   private AnimalHeatService animalHeatService;
   @Autowired
   private IAlarmService alarmService;
@@ -102,145 +106,135 @@
      String body = new String(req, "UTF-8");
      String content = body;
      System.out.println("接收客户端数据:" + body);
      String ChannelName = content.substring(10, 22);//设备编码
      String sub = content.substring(23, 27);
      ConcurrentHashMap<String, Channel> channelHashMap = ChannelMap.getChannelHashMap();
      if (channelHashMap==null){
         if (!sub.equals("VIMO")){
            // 保存当前连接
            ChannelMap.addChannel(ChannelName,channelHandlerContext.channel());
      //获取字符串的长度
      int length = content.length();
      //当字符串长度大于200时,采集体温数据,小于则采集报警数据
      if (length>200){
         //只有数据长度大于300时,采集体温数据  200-300 之间为心跳数据,当前不采集
         if (length>250){
            //插入数据
            serverHandler.animalHeatService.save(body);
         }
      }
      else {
         Channel channel = ChannelMap.getChannelByName(ChannelName);
         if (channel!=channelHandlerContext.channel()|| channel==null){
            if (!sub.equals("VIMO")){
      }else {
         String ChannelName = content.substring(10, 22);//设备编码
         String sub = content.substring(23, 27);
         ConcurrentHashMap<String, Channel> channelHashMap = ChannelMap.getChannelHashMap();
         if (channelHashMap == null) {
            if (!sub.equals("VIMO")) {
               // 保存当前连接
               ChannelMap.addChannel(ChannelName,channelHandlerContext.channel());
               ChannelMap.addChannel(ChannelName, channelHandlerContext.channel());
            }
         } else {
            Channel channel = ChannelMap.getChannelByName(ChannelName);
            if (channel != channelHandlerContext.channel() || channel == null) {
               if (!sub.equals("VIMO")) {
                  // 保存当前连接
                  ChannelMap.addChannel(ChannelName, channelHandlerContext.channel());
               }
            }
         }
      }
      List<String> outData = new ArrayList<>();
      switch (content.substring(0, 2))
      {
         case "LA":
         {
            String devId = content.substring(10, 22);
            String fqbm = content.substring(24, 26);
            List<Map<String, Object>> list = serverHandler.equipmentService.selectInfos(devId);
            Alarm alarm= new Alarm();
            alarm.setAlarmType("一键报警");
            Date day = new Date();
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            alarm.setAlarmTime(df.format(day));
            alarm.setPlace((String) list.get(0).get("streeName"));//事发地址
            alarm.setDeviceNumber((String) list.get(0).get("deviceNumber"));//设备编号
            alarm.setDistrict((String) list.get(0).get("district"));//县区
            alarm.setProvince((String) list.get(0).get("province"));//市
            alarm.setCity((String) list.get(0).get("city"));
            alarm.setJd((String) list.get(0).get("jd"));//经度
            alarm.setWd((String) list.get(0).get("wd"));//纬度
            alarm.setJtype("0");
            if (fqbm.equals("00")){
                 alarm.setWaringType("旁路");
            }
            else if(fqbm.equals("01")){
               alarm.setWaringType("火警");
            }
            else if(fqbm.equals("02")){
               alarm.setWaringType("挟持");
            }
            else if(fqbm.equals("03")){
               alarm.setWaringType("紧急");
            }
            else if(fqbm.equals("04")){
               alarm.setWaringType("救护");
            }
            else if(fqbm.equals("05")){
               alarm.setWaringType("内部");
            }
            else if(fqbm.equals("06")){
               alarm.setWaringType("出入");
            }
            else if(fqbm.equals("07")){
               alarm.setWaringType("周边");
            }
            else {
               alarm.setWaringType("防拆");
            }
            serverHandler.alarmService.s(alarm);
            outData.add("LEOK#@");
         List<String> outData = new ArrayList<>();
         switch (content.substring(0, 2)) {
            case "LA": {
               String devId = content.substring(10, 22);
               String fqbm = content.substring(24, 26);
               List<Map<String, Object>> list = serverHandler.equipmentService.selectInfos(devId);
               Alarm alarm = new Alarm();
               alarm.setAlarmType("一键报警");
               alarm.setGalarmPeople("报警主机");
               Date day = new Date();
               SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
               alarm.setAlarmTime(df.format(day));
               alarm.setPlace((String) list.get(0).get("streeName"));//事发地址
               alarm.setDeviceNumber((String) list.get(0).get("deviceNumber"));//设备编号
               alarm.setDistrict((String) list.get(0).get("district"));//县区
               alarm.setProvince((String) list.get(0).get("province"));//市
               alarm.setCity((String) list.get(0).get("city"));
               alarm.setJd((String) list.get(0).get("jd"));//经度
               alarm.setWd((String) list.get(0).get("wd"));//纬度
               alarm.setJtype("0");
               if (fqbm.equals("00")) {
                  alarm.setWaringType("旁路");
               } else if (fqbm.equals("01")) {
                  alarm.setWaringType("火警");
               } else if (fqbm.equals("02")) {
                  alarm.setWaringType("挟持");
               } else if (fqbm.equals("03")) {
                  alarm.setWaringType("紧急");
               } else if (fqbm.equals("04")) {
                  alarm.setWaringType("救护");
               } else if (fqbm.equals("05")) {
                  alarm.setWaringType("内部");
               } else if (fqbm.equals("06")) {
                  alarm.setWaringType("出入");
               } else if (fqbm.equals("07")) {
                  alarm.setWaringType("周边");
               } else {
                  alarm.setWaringType("防拆");
               }
               serverHandler.alarmService.s(alarm);
               outData.add("LEOK#@");
            break;
         }
         case "LD":
         {
               break;
            }
            case "LD": {
//            if (Pattern.matches(content, reg_LD))
               String deviceNumber = content.substring(10, 22);
               String deviceNumber = content.substring(10, 22);
               String keyword = content.substring(23, 27);
               System.out.println(keyword);
               switch(keyword)
               {
                  case "IMEI":
                  {
               switch (keyword) {
                  case "IMEI": {
                     Date d = new Date();
                     SimpleDateFormat sbf = new SimpleDateFormat("MMddHHmm");
                     outData.add("LC8C0470" + sbf.format(d) + "#@" + "LEOK#@");
                     outData.add("LEOK#@");
                     break;
                  }
                  case "SRTC":
                  {
                  case "SRTC": {
                     Date d = new Date();
                     SimpleDateFormat sbf = new SimpleDateFormat("yyyyMMddHHmmss");
                     outData.add("LEOK#@");
                     outData.add("LC8C0700" + sbf.format(d) + "#@");
                     break;
                  }
                  case "STAS":
                  {
                  case "STAS": {
                     outData.add("LEOK#@");
                     outData.add("LC8100001E"+ "#@");
                     outData.add("LC8100001E" + "#@");
                     break;
                  }
                  case "TEST":
                  {
                  case "TEST": {
                     Date d = new Date();
                     SimpleDateFormat sbf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                     String format = sbf.format(d);
                     serverHandler.equipmentService.updateChannel(format,deviceNumber);
                     serverHandler.equipmentService.updateChannel(format, deviceNumber);
                     outData.add("LEOK#@");
                     outData.add("LEON#@");
                     break;
                  }
                  case "COMM":
                  {
                  case "COMM": {
                     outData.add("LEOK#@");
                     break;
                  }
                  default:
                  {
                  default: {
                     outData.add("LEOK#@");
                     break;
                  }
               }
            break;
         }
         case "LB":
         {
               break;
            }
            case "LB": {
               outData.add("LEOK#@");
            break;
               break;
            }
         }
      }
      if(outData.size() == 0)
      {
         outData.add("LERR#@");
      }
      for (int i = 0; i < outData.size(); i++)
      {
         channelHandlerContext.writeAndFlush(Unpooled.copiedBuffer(outData.get(i), CharsetUtil.UTF_8));
         if (outData.size() == 0) {
            outData.add("LERR#@");
         }
         for (int i = 0; i < outData.size(); i++) {
            channelHandlerContext.writeAndFlush(Unpooled.copiedBuffer(outData.get(i), CharsetUtil.UTF_8));
         }
      }