Browse Source

环境监测

wwh 2 years ago
parent
commit
d8b8763845

+ 7 - 2
huimv-farm-environ/src/main/java/com/huimv/environ/eco/controller/EcoDeviceFlowController.java

@@ -1,8 +1,9 @@
 package com.huimv.environ.eco.controller;
 
-
+import java.text.ParseException;
 import com.huimv.common.utils.Result;
 import com.huimv.environ.eco.service.EcoDeviceFlowService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -25,7 +26,7 @@ import java.util.Map;
 @RequestMapping("/ecoDeviceFlow")
 public class EcoDeviceFlowController {
 
-    @Resource
+    @Autowired
     private EcoDeviceFlowService ecoDeviceFlowService;
 
     @PostMapping("/getLastFlow")
@@ -34,5 +35,9 @@ public class EcoDeviceFlowController {
     }
 
 
+    @PostMapping("/listByRoom")
+    public Result listByRoom( HttpServletRequest request,@RequestBody Map<String, String> paramsMap) throws ParseException {
+        return ecoDeviceFlowService.listByRoom(request, paramsMap);
+    }
 }
 

+ 19 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/eco/entity/dto/EcoDeviceDto.java

@@ -0,0 +1,19 @@
+package com.huimv.environ.eco.entity.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class EcoDeviceDto {
+
+    private String roomName;
+
+    private String tem;
+
+    private String hum;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date addTime;
+}

+ 21 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/eco/mapper/EcoDeviceFlowMapper.java

@@ -1,11 +1,16 @@
 package com.huimv.environ.eco.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.huimv.environ.eco.entity.EcoDeviceFlow;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.environ.eco.entity.SysHumidity;
+import com.huimv.environ.eco.entity.dto.EcoDeviceDto;
 import com.huimv.environ.eco.entity.dto.LastFlowDto;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -20,4 +25,20 @@ import java.util.List;
 public interface EcoDeviceFlowMapper extends BaseMapper<EcoDeviceFlow> {
 
     List<LastFlowDto> getLastFlow(@Param("farmId") String farmId);
+
+    List<EcoDeviceDto> listDevice(@Param("farmId") String farmId,
+                                  @Param("unitId") String unitId,
+                                  @Param("startDate") String startDate,
+                                  @Param("endDate") String endDate);
+
+    List<EcoDeviceDto> listDayDevice(@Param("farmId") String farmId,
+                                     @Param("unitId") String unitId,
+                                     @Param("startDate") String startDate);
+
+
+    List<EcoDeviceDto> listWeekDevice(@Param("farmId") String farmId,
+                                     @Param("unitId") String unitId);
+
+    List<EcoDeviceDto> listMonthDevice(@Param("farmId") String farmId,
+                                     @Param("unitId") String unitId);
 }

+ 2 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/EcoDeviceFlowService.java

@@ -22,4 +22,6 @@ public interface EcoDeviceFlowService extends IService<EcoDeviceFlow> {
     Result getLastFlow(HttpServletRequest request);
 
     void save(JSONObject dataJo) throws ParseException;
+
+    Result listByRoom(HttpServletRequest request,Map<String,String> paramsMap) throws ParseException;
 }

+ 88 - 8
huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/impl/EcoDeviceFlowServiceImpl.java

@@ -1,29 +1,35 @@
 package com.huimv.environ.eco.service.impl;
 
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.huimv.common.utils.DataUill;
 import com.huimv.common.utils.Result;
 import com.huimv.common.utils.ResultCode;
-import com.huimv.environ.eco.entity.BaseRoom;
 import com.huimv.environ.eco.entity.EcoDevice;
 import com.huimv.environ.eco.entity.EcoDeviceFlow;
-import com.huimv.environ.eco.entity.dto.LastFlowDto;
-import com.huimv.environ.eco.entity.eggvo.EcoDeviceDto;
+import com.huimv.environ.eco.entity.dto.EcoDeviceDto;
 import com.huimv.environ.eco.mapper.EcoDeviceFlowMapper;
 import com.huimv.environ.eco.mapper.EcoDeviceMapper;
 import com.huimv.environ.eco.service.EcoDeviceFlowService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import freemarker.template.utility.StringUtil;
