Quellcode durchsuchen

首页大屏统计

chejianzheng vor 1 Monat
Ursprung
Commit
631b32f923
19 geänderte Dateien mit 468 neuen und 6 gelöschten Zeilen
  1. 24 0
      portal-service-application/src/main/java/com/hfln/portal/application/controller/web/WebStatsController.java
  2. 41 0
      portal-service-common/src/main/java/com/hfln/portal/common/dto/data/stat/ScreenAlarmDTO.java
  3. 41 0
      portal-service-common/src/main/java/com/hfln/portal/common/dto/data/stat/ScreenFallingDTO.java
  4. 84 0
      portal-service-common/src/main/java/com/hfln/portal/common/dto/data/stat/ScreenStatsDTO.java
  5. 25 0
      portal-service-common/src/main/java/com/hfln/portal/common/request/stat/ScreenAlarmQueryParams.java
  6. 25 0
      portal-service-common/src/main/java/com/hfln/portal/common/request/stat/ScreenFallingQueryParams.java
  7. 18 0
      portal-service-common/src/main/java/com/hfln/portal/common/request/stat/ScreenStatQueryParams.java
  8. 12 0
      portal-service-domain/src/main/java/com/hfln/portal/domain/gateway/WebStatsGateway.java
  9. 80 3
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/WebStatsGatewayImpl.java
  10. 13 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/mapper/DevInfoMapper.java
  11. 24 1
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/mapper/EventListMapper.java
  12. 22 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/mapper/EventsMapper.java
  13. 3 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/DevInfoService.java
  14. 5 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/EventListService.java
  15. 5 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/EventsService.java
  16. 6 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/DevInfoServiceImpl.java
  17. 18 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/EventListServiceImpl.java
  18. 17 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/EventsServiceImpl.java
  19. 5 2
      portal-service-server/src/main/resources/bootstrap.yml

+ 24 - 0
portal-service-application/src/main/java/com/hfln/portal/application/controller/web/WebStatsController.java

@@ -6,9 +6,15 @@ import cn.hfln.framework.catchlog.CatchAndLog;
 import cn.hfln.framework.dto.ApiResult;
 import com.hfln.portal.common.dto.data.event.EventListDTO;
 import com.hfln.portal.common.dto.data.event.EventsDTO;
+import com.hfln.portal.common.dto.data.stat.ScreenAlarmDTO;
+import com.hfln.portal.common.dto.data.stat.ScreenFallingDTO;
+import com.hfln.portal.common.dto.data.stat.ScreenStatsDTO;
 import com.hfln.portal.common.dto.data.user.UserDailyActiveDTO;
 import com.hfln.portal.common.request.event.EventListParams;
 import com.hfln.portal.common.request.event.WebEventsParams;
+import com.hfln.portal.common.request.stat.ScreenAlarmQueryParams;
+import com.hfln.portal.common.request.stat.ScreenFallingQueryParams;
+import com.hfln.portal.common.request.stat.ScreenStatQueryParams;
 import com.hfln.portal.common.request.user.UserDailyActiveParams;
 import com.hfln.portal.common.vo.PageRecord;
 import com.hfln.portal.domain.gateway.WebStatsGateway;
@@ -51,4 +57,22 @@ public class WebStatsController {
     public ApiResult<PageRecord<UserDailyActiveDTO>> queryUserDailyActive(@Valid @RequestBody UserDailyActiveParams params) {
         return ApiResult.success(webStatsGateway.queryUserDailyActive(params));
     }
+
+    @PostMapping("/screen")
+    @Operation(summary = "首页大屏统计")
+    public ApiResult<ScreenStatsDTO> queryScreen(@Valid @RequestBody ScreenStatQueryParams params) {
+        return ApiResult.success(webStatsGateway.queryScreen(params));
+    }
+
+    @PostMapping("/alarm")
+    @Operation(summary = "首页大屏历史告警统计")
+    public ApiResult<ScreenAlarmDTO> queryAlarm(@Valid @RequestBody ScreenAlarmQueryParams params) {
+        return ApiResult.success(webStatsGateway.queryAlarm(params));
+    }
+
+    @PostMapping("/falling")
+    @Operation(summary = "首页大屏历史跌倒统计")
+    public ApiResult<ScreenFallingDTO> queryFalling(@Valid @RequestBody ScreenFallingQueryParams params) {
+        return ApiResult.success(webStatsGateway.queryFalling(params));
+    }
 }

