From dfed9c07aa8da5791d568736716bc4b44d59ebaf Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Fri, 16 Apr 2021 13:33:53 +0800
Subject: [PATCH] jfreechart+easyExcel 方式导出报表
---
blade-ops/blade-report/src/main/java/org/springblade/report/service/impl/ReportFileServiceImpl.java | 56 +++
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/IAlarmService.java | 8
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/controller/AnimalHeatController.java | 104 +++++
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.xml | 182 ++++-----
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.java | 8
blade-common/src/main/java/org/springblade/common/entity/ReportReturnData.java | 9
blade-service/blade-jfpts/pom.xml | 6
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/mapper/AnimalHeatMapper.xml | 131 ++----
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/mapper/AnimalHeatMapper.java | 7
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/pie/JFreeChartUtil.java | 112 ++++++
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/mapper/healthcodeMapper.java | 7
/dev/null | 10
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/feign/ReportFeign.java | 97 ++++
blade-common/src/main/java/org/springblade/common/converter/AnimalHeatTypeConverter.java | 31 +
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/service/impl/HealthcodeServiceImpl.java | 10
blade-common/src/main/java/org/springblade/common/entity/AnimalHeatExcel.java | 18
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/impl/AlarmServiceImpl.java | 11
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/service/AnimalHeatService.java | 6
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/pie/ImageData.java | 20 +
blade-ops/blade-report/src/main/java/org/springblade/report/feign/ReportClient.java | 27 +
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/mapper/healthcodeMapper.xml | 202 ++++------
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/service/IhealthcodeService.java | 7
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/animalheat/service/impl/AnimalHeatServiceImpl.java | 10
23 files changed, 748 insertions(+), 331 deletions(-)
diff --git a/blade-common/src/main/java/org/springblade/common/converter/AnimalHeatTypeConverter.java b/blade-common/src/main/java/org/springblade/common/converter/AnimalHeatTypeConverter.java
new file mode 100644
index 0000000..738f200
--- /dev/null
+++ b/blade-common/src/main/java/org/springblade/common/converter/AnimalHeatTypeConverter.java
@@ -0,0 +1,31 @@
+package org.springblade.common.converter;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+import org.springframework.stereotype.Component;
+
+@Component
+public class AnimalHeatTypeConverter implements Converter<Integer> {
+ @Override
+ public Class supportJavaTypeKey() {
+ return null;
+ }
+
+ @Override
+ public CellDataTypeEnum supportExcelTypeKey() {
+ return null;
+ }
+
+ @Override
+ public Integer convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+ return null;
+ }
+
+ @Override
+ public CellData convertToExcelData(Integer integer, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+ return new CellData(integer.equals(1) ? "异常":"正常");
+ }
+}
diff --git a/blade-common/src/main/java/org/springblade/common/entity/AnimalHeatExcel.java b/blade-common/src/main/java/org/springblade/common/entity/AnimalHeatExcel.java
index 8139022..7893c9d 100644
--- a/blade-common/src/main/java/org/springblade/common/entity/AnimalHeatExcel.java
+++ b/blade-common/src/main/java/org/springblade/common/entity/AnimalHeatExcel.java
@@ -1,10 +1,13 @@
package org.springblade.common.entity;
+import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
+import org.springblade.common.converter.AnimalHeatTypeConverter;
+
import java.util.Date;
@Data
@@ -13,7 +16,7 @@
@ContentRowHeight(18)
public class AnimalHeatExcel {
- @ColumnWidth(15)
+ @ColumnWidth(12)
@ExcelProperty("体温检测编号")
private Integer id;// bigint(20) NOT NULL COMMENT '主键',
@@ -25,12 +28,15 @@
@ExcelProperty("设备IP")
private String ip;// varchar(63) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '设备IP地址',
- @ColumnWidth(50)
+ @ColumnWidth(60)
@ExcelProperty("图片URL")
private String picture;// varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '图片url路径',
-// @TableField("picture_red")
-// private String pictureRed;// varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '红外图片url路径',
+ /**
+ * 忽略,不显示到excel
+ */
+ @ExcelIgnore
+ private String pictureRed;// varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '红外图片url路径',
@ColumnWidth(15)
@ExcelProperty("体温")
@@ -47,7 +53,7 @@
@ExcelProperty("创建时间")
private Date createTime;// datetime DEFAULT NULL COMMENT '创建时间',
- @ColumnWidth(25)
- @ExcelProperty("状态 1:异常 0:正常")
+ @ColumnWidth(10)
+ @ExcelProperty(value = "状态",converter = AnimalHeatTypeConverter.class)
private Integer status;//状态 1为异常 0为正常 ,以37.3度为标准,大于37.3度为高温
}
diff --git a/blade-common/src/main/java/org/springblade/common/entity/ReportReturnData.java b/blade-common/src/main/java/org/springblade/common/entity/ReportReturnData.java
new file mode 100644
index 0000000..204d8b8
--- /dev/null
+++ b/blade-common/src/main/java/org/springblade/common/entity/ReportReturnData.java
@@ -0,0 +1,9 @@
+package org.springblade.common.entity;
+
+import lombok.Data;
+
+@Data
+public class ReportReturnData {
+ private String type;
+ private Integer count;
+}
diff --git a/blade-ops/blade-report/src/main/java/org/springblade/report/entity/HealthcodeReturnData.java b/blade-ops/blade-report/src/main/java/org/springblade/report/entity/HealthcodeReturnData.java
deleted file mode 100644
index 071567b..0000000
--- a/blade-ops/blade-report/src/main/java/org/springblade/report/entity/HealthcodeReturnData.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.springblade.report.entity;
-
-import lombok.Data;
-
-@Data
-public class HealthcodeReturnData {
- private String type;
- private Integer num;
-}
diff --git a/blade-ops/blade-report/src/main/java/org/springblade/report/feign/ReportClient.java b/blade-ops/blade-report/src/main/java/org/springblade/report/feign/ReportClient.java
index cd06b4a..71923aa 100644
--- a/blade-ops/blade-report/src/main/java/org/springblade/report/feign/ReportClient.java
+++ b/blade-ops/blade-report/src/main/java/org/springblade/report/feign/ReportClient.java
@@ -18,12 +18,28 @@
List<AlarmExcel> getAlarmList(@RequestBody String body);
/**
+ * 获取实时警情图表数据
+ * @param body
+ * @return
+ */
+ @PostMapping("getAlarmPie")
+ List<ReportReturnData> getAlarmPie(@RequestBody String body);
+
+ /**
* 获取健康码数据集合
* @param body map集合数据
* @return
*/
@PostMapping("getHealthcodeList")
List<HealthcodeExcel> getHealthcodeList(@RequestBody String body);
+
+ /**
+ * 获取健康码图表数据
+ * @param body map集合数据
+ * @return
+ */
+ @PostMapping("getHealthcodePie")
+ List<ReportReturnData> getHealthcodePie(@RequestBody String body);
/**
@@ -33,6 +49,14 @@
*/
@PostMapping("getAnimalHeatList")
List<AnimalHeatExcel> getAnimalHeatList(@RequestBody String body);
+
+ /**
+ * 获取体温数据集合
+ * @param body map集合数据
+ * @return
+ */
+ @PostMapping("getAnimalHeatPie")
+ List<ReportReturnData> getAnimalHeatPie(@RequestBody String body);
/**
* 获取包裹数据集合
@@ -49,4 +73,7 @@
*/
@PostMapping("getParcelKindList")
List<ParcelKindExcel> getParcelKindList(@RequestBody String body);
+
+
+
}
diff --git a/blade-ops/blade-report/src/main/java/org/springblade/report/service/impl/ReportFileServiceImpl.java b/blade-ops/blade-report/src/main/java/org/springblade/report/service/impl/ReportFileServiceImpl.java
index aea23f7..4fd2877 100644
--- a/blade-ops/blade-report/src/main/java/org/springblade/report/service/impl/ReportFileServiceImpl.java
+++ b/blade-ops/blade-report/src/main/java/org/springblade/report/service/impl/ReportFileServiceImpl.java
@@ -1,6 +1,7 @@
package org.springblade.report.service.impl;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -12,6 +13,8 @@
import org.springblade.report.service.ReportFileService;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.Map;
@@ -45,7 +48,7 @@
/**
- * 获取包裹数据集合
+ * 获取实时警情数据集合
* @param beanName 调用名称
* @param dataName 返回数据名称
* @param map map集合数据
@@ -56,6 +59,22 @@
String body = JSON.toJSONString(map);
if (null!=beanName){
return reportClient.getAlarmList(body);
+ }
+ return null;
+ }
+
+ /**
+ * 获取实时警情图表数据
+ * @param beanName 调用名称
+ * @param dataName 返回数据名称
+ * @param map map集合数据
+ * @return
+ */
+ public List<ReportReturnData> getAlarmPie(String beanName, String dataName, Map<String,Object> map){
+ //将map转换为json对象
+ String body = JSON.toJSONString(map);
+ if (null!=beanName){
+ return reportClient.getAlarmPie(body);
}
return null;
}
@@ -78,6 +97,22 @@
}
/**
+ * 获取健康码图表数据
+ * @param beanName 调用名称
+ * @param dataName 返回数据名称
+ * @param map map集合数据
+ * @return
+ */
+ public List<ReportReturnData> getHealthcodePie(String beanName, String dataName, Map<String,Object> map){
+ //将map转换为json对象
+ String s = JSON.toJSONString(map);
+ if (null!=beanName){
+ return reportClient.getHealthcodePie(s);
+ }
+ return null;
+ }
+
+ /**
* 获取体温数据集合
* @param beanName 调用名称
* @param dataName 返回数据名称
@@ -88,12 +123,31 @@
//将map转换为json对象
String body = JSON.toJSONString(map);
if (null!=beanName){
+ System.out.println("reportClient.getAnimalHeatList(body) = " + reportClient.getAnimalHeatList(body));
return reportClient.getAnimalHeatList(body);
}
return null;
}
/**
+ * 获取体温数据集合
+ * @param beanName 调用名称
+ * @param dataName 返回数据名称
+ * @param map map集合数据
+ * @return
+ */
+ @PostMapping("getAnimalHeatPie")
+ public List<ReportReturnData> getAnimalHeatPie(String beanName, String dataName, Map<String,Object> map){
+ //将map转换为json对象
+ String body = JSON.toJSONString(map);
+ if (null!=beanName){
+ System.out.println("reportClient = " + reportClient.getAnimalHeatPie(body));
+ return reportClient.getAnimalHeatPie(body);
+ }
+ return null;
+ }
+
+ /**
* 获取包裹数据集合
* @param beanName 调用名称
* @param dataName 返回数据名称
diff --git a/blade-service/blade-jfpts/pom.xml b/blade-service/blade-jfpts/pom.xml
index 2f440a4..602338f 100644
--- a/blade-service/blade-jfpts/pom.xml
+++ b/blade-service/blade-jfpts/pom.xml
@@ -79,6 +79,12 @@
<artifactId>FFmpeg-windows-x86_64</artifactId>
<version>2.0.1.1</version>
</dependency>
+ <!--用于生成图片 -->
+ <dependency>
+ <groupId>org.jfree</groupId>
+ <artifactId>jfreechart</artifactId>
+ <version>1.0.19</version>
+ </dependency>
</dependencies>
</project>
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.java
index 05376c5..07b69ea 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.java
@@ -20,6 +20,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
+import org.springblade.common.entity.ReportReturnData;
import org.springblade.jfpt.alarm.entity.Alarm;
import org.springblade.common.entity.AlarmExcel;
import org.springblade.jfpt.alarm.vo.AlarmVO;
@@ -115,4 +116,11 @@
* @param alarmVO 查询条件
*/
List<AlarmExcel> exportAlarm(@Param("alarm")AlarmVO alarmVO);
+
+ /**
+ * 获取实时警情图表统计数据
+ * @param alarmVO
+ * @return
+ */
+ List<ReportReturnData> getAlarmPie(@Param("alarm")AlarmVO alarmVO);
}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.xml b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.xml
index bae32d7..df3dad8 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.xml
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.xml
@@ -35,21 +35,7 @@
<result column="aaddress" property="aaddress"/>
</resultMap>
-
- <select id="selectAlarmPage" resultMap="alarmResultMap">
- select
- a.id,a.alarmType,a.alarmPeople,a.alarmTime,a.galarmPeople,a.sex,a.phoneNumber,a.place,a.content,a.waringType,a.bz,
- a.deviceNumber,a.region,a.district,a.vaddress,a.aaddress,
- a.alarmId,a.LEVEL,e.jd,e.wd,a.jtype,a.rname,a.jjTime,a.province,a.city,a.cid,
- e.serialNumber,e.oneContacts,e.ThreeContacts,e.twoContacts,e.onePhone,e.twoPhone,e.ThreePhone,
- e.stype,
- e.oneId,
- e.twoId,
- e.threeId,
- e.deptId,
- e.channelNumber from sys_alarm a
- LEFT JOIN sys_equipment e on e.deviceNumber=a.deviceNumber
- where 1=1
+ <sql id="alarmCondition">
<if test="alarm.jtype!=null">
and a.jtype like concat('%',#{alarm.jtype},'%')
</if>
@@ -130,9 +116,83 @@
and hour(alarmTime)>=22 and hour(alarmTime) <24
</if>
</if>
+ </sql>
+ <sql id="alarmConditionPie">
+ <if test="alarm.beginTime!=null and alarm.beginTime!=''">
+ and alarmTime>=#{alarm.beginTime}
+ </if>
+ <if test="alarm.endTime!=null and alarm.endTime!=''">
+ and alarmTime<=#{alarm.endTime}
+ </if>
+ <if test="alarm.timeDesc!=null and alarm.timeDesc!=''">
+ <if test="alarm.timeDesc=='30分钟以上'">
+ and czTime-alarmTime>1800
+ </if>
+ <if test="alarm.timeDesc=='10-30分钟'">
+ and czTime-alarmTime>600 and czTime-alarmTime <1800
+ </if>
+ <if test="alarm.timeDesc=='5-10分钟'">
+ and czTime-alarmTime>300 and czTime-alarmTime <600
+ </if>
+ <if test="alarm.timeDesc=='小于5分钟'">
+ and czTime-alarmTime>0 and czTime-alarmTime <300
+ </if>
+ <if test="alarm.timeDesc=='0-2'">
+ and hour(alarmTime)>=0 and hour(alarmTime) <2
+ </if>
+ <if test="alarm.timeDesc=='2-4'">
+ and hour(alarmTime)>=2 and hour(alarmTime) <4
+ </if>
+ <if test="alarm.timeDesc=='4-6'">
+ and hour(alarmTime)>=4 and hour(alarmTime) <6
+ </if>
+ <if test="alarm.timeDesc=='6-8'">
+ and hour(alarmTime)>=6 and hour(alarmTime) <8
+ </if>
+ <if test="alarm.timeDesc=='8-10'">
+ and hour(alarmTime)>=8 and hour(alarmTime) <10
+ </if>
+ <if test="alarm.timeDesc=='10-12'">
+ and hour(alarmTime)>=10 and hour(alarmTime) <12
+ </if>
+ <if test="alarm.timeDesc=='12-14'">
+ and hour(alarmTime)>=12 and hour(alarmTime) <14
+ </if>
+ <if test="alarm.timeDesc=='14-16'">
+ and hour(alarmTime)>=14 and hour(alarmTime) <16
+ </if>
+ <if test="alarm.timeDesc=='16-18'">
+ and hour(alarmTime)>=16 and hour(alarmTime) <18
+ </if>
+ <if test="alarm.timeDesc=='18-20'">
+ and hour(alarmTime)>=18 and hour(alarmTime) <20
+ </if>
+ <if test="alarm.timeDesc=='20-22'">
+ and hour(alarmTime)>=20 and hour(alarmTime) <22
+ </if>
+ <if test="alarm.timeDesc=='22-24'">
+ and hour(alarmTime)>=22 and hour(alarmTime) <24
+ </if>
+ </if>
+ </sql>
+
+ <select id="selectAlarmPage" resultMap="alarmResultMap">
+ select
+ a.id,a.alarmType,a.alarmPeople,a.alarmTime,a.galarmPeople,a.sex,a.phoneNumber,a.place,a.content,a.waringType,a.bz,
+ a.deviceNumber,a.region,a.district,a.vaddress,a.aaddress,
+ a.alarmId,a.LEVEL,e.jd,e.wd,a.jtype,a.rname,a.jjTime,a.province,a.city,a.cid,
+ e.serialNumber,e.oneContacts,e.ThreeContacts,e.twoContacts,e.onePhone,e.twoPhone,e.ThreePhone,
+ e.stype,
+ e.oneId,
+ e.twoId,
+ e.threeId,
+ e.deptId,
+ e.channelNumber from sys_alarm a
+ LEFT JOIN sys_equipment e on e.deviceNumber=a.deviceNumber
+ where 1=1
+ <include refid="alarmCondition"></include>
and a.waringType IN("紧急求救")
-
ORDER BY
a.jtype ASC,
a.alarmTime DESC
@@ -566,92 +626,18 @@
from sys_alarm a
LEFT JOIN sys_equipment e on e.deviceNumber=a.deviceNumber
where 1=1
- <if test="alarm.jtype!=null">
- and a.jtype like concat('%',#{alarm.jtype},'%')
- </if>
- <if test="alarm.deviceNumber!=null">
- and a.deviceNumber like concat('%',#{alarm.deviceNumber},'%')
- </if>
- <if test="alarm.galarmPeople!=null">
- and a.galarmPeople like concat('%',#{alarm.galarmPeople},'%')
- </if>
- <if test="alarm.district!=null">
- and a.district like concat('%',#{alarm.district},'%')
- </if>
- <if test="alarm.province!=null">
- and a.province like concat('%',#{alarm.province},'%')
- </if>
- <if test="alarm.city!=null">
- and a.city like concat('%',#{alarm.city},'%')
- </if>
- <if test="alarm.level!=null">
- and a.level like concat('%',#{alarm.level},'%')
- </if>
- <if test="alarm.waringType!=null">
- and a.waringType like concat('%',#{alarm.waringType},'%')
- </if>
- <if test="alarm.beginTime!=null and alarm.beginTime!=''">
- and a.alarmTime>=#{alarm.beginTime}
- </if>
- <if test="alarm.endTime!=null and alarm.endTime!=''">
- and a.alarmTime<=#{alarm.endTime}
- </if>
- <if test="alarm.timeDesc!=null and alarm.timeDesc!=''">
- <if test="alarm.timeDesc=='30分钟以上'">
- and czTime-alarmTime>1800
- </if>
- <if test="alarm.timeDesc=='10-30分钟'">
- and czTime-alarmTime>600 and czTime-alarmTime <1800
- </if>
- <if test="alarm.timeDesc=='5-10分钟'">
- and czTime-alarmTime>300 and czTime-alarmTime <600
- </if>
- <if test="alarm.timeDesc=='小于5分钟'">
- and czTime-alarmTime>0 and czTime-alarmTime <300
- </if>
- <if test="alarm.timeDesc=='0-2'">
- and hour(alarmTime)>=0 and hour(alarmTime) <2
- </if>
- <if test="alarm.timeDesc=='2-4'">
- and hour(alarmTime)>=2 and hour(alarmTime) <4
- </if>
- <if test="alarm.timeDesc=='4-6'">
- and hour(alarmTime)>=4 and hour(alarmTime) <6
- </if>
- <if test="alarm.timeDesc=='6-8'">
- and hour(alarmTime)>=6 and hour(alarmTime) <8
- </if>
- <if test="alarm.timeDesc=='8-10'">
- and hour(alarmTime)>=8 and hour(alarmTime) <10
- </if>
- <if test="alarm.timeDesc=='10-12'">
- and hour(alarmTime)>=10 and hour(alarmTime) <12
- </if>
- <if test="alarm.timeDesc=='12-14'">
- and hour(alarmTime)>=12 and hour(alarmTime) <14
- </if>
- <if test="alarm.timeDesc=='14-16'">
- and hour(alarmTime)>=14 and hour(alarmTime) <16
- </if>
- <if test="alarm.timeDesc=='16-18'">
- and hour(alarmTime)>=16 and hour(alarmTime) <18
- </if>
- <if test="alarm.timeDesc=='18-20'">
- and hour(alarmTime)>=18 and hour(alarmTime) <20
- </if>
- <if test="alarm.timeDesc=='20-22'">
- and hour(alarmTime)>=20 and hour(alarmTime) <22
- </if>
- <if test="alarm.timeDesc=='22-24'">
- and hour(alarmTime)>=22 and hour(alarmTime) <24
- </if>
- </if>
-
+ <include refid="alarmCondition"></include>
and a.waringType IN("紧急求救")
-
ORDER BY
a.jtype ASC,
a.alarmTime DESC
</select>
+ <!--获取实时警情图表统计数据-->
+ <select id="getAlarmPie" resultType="org.springblade.common.entity.ReportReturnData">
+ select if(1=1,"紧急求救",0) type,ifnull(count(*),0) count from sys_alarm
+ where waringType="紧急求救"
+ <include refid="alarmConditionPie"></include>
+ </select>
+
</mapper>
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/IAlarmService.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/IAlarmService.java
index 274add4..72500b7 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/IAlarmService.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/IAlarmService.java
@@ -18,6 +18,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.common.entity.ReportReturnData;
import org.springblade.jfpt.alarm.entity.Alarm;
import org.springblade.common.entity.AlarmExcel;
import org.springblade.jfpt.alarm.vo.AlarmVO;
@@ -125,4 +126,11 @@
* @param alarmVO 查询条件
*/
List<AlarmExcel> exportAlarm(AlarmVO alarmVO);
+
+ /**
+ * 获取实时警情数据集合
+ * @param alarmVO
+ * @return
+ */
+ List<ReportReturnData> getAlarmPie(AlarmVO alarmVO);
}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/impl/AlarmServiceImpl.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/impl/AlarmServiceImpl.java
index 28fedfd..b256cbc 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/impl/AlarmServiceImpl.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/impl/AlarmServiceImpl.java
@@ -18,6 +18,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.common.entity.ReportReturnData;
import org.springblade.jfpt.alarm.constant.AlarmTimeConstant;
import org.springblade.jfpt.alarm.entity.Alarm;
import org.springblade.jfpt.alarm.mapper.AlarmMapper;
@@ -383,4 +384,14 @@
public List<AlarmExcel> exportAlarm(AlarmVO alarmVO) {
return baseMapper.exportAlarm(alarmVO);
}
+
+ /**
+ * 获取实时警情数据集合
+ * @param alarmVO
+ * @return
+ */
+ @Override
+ public List<ReportReturnData> getAlarmPie(AlarmVO alarmVO) {
+ return baseMapper.getAlarmPie(alarmVO);
+ }
}
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 d096c1f..22b63dc 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
@@ -1,8 +1,20 @@
package org.springblade.jfpt.animalheat.controller;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.EasyExcelFactory;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
+import org.apache.commons.codec.Charsets;
+import org.jfree.chart.ChartFactory;
+import org.jfree.chart.ChartUtilities;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
+import org.jfree.chart.plot.PiePlot;
+import org.jfree.data.general.DefaultPieDataset;
+import org.springblade.common.entity.ReportReturnData;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
@@ -12,11 +24,19 @@
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.pie.ImageData;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
+import java.awt.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URLEncoder;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -80,7 +100,89 @@
@GetMapping("/export-animalHeat")
public void exportAnimalHeat(AnimalHeatVo animalHeatVo,HttpServletResponse response){
List<AnimalHeatExcel> list = animalHeatService.exportAnimalHeat(animalHeatVo);
- ExcelUtil.export(response, "体温检测数据" + DateUtil.time(), "体温检测数据表", list, AnimalHeatExcel.class);
+ ExcelUtil.export(response, "体温检测数据" + DateUtil.time(), "体温检测数据表", list,AnimalHeatExcel.class );
+ }
+
+ /**
+ * 导出体温数据列表
+ * @param animalHeatVo 条件
+ * @param response 返回域
+ */
+ @GetMapping("/getAnimalHeatStatis")
+ public void getAnimalHeatStatis(AnimalHeatVo animalHeatVo,HttpServletResponse response){
+ //获取统计数据
+ List<AnimalHeatExcel> animalHeatExcels = animalHeatService.exportAnimalHeat(animalHeatVo);
+ List<ReportReturnData> reportReturnData = animalHeatService.getAnimalHeatPie(animalHeatVo);
+
+ //创建jfreechart 画图对象
+ DefaultPieDataset pds = new DefaultPieDataset();
+
+ //遍历统计数据,将数据保存到饼图对象中
+ for (ReportReturnData returnData:reportReturnData) {
+ pds.setValue(returnData.getType(),returnData.getCount());
+ }
+
+ //声明excelWriter对象
+ ExcelWriter excelWriter = null;
+ try {
+ // 分别是:显示图表的标题、需要提供对应图表的DateSet对象、是否显示图例、是否生成贴士以及是否生成URL链接
+ JFreeChart chart = ChartFactory.createPieChart("体温数据统计图", pds, false, false, true);
+ // 如果不使用Font,中文将显示不出来
+ Font font = new Font("宋体", Font.BOLD, 24);
+ // 设置图片标题的字体
+ chart.getTitle().setFont(font);
+ // 得到图块,准备设置标签的字体
+ PiePlot plot = (PiePlot) chart.getPlot();
+ // 设置标签字体
+ plot.setLabelFont(font);
+ plot.setStartAngle(new Float(3.14f / 2f));
+ // 设置plot的前景色透明度
+ plot.setForegroundAlpha(0.7f);
+ // 设置plot的背景色透明度
+ plot.setBackgroundAlpha(0.0f);
+ // 设置标签生成器(默认{0})
+ // {0}:key {1}:value {2}:百分比 {3}:sum
+ plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}({1}占{2})"));
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+
+ //创建图片数据集合,对象
+ ArrayList<ImageData> imageDatas = new ArrayList<>();
+ ImageData imageData = new ImageData();
+ try {
+ // 将图表写入到ByteArrayOutputStream流中
+ ChartUtilities.writeChartAsJPEG(bos, chart, 800, 700);
+ //将字节数组输出流写入到输入流中
+ InputStream inputStream = new ByteArrayInputStream(bos.toByteArray());
+ //excel 文件名称
+ String fileName = "体温统计报表" + System.currentTimeMillis() + ".xlsx";
+ //封装数据到图表
+ imageData.setInputStream(inputStream);
+ imageDatas.add(imageData);
+
+ //设置响应体
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding(Charsets.UTF_8.name());
+ fileName = URLEncoder.encode(fileName, Charsets.UTF_8.name());
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+ //写入
+ excelWriter = EasyExcel.write(response.getOutputStream()).build();
+
+ //shell0
+ WriteSheet writeSheet = EasyExcel.writerSheet(0, "图表").head(ImageData.class).build();
+ excelWriter.write(imageDatas, writeSheet);
+
+ //shell1
+ WriteSheet writeSheet0 = EasyExcel.writerSheet(1, "数据列表").head(AnimalHeatExcel.class).build();
+ excelWriter.write(animalHeatExcels, writeSheet0);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }finally {
+ //完成后会关闭流
+ excelWriter.finish();
+ }
}
}
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 3dda7d8..e5613f5 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
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
+import org.springblade.common.entity.ReportReturnData;
import org.springblade.jfpt.animalheat.entity.BladeAnimalHeat;
import org.springblade.common.entity.AnimalHeatExcel;
import org.springblade.jfpt.animalheat.vo.AnimalHeatVo;
@@ -82,4 +83,10 @@
* @param animalHeatVo 条件
*/
List<AnimalHeatExcel> exportAnimalHeat(@Param("animalHeatVo")AnimalHeatVo animalHeatVo);
+
+ /**
+ * 导出体温数据列表
+ * @param animalHeatVo 条件
+ */
+ List<ReportReturnData> getAnimalHeatPie(@Param("animalHeatVo")AnimalHeatVo animalHeatVo);
}
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 9f8ba16..2435b5d 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
@@ -2,37 +2,7 @@
<!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="java.util.HashMap">
- SELECT 1 `name`,count(`status`) value FROM `blade_animal_heat` where
- TO_DAYS(create_time)=TO_DAYS(now()) and `status`=1
- UNION
- SELECT 0 `name`,count(`status`) value FROM `blade_animal_heat` where
- TO_DAYS(create_time)=TO_DAYS(now()) and `status`=0
- </select>
-
- <!--获取本周的体温统计数据-->
- <select id="getAnimalStatisWeek" resultType="java.util.HashMap">
- SELECT 1 `name`,count(`status`) value FROM `blade_animal_heat` where
- YEARWEEK(date_format(create_time,'%Y-%m-%d'),1) = YEARWEEK(now(),1) and `status`=1
- UNION
- SELECT 0 `name`,count(`status`) value FROM `blade_animal_heat` where
- YEARWEEK(date_format(create_time,'%Y-%m-%d'),1) = YEARWEEK(now(),1) and `status`=0
- </select>
-
- <!--获取本月的体温统计数据-->
- <select id="getAnimalStatisMonth" resultType="java.util.HashMap">
- SELECT 1 `name`,count(`status`) value FROM `blade_animal_heat` where
- date_format(create_time,'%Y%m') = date_format(now(),'%Y%m') and `status`=1
- UNION
- SELECT 0 `name`,count(`status`) value FROM `blade_animal_heat` where
- date_format(create_time,'%Y%m') = date_format(now(),'%Y%m') and `status`=0
- </select>
-
- <!--查询体温数据的分页数据-->
- <select id="selectAnimalHeatPageList" resultType="org.springblade.jfpt.animalheat.entity.BladeAnimalHeat">
- SELECT * FROM blade_animal_heat
- where 1=1
+ <sql id="animalHeatCondition">
<if test="animalHeatVo.type==0">
and to_days(create_time)=to_days(now())
</if>
@@ -41,9 +11,6 @@
</if>
<if test="animalHeatVo.type==2">
and date_format(create_time,'%Y%m') = date_format(now(),'%Y%m')
- </if>
- <if test="animalHeatVo.status!=null">
- and status=#{animalHeatVo.status}
</if>
<if test="animalHeatVo.begTime!=null and animalHeatVo.begTime!='' and animalHeatVo.endTime!=null and animalHeatVo.endTime!='' ">
and date(create_time) between #{animalHeatVo.begTime} and #{animalHeatVo.endTime}
@@ -86,6 +53,43 @@
and hour(create_time)>=22 and hour(create_time) <24
</if>
</if>
+ </sql>
+
+ <!--查询当天体温数据统计-->
+ <select id="getAnimalStatis" resultType="java.util.HashMap">
+ SELECT 1 `name`,count(`status`) value FROM `blade_animal_heat` where
+ TO_DAYS(create_time)=TO_DAYS(now()) and `status`=1
+ UNION
+ SELECT 0 `name`,count(`status`) value FROM `blade_animal_heat` where
+ TO_DAYS(create_time)=TO_DAYS(now()) and `status`=0
+ </select>
+
+ <!--获取本周的体温统计数据-->
+ <select id="getAnimalStatisWeek" resultType="java.util.HashMap">
+ SELECT 1 `name`,count(`status`) value FROM `blade_animal_heat` where
+ YEARWEEK(date_format(create_time,'%Y-%m-%d'),1) = YEARWEEK(now(),1) and `status`=1
+ UNION
+ SELECT 0 `name`,count(`status`) value FROM `blade_animal_heat` where
+ YEARWEEK(date_format(create_time,'%Y-%m-%d'),1) = YEARWEEK(now(),1) and `status`=0
+ </select>
+
+ <!--获取本月的体温统计数据-->
+ <select id="getAnimalStatisMonth" resultType="java.util.HashMap">
+ SELECT 1 `name`,count(`status`) value FROM `blade_animal_heat` where
+ date_format(create_time,'%Y%m') = date_format(now(),'%Y%m') and `status`=1
+ UNION
+ SELECT 0 `name`,count(`status`) value FROM `blade_animal_heat` where
+ date_format(create_time,'%Y%m') = date_format(now(),'%Y%m') and `status`=0
+ </select>
+
+ <!--查询体温数据的分页数据-->
+ <select id="selectAnimalHeatPageList" resultType="org.springblade.jfpt.animalheat.entity.BladeAnimalHeat">
+ SELECT * FROM blade_animal_heat
+ where 1=1
+ <if test="animalHeatVo.status!=null">
+ and status=#{animalHeatVo.status}
+ </if>
+ <include refid="animalHeatCondition"></include>
ORDER BY create_time desc
</select>
@@ -198,60 +202,19 @@
<select id="exportAnimalHeat" resultType="org.springblade.common.entity.AnimalHeatExcel">
SELECT * FROM blade_animal_heat
where 1=1
- <if test="animalHeatVo.type==0">
- and to_days(create_time)=to_days(now())
- </if>
- <if test="animalHeatVo.type==1">
- and YEARWEEK(date_format(create_time,'%Y-%m-%d'),1) = YEARWEEK(now(),1)
- </if>
- <if test="animalHeatVo.type==2">
- and date_format(create_time,'%Y%m') = date_format(now(),'%Y%m')
- </if>
<if test="animalHeatVo.status!=null">
and status=#{animalHeatVo.status}
</if>
- <if test="animalHeatVo.begTime!=null and animalHeatVo.begTime!='' and animalHeatVo.endTime!=null and animalHeatVo.endTime!='' ">
- and date(create_time) between #{animalHeatVo.begTime} and #{animalHeatVo.endTime}
- </if>
- <if test="animalHeatVo.timeDesc!=null and animalHeatVo.timeDesc!=''">
- <if test="animalHeatVo.timeDesc=='0-2'">
- and hour(create_time)>=0 and hour(create_time) <2
- </if>
- <if test="animalHeatVo.timeDesc=='2-4'">
- and hour(create_time)>=2 and hour(create_time) <4
- </if>
- <if test="animalHeatVo.timeDesc=='4-6'">
- and hour(create_time)>=4 and hour(create_time) <6
- </if>
- <if test="animalHeatVo.timeDesc=='6-8'">
- and hour(create_time)>=6 and hour(create_time) <8
- </if>
- <if test="animalHeatVo.timeDesc=='8-10'">
- and hour(create_time)>=8 and hour(create_time) <10
- </if>
- <if test="animalHeatVo.timeDesc=='10-12'">
- and hour(create_time)>=10 and hour(create_time) <12
- </if>
- <if test="animalHeatVo.timeDesc=='12-14'">
- and hour(create_time)>=12 and hour(create_time) <14
- </if>
- <if test="animalHeatVo.timeDesc=='14-16'">
- and hour(create_time)>=14 and hour(create_time) <16
- </if>
- <if test="animalHeatVo.timeDesc=='16-18'">
- and hour(create_time)>=16 and hour(create_time) <18
- </if>
- <if test="animalHeatVo.timeDesc=='18-20'">
- and hour(create_time)>=18 and hour(create_time) <20
- </if>
- <if test="animalHeatVo.timeDesc=='20-22'">
- and hour(create_time)>=20 and hour(create_time) <22
- </if>
- <if test="animalHeatVo.timeDesc=='22-24'">
- and hour(create_time)>=22 and hour(create_time) <24
- </if>
- </if>
+ <include refid="animalHeatCondition"></include>
ORDER BY create_time desc
</select>
+ <select id="getAnimalHeatPie" resultType="org.springblade.common.entity.ReportReturnData">
+ select if(1=1,'正常',0) type,ifnull(count(*),0) count from blade_animal_heat where status=0
+ <include refid="animalHeatCondition"></include>
+ union all
+ select if(1=1,'异常',0) type,ifnull(count(*),0) count from blade_animal_heat where status=1
+ <include refid="animalHeatCondition"></include>
+ </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 804944e..d34643a 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
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.common.entity.ReportReturnData;
import org.springblade.jfpt.animalheat.entity.BladeAnimalHeat;
import org.springblade.common.entity.AnimalHeatExcel;
import org.springblade.jfpt.animalheat.vo.AnimalHeatVo;
@@ -75,4 +76,9 @@
List<AnimalHeatExcel> exportAnimalHeat(AnimalHeatVo animalHeatVo);
+ /**
+ * 导出体温数据列表
+ * @param animalHeatVo 条件
+ */
+ List<ReportReturnData> getAnimalHeatPie(AnimalHeatVo animalHeatVo);
}
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 e6acdd9..0f4ca6c 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
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.common.entity.ReportReturnData;
import org.springblade.jfpt.alarm.constant.AlarmTimeConstant;
import org.springblade.jfpt.animalheat.entity.BladeAnimalHeat;
import org.springblade.jfpt.animalheat.mapper.AnimalHeatMapper;
@@ -285,5 +286,12 @@
return baseMapper.exportAnimalHeat(animalHeatVo);
}
-
+ /**
+ * 导出体温数据列表
+ * @param animalHeatVo 条件
+ */
+ @Override
+ public List<ReportReturnData> getAnimalHeatPie(AnimalHeatVo animalHeatVo) {
+ return baseMapper.getAnimalHeatPie(animalHeatVo);
+ }
}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/feign/ReportFeign.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/feign/ReportFeign.java
index b1fde4d..75aed39 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/feign/ReportFeign.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/feign/ReportFeign.java
@@ -36,6 +36,33 @@
public List<AlarmExcel> getAlarmList(@RequestBody String body){
Map<String,Object> map = JSONObject.parseObject(body);
//创建对象,并封装数据
+ AlarmVO alarmVO = getAlarmVO(map);
+ //查询数据并返回数据
+ List<AlarmExcel> excelList = iAlarmService.exportAlarm(alarmVO);
+ return excelList;
+ }
+
+ /**
+ * 获取实时警情数据集合
+ * @param body map集合数据
+ * @return
+ */
+ @PostMapping("getAlarmPie")
+ public List<ReportReturnData> getAlarmPie(@RequestBody String body){
+ Map<String,Object> map = JSONObject.parseObject(body);
+ //创建对象,并封装数据
+ AlarmVO alarmVO = getAlarmVO(map);
+ //查询数据并返回数据
+ List<ReportReturnData> excelList = iAlarmService.getAlarmPie(alarmVO);
+ return excelList;
+ }
+
+ /**
+ * 封装实时警情查询条件
+ * @param map
+ * @return
+ */
+ private AlarmVO getAlarmVO(Map<String, Object> map) {
AlarmVO alarmVO = new AlarmVO();
if (null!=map.get("beginTime")) {
alarmVO.setBeginTime(map.get("beginTime").toString());
@@ -49,10 +76,9 @@
if (null!=map.get("timeDesc")) {
alarmVO.setTimeDesc(map.get("timeDesc").toString());
}
- //查询数据并返回数据
- List<AlarmExcel> excelList = iAlarmService.exportAlarm(alarmVO);
- return excelList;
+ return alarmVO;
}
+
/**
* 获取健康码数据集合
@@ -63,6 +89,35 @@
public List<HealthcodeExcel> getHealthcodeList(@RequestBody String body){
Map<String,Object> map = JSONObject.parseObject(body);
//创建对象,并封装数据
+ HealthcodeVO healthcodeVO = getHealthcodeVo(map);
+ //查询数据并返回数据
+ List<HealthcodeExcel> excelList = ihealthcodeService.exportHealthcode(healthcodeVO);
+ return excelList;
+ }
+
+
+
+ /**
+ * 获取健康码图标数据
+ * @param body map集合数据
+ * @return
+ */
+ @PostMapping("getHealthcodePie")
+ public List<HealthcodeExcel> getHealthcodePie(@RequestBody String body){
+ Map<String,Object> map = JSONObject.parseObject(body);
+ //创建对象,并封装数据
+ HealthcodeVO healthcodeVO = getHealthcodeVo(map);
+ //查询数据并返回数据
+ List<HealthcodeExcel> excelList = ihealthcodeService.getHealthcodePie(healthcodeVO);
+ return excelList;
+ }
+
+ /**
+ * 封装健康码条件数据
+ * @param map
+ * @return
+ */
+ private HealthcodeVO getHealthcodeVo(Map<String, Object> map) {
HealthcodeVO healthcodeVO = new HealthcodeVO();
if (null!=map.get("begTime")) {
healthcodeVO.setBegTime(map.get("begTime").toString());
@@ -76,9 +131,7 @@
if (null!=map.get("timeDesc")) {
healthcodeVO.setTimeDesc(map.get("timeDesc").toString());
}
- //查询数据并返回数据
- List<HealthcodeExcel> excelList = ihealthcodeService.exportHealthcode(healthcodeVO);
- return excelList;
+ return healthcodeVO;
}
/**
@@ -90,6 +143,34 @@
public List<AnimalHeatExcel> getAnimalHeatList(@RequestBody String body){
Map<String,Object> map = JSONObject.parseObject(body);
//创建对象,并封装数据
+ AnimalHeatVo animalHeatVo = getAnimalHeatVo(map);
+ //查询数据并返回数据
+ List<AnimalHeatExcel> excelList = animalHeatService.exportAnimalHeat(animalHeatVo);
+ return excelList;
+ }
+
+ /**
+ * 获取体温图表数据
+ * @param body map集合数据
+ * @return
+ */
+ @PostMapping("getAnimalHeatPie")
+ public List<ReportReturnData> getAnimalHeatPie(@RequestBody String body){
+ Map<String,Object> map = JSONObject.parseObject(body);
+ //创建对象,并封装数据
+ AnimalHeatVo animalHeatVo = getAnimalHeatVo(map);
+ //查询数据并返回数据
+ List<ReportReturnData> reportReturnData = animalHeatService.getAnimalHeatPie(animalHeatVo);
+ System.out.println("reportReturnData = " + reportReturnData);
+ return reportReturnData;
+ }
+
+ /**
+ * 体温数据条件封装
+ * @param map
+ * @return
+ */
+ private AnimalHeatVo getAnimalHeatVo(Map<String, Object> map) {
AnimalHeatVo animalHeatVo = new AnimalHeatVo();
if (null!=map.get("begTime")) {
animalHeatVo.setBegTime(map.get("begTime").toString());
@@ -103,9 +184,7 @@
if (null!=map.get("timeDesc")) {
animalHeatVo.setTimeDesc(map.get("timeDesc").toString());
}
- //查询数据并返回数据
- List<AnimalHeatExcel> excelList = animalHeatService.exportAnimalHeat(animalHeatVo);
- return excelList;
+ return animalHeatVo;
}
/**
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/entity/HealthcodeReturnData.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/entity/HealthcodeReturnData.java
deleted file mode 100644
index 60fd771..0000000
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/entity/HealthcodeReturnData.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.springblade.jfpt.healthcode.entity;
-
-import lombok.Data;
-
-@Data
-public class HealthcodeReturnData {
-
- private String type;
- private Integer num;
-}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/mapper/healthcodeMapper.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/mapper/healthcodeMapper.java
index 687eecc..1128bce 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/mapper/healthcodeMapper.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/mapper/healthcodeMapper.java
@@ -79,4 +79,11 @@
* @param healthcodeVO 查询条件
*/
List<HealthcodeExcel> exportHealthcode(@Param("healthcodeVO")HealthcodeVO healthcodeVO);
+
+ /**
+ * 获取健康码图标数据
+ * @param healthcodeVO 查询条件
+ * @return
+ */
+ List<HealthcodeExcel> getHealthcodePie(@Param("healthcodeVO")HealthcodeVO healthcodeVO);
}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/mapper/healthcodeMapper.xml b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/mapper/healthcodeMapper.xml
index 35ff49c..d85c502 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/mapper/healthcodeMapper.xml
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/mapper/healthcodeMapper.xml
@@ -57,6 +57,71 @@
</if>
</trim>
</sql>
+
+ <sql id="detailCondition">
+ <if test="healthcodeVO.status==0">
+ and to_days(dtime)=to_days(now())
+ </if>
+ <if test="healthcodeVO.status==1">
+ and YEARWEEK(date_format(dtime,'%Y-%m-%d'),1) = YEARWEEK(now(),1)
+ </if>
+ <if test="healthcodeVO.status==2">
+ and date_format(dtime,'%Y%m') = date_format(now(),'%Y%m')
+ </if>
+ <if test="healthcodeVO.province!=null">
+ and province like concat('%',#{healthcodeVO.province},'%')
+ </if>
+ <if test="healthcodeVO.city!=null">
+ and city like concat('%',#{healthcodeVO.city},'%')
+ </if>
+ <if test="healthcodeVO.district!=null">
+ and district like concat('%',#{healthcodeVO.district},'%')
+ </if>
+ <if test="healthcodeVO.begTime!=null and healthcodeVO.begTime!='' and healthcodeVO.begTime!='undefined' and healthcodeVO.endTime!='undefined'
+ and healthcodeVO.endTime!=null and healthcodeVO.endTime!='' ">
+ and date(dtime) between #{healthcodeVO.begTime} and #{healthcodeVO.endTime}
+ </if>
+ <if test="healthcodeVO.timeDesc!=null and healthcodeVO.timeDesc!='' and healthcodeVO.timeDesc!='undefined' ">
+ <if test="healthcodeVO.timeDesc=='0-2'">
+ and hour(dtime)>=0 and hour(dtime) <2
+ </if>
+ <if test="healthcodeVO.timeDesc=='2-4'">
+ and hour(dtime)>=2 and hour(dtime) <4
+ </if>
+ <if test="healthcodeVO.timeDesc=='4-6'">
+ and hour(dtime)>=4 and hour(dtime) <6
+ </if>
+ <if test="healthcodeVO.timeDesc=='6-8'">
+ and hour(dtime)>=6 and hour(dtime) <8
+ </if>
+ <if test="healthcodeVO.timeDesc=='8-10'">
+ and hour(dtime)>=8 and hour(dtime) <10
+ </if>
+ <if test="healthcodeVO.timeDesc=='10-12'">
+ and hour(dtime)>=10 and hour(dtime) <12
+ </if>
+ <if test="healthcodeVO.timeDesc=='12-14'">
+ and hour(dtime)>=12 and hour(dtime) <14
+ </if>
+ <if test="healthcodeVO.timeDesc=='14-16'">
+ and hour(dtime)>=14 and hour(dtime) <16
+ </if>
+ <if test="healthcodeVO.timeDesc=='16-18'">
+ and hour(dtime)>=16 and hour(dtime) <18
+ </if>
+ <if test="healthcodeVO.timeDesc=='18-20'">
+ and hour(dtime)>=18 and hour(dtime) <20
+ </if>
+ <if test="healthcodeVO.timeDesc=='20-22'">
+ and hour(dtime)>=20 and hour(dtime) <22
+ </if>
+ <if test="healthcodeVO.timeDesc=='22-24'">
+ and hour(dtime)>=22 and hour(dtime) <24
+ </if>
+ </if>
+ </sql>
+
+
<insert id="insert">
insert into healthcode(<include refid="key"/>) values(<include refid="value"/>)
</insert>
@@ -126,68 +191,10 @@
<select id="selectHealthcodeListPage" resultType="org.springblade.jfpt.healthcode.entity.Healthcode">
SELECT * FROM healthcode
where 1=1
- <if test="healthcodeVO.status==0">
- and to_days(dtime)=to_days(now())
- </if>
- <if test="healthcodeVO.status==1">
- and YEARWEEK(date_format(dtime,'%Y-%m-%d'),1) = YEARWEEK(now(),1)
- </if>
- <if test="healthcodeVO.status==2">
- and date_format(dtime,'%Y%m') = date_format(now(),'%Y%m')
- </if>
- <if test="healthcodeVO.type!=null">
+ <if test="healthcodeVO.type!=null and healthcodeVO.type!='undefined' ">
and type=#{healthcodeVO.type}
</if>
- <if test="healthcodeVO.province!=null">
- and province like concat('%',#{healthcodeVO.province},'%')
- </if>
- <if test="healthcodeVO.city!=null">
- and city like concat('%',#{healthcodeVO.city},'%')
- </if>
- <if test="healthcodeVO.district!=null">
- and district like concat('%',#{healthcodeVO.district},'%')
- </if>
- <if test="healthcodeVO.begTime!=null and healthcodeVO.begTime!='' and healthcodeVO.endTime!=null and healthcodeVO.endTime!='' ">
- and date(dtime) between #{healthcodeVO.begTime} and #{healthcodeVO.endTime}
- </if>
- <if test="healthcodeVO.timeDesc!=null and healthcodeVO.timeDesc!=''">
- <if test="healthcodeVO.timeDesc=='0-2'">
- and hour(dtime)>=0 and hour(dtime) <2
- </if>
- <if test="healthcodeVO.timeDesc=='2-4'">
- and hour(dtime)>=2 and hour(dtime) <4
- </if>
- <if test="healthcodeVO.timeDesc=='4-6'">
- and hour(dtime)>=4 and hour(dtime) <6
- </if>
- <if test="healthcodeVO.timeDesc=='6-8'">
- and hour(dtime)>=6 and hour(dtime) <8
- </if>
- <if test="healthcodeVO.timeDesc=='8-10'">
- and hour(dtime)>=8 and hour(dtime) <10
- </if>
- <if test="healthcodeVO.timeDesc=='10-12'">
- and hour(dtime)>=10 and hour(dtime) <12
- </if>
- <if test="healthcodeVO.timeDesc=='12-14'">
- and hour(dtime)>=12 and hour(dtime) <14
- </if>
- <if test="healthcodeVO.timeDesc=='14-16'">
- and hour(dtime)>=14 and hour(dtime) <16
- </if>
- <if test="healthcodeVO.timeDesc=='16-18'">
- and hour(dtime)>=16 and hour(dtime) <18
- </if>
- <if test="healthcodeVO.timeDesc=='18-20'">
- and hour(dtime)>=18 and hour(dtime) <20
- </if>
- <if test="healthcodeVO.timeDesc=='20-22'">
- and hour(dtime)>=20 and hour(dtime) <22
- </if>
- <if test="healthcodeVO.timeDesc=='22-24'">
- and hour(dtime)>=22 and hour(dtime) <24
- </if>
- </if>
+ <include refid="detailCondition"></include>
ORDER BY dtime desc
</select>
@@ -230,70 +237,23 @@
<!--导出健康码数据表格-->
<select id="exportHealthcode" resultType="org.springblade.common.entity.HealthcodeExcel">
SELECT * FROM healthcode
- where 1=1
- <if test="healthcodeVO.status==0">
- and to_days(dtime)=to_days(now())
- </if>
- <if test="healthcodeVO.status==1">
- and YEARWEEK(date_format(dtime,'%Y-%m-%d'),1) = YEARWEEK(now(),1)
- </if>
- <if test="healthcodeVO.status==2">
- and date_format(dtime,'%Y%m') = date_format(now(),'%Y%m')
- </if>
<if test="healthcodeVO.type!=null and healthcodeVO.type!='undefined' ">
and type=#{healthcodeVO.type}
</if>
- <if test="healthcodeVO.province!=null">
- and province like concat('%',#{healthcodeVO.province},'%')
- </if>
- <if test="healthcodeVO.city!=null">
- and city like concat('%',#{healthcodeVO.city},'%')
- </if>
- <if test="healthcodeVO.district!=null">
- and district like concat('%',#{healthcodeVO.district},'%')
- </if>
- <if test="healthcodeVO.begTime!=null and healthcodeVO.begTime!='' and healthcodeVO.begTime!='undefined' and healthcodeVO.endTime!='undefined'
- and healthcodeVO.endTime!=null and healthcodeVO.endTime!='' ">
- and date(dtime) between #{healthcodeVO.begTime} and #{healthcodeVO.endTime}
- </if>
- <if test="healthcodeVO.timeDesc!=null and healthcodeVO.timeDesc!='' and healthcodeVO.timeDesc!='undefined' ">
- <if test="healthcodeVO.timeDesc=='0-2'">
- and hour(dtime)>=0 and hour(dtime) <2
- </if>
- <if test="healthcodeVO.timeDesc=='2-4'">
- and hour(dtime)>=2 and hour(dtime) <4
- </if>
- <if test="healthcodeVO.timeDesc=='4-6'">
- and hour(dtime)>=4 and hour(dtime) <6
- </if>
- <if test="healthcodeVO.timeDesc=='6-8'">
- and hour(dtime)>=6 and hour(dtime) <8
- </if>
- <if test="healthcodeVO.timeDesc=='8-10'">
- and hour(dtime)>=8 and hour(dtime) <10
- </if>
- <if test="healthcodeVO.timeDesc=='10-12'">
- and hour(dtime)>=10 and hour(dtime) <12
- </if>
- <if test="healthcodeVO.timeDesc=='12-14'">
- and hour(dtime)>=12 and hour(dtime) <14
- </if>
- <if test="healthcodeVO.timeDesc=='14-16'">
- and hour(dtime)>=14 and hour(dtime) <16
- </if>
- <if test="healthcodeVO.timeDesc=='16-18'">
- and hour(dtime)>=16 and hour(dtime) <18
- </if>
- <if test="healthcodeVO.timeDesc=='18-20'">
- and hour(dtime)>=18 and hour(dtime) <20
- </if>
- <if test="healthcodeVO.timeDesc=='20-22'">
- and hour(dtime)>=20 and hour(dtime) <22
- </if>
- <if test="healthcodeVO.timeDesc=='22-24'">
- and hour(dtime)>=22 and hour(dtime) <24
- </if>
- </if>
+ where 1=1
+ <include refid="detailCondition"></include>
ORDER BY dtime desc
</select>
+
+ <!--导出健康码数据报表-->
+ <select id="getHealthcodePie" resultType="org.springblade.common.entity.ReportReturnData">
+ select if(1=1,'绿色健康码',0) type,ifnull(count(*),0) count from healthcode where type=1
+ <include refid="detailCondition"></include>
+ union all
+ select if(1=1,'黄色健康码',0) type,ifnull(count(*),0) count from healthcode where type=2
+ <include refid="detailCondition"></include>
+ union all
+ select if(1=1,'红色健康码',0) type,ifnull(count(*),0) count from healthcode where type=3
+ <include refid="detailCondition"></include>
+ </select>
</mapper>
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/service/IhealthcodeService.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/service/IhealthcodeService.java
index 0d2b1cb..08ced7b 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/service/IhealthcodeService.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/service/IhealthcodeService.java
@@ -77,4 +77,11 @@
* @param healthcodeVO 查询条件
*/
List<HealthcodeExcel> exportHealthcode(HealthcodeVO healthcodeVO);
+
+ /**
+ * 获取健康码图标数据
+ * @param healthcodeVO 查询条件
+ * @return
+ */
+ List<HealthcodeExcel> getHealthcodePie(HealthcodeVO healthcodeVO);
}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/service/impl/HealthcodeServiceImpl.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/service/impl/HealthcodeServiceImpl.java
index 43d11e2..6d99f83 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/service/impl/HealthcodeServiceImpl.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/healthcode/service/impl/HealthcodeServiceImpl.java
@@ -213,4 +213,14 @@
public List<HealthcodeExcel> exportHealthcode(HealthcodeVO healthcodeVO) {
return baseMapper.exportHealthcode(healthcodeVO);
}
+
+ /**
+ * 获取健康码图标数据
+ * @param healthcodeVO 查询条件
+ * @return
+ */
+ @Override
+ public List<HealthcodeExcel> getHealthcodePie(HealthcodeVO healthcodeVO) {
+ return baseMapper.getHealthcodePie(healthcodeVO);
+ }
}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/pie/ImageData.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/pie/ImageData.java
new file mode 100644
index 0000000..6884aa9
--- /dev/null
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/pie/ImageData.java
@@ -0,0 +1,20 @@
+package org.springblade.jfpt.pie;
+
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+import java.io.InputStream;
+
+@Data
+@ContentRowHeight(254)
+@HeadRowHeight(20)
+//@ColumnWidth(100 / 8)
+public class ImageData {
+
+ @ColumnWidth(50)
+ @ExcelProperty("统计图")
+ private InputStream inputStream;
+}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/pie/JFreeChartUtil.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/pie/JFreeChartUtil.java
new file mode 100644
index 0000000..1b895f4
--- /dev/null
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/pie/JFreeChartUtil.java
@@ -0,0 +1,112 @@
+package org.springblade.jfpt.pie;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import lombok.AllArgsConstructor;
+import org.jfree.chart.ChartFactory;
+import org.jfree.chart.ChartUtilities;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
+import org.jfree.chart.plot.PiePlot;
+import org.jfree.data.general.DefaultPieDataset;
+import org.springblade.common.entity.AnimalHeatExcel;
+import org.springblade.common.entity.ReportReturnData;
+import org.springblade.jfpt.animalheat.service.AnimalHeatService;
+import org.springblade.jfpt.animalheat.service.impl.AnimalHeatServiceImpl;
+import org.springblade.jfpt.animalheat.vo.AnimalHeatVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.awt.*;
+import java.io.*;
+import java.util.ArrayList;
+import java.util.List;
+
+@RestController
+public class JFreeChartUtil {
+
+
+
+ public JFreeChartUtil() {
+ }
+
+ public static void main(String[] args) {
+ DefaultPieDataset pds = new DefaultPieDataset();
+
+ pds.setValue("00点", 100);
+ pds.setValue("04点", 200);
+ pds.setValue("08点", 300);
+ String filePath = "d:/pie.jpg";
+ createPieChart(pds);
+
+ }
+
+ public static void createPieChart(DefaultPieDataset pds) {
+
+// AnimalHeatService animalHeatService = new AnimalHeatServiceImpl();
+//
+// AnimalHeatVo animalHeatVo = new AnimalHeatVo();
+// animalHeatVo.setStatus(1);
+// animalHeatVo.setBegTime("2021-04-01 00:00:00");
+// animalHeatVo.setEndTime("2021-04-01 00:00:00");
+//
+// List<ReportReturnData> heatExcels = animalHeatService.getAnimalHeatPie(animalHeatVo);
+
+ try {
+ // 分别是:显示图表的标题、需要提供对应图表的DateSet对象、是否显示图例、是否生成贴士以及是否生成URL链接
+ JFreeChart chart = ChartFactory.createPieChart("体温数据分布图", pds, false, false, true);
+ // 如果不使用Font,中文将显示不出来
+ Font font = new Font("宋体", Font.BOLD, 24);
+ // 设置图片标题的字体
+ chart.getTitle().setFont(font);
+ // 得到图块,准备设置标签的字体
+ PiePlot plot = (PiePlot) chart.getPlot();
+ // 设置标签字体
+ plot.setLabelFont(font);
+ plot.setStartAngle(new Float(3.14f / 2f));
+ // 设置plot的前景色透明度
+ plot.setForegroundAlpha(0.7f);
+ // 设置plot的背景色透明度
+ plot.setBackgroundAlpha(0.0f);
+ // 设置标签生成器(默认{0})
+ // {0}:key {1}:value {2}:百分比 {3}:sum
+ plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}({1}占{2})"));
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+
+ ArrayList<ImageData> list = new ArrayList<>();
+ ImageData imageData = new ImageData();
+ try {
+ // 将图表写入到ByteArrayOutputStream流中
+ ChartUtilities.writeChartAsJPEG(bos, chart, 800, 700);
+ System.out.println("bos = " + bos);
+ InputStream inputStream = new ByteArrayInputStream(bos.toByteArray());
+ String fileName = "imageWrite" + System.currentTimeMillis() + ".xlsx";
+ imageData.setInputStream(inputStream);
+ list.add(imageData);
+ //写入
+ ExcelWriter excelWriter = EasyExcel.write(fileName).build();
+
+ WriteSheet writeSheet = EasyExcel.writerSheet(0, "模板0").head(ImageData.class).build();
+ excelWriter.write(list, writeSheet);
+
+// WriteSheet writeSheet0 = EasyExcel.writerSheet(1, "模板1").head(ReportReturnData.class).build();
+// excelWriter.write(heatExcels, writeSheet0);
+
+ excelWriter.finish();
+
+
+ //EasyExcel.write(fileName, ImageData.class).sheet().doWrite(list);
+ //EasyExcel.write(fileName, ImageData.class).sheet().doWrite(list);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ // 将内存中的图片写到本地硬盘
+ //ChartUtilities.saveChartAsJPEG(new File(filePath), chart, 600, 300);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }finally {
+ }
+ }
+}
--
Gitblit v1.9.3