From ca75cf818e434f77ca71d78ac2c883ca41b18713 Mon Sep 17 00:00:00 2001
From: bsw215583320 <baoshiwei121@163.com>
Date: 星期五, 22 十一月 2024 11:12:14 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/herb' into herb
---
jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/entity/DryFaultRecord.java | 6 +
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java | 116 ++++++++++++++--------
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryEquipmentServiceImpl.java | 26 +++++
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryEquipmentService.java | 8 +
jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonCacheConstant.java | 8 +
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqMessage.java | 22 ++++
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqttSampleCallback.java | 10 +-
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/RedisInitListener.java | 32 ++++++
jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryFaultRecordVo.java | 32 ++++++
jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/MqttConstant.java | 14 ++
10 files changed, 223 insertions(+), 51 deletions(-)
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonCacheConstant.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonCacheConstant.java
new file mode 100644
index 0000000..9858fa0
--- /dev/null
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonCacheConstant.java
@@ -0,0 +1,8 @@
+package org.jeecg.common.constant;
+
+public interface CommonCacheConstant {
+ //redis缂撳瓨绉熸埛鏁版嵁
+ String SYS_CACHE_TENANT = "sys:cache:tenant";
+ //redis缂撳瓨鍚勭鎴蜂笅璁惧淇℃伅
+ String DRY_CACHE_TENANT_EQUS = "dry:cache:tenant::equs";
+}
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/MqttConstant.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/MqttConstant.java
index addf80e..54530d6 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/MqttConstant.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/MqttConstant.java
@@ -55,6 +55,7 @@
String TENANT_UP_PREFIX = "tenant/up";
String TENANT_UP_PREFIX_REALTIME_DATA = TENANT_UP_PREFIX + "/realTime/data";
String TENANT_UP_PREFIX_FAULT_DATA = TENANT_UP_PREFIX + "/fault/data";
+ String TENANT_UP_PREFIX_REAL_FAULT_DATA = TENANT_UP_PREFIX + "/real/fault/data";
String TENANT_UP_PREFIX_EQU = TENANT_UP_PREFIX + "/equipment";
@@ -71,10 +72,19 @@
/**************************start*******************************/
/**************************end*******************************/
-
//redis缂撳瓨
+ //client
+ String MQTT_REAL_FAULT = "mqtt:real:fault";
+
+
+
+ //service(cloud)
+ //鍦ㄧ嚎瀹㈡埛绔�
String MQTT_ONLINE_CLIENT = "mqtt:online:client::";
- String MQTT_EQP_FAULT = "mqtt:eqp:fault";
+ //鎵�鏈夌鎴风殑瀹炴椂鎶ヨ锛�%s锛氱鎴穒d锛�
+ String MQTT_CLOUD_REAL_FAULT = "mqtt:real:fault:%s:";
+
+
}
diff --git a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/entity/DryFaultRecord.java b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/entity/DryFaultRecord.java
index a4ab146..ad09d31 100644
--- a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/entity/DryFaultRecord.java
+++ b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/entity/DryFaultRecord.java
@@ -40,6 +40,9 @@
@Excel(name = "宸ュ崟id", width = 15)
@ApiModelProperty(value = "宸ュ崟id")
private String orderId;
+ @Excel(name = "绉熸埛id", width = 15)
+ @ApiModelProperty(value = "绉熸埛id")
+ private Integer tenantId;
/**鏁呴殰鍚嶇О*/
@Excel(name = "鏁呴殰鍚嶇О", width = 15)
@ApiModelProperty(value = "鏁呴殰鍚嶇О")
@@ -92,8 +95,9 @@
public DryFaultRecord() {
}
- public DryFaultRecord(String orderId, String faultName,Integer faultType, Date startTime, Date endTime) {
+ public DryFaultRecord(String orderId,Integer tenantId, String faultName,Integer faultType, Date startTime, Date endTime) {
this.orderId = orderId;
+ this.tenantId = tenantId;
this.faultName = faultName;
this.startTime = startTime;
this.endTime = endTime;
diff --git a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryFaultRecordVo.java b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryFaultRecordVo.java
new file mode 100644
index 0000000..8e54c18
--- /dev/null
+++ b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryFaultRecordVo.java
@@ -0,0 +1,32 @@
+package org.jeecg.modules.dry.vo;
+
+import lombok.Data;
+
+import org.jeecg.modules.dry.entity.DryFaultRecord;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ */
+@Data
+public class DryFaultRecordVo extends DryFaultRecord implements Serializable {
+ private static final long serialVersionUID = 1L;
+ //redis鏁呴殰缁撴潫鎶�鏈�
+ private Integer eCount;
+ //璁惧鍚嶇О
+ private String equName;
+ //绉熸埛鍚嶇О
+ private String tenantName;
+
+ public DryFaultRecordVo() {
+ }
+
+ public DryFaultRecordVo(String orderId, Integer tenantId, String faultName, Integer faultType, Date startTime, Date endTime, Integer eCount, String equName, String tenantName) {
+ super(orderId, tenantId, faultName, faultType, startTime, endTime);
+ this.eCount = eCount;
+ this.equName = equName;
+ this.tenantName = tenantName;
+ }
+}
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqMessage.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqMessage.java
new file mode 100644
index 0000000..892bf70
--- /dev/null
+++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqMessage.java
@@ -0,0 +1,22 @@
+package org.jeecg.modules.dry.mqtt;
+
+import lombok.Data;
+
+/**
+ * Mqtt娑堟伅杞戒綋
+ * @param <T>
+ */
+@Data
+public class MqMessage<T> {
+ private T data;
+ private String tentId;
+
+
+ public MqMessage() {
+ }
+
+ public MqMessage(T data, String tentId) {
+ this.data = data;
+ this.tentId = tentId;
+ }
+}
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqttSampleCallback.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqttSampleCallback.java
index 1efee35..1143056 100644
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqttSampleCallback.java
+++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqttSampleCallback.java
@@ -216,11 +216,11 @@
case MqttConstant.TENANT_UP_PREFIX_FAULT_DATA:
ThreadUtil.execute(() -> {
try {
-
- JSONObject jsonObject = JSON.parseObject(message);
- List<DryFaultRecord> faultRecords = JSON.parseArray(jsonObject.get("data").toString(), DryFaultRecord.class);
- System.err.println(faultRecords.toString());
- faultRecordService.saveBatch(faultRecords);
+ MqMessage<List<DryFaultRecord>> listMqMessage = JSON.parseObject(message, new TypeReference<MqMessage<List<DryFaultRecord>>>() {
+ });
+ // List<DryFaultRecord> faultRecords = JSON.parseArray(jsonObject.get("data").toString(), DryFaultRecord.class);
+ System.err.println(listMqMessage.toString());
+ faultRecordService.saveBatch(listMqMessage.getData());
} catch (Exception e) {
e.printStackTrace();
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryEquipmentService.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryEquipmentService.java
index 660e823..6e39cbd 100644
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryEquipmentService.java
+++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryEquipmentService.java
@@ -5,6 +5,7 @@
import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* @Description: 骞茬嚗鏈�
@@ -16,4 +17,11 @@
DryEquipment selectByTenantIdEquipmentId(String tenantId, String equipmentId);
+ /**
+ * 鏌ヨ绉熸埛涓嬫墍鏈夎澶�
+ * @param tenantId
+ * @return
+ */
+ Map<String,DryEquipment> queryEquByTenantId(Integer tenantId);
+
}
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryEquipmentServiceImpl.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryEquipmentServiceImpl.java
index 9644a12..93ff976 100644
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryEquipmentServiceImpl.java
+++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryEquipmentServiceImpl.java
@@ -1,17 +1,23 @@
package org.jeecg.modules.dry.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.jeecg.common.config.TenantContext;
+import org.jeecg.common.constant.CommonCacheConstant;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.modules.dry.common.CacheConstants;
import org.jeecg.modules.dry.entity.DryEquipment;
import org.jeecg.modules.dry.mapper.DryEquipmentMapper;
import org.jeecg.modules.dry.service.IDryEquipmentService;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
/**
* @Description: 骞茬嚗鏈�
@@ -24,6 +30,8 @@
@Autowired
private RedisUtil redisUtil;
+
+
@Override
public DryEquipment selectByTenantIdEquipmentId(String tenantId, String equipmentId) {
DryEquipment dryEquipment = (DryEquipment) redisUtil.hget(CacheConstants.RedisKeyEnum.EQP_MAP.getCode(), tenantId + equipmentId);
@@ -39,4 +47,20 @@
}
return dryEquipment;
}
+
+ @Override
+ @Cacheable(cacheNames = CommonCacheConstant.DRY_CACHE_TENANT_EQUS, key = "#tenantId" , unless = "#result == null " )
+ public Map<String,DryEquipment> queryEquByTenantId(Integer tenantId) {
+ TenantContext.setTenant(tenantId +"");
+ QueryWrapper<DryEquipment> queryWrapper = new QueryWrapper<>();
+ queryWrapper.lambda().eq(DryEquipment::getTenantId,tenantId);
+ List<DryEquipment> equipmentList = this.list(queryWrapper);
+ Map<String, DryEquipment> userMap = equipmentList.stream()
+ .collect(Collectors.toMap(
+ DryEquipment::getCode,
+ Function.identity(),
+ (existingValue, newValue) -> existingValue // 濡傛灉閿啿绐侊紝淇濈暀鏃у��
+ ));
+ return userMap;
+ }
}
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java
index 8910d51..8def570 100644
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java
+++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java
@@ -3,48 +3,35 @@
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.thread.ThreadUtil;
import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
-import org.apache.mina.core.service.IoAcceptor;
-import org.apache.mina.core.service.IoHandler;
import org.apache.mina.core.session.IoSession;
-import org.apache.shiro.SecurityUtils;
-import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
-import org.jeecg.common.api.CommonAPI;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.config.TenantContext;
-import org.jeecg.common.config.mqtoken.UserTokenContext;
+import org.jeecg.common.constant.CommonCacheConstant;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.MqttConstant;
import org.jeecg.common.system.util.JwtUtil;
-import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.DateUtils;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.common.util.SpringContextUtils;
import org.jeecg.modules.dry.common.CacheConstants;
import org.jeecg.modules.dry.entity.*;
+import org.jeecg.modules.dry.mqtt.MqMessage;
import org.jeecg.modules.dry.mqtt.MqttUtil;
import org.jeecg.modules.dry.service.*;
import org.jeecg.modules.dry.socket.ServerHandler;
-import org.jeecg.modules.dry.socket.SocketServerConfig;
-import org.jeecg.modules.dry.util.DryUtil;
import org.jeecg.modules.dry.vo.*;
-import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import javax.security.auth.login.LoginContext;
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.net.Socket;
import java.text.DecimalFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -494,20 +481,41 @@
@Override
public Result<?> fitFultRecord(RealTimeDataVo vo) {
+ TenantContext.setTenant(vo.getTenantid()+"");
ThreadUtil.execute(() -> {
try {
//瑙f瀽瀛樺偍鎶ヨ鏁版嵁
List<DryFaultRecord> faultRecords1 = fitFault(vo.getEqp_fault(), vo.getWorkorder(), vo.getTenantid(), vo.getMachineid(), 1);
List<DryFaultRecord> faultRecords2 = fitFault(vo.getEqp_warning(), vo.getWorkorder(), vo.getTenantid(), vo.getMachineid(), 2);
faultRecords1.addAll(faultRecords2);
- JSONObject json = new JSONObject();
- json.put("data",JSON.toJSONString(faultRecords1));
- if(faultRecords1.isEmpty()) return;
- MqttMessage mqttMessage = new MqttMessage();
- mqttMessage.setQos(0);
- mqttMessage.setPayload((JSON.toJSONString(json).getBytes()));
- mqttUtil.getMqttClient().publish(MqttConstant.TENANT_UP_PREFIX_FAULT_DATA,mqttMessage);
+
+ //澶勭悊缁撴潫鍚庯紝灏唕edis涓疄鏃舵暟鎹彂閫佽嚦浜戞湇鍔″櫒
+ Map<Object, Object> toCloudFaultMap = redisUtil.hmget(MqttConstant.MQTT_REAL_FAULT);
+ if(!toCloudFaultMap.isEmpty()){
+ MqMessage< Map<Object, Object>> message = new MqMessage<>();
+ message.setData(toCloudFaultMap);
+ message.setTentId(vo.getTenantid()+"");
+ MqttMessage mqttMessage = new MqttMessage();
+ mqttMessage.setQos(0);
+ mqttMessage.setPayload(JSON.toJSONString(message).getBytes());
+ mqttUtil.getMqttClient().publish(MqttConstant.TENANT_UP_PREFIX_REAL_FAULT_DATA,mqttMessage);
+ }
+
+
+ //瑕佷繚瀛樼殑鍘嗗彶鏁呴殰
+ if(!faultRecords1.isEmpty()){
+ MqMessage<List<DryFaultRecord>> message = new MqMessage<>();
+ message.setData(faultRecords1);
+ message.setTentId(vo.getTenantid()+"");
+ MqttMessage mqttMessage = new MqttMessage();
+ mqttMessage.setQos(0);
+ mqttMessage.setPayload((JSON.toJSONString(message).getBytes()));
+ mqttUtil.getMqttClient().publish(MqttConstant.TENANT_UP_PREFIX_FAULT_DATA,mqttMessage);
+ }
+
+
+
} catch (Exception e) {
e.printStackTrace();
@@ -533,7 +541,7 @@
//鏁版嵁鏍锋湰锛�"eqp_fault": "婊氱瓛闄嶈秴鏃�-鎶ヨ,椋庢満杩囨祦鎶ヨ,婊氱瓛鍗囪秴鏃�-鎶ヨ,椋庣鍗囨姤璀�",
System.err.println((faultType == 1 ? "绫诲瀷锛氭晠闅�" : "绫诲瀷锛氭姤璀�") + DateUtils.formatDateTime()+"--"+fault);
//redis涓殑鏁呴殰
- Map<Object, Object> rFauMap = redisUtil.hmget(MqttConstant.MQTT_EQP_FAULT);
+ Map<Object, Object> rFauMap = redisUtil.hmget(MqttConstant.MQTT_REAL_FAULT);
Map<String, Object> redFauMap = rFauMap.entrySet().stream()
.collect(Collectors.toMap(
entry -> entry.getKey().toString(), // 閿浆鎹负瀛楃涓�
@@ -550,50 +558,74 @@
}
//1.瑙f瀽鏁版嵁
String[] eqpFaults = fault.split(",");
+ Map<String,DryFaultRecord> addFauMap = new HashMap<>();
Map<String,DryFaultRecord> realFauMap = new HashMap<>();
for (int i = 0; i < eqpFaults.length; i++) {
String eqpFault = eqpFaults[i];
//閬垮厤绌哄瓧绗︿覆
- if(StringUtils.isEmpty(eqpFault)) continue;
+ if(StringUtils.isEmpty(eqpFault.trim())) continue;
//1.1妫�鏌qtt涓槸鍚﹀凡瀛樺湪杩欎釜鏁呴殰
- String redisKey = String.format("%s_%s_%s", tenantId, machineId,eqpFault);
- String rFault = (String) redisUtil.get(redisKey);
+ String redisKey = String.format("%s_%s_%s", tenantId, machineId,eqpFault).trim();
+
+
+ realFauMap.put(redisKey, new DryFaultRecord());
+ DryFaultRecordVo rFault = (DryFaultRecordVo) redisUtil.hget(MqttConstant.MQTT_REAL_FAULT,redisKey);
//1.2濡傛灉redis涓嶅瓨鍦ㄥ垯瀛樺叆锛堝瓨鏁呴殰寮�濮嬶級
if(rFault ==null){
//缁勮缂撳瓨鏁版嵁
- DryFaultRecord faultRecord = new DryFaultRecord(orderId,eqpFault,faultType,new Date(),null);
- realFauMap.put(redisKey,faultRecord);
+// DryFaultRecord faultRecord = new DryFaultRecord(orderId,tenantId,eqpFault,faultType,new Date(),null);
+// addFauMap.put(redisKey,faultRecord);
+ Map<String, DryEquipment> equipmentMap = equipmentService.queryEquByTenantId(tenantId);
+ String tenantName = (String) redisUtil.hget(CommonCacheConstant.SYS_CACHE_TENANT, tenantId + "");
+ DryFaultRecordVo vo = new DryFaultRecordVo(orderId,tenantId,eqpFault,faultType,new Date(),null,1,equipmentMap.get(machineId).getName(),tenantName);
+ addFauMap.put(redisKey,vo);
+ }else {
+ //濡傛灉鏁版嵁宸插瓨鍦紝涓旇鏁板ぇ浜�1灏遍噸缃鏁帮紙璁℃暟3娆″悗鍒ゅ畾鏁呴殰缁撴潫锛�3娆′箣鍓嶉噸鏂颁笂鎶ユ晠闅滆鏄庢晠闅滆繕鍦ㄦ寔缁� 闇�瑕侀噸鏂拌鏁帮級
+ if(rFault.getECount()!=null && rFault.getECount() > 1){
+ rFault.setECount(1);
+ redisUtil.hset(MqttConstant.MQTT_REAL_FAULT,redisKey,rFault);
+ System.err.println("鎶ヨ娆℃暟閲嶇疆 clear clear 锛宬ey-"+redisKey);
+ }
+
}
}
//1.3缂撳瓨鑷硆edis
//鍚堝苟鏁版嵁
- realFauMap.forEach((key, value) -> redFauMap.putIfAbsent(key, value));
+ addFauMap.forEach((key, value) -> redFauMap.putIfAbsent(key, value));
//娌℃湁鏂版晠闅滄暟鎹笉鐢ㄨ鐩�
- if(!realFauMap.isEmpty()){
- redisUtil.hmset(MqttConstant.MQTT_EQP_FAULT,redFauMap);
+ if(!addFauMap.isEmpty()){
+ redisUtil.hmset(MqttConstant.MQTT_REAL_FAULT,redFauMap);
}
-
-
//2妫�娴嬪凡缁撴潫鐨勬晠闅�
//2.1濡傛灉瀹炴椂鏁版嵁涓嶅瓨鍦╮edis瀛樺湪鍒欎唬琛ㄦ晠闅滅粨鏉燂紝瀛樺叆鏁版嵁搴�
- Map<Object, Object> curFauMap = redisUtil.hmget(MqttConstant.MQTT_EQP_FAULT);
+ Map<Object, Object> curFauMap = redisUtil.hmget(MqttConstant.MQTT_REAL_FAULT);
curFauMap.keySet().stream()
//鐗瑰埆娉ㄦ剰锛屽涓姤璀︾被鍨嬪叡鐢ㄦ柟娉曢渶瑕佸尯鍒嗙被鍨�
- .filter(key -> !realFauMap.containsKey(key) && ((DryFaultRecord)curFauMap.get(key)).getFaultType() == faultType)
+ .filter(key -> !realFauMap.containsKey(key) && ((DryFaultRecordVo)curFauMap.get(key)).getFaultType() == faultType)
.forEach(key -> {
- System.err.println((faultType == 1 ? "绫诲瀷锛氭晠闅�" : "绫诲瀷锛氭姤璀�") + DateUtils.formatDateTime()+"瀛樺叆鏁版嵁搴�");
- DryFaultRecord record = (DryFaultRecord)redFauMap.get(key);
- record.setEndTime(new Date());
- faultRecordService.save(record);
- redisUtil.hdel(MqttConstant.MQTT_EQP_FAULT,key);
+ DryFaultRecordVo vo = (DryFaultRecordVo)redFauMap.get(key);
+ vo.setECount(vo.getECount()+1);
+ if(redisUtil.hget(MqttConstant.MQTT_REAL_FAULT,key.toString())!=null){
+ //鏇存柊娆℃暟
+ redisUtil.hset(MqttConstant.MQTT_REAL_FAULT,key.toString(),vo);
+ System.err.println("鎶ヨ娆℃暟鏇存柊锛宬ey-"+key);
+ }
- result.add(record);
-
+ if(vo.getECount()>=3){
+ vo.setEndTime(new Date());
+ //TODO 缁撴潫瓒呰繃鏌愪釜鏃堕棿鍖洪棿鍒ゅ畾涓洪敊璇暟鎹�
+ faultRecordService.save(vo);
+ redisUtil.hdel(MqttConstant.MQTT_REAL_FAULT,key);
+ result.add(vo);
+ System.err.println((faultType == 1 ? "绫诲瀷锛氭晠闅�" : "绫诲瀷锛氭姤璀�") + DateUtils.formatDateTime()+"瀛樺叆鏁版嵁搴�");
+ }
});
+
+
return result;
}
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/RedisInitListener.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/RedisInitListener.java
new file mode 100644
index 0000000..8aa71ce
--- /dev/null
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/RedisInitListener.java
@@ -0,0 +1,32 @@
+package org.jeecg.config.init;
+
+import org.jeecg.common.constant.CommonCacheConstant;
+import org.jeecg.common.util.RedisUtil;
+import org.jeecg.modules.system.entity.SysTenant;
+import org.jeecg.modules.system.service.ISysTenantService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.event.ApplicationStartedEvent;
+import org.springframework.context.ApplicationListener;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Component
+public class RedisInitListener implements ApplicationListener<ApplicationStartedEvent> {
+ @Autowired
+ private RedisUtil redisUtil;
+ @Autowired
+ private ISysTenantService sysTenantService;
+
+ @Override
+ public void onApplicationEvent(ApplicationStartedEvent event) {
+ //鏌ヨ鎵�鏈夌鎴蜂俊鎭苟缂撳瓨鑷硆edis
+ List<SysTenant> tenantList = sysTenantService.list();
+ //list杞琺ap
+ Map<String, Object> tenantMap = tenantList.stream()
+ .collect(Collectors.toMap(t -> String.valueOf(t.getId()), t -> (Object) t.getName(), (existingValue, newValue) -> existingValue));
+ redisUtil.hmset(CommonCacheConstant.SYS_CACHE_TENANT,tenantMap);
+ }
+}
--
Gitblit v1.9.3