package com.ruoyi.fuzhou.service.impl;
|
|
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSONObject;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.ruoyi.fuzhou.domain.*;
|
import com.ruoyi.fuzhou.mapper.ReceiveWeatherInfoMapper;
|
import com.ruoyi.fuzhou.service.ReceiveWeatherInfoService;
|
import com.ruoyi.fuzhou.service.ReceiveWeatherValueService;
|
import com.ruoyi.fuzhou.utils.ModbusWeatherServerUtils;
|
import com.ruoyi.fuzhou.utils.oilmodbus.ModbusOilServerUtils;
|
import jakarta.annotation.Resource;
|
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.stereotype.Service;
|
|
import java.util.Date;
|
import java.util.List;
|
import java.util.concurrent.TimeUnit;
|
|
/**
|
* <p>
|
* 气象数据接收管理 服务实现类
|
* </p>
|
*
|
* @author sunjiawei
|
* @since 2025-05-20
|
*/
|
@Service
|
public class ReceiveWeatherInfoServiceImpl extends ServiceImpl<ReceiveWeatherInfoMapper, ReceiveWeatherInfo> implements ReceiveWeatherInfoService {
|
@Resource
|
private RedisTemplate redisTemplate;
|
|
@Resource
|
private ReceiveWeatherValueService receiveWeatherValueService;
|
|
@Override
|
public void saveData(List<ReceiveWeatherInfo> list, DpEquipment info) {
|
JSONObject jsonObject = ModbusWeatherServerUtils.getValue(list.get(0).getIp(), list.get(0).getPort(), list);
|
// JSONObject jsonObject = ModbusWeatherServerUtils.getValueTest(list.get(0).getIp(), list.get(0).getPort(), list);
|
if (jsonObject != null && jsonObject.size() > 0) {
|
ReceiveWeatherValue receiveWeatherValue = JSON.toJavaObject(jsonObject, ReceiveWeatherValue.class);
|
receiveWeatherValue.setCreateTime(new Date());
|
receiveWeatherValue.setDeviceName(list.get(0).getDeviceName());
|
// if (Math.abs(Double.valueOf(receiveWeatherValue.getOilTimeFlow())) > 0) {
|
// redisTemplate.opsForValue().set("VALUE@" + receiveWeatherValue.getDeviceName(), receiveWeatherValue.getOilTimeFlow(), 30, TimeUnit.MINUTES);
|
// receiveWeatherValueService.save(receiveWeatherValue);
|
// } else {
|
// Object obj = redisTemplate.opsForValue().get("VALUE@" + receiveOilValue.getDeviceName());
|
// if (obj == null) {
|
// redisTemplate.opsForValue().set("VALUE@" + receiveOilValue.getDeviceName(), receiveOilValue.getOilTimeFlow(), 30, TimeUnit.MINUTES);
|
// receiveWeatherValueService.save(receiveOilValue);
|
// } else if (!obj.toString().equals(receiveOilValue.getOilTimeFlow())) {
|
// redisTemplate.opsForValue().set("VALUE@" + receiveOilValue.getDeviceName(), receiveOilValue.getOilTimeFlow(), 30, TimeUnit.MINUTES);
|
// receiveWeatherValueService.save(receiveOilValue);
|
// }
|
// }
|
receiveWeatherValueService.save(receiveWeatherValue);
|
}
|
//制造socket数据
|
// JSONArray header = new JSONArray();
|
// list.forEach(item -> {
|
// JSONObject head = new JSONObject();
|
// head.put("param", item.getParam());
|
// head.put("paramCode", item.getParamCode());
|
// head.put("unit", item.getUnit());
|
// header.add(head);
|
// });
|
// ReceiveOilValue receiveOilValue = receiveOilValueService.getOne(new LambdaQueryWrapper<ReceiveOilValue>() {{
|
// or().eq(ReceiveOilValue::getDeviceName, list.get(0).getDeviceName()).orderByDesc(ReceiveOilValue::getCreateTime).last("limit 1");
|
// }});
|
// if (receiveOilValue != null) {
|
// JSONObject object = new JSONObject();
|
// object.put("header", header);
|
// object.put("body", JSONObject.parseObject(JSON.toJSONString(receiveOilValue)));
|
// object.put("info", JSONObject.parseObject(JSON.toJSONString(info)));
|
// object.put("status", "1");
|
//// WebSocketOilServer.sendAllMessage(object.toJSONString());
|
// }
|
}
|
|
}
|