xujie 1 жил өмнө
parent
commit
bf8ee51288

+ 0 - 124
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/iot/IotAlarmData.java

@@ -1,124 +0,0 @@
-package com.xunmei.system.api.domain.iot;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.xunmei.common.core.web.domain.BaseEntity;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.time.LocalDateTime;
-
-/**
- * <p>
- * 告警数据表
- * </p>
- *
- * @author oygj
- * @since 2024-01-26
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@TableName("iot_alarm_data")
-@ApiModel(value = "IotAlarmData", description = "告警数据表")
-public class IotAlarmData extends BaseEntity {
-
-    private static final long serialVersionUID = 1L;
-
-    @TableId("id")
-    private Long id;
-
-    @ApiModelProperty(value = "规则id")
-    @TableField("rule_id")
-    private Long ruleId;
-
-    @ApiModelProperty(value = "设备id")
-    @TableField("device_id")
-    private String deviceId;
-
-    @ApiModelProperty(value = "设备id")
-    @TableField("device_name")
-    private String deviceName;
-
-    @ApiModelProperty(value = "机构id")
-    @TableField("org_id")
-    private Long orgId;
-
-
-    @ApiModelProperty(value = "告警数据类型:0 动环类告警,1主机类告警")
-    @TableField("data_type")
-    private Integer dataType;
-
-    @ApiModelProperty(value = "报警源类型(设备类型):4:烟雾传感器;5: 温湿度采集器;6:水浸; 7:门磁、窗磁;8:卷帘门门磁;9:地磁;10燃气报警器;50:报警防区")
-    @TableField("source_type")
-    private String sourceType;
-
-    @ApiModelProperty(value = "报警源类型(设备类型) 中文")
-    @TableField("source_type_des")
-    private String sourceTypeDes;
-
-    @ApiModelProperty(value = "属性code")
-    @TableField("field_code")
-    private String fieldCode;
-
-    @ApiModelProperty(value = "告警开始时间")
-    @TableField("time")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private LocalDateTime time;
-
-    @ApiModelProperty(value = "告警结束时间")
-    @TableField("end_time")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private LocalDateTime endTime;
-
-    @ApiModelProperty(value = "操作符,GT(大于)、GTE(大于等于)、LT(小于)、LTE(小于等于)、EQUALS(等于)")
-    @TableField("operator")
-    private String operator;
-
-    @ApiModelProperty(value = "对比值key")
-    @TableField("value")
-    private String value;
-
-    @ApiModelProperty(value = "对比值value")
-    @TableField("value_text")
-    private String valueText;
-
-    @ApiModelProperty(value = "告警内容")
-    @TableField("content")
-    private String content;
-
-    @ApiModelProperty(value = "告警值")
-    @TableField("alarm_value")
-    private String alarmValue;
-
-    @ApiModelProperty(value = "0未处理1已处理")
-    @TableField("is_do")
-    private Integer isDo;
-
-    @ApiModelProperty(value = "处理时间")
-    @TableField("do_time")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private LocalDateTime doTime;
-
-    @ApiModelProperty(value = "处理方式:0:为处理,1:(暂无)2:误报,3:正常告警,4:报修")
-    @TableField("do_type")
-    private Integer doType;
-
-    @ApiModelProperty(value = "处置人")
-    @TableField("do_by_user")
-    private String doByUser;
-
-
-    @ApiModelProperty(value = "处置内容")
-    @TableField("do_content")
-    private String doContent;
-
-    @ApiModelProperty(value = "是否需要发送短信")
-    @TableField(exist = false)
-    private Boolean smsType;
-
-
-}

+ 4 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/vo/WebSocketSendVo.java

@@ -1,5 +1,7 @@
 package com.xunmei.system.api.vo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -20,10 +22,12 @@ public class WebSocketSendVo implements Serializable {
     /**
      * 发送消息的用户id
      */
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long userId;
     /**
      * 发送消息的机构id
      */
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long orgId;
     /**
      * 发送的消息体内容

+ 3 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/vo/notice/WebSocketNoticeVo.java

@@ -1,6 +1,8 @@
 package com.xunmei.common.core.vo.notice;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import lombok.Data;
 
 import java.time.LocalDateTime;
@@ -8,6 +10,7 @@ import java.time.LocalDateTime;
 @Data
 public class WebSocketNoticeVo {
 
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long iotAlarmDataId;
 
     //传感器类型

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/NoticeLogMapper.java

@@ -1,8 +1,8 @@
 package com.xunmei.system.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
 import com.xunmei.common.core.domain.notice.WebsocketNoticeLog;
-import com.xunmei.system.api.domain.iot.IotAlarmData;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 

+ 24 - 12
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/NoticeServiceImpl.java

@@ -1,15 +1,15 @@
 package com.xunmei.system.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
-import com.alibaba.fastjson.JSONObject;
+import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
 import com.xunmei.common.core.domain.notice.WebsocketNoticeLog;
 import com.xunmei.common.core.vo.notice.WebSocketNoticeVo;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.common.websocket.utils.WebSocketUtils;
-import com.xunmei.system.api.domain.iot.IotAlarmData;
 import com.xunmei.system.api.vo.WebSocketSendVo;
 import com.xunmei.system.dto.notice.NoticeDealDto;
 import com.xunmei.system.mapper.NoticeLogMapper;
@@ -53,9 +53,9 @@ public class NoticeServiceImpl extends ServiceImpl<NoticeLogMapper, WebsocketNot
             //消除其他人的通知
             String userIds = websocketNoticeLog.getUserIds();
             if(ObjectUtil.isNotEmpty(userIds)){
-                WebSocketNoticeVo noticeVo = new WebSocketNoticeVo();
-                noticeVo.setIotAlarmDataId(noticeDealDto.getIotAlarmDataId());
-                noticeVo.setIsDo(1);
+                JSONObject content = new JSONObject();
+                content.set("isDo",1);
+                content.set("iotAlarmDataId",noticeDealDto.getIotAlarmDataId().toString());
 
                 String[] split = userIds.split(",");
                 List<WebSocketSendVo> list = new ArrayList<>();
@@ -66,7 +66,7 @@ public class NoticeServiceImpl extends ServiceImpl<NoticeLogMapper, WebsocketNot
                     WebSocketSendVo sendVo = new WebSocketSendVo();
                     sendVo.setUserId(Long.valueOf(userId));
                     sendVo.setOrgId(websocketNoticeLog.getOrgId());
-                    sendVo.setContent(noticeVo);
+                    sendVo.setContent(content);
                     list.add(sendVo);
                 }
                 this.sendMessage(list);
@@ -82,13 +82,23 @@ public class NoticeServiceImpl extends ServiceImpl<NoticeLogMapper, WebsocketNot
             //创建发送记录
             WebsocketNoticeLog noticeLog = new WebsocketNoticeLog();
             noticeLog.setId(IdWorker.getId());
-            JSONObject object = JSONObject.parseObject(list.get(0).getContent().toString());
-            noticeLog.setIotAlarmId(object.getLong("iotAlarmDataId"));
+            JSONObject object = new JSONObject(list.get(0).getContent());
+            WebSocketNoticeVo noticeVo = object.toBean(WebSocketNoticeVo.class);
+            noticeLog.setIotAlarmId(noticeVo.getIotAlarmDataId());
+
             noticeLog.setOrgId(list.get(0).getOrgId());
             noticeLog.setIsDo(0);
             noticeLog.setCreateTime(new Date());
             noticeLog.setUserIds(this.handStr(list));
-            baseMapper.insert(noticeLog);
+            QueryWrapper<WebsocketNoticeLog> wrapper = new QueryWrapper<>();
+            wrapper.lambda().eq(WebsocketNoticeLog::getIotAlarmId,noticeVo.getIotAlarmDataId());
+            WebsocketNoticeLog websocketNoticeLog = baseMapper.selectOne(wrapper);
+            if (websocketNoticeLog != null){
+                noticeLog.setId(websocketNoticeLog.getId());
+                baseMapper.updateById(noticeLog);
+            }else {
+                baseMapper.insert(noticeLog);
+            }
 
             this.sendMessage(list);
         }
@@ -99,8 +109,9 @@ public class NoticeServiceImpl extends ServiceImpl<NoticeLogMapper, WebsocketNot
     public void endNotice(List<WebSocketSendVo> list) {
         if (list != null && list.size() > 0){
             //修改发送记录(为主机结束报警)
-            JSONObject object = JSONObject.parseObject(list.get(0).getContent().toString());
-            Long iotAlarmDataId = object.getLong("iotAlarmDataId");
+            JSONObject object = new JSONObject(list.get(0).getContent());
+            WebSocketNoticeVo noticeVo = object.toBean(WebSocketNoticeVo.class);
+            Long iotAlarmDataId = noticeVo.getIotAlarmDataId();
 
             QueryWrapper<WebsocketNoticeLog> wrapper = new QueryWrapper<>();
             wrapper.lambda().eq(WebsocketNoticeLog::getIotAlarmId,iotAlarmDataId);
@@ -120,7 +131,8 @@ public class NoticeServiceImpl extends ServiceImpl<NoticeLogMapper, WebsocketNot
     public void sendMessage(List<WebSocketSendVo> list) {
         for (WebSocketSendVo webSocketSendVo : list) {
             Long userId = webSocketSendVo.getUserId();
-            WebSocketUtils.sendMessage(userId, JSONObject.toJSONString(webSocketSendVo.getContent()));
+            JSONObject object = new JSONObject(webSocketSendVo.getContent());
+            WebSocketUtils.sendMessage(userId, object.toString());
         }
     }
 

+ 1 - 1
soc-modules/soc-modules-system/src/main/resources/mapper/system/WebSocketNoticeMapper.xml

@@ -16,7 +16,7 @@
         where id = #{id}
     </update>
 
-    <select id="getByIotAlarmDataId" resultType="com.xunmei.system.api.domain.iot.IotAlarmData">
+    <select id="getByIotAlarmDataId" resultType="com.xunmei.common.core.domain.mediator.domain.IotAlarmData">
         select * from iot_alarm_data where id = #{id}
     </select>
 </mapper>