Sfoglia il codice sorgente

fix:修复编辑报警接收人异常报错
feat:冰箱管理和点位管理适配延迟信息

黄渊昊 1 giorno fa
parent
commit
d457aba327
12 ha cambiato i file con 83 aggiunte e 11 eliminazioni
  1. 1 1
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/alarm/mapper/mapping/SensorAlarmMapper.xml
  2. 2 1
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/alarm/service/SensorAlarmServiceImpl.java
  3. 2 2
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/alarmuser/service/impl/AlarmUserServiceImpl.java
  4. 9 1
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/entity/MonitorTarget.java
  5. 10 1
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetAddParam.java
  6. 10 1
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetAddWithRoomParam.java
  7. 12 2
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetBatchEditWithRoomParam.java
  8. 10 1
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetEditParam.java
  9. 10 1
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetEditWithRoomParam.java
  10. 5 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/service/impl/MonitorTargetServiceImpl.java
  11. 8 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/entity/MonitorTargetRegion.java
  12. 4 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/service/impl/MonitorTargetRegionServiceImpl.java

+ 1 - 1
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/alarm/mapper/mapping/SensorAlarmMapper.xml

@@ -80,7 +80,7 @@
 
     <select id="countInPage" resultType="Long">
         SELECT COUNT(id) AS total
-        FROM sensor_alarm FORCE INDEX(sensoralarm_page)
+        FROM sensor_alarm
         WHERE CREATE_ORG = #{orgId}
         AND type IN
         <foreach collection="typeCodes" item="type" open="(" separator="," close=")">

+ 2 - 1
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/alarm/service/SensorAlarmServiceImpl.java

@@ -362,11 +362,12 @@ public class SensorAlarmServiceImpl extends ServiceImpl<SensorAlarmMapper, Senso
         if (ObjectUtil.isNotEmpty(messagePageParam.getKeyword())) {
             queryWrapper.lambda().and(q -> q.like(SensorAlarm::getMessage, messagePageParam.getKeyword()).or().like(SensorAlarm::getDeviceName, messagePageParam.getKeyword()));
         }
-        // 时间查询
+        // 告警类型查询
         if (StrUtil.isNotBlank(messagePageParam.getAlarmType())) {
             queryWrapper.lambda().eq(SensorAlarm::getAlarmType, messagePageParam.getAlarmType());
         }
 
+        // 时间查询
         Calendar calendar = Calendar.getInstance();
         if (StrUtil.isNotBlank(messagePageParam.getEndTime()) && StrUtil.isNotBlank(messagePageParam.getStartTime())) {
             queryWrapper.lambda().ge(SensorAlarm::getCreateTime, DateUtil.parse(messagePageParam.getStartTime(), "yyyy-MM-dd HH:mm:ss"));  // greater than or equal to start time

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

@@ -157,7 +157,7 @@ public class AlarmUserServiceImpl extends ServiceImpl<AlarmUserMapper, AlarmUser
     public void edit(AlarmUserEditParam alarmUserEditParam) {
         AlarmUser alarmUser = this.queryEntity(alarmUserEditParam.getId());
         BeanUtil.copyProperties(alarmUserEditParam, alarmUser);
-        if (!Objects.equals(alarmUser.getOpenId(), alarmUserEditParam.getOpenId())) {
+//        if (!Objects.equals(alarmUser.getOpenId(), alarmUserEditParam.getOpenId())) {
             List<AlarmUser> alarmByOpenId = getAlarmByOpenId(alarmUser.getOpenId());
 
             // 先检查集合是否为空
@@ -168,7 +168,7 @@ public class AlarmUserServiceImpl extends ServiceImpl<AlarmUserMapper, AlarmUser
 
                 Assert.isTrue(!isDuplicate, "微信已绑定其他报警接收人,请勿重复绑定");
             }
-        }
+//        }
         // 判断是否有系统用户关联
         if (StrUtil.isBlank(alarmUser.getUserId())) {
             // 如果没有关联,则创建用户

+ 9 - 1
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/entity/MonitorTarget.java

@@ -21,6 +21,7 @@ import lombok.Getter;
 import lombok.Setter;
 import vip.xiaonuo.coldchain.core.alarm.bean.NotificationChannel;
 import vip.xiaonuo.coldchain.core.alarm.bean.SensorAlarmUser;
+import vip.xiaonuo.coldchain.core.alarm.service.delay.DelayInfo;
 import vip.xiaonuo.coldchain.core.handler.NotificationChannelListTypeHandler;
 import vip.xiaonuo.coldchain.core.handler.SensorAlarmUserTypeHandler;
 import vip.xiaonuo.coldchain.modular.monitortargetregion.entity.MonitorTargetRegion;
@@ -120,5 +121,12 @@ public class MonitorTarget extends OrgEntity {
      * 是否启用预警通知,0=启用,1=禁用
      */
     @Schema(description = "是否启用预警通知,0=启用,1=禁用")
-    private Integer enabled;
+    private String enabled;
+
+    /**
+     * 延迟信息
+     */
+    @Schema(description = "延迟信息")
+    @TableField(exist = false)
+    private DelayInfo delayInfo;
 }

+ 10 - 1
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetAddParam.java

@@ -18,7 +18,9 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Getter;
 import lombok.Setter;
 import org.hibernate.validator.constraints.Length;
+import vip.xiaonuo.coldchain.core.alarm.bean.NotificationChannel;
 import vip.xiaonuo.coldchain.core.alarm.bean.SensorAlarmUser;
+import vip.xiaonuo.coldchain.core.handler.NotificationChannelListTypeHandler;
 import vip.xiaonuo.coldchain.core.handler.SensorAlarmUserTypeHandler;
 
 import java.util.List;
@@ -66,10 +68,17 @@ public class MonitorTargetAddParam {
     @Schema(description = "告警接收人,存储告警通知的接收用户信息")
     private List<SensorAlarmUser> alarmUsers = Lists.newArrayList();
 
+    /**
+     * 用户的通知渠道设置,支持选择接收告警的多个渠道,如短信、邮件、APP通知等
+     */
+    @Schema(description = "用户的通知渠道设置,支持选择接收告警的多个渠道,如短信、邮件、APP通知等")
+    @TableField(value = "notification_channel", typeHandler = NotificationChannelListTypeHandler.class)
+    private List<NotificationChannel> notificationChannel = List.of(NotificationChannel.WECHAT);
+
     /**
      * 是否启用预警通知,0=启用,1=禁用
      */
     @Schema(description = "是否启用预警通知,0=启用,1=禁用")
-    private Integer enabled;
+    private String enabled;
 
 }

+ 10 - 1
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetAddWithRoomParam.java

@@ -19,7 +19,9 @@ import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
 import org.hibernate.validator.constraints.Length;
+import vip.xiaonuo.coldchain.core.alarm.bean.NotificationChannel;
 import vip.xiaonuo.coldchain.core.alarm.bean.SensorAlarmUser;
+import vip.xiaonuo.coldchain.core.handler.NotificationChannelListTypeHandler;
 import vip.xiaonuo.coldchain.core.handler.SensorAlarmUserTypeHandler;
 
 import java.util.List;
@@ -73,10 +75,17 @@ public class MonitorTargetAddWithRoomParam {
     @NotNull(message = "房间不能为空")
     private String roomId;
 
+    /**
+     * 用户的通知渠道设置,支持选择接收告警的多个渠道,如短信、邮件、APP通知等
+     */
+    @Schema(description = "用户的通知渠道设置,支持选择接收告警的多个渠道,如短信、邮件、APP通知等")
+    @TableField(value = "notification_channel", typeHandler = NotificationChannelListTypeHandler.class)
+    private List<NotificationChannel> notificationChannel = List.of(NotificationChannel.WECHAT);
+
     /**
      * 是否启用预警通知,0=启用,1=禁用
      */
     @Schema(description = "是否启用预警通知,0=启用,1=禁用")
-    private Integer enabled;
+    private String enabled;
 
 }

+ 12 - 2
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetBatchEditWithRoomParam.java

@@ -20,7 +20,9 @@ import jakarta.validation.constraints.NotEmpty;
 import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
+import vip.xiaonuo.coldchain.core.alarm.bean.NotificationChannel;
 import vip.xiaonuo.coldchain.core.alarm.bean.SensorAlarmUser;
+import vip.xiaonuo.coldchain.core.handler.NotificationChannelListTypeHandler;
 import vip.xiaonuo.coldchain.core.handler.SensorAlarmUserTypeHandler;
 
 import java.util.Date;
@@ -63,7 +65,15 @@ public class MonitorTargetBatchEditWithRoomParam {
     private List<SensorAlarmUser> alarmUsers = Lists.newArrayList();
 
     /**
-     * 房间id
+     * 用户的通知渠道设置,支持选择接收告警的多个渠道,如短信、邮件、APP通知等
      */
-    private String roomId;
+    @Schema(description = "用户的通知渠道设置,支持选择接收告警的多个渠道,如短信、邮件、APP通知等")
+    @TableField(value = "notification_channel", typeHandler = NotificationChannelListTypeHandler.class)
+    private List<NotificationChannel> notificationChannel = List.of(NotificationChannel.WECHAT);
+
+    /**
+     * 是否启用预警通知,0=启用,1=禁用
+     */
+    @Schema(description = "是否启用预警通知,0=启用,1=禁用")
+    private String enabled;
 }

+ 10 - 1
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetEditParam.java

@@ -19,7 +19,9 @@ import jakarta.validation.constraints.NotBlank;
 import lombok.Getter;
 import lombok.Setter;
 import org.hibernate.validator.constraints.Length;
+import vip.xiaonuo.coldchain.core.alarm.bean.NotificationChannel;
 import vip.xiaonuo.coldchain.core.alarm.bean.SensorAlarmUser;
+import vip.xiaonuo.coldchain.core.handler.NotificationChannelListTypeHandler;
 import vip.xiaonuo.coldchain.core.handler.SensorAlarmUserTypeHandler;
 
 import java.util.Date;
@@ -87,9 +89,16 @@ public class MonitorTargetEditParam {
     @Schema(description = "告警接收人,存储告警通知的接收用户信息")
     private List<SensorAlarmUser> alarmUsers = Lists.newArrayList();
 
+    /**
+     * 用户的通知渠道设置,支持选择接收告警的多个渠道,如短信、邮件、APP通知等
+     */
+    @Schema(description = "用户的通知渠道设置,支持选择接收告警的多个渠道,如短信、邮件、APP通知等")
+    @TableField(value = "notification_channel", typeHandler = NotificationChannelListTypeHandler.class)
+    private List<NotificationChannel> notificationChannel = List.of(NotificationChannel.WECHAT);
+
     /**
      * 是否启用预警通知,0=启用,1=禁用
      */
     @Schema(description = "是否启用预警通知,0=启用,1=禁用")
-    private Integer enabled;
+    private String enabled;
 }

+ 10 - 1
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetEditWithRoomParam.java

@@ -20,7 +20,9 @@ import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
 import org.hibernate.validator.constraints.Length;
+import vip.xiaonuo.coldchain.core.alarm.bean.NotificationChannel;
 import vip.xiaonuo.coldchain.core.alarm.bean.SensorAlarmUser;
+import vip.xiaonuo.coldchain.core.handler.NotificationChannelListTypeHandler;
 import vip.xiaonuo.coldchain.core.handler.SensorAlarmUserTypeHandler;
 
 import java.util.Date;
@@ -94,9 +96,16 @@ public class MonitorTargetEditWithRoomParam {
     @NotNull(message = "房间不能为空")
     private String roomId;
 
+    /**
+     * 用户的通知渠道设置,支持选择接收告警的多个渠道,如短信、邮件、APP通知等
+     */
+    @Schema(description = "用户的通知渠道设置,支持选择接收告警的多个渠道,如短信、邮件、APP通知等")
+    @TableField(value = "notification_channel", typeHandler = NotificationChannelListTypeHandler.class)
+    private List<NotificationChannel> notificationChannel = List.of(NotificationChannel.WECHAT);
+
     /**
      * 是否启用预警通知,0=启用,1=禁用
      */
     @Schema(description = "是否启用预警通知,0=启用,1=禁用")
-    private Integer enabled;
+    private String enabled;
 }

+ 5 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/service/impl/MonitorTargetServiceImpl.java

@@ -34,6 +34,7 @@ import org.springframework.web.multipart.MultipartFile;
 import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
 import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
 import vip.xiaonuo.coldchain.core.alarm.bean.SensorAlarmUser;
+import vip.xiaonuo.coldchain.core.alarm.service.delay.DeviceAlertDelayService;
 import vip.xiaonuo.coldchain.core.config.JfcloudRedisCacheService;
 import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDeviceTemplate;
 import vip.xiaonuo.coldchain.modular.monitordevice.handler.CustomCellWriteHandler;
@@ -83,6 +84,8 @@ public class MonitorTargetServiceImpl extends ServiceImpl<MonitorTargetMapper, M
     private TargetRoomService targetRoomService;
     @Resource
     private JfcloudRedisCacheService jfcloudRedisCacheService;
+    @Resource
+    private DeviceAlertDelayService delayService;
 
     @Override
     public Page<MonitorTarget> page(MonitorTargetPageParam monitorTargetPageParam) {
@@ -114,6 +117,7 @@ public class MonitorTargetServiceImpl extends ServiceImpl<MonitorTargetMapper, M
         page.getRecords().forEach(monitorTarget -> {
             monitorTarget.setMonitorTargetRegionList(monitorTargetRegionService.getRegionListByTargetId(monitorTarget.getId()));
             monitorTarget.setRoomName(targetRoomService.queryEntity(monitorTarget.getRoomId()).getName());
+            monitorTarget.setDelayInfo(delayService.isAlertDelayed(monitorTarget.getId(), null));
         });
         return page;
     }
@@ -138,6 +142,7 @@ public class MonitorTargetServiceImpl extends ServiceImpl<MonitorTargetMapper, M
             monitorTarget.setMonitorTargetRegionList(monitorTargetRegionService.getRegionListByTargetId(monitorTarget.getId()));
             monitorTarget.setCreateOrgName(loginUser.getOrgName());
             monitorTarget.setRoomName(targetRoomService.queryEntity(monitorTarget.getRoomId()).getName());
+            monitorTarget.setDelayInfo(delayService.isAlertDelayed(monitorTarget.getId(), null));
         });
         return page;
     }

