Commit 5983dd6b authored by tianbo's avatar tianbo

refactor(jg): 优化安全问题追溯消息发送逻辑

-移除了不必要的导入 - 重构了 sendSafetyProblemMessage 方法,使用批量发送提高效率 - 优化了 JSON 序列化方式,直接使用 toJSONBytes 方法
parent 0ca323f3
......@@ -2,7 +2,6 @@ package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.google.common.collect.Lists;
......@@ -27,7 +26,6 @@ import org.springframework.stereotype.Service;
import org.typroject.tyboot.component.emq.EmqKeeper;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -193,11 +191,13 @@ public class SafetyProblemTracingGenServiceImpl{
* @param safetyProblemTypeEnum
*/
private void sendSafetyProblemMessage(List<Map<String, Object>> mapList, SafetyProblemTypeEnum safetyProblemTypeEnum) {
JSONArray jsonArray = JSON.parseArray(JSON.toJSONString(mapList));
if (CollectionUtil.isNotEmpty(jsonArray)){
int batchSize = 10000;
for (int i = 0; i < mapList.size(); i += batchSize) {
List<Map<String, Object>> batch = mapList.subList(i, Math.min(i + batchSize, mapList.size()));
if (CollectionUtil.isNotEmpty(mapList)){
try {
logger.info("发送安全追溯问题主题---->{}", safetyProblemTypeEnum.getTopic());
emqKeeper.getMqttClient().publish(safetyProblemTypeEnum.getTopic(), jsonArray.toString().getBytes(StandardCharsets.UTF_8), 2, false);
emqKeeper.getMqttClient().publish(safetyProblemTypeEnum.getTopic(), JSON.toJSONBytes(batch), 2, false);
logger.info("发送安全追溯问题消息成功---->");
} catch (MqttException e) {
logger.error("发送安全追溯问题设备信息消息失败---->{}", e.getMessage());
......@@ -206,6 +206,8 @@ public class SafetyProblemTracingGenServiceImpl{
}
}
}
// @Scheduled(cron = "0 0 1 * * ?")
// @SchedulerLock(name = "executeOverDesignLifeCheck", lockAtMostFor = "PT5H", lockAtLeastFor = "PT10M")
public void executeOverDesignLife() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment