From 641cbae418a7e7e16759b3c35e530b9352fb3199 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Mon, 08 Mar 2021 17:03:25 +0800
Subject: [PATCH] 新增体温数据接口分页,本周每天数据统计接口,数据插入修改
---
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/controller/AnimalHeatController.java | 13 +++
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/TcpServer.java | 2
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/service/AnimalHeatService.java | 9 ++
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/JfptApplication.java | 3
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/entity/BladeAnimalHeat.java | 2
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/mapper/AnimalHeatMapper.xml | 42 +++++++++++++
blade-service/blade-jfpts/src/main/resources/application.properties | 2
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/mapper/AnimalHeatMapper.java | 11 +++
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/util/ImageUtil.java | 20 +++---
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/TcpServerHandler.java | 8 +-
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/service/impl/AnimalHeatServiceImpl.java | 29 +++++++--
11 files changed, 112 insertions(+), 29 deletions(-)
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/JfptApplication.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/JfptApplication.java
index f6d01ba..850ed66 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/JfptApplication.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/JfptApplication.java
@@ -18,6 +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.springframework.boot.CommandLineRunner;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -39,7 +40,7 @@
@Override
public void run(String... args) throws Exception {
//Server server=new Server(8088);
- TcpServer server=new TcpServer(8099); //测试用
+ TcpServer tcpServer = new TcpServer(8088);
//UdpServer udpServer=new UdpServer(8099);
}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/controller/AnimalHeatController.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/controller/AnimalHeatController.java
index 87478af..af43502 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/controller/AnimalHeatController.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/controller/AnimalHeatController.java
@@ -34,8 +34,8 @@
* @return
*/
@GetMapping("/getAnimalStatis")
- public List<StatisVo> getAnimalStatis(AnimalHeatVo animalHeatVo){
- return animalHeatService.getAnimalStatis(animalHeatVo);
+ public R getAnimalStatis(AnimalHeatVo animalHeatVo){
+ return R.data(animalHeatService.getAnimalStatis(animalHeatVo));
}
@@ -51,4 +51,13 @@
return R.data(animalHeatService.selectAnimalHeatPage(Condition.getPage(query), animalHeatVo));
}
+ /**
+ * 查询本周每天的体温数据数量
+ * @return
+ */
+ @GetMapping("/selWeekDayAnimalStatis")
+ public R selWeekDayAnimalStatis(){
+ return R.data(animalHeatService.selWeekDayAnimalStatis());
+ }
+
}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/entity/BladeAnimalHeat.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/entity/BladeAnimalHeat.java
index 854e91e..83b2abc 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/entity/BladeAnimalHeat.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/entity/BladeAnimalHeat.java
@@ -26,6 +26,8 @@
private Integer method;// int(1) NOT NULL COMMENT '方法名: 0 表示 infrared_aiom_picture 图片数据, 1 表示 engine_echo 心跳包 ',
+ private String serialno;//varchar(20) 序列号
+
private String ip;// varchar(63) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '设备IP地址',
private String picture;// varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '图片url路径',
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/mapper/AnimalHeatMapper.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/mapper/AnimalHeatMapper.java
index c426ff4..968f435 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/mapper/AnimalHeatMapper.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/mapper/AnimalHeatMapper.java
@@ -7,6 +7,7 @@
import org.springblade.jfpt.animalheat.vo.StatisVo;
import java.util.List;
+import java.util.Map;
/**
* mapper 映射层
@@ -17,13 +18,13 @@
* 获取体温数据统计 --当天
* @return
*/
- List<StatisVo> getAnimalStatis();
+ List<Map<String, Object>> getAnimalStatis();
/**
* 获取体温数据统计 --本周
* @return
*/
- List<StatisVo> getAnimalStatisWeek();
+ List<Map<String, Object>> getAnimalStatisWeek();
/**
* 体温数据的分页数据
@@ -32,4 +33,10 @@
* @return
*/
List<BladeAnimalHeat> selectAnimalHeatPageList(IPage<BladeAnimalHeat> page, AnimalHeatVo animalHeatVo);
+
+ /**
+ * 查询本周每天的体温数据数量
+ * @return
+ */
+ List<Map<String, Integer>> selWeekDayAnimalStatis();
}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/mapper/AnimalHeatMapper.xml b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/mapper/AnimalHeatMapper.xml
index a899abe..ccbb362 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/mapper/AnimalHeatMapper.xml
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/mapper/AnimalHeatMapper.xml
@@ -3,7 +3,7 @@
<mapper namespace="org.springblade.jfpt.animalheat.mapper.AnimalHeatMapper">
<!--查询当天体温数据统计-->
- <select id="getAnimalStatis" resultType="org.springblade.jfpt.animalheat.vo.StatisVo">
+ <select id="getAnimalStatis" resultType="java.util.HashMap">
SELECT 1 `status`,count(`status`) number FROM `blade_animal_heat` where
TO_DAYS(create_time)=TO_DAYS(now()) and `status`=1
UNION
@@ -12,7 +12,7 @@
</select>
<!--获取本周的体温统计数据-->
- <select id="getAnimalStatisWeek" resultType="org.springblade.jfpt.animalheat.vo.StatisVo">
+ <select id="getAnimalStatisWeek" resultType="java.util.HashMap">
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
@@ -31,4 +31,42 @@
ORDER BY create_time asc
</select>
+ <!--查询本周每天的体温数据(按礼拜一开始计算)-->
+ <select id="selWeekDayAnimalStatis" resultType="java.util.HashMap">
+ select DATE_FORMAT(date(subdate(curdate(),date_format(curdate(),'%w')-1)),'%m-%d') time,ifNull(count(*),0) as number
+ from blade_animal_heat
+ where
+ date_format(create_time,'%Y-%m-%d')=date(subdate(curdate(),date_format(curdate(),'%w')-1))
+ union all
+ select DATE_FORMAT(DATE(DATE_ADD(subdate(curdate(),date_format(curdate(),'%w')-1), interval 1 day)),'%m-%d') time,ifNull(count(*),0) as number
+ from blade_animal_heat
+ where
+ date_format(create_time,'%Y-%m-%d')=DATE(DATE_ADD(subdate(curdate(),date_format(curdate(),'%w')-1), interval 1 day))
+ union all
+ select DATE_FORMAT(DATE(DATE_ADD(subdate(curdate(),date_format(curdate(),'%w')-1), interval 2 day)),'%m-%d') time,ifNull(count(*),0) as number
+ from blade_animal_heat
+ where
+ date_format(create_time,'%Y-%m-%d')=DATE(DATE_ADD(subdate(curdate(),date_format(curdate(),'%w')-1), interval 2 day))
+ union all
+ select DATE_FORMAT(DATE(DATE_ADD(subdate(curdate(),date_format(curdate(),'%w')-1), interval 3 day)),'%m-%d') time,ifNull(count(*),0) as number
+ from blade_animal_heat
+ where
+ date_format(create_time,'%Y-%m-%d')=DATE(DATE_ADD(subdate(curdate(),date_format(curdate(),'%w')-1), interval 3 day))
+ union all
+ select DATE_FORMAT(DATE(DATE_ADD(subdate(curdate(),date_format(curdate(),'%w')-1), interval 4 day)),'%m-%d') time,ifNull(count(*),0) as number
+ from blade_animal_heat
+ where
+ date_format(create_time,'%Y-%m-%d')=DATE(DATE_ADD(subdate(curdate(),date_format(curdate(),'%w')-1), interval 4 day))
+ union all
+ select DATE_FORMAT(DATE(DATE_ADD(subdate(curdate(),date_format(curdate(),'%w')-1), interval 5 day)),'%m-%d') time,ifNull(count(*),0) as number
+ from blade_animal_heat
+ where
+ date_format(create_time,'%Y-%m-%d')=DATE(DATE_ADD(subdate(curdate(),date_format(curdate(),'%w')-1), interval 5 day))
+ union all
+ select DATE_FORMAT(DATE(DATE_ADD(subdate(curdate(),date_format(curdate(),'%w')-1), interval 6 day)),'%m-%d') time,ifNull(count(*),0) as number
+ from blade_animal_heat
+ where
+ date_format(create_time,'%Y-%m-%d')=DATE(DATE_ADD(subdate(curdate(),date_format(curdate(),'%w')-1), interval 6 day))
+ </select>
+
</mapper>
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/service/AnimalHeatService.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/service/AnimalHeatService.java
index cadaa15..03805a4 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/service/AnimalHeatService.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/service/AnimalHeatService.java
@@ -7,6 +7,7 @@
import org.springblade.jfpt.animalheat.vo.StatisVo;
import java.util.List;
+import java.util.Map;
/**
* 体温监测服务层接口层
@@ -23,7 +24,7 @@
* @param animalHeatVo 条件参数 开始时间,结束时间
* @return
*/
- List<StatisVo> getAnimalStatis(AnimalHeatVo animalHeatVo);
+ List<Map<String, Object>> getAnimalStatis(AnimalHeatVo animalHeatVo);
/**
* 体温数据的分页数据
@@ -32,4 +33,10 @@
* @return
*/
IPage<BladeAnimalHeat> selectAnimalHeatPage(IPage<BladeAnimalHeat> page, AnimalHeatVo animalHeatVo);
+
+ /**
+ * 查询本周每天的体温数据数量
+ * @return
+ */
+ List<Map<String,Integer>> selWeekDayAnimalStatis();
}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/service/impl/AnimalHeatServiceImpl.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/service/impl/AnimalHeatServiceImpl.java
index 0bfa7e9..1920bd8 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/service/impl/AnimalHeatServiceImpl.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/service/impl/AnimalHeatServiceImpl.java
@@ -32,9 +32,6 @@
@Value("${picture.addUrl}")
private String picAddUrl;
- @Value("${picture.pre}")
- private String picPre;
-
/**
* 新增体温数据
@@ -45,6 +42,7 @@
public void save(String body) {
//1.截取信息
int i = body.indexOf("{");
+ String host = body.substring(body.indexOf("192."), body.indexOf("Accept-Encoding"));
//2.从 { 处开始截取
int length = body.length();
//3.截取,由于获取数据时,} 被去除,需要加上
@@ -52,14 +50,20 @@
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 method = data.get("method").toString();
+ if (method.contains("infrared_aiom_picture")){
+ bladeAnimalHeat.setMethod(0);
+ }
+ bladeAnimalHeat.setSerialno(data.get("serialno").toString());
+ bladeAnimalHeat.setIp(host);
String picture = data.get("picture").toString();
//将二进制原始图片转换成图片
- ImageUtil.base64StringToImage(picture);
- //bladeAnimalHeat.setPicture(data.get("picture").toString()); //暂时不存入
+ String imageUrl = ImageUtil.base64StringToImage(picture);
+ //存入图片地址url
+ bladeAnimalHeat.setPicture(picAddUrl+imageUrl);
String temp_red =data.get("temp_red").toString();
String[] temRedArr = temp_red.substring(1,temp_red.length()-1).split(",");
if (temRedArr.length>1){
@@ -90,7 +94,7 @@
* @return
*/
@Override
- public List<StatisVo> getAnimalStatis(AnimalHeatVo animalHeatVo) {
+ public List<Map<String, Object>> getAnimalStatis(AnimalHeatVo animalHeatVo) {
if(null!= animalHeatVo.getStatus()){
//查询当天的统计数据
if (animalHeatVo.getStatus()==0){
@@ -115,4 +119,15 @@
public IPage<BladeAnimalHeat> selectAnimalHeatPage(IPage<BladeAnimalHeat> page, AnimalHeatVo animalHeatVo) {
return page.setRecords(baseMapper.selectAnimalHeatPageList(page, animalHeatVo));
}
+
+
+ /**
+ * 查询本周每天的体温数据数量
+ * @return
+ */
+ @Override
+ public List<Map<String, Integer>> selWeekDayAnimalStatis() {
+ List<Map<String,Integer>> selWeekDayAnimalStatis;
+ return baseMapper.selWeekDayAnimalStatis();
+ }
}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/util/ImageUtil.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/util/ImageUtil.java
index 15c444e..f14feca 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/util/ImageUtil.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/util/ImageUtil.java
@@ -23,11 +23,7 @@
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;
+ private static String PRE_URL = "software/minio/data/jfpt/animalHeat/";
/**
* 二进制原始数据转换为图片
@@ -36,16 +32,20 @@
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()
+ File w2 = new File("D://"+PRE_URL+StringPool.SLASH+ DateUtil.today()+StringPool.SLASH+ StringUtil.randomUUID()
+".jpg");//可以是jpg,png,gif格式
-
+ //判断父文件夹存在与否
+ File parentFile = w2.getParentFile();
+ System.out.println("parentFile = " + parentFile);
+ if (!parentFile.exists()){
+ //如果不存在,则创建
+ parentFile.mkdirs();
+ }
ImageIO.write(bi1, "jpg", w2);//不管输出什么格式图片,此处不需改动
//返回图片路径
- return picPre+ StringPool.SLASH+ DateUtil.today()+StringPool.SLASH+ StringUtil.randomUUID()
+ return PRE_URL+ StringPool.SLASH+ DateUtil.today()+StringPool.SLASH+ StringUtil.randomUUID()
+StringPool.DOT+ "jpg";
} catch (IOException e) {
e.printStackTrace();
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/TcpServer.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/TcpServer.java
index d84e838..efd7c46 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/TcpServer.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/TcpServer.java
@@ -9,6 +9,7 @@
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.codec.DelimiterBasedFrameDecoder;
+import io.netty.util.ReferenceCountUtil;
public class TcpServer {
@@ -64,6 +65,7 @@
//优雅地退出,释放线程池资源
boss.shutdownGracefully();
worker.shutdownGracefully();
+
}
}
});
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/TcpServerHandler.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/TcpServerHandler.java
index f12c77c..23ad48f 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/TcpServerHandler.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyTcpServer/TcpServerHandler.java
@@ -4,6 +4,8 @@
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
+import io.netty.channel.SimpleChannelInboundHandler;
+import io.netty.util.ReferenceCountUtil;
import org.springblade.jfpt.alarm.service.IAlarmService;
import org.springblade.jfpt.equipment.service.IEquipmentService;
import org.springblade.jfpt.nettyServer.NettyConfig;
@@ -32,9 +34,6 @@
public void channelActive(ChannelHandlerContext ctx) throws Exception {
System.out.println("CTX:"+ctx.channel());
System.out.println("客户端与服务端连接开始...");
-// ChannelId id = ctx.channel().id();
-// String s = id.toString();
- //NettyConfig.group.add(ctx.channel());
}
/**
@@ -73,6 +72,9 @@
ByteBuf buf = (ByteBuf) info;
byte[] req = new byte[buf.readableBytes()];
buf.readBytes(req);
+ //手动释放内存
+ ReferenceCountUtil.release(info);
+
String body = new String(req, "UTF-8");
String content = body;
System.out.println("接收客户端数据:" + body);
diff --git a/blade-service/blade-jfpts/src/main/resources/application.properties b/blade-service/blade-jfpts/src/main/resources/application.properties
index 2fd2358..5c993ad 100644
--- a/blade-service/blade-jfpts/src/main/resources/application.properties
+++ b/blade-service/blade-jfpts/src/main/resources/application.properties
@@ -1,2 +1,2 @@
picture.addUrl= http://36.134.81.48:9000/
-picture.pre= software/minio/data/animalHeat/
+picture.pre= software/minio/data/jfpt/animalHeat/
--
Gitblit v1.9.3