+ 41 - 0
portal-service-common/src/main/java/com/hfln/portal/common/dto/data/stat/ScreenAlarmDTO.java

@@ -0,0 +1,41 @@
+package com.hfln.portal.common.dto.data.stat;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ScreenAlarmDTO {
+
+    @Schema(description = "月统计信息列表")
+    private List<MonthStatInfo> monthStatInfo;
+
+    @Schema(description = "日统计信息列表")
+    private List<DayStatInfo> dayStatInfo;
+
+    @Data
+    @Schema(description = "月统计信息")
+    public static class MonthStatInfo {
+        @Schema(description = "年月,格式: yyyy-MM")
+        private String month;
+
+        @Schema(description = "告警数量")
+        private Integer alarmCount;
+
+        // 可根据实际需求添加其他统计字段
+    }
+
+    @Data
+    @Schema(description = "日统计信息")
+    public static class DayStatInfo {
+        @Schema(description = "日期,格式: yyyy-MM-dd")
+        private String date;
+
+        @Schema(description = "告警数量")
+        private Integer alarmCount;
+
+        // 可根据实际需求添加其他统计字段
+    }
+
+}

+ 41 - 0
portal-service-common/src/main/java/com/hfln/portal/common/dto/data/stat/ScreenFallingDTO.java

@@ -0,0 +1,41 @@
+package com.hfln.portal.common.dto.data.stat;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ScreenFallingDTO {
+
+    @Schema(description = "月统计信息列表")
+    private List<MonthStatInfo> monthStatInfo;
+
+    @Schema(description = "日统计信息列表")
+    private List<DayStatInfo> dayStatInfo;
+
+    @Data
+    @Schema(description = "月统计信息")
+    public static class MonthStatInfo {
+        @Schema(description = "年月,格式: yyyy-MM")
+        private String month;
+
+        @Schema(description = "跌倒数量")
+        private Integer fallingCount;
+
+        // 可根据实际需求添加其他统计字段
+    }
+
+    @Data
+    @Schema(description = "日统计信息")
+    public static class DayStatInfo {
+        @Schema(description = "日期,格式: yyyy-MM-dd")
+        private String date;
+
+        @Schema(description = "跌倒数量")
+        private Integer fallingCount;
+
+        // 可根据实际需求添加其他统计字段
+    }
+
+}

+ 84 - 0
portal-service-common/src/main/java/com/hfln/portal/common/dto/data/stat/ScreenStatsDTO.java

@@ -0,0 +1,84 @@
+package com.hfln.portal.common.dto.data.stat;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ScreenStatsDTO {
+
+    @Schema(description = "设备总数")
+    private Integer deviceCount;
+
+    @Schema(description = "在线设备数")
+    private Integer onlineCount;
+
+    @Schema(description = "系统守护天数")
+    private Integer systemGuardDay;
+
+    @Schema(description = "今日跌倒统计")
+    private Integer fallingCount;
+
+    @Schema(description = "今日告警统计")
+    private Integer alarmCount;
+
+    @Schema(description = "当天检测到人数")
+    private Integer detectedCount;
+
+    // 今日活跃度
+
+    @Schema(description = "年龄统计信息")
+    private List<AgeInfo> ageList;
+
+    @Schema(description = "守护统计信息")
+    private List<GuardInfo> guardList;
+
+    @Schema(description = "安装位置统计信息")
+    private List<InstallPositionInfo> installPositionList;
+
+    @Data
+    public static class AgeInfo {
+
+//        @Schema(description = "50-60岁年龄统计")
+//        private Integer age50To60Count;
+//
+//        @Schema(description = "60-70岁年龄统计")
+//        private Integer age60To70Count;
+//
+//        @Schema(description = "70岁以上年龄统计")
+//        private Integer age70Count;
+
+        @Schema(description = "年龄段")
+        private String ageRange;
+
+        @Schema(description = "数量")
+        private Integer count;
+    }
+
+    @Data
+    public static class GuardInfo {
+
+//        @Schema(description = "一般监测对象")
+//        private Integer generalCount;
+//
+//        @Schema(description = "重点监测对象")
+//        private Integer importantCount;
+
+        @Schema(description = "监测对象类型")
+        private String guardType;
+
+        @Schema(description = "数量")
+        private Integer count;
+    }
+
+    @Data
+    public static class InstallPositionInfo {
+
+        @Schema(description = "安装位置")
+        private String installPosition;
+
+        @Schema(description = "安装数量")
+        private Integer count;
+    }
+}

