Procházet zdrojové kódy

添加设备在线率统计

523096025 před 2 roky
rodič
revize
2852b9a6e2

+ 40 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/EnvDeviceOnlineController.java

@@ -0,0 +1,40 @@
+package com.huimv.admin.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.admin.common.utils.Result;
+import com.huimv.admin.common.utils.ResultCode;
+import com.huimv.admin.entity.EnvDeviceOnline;
+import com.huimv.admin.service.IEnvDeviceOnlineService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-03-02
+ */
+@RestController
+@RequestMapping("/envDeviceOnline")
+public class EnvDeviceOnlineController {
+    @Autowired
+    private IEnvDeviceOnlineService envDeviceOnlineService;
+    @RequestMapping("/list")
+    public Result list(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        List<EnvDeviceOnline> list = envDeviceOnlineService.list(new QueryWrapper<EnvDeviceOnline>().eq("farm_id", farmId).orderByDesc("creat_time"));
+        return  new Result(ResultCode.SUCCESS,list);
+    }
+
+
+}

+ 74 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/EnvDeviceOnline.java

@@ -0,0 +1,74 @@
+package com.huimv.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2023-03-02
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("env_device_online")
+public class EnvDeviceOnline implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String farmId;
+
+    /**
+     * 在线数
+     */
+    private Integer deviceOn;
+
+    /**
+     * 离线数
+     */
+    private Integer deviceOff;
+
+    /**
+     * 月份
+     */
+    private Integer nowMonth;
+
+    /**
+     * 年份
+     */
+    private Integer nowYear;
+
+    /**
+     * 时间
+     */
+    @JsonFormat(pattern = "yyyy-MM" ,timezone = "GMT+8")
+    private Date creatTime;
+
+    /**
+     * 在线率
+     */
+    private String onlineRate;
+
+    private String ohter1;
+
+    private String ohter2;
+
+    private String ohter3;
+
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/admin/mapper/EnvDeviceOnlineMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.mapper;
+
+import com.huimv.admin.entity.EnvDeviceOnline;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-03-02
+ */
+public interface EnvDeviceOnlineMapper extends BaseMapper<EnvDeviceOnline> {
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/admin/service/IEnvDeviceOnlineService.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.service;
+
+import com.huimv.admin.entity.EnvDeviceOnline;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-03-02
+ */
+public interface IEnvDeviceOnlineService extends IService<EnvDeviceOnline> {
+
+}

+ 20 - 0
huimv-admin/src/main/java/com/huimv/admin/service/impl/EnvDeviceOnlineServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.admin.service.impl;
+
+import com.huimv.admin.entity.EnvDeviceOnline;
+import com.huimv.admin.mapper.EnvDeviceOnlineMapper;
+import com.huimv.admin.service.IEnvDeviceOnlineService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-03-02
+ */
+@Service
+public class EnvDeviceOnlineServiceImpl extends ServiceImpl<EnvDeviceOnlineMapper, EnvDeviceOnline> implements IEnvDeviceOnlineService {
+
+}

+ 59 - 8
huimv-admin/src/main/java/com/huimv/admin/timer/EnvTimer.java

@@ -2,24 +2,22 @@ package com.huimv.admin.timer;
 
 
 import cn.hutool.core.codec.Base64;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.huimv.admin.common.utils.HttpClientSSLUtils;
-import com.huimv.admin.entity.EnvData;
-import com.huimv.admin.entity.EnvDevice;
-import com.huimv.admin.entity.EnvWarningInfo;
-import com.huimv.admin.entity.EnvWarningThreshold;
+import com.huimv.admin.common.utils.Result;
+import com.huimv.admin.entity.*;
 import com.huimv.admin.entity.zengxindto.LoginOnlyDto;
 import com.huimv.admin.entity.zengxindto.LonginOnlyDtoToken;
 import com.huimv.admin.entity.zengxindto.ShackDatasDto;
 import com.huimv.admin.entity.zengxindto.ShackDatasSensor;
-import com.huimv.admin.service.IEnvDataService;
-import com.huimv.admin.service.IEnvDeviceService;
-import com.huimv.admin.service.IEnvWarningInfoService;
-import com.huimv.admin.service.IEnvWarningThresholdService;
+import com.huimv.admin.service.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.http.HttpEntity;
@@ -31,6 +29,8 @@ import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.client.RestTemplate;
 
+import javax.servlet.http.HttpServletRequest;
+import java.text.NumberFormat;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -44,6 +44,10 @@ public class EnvTimer {
     private RestTemplate restTemplate;
     @Autowired
     private IEnvDeviceService envDeviceService;
+    @Autowired
+    private IEnvDeviceOnlineService envDeviceOnlineService;
+    @Autowired
+    private IFarmService farmService;
 
     @Autowired
     private IEnvDataService envDataService;
@@ -215,4 +219,51 @@ public class EnvTimer {
         return Base64.encode(token.getUserId() + "_" + token.getToken());
     }
 
+    @Scheduled(cron = "0 0 0 * * ? ")
+    private void update(HttpServletRequest httpServletRequest) throws Exception {
+        Date date = new Date();
+        DateTime beginOfMonth = DateUtil.beginOfMonth(date);
+        List<Farm> list = farmService.list();
+        for (Farm farm : list) {
+            Integer farmId = farm.getId();
+            QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("farm_id", farmId);
+            Integer count = envDeviceService.count(queryWrapper);
+            QueryWrapper<EnvDevice> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.eq("device_status", 1);
+            Integer count1 = envDeviceService.count(queryWrapper1);
+            Integer OffDeviceCount = count- count1;
+            //创建一个数值格式化对象
+            NumberFormat numberFormat = NumberFormat.getInstance();
+            //设置精确到小数点后两位
+            numberFormat.setMaximumFractionDigits(2);
+            String onDeviceRate = numberFormat.format((float)count1 / (float) count* 100) + "%";
+
+            EnvDeviceOnline envDeviceOnline = envDeviceOnlineService.getOne(new QueryWrapper<EnvDeviceOnline>().eq("farm_id", farmId).ge("creat_time", beginOfMonth));
+            if (ObjectUtil.isEmpty(envDeviceOnline)){
+                envDeviceOnline = new EnvDeviceOnline();
+                envDeviceOnline.setCreatTime(date);
+                envDeviceOnline.setDeviceOff(OffDeviceCount);
+                envDeviceOnline.setDeviceOn(count1);
+                envDeviceOnline.setFarmId(farmId+"");
+                envDeviceOnline.setOnlineRate(onDeviceRate);
+                envDeviceOnline.setNowMonth(beginOfMonth.month());
+                envDeviceOnline.setNowYear(beginOfMonth.year());
+                envDeviceOnlineService.save(envDeviceOnline);
+            }else {
+                envDeviceOnline = new EnvDeviceOnline();
+                envDeviceOnline.setCreatTime(date);
+                envDeviceOnline.setDeviceOff(OffDeviceCount);
+                envDeviceOnline.setDeviceOn(count1);
+                envDeviceOnline.setFarmId(farmId+"");
+                envDeviceOnline.setOnlineRate(onDeviceRate);
+                envDeviceOnline.setNowMonth(beginOfMonth.month());
+                envDeviceOnline.setNowYear(beginOfMonth.year());
+                envDeviceOnlineService.updateById(envDeviceOnline);
+            }
+
+        }
+
+    }
+
 }

+ 20 - 0
huimv-admin/src/main/resources/com/huimv/admin/mapper/EnvDeviceOnlineMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.admin.mapper.EnvDeviceOnlineMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.huimv.admin.entity.EnvDeviceOnline">
+        <id column="id" property="id" />
+        <result column="farm_id" property="farmId" />
+        <result column="device_on" property="deviceOn" />
+        <result column="device_off" property="deviceOff" />
+        <result column="now_month" property="nowMonth" />
+        <result column="now_year" property="nowYear" />
+        <result column="creat_time" property="creatTime" />
+        <result column="online_rate" property="onlineRate" />
+        <result column="ohter1" property="ohter1" />
+        <result column="ohter2" property="ohter2" />
+        <result column="ohter3" property="ohter3" />
+    </resultMap>
+
+</mapper>