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