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 &lt;= #{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 &gt;= #{beginDate}
+      <if test="endDate != null">
+        and s.update_time &lt; #{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 &gt;= #{beginDate}
+    <if test="endDate != null">
+      and s.update_time &lt; #{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 &gt;= #{beginDate}
+    <if test="endDate != null">
+      and s.update_time &lt; #{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