+ 25 - 0
portal-service-common/src/main/java/com/hfln/portal/common/request/stat/ScreenAlarmQueryParams.java

@@ -0,0 +1,25 @@
+package com.hfln.portal.common.request.stat;
+
+import com.hfln.portal.common.vo.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ScreenAlarmQueryParams extends BaseVO {
+
+    @Schema(description = "查询类型 最近七天 day 最近半年 month")
+    @NotBlank(message = "查询类型不能为空")
+    @Pattern(regexp = "^(day|month)$", message = "查询类型格式错误")
+    private String queryType;
+
+    @Schema(description = "租户id")
+    @NotNull(message = "租户id不能为空")
+    private Long tenantId;
+}

+ 25 - 0
portal-service-common/src/main/java/com/hfln/portal/common/request/stat/ScreenFallingQueryParams.java

@@ -0,0 +1,25 @@
+package com.hfln.portal.common.request.stat;
+
+import com.hfln.portal.common.vo.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ScreenFallingQueryParams extends BaseVO {
+
+    @Schema(description = "查询类型 最近七天 day 最近半年 month")
+    @NotBlank(message = "查询类型不能为空")
+    @Pattern(regexp = "^(day|month)$", message = "查询类型格式错误")
+    private String queryType;
+
+    @Schema(description = "租户id")
+    @NotNull(message = "租户id不能为空")
+    private Long tenantId;
+}

+ 18 - 0
portal-service-common/src/main/java/com/hfln/portal/common/request/stat/ScreenStatQueryParams.java

@@ -0,0 +1,18 @@
+package com.hfln.portal.common.request.stat;
+
+import com.hfln.portal.common.vo.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ScreenStatQueryParams extends BaseVO {
+
+    @Schema(description = "租户id")
+    @NotNull(message = "租户id不能为空")
+    private Long tenantId;
+}

+ 12 - 0
portal-service-domain/src/main/java/com/hfln/portal/domain/gateway/WebStatsGateway.java

@@ -2,9 +2,15 @@ package com.hfln.portal.domain.gateway;
 
 import com.hfln.portal.common.dto.data.event.EventListDTO;
 import com.hfln.portal.common.dto.data.event.EventsDTO;
+import com.hfln.portal.common.dto.data.stat.ScreenAlarmDTO;
+import com.hfln.portal.common.dto.data.stat.ScreenFallingDTO;
+import com.hfln.portal.common.dto.data.stat.ScreenStatsDTO;
 import com.hfln.portal.common.dto.data.user.UserDailyActiveDTO;
 import com.hfln.portal.common.request.event.EventListParams;
 import com.hfln.portal.common.request.event.WebEventsParams;
+import com.hfln.portal.common.request.stat.ScreenAlarmQueryParams;
+import com.hfln.portal.common.request.stat.ScreenFallingQueryParams;
+import com.hfln.portal.common.request.stat.ScreenStatQueryParams;
 import com.hfln.portal.common.request.user.UserDailyActiveParams;
 import com.hfln.portal.common.vo.PageRecord;
 
@@ -16,5 +22,11 @@ public interface WebStatsGateway {
     PageRecord<EventsDTO> alarmEventsQuery(WebEventsParams params);
 
     PageRecord<UserDailyActiveDTO> queryUserDailyActive(UserDailyActiveParams params);
+
+    ScreenStatsDTO queryScreen(ScreenStatQueryParams params);
+
+    ScreenAlarmDTO queryAlarm(ScreenAlarmQueryParams params);
+
+    ScreenFallingDTO queryFalling(ScreenFallingQueryParams params);
 }
 

+ 80 - 3
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/WebStatsGatewayImpl.java

