南昌市物联网技防平台-后台
Administrator
2021-03-05 83f08194fb16c5feea1b05d682120fe76d599775
体温数据接口
6 files modified
1 files renamed
9 files added
8 files deleted
951 ■■■■ changed files
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/JfptApplication.java 4 ●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/controller/AnimalHeatController.java 54 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/entity/BladeAnimalHeat.java 12 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/mapper/AnimalHeatMapper.java 35 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/mapper/AnimalHeatMapper.xml 34 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/service/AnimalHeatService.java 35 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/service/impl/AnimalHeatServiceImpl.java 118 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/util/ImageUtil.java 55 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/vo/AnimalHeatVo.java 28 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/vo/StatisVo.java 19 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/jingdan/mapper/JingdanMapper.xml 1 ●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyServer/ServerHandler.java 191 ●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/MyNettyDecode.java 126 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/NettyConstant.java 12 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/NettyProPool.java 53 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/ParseString.java 14 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/TcpServer.java 20 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/TcpServerHandler.java 34 ●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyUdpServer/controller/AnimalHeatController.java 20 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyUdpServer/mapper/AnimalHeatMapper.java 11 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyUdpServer/service/AnimalHeatService.java 15 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyUdpServer/service/impl/AnimalHeatServiceImpl.java 56 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/resources/application-dev.yml 2 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/resources/application.properties 2 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/JfptApplication.java
@@ -18,9 +18,7 @@
import org.springblade.core.cloud.feign.EnableBladeFeign;
import org.springblade.core.launch.BladeApplication;
import org.springblade.jfpt.nettyServer.Server;
import org.springblade.jfpt.nettyTcpServer.TcpServer;
import org.springblade.jfpt.nettyUdpServer.server.UdpServer;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -41,7 +39,7 @@
    @Override
    public void run(String... args) throws Exception {
        //Server server=new Server(8088);
        TcpServer server=new TcpServer(8088);
        TcpServer server=new TcpServer(8099); //测试用
        //UdpServer udpServer=new UdpServer(8099);
    }
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/controller/AnimalHeatController.java
New file
@@ -0,0 +1,54 @@
package org.springblade.jfpt.animalheat.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.jfpt.animalheat.entity.BladeAnimalHeat;
import org.springblade.jfpt.animalheat.service.AnimalHeatService;
import org.springblade.jfpt.animalheat.vo.AnimalHeatVo;
import org.springblade.jfpt.animalheat.vo.StatisVo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
 * 体温监测控制层
 * @time 2021-2-25
 */