+ 8 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/entity/MonitorTargetRegion.java

@@ -22,6 +22,7 @@ import lombok.Getter;
 import lombok.Setter;
 import vip.xiaonuo.coldchain.core.alarm.bean.NotificationChannel;
 import vip.xiaonuo.coldchain.core.alarm.bean.SensorAlarmUser;
+import vip.xiaonuo.coldchain.core.alarm.service.delay.DelayInfo;
 import vip.xiaonuo.coldchain.core.handler.NotificationChannelListTypeHandler;
 import vip.xiaonuo.coldchain.core.handler.SensorAlarmUserTypeHandler;
 import vip.xiaonuo.common.pojo.OrgEntity;
@@ -220,6 +221,13 @@ public class MonitorTargetRegion extends OrgEntity {
     @TableField(exist = false)
     private String roomName;
 
+    /**
+     * 延迟信息
+     */
+    @Schema(description = "延迟信息")
+    @TableField(exist = false)
+    private DelayInfo delayInfo;
+
     public void setTemperatureUp(Float temperatureUp) {
         this.temperatureUp = temperatureUp;
     }

+ 4 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/service/impl/MonitorTargetRegionServiceImpl.java

@@ -32,6 +32,7 @@ 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.coldchain.core.alarm.service.delay.DeviceAlertDelayService;
 import vip.xiaonuo.coldchain.core.config.JfcloudColdChainConstants;
 import vip.xiaonuo.coldchain.core.config.JfcloudRedisCacheService;
 import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDevice;
@@ -76,6 +77,8 @@ public class MonitorTargetRegionServiceImpl extends ServiceImpl<MonitorTargetReg
     private MonitorTargetService monitorTargetService;
     @Resource
     private JfcloudRedisCacheService jfcloudRedisCacheService;
+    @Resource
+    private DeviceAlertDelayService delayService;
 
     @Override
     public Page<MonitorTargetRegion> page(MonitorTargetRegionPageParam monitorTargetRegionPageParam) {
@@ -102,6 +105,7 @@ public class MonitorTargetRegionServiceImpl extends ServiceImpl<MonitorTargetReg
             String deviceName = monitorDeviceService.getById(monitorTargetRegion.getMonitorDeviceId()).getDeviceName();
             monitorTargetRegion.setDeviceName(deviceName);
             monitorTargetRegion.setCreateOrgName(loginUser.getOrgName());
+            monitorTargetRegion.setDelayInfo(delayService.isAlertDelayed(monitorTargetRegion.getMonitorTargetId(), null));
         }
         return page;
     }