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;
/**
*
* 气象数据接收管理 服务实现类
*
*
* @author sunjiawei
* @since 2025-05-20
*/
@Service
public class ReceiveWeatherInfoServiceImpl extends ServiceImpl implements ReceiveWeatherInfoService {
@Resource
private RedisTemplate redisTemplate;
@Resource
private ReceiveWeatherValueService receiveWeatherValueService;
@Override
public void saveData(List 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() {{
// 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());
// }
}
}