@RestController
@RequestMapping("animalHeat/animalHeat")
@AllArgsConstructor
public class AnimalHeatController {
    private final AnimalHeatService animalHeatService;
    /**
     * 获取体温数据统计
     * @param animalHeatVo 条件参数 开始时间,结束时间
     * @return
     */
    @GetMapping("/getAnimalStatis")
    public List<StatisVo> getAnimalStatis(AnimalHeatVo animalHeatVo){
        return animalHeatService.getAnimalStatis(animalHeatVo);
    }
    /**
     * 体温数据的分页数据
     * @param animalHeatVo 查询条件
     * @param query  查询页码
     * @return
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    public R<IPage<BladeAnimalHeat>> page(AnimalHeatVo animalHeatVo, Query query) {
        return R.data(animalHeatService.selectAnimalHeatPage(Condition.getPage(query), animalHeatVo));
    }
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/entity/BladeAnimalHeat.java
File was renamed from blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyUdpServer/entity/BladeAnimalHeat.java
@@ -1,4 +1,4 @@
package org.springblade.jfpt.nettyUdpServer.entity;
package org.springblade.jfpt.animalheat.entity;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -24,7 +24,7 @@
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;// bigint(20) NOT NULL COMMENT '主键',
    //private Integer method;// int(1) NOT NULL COMMENT '方法名: 0 表示 infrared_aiom_picture 图片数据, 1 表示 engine_echo  心跳包    ',
    private Integer method;// int(1) NOT NULL COMMENT '方法名: 0 表示 infrared_aiom_picture 图片数据, 1 表示 engine_echo  心跳包    ',
    private String ip;// varchar(63) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '设备IP地址',
@@ -36,13 +36,15 @@
    @TableField("temp_red")
    private Float tempRed;// float(4,2) DEFAULT NULL COMMENT '当前人员的温度',
    @TableField("person_rect")
    private String[] personRect;// varchar(63) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '人脸位置二位数组,[left,top,right,bottom]',
    @TableField(value = "person_rect")
    private String personRect;// varchar(63) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '人脸位置二位数组,[left,top,right,bottom]',
    @TableField("person_rect_red")
    private Integer[] personRectRed;// varchar(63) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '红外人脸位置二位数组,[left,top,right,bottom]',
    private String personRectRed;// varchar(63) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '红外人脸位置二位数组,[left,top,right,bottom]',
    @TableField("create_time")
    private Date createTime;// datetime DEFAULT NULL COMMENT '创建时间',
    private Integer status;//状态 1为高温   0为正常   ,以37度为标准,大于37度为高温
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/mapper/AnimalHeatMapper.java
New file
@@ -0,0 +1,35 @@
package org.springblade.jfpt.animalheat.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.jfpt.animalheat.entity.BladeAnimalHeat;
import org.springblade.jfpt.animalheat.vo.AnimalHeatVo;
import org.springblade.jfpt.animalheat.vo.StatisVo;
import java.util.List;
/**
 * mapper 映射层
 *
 */
public interface AnimalHeatMapper extends BaseMapper<BladeAnimalHeat> {
    /**
     * 获取体温数据统计  --当天
     * @return
     */
    List<StatisVo> getAnimalStatis();
    /**
     * 获取体温数据统计  --本周
     * @return
     */
    List<StatisVo> getAnimalStatisWeek();
    /**
     * 体温数据的分页数据
     * @param animalHeatVo 查询条件
     * @param page  查询页码
     * @return
     */
    List<BladeAnimalHeat> selectAnimalHeatPageList(IPage<BladeAnimalHeat> page, AnimalHeatVo animalHeatVo);
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/mapper/AnimalHeatMapper.xml
New file
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.jfpt.animalheat.mapper.AnimalHeatMapper">
    <!--查询当天体温数据统计-->
    <select id="getAnimalStatis" resultType="org.springblade.jfpt.animalheat.vo.StatisVo">
        SELECT 1 `status`,count(`status`) number FROM `blade_animal_heat` where
             TO_DAYS(create_time)=TO_DAYS(now())  and `status`=1
        UNION
        SELECT 0 `status`,count(`status`) number FROM `blade_animal_heat` where
            TO_DAYS(create_time)=TO_DAYS(now())  and `status`=0
    </select>
    <!--获取本周的体温统计数据-->
    <select id="getAnimalStatisWeek" resultType="org.springblade.jfpt.animalheat.vo.StatisVo">
        SELECT 1 `status`,count(`status`) number FROM `blade_animal_heat` where
            YEARWEEK(date_format(create_time,'%Y-%m-%d')) = YEARWEEK(now()) and `status`=1
        UNION
        SELECT 0 `status`,count(`status`) number FROM `blade_animal_heat` where
            YEARWEEK(date_format(create_time,'%Y-%m-%d')) = YEARWEEK(now()) and `status`=0
    </select>
    <select id="selectAnimalHeatPageList" resultType="org.springblade.jfpt.animalheat.entity.BladeAnimalHeat">
        SELECT * FROM blade_animal_heat
        <if test="animalHeatVo.begTime!=null and animalHeatVo.begTime!=''">
            and create_time &gt;=#{animalHeatVo.begTime}
        </if>
        <if test="animalHeatVo.endTime!=null and animalHeatVo.endTime!=''">
            and create_time &lt;=#{animalHeatVo.endTime}
        </if>
        ORDER BY create_time asc
    </select>
</mapper>
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/service/AnimalHeatService.java
New file
@@ -0,0 +1,35 @@
package org.springblade.jfpt.animalheat.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.jfpt.animalheat.entity.BladeAnimalHeat;
import org.springblade.jfpt.animalheat.vo.AnimalHeatVo;
import org.springblade.jfpt.animalheat.vo.StatisVo;
import java.util.List;
/**
 * 体温监测服务层接口层
 */
public interface AnimalHeatService extends IService<BladeAnimalHeat> {
    /**
     * 插入体温数据
     * @param body 温度数据
     */
    void save(String body);
    /**
     * 获取体温数据统计
     * @param animalHeatVo 条件参数 开始时间,结束时间
     * @return
     */
    List<StatisVo> getAnimalStatis(AnimalHeatVo animalHeatVo);
    /**
     * 体温数据的分页数据
     * @param animalHeatVo 查询条件
     * @param page  查询页码
     * @return
     */
    IPage<BladeAnimalHeat> selectAnimalHeatPage(IPage<BladeAnimalHeat> page, AnimalHeatVo animalHeatVo);
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/service/impl/AnimalHeatServiceImpl.java
New file
@@ -0,0 +1,118 @@
package org.springblade.jfpt.animalheat.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.jfpt.animalheat.entity.BladeAnimalHeat;
import org.springblade.jfpt.animalheat.mapper.AnimalHeatMapper;
import org.springblade.jfpt.animalheat.service.AnimalHeatService;
import org.springblade.jfpt.animalheat.util.ImageUtil;
import org.springblade.jfpt.animalheat.vo.AnimalHeatVo;
import org.springblade.jfpt.animalheat.vo.StatisVo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
import static org.springblade.core.tool.utils.DateUtil.now;
/**
 * 体温数据服务层
 *
 */
@Service
public class AnimalHeatServiceImpl extends ServiceImpl<AnimalHeatMapper, BladeAnimalHeat> implements AnimalHeatService {
    @Override
    public boolean save(BladeAnimalHeat entity) {
        return false;
    }
    @Value("${picture.addUrl}")
    private String picAddUrl;
    @Value("${picture.pre}")
    private String picPre;
    /**
     * 新增体温数据
     * @param body 体温数据
     */
    @Override
    @Transactional
    public void save(String body) {
        //1.截取信息
        int i = body.indexOf("{");
        //2.从 {  处开始截取
        int length = body.length();
        //3.截取,由于获取数据时,} 被去除,需要加上
        String dataBody = body.substring(i, length)+"}";
        System.out.println("dataBody = " + dataBody);
        //4.数据转换
        Map<String,Object> data = (Map<String, Object>) JSONObject.parse(dataBody);
        System.out.println("data = " + data);
        //5.创建体温数据对象
        BladeAnimalHeat bladeAnimalHeat = new BladeAnimalHeat();
        //6.取出数据,封装数据到对象
        String picture = data.get("picture").toString();
        //将二进制原始图片转换成图片
        ImageUtil.base64StringToImage(picture);
        //bladeAnimalHeat.setPicture(data.get("picture").toString());  //暂时不存入
        String temp_red =data.get("temp_red").toString();
        String[] temRedArr = temp_red.substring(1,temp_red.length()-1).split(",");
        if (temRedArr.length>1){
            //比较两个温度的大小,取大的值
            float v = Float.parseFloat(temRedArr[0]);
            float v1 = Float.parseFloat(temRedArr[1]);
            int compare = Float.compare(v, v1);
            bladeAnimalHeat.setTempRed(compare>=0 ? v:v1);
            //和标志温度比较,大于37度为高温,标记为1,小于则为正常0
            int compare1 = Float.compare(37, compare >= 0 ? v : v1);
            bladeAnimalHeat.setStatus(compare1>0 ?0:1);
        }else {
            bladeAnimalHeat.setTempRed(Float.parseFloat(temRedArr[0]));
            int compare1 = Float.compare(37, Float.parseFloat(temRedArr[0]));
            bladeAnimalHeat.setStatus(compare1>0 ?0:1);
        }
        String person_rects = data.get("person_rect").toString();
        bladeAnimalHeat.setPersonRect(person_rects.substring(2,person_rects.length()-2));
        bladeAnimalHeat.setCreateTime(now());
        //7.插入数据
        int idata = baseMapper.insert(bladeAnimalHeat);
    }
    /**
     * 获取体温数据统计
     * @param animalHeatVo 条件参数 开始时间,结束时间
     * @return
     */
    @Override
    public List<StatisVo> getAnimalStatis(AnimalHeatVo animalHeatVo) {
        if(null!= animalHeatVo.getStatus()){
            //查询当天的统计数据
            if (animalHeatVo.getStatus()==0){
                return baseMapper.getAnimalStatis();
            }
            //查询本周的统计数据
            if (animalHeatVo.getStatus()==1){
                return baseMapper.getAnimalStatisWeek();
            }
        }
        return null;
    }
    /**
     * 体温数据的分页数据
     * @param animalHeatVo 查询条件
     * @param page  查询页码
     * @return
     */
    @Override
    public IPage<BladeAnimalHeat> selectAnimalHeatPage(IPage<BladeAnimalHeat> page, AnimalHeatVo animalHeatVo) {
        return page.setRecords(baseMapper.selectAnimalHeatPageList(page, animalHeatVo));
    }
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/util/ImageUtil.java
New file
@@ -0,0 +1,55 @@
package org.springblade.jfpt.animalheat.util;
import jodd.util.StringPool;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.FileUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.beans.factory.annotation.Value;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import static java.time.LocalDate.now;
/**
 * 二进制原始数据转换为图片工具类
 */
public class ImageUtil {
    static BASE64Encoder encoder = new sun.misc.BASE64Encoder();
    static BASE64Decoder decoder = new sun.misc.BASE64Decoder();
    @Value("${picture.addUrl}")
    private String picAddUrl;
    @Value("${picture.pre}")
    private static String picPre;
    /**
     * 二进制原始数据转换为图片
     * @param base64String
     */
    public static String base64StringToImage(String base64String){
        try {
            byte[] bytes1 = decoder.decodeBuffer(base64String);
            ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);
            BufferedImage bi1 = ImageIO.read(bais);
            String yyyyMMddHHmmss = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
            File w2 = new File("D://"+picPre+StringPool.SLASH+ DateUtil.today()+StringPool.SLASH+ StringUtil.randomUUID()
                +".jpg");//可以是jpg,png,gif格式
            ImageIO.write(bi1, "jpg", w2);//不管输出什么格式图片,此处不需改动
            //返回图片路径
            return picPre+ StringPool.SLASH+ DateUtil.today()+StringPool.SLASH+ StringUtil.randomUUID()
                +StringPool.DOT+ "jpg";
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/vo/AnimalHeatVo.java
New file
@@ -0,0 +1,28 @@
package org.springblade.jfpt.animalheat.vo;
import lombok.Data;
import org.springblade.jfpt.animalheat.entity.BladeAnimalHeat;
import java.io.Serializable;
import java.util.Date;
/**
 * 查询的条件属性
 */
@Data
public class AnimalHeatVo extends BladeAnimalHeat implements Serializable {
    /**
     *开始时间
     */
    private Date begTime;
    /**
     * 结束时间
     */
    private Date endTime;
    /**
     * 状态  0: 当天时间统计数据     1: 本周内的数据统计
     */
    private Integer status;
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/vo/StatisVo.java
New file
@@ -0,0 +1,19 @@
package org.springblade.jfpt.animalheat.vo;
import lombok.Data;
/**
 * 体温数据统计返回属性参数
 */
@Data
public class StatisVo {
    /**
     * 体温状态  1为高于37度高温状态   0为正常
     */
    private Integer status;
    /**
     * 数量
     */
    private Integer number;
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/jingdan/mapper/JingdanMapper.xml
@@ -25,7 +25,6 @@
        <result column="handletype" property="handletype"/>
    </resultMap>
    <select id="selectJingdanPage" resultMap="jingdanResultMap">
        SELECT j.id,j.galarmPeople,j.phoneNumber,j.place,j.content,j.galarmTime,j.waringType,j.deviceNumber,j.type,
        j.handleP,j.handleTime,j.handName,j.level,ST_ASTEXT(j.coordinate) as coordinate,j.jd,j.wd,j.addvcd,j.rName,
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,146 +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("一键报警");
                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#@");
            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));
            }
        }
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/MyNettyDecode.java
File was deleted
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/NettyConstant.java
File was deleted
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/NettyProPool.java
File was deleted
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/ParseString.java
File was deleted
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/TcpServer.java
@@ -9,13 +9,6 @@
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.codec.DelimiterBasedFrameDecoder;
import io.netty.handler.codec.LengthFieldBasedFrameDecoder;
import io.netty.handler.codec.LengthFieldPrepender;
import io.netty.handler.codec.string.StringDecoder;
import io.netty.handler.logging.LoggingHandler;
import java.nio.ByteOrder;
import java.nio.charset.Charset;
public class TcpServer {
@@ -40,12 +33,15 @@
                // 绑定处理group
                bootstrap.group(boss, worker).channel(NioServerSocketChannel.class)
                    //保持连接数
                    .option(ChannelOption.SO_BACKLOG, 128)
                    .option(ChannelOption.SO_BACKLOG, 30)
                    //设置缓冲区大小
                    .option(ChannelOption.SO_RCVBUF, 1024*1024)
                    .option(ChannelOption.SO_SNDBUF, 1024*1024)
                    //有数据立即发送
                    .option(ChannelOption.TCP_NODELAY, true)
                    //保持连接
                    .childOption(ChannelOption.SO_KEEPALIVE, true)
                    .childOption(ChannelOption.RCVBUF_ALLOCATOR, new FixedRecvByteBufAllocator(512*250))
                    .childOption(ChannelOption.RCVBUF_ALLOCATOR, new FixedRecvByteBufAllocator(1024*1024))
                    .childHandler(new NettyChannelHandler());
                //绑定端口,同步等待成功
@@ -81,10 +77,8 @@
        @Override
        protected void initChannel(SocketChannel socketChannel)
            throws Exception {
            //socketChannel.pipeline().addLast(new MyNettyDecode());
            //socketChannel.pipeline().addLast(new StringDecoder(Charset.forName("UTF-8")));
            //socketChannel.pipeline().addLast("decoder", new LengthFieldBasedFrameDecoder(Integer.MAX_VALUE,0,4,0,4));
            //socketChannel.pipeline().addLast("encoder", new LengthFieldPrepender(4, false));
            ByteBuf delimiter = Unpooled.copiedBuffer("}".getBytes());
            socketChannel.pipeline().addLast( new DelimiterBasedFrameDecoder(200000,delimiter));
            socketChannel.pipeline().addLast(new TcpServerHandler());
        }
    }
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/TcpServerHandler.java
@@ -7,7 +7,7 @@
import org.springblade.jfpt.alarm.service.IAlarmService;
import org.springblade.jfpt.equipment.service.IEquipmentService;
import org.springblade.jfpt.nettyServer.NettyConfig;
import org.springblade.jfpt.nettyUdpServer.service.AnimalHeatService;
import org.springblade.jfpt.animalheat.service.AnimalHeatService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@@ -15,26 +15,6 @@
@Component
public class TcpServerHandler extends ChannelInboundHandlerAdapter {
    private  String reg_LA ="LA[d]{8}[d|A-F]{12}[d|A-F]{8}[d|A-Z]{2}[d|A-F]{4}[x2A][d|A-F]{6}[#@]";
    private String reg_LB = "LB[\\d|A-F]{12}[\\x2A].*[#@]";
    private String reg_LB2 = "LB[\\d|A-F]{6}[\\x2A].*[#@]";
    private String reg_LD = "LD[d]{8}[d|A-F]{12}:[A-Z]{4}[\\x2A].*[#@]";
    private ConcurrentHashMap<String, Channel> sessionChannelMap = new ConcurrentHashMap<String, Channel>();
    @Autowired
    private org.springblade.jfpt.catalog.service.catalogService catalogService;
    @Autowired
    private org.springblade.jfpt.Netty.service.nettyService nettyService;
    @Autowired
    private IEquipmentService equipmentService;
    @Autowired
    private IAlarmService alarmService;
    private static TcpServerHandler tcpServerHandler;
@@ -96,9 +76,15 @@
        String body = new String(req, "UTF-8");
        String content = body;
        System.out.println("接收客户端数据:" + body);
        //插入数据
        tcpServerHandler.animalHeatService.save(body);
        System.out.println("content.length() = " + content.length());
        //获取字符串的长度
        int length = content.length();
        //当字符串长度大于200时,采集体温数据,小于则采集报警数据
        //只有数据长度大于300时,采集体温数据  200-300 之间为心跳数据,当前不采集
        if (length>250){
            //插入数据
            tcpServerHandler.animalHeatService.save(body);
        }
    }
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyUdpServer/controller/AnimalHeatController.java
File was deleted
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyUdpServer/mapper/AnimalHeatMapper.java
File was deleted
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyUdpServer/service/AnimalHeatService.java
File was deleted
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyUdpServer/service/impl/AnimalHeatServiceImpl.java
File was deleted
blade-service/blade-jfpts/src/main/resources/application-dev.yml
@@ -8,3 +8,5 @@
    url: jdbc:mysql://36.134.81.48:3306/jfpt?allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true&useOldAliasMetadataBehavior=true
    username: root
    password: jfpt123
blade-service/blade-jfpts/src/main/resources/application.properties
New file
@@ -0,0 +1,2 @@
picture.addUrl= http://36.134.81.48:9000/
picture.pre= software/minio/data/animalHeat/