-import org.aspectj.weaver.ast.Var;
+import com.huimv.environ.env.utils.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 
 /**
  * <p>
- *  服务实现类
+ * 服务实现类
  * </p>
  *
  * @author zn
@@ -35,11 +41,85 @@ public class EcoDeviceFlowServiceImpl extends ServiceImpl<EcoDeviceFlowMapper, E
     @Autowired
     private EcoDeviceFlowMapper ecoDeviceFlowMapper;
     @Autowired
-    private EcoDeviceMapper ecoDeviceMapper;
+    private static final String globalFarmId = "331023001";
 
     @Override
     public Result getLastFlow(HttpServletRequest request) {
         String farmId = request.getHeader("farmId");
-        return new Result(ResultCode.SUCCESS,ecoDeviceFlowMapper.getLastFlow(farmId));
+        return new Result(ResultCode.SUCCESS, ecoDeviceFlowMapper.getLastFlow(farmId));
     }
+
+    @Override
+    public void save(JSONObject dataJo) throws ParseException {
+        DateUtil dateUtil = new DateUtil();
+        EcoDeviceFlow ecoDeviceFlow = new EcoDeviceFlow();
+        ecoDeviceFlow.setDeviceCode(dataJo.getString("deviceKey"));
+        ecoDeviceFlow.setDeviceName(dataJo.getString("deviceName"));
+        ecoDeviceFlow.setDeviceStatus(Integer.parseInt(dataJo.getString("deviceStatus")));
+        ecoDeviceFlow.setDeviceOpen(dataJo.getBoolean("deviceDisabled"));
+        //温/湿度数据
+        JSONArray realTimeDataJa = dataJo.getJSONArray("realTimeData");
+        JSONObject id1Jo = realTimeDataJa.getJSONObject(0);
+        ecoDeviceFlow.setId1Name(id1Jo.getString("dataName"));
+        //
+        String id1Value = id1Jo.getString("dataValue");
+        if (StringUtils.isBlank(id1Value)) {
+            id1Value = "0";
+        }
+        ecoDeviceFlow.setId1Value(id1Value);
+        ecoDeviceFlow.setId1AlarmStatus(id1Jo.getBoolean("isAlarm"));
+        ecoDeviceFlow.setId1AlarmMsg(id1Jo.getString("alarmMsg"));
+        JSONObject id2Jo = realTimeDataJa.getJSONObject(1);
+        ecoDeviceFlow.setId2Name(id2Jo.getString("dataName"));
+        String id2Value = id2Jo.getString("dataValue");
+        //
+        if (StringUtils.isBlank(id2Value)) {
+            id2Value = "0";
+        }
+        ecoDeviceFlow.setId2Value(id2Value);
+        ecoDeviceFlow.setId2AlarmStatus(id2Jo.getBoolean("isAlarm"));
+        ecoDeviceFlow.setId2AlarmMsg(id2Jo.getString("alarmMsg"));
+        ecoDeviceFlow.setAddTime(dateUtil.getTodayDateTime());
+        ecoDeviceFlowMapper.insert(ecoDeviceFlow);
+    }
+
+    @Override
+    public Result listByRoom(HttpServletRequest request, Map<String, String> paramsMap) throws ParseException {
+        String farmId = request.getHeader("farmId");
+        String unitId = paramsMap.get("unitId");
+        String startDate = paramsMap.get("startDate");
+        String endDate = paramsMap.get("endDate");
+        String type = paramsMap.get("type");
+
+        List<EcoDeviceDto> ecoDeviceDtos = null;
+        //默认显示
+        if (type==null) {
+            unitId = "77";
+            DateUtil dateUtil = new DateUtil();
+            startDate = dateUtil.getTodayDate().toString();
+            ecoDeviceDtos = ecoDeviceFlowMapper.listDayDevice(farmId, unitId, startDate);
+        } else {
+
+            //自定义查询
+            if ("4".equals(type)) {
+                ecoDeviceDtos = ecoDeviceFlowMapper.listDevice(farmId, unitId, startDate, endDate);
+            }
+            //今日查询
+            else if ("3".equals(type)) {
+                ecoDeviceDtos = ecoDeviceFlowMapper.listDayDevice(farmId, unitId, startDate);
+            }
+            //本周查询
+            else if ("2".equals(type)) {
+                ecoDeviceDtos = ecoDeviceFlowMapper.listWeekDevice(farmId, unitId);
+            }
+            //本月查询
+            else if ("1".equals(type)) {
+                ecoDeviceDtos = ecoDeviceFlowMapper.listMonthDevice(farmId, unitId);
+            }
+
+        }
+
+        return new Result(ResultCode.SUCCESS, ecoDeviceDtos);
+    }
+
 }

+ 31 - 0
huimv-farm-environ/src/main/resources/com/huimv/environ/eco/mapper/EcoDeviceFlowMapper.xml

@@ -33,4 +33,35 @@
         AND df.id IN (SELECT MAX(df.id) FROM `eco_device_flow` df GROUP BY device_code)
         ORDER BY a.id DESC,a.parent_id DESC
     </select>
+
+    <select id="listDevice" resultType="com.huimv.environ.eco.entity.dto.EcoDeviceDto">
+       SELECT d.location 'roomName',ROUND(AVG(df.id1_value),2) 'tem',ROUND(AVG(df.id2_value),2) 'hum',DATE_FORMAT(df.add_time,'%Y-%m-%d') 'addTime' FROM `eco_device` d
+LEFT JOIN `eco_device_flow` df ON df.device_code = d.device_code
+WHERE d.farm_id = ${farmId} AND unit_id = ${unitId}
+AND add_time BETWEEN '${startDate}' AND '${endDate}'
+GROUP BY DATE_FORMAT(df.add_time,"%Y-%m-%d")
+    </select>
+
+    <select id="listDayDevice" resultType="com.huimv.environ.eco.entity.dto.EcoDeviceDto">
+   SELECT d.location 'roomName',df.id1_value 'tem',df.id2_value 'hum',df.add_time FROM `eco_device` d
+LEFT JOIN `eco_device_flow` df ON df.device_code = d.device_code
+WHERE d.farm_id = ${farmId} AND unit_id = ${unitId}
+AND add_time BETWEEN '${startDate} 00:00:00' AND NOW()
+    </select>
+
+    <select id="listWeekDevice" resultType="com.huimv.environ.eco.entity.dto.EcoDeviceDto">
+        SELECT d.location 'roomName',ROUND(AVG(df.id1_value),2) 'tem',ROUND(AVG(df.id2_value)) 'hum',DATE_FORMAT(df.add_time,'%Y-%m-%d') add_time FROM `eco_device` d
+LEFT JOIN `eco_device_flow` df ON df.device_code = d.device_code
+WHERE d.farm_id = ${farmId} AND unit_id = ${unitId}
+AND add_time BETWEEN (SELECT DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) DAY)) AND NOW()
+GROUP BY DATE_FORMAT(df.add_time,"%Y-%m-%d")
+    </select>
+
+    <select id="listMonthDevice" resultType="com.huimv.environ.eco.entity.dto.EcoDeviceDto">
+        SELECT d.location 'roomName',ROUND(AVG(df.id1_value),2) 'tem',ROUND(AVG(df.id2_value)) 'hum',DATE_FORMAT(df.add_time,'%Y-%m-%d') add_time FROM `eco_device` d
+LEFT JOIN `eco_device_flow` df ON df.device_code = d.device_code
+WHERE d.farm_id = ${farmId} AND unit_id = ${unitId}
+AND add_time BETWEEN (SELECT DATE_ADD(CURDATE(),INTERVAL -DAY(CURDATE())+1 DAY)) AND NOW()
+GROUP BY DATE_FORMAT(df.add_time,"%Y-%m-%d")
+    </select>
 </mapper>