From 3a02431d4c4ab58e782ac8a6d40e084f19ecdc83 Mon Sep 17 00:00:00 2001
From: nnnjjj123 <494715143@qq.com>
Date: Sun, 10 Jan 2021 10:02:59 +0800
Subject: [PATCH] 1.netty调整
---
src/main/java/org/springblade/modules/Netty/service/nettyService.java | 35 ++
src/main/java/org/springblade/modules/alarm/mapper/AlarmMapper.xml | 17 +
src/main/java/org/springblade/modules/alarm/vo/AlarmVO.java | 3
src/main/java/org/springblade/modules/Netty/controller/nettyController.java | 186 ++++++++++++++
src/main/java/org/springblade/modules/Netty/dto/nettyDTO.java | 35 ++
src/main/java/org/springblade/modules/Netty/wrapper/nettyWrapper.java | 52 ++++
src/main/java/org/springblade/modules/Netty/entitly/Netty.java | 51 +++
src/main/java/org/springblade/modules/nettyServer/ChannelMap.java | 36 ++
src/main/java/org/springblade/modules/Netty/mapper/nettyMapper.xml | 16 +
src/main/java/org/springblade/modules/Netty/service/impl/nettyServiceImpl.java | 48 +++
src/main/java/org/springblade/modules/Netty/vo/nettyVO.java | 37 ++
src/main/java/org/springblade/modules/Netty/mapper/nettyMapper.java | 37 ++
src/main/java/org/springblade/modules/alarm/controller/AlarmController.java | 1
src/main/java/org/springblade/modules/nettyServer/ServerHandler.java | 196 +++++++++++++-
src/main/java/org/springblade/modules/catalog/controller/catalogController.java | 7
15 files changed, 727 insertions(+), 30 deletions(-)
diff --git a/src/main/java/org/springblade/modules/Netty/controller/nettyController.java b/src/main/java/org/springblade/modules/Netty/controller/nettyController.java
new file mode 100644
index 0000000..8ca2ba0
--- /dev/null
+++ b/src/main/java/org/springblade/modules/Netty/controller/nettyController.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.Netty.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.netty.buffer.Unpooled;
+import io.netty.channel.Channel;
+import io.netty.util.CharsetUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.modules.Netty.entitly.Netty;
+import org.springblade.modules.Netty.vo.nettyVO;
+import org.springblade.modules.catalog.service.catalogService;
+import org.springblade.modules.nettyServer.ChannelMap;
+import org.springblade.modules.nettyServer.ServerHandler;
+import org.springframework.web.bind.annotation.*;
+import org.springblade.modules.Netty.wrapper.nettyWrapper;
+import org.springblade.modules.Netty.service.nettyService;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.regex.Pattern;
+
+/**
+ * 控制器
+ *
+ * @author BladeX
+ * @since 2020-07-06
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("netty/netty")
+@Api(value = "", tags = "接口")
+public class nettyController extends BladeController {
+
+ private final nettyService nettyService ;
+ private final org.springblade.modules.catalog.service.catalogService catalogService;
+
+ /**
+ * 详情
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "详情", notes = "传入deploy")
+ public R<nettyVO> detail(Netty netty, HttpServletResponse response) {
+ response.setHeader("Access-Control-Allow-Origin", "*");
+ response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
+ response.setHeader("Access-Control-Allow-Credentials","true");
+ Netty detail = nettyService.getOne(Condition.getQueryWrapper(netty));
+ return R.data(nettyWrapper.build().entityVO(detail));
+ }
+
+ /**
+ * 分页
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "分页", notes = "传入deploy")
+ public R<IPage<nettyVO>> list(Netty netty, Query query) {
+ IPage<Netty> pages = nettyService.page(Condition.getPage(query), Condition.getQueryWrapper(netty));
+ return R.data(nettyWrapper.build().pageVO(pages));
+ }
+
+
+ /**
+ * 新增
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "新增", notes = "传入deploy")
+ public R save(@Valid @RequestBody Netty netty) {
+ return R.status(nettyService.save(netty));
+ }
+
+ /**
+ * 修改
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "修改", notes = "传入deploy")
+ public R update(@Valid @RequestBody Netty netty) {
+ return R.status(nettyService.updateById(netty));
+ }
+
+ /**
+ * 新增或修改
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "新增或修改", notes = "传入deploy")
+ public R submit(@Valid @RequestBody Netty netty) {
+ return R.status(nettyService.saveOrUpdate(netty));
+ }
+
+
+ /**
+ * 删除
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "删除", notes = "传入ids")
+ public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+ return R.status(nettyService.removeByIds(Func.toLongList(ids)));
+ }
+
+ /**
+ * 布防
+ */
+ @PostMapping("/selectNettyChannelb")
+ @ApiOperationSupport(order = 8)
+ public R selectNettyChannel(String pid,HttpServletResponse response) {
+ response.setHeader("Access-Control-Allow-Origin", "*");
+ response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
+ response.setHeader("Access-Control-Allow-Credentials","true");
+ ConcurrentHashMap<String, Channel> channelHashMap = ChannelMap.getChannelHashMap();
+ System.out.println(channelHashMap);
+ String s = catalogService.selectCatalogEqNUmber(pid);
+ if (s==null){
+ return R.success("暂无设备布防");
+ }
+ else {
+ String[] split = s.split(",");
+ for (int i = 0; i < split.length; i++) {
+ List<String> outData = new ArrayList<>();
+ outData.add("LC8109085B#@");
+ Channel channel = channelHashMap.get(split[i]);
+ channel.writeAndFlush(Unpooled.copiedBuffer(outData.get(0), CharsetUtil.UTF_8));
+ }
+ return R.success("设备布防");
+ }
+ }
+
+ /**
+ * 撤防
+ */
+ @PostMapping("/selectNettyChannelc")
+ @ApiOperationSupport(order = 9)
+ public R selectNettyChannelc(String pid,HttpServletResponse response) {
+ response.setHeader("Access-Control-Allow-Origin", "*");
+ response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
+ response.setHeader("Access-Control-Allow-Credentials","true");
+ ConcurrentHashMap<String, Channel> channelHashMap = ChannelMap.getChannelHashMap();
+ System.out.println(channelHashMap);
+ String s = catalogService.selectCatalogEqNUmber(pid);
+ if (s==null){
+ return R.success("暂无设备撤防");
+ }
+ else {
+ String[] split = s.split(",");
+ for (int i = 0; i < split.length; i++) {
+ List<String> outData = new ArrayList<>();
+ outData.add("LC8109085C#@");
+ Channel channel = channelHashMap.get(split[i]);
+ channel.writeAndFlush(Unpooled.copiedBuffer(outData.get(0), CharsetUtil.UTF_8));
+ }
+ return R.success("设备撤防");
+ }
+ }
+
+}
diff --git a/src/main/java/org/springblade/modules/Netty/dto/nettyDTO.java b/src/main/java/org/springblade/modules/Netty/dto/nettyDTO.java
new file mode 100644
index 0000000..3ac2d2a
--- /dev/null
+++ b/src/main/java/org/springblade/modules/Netty/dto/nettyDTO.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.Netty.dto;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.modules.Netty.entitly.Netty;
+import org.springblade.modules.catalog.entitly.catalog;
+
+/**
+ * 数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2020-07-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class nettyDTO extends Netty {
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/src/main/java/org/springblade/modules/Netty/entitly/Netty.java b/src/main/java/org/springblade/modules/Netty/entitly/Netty.java
new file mode 100644
index 0000000..ba99e01
--- /dev/null
+++ b/src/main/java/org/springblade/modules/Netty/entitly/Netty.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.Netty.entitly;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 实体类
+ *
+ * @author BladeX
+ * @since 2020-07-06
+ */
+@Data
+@TableName("sys_netty")
+@ApiModel(value = "netty对象", description = "netty对象")
+public class Netty implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @JsonSerialize(using = ToStringSerializer.class)
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ @TableField("nettyName")
+ private String nettyName;
+ @TableField("nettyChannel")
+ private String nettyChannel;
+
+}
diff --git a/src/main/java/org/springblade/modules/Netty/mapper/nettyMapper.java b/src/main/java/org/springblade/modules/Netty/mapper/nettyMapper.java
new file mode 100644
index 0000000..63172a8
--- /dev/null
+++ b/src/main/java/org/springblade/modules/Netty/mapper/nettyMapper.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.Netty.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import io.netty.channel.Channel;
+import org.springblade.modules.Netty.entitly.Netty;
+import org.springblade.modules.catalog.entitly.catalog;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Mapper 接口
+ *
+ * @author BladeX
+ * @since 2020-07-06
+ */
+public interface nettyMapper extends BaseMapper<Netty> {
+
+ ConcurrentHashMap<String, Channel> selectNettyChannel(String nettyName);
+}
diff --git a/src/main/java/org/springblade/modules/Netty/mapper/nettyMapper.xml b/src/main/java/org/springblade/modules/Netty/mapper/nettyMapper.xml
new file mode 100644
index 0000000..e4b956c
--- /dev/null
+++ b/src/main/java/org/springblade/modules/Netty/mapper/nettyMapper.xml
@@ -0,0 +1,16 @@
+<?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.modules.Netty.mapper.nettyMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="nettyResultMap" type="org.springblade.modules.Netty.entitly.Netty">
+ <id column="id" property="id"/>
+ <result column="nettyName" property="nettyName"/>
+ <result column="nettyChannel" property="nettyChannel"/>
+ </resultMap>
+
+ <select id="selectNettyChannel" resultType="java.util.HashMap">
+ SELECT nettyName,nettyChannel FROM sys_netty WHERE nettyName=#{nettyName}
+ </select>
+
+</mapper>
diff --git a/src/main/java/org/springblade/modules/Netty/service/impl/nettyServiceImpl.java b/src/main/java/org/springblade/modules/Netty/service/impl/nettyServiceImpl.java
new file mode 100644
index 0000000..fe15e9a
--- /dev/null
+++ b/src/main/java/org/springblade/modules/Netty/service/impl/nettyServiceImpl.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.Netty.service.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import io.netty.channel.Channel;
+import org.springblade.modules.Netty.entitly.Netty;
+import org.springblade.modules.Netty.mapper.nettyMapper;
+import org.springblade.modules.Netty.service.nettyService;
+import org.springblade.modules.catalog.entitly.catalog;
+import org.springblade.modules.catalog.mapper.catalogMapper;
+import org.springblade.modules.catalog.service.catalogService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * 服务实现类
+ *
+ * @author BladeX
+ * @since 2020-07-06
+ */
+@Service
+@DS("slaves")
+public class nettyServiceImpl extends ServiceImpl<nettyMapper, Netty> implements nettyService {
+
+ @Override
+ public ConcurrentHashMap<String, Channel> selectNettyChannel(String nettyName) {
+ return baseMapper.selectNettyChannel(nettyName);
+ }
+}
diff --git a/src/main/java/org/springblade/modules/Netty/service/nettyService.java b/src/main/java/org/springblade/modules/Netty/service/nettyService.java
new file mode 100644
index 0000000..380c222
--- /dev/null
+++ b/src/main/java/org/springblade/modules/Netty/service/nettyService.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.Netty.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import io.netty.channel.Channel;
+import org.springblade.modules.Netty.entitly.Netty;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * 服务类
+ *
+ * @author BladeX
+ * @since 2020-07-06
+ */
+public interface nettyService extends IService<Netty> {
+ ConcurrentHashMap<String, Channel> selectNettyChannel(String nettyName);
+}
diff --git a/src/main/java/org/springblade/modules/Netty/vo/nettyVO.java b/src/main/java/org/springblade/modules/Netty/vo/nettyVO.java
new file mode 100644
index 0000000..1f2590a
--- /dev/null
+++ b/src/main/java/org/springblade/modules/Netty/vo/nettyVO.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.Netty.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.modules.Netty.entitly.Netty;
+import org.springblade.modules.catalog.entitly.catalog;
+
+/**
+ * 视图实体类
+ *
+ * @author BladeX
+ * @since 2020-07-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "nettyVO对象", description = "nettyVO对象")
+public class nettyVO extends Netty {
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/src/main/java/org/springblade/modules/Netty/wrapper/nettyWrapper.java b/src/main/java/org/springblade/modules/Netty/wrapper/nettyWrapper.java
new file mode 100644
index 0000000..22a5d9f
--- /dev/null
+++ b/src/main/java/org/springblade/modules/Netty/wrapper/nettyWrapper.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.Netty.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.modules.Netty.entitly.Netty;
+import org.springblade.modules.Netty.vo.nettyVO;
+import org.springblade.modules.catalog.entitly.catalog;
+import org.springblade.modules.catalog.vo.catalogVO;
+
+import java.util.Objects;
+
+/**
+ * 包装类,返回视图层所需的字段
+ *
+ * @author BladeX
+ * @since 2020-07-06
+ */
+public class nettyWrapper extends BaseEntityWrapper<Netty, nettyVO> {
+
+ public static nettyWrapper build() {
+ return new nettyWrapper();
+ }
+
+ @Override
+ public nettyVO entityVO(Netty netty) {
+ nettyVO nettyVO = Objects.requireNonNull(BeanUtil.copy(netty, nettyVO.class));
+
+ //User createUser = UserCache.getUser(deploy.getCreateUser());
+ //User updateUser = UserCache.getUser(deploy.getUpdateUser());
+ //deployVO.setCreateUserName(createUser.getName());
+ //deployVO.setUpdateUserName(updateUser.getName());
+
+ return nettyVO;
+ }
+
+}
diff --git a/src/main/java/org/springblade/modules/alarm/controller/AlarmController.java b/src/main/java/org/springblade/modules/alarm/controller/AlarmController.java
index e11cb18..8b73b7c 100644
--- a/src/main/java/org/springblade/modules/alarm/controller/AlarmController.java
+++ b/src/main/java/org/springblade/modules/alarm/controller/AlarmController.java
@@ -192,4 +192,5 @@
return R.success("删除成功");
}
+
}
diff --git a/src/main/java/org/springblade/modules/alarm/mapper/AlarmMapper.xml b/src/main/java/org/springblade/modules/alarm/mapper/AlarmMapper.xml
index 0b92245..63803f2 100644
--- a/src/main/java/org/springblade/modules/alarm/mapper/AlarmMapper.xml
+++ b/src/main/java/org/springblade/modules/alarm/mapper/AlarmMapper.xml
@@ -24,6 +24,9 @@
<result column="wd" property="wd"/>
<result column="jtype" property="jtype"/>
<result column="rname" property="rname"/>
+ <result column="serialNumber" property="serialNumber"/>
+ <result column="stype" property="stype"/>
+ <result column="channelNumber" property="channelNumber"/>
</resultMap>
@@ -69,9 +72,12 @@
a.wd,
a.jtype,
a.rname,
- d.addvnm
+ d.addvnm,
+ e.serialNumber,
+ e.stype,
+ e.channelNumber
FROM
- sys_alarm a LEFT JOIN sys_district d on d.addvcds=a.addvcd where 1=1
+ sys_alarm a LEFT JOIN sys_district d on d.addvcds=a.addvcd LEFT JOIN sys_equipment e on e.deviceNumber=a.deviceNumber where 1=1
<if test="jtype!=null and jtype!=''">
and a.jtype=#{jtype}
</if>
@@ -143,9 +149,12 @@
a.jd,
a.wd,
a.jtype,
- d.addvnm
+ d.addvnm,
+ e.serialNumber,
+ e.stype,
+ e.channelNumber
FROM
- sys_alarm a LEFT JOIN sys_district d on d.addvcds=a.addvcd where 1=1
+ sys_alarm a LEFT JOIN sys_district d on d.addvcds=a.addvcd LEFT JOIN sys_equipment e on e.deviceNumber=a.deviceNumber where 1=1
<if test="id!=null and id!=''">
and a.id >#{id}
</if>
diff --git a/src/main/java/org/springblade/modules/alarm/vo/AlarmVO.java b/src/main/java/org/springblade/modules/alarm/vo/AlarmVO.java
index c08a8dd..de2aa4c 100644
--- a/src/main/java/org/springblade/modules/alarm/vo/AlarmVO.java
+++ b/src/main/java/org/springblade/modules/alarm/vo/AlarmVO.java
@@ -33,5 +33,8 @@
public class AlarmVO extends Alarm {
private static final long serialVersionUID = 1L;
private String addvnm;
+ private String serialNumber;
+ private String stype;
+ private String channelNumber;
}
diff --git a/src/main/java/org/springblade/modules/catalog/controller/catalogController.java b/src/main/java/org/springblade/modules/catalog/controller/catalogController.java
index f516a71..7015693 100644
--- a/src/main/java/org/springblade/modules/catalog/controller/catalogController.java
+++ b/src/main/java/org/springblade/modules/catalog/controller/catalogController.java
@@ -30,18 +30,14 @@
import org.springblade.modules.catalog.entitly.catalog;
import org.springblade.modules.catalog.service.catalogService;
import org.springblade.modules.catalog.vo.catalogVO;
-import org.springblade.modules.deploy.entity.Deploy;
-import org.springblade.modules.deploy.service.IDeployService;
-import org.springblade.modules.deploy.vo.DeployVO;
import org.springblade.modules.catalog.wrapper.catalogWrapper;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
-import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.regex.Pattern;
/**
* 控制器
@@ -147,6 +143,5 @@
return R.data(list);
}
-
}
diff --git a/src/main/java/org/springblade/modules/nettyServer/ChannelMap.java b/src/main/java/org/springblade/modules/nettyServer/ChannelMap.java
new file mode 100644
index 0000000..33d08e9
--- /dev/null
+++ b/src/main/java/org/springblade/modules/nettyServer/ChannelMap.java
@@ -0,0 +1,36 @@
+package org.springblade.modules.nettyServer;
+
+import io.netty.channel.Channel;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+public class ChannelMap {
+ public static int channelNum=0;
+ private static ConcurrentHashMap<String, Channel> channelHashMap=null;//concurrentHashmap以解决多线程冲突
+
+ public static ConcurrentHashMap<String, Channel> getChannelHashMap() {
+ return channelHashMap;
+ }
+
+ public static Channel getChannelByName(String name){
+ if(channelHashMap==null||channelHashMap.isEmpty()){
+ return null;
+ }
+ return channelHashMap.get(name);
+ }
+ public static void addChannel(String name,Channel channel){
+ if(channelHashMap==null){
+ channelHashMap=new ConcurrentHashMap<String,Channel>(10);
+ }
+ channelHashMap.put(name,channel);
+ channelNum++;
+ }
+ public static int removeChannelByName(String name){
+ if(channelHashMap.containsKey(name)){
+ channelHashMap.remove(name);
+ return 0;
+ }else{
+ return 1;
+ }
+ }
+}
diff --git a/src/main/java/org/springblade/modules/nettyServer/ServerHandler.java b/src/main/java/org/springblade/modules/nettyServer/ServerHandler.java
index 4e07b6c..af535c3 100644
--- a/src/main/java/org/springblade/modules/nettyServer/ServerHandler.java
+++ b/src/main/java/org/springblade/modules/nettyServer/ServerHandler.java
@@ -4,28 +4,54 @@
import io.netty.buffer.Unpooled;
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.ChannelId;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.channel.group.ChannelGroup;
import io.netty.channel.group.ChannelMatcher;
import io.netty.channel.group.DefaultChannelGroup;
import io.netty.util.CharsetUtil;
import io.netty.util.concurrent.GlobalEventExecutor;
+import org.springblade.modules.Netty.entitly.Netty;
+import org.springblade.modules.Netty.service.nettyService;
+import org.springblade.modules.alarm.entity.Alarm;
import org.springblade.modules.alarm.service.IAlarmService;
import org.springblade.modules.alarm.vo.AlarmVO;
import org.springblade.modules.catalog.service.catalogService;
+import org.springblade.modules.equipment.entity.Equipment;
+import org.springblade.modules.equipment.service.IEquipmentService;
+import org.springblade.modules.equipment.vo.EquipmentVOS;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.PostMapping;
import javax.annotation.PostConstruct;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.regex.Pattern;
@Component
public class ServerHandler 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 catalogService catalogService;
+
+ @Autowired
+ private nettyService nettyService;
+
+ @Autowired
+ private IEquipmentService equipmentService;
+
+ @Autowired
+ private IAlarmService alarmService;
private static ServerHandler serverHandler;
@@ -38,9 +64,11 @@
*/
@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
+ System.out.println("CTX:"+ctx.channel());
System.out.println("客户端与服务端连接开始...");
- System.out.println("Channel:"+ctx.channel());
- NettyConfig.group.add(ctx.channel());
+// ChannelId id = ctx.channel().id();
+// String s = id.toString();
+ //NettyConfig.group.add(ctx.channel());
}
/**
@@ -80,27 +108,155 @@
byte[] req = new byte[buf.readableBytes()];
buf.readBytes(req);
String body = new String(req, "UTF-8");
+ String content = body;
System.out.println("接收客户端数据:" + body);
- channelHandlerContext.writeAndFlush(Unpooled.copiedBuffer("LEOK#@!", CharsetUtil.UTF_8));
- List<Map<String, Object>> list = serverHandler.catalogService.selectCatalogList();
- System.out.println(list);
-// ByteBuf pingMessage = Unpooled.buffer();
-// pingMessage.writeBytes(req);
-// channelHandlerContext.writeAndFlush(pingMessage);
+ 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());
+ }
+ }
+ 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.setAddvcd((String) list.get(0).get("addvcd"));//行政区编码
+ 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":
+ {
+// if (Pattern.matches(content, reg_LD))
+ String keyword = content.substring(23, 27);
+ System.out.println(keyword);
+ switch(keyword)
+ {
+ case "IMEI":
+ {
+ System.out.println("IMEI------------------");
+ Date d = new Date();
+ SimpleDateFormat sbf = new SimpleDateFormat("MMddHHmm");
+ outData.add("LC8C0470" + sbf.format(d) + "#@" + "LEOK#@");
+ outData.add("LEOK#@");
+ break;
+ }
+ case "SRTC":
+ {
+ Date d = new Date();
+ SimpleDateFormat sbf = new SimpleDateFormat("yyyyMMddHHmmss");
+ outData.add("LEOK#@");
+ outData.add("LC8C0700" + sbf.format(d) + "#@");
+ break;
+ }
+ case "STAS":
+ {
+ outData.add("LEOK#@");
+ outData.add("LC8100001E"+ "#@");
+ break;
+ }
+ case "TEST":
+ {
+ outData.add("LEOK#@");
+ outData.add("LEON#@");
+ break;
+ }
+ case "COMM":
+ {
+ outData.add("LEOK#@");
+ break;
+ }
+ default:
+ {
+ outData.add("LEOK#@");
+ break;
+ }
+ }
+
+ break;
+ }
+ case "LB":
+ {
+ outData.add("LEOK#@");
+ 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));
+ }
+// channelHandlerContext.writeAndFlush(Unpooled.copiedBuffer("LEOK#@!", CharsetUtil.UTF_8));
//服务端使用这个就能向 每个连接上来的客户端群发消息
//NettyConfig.group.writeAndFlush(info);
- Iterator<Channel> iterator = NettyConfig.group.iterator();
- System.out.println("iterator:"+iterator);
- while(iterator.hasNext()){
- //打印出所有客户端的远程地址
- System.out.println((iterator.next()).remoteAddress());
-
- }
+// Iterator<Channel> iterator = NettyConfig.group.iterator();
+// System.out.println("iterator:"+iterator);
+// while(iterator.hasNext()){
+// //打印出所有客户端的远程地址
+// System.out.println((iterator.next()).remoteAddress());
+//
+// }
}
-
-
}
--
Gitblit v1.9.3