Kaynağa Gözat

同一个人(tid)的同一类型报警(跌倒或久滞)生成一个事件,同一个人的不同类型事件生成另一个事件,不同tid报的也生成另一个事件

suntianwu 3 yıl önce
ebeveyn
işleme
599e8bb315

+ 1 - 0
src/main/java/com/care/bms/service/BmsEventOrderService.java

@@ -589,6 +589,7 @@ public class BmsEventOrderService {
         order.setStatus("0");
         order.setCreateTime(DateUtil.date());
         order.setModifyTime(DateUtil.date());
+        order.setTid(1);
         this.careEventOrderService.saveOrder(order);
     }
 

+ 3 - 1
src/main/java/com/care/common/entity/CareEventOrder.java

@@ -137,5 +137,7 @@ public class    CareEventOrder implements Serializable {
     @TableField("COMPLETE_TIME")
     private Date completeTime;
 
-
+    @ApiModelProperty("事件目标的id")
+    @TableField("TID")
+    private Integer tid;
 }

+ 3 - 0
src/main/java/com/care/common/entity/CareMqttMsg.java

@@ -46,6 +46,9 @@ public class CareMqttMsg implements Serializable {
     @TableField("TYPE")
     private String type;
 
+    @ApiModelProperty("事件目标的id")
+    @TableField("TID")
+    private Integer tid;
 
     @ApiModelProperty("设备ID")
     @TableField("DEV_ID")

+ 2 - 0
src/main/java/com/care/common/vo/device/MqttMsgVO.java

@@ -33,6 +33,8 @@ public class MqttMsgVO implements Serializable {
     @ApiModelProperty("消息类型:呼吸心率信息 BreathHeartRate,跌到 FallDown,久滞 StayTooLong")
     private String type;
 
+    @ApiModelProperty("事件目标的id")
+    private Integer tid;
 
     @ApiModelProperty("设备ID")
     private Long devId;

+ 8 - 3
src/main/java/com/care/mqtt/service/MqttMsgRedisService.java

@@ -169,12 +169,17 @@ public class MqttMsgRedisService {
           } else if("StayTooLong".equals(careMqttMsg.getType())){ //久滞
               order.setOrderType(OrderTypeEnum.JIU_ZHI.getValue());
           }
+         order.setTid(careMqttMsg.getTid());
 
-          //判断房屋是否有未完成的告警事件,区分类型
+          //判断房屋是否有未完成的告警事件,区分类型和人
           QueryWrapper<CareEventOrder> queryWrapper2 = new QueryWrapper<>();
-          queryWrapper2.lambda().eq(CareEventOrder::getDevId,careDevice.getId()).and(
+          queryWrapper2.lambda().eq(CareEventOrder::getDevId,careDevice.getId())
+                  .eq(CareEventOrder::getOrderType,order.getOrderType())
+                  .eq(CareEventOrder::getTid,order.getTid())
+                  .and(
                   wrapper-> wrapper.eq(CareEventOrder::getStatus, OrderStatusEnum.TODO.getValue())
-                          .or().eq(CareEventOrder::getStatus,OrderStatusEnum.DOING.getValue()));
+                          .or().eq(CareEventOrder::getStatus,OrderStatusEnum.DOING.getValue())
+                  );
 
           CareEventOrder orderDb = careEventOrderService.getOne(queryWrapper2);
           if(orderDb != null) { //有未完成的告警事件,不再生成新的告警工单,只作为子事件插入到当前工单的历史记录中。

+ 18 - 19
src/main/java/com/care/mqtt/service/MqttMsgService.java

@@ -10,10 +10,8 @@ import com.care.bigscreen.service.BigScreenService;
 
 import com.care.common.cache.RedisKeyConstant;
 import com.care.common.cache.RedisUtil;
-import com.care.common.constant.Constants;
 import com.care.common.entity.*;
 
-import com.care.common.enums.ChambOrderStatusEnum;
 import com.care.common.enums.MqttMsgStatusEnum;
 import com.care.common.enums.OrderStatusEnum;
 import com.care.common.enums.OrderTypeEnum;
@@ -52,8 +50,6 @@ public class MqttMsgService {
     @Resource
     private CareMqttMsgService careMqttMsgService;
     @Resource
-    private CareEventOrderChambService careEventOrderChambService;
-    @Resource
     private MqttMsgRedisService mqttMsgRedisService;
     @Resource
     private RedisUtil redisUtil;
@@ -112,12 +108,14 @@ public class MqttMsgService {
             careMqttMsg.setDevId(careDevice.getId());
             careMqttMsg.setType(type);
             careMqttMsg.setCreateTime(date);
+            Map msg = (Map) map.get("msg");
+            Integer tid = (Integer) msg.get("tid");
+            careMqttMsg.setTid(tid);
 
             if ("BreathHeartRate".equals(type)) {
                 careMqttMsg.setStatus(MqttMsgStatusEnum.HANDLED.getValue());
                 this.careMqttMsgService.save(careMqttMsg);
 
-                Map msg = (Map) map.get("msg");
                 Integer breath = (Integer) msg.get("breath");
                 Integer heart = (Integer) msg.get("heart");
                 careDevice.setBreathRate(breath);
@@ -154,6 +152,7 @@ public class MqttMsgService {
 
                 Map msgMap = (Map) map.get("msg");
                 Integer conf = (Integer) msgMap.get("conf");
+
                 if (conf != 255) {
                     order.setStatus(OrderStatusEnum.TODO.getValue());
                 } else {//取消
@@ -165,12 +164,17 @@ public class MqttMsgService {
                 } else if ("StayTooLong".equals(type)) {
                     order.setOrderType(OrderTypeEnum.JIU_ZHI.getValue());
                 }
+                order.setTid(careMqttMsg.getTid());
 
-                //判断房屋是否有未完成的告警事件,区分类型
+                //判断房屋是否有未完成的告警事件,区分类型和人
                 QueryWrapper<CareEventOrder> queryWrapper2 = new QueryWrapper<>();
-                queryWrapper2.lambda().eq(CareEventOrder::getDevId, careDevice.getId()).and(
+                queryWrapper2.lambda().eq(CareEventOrder::getDevId, careDevice.getId())
+                        .eq(CareEventOrder::getOrderType,order.getOrderType())
+                        .eq(CareEventOrder::getTid,order.getTid())
+                        .and(
                         wrapper -> wrapper.eq(CareEventOrder::getStatus, OrderStatusEnum.TODO.getValue())
-                                .or().eq(CareEventOrder::getStatus, OrderStatusEnum.DOING.getValue()));
+                                .or().eq(CareEventOrder::getStatus, OrderStatusEnum.DOING.getValue())
+                        );
                 CareEventOrder orderDb = careEventOrderService.getOne(queryWrapper2);
 
                 if (orderDb != null) { //有未完成的告警事件,不再生成新的告警工单,只作为子事件插入到当前工单的历史记录中。
@@ -186,17 +190,12 @@ public class MqttMsgService {
                         careMqttMsg.setStatus(MqttMsgStatusEnum.HANDLED.getValue());
                         this.careMqttMsgService.save(careMqttMsg);
 
-                        if (orderDb.getOrderType().equals(order.getOrderType())) {//看取消的类型,和当前一致,则 更新当前的工单状态为取消,记录一条取消his,管家工单标记为取消
-                            //更新当前的工单状态为取消
-                            order.setId(orderDb.getId());
-                            this.careEventOrderService.autoCancelOrder(order);
-                            //通知页面
-                            this.bigScreenService.pushRtEventFlag(order.getOrgId(),order.getStationId(), order.getId().toString(), "orderUpdate");
-                            this.bigScreenService.pushRtEventFlag(order.getOrgId(),order.getStationId(), order.getId().toString(), "bigscreenRefresh");
-                        } else { // 不一致,则只记录一条取消his
-                            //记录一条取消his
-                            careEventOrderService.saveHisOrder(order, orderDb,true);
-                        }
+                        //更新当前的工单状态为取消
+                        order.setId(orderDb.getId());
+                        this.careEventOrderService.autoCancelOrder(order);
+                        //通知页面
+                        this.bigScreenService.pushRtEventFlag(order.getOrgId(),order.getStationId(), order.getId().toString(), "orderUpdate");
+                        this.bigScreenService.pushRtEventFlag(order.getOrgId(),order.getStationId(), order.getId().toString(), "bigscreenRefresh");
 
                     }