Jelajahi Sumber

feat:新增获取近三天监控报警情况接口
feat:新增根据登录人所属组织获取报警接口人列表接口
fix:修复报警接收人数据库字段与实体类对应关系

黄渊昊 6 bulan lalu
induk
melakukan
2ec31deac9
15 mengubah file dengan 263 tambahan dan 193 penghapusan
  1. 6 1
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/alarm/bean/SensorAlarmUser.java
  2. 10 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/alarmuser/controller/AlarmUserController.java
  3. 20 35
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/alarmuser/entity/AlarmUser.java
  4. 5 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/alarmuser/service/AlarmUserService.java
  5. 16 1
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/alarmuser/service/impl/AlarmUserServiceImpl.java
  6. 9 60
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/controller/MonitorNoticeController.java
  7. 21 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/entity/CountWithTime.java
  8. 2 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/entity/MonitorNotice.java
  9. 14 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/entity/NoticeByDate.java
  10. 41 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/enums/DateEnum.java
  11. 8 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/mapper/MonitorNoticeMapper.java
  12. 28 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/mapper/mapping/MonitorNoticeMapper.xml
  13. 9 41
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/service/MonitorNoticeService.java
  14. 73 54
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/service/impl/MonitorNoticeServiceImpl.java
  15. 1 1
      snowy-web-app/src/main/resources/application.properties

+ 6 - 1
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/alarm/bean/SensorAlarmUser.java