@@ -7,22 +7,29 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.hfln.portal.common.constant.UserConstants;
 import com.hfln.portal.common.dto.data.event.EventListDTO;
 import com.hfln.portal.common.dto.data.event.EventsDTO;
+import com.hfln.portal.common.dto.data.stat.ScreenAlarmDTO;
+import com.hfln.portal.common.dto.data.stat.ScreenFallingDTO;
+import com.hfln.portal.common.dto.data.stat.ScreenStatsDTO;
 import com.hfln.portal.common.dto.data.user.UserDailyActiveDTO;
 import com.hfln.portal.common.request.event.EventListParams;
 import com.hfln.portal.common.request.event.WebEventsParams;
+import com.hfln.portal.common.request.stat.ScreenAlarmQueryParams;
+import com.hfln.portal.common.request.stat.ScreenFallingQueryParams;
+import com.hfln.portal.common.request.stat.ScreenStatQueryParams;
 import com.hfln.portal.common.request.user.UserDailyActiveParams;
 import com.hfln.portal.common.vo.PageRecord;
 import com.hfln.portal.domain.customer.AdminUserType;
 import com.hfln.portal.domain.customer.util.CopyUtils;
 import com.hfln.portal.domain.gateway.WebStatsGateway;
-import com.hfln.portal.infrastructure.po.DailyActiveUsers;
-import com.hfln.portal.infrastructure.po.EventList;
-import com.hfln.portal.infrastructure.po.UserInfo;
+import com.hfln.portal.infrastructure.po.*;
 import com.hfln.portal.infrastructure.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -46,6 +53,9 @@ public class WebStatsGatewayImpl implements WebStatsGateway {
     @Autowired
     private UserService userService;
 
+    @Autowired
+    private TblTenantService tblTenantService;
+
 
     @Override
     public PageRecord<EventListDTO> fallQuery(EventListParams params) {
@@ -187,6 +197,73 @@ public class WebStatsGatewayImpl implements WebStatsGateway {
 
         return pageRecord;
     }
+
+    @Override
+    public ScreenStatsDTO queryScreen(ScreenStatQueryParams params) {
+        ScreenStatsDTO res = new ScreenStatsDTO();
+
+        TblTenant tenant = tblTenantService.getById(params.getTenantId());
+        res.setSystemGuardDay((int) ChronoUnit.DAYS.between(tenant.getCreateTime(), LocalDateTime.now()));
+
+        res.setDeviceCount(Math.toIntExact(devInfoService.lambdaQuery()
+                .eq(DevInfo::getTenantId, params.getTenantId())
+                .count()));
+        res.setOnlineCount(Math.toIntExact(devInfoService.lambdaQuery()
+                .eq(DevInfo::getTenantId, params.getTenantId())
+                .eq(DevInfo::getOnline, DevInfo.Constants.OnlineStatus.ONLINE)
+                .count()));
+
+
+
+        res.setFallingCount(Math.toIntExact(eventListService.lambdaQuery()
+                .eq(EventList::getTenantId, params.getTenantId())
+                .count()));
+        res.setAlarmCount(Math.toIntExact(eventsService.lambdaQuery()
+                .eq(Events::getTenantId, params.getTenantId())
+                .count()));
+
+
+        res.setDetectedCount(Math.toIntExact(devInfoService.lambdaQuery()
+                .eq(DevInfo::getTenantId, params.getTenantId())
+                        .ge(DevInfo::getOfflineTime, LocalDate.now())
+                .count()));
+        //     @Schema(description = "年龄统计信息")
+        //    private AgeInfo ageInfo;
+        //
+        //    @Schema(description = "守护统计信息")
+        //    private GuardInfo guardInfo;
+        //
+        //    @Schema(description = "安装位置统计信息")
+        //    private InstallPositionInfo installPositionInfo;
+
+        res.setInstallPositionList(devInfoService.queryInstallCountByTenantId(params.getTenantId()));
+
+        return res;
+    }
+
+    @Override
+    public ScreenAlarmDTO queryAlarm(ScreenAlarmQueryParams params) {
+
+        ScreenAlarmDTO screenAlarmDTO = new ScreenAlarmDTO();
+        if (params.getQueryType().equals("month")) {
+            screenAlarmDTO.setMonthStatInfo(eventsService.queryEventsInSixMonths(params.getTenantId()));
+        } else if (params.getQueryType().equals("day")) {
+            screenAlarmDTO.setDayStatInfo(eventsService.queryEventsInSevenDays(params.getTenantId()));
+        }
+        return screenAlarmDTO;
+    }
+
+    @Override
+    public ScreenFallingDTO queryFalling(ScreenFallingQueryParams params) {
+
+        ScreenFallingDTO screenAlarmDTO = new ScreenFallingDTO();
+        if (params.getQueryType().equals("month")) {
+            screenAlarmDTO.setMonthStatInfo(eventListService.queryEventsInSixMonths(params.getTenantId()));
+        } else if (params.getQueryType().equals("day")) {
+            screenAlarmDTO.setDayStatInfo(eventListService.queryEventsInSevenDays(params.getTenantId()));
+        }
+        return screenAlarmDTO;
+    }
 }
 
 

+ 13 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/mapper/DevInfoMapper.java

@@ -1,10 +1,14 @@
 package com.hfln.portal.infrastructure.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.hfln.portal.common.dto.data.stat.ScreenStatsDTO;
 import com.hfln.portal.infrastructure.po.DevInfo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 
+import java.util.List;
+
 /**
  * 设备信息表 Mapper 接口
  */
@@ -42,4 +46,13 @@ public interface DevInfoMapper extends BaseMapper<DevInfo> {
 
             "WHERE dev_id = #{devId}")
     void reset(Long devId);
+
+    @Select("SELECT " +
+            "   t.install_position AS installPosition, " +
+            "   COUNT(*) AS count " +
+            "FROM dev_info t " +
+            "WHERE t.tenant_id = #{tenantId} and t.is_deleted = 0 " +
+            "GROUP BY t.install_position " +
+            "ORDER BY installPosition ASC ")
+    List<ScreenStatsDTO.InstallPositionInfo> queryInstallCountByTenantId(Long tenantId);
 }

