From 8870ea2ebf66b589c83f1d515faeec9bc4c6431e Mon Sep 17 00:00:00 2001
From: zhuguifei <zhuguifei@zhuguifeideiMac.local>
Date: 星期一, 28 七月 2025 14:01:51 +0800
Subject: [PATCH] 实时故障添加租户、设备区分
---
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java | 47 +++++++++++++----------
jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java | 42 ++++++++++++++++----
jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/MqttConstant.java | 2
3 files changed, 61 insertions(+), 30 deletions(-)
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 2b95f9f..e74daf0 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
@@ -82,7 +82,7 @@
String TENANT_UP_PREFIX = "tenant/up";
String TENANT_UP_PREFIX_REALTIME_DATA = TENANT_UP_PREFIX + "/realTime/data";
- String TENANT_UP_PREFIX_REALTIME_DATA_EQP = TENANT_UP_PREFIX + "/realTime/data/eqp/test";
+ String TENANT_UP_PREFIX_REALTIME_DATA_EQP = TENANT_UP_PREFIX + "/realTime/data/eqp";
String TENANT_UP_PREFIX_FAULT_DATA = TENANT_UP_PREFIX + "/fault/data";
String TENANT_UP_PREFIX_REAL_FAULT_DATA = TENANT_UP_PREFIX + "/real/fault/data";
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java
index 427d8c5..8f3e5ac 100755
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java
@@ -8,8 +8,12 @@
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
@@ -767,15 +771,35 @@
* @return
*/
public static String zone2Str(String st) {
- // 瑙f瀽瀛楃涓蹭负ZonedDateTime瀵硅薄
- ZonedDateTime zonedDateTime = ZonedDateTime.parse(st);
- // 杞崲涓轰腑鍥芥爣鍑嗘椂闂达紙UTC+8锛�
- ZonedDateTime cstDateTime = zonedDateTime.withZoneSameInstant(java.time.ZoneOffset.ofHours(8));
- // 瀹氫箟鎯宠鐨勮緭鍑烘牸寮�
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
- // 鏍煎紡鍖栦负鎯宠鐨勫瓧绗︿覆
- String str = cstDateTime.format(formatter);
- return str;
+ try {
+ // 灏濊瘯瑙f瀽涓烘椂闂存埑锛堟暟瀛楋級
+ if (st.matches("^\\d+$")) {
+ long timestamp = Long.parseLong(st);
+ // 鍋囪鏃堕棿鎴虫槸绉掔骇锛屽鏋滄槸姣绾у垯涓嶉渶瑕� *1000
+ Instant instant = Instant.ofEpochSecond(timestamp);
+ return instant.atZone(ZoneOffset.ofHours(8))
+ .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+ }
+
+ // 灏濊瘯瑙f瀽涓哄父瑙勬棩鏈熸椂闂存牸寮�
+ try {
+ LocalDateTime localDateTime = LocalDateTime.parse(st,
+ DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+ return localDateTime.atZone(ZoneOffset.ofHours(8))
+ .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+ } catch (DateTimeParseException e) {
+ // 涓嶆槸甯歌鏍煎紡锛岀户缁皾璇昛onedDateTime鐨勯粯璁ゆ牸寮�
+ }
+
+ // 灏濊瘯瑙f瀽涓篫onedDateTime鐨勯粯璁ゆ牸寮�
+ ZonedDateTime zonedDateTime = ZonedDateTime.parse(st);
+ return zonedDateTime.withZoneSameInstant(ZoneOffset.ofHours(8))
+ .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
}
/**
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 8e48a0b..abf5f3d 100755
--- 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
@@ -180,11 +180,12 @@
DryOrderVo orderVo = (DryOrderVo) redisUtil.hget(CacheConstants.RedisKeyEnum.WORK_ORDER.getCode(),
realTimeDataParentVo.getTenantid() + "_" + realTimeDataParentVo.getMachineid());
// 1.2 濡傛灉鏈夌紦瀛樿褰�
- if (orderVo != null && orderVo.getCode().equals(realTimeDataParentVo.getWorkorder())) {
+ if (orderVo != null && orderVo.getCode() != null && orderVo.getCode().equals(realTimeDataParentVo.getWorkorder())) {
// 1.3 娌℃湁缂撳瓨璁板綍鍐嶆煡璇㈡暟鎹簱
} else {
// 鏍规嵁绉熸埛id鍜屽伐鍗曞彿鏌ヨ鏁版嵁搴撴槸鍚︽湁璁板綍锛屾湁鍒欒繑鍥烇紝娌℃湁鍒欐柊澧炰竴鏉″啀杩斿洖
+ realTimeDataVo.setWorkorder(realTimeDataParentVo.getWorkorder());
orderVo = getOrSaveDryOrderVoDB(realTimeDataVo);
}
if (orderVo == null) {
@@ -819,27 +820,33 @@
//2妫�娴嬪凡缁撴潫鐨勬晠闅�
//2.1濡傛灉瀹炴椂鏁版嵁涓嶅瓨鍦╮edis瀛樺湪鍒欎唬琛ㄦ晠闅滅粨鏉燂紝瀛樺叆鏁版嵁搴�
Map<Object, Object> curFauMap = redisUtil.hmget(String.format(MqttConstant.MQTT_REAL_FAULT, tenantId));
- curFauMap.keySet().stream()
+ Map<Object, DryFaultRecordVo> collect = curFauMap.keySet().stream()
+ .filter(key -> {
+ String[] split = key.toString().split("_");
+ return split[0].equals(tenantId + "") && split[1].equals(machineId);
+ })
//鐗瑰埆娉ㄦ剰锛屽涓姤璀︾被鍨嬪叡鐢ㄦ柟娉曢渶瑕佸尯鍒嗙被鍨�
- .filter(key -> !realFauMap.containsKey(key) && ((DryFaultRecordVo) curFauMap.get(key)).getFaultType() == faultType)
- .forEach(key -> {
- DryFaultRecordVo vo = (DryFaultRecordVo) redFauMap.get(key);
- vo.setECount(vo.getECount() + 1);
- if (redisUtil.hget(String.format(MqttConstant.MQTT_REAL_FAULT, tenantId), key.toString()) != null) {
- //鏇存柊娆℃暟
- redisUtil.hset(String.format(MqttConstant.MQTT_REAL_FAULT, tenantId), key.toString(), vo);
- System.err.println("鎶ヨ娆℃暟鏇存柊锛宬ey-" + key);
- }
+ .filter(key -> !realFauMap.containsKey(key) && (Objects.equals(((DryFaultRecordVo) curFauMap.get(key)).getFaultType(), faultType)))
+ .collect(Collectors.toMap(key -> key, // 淇濈暀鍘熼敭
+ key -> (DryFaultRecordVo) curFauMap.get(key)));
+ collect.keySet().forEach(key -> {
+ DryFaultRecordVo vo = (DryFaultRecordVo) redFauMap.get(key);
+ vo.setECount(vo.getECount() + 1);
+ if (redisUtil.hget(String.format(MqttConstant.MQTT_REAL_FAULT, tenantId), key.toString()) != null) {
+ //鏇存柊娆℃暟
+ redisUtil.hset(String.format(MqttConstant.MQTT_REAL_FAULT, tenantId), key.toString(), vo);
+ System.err.println("鎶ヨ娆℃暟鏇存柊锛宬ey-" + key);
+ }
- if (vo.getECount() >= 3) {
- vo.setEndTime(new Date());
- //TODO 缁撴潫瓒呰繃鏌愪釜鏃堕棿鍖洪棿鍒ゅ畾涓洪敊璇暟鎹�
- faultRecordService.save(vo);
- redisUtil.hdel(String.format(MqttConstant.MQTT_REAL_FAULT, tenantId), key);
- result.add(vo);
- System.err.println((faultType == 1 ? "绫诲瀷锛氭晠闅�" : "绫诲瀷锛氭姤璀�") + DateUtils.formatDateTime() + "瀛樺叆鏁版嵁搴�");
- }
- });
+ if (vo.getECount() >= 3) {
+ vo.setEndTime(new Date());
+ //TODO 缁撴潫瓒呰繃鏌愪釜鏃堕棿鍖洪棿鍒ゅ畾涓洪敊璇暟鎹�
+ faultRecordService.save(vo);
+ redisUtil.hdel(String.format(MqttConstant.MQTT_REAL_FAULT, tenantId), key);
+ result.add(vo);
+ System.err.println((faultType == 1 ? "绫诲瀷锛氭晠闅�" : "绫诲瀷锛氭姤璀�") + DateUtils.formatDateTime() + "瀛樺叆鏁版嵁搴�");
+ }
+ });
return result;
--
Gitblit v1.9.3