@@ -14,10 +14,11 @@ public class SensorAlarmUser {
     public SensorAlarmUser() {
     }
 
-    public SensorAlarmUser(String userName, String userId, String openId) {
+    public SensorAlarmUser(String userName, String userId, String openId,String nickName) {
         this.userName = userName;
         this.userId = userId;
         this.openId = openId;
+        this.nickName = nickName;
     }
 
     /**
@@ -60,4 +61,8 @@ public class SensorAlarmUser {
      */
     private String alarmPriority;
 
+    /**
+     * 微信用户名
+     */
+    private String nickName;
 }

+ 10 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/alarmuser/controller/AlarmUserController.java

@@ -120,4 +120,14 @@ public class AlarmUserController {
     public CommonResult<AlarmUser> detail(@Valid AlarmUserIdParam alarmUserIdParam) {
         return CommonResult.data(alarmUserService.detail(alarmUserIdParam));
     }
+
+    /**
+     * 根据登录人所属组织获取
+     */
+    @Operation(summary = "根据登录人所属组织获取")
+    @SaCheckPermission("/coldchain/alarmuser/list")
+    @GetMapping("/coldchain/alarmuser/list")
+    public CommonResult<List<AlarmUser>> list() {
+        return CommonResult.data(alarmUserService.myList());
+    }
 }

+ 20 - 35
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/alarmuser/entity/AlarmUser.java

@@ -13,9 +13,12 @@
 package vip.xiaonuo.coldchain.modular.alarmuser.entity;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.influxdb.annotations.Column;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Getter;
 import lombok.Setter;
+import vip.xiaonuo.common.pojo.OrgEntity;
+
 import java.math.BigDecimal;
 import java.util.Date;
 
@@ -28,7 +31,7 @@ import java.util.Date;
 @Getter
 @Setter
 @TableName("alarm_user")
-public class AlarmUser {
+public class AlarmUser extends OrgEntity {
 
     /** id */
     @TableId
@@ -37,79 +40,61 @@ public class AlarmUser {
 
     /** 系统用户id */
     @Schema(description = "系统用户id")
+    @Column(name = "user_id")
     private String userId;
 
     /** 用户唯一标识 */
     @Schema(description = "用户唯一标识")
-    private String openid;
+    @Column(name = "open_id")
+    private String openId;
 
     /** AccessToken */
     @Schema(description = "AccessToken")
+    @Column(name = "access_token")
     private String accessToken;
 
     /** RefreshToken */
     @Schema(description = "RefreshToken")
+    @Column(name = "refresh_token")
     private String refreshToken;
 
     /** 微信昵称 */
     @Schema(description = "微信昵称")
-    private String nickname;
+    @Column(name = "nick_name")
+    private String nickName;
 
     /** 性别 */
     @Schema(description = "性别")
+    @Column(name = "sex")
     private String sex;
 
     /** 省份 */
     @Schema(description = "省份")
+    @Column(name = "province")
     private String province;
 
     /** 用户城市 */
     @Schema(description = "用户城市")
+    @Column(name = "city")
     private String city;
 
     /** 国家 */
     @Schema(description = "国家")
+    @Column(name = "country")
     private String country;
 
     /** 用户头像 */
     @Schema(description = "用户头像")
+    @Column(name = "avatar")
     private String avatar;
 
     /** 特权信息 */
     @Schema(description = "特权信息")
+    @Column(name = "privilege")
     private String privilege;
 
     /** unionid */
-    @Schema(description = "unionid")
-    private String unionid;
-
-    /** 扩展信息 */
-    @Schema(description = "扩展信息")
-    private String extJson;
-
-    /** 删除标志 */
-    @Schema(description = "删除标志")
-    @TableLogic
-    @TableField(fill = FieldFill.INSERT)
-    private String deleteFlag;
-
-    /** 创建时间 */
-    @Schema(description = "创建时间")
-    @TableField(fill = FieldFill.INSERT)
-    private Date createTime;
-
-    /** 创建用户 */
-    @Schema(description = "创建用户")
-    @TableField(fill = FieldFill.INSERT)
-    private String createUser;
-
-    /** 修改时间 */
-    @Schema(description = "修改时间")
-    @TableField(fill = FieldFill.UPDATE)
-    private Date updateTime;
-
-    /** 修改用户 */
-    @Schema(description = "修改用户")
-    @TableField(fill = FieldFill.UPDATE)
-    private String updateUser;
+    @Schema(description = "unionId")
+    @Column(name = "union_id")
+    private String unionId;
 }

+ 5 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/alarmuser/service/AlarmUserService.java

@@ -77,4 +77,9 @@ public interface AlarmUserService extends IService<AlarmUser> {
      * @date  2024/12/02 15:41
      **/
     AlarmUser queryEntity(String id);
+
+    /**
+     * 根据登录人所属组织获取
+     */
+    List<AlarmUser> myList();
 }

+ 16 - 1
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/alarmuser/service/impl/AlarmUserServiceImpl.java

@@ -16,11 +16,15 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollStreamUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
+import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
+import vip.xiaonuo.common.enums.CommonDeleteFlagEnum;
 import vip.xiaonuo.common.enums.CommonSortOrderEnum;
 import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.common.page.CommonPageRequest;
@@ -45,9 +49,10 @@ public class AlarmUserServiceImpl extends ServiceImpl<AlarmUserMapper, AlarmUser
 
     @Override
     public Page<AlarmUser> page(AlarmUserPageParam alarmUserPageParam) {
+        SaBaseLoginUser loginUser = StpLoginUserUtil.getLoginUser();
         QueryWrapper<AlarmUser> queryWrapper = new QueryWrapper<AlarmUser>().checkSqlInjection();
         if(ObjectUtil.isNotEmpty(alarmUserPageParam.getNickname())) {
-            queryWrapper.lambda().like(AlarmUser::getNickname, alarmUserPageParam.getNickname());
+            queryWrapper.lambda().like(AlarmUser::getNickName, alarmUserPageParam.getNickname());
         }
         if(ObjectUtil.isAllNotEmpty(alarmUserPageParam.getSortField(), alarmUserPageParam.getSortOrder())) {
             CommonSortOrderEnum.validate(alarmUserPageParam.getSortOrder());
@@ -56,6 +61,7 @@ public class AlarmUserServiceImpl extends ServiceImpl<AlarmUserMapper, AlarmUser
         } else {
             queryWrapper.lambda().orderByAsc(AlarmUser::getId);
         }
+        queryWrapper.lambda().eq(AlarmUser::getCreateOrg,loginUser.getOrgId()).eq(AlarmUser::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE);
         return this.page(CommonPageRequest.defaultPage(), queryWrapper);
     }
 
@@ -94,4 +100,13 @@ public class AlarmUserServiceImpl extends ServiceImpl<AlarmUserMapper, AlarmUser
         }
         return alarmUser;
     }
+
+    @Override
+    public List<AlarmUser> myList() {
+        SaBaseLoginUser loginUser = StpLoginUserUtil.getLoginUser();
+        LambdaQueryWrapper<AlarmUser> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AlarmUser::getCreateOrg,loginUser.getOrgId()).eq(AlarmUser::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE);
+        List<AlarmUser> list = list(queryWrapper);
+        return list;
+    }
 }

