From 426f50baf57ae5901a6b5a26d1567e3b270d2499 Mon Sep 17 00:00:00 2001 From: zhuguifei <312353457@qq.com> Date: 星期三, 20 十一月 2024 10:46:38 +0800 Subject: [PATCH] 完善租户故障解析接口,完成实时故障和历史故障上报云服务器 --- 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