From 3ae57f026d9199f587fd25160e98d19572a30541 Mon Sep 17 00:00:00 2001 From: lyfO_o <764716047@qq.com> Date: 星期三, 30 三月 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