+ 9 - 60
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/controller/MonitorNoticeController.java

@@ -25,6 +25,8 @@ import org.springframework.web.bind.annotation.RestController;
 import vip.xiaonuo.coldchain.core.alarm.bean.SensorAlarm;
 import vip.xiaonuo.coldchain.core.alarm.service.SensorAlarmService;
 import vip.xiaonuo.coldchain.modular.app.param.MessagePageParam;
+import vip.xiaonuo.coldchain.modular.monitornotice.entity.CountWithTime;
+import vip.xiaonuo.coldchain.modular.monitornotice.entity.NoticeByDate;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.coldchain.modular.monitornotice.entity.MonitorNotice;
@@ -68,65 +70,6 @@ public class MonitorNoticeController {
         return CommonResult.data(sensorAlarmService.getMessages(monitorNoticePageParam));
     }
 
-    /**
-     * 添加监控通知
-     *
-     * @author 黄渊昊
-     * @date  2024/11/25 10:58
-     */
-    @Operation(summary = "添加监控通知")
-    @CommonLog("添加监控通知")
-    @SaCheckPermission("/coldchain/monitornotice/add")
-    @PostMapping("/coldchain/monitornotice/add")
-    public CommonResult<String> add(@RequestBody @Valid MonitorNoticeAddParam monitorNoticeAddParam) {
-        monitorNoticeService.add(monitorNoticeAddParam);
-        return CommonResult.ok();
-    }
-
-    /**
-     * 编辑监控通知
-     *
-     * @author 黄渊昊
-     * @date  2024/11/25 10:58
-     */
-    @Operation(summary = "编辑监控通知")
-    @CommonLog("编辑监控通知")
-    @SaCheckPermission("/coldchain/monitornotice/edit")
-    @PostMapping("/coldchain/monitornotice/edit")
-    public CommonResult<String> edit(@RequestBody @Valid MonitorNoticeEditParam monitorNoticeEditParam) {
-        monitorNoticeService.edit(monitorNoticeEditParam);
-        return CommonResult.ok();
-    }
-
-    /**
-     * 删除监控通知
-     *
-     * @author 黄渊昊
-     * @date  2024/11/25 10:58
-     */
-    @Operation(summary = "删除监控通知")
-    @CommonLog("删除监控通知")
-    @SaCheckPermission("/coldchain/monitornotice/delete")
-    @PostMapping("/coldchain/monitornotice/delete")
-    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
-                                                   List<MonitorNoticeIdParam> monitorNoticeIdParamList) {
-        monitorNoticeService.delete(monitorNoticeIdParamList);
-        return CommonResult.ok();
-    }
-
-    /**
-     * 获取监控通知详情
-     *
-     * @author 黄渊昊
-     * @date  2024/11/25 10:58
-     */
-    @Operation(summary = "获取监控通知详情")
-    @SaCheckPermission("/coldchain/monitornotice/detail")
-    @GetMapping("/coldchain/monitornotice/detail")
-    public CommonResult<MonitorNotice> detail(@Valid MonitorNoticeIdParam monitorNoticeIdParam) {
-        return CommonResult.data(monitorNoticeService.detail(monitorNoticeIdParam));
-    }
-
     /**
      * 获取监控通知列表
      *
@@ -140,6 +83,12 @@ public class MonitorNoticeController {
     }
 
     /**
-     *
+     * 获取近三天报警情况
      */
