yq 2 vuotta sitten
vanhempi
commit
e65c352ddc

+ 1 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/MybatisGeneratorUtils.java

@@ -71,7 +71,7 @@ public class MybatisGeneratorUtils {
         // strategy.setTablePrefix("t_"); // 表名前缀
         strategy.setEntityLombokModel(true); //使用lombok
         //修改自己想要生成的表
-        strategy.setInclude("dmp_software_info");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
+        strategy.setInclude("dmp_data_overview");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
         mpg.setStrategy(strategy);
 
         // 关闭默认 xml 生成,调整生成 至 根目录

+ 21 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DmpDataOverviewController.java

@@ -0,0 +1,21 @@
+package com.usky.iot.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 数据概览 前端控制器
+ * </p>
+ *
+ * @author ya
+ * @since 2022-10-13
+ */
+@Controller
+@RequestMapping("/dmpDataOverview")
+public class DmpDataOverviewController {
+
+}
+

+ 86 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDataOverview.java

@@ -0,0 +1,86 @@
+package com.usky.iot.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 数据概览
+ * </p>
+ *
+ * @author ya
+ * @since 2022-10-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DmpDataOverview implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 设备量分析
+     */
+    private String deviceNumber;
+
+    /**
+     * 设备趋势分析
+     */
+    private String deviceTrend;
+
+    /**
+     * 设备日活跃分析
+     */
+    private String deviceDailyActive;
+
+    /**
+     * 中间区域数据统计
+     */
+    private String middleStatistic;
+
+    /**
+     * 设备数据上报量分析
+     */
+    private String dataReport;
+
+    /**
+     * 产品设备量分析
+     */
+    private String productDevice;
+
+    /**
+     * 设备月活跃分析
+     */
+    private String deviceMonthlyActive;
+
+    /**
+     * 产品ID;当为全产品时id为0,其他情况对应产品表ID
+     */
+    private Integer productId;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createdTime;
+
+    /**
+     * 租户号
+     */
+    private Integer tenantId;
+
+
+}

+ 16 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDataOverviewMapper.java

@@ -0,0 +1,16 @@
+package com.usky.iot.mapper;
+
+import com.usky.iot.domain.DmpDataOverview;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 数据概览 Mapper 接口
+ * </p>
+ *
+ * @author ya
+ * @since 2022-10-13
+ */
+public interface DmpDataOverviewMapper extends CrudMapper<DmpDataOverview> {
+
+}

+ 18 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDeviceStatusMapper.java

@@ -2,6 +2,11 @@ package com.usky.iot.mapper;
 
 import com.usky.common.mybatis.core.CrudMapper;
 import com.usky.iot.domain.DmpDeviceStatus;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -14,4 +19,17 @@ import com.usky.iot.domain.DmpDeviceStatus;
  */
 public interface DmpDeviceStatusMapper extends CrudMapper<DmpDeviceStatus> {
 
+
+    List<Map<String, Object>> getDeviceStatusCollect(@Param("productId") Integer productId,
+                                                     @Param("startTime") Date startTime,
+                                                     @Param("endTime") Date endTime);
+
+
+    List<Map<String,Object>> getMonthCollect(@Param("productId") Integer productId,
+                                             @Param("startTime") Date startTime,
+                                             @Param("endTime") Date endTime);
+
+    String getDayHyList(@Param("productId") Integer productId,
+                        @Param("startTime") Date startTime,
+                        @Param("endTime") Date endTime);
 }

+ 16 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpDataOverviewService.java

@@ -0,0 +1,16 @@
+package com.usky.iot.service;
+
+import com.usky.iot.domain.DmpDataOverview;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 数据概览 服务类
+ * </p>
+ *
+ * @author ya
+ * @since 2022-10-13
+ */
+public interface DmpDataOverviewService extends CrudService<DmpDataOverview> {
+
+}

+ 4 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpDeviceStatusService.java

@@ -3,6 +3,7 @@ package com.usky.iot.service;
 import com.usky.common.mybatis.core.CrudService;
 import com.usky.iot.domain.DmpDeviceStatus;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -19,4 +20,7 @@ public interface DmpDeviceStatusService extends CrudService<DmpDeviceStatus> {
 
 
     List<Map<String,Object>> getCollectByProduct(List<Integer> productIds);
+
+
+    List<Map<String,Object>> getDeviceStatusCollect(Integer productId, Date startTime,Date endTime);
 }

+ 20 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDataOverviewServiceImpl.java

@@ -0,0 +1,20 @@
+package com.usky.iot.service.impl;
+
+import com.usky.iot.domain.DmpDataOverview;
+import com.usky.iot.mapper.DmpDataOverviewMapper;
+import com.usky.iot.service.DmpDataOverviewService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 数据概览 服务实现类
+ * </p>
+ *
+ * @author ya
+ * @since 2022-10-13
+ */
+@Service
+public class DmpDataOverviewServiceImpl extends AbstractCrudService<DmpDataOverviewMapper, DmpDataOverview> implements DmpDataOverviewService {
+
+}

+ 6 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceStatusServiceImpl.java

@@ -9,6 +9,7 @@ import com.usky.iot.mapper.DmpDeviceStatusMapper;
 import com.usky.iot.service.DmpDeviceStatusService;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -31,4 +32,9 @@ public class DmpDeviceStatusServiceImpl extends AbstractCrudService<DmpDeviceSta
                 .groupBy("product_id");
         return this.listMaps(query);
     }
+
+    @Override
+    public List<Map<String, Object>> getDeviceStatusCollect(Integer productId, Date startTime, Date endTime) {
+        return null;
+    }
 }

+ 86 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/job/DmpDataOverviewJob.java

@@ -0,0 +1,86 @@
+package com.usky.iot.service.job;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.iot.domain.DmpDeviceInfo;
+import com.usky.iot.domain.DmpDeviceStatus;
+import com.usky.iot.service.DmpDataOverviewService;
+import com.usky.iot.service.DmpDeviceInfoService;
+import com.usky.iot.service.DmpDeviceStatusService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class DmpDataOverviewJob {
+
+
+    @Autowired
+    private DmpDeviceInfoService dmpDeviceInfoService;
+
+    @Autowired
+    private DmpDeviceStatusService dmpDeviceStatusService;
+
+    @Autowired
+    private DmpDataOverviewService dmpDataOverviewService;
+
+    public void execute(){
+
+    }
+
+    /**
+     * 设备量分析
+     */
+    public void deviceCount(){
+        //月活跃
+
+        List<Map<String, Object>> maps = deviceCount(null, null, null, "DATE(created_time)");
+        List<Map<String, Object>> maps1 = deviceStatusCount(null, null, null);
+        maps.forEach(s -> {
+            s.put("dayCount",0);
+            s.put("serviceCount",0);
+            maps1.stream()
+                    .filter(s1 -> s1.get("productId").toString().equals(s.get("productId").toString()))
+                    .findAny()
+                    .ifPresent(s2 -> {
+                        s.putAll(s2);
+                    });
+        });
+    }
+
+    /**
+     * 设备总数
+     * @param productId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    public List<Map<String, Object>> deviceCount(Integer productId, Date startTime, Date endTime,String reportDate){
+        QueryWrapper<DmpDeviceInfo> query = Wrappers.query();
+        query.select(reportDate + " as time","product_id as productId","count(*) as deviceCount")
+                .eq(null != productId,"product_id",productId)
+                .between(null != startTime && null != endTime,"created_time",startTime,endTime)
+                .groupBy("productId","time");
+        return dmpDeviceInfoService.listMaps(query);
+    }
+
+    /**
+     * 统计产品日活跃数
+     * @param productId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    public List<Map<String, Object>> deviceStatusCount(Integer productId, Date startTime, Date endTime){
+        QueryWrapper<DmpDeviceStatus> query = Wrappers.query();
+        query.select("product_id as productId","COUNT(to_days(last_online_time) = to_days(now())) as dayCount","count(service_status = 3 or null) as serviceCount")
+                .eq(null != productId,"product_id",productId)
+                .between(null != startTime && null != endTime,"last_online_time",startTime,endTime)
+                .groupBy("productId");
+        return dmpDeviceStatusService.listMaps(query);
+    }
+}

+ 21 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/DmpDataOverviewMapper.xml

@@ -0,0 +1,21 @@
+<?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.usky.iot.mapper.DmpDataOverviewMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.iot.domain.DmpDataOverview">
+        <id column="id" property="id" />
+        <result column="device_number" property="deviceNumber" />
+        <result column="device_trend" property="deviceTrend" />
+        <result column="device_daily_active" property="deviceDailyActive" />
+        <result column="middle_statistic" property="middleStatistic" />
+        <result column="data_report" property="dataReport" />
+        <result column="product_device" property="productDevice" />
+        <result column="device_monthly_active" property="deviceMonthlyActive" />
+        <result column="product_id" property="productId" />
+        <result column="created_by" property="createdBy" />
+        <result column="created_time" property="createdTime" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>

+ 54 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/DmpDeviceStatusMapper.xml

@@ -12,5 +12,59 @@
         <result column="last_online_time" property="lastOnlineTime" />
         <result column="last_offline_time" property="lastOfflineTime" />
     </resultMap>
+    <select id="getDeviceStatusCollect" resultType="java.util.Map">
+        select product_id as productId,DATE(created_time) as createTime
+               COUNT(to_days(last_online_time) = to_days(now()) or null) as dayCount,
+               count(service_status = 3 or null) as jhCount,
+        count(service_status = 1 or null) as zcCount
+        from dmp_device ddi
+        left join dmp_device_status dds
+        on ddi.device_id  = dds.device_id
+        <where>
+            <if test="startTime != null and endTime != null">
+                and  ddi.created_time between #{startTime}
+                and #{endTime}
+            </if>
+            <if test="productId != null">
+                and ddi.product_id = #{productId}
+            </if>
+        </where>
+        group by productId,createTime
+    </select>
+    <select id="getMonthCollect" resultType="java.util.Map">
+        select product_id as productId,YEAR(created_time) as createTime
+        count(service_status = 3 or null) as jhCount,
+        count(service_status = 1 or null) as zcCount
+        from dmp_device ddi
+        left join dmp_device_status dds
+        on ddi.device_id  = dds.device_id
+        <where>
+            <if test="startTime != null and endTime != null">
+                and  ddi.created_time between #{startTime}
+                and #{endTime}
+            </if>
+            <if test="productId != null">
+                and ddi.product_id = #{productId}
+            </if>
+        </where>
+        group by productId,createTime
+    </select>
+    <select id="getDayHyList" resultType="java.lang.String">
+        select
+        count(*)
+        from dmp_device ddi
+        left join dmp_device_status dds
+        on ddi.device_id  = dds.device_id
+        <where>
+            <if test="startTime != null and endTime != null">
+                and  dds.last_online_time between #{startTime}
+                and #{endTime}
+            </if>
+            <if test="productId != null">
+                and ddi.product_id = #{productId}
+            </if>
+        </where>
+        group by productId
+    </select>
 
 </mapper>