package com.ruoyi.fuzhou.service.impl;
|
|
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSONArray;
|
import com.alibaba.fastjson2.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.fuzhou.domain.DpEquipment;
|
import com.ruoyi.fuzhou.domain.ReceiveOilInfo;
|
import com.ruoyi.fuzhou.domain.ReceiveOilValue;
|
import com.ruoyi.fuzhou.mapper.ReceiveOilInfoMapper;
|
import com.ruoyi.fuzhou.service.ReceiveOilInfoService;
|
import com.ruoyi.fuzhou.service.ReceiveOilValueService;
|
import com.ruoyi.fuzhou.utils.oilmodbus.ModbusOilServerUtils;
|
import com.ruoyi.fuzhou.websocket.WebSocketOilServer;
|
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 zhangyy
|
* @since 2025-03-12
|
*/
|
@Service
|
public class ReceiveOilInfoServiceImpl extends ServiceImpl<ReceiveOilInfoMapper, ReceiveOilInfo> implements ReceiveOilInfoService {
|
|
@Resource
|
private ReceiveOilValueService receiveOilValueService;
|
|
@Resource
|
private RedisTemplate redisTemplate;
|
|
@Override
|
public void saveOil(List<ReceiveOilInfo> list, DpEquipment info) {
|
JSONObject jsonObject = ModbusOilServerUtils.getValue(list.get(0).getIp(), list.get(0).getPort(), list);
|
if (jsonObject != null && jsonObject.size() > 0) {
|
ReceiveOilValue receiveOilValue = JSON.toJavaObject(jsonObject, ReceiveOilValue.class);
|
receiveOilValue.setCreateTime(new Date());
|
receiveOilValue.setDeviceName(list.get(0).getDeviceName());
|
if (Math.abs(Double.valueOf(receiveOilValue.getOilTimeFlow())) > 0) {
|
redisTemplate.opsForValue().set("VALUE@" + receiveOilValue.getDeviceName(), receiveOilValue.getOilTimeFlow(), 30, TimeUnit.MINUTES);
|
receiveOilValueService.save(receiveOilValue);
|
} else {
|
Object obj = redisTemplate.opsForValue().get("VALUE@" + receiveOilValue.getDeviceName());
|
if (obj == null) {
|
redisTemplate.opsForValue().set("VALUE@" + receiveOilValue.getDeviceName(), receiveOilValue.getOilTimeFlow(), 30, TimeUnit.MINUTES);
|
receiveOilValueService.save(receiveOilValue);
|
} else if (!obj.toString().equals(receiveOilValue.getOilTimeFlow())) {
|
redisTemplate.opsForValue().set("VALUE@" + receiveOilValue.getDeviceName(), receiveOilValue.getOilTimeFlow(), 30, TimeUnit.MINUTES);
|
receiveOilValueService.save(receiveOilValue);
|
}
|
}
|
}
|
//制造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());
|
// }
|
}
|
|
@Override
|
public void saveOilLijiuNingde(List<ReceiveOilInfo> list, DpEquipment info) {
|
JSONObject jsonObject = ModbusOilServerUtils.getValue(list.get(0).getIp(), list.get(0).getPort(), list);
|
if (jsonObject != null && jsonObject.size() > 0) {
|
ReceiveOilValue receiveOilValue = JSON.toJavaObject(jsonObject, ReceiveOilValue.class);
|
receiveOilValue.setCreateTime(new Date());
|
receiveOilValue.setDeviceName(list.get(0).getDeviceName());
|
if (Math.abs(Double.valueOf(receiveOilValue.getOilTimeFlow())) > 0 || Math.abs(Double.valueOf(receiveOilValue.getVolumeFlow())) > 0) {
|
redisTemplate.opsForValue().set("VALUE@" + receiveOilValue.getDeviceName(), receiveOilValue.getOilTimeFlow() + receiveOilValue.getVolumeFlow(), 30, TimeUnit.MINUTES);
|
receiveOilValueService.save(receiveOilValue);
|
} else {
|
Object obj = redisTemplate.opsForValue().get("VALUE@" + receiveOilValue.getDeviceName());
|
if (obj == null) {
|
redisTemplate.opsForValue().set("VALUE@" + receiveOilValue.getDeviceName(), receiveOilValue.getOilTimeFlow() + receiveOilValue.getVolumeFlow(), 30, TimeUnit.MINUTES);
|
receiveOilValueService.save(receiveOilValue);
|
} else if (!obj.toString().equals(receiveOilValue.getOilTimeFlow() + receiveOilValue.getVolumeFlow())) {
|
redisTemplate.opsForValue().set("VALUE@" + receiveOilValue.getDeviceName(), receiveOilValue.getOilTimeFlow() + receiveOilValue.getVolumeFlow(), 30, TimeUnit.MINUTES);
|
receiveOilValueService.save(receiveOilValue);
|
}
|
}
|
}
|
}
|
|
@Override
|
public void saveLijiuOil(List<ReceiveOilInfo> list, DpEquipment info) {
|
JSONObject jsonObject = ModbusOilServerUtils.getLijiuValue(list.get(0).getIp(), list.get(0).getPort(), list);
|
if (jsonObject != null && jsonObject.size() > 0) {
|
ReceiveOilValue receiveOilValue = JSON.toJavaObject(jsonObject, ReceiveOilValue.class);
|
receiveOilValue.setDeviceName(list.get(0).getDeviceName());
|
receiveOilValue.setCreateTime(new Date());
|
if (Math.abs(Double.valueOf(receiveOilValue.getOilTimeFlow())) > 0) {
|
receiveOilValueService.save(receiveOilValue);
|
redisTemplate.opsForValue().set("VALUE@" + receiveOilValue.getDeviceName(), receiveOilValue.getOilTimeFlow(), 30, TimeUnit.MINUTES);
|
}else {
|
Object obj = redisTemplate.opsForValue().get("VALUE@" + receiveOilValue.getDeviceName());
|
if (obj == null) {
|
receiveOilValueService.save(receiveOilValue);
|
redisTemplate.opsForValue().set("VALUE@" + receiveOilValue.getDeviceName(), receiveOilValue.getOilTimeFlow(), 30, TimeUnit.MINUTES);
|
} else if (!obj.toString().equals(receiveOilValue.getOilTimeFlow())) {
|
redisTemplate.opsForValue().set("VALUE@" + receiveOilValue.getDeviceName(), receiveOilValue.getOilTimeFlow(), 30, TimeUnit.MINUTES);
|
receiveOilValueService.save(receiveOilValue);
|
}
|
}
|
}
|
}
|
|
}
|