+    @Operation(summary = "获取近三天报警情况")
+    @SaCheckPermission("/coldchain/monitornotice/getNoticeByDate")
+    @GetMapping("/coldchain/monitornotice/getNoticeByDate")
+    public CommonResult<List<CountWithTime>> getNoticeByDate() {
+        return CommonResult.data(monitorNoticeService.getNoticeByDate());
+    }
 }

+ 21 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/entity/CountWithTime.java

@@ -0,0 +1,21 @@
+package vip.xiaonuo.coldchain.modular.monitornotice.entity;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+public class CountWithTime {
+
+    @Schema(description = "天号(哪一天)")
+    private String dateName;
+
+    @Schema(description = "时间段")
+    private List<String> timePeriodList;
+
+    @Schema(description = "报警次数")
+    private List<Integer> countList;
+}

+ 2 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/entity/MonitorNotice.java

@@ -14,6 +14,7 @@ package vip.xiaonuo.coldchain.modular.monitornotice.entity;
 
 import com.baomidou.mybatisplus.annotation.*;
 import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
 import lombok.Getter;
 import lombok.Setter;
 import vip.xiaonuo.common.pojo.CommonEntity;
@@ -29,6 +30,7 @@ import java.util.Date;
  **/
 @Getter
 @Setter
+@Data
 @TableName("monitor_notice")
 public class MonitorNotice extends CommonEntity {
 

+ 14 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/entity/NoticeByDate.java

@@ -0,0 +1,14 @@
+package vip.xiaonuo.coldchain.modular.monitornotice.entity;
+
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+public class NoticeByDate {
+
+    private List<CountWithTime> countWithTimeList;
+}

+ 41 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/enums/DateEnum.java

@@ -0,0 +1,41 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.coldchain.modular.monitornotice.enums;
+
+import lombok.Getter;
+
+/**
+ * 监控通知枚举
+ *
+ * @author 黄渊昊
+ * @date  2024/11/25 10:58
+ **/
+@Getter
+public enum DateEnum {
+
+    /** 前天 */
+    DAY_BEFORE_YESTERDAY("DAY_BEFORE_YESTERDAY"),
+
+    /** 昨天 */
+    YESTERDAY("YESTERDAY"),
+
+    /** 今天 */
+    TODAY("TODAY");
+
+    private final String value;
+
+
+    DateEnum(String value) {
+        this.value = value;
+    }
+}

+ 8 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/mapper/MonitorNoticeMapper.java

@@ -13,8 +13,12 @@
 package vip.xiaonuo.coldchain.modular.monitornotice.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.data.repository.query.Param;
 import vip.xiaonuo.coldchain.modular.monitornotice.entity.MonitorNotice;
 
+import java.util.List;
+import java.util.Set;
+
 /**
  * 监控通知Mapper接口
  *
@@ -22,4 +26,8 @@ import vip.xiaonuo.coldchain.modular.monitornotice.entity.MonitorNotice;
  * @date  2024/11/25 10:58
  **/
 public interface MonitorNoticeMapper extends BaseMapper<MonitorNotice> {
+    Integer getDayBeforeYesterday(String startTime, String endTime);
+    Integer getYesterday(String startTime, String endTime);
+    Integer getToDay(String startTime, String endTime);
+
 }

+ 28 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/mapper/mapping/MonitorNoticeMapper.xml

@@ -1,5 +1,33 @@
 <?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="vip.xiaonuo.coldchain.modular.monitornotice.mapper.MonitorNoticeMapper">
+    <select id="getDayBeforeYesterday" resultType="Integer">
+        SELECT COUNT(*)
+        FROM sensor_alarm
+        WHERE DATEDIFF(CREATE_TIME, Now()) = -2
+          AND (
+            DATE_FORMAT(CREATE_TIME, '%H:%i:%S') between #{startTime} and #{endTime}
+            )
+          AND DELETE_FLAG = 'NOT_DELETE'
+    </select>
 
+    <select id="getYesterday" resultType="Integer">
+        SELECT COUNT(*)
+        FROM sensor_alarm
+        WHERE DATEDIFF(CREATE_TIME, Now()) = -1
+          AND (
+            DATE_FORMAT(CREATE_TIME, '%H:%i:%S') between #{startTime} and #{endTime}
+            )
+          AND DELETE_FLAG = 'NOT_DELETE'
+    </select>
+
+    <select id="getToDay" resultType="Integer">
+        SELECT COUNT(*)
+        FROM sensor_alarm
+        where to_days(CREATE_TIME) = to_days(now())
+          AND (
+            DATE_FORMAT(CREATE_TIME, '%H:%i:%S') between #{startTime} and #{endTime}
+            )
+          AND DELETE_FLAG = 'NOT_DELETE'
+    </select>
 </mapper>

+ 9 - 41
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/service/MonitorNoticeService.java

@@ -12,13 +12,9 @@
  */
 package vip.xiaonuo.coldchain.modular.monitornotice.service;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.coldchain.modular.monitornotice.entity.CountWithTime;
 import vip.xiaonuo.coldchain.modular.monitornotice.entity.MonitorNotice;
-import vip.xiaonuo.coldchain.modular.monitornotice.param.MonitorNoticeAddParam;
-import vip.xiaonuo.coldchain.modular.monitornotice.param.MonitorNoticeEditParam;
-import vip.xiaonuo.coldchain.modular.monitornotice.param.MonitorNoticeIdParam;
-import vip.xiaonuo.coldchain.modular.monitornotice.param.MonitorNoticePageParam;
 
 import java.util.List;
 
@@ -31,50 +27,22 @@ import java.util.List;
 public interface MonitorNoticeService extends IService<MonitorNotice> {
 
     /**
-     * 获取监控通知分页
-     *
-     * @author 黄渊昊
-     * @date  2024/11/25 10:58
+     * 获取今天报警情况
      */
-    Page<MonitorNotice> page(MonitorNoticePageParam monitorNoticePageParam);
+    CountWithTime today();
 
     /**
-     * 添加监控通知
-     *
-     * @author 黄渊昊
-     * @date  2024/11/25 10:58
+     * 获取昨天报警情况
      */
-    void add(MonitorNoticeAddParam monitorNoticeAddParam);
+    CountWithTime yesterday();
 
     /**
-     * 编辑监控通知
-     *
-     * @author 黄渊昊
-     * @date  2024/11/25 10:58
+     * 获取前天报警情况
      */
-    void edit(MonitorNoticeEditParam monitorNoticeEditParam);
+    CountWithTime dayBeforeYesterday();
 
     /**
-     * 删除监控通知
-     *
-     * @author 黄渊昊
-     * @date  2024/11/25 10:58
+     * 获取仅三天报警情况
      */
-    void delete(List<MonitorNoticeIdParam> monitorNoticeIdParamList);
-
-    /**
-     * 获取监控通知详情
-     *
-     * @author 黄渊昊
-     * @date  2024/11/25 10:58
-     */
-    MonitorNotice detail(MonitorNoticeIdParam monitorNoticeIdParam);
-
-    /**
-     * 获取监控通知详情
-     *
-     * @author 黄渊昊
-     * @date  2024/11/25 10:58
-     **/
-    MonitorNotice queryEntity(String id);
+    List<CountWithTime> getNoticeByDate();
 }

+ 73 - 54
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/service/impl/MonitorNoticeServiceImpl.java

@@ -12,28 +12,17 @@
  */
 package vip.xiaonuo.coldchain.modular.monitornotice.service.impl;
 
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.collection.CollStreamUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import vip.xiaonuo.coldchain.modular.monitornotice.enums.MonitorNoticeEnum;
-import vip.xiaonuo.coldchain.modular.monitornotice.enums.PushEnum;
-import vip.xiaonuo.common.enums.CommonSortOrderEnum;
-import vip.xiaonuo.common.exception.CommonException;
-import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.coldchain.modular.monitornotice.entity.CountWithTime;
+import vip.xiaonuo.coldchain.modular.monitornotice.entity.NoticeByDate;
 import vip.xiaonuo.coldchain.modular.monitornotice.entity.MonitorNotice;
+import vip.xiaonuo.coldchain.modular.monitornotice.enums.DateEnum;
 import vip.xiaonuo.coldchain.modular.monitornotice.mapper.MonitorNoticeMapper;
-import vip.xiaonuo.coldchain.modular.monitornotice.param.MonitorNoticeAddParam;
-import vip.xiaonuo.coldchain.modular.monitornotice.param.MonitorNoticeEditParam;
-import vip.xiaonuo.coldchain.modular.monitornotice.param.MonitorNoticeIdParam;
-import vip.xiaonuo.coldchain.modular.monitornotice.param.MonitorNoticePageParam;
 import vip.xiaonuo.coldchain.modular.monitornotice.service.MonitorNoticeService;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -45,58 +34,88 @@ import java.util.List;
 @Service
 public class MonitorNoticeServiceImpl extends ServiceImpl<MonitorNoticeMapper, MonitorNotice> implements MonitorNoticeService {
 
-    @Override
-    public Page<MonitorNotice> page(MonitorNoticePageParam monitorNoticePageParam) {
-        QueryWrapper<MonitorNotice> queryWrapper = new QueryWrapper<MonitorNotice>().checkSqlInjection();
-        if(ObjectUtil.isNotEmpty(monitorNoticePageParam.getType())) {
-            queryWrapper.lambda().eq(MonitorNotice::getType, monitorNoticePageParam.getType());
-        }
-        if(ObjectUtil.isAllNotEmpty(monitorNoticePageParam.getSortField(), monitorNoticePageParam.getSortOrder())) {
-            CommonSortOrderEnum.validate(monitorNoticePageParam.getSortOrder());
-            queryWrapper.orderBy(true, monitorNoticePageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
-                    StrUtil.toUnderlineCase(monitorNoticePageParam.getSortField()));
-        } else {
-            queryWrapper.lambda().orderByAsc(MonitorNotice::getId);
-        }
-        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
-    }
+    @Resource
+    private MonitorNoticeMapper monitorNoticeMapper;
+
+    private static int STP = 3;
 
-    @Transactional(rollbackFor = Exception.class)
     @Override
-    public void add(MonitorNoticeAddParam monitorNoticeAddParam) {
-        MonitorNotice monitorNotice = BeanUtil.toBean(monitorNoticeAddParam, MonitorNotice.class);
-        if (ObjectUtil.isNull(monitorNotice.getPushFlag())) {
-            monitorNotice.setPushFlag(PushEnum.NOT_PUSH.getValue());
+    public CountWithTime today() {
+        List<String> timePeriodList = new ArrayList<>();
+        List<Integer> countList = new ArrayList<>();
+        int timeFlag = 0;
+        while (timeFlag != 24) {
+            String startTimeStr = getTimeStr(timeFlag);
+            timeFlag += STP;
+            String endTimeStr = getTimeStr(timeFlag);
+            timePeriodList.add(startTimeStr + "-" + endTimeStr);
+            Integer toDay = monitorNoticeMapper.getToDay(startTimeStr, endTimeStr);
+            countList.add(toDay);
         }
-        this.save(monitorNotice);
+        CountWithTime countWithTime = new CountWithTime();
+        countWithTime.setDateName(DateEnum.TODAY.getValue());
+        countWithTime.setCountList(countList);
+        countWithTime.setTimePeriodList(timePeriodList);
+        return countWithTime;
     }
 
-    @Transactional(rollbackFor = Exception.class)
     @Override
-    public void edit(MonitorNoticeEditParam monitorNoticeEditParam) {
-        MonitorNotice monitorNotice = this.queryEntity(monitorNoticeEditParam.getId());
-        BeanUtil.copyProperties(monitorNoticeEditParam, monitorNotice);
-        this.updateById(monitorNotice);
+    public CountWithTime yesterday() {
+        List<NoticeByDate> yesterdayNoticeList = new ArrayList<>();
+        List<String> timePeriodList = new ArrayList<>();
+        List<Integer> countList = new ArrayList<>();
+        int timeFlag = 0;
+        while (timeFlag != 24) {
+            String startTimeStr = getTimeStr(timeFlag);
+            timeFlag += STP;
+            String endTimeStr = getTimeStr(timeFlag);
+            timePeriodList.add(startTimeStr + "-" + endTimeStr);
+            Integer yesterday = monitorNoticeMapper.getYesterday(startTimeStr, endTimeStr);
+            countList.add(yesterday);
+        }
+        CountWithTime countWithTime = new CountWithTime();
+        countWithTime.setDateName(DateEnum.YESTERDAY.getValue());
+        countWithTime.setCountList(countList);
+        countWithTime.setTimePeriodList(timePeriodList);
+        return countWithTime;
     }
 
-    @Transactional(rollbackFor = Exception.class)
     @Override
-    public void delete(List<MonitorNoticeIdParam> monitorNoticeIdParamList) {
-        // 执行删除
-        this.removeByIds(CollStreamUtil.toList(monitorNoticeIdParamList, MonitorNoticeIdParam::getId));
+    public CountWithTime dayBeforeYesterday() {
+        List<NoticeByDate> yesterdayNoticeList = new ArrayList<>();
+        List<String> timePeriodList = new ArrayList<>();
+        List<Integer> countList = new ArrayList<>();
+        int timeFlag = 0;
+        while (timeFlag != 24) {
+            String startTimeStr = getTimeStr(timeFlag);
+            timeFlag += STP;
+            String endTimeStr = getTimeStr(timeFlag);
+            timePeriodList.add(startTimeStr + "-" + endTimeStr);
+            Integer dayBeforeYesterday = monitorNoticeMapper.getDayBeforeYesterday(startTimeStr, endTimeStr);
+            countList.add(dayBeforeYesterday);
+        }
+        CountWithTime countWithTime = new CountWithTime();
+        countWithTime.setDateName(DateEnum.DAY_BEFORE_YESTERDAY.getValue());
+        countWithTime.setCountList(countList);
+        countWithTime.setTimePeriodList(timePeriodList);
+        return countWithTime;
     }
 
     @Override
-    public MonitorNotice detail(MonitorNoticeIdParam monitorNoticeIdParam) {
-        return this.queryEntity(monitorNoticeIdParam.getId());
+    public List<CountWithTime> getNoticeByDate() {
+        NoticeByDate noticeByDate = new NoticeByDate();
+        List<CountWithTime> countWithTimeList = new ArrayList<>();
+        countWithTimeList.add(today());
+        countWithTimeList.add(yesterday());
+        countWithTimeList.add(dayBeforeYesterday());
+        return countWithTimeList;
     }
 
-    @Override
-    public MonitorNotice queryEntity(String id) {
-        MonitorNotice monitorNotice = this.getById(id);
-        if(ObjectUtil.isEmpty(monitorNotice)) {
-            throw new CommonException("监控通知不存在,id值为:{}", id);
+    private String getTimeStr(int timeFlag) {
+        String timeStr = timeFlag + ":00:00";
+        if (timeStr.length() < 8) {
+            timeStr = "0" + timeStr;
         }
-        return monitorNotice;
+        return timeStr;
     }
 }

+ 1 - 1
snowy-web-app/src/main/resources/application.properties

@@ -1,7 +1,7 @@
 #########################################
 # server configuration
 #########################################
-server.port=58889
+server.port=58888
 
 #########################################
 # spring allow-circular-references