+ 24 - 1
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/mapper/EventListMapper.java

@@ -1,12 +1,35 @@
 package com.hfln.portal.infrastructure.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.hfln.portal.common.dto.data.stat.ScreenFallingDTO;
 import com.hfln.portal.infrastructure.po.EventList;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.time.LocalDate;
+import java.util.List;
 
 /**
  * 事件列表表 Mapper 接口
  */
 @Mapper
 public interface EventListMapper extends BaseMapper<EventList> {
-} 
+
+    @Select("SELECT " +
+            "   DATE_FORMAT(e.create_time, '%Y-%m') AS month, " +
+            "   COUNT(*) AS fallingCount " +
+            "FROM event_list e " +
+            "WHERE e.tenant_id = #{tenantId} and e.create_time >=  #{startDate} " +
+            "GROUP BY DATE_FORMAT(e.create_time, '%Y-%m') " +
+            "ORDER BY month ASC ")
+    List<ScreenFallingDTO.MonthStatInfo> queryEventsInSixMonths(Long tenantId, LocalDate startDate);
+
+    @Select("SELECT " +
+            "   DATE_FORMAT(e.create_time, '%Y-%m-%d') AS date, " +
+            "   COUNT(*) AS fallingCount " +
+            "FROM event_list e " +
+            "WHERE e.tenant_id = #{tenantId} and e.create_time >=  #{startDate} " +
+            "GROUP BY DATE_FORMAT(e.create_time, '%Y-%m-%d') " +
+            "ORDER BY date ASC ")
+    List<ScreenFallingDTO.DayStatInfo> queryEventsInSevenDays(Long tenantId, LocalDate startDate);
+}

+ 22 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/mapper/EventsMapper.java

@@ -2,11 +2,15 @@ package com.hfln.portal.infrastructure.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.hfln.portal.common.dto.data.stat.ScreenAlarmDTO;
 import com.hfln.portal.infrastructure.po.Events;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
+import java.time.LocalDate;
+import java.util.List;
+
 @Mapper
 public interface EventsMapper extends BaseMapper<Events> {
 
@@ -16,4 +20,22 @@ public interface EventsMapper extends BaseMapper<Events> {
             "WHERE d.dev_name LIKE CONCAT('%', #{devName}, '%') " +
             "ORDER BY e.create_time DESC")
     Page<Events> findEventsByDevName(Page<?> page, @Param("devName") String devName);
+
+    @Select("SELECT " +
+            "   DATE_FORMAT(e.create_time, '%Y-%m') AS month, " +
+            "   COUNT(*) AS alarmCount " +
+            "FROM events e " +
+            "WHERE e.tenant_id = #{tenantId} and e.create_time >=  #{startDate} " +
+            "GROUP BY DATE_FORMAT(e.create_time, '%Y-%m') " +
+            "ORDER BY month ASC ")
+    List<ScreenAlarmDTO.MonthStatInfo> queryEventsInSixMonths(Long tenantId, LocalDate startDate);
+
+    @Select("SELECT " +
+            "   DATE_FORMAT(e.create_time, '%Y-%m-%d') AS date, " +
+            "   COUNT(*) AS alarmCount " +
+            "FROM events e " +
+            "WHERE e.tenant_id = #{tenantId} and e.create_time >=  #{startDate} " +
+            "GROUP BY DATE_FORMAT(e.create_time, '%Y-%m-%d') " +
+            "ORDER BY date ASC ")
+    List<ScreenAlarmDTO.DayStatInfo> queryEventsInSevenDays(Long tenantId, LocalDate startDate);
 }

+ 3 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/DevInfoService.java

@@ -2,6 +2,7 @@ package com.hfln.portal.infrastructure.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.hfln.portal.common.dto.data.stat.ScreenStatsDTO;
 import com.hfln.portal.common.request.device.DeviceBandingParams;
 import com.hfln.portal.common.request.device.DeviceListQueryReq;
 import com.hfln.portal.infrastructure.po.DevInfo;
@@ -36,4 +37,6 @@ public interface DevInfoService extends IService<DevInfo> {
     List<String> devIdsChangeClientIds (List<Long> devIds);
 
     void resetDevInfo(Long devId);
+
+    List<ScreenStatsDTO.InstallPositionInfo> queryInstallCountByTenantId(Long tenantId);
 }

+ 5 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/EventListService.java

@@ -3,6 +3,7 @@ package com.hfln.portal.infrastructure.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.hfln.portal.common.dto.data.event.EventListDTO;
+import com.hfln.portal.common.dto.data.stat.ScreenFallingDTO;
 import com.hfln.portal.common.request.event.EventListParams;
 import com.hfln.portal.common.request.event.WapEventListParams;
 import com.hfln.portal.infrastructure.po.EventList;
@@ -16,4 +17,8 @@ public interface EventListService extends IService<EventList> {
     List<EventListDTO> queryFallingEvents(List<Long> devIdList);
 
     Page<EventList> WapQueryEventList(WapEventListParams params);
+
+    List<ScreenFallingDTO.MonthStatInfo> queryEventsInSixMonths(Long tenantId);
+
+    List<ScreenFallingDTO.DayStatInfo> queryEventsInSevenDays(Long tenantId);
 }

+ 5 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/EventsService.java

@@ -3,6 +3,7 @@ package com.hfln.portal.infrastructure.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.hfln.portal.common.dto.data.event.EventsDTO;
+import com.hfln.portal.common.dto.data.stat.ScreenAlarmDTO;
 import com.hfln.portal.common.request.event.WapEventsParams;
 import com.hfln.portal.common.request.event.WebEventsParams;
 import com.hfln.portal.common.vo.PageRecord;
@@ -24,4 +25,8 @@ public interface EventsService extends IService<Events> {
     void fillDevNames(List<EventsDTO> dtoList);
 
     long  countUserDevicesEvents(List<String> clientIds);
+
+    List<ScreenAlarmDTO.MonthStatInfo> queryEventsInSixMonths(Long tenantId);
+
+    List<ScreenAlarmDTO.DayStatInfo> queryEventsInSevenDays(Long tenantId);
 }

+ 6 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/DevInfoServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hfln.portal.common.dto.data.stat.ScreenStatsDTO;
 import com.hfln.portal.common.request.device.DeviceBandingParams;
 import com.hfln.portal.common.request.device.DeviceListQueryReq;
 import com.hfln.portal.domain.customer.util.UpdateWrapperBuilder;
@@ -272,4 +273,9 @@ public class DevInfoServiceImpl extends ServiceImpl<DevInfoMapper, DevInfo> impl
     public void resetDevInfo(Long devId) {
         this.baseMapper.reset(devId);
     }
+
+    @Override
+    public List<ScreenStatsDTO.InstallPositionInfo> queryInstallCountByTenantId(Long tenantId) {
+        return this.baseMapper.queryInstallCountByTenantId(tenantId);
+    }
 }

+ 18 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/EventListServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.hfln.portal.common.dto.data.event.EventListDTO;
+import com.hfln.portal.common.dto.data.stat.ScreenFallingDTO;
 import com.hfln.portal.common.request.event.EventListParams;
 import com.hfln.portal.common.request.event.WapEventListParams;
 import com.hfln.portal.infrastructure.mapper.EventListMapper;
@@ -12,7 +13,9 @@ import com.hfln.portal.infrastructure.service.EventListService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.temporal.TemporalAdjusters;
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
@@ -91,4 +94,19 @@ public class EventListServiceImpl extends ServiceImpl<EventListMapper, EventList
         queryWrapper.orderByDesc(EventList::getCreateTime);
         return this.baseMapper.selectPage(page, queryWrapper);
     }
+
+    @Override
+    public List<ScreenFallingDTO.MonthStatInfo> queryEventsInSixMonths(Long tenantId) {
+        LocalDate today = LocalDate.now();
+        // 取六月前的第一天,包含当月  比如 今天是 九月八号,就取 四月一号
+        LocalDate startDate = today.minusMonths(5).with(TemporalAdjusters.firstDayOfMonth());
+        return this.baseMapper.queryEventsInSixMonths(tenantId, startDate);
+    }
+
+    @Override
+    public List<ScreenFallingDTO.DayStatInfo> queryEventsInSevenDays(Long tenantId) {
+        LocalDate today = LocalDate.now();
+        LocalDate startDate = today.minusDays(6);
+        return this.baseMapper.queryEventsInSevenDays(tenantId, startDate);
+    }
 }

+ 17 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/EventsServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.hfln.portal.common.dto.data.event.EventsDTO;
+import com.hfln.portal.common.dto.data.stat.ScreenAlarmDTO;
 import com.hfln.portal.common.request.event.WapEventsParams;
 import com.hfln.portal.common.request.event.WebEventsParams;
 import com.hfln.portal.common.vo.PageRecord;
@@ -19,6 +20,7 @@ import org.springframework.stereotype.Service;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -143,6 +145,21 @@ public class EventsServiceImpl extends ServiceImpl<EventsMapper, Events> impleme
         return this.baseMapper.selectCount(queryWrapper);
     }
 
+    @Override
+    public List<ScreenAlarmDTO.MonthStatInfo> queryEventsInSixMonths(Long tenantId) {
+        LocalDate today = LocalDate.now();
+        // 取六月前的第一天,包含当月  比如 今天是 九月八号,就取 四月一号
+        LocalDate startDate = today.minusMonths(5).with(TemporalAdjusters.firstDayOfMonth());
+        return this.baseMapper.queryEventsInSixMonths(tenantId, startDate);
+    }
+
+    @Override
+    public List<ScreenAlarmDTO.DayStatInfo> queryEventsInSevenDays(Long tenantId) {
+        LocalDate today = LocalDate.now();
+        LocalDate startDate = today.minusDays(6);
+        return this.baseMapper.queryEventsInSevenDays(tenantId, startDate);
+    }
+
     // 辅助方法:填充 devName
     public void fillDevNames(List<EventsDTO> dtoList) {
         Set<String> allClientIds = dtoList.stream()

+ 5 - 2
portal-service-server/src/main/resources/bootstrap.yml

@@ -16,10 +16,13 @@ ribbon:
   ConnectTimeout: 3000
   ReadTimeout: 3000
 mybatis:
+#  configuration:
+#    #开启驼峰命名
+#    map-underscore-to-camel-case: true
+mybatis-plus:
   configuration:
-    #开启驼峰命名
     map-underscore-to-camel-case: true
-mybatis-plus:
+#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
   global-config:
     db-config:
       logic-delete-field: del_flag