From 4f3a98f19143865cdc1de4791e8a95d96bd40c65 Mon Sep 17 00:00:00 2001 From: maven <2163098428@qq.com> Date: 星期五, 01 八月 2025 13:27:59 +0800 Subject: [PATCH] yys 密码已重置 --- cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 107 insertions(+), 0 deletions(-) diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java new file mode 100644 index 0000000..a1acb6e --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java @@ -0,0 +1,107 @@ +package com.ruoyi.device.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.device.mapper.CollectBridgeMapper; +import com.ruoyi.device.pojo.CollectBridge; +import com.ruoyi.device.service.CollectBridgeService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.Duration; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; + +/** + * 鏁板瓧鐢垫ˉ閲囬泦 + * + * @author zhuo + * @since 2025-02-19 + */ +@Service +@Slf4j +public class CollectBridgeServiceImpl extends ServiceImpl<CollectBridgeMapper, CollectBridge> implements CollectBridgeService { + + /** + * 濉厖閲囬泦鏁版嵁 + * @param jsonObject + */ + @Override + public void addBridgeValue(JSONObject jsonObject) { + JSONArray dataArray = jsonObject.getJSONArray("data"); + for (int i = 0; i < dataArray.size(); i++) { + JSONObject listInfo = dataArray.getJSONObject(i); + // 瀛樺偍鏁版嵁 + String dataStream = listInfo.getString("dataStream"); + if (dataStream.equals("DQCS.DQCS.SN")) { + JSONArray dataPoints = listInfo.getJSONArray("dataPoints"); + JSONObject pointsJSONObject = dataPoints.getJSONObject(0); + String entrustCode = pointsJSONObject.getString("value"); + // 瑙f瀽鏃堕棿鎴� + Instant instant = Instant.ofEpochMilli(pointsJSONObject.getLong("time")); + LocalDateTime collectDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); + + // 鍏堝瓨鍌ㄧ紪鍙�, 鍚庣画瀛樺偍鍊� + CollectBridge collectBridge = new CollectBridge(); + collectBridge.setEntrustCode(entrustCode); + collectBridge.setCollectDate(collectDate); + baseMapper.insert(collectBridge); + + } + // 瀵勫瓨鍣ㄥ湴鍧�绛変簬64鑾峰彇缁撴灉鍊� + if (dataStream.equals("DQCS.DQCS.64")) { + JSONArray dataPoints = listInfo.getJSONArray("dataPoints"); + JSONObject pointsJSONObject = dataPoints.getJSONObject(0); + String value = pointsJSONObject.getString("value"); + + if (value.equals("64")) { + for (int j = 0; j < dataArray.size(); j++) { + JSONObject listInfo2 = dataArray.getJSONObject(j); + String dataStream2 = listInfo2.getString("dataStream"); + // 瀵勫瓨鍣ㄥ湴鍧�绛変簬64鑾峰彇缁撴灉鍊� + if (dataStream2.equals("DQCS.DQCS.DZZ")) { + JSONArray dataPoints2 = listInfo2.getJSONArray("dataPoints"); + JSONObject pointsJSONObject2 = dataPoints2.getJSONObject(0); + String collectValue = pointsJSONObject2.getString("value"); + + // 瑙f瀽鏃堕棿鎴� + Instant instant = Instant.ofEpochMilli(pointsJSONObject2.getLong("time")); + LocalDateTime collectDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); + + // 鏌ヨ鏈�鏂颁竴鏉℃暟鎹� + CollectBridge collectBridge = baseMapper.selectOne(Wrappers.<CollectBridge>lambdaQuery() + .orderByDesc(CollectBridge::getCollectDate) + .last("limit 1")); + + // 鍒ゆ柇涓ゆ潯鏁版嵁鏄惁鐩稿樊鍦�10鍒嗛挓涔嬪唴鍜屾湁娌℃湁缂栧彿 + if (isWithinTenMinutes(collectDate, collectBridge.getCollectDate()) && + StringUtils.isNotBlank(collectBridge.getEntrustCode())) { + // 淇敼妫�楠屽�� + collectBridge.setCollectValue(collectValue); + baseMapper.updateById(collectBridge); + } else { + // 鍙瓨鍌ㄥ�� + CollectBridge bridge = new CollectBridge(); + bridge.setCollectValue(collectValue); + bridge.setCollectDate(collectDate); + baseMapper.insert(bridge); + } + } + } + } + } + } + } + + public static boolean isWithinTenMinutes(LocalDateTime dateTime1, LocalDateTime dateTime2) { + Duration duration = Duration.between(dateTime1, dateTime2); + long minutesDifference = Math.abs(duration.toMinutes()); + return minutesDifference <= 10; + } + +} + -- Gitblit v1.9.3