From 3ae57f026d9199f587fd25160e98d19572a30541 Mon Sep 17 00:00:00 2001
From: lyfO_o <764716047@qq.com>
Date: Wed, 30 Mar 2022 16:53:33 +0800
Subject: [PATCH] 1.柜子温湿浓度最大小值 2.新增柜子搜索当年月份
---
src/main/java/com/nanometer/smartlab/dao/SysContainerSensorsDao.java | 7 +
src/main/java/com/nanometer/smartlab/service/SysContainerSensorsService.java | 7 +
src/main/java/com/nanometer/smartlab/service/SysContainerSensorsServiceImpl.java | 25 ++++++
src/main/java/com/nanometer/smartlab/model/SelectItemModel.java | 23 +++++
src/main/java/com/nanometer/smartlab/dao/SysContainerSensorsDao.xml | 33 ++++++++
src/main/java/com/nanometer/smartlab/controller/ContainerStatusMngController.java | 113 +++++++++++++++++++++++++---
6 files changed, 195 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/nanometer/smartlab/controller/ContainerStatusMngController.java b/src/main/java/com/nanometer/smartlab/controller/ContainerStatusMngController.java
index 4361ea5..93455e5 100644
--- a/src/main/java/com/nanometer/smartlab/controller/ContainerStatusMngController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/ContainerStatusMngController.java
@@ -5,12 +5,14 @@
import com.google.common.collect.Maps;
import com.nanometer.smartlab.entity.*;
import com.nanometer.smartlab.entity.dto.ContainerStatusMngDto;
+import com.nanometer.smartlab.model.SelectItemModel;
import com.nanometer.smartlab.service.SysContainerSensorsService;
import com.nanometer.smartlab.service.SysLaboratoryContainerService;
import com.nanometer.smartlab.service.SysLaboratoryService;
import com.nanometer.smartlab.service.SysWarehouseContainerService;
import com.nanometer.smartlab.util.FacesUtils;
import com.nanometer.smartlab.util.Utils;
+import org.apache.commons.collections4.map.SingletonMap;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils;
@@ -26,6 +28,10 @@
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
+import javax.faces.model.SelectItem;
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.util.*;
@@ -34,6 +40,8 @@
public class ContainerStatusMngController extends BaseController {
private static Logger logger = Logger.getLogger(ContainerStatusMngController.class);
+ private static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
+ private static SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
@Resource
private SysContainerSensorsService sysContainerSensorsService;
@@ -56,6 +64,25 @@
private SysContainerSensors selectedSysContainerSensors;
private List<SysContainerSensors> chartSensorsList;
+
+ private Map<String,BigDecimal> temperatureMap = new HashMap<>();
+ private Map<String,BigDecimal> humidityMap = new HashMap<>();
+ private Map<String,BigDecimal> vocMap = new HashMap<>();
+
+
+ private List<SelectItemModel> dateRangeList = new ArrayList<SelectItemModel>(){{
+ Calendar instance = Calendar.getInstance();
+ int year = instance.get(Calendar.YEAR);
+ add(new SelectItemModel(){{setName("本日");setValue("1");}});
+ add(new SelectItemModel(){{setName("本周");setValue("2");}});
+ add(new SelectItemModel(){{setName("本月");setValue("3");}});
+ for (int i = 1; i <= 12; i++) {
+ SelectItemModel item = new SelectItemModel();
+ item.setName(year +"年"+ i + "月");
+ item.setValue(year + String.format("%02d",i));
+ add(item);
+ }
+ }};
public LazyDataModel<ContainerStatusMngDto> getDataModel() {
@@ -108,7 +135,7 @@
return dataModel;
}
- public void onViewBtnClick() {
+ public void onViewBtnClick() throws ParseException {
if (this.selectContainerList == null
|| this.selectContainerList.size() == 0) {
FacesUtils.warn("请选择数据。");
@@ -207,12 +234,12 @@
renderLineChart();
}
- public void onSelectPeriodType(){
+ public void onSelectPeriodType() throws ParseException {
fetchChartSensorsList();
renderLineChart();
}
- public void onSelectContainer(){
+ public void onSelectContainer() throws ParseException {
fetchChartSensorsList();
renderLineChart();
}
@@ -225,19 +252,44 @@
this.containerSelectorList = containerSelectorList;
}
- public void fetchChartSensorsList(){
+ public void fetchChartSensorsList() throws ParseException {
String beginDate = null;
+ String endDate = null;
- if(periodType == 1){
- beginDate = DateFormatUtils.ISO_DATE_FORMAT.format(new Date());
- } else if(periodType == 2){
- beginDate = Utils.getWeekMonday("yyyy-MM-dd");
- } else if(periodType ==3){
- beginDate = DateFormatUtils.ISO_DATE_FORMAT.format(DateUtils.truncate(new Date(),Calendar.MONTH));
+ switch (periodType) {
+ case 1: beginDate = DateFormatUtils.ISO_DATE_FORMAT.format(new Date());break;
+ case 2: beginDate = Utils.getWeekMonday("yyyy-MM-dd");break;
+ case 3: beginDate = DateFormatUtils.ISO_DATE_FORMAT.format(DateUtils.truncate(new Date(),Calendar.MONTH));break;
+ default:
+
+ Date parse = sdf.parse(periodType + "");
+ Calendar instance = Calendar.getInstance();
+ instance.setTime(parse);
+ instance.set(Calendar.DAY_OF_MONTH, 1);
+ beginDate = sdf2.format(instance.getTime()) +" 00:00:00";
+
+ instance.set(Calendar.DAY_OF_MONTH,instance.getActualMaximum(Calendar.DAY_OF_MONTH));;
+ endDate = sdf2.format(instance.getTime()) +" 23:59:59";
+
+ //1月
}
- Map params = ImmutableMap.of("containerId",selectedContainerId,"beginUpdateTime", beginDate,"orderby","update_time asc");
- chartSensorsList = sysContainerSensorsService.getListBySelective(params);
+
+
+ if (endDate != null) {
+ Map params = ImmutableMap.of("containerId",selectedContainerId,"beginUpdateTime", beginDate,"endUpdateTime", endDate,"orderby","update_time asc");
+ chartSensorsList = sysContainerSensorsService.getListBySelective(params);
+ }else{
+ Map params = ImmutableMap.of("containerId",selectedContainerId,"beginUpdateTime", beginDate,"orderby","update_time asc");
+ chartSensorsList = sysContainerSensorsService.getListBySelective(params);
+ }
+
+ temperatureMap = sysContainerSensorsService.selectMaxTemperature(selectedContainerId, beginDate, endDate);
+ humidityMap = sysContainerSensorsService.selectMaxHumidity(selectedContainerId,beginDate,endDate);
+ vocMap = sysContainerSensorsService.selectMaxVoc(selectedContainerId, beginDate, endDate);
+
+// this.maxHumidity = sysContainerSensorsService.selectMaxHumidity(selectedContainerId,beginDate,endDate);
+// this.maxVoc = sysContainerSensorsService.selectMaxVoc(selectedContainerId,beginDate,endDate);
}
public void renderLineChart() {
@@ -274,7 +326,7 @@
if (periodType == 2) {
xAxis.setTickFormat("%m-%d");
}
- if (periodType == 3) {
+ if (periodType >= 3) {
xAxis.setTickFormat("%m-%d");
}
xAxis.setTickAngle(-50);
@@ -290,6 +342,8 @@
// yAxis.setMax(10);
}
+
+
public List<SysContainerSensors> getChartSensorsList() {
return chartSensorsList;
}
@@ -297,4 +351,37 @@
public void setChartSensorsList(List<SysContainerSensors> chartSensorsList) {
this.chartSensorsList = chartSensorsList;
}
+
+
+ public List<SelectItemModel> getDateRangeList() {
+ return dateRangeList;
+ }
+
+ public void setDateRangeList(List<SelectItemModel> dateRangeList) {
+ this.dateRangeList = dateRangeList;
+ }
+
+ public Map<String, BigDecimal> getTemperatureMap() {
+ return temperatureMap;
+ }
+
+ public void setTemperatureMap(Map<String, BigDecimal> temperatureMap) {
+ this.temperatureMap = temperatureMap;
+ }
+
+ public Map<String, BigDecimal> getHumidityMap() {
+ return humidityMap;
+ }
+
+ public void setHumidityMap(Map<String, BigDecimal> humidityMap) {
+ this.humidityMap = humidityMap;
+ }
+
+ public Map<String, BigDecimal> getVocMap() {
+ return vocMap;
+ }
+
+ public void setVocMap(Map<String, BigDecimal> vocMap) {
+ this.vocMap = vocMap;
+ }
}
diff --git a/src/main/java/com/nanometer/smartlab/dao/SysContainerSensorsDao.java b/src/main/java/com/nanometer/smartlab/dao/SysContainerSensorsDao.java
index 288e0c5..44bb880 100644
--- a/src/main/java/com/nanometer/smartlab/dao/SysContainerSensorsDao.java
+++ b/src/main/java/com/nanometer/smartlab/dao/SysContainerSensorsDao.java
@@ -4,6 +4,7 @@
import com.nanometer.smartlab.entity.dto.ContainerStatusMngDto;
import org.apache.ibatis.annotations.Param;
+import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@@ -14,4 +15,10 @@
int countAll(Map<String, Object> map);
ContainerStatusMngDto getRowData(@Param("id") String rowKey);
+
+ Map<String,BigDecimal> selectMaxTemperature(@Param("id") String selectedContainerId,@Param("beginDate") String beginDate,@Param("endDate") String endDate);
+
+ Map<String, BigDecimal> selectMaxHumidity(@Param("id")String selectedContainerId,@Param("beginDate") String beginDate, @Param("endDate") String endDate);
+
+ Map<String, BigDecimal> selectMaxVoc(@Param("id")String selectedContainerId, @Param("beginDate") String beginDate,@Param("endDate") String endDate);
}
diff --git a/src/main/java/com/nanometer/smartlab/dao/SysContainerSensorsDao.xml b/src/main/java/com/nanometer/smartlab/dao/SysContainerSensorsDao.xml
index d0b4e9a..c4f1f8b 100644
--- a/src/main/java/com/nanometer/smartlab/dao/SysContainerSensorsDao.xml
+++ b/src/main/java/com/nanometer/smartlab/dao/SysContainerSensorsDao.xml
@@ -156,6 +156,9 @@
<if test="beginUpdateTime != null ">
and s.update_time >= #{beginUpdateTime}
</if>
+ <if test="endUpdateTime != null ">
+ and s.update_time <= #{endUpdateTime}
+ </if>
</where>
</sql>
<sql id="sql_limit">
@@ -261,4 +264,34 @@
</select>
+ <select id="selectMaxTemperature" resultType="java.util.Map">
+ select max(s.temp) maxTemperature,min(s.temp) minTemperature
+ from sys_container_sensors as s
+ where
+ s.container_id = #{id}
+ and s.update_time >= #{beginDate}
+ <if test="endDate != null">
+ and s.update_time < #{endDate}
+ </if>
+ </select>
+ <select id="selectMaxHumidity" resultType="java.util.Map">
+ select max(s.humidity) maxHumidity, min(s.humidity) minHumidity
+ from sys_container_sensors as s
+ where
+ s.container_id = #{id}
+ and s.update_time >= #{beginDate}
+ <if test="endDate != null">
+ and s.update_time < #{endDate}
+ </if>
+ </select>
+ <select id="selectMaxVoc" resultType="java.util.Map">
+ select max(s.voc1) maxVoc, min(s.voc1) minVoc
+ from sys_container_sensors as s
+ where
+ s.container_id = #{id}
+ and s.update_time >= #{beginDate}
+ <if test="endDate != null">
+ and s.update_time < #{endDate}
+ </if>
+ </select>
</mapper>
diff --git a/src/main/java/com/nanometer/smartlab/model/SelectItemModel.java b/src/main/java/com/nanometer/smartlab/model/SelectItemModel.java
new file mode 100644
index 0000000..930d124
--- /dev/null
+++ b/src/main/java/com/nanometer/smartlab/model/SelectItemModel.java
@@ -0,0 +1,23 @@
+package com.nanometer.smartlab.model;
+
+public class SelectItemModel {
+
+ private String name;
+ private Object value;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public void setValue(Object value) {
+ this.value = value;
+ }
+}
diff --git a/src/main/java/com/nanometer/smartlab/service/SysContainerSensorsService.java b/src/main/java/com/nanometer/smartlab/service/SysContainerSensorsService.java
index 813c1b5..ca1b5ad 100644
--- a/src/main/java/com/nanometer/smartlab/service/SysContainerSensorsService.java
+++ b/src/main/java/com/nanometer/smartlab/service/SysContainerSensorsService.java
@@ -5,6 +5,7 @@
import com.nanometer.smartlab.entity.dto.ContainerStatusMngDto;
import org.springframework.transaction.annotation.Transactional;
+import java.math.BigDecimal;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -30,5 +31,11 @@
ContainerStatusMngDto getRowData(String rowKey);
+ Map<String,BigDecimal> selectMaxTemperature(String selectedContainerId, String beginDate, String endDate);
+
+ Map selectMaxHumidity(String selectedContainerId, String beginDate, String endDate);
+
+ Map selectMaxVoc(String selectedContainerId, String beginDate, String endDate);
+
//获得
}
diff --git a/src/main/java/com/nanometer/smartlab/service/SysContainerSensorsServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/SysContainerSensorsServiceImpl.java
index d35a941..c684dfd 100644
--- a/src/main/java/com/nanometer/smartlab/service/SysContainerSensorsServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/SysContainerSensorsServiceImpl.java
@@ -7,8 +7,11 @@
import com.nanometer.smartlab.entity.SysLaboratoryContainer;
import com.nanometer.smartlab.entity.SysWarehouseContainer;
import com.nanometer.smartlab.entity.dto.ContainerStatusMngDto;
+import com.nanometer.smartlab.exception.BusinessException;
+import com.nanometer.smartlab.exception.ExceptionEnumCode;
import com.nanometer.smartlab.util.Constants;
import com.nanometer.smartlab.util.IDUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.log4j.Logger;
@@ -18,6 +21,7 @@
import org.springframework.util.Assert;
import javax.annotation.Resource;
+import java.math.BigDecimal;
import java.sql.SQLException;
import java.util.*;
@@ -114,5 +118,26 @@
return sysContainerSensorsDao.getRowData(rowKey);
}
+ @Override
+ public Map<String,BigDecimal> selectMaxTemperature(String selectedContainerId, String beginDate, String endDate) {
+ if (StringUtils.isBlank(selectedContainerId))
+ throw new BusinessException(ExceptionEnumCode.PARAM_NULL,"参数为空");
+ return sysContainerSensorsDao.selectMaxTemperature( selectedContainerId, beginDate, endDate);
+ }
+
+ @Override
+ public Map<String,BigDecimal> selectMaxHumidity(String selectedContainerId, String beginDate, String endDate) {
+ if (StringUtils.isBlank(selectedContainerId))
+ throw new BusinessException(ExceptionEnumCode.PARAM_NULL,"参数为空");
+ return sysContainerSensorsDao.selectMaxHumidity(selectedContainerId, beginDate, endDate);
+ }
+
+ @Override
+ public Map<String,BigDecimal> selectMaxVoc(String selectedContainerId, String beginDate, String endDate) {
+ if (StringUtils.isBlank(selectedContainerId))
+ throw new BusinessException(ExceptionEnumCode.PARAM_NULL,"参数为空");
+ return sysContainerSensorsDao.selectMaxVoc(selectedContainerId, beginDate, endDate);
+ }
+
}
--
Gitblit v1.9.2