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