修改累计水量、累计电量、箱门状态的获取方式

This commit is contained in:
wyw 2024-08-16 01:45:55 +08:00
parent 9acc3940d8
commit 0d42fc0785

View File

@ -2,9 +2,11 @@ package com.fastbee.data.service.gis.impl;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.fastbee.common.core.page.TableDataInfo;
import com.fastbee.common.model.vo.TreeItemVo; import com.fastbee.common.model.vo.TreeItemVo;
import com.fastbee.common.model.vo.iot.GisDeviceListVo; import com.fastbee.common.model.vo.iot.GisDeviceListVo;
import com.fastbee.common.utils.DateUtils; import com.fastbee.common.utils.DateUtils;
@ -52,6 +54,7 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
@Autowired @Autowired
private IMaWatereleRecordService watereleRecordService; private IMaWatereleRecordService watereleRecordService;
public GisDeviceServiceImpl(@Qualifier("deviceMapper") DeviceMapper deviceMapper, @Qualifier("productMapper") ProductMapper productMapper) { public GisDeviceServiceImpl(@Qualifier("deviceMapper") DeviceMapper deviceMapper, @Qualifier("productMapper") ProductMapper productMapper) {
this.deviceMapper = deviceMapper; this.deviceMapper = deviceMapper;
this.productMapper = productMapper; this.productMapper = productMapper;
@ -103,10 +106,12 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
deviceListVo.setOnLineCount(onLineCount); deviceListVo.setOnLineCount(onLineCount);
return deviceListVo; return deviceListVo;
} }
//todo 需要修改安防版和水电双计设备实时数据 //todo 需要修改安防版和水电双计设备实时数据
@Override @Override
public Object getRealTimeDataByDevicerId(Long deviceId) { public Object getRealTimeDataByDevicerId(Long deviceId) {
HashMap<String, Object> rMap = new HashMap<String, Object>() {}; HashMap<String, Object> rMap = new HashMap<String, Object>() {
};
if (deviceId == null) { if (deviceId == null) {
throw new RuntimeException("请上传devicerId"); throw new RuntimeException("请上传devicerId");
} }
@ -151,19 +156,29 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
if (hashMap.size() > 1) { if (hashMap.size() > 1) {
List<DeviceLog> deviceLogs1 = taiyangnengCollect.get(thingsModel.getIdentifier()); List<DeviceLog> deviceLogs1 = taiyangnengCollect.get(thingsModel.getIdentifier());
if (deviceLogs1 != null) { if (deviceLogs1 != null) {
if(deviceLogs1.size() > 0){
if (StringUtils.isNotEmpty(deviceLogs1.get(0).getLogValue())) { if (StringUtils.isNotEmpty(deviceLogs1.get(0).getLogValue())) {
if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) == Float.parseFloat(deviceLogs1.get(1).getLogValue())) if(deviceLogs1.size() > 1){
{ if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) == Float.parseFloat(deviceLogs1.get(1).getLogValue())) {
hashMap.put("upType", 1); hashMap.put("upType", 1);
} else if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) < Float.parseFloat(deviceLogs1.get(1).getLogValue())) { } else if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) < Float.parseFloat(deviceLogs1.get(1).getLogValue())) {
hashMap.put("upType", -1); hashMap.put("upType", -1);
} }
}else{
hashMap.put("upType", 0);
}
hashMap.put("value", deviceLogs1.get(0).getLogValue()); hashMap.put("value", deviceLogs1.get(0).getLogValue());
} else { } else {
hashMap.put("value", "--"); hashMap.put("value", "--");
hashMap.put("upType", 0); hashMap.put("upType", 0);
} }
}else{
hashMap.put("value", "--");
hashMap.put("upType", 0);
}
} }
} else if (hashMap.size() > 0) { } else if (hashMap.size() > 0) {
List<DeviceLog> deviceLogs2 = taiyangnengCollect.get(thingsModel.getIdentifier()); List<DeviceLog> deviceLogs2 = taiyangnengCollect.get(thingsModel.getIdentifier());
@ -185,30 +200,192 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
rMap.put(thingsModel.getIdentifier(), hashMap); rMap.put(thingsModel.getIdentifier(), hashMap);
} }
} }
//安防信息 //箱门信息
String anfangIds = devParams.get("anfangIds").toString(); String guimenIds = devParams.get("guimenIds").toString();
HashMap<Object, Object> hashMap = new HashMap<Object, Object>() {{ ThingsModel thingsModel3 = new ThingsModel();
put("upType", 0); thingsModel3.setProductId(140L);
put("identifier", "xiangmen"); List<ThingsModel> guimenModels = thingsModelService.selectThingsModelList(thingsModel3);
put("unit", ""); if (StringUtils.isNotEmpty(taiyangnengIds)) {
put("value", 0);//0=正常1=箱门振动2=箱门打开 Device guimenDevice = deviceMapper.selectDeviceByDeviceId(Long.parseLong(guimenIds));
put("name", "箱门状态"); List<DeviceLog> deviceLogs = logService.selectDeviceLogList(new DeviceLog() {{
}}; setSerialNumber(guimenDevice.getSerialNumber());
rMap.put("xiangmen",hashMap); setBeginTime(DateUtil.beginOfDay(DateUtil.offsetDay(dateTime, -1)).toString());
//机井信息 setEndTime(DateUtil.endOfDay(dateTime).toString());
}});
Map<String, List<DeviceLog>> guimenCollect = deviceLogs.stream().sorted(Comparator
.comparing(DeviceLog::getCreateTime, Comparator
.nullsFirst(Comparator.naturalOrder())).reversed()).collect(Collectors.groupingBy(t -> t.getIdentity()));
for (ThingsModel thingsModel : guimenModels) {
HashMap<Object, Object> hashMap1 = new HashMap<Object, Object>() {{ HashMap<Object, Object> hashMap1 = new HashMap<Object, Object>() {{
put("upType", 0); put("upType", 0);
put("identifier", "sumFlow"); put("identifier", thingsModel.getIdentifier().equals("三菱FX2N_1_open")?"xiangmen":thingsModel.getIdentifier());
put("unit", ""); put("unit", "");
put("value", 0); put("value", 0);
put("name", "累计用水量"); put("name", thingsModel.getModelName());
}}; }};
rMap.put("sumFlow",hashMap1); if (StringUtils.isNotEmpty(thingsModel.getSpecs())) {
String specs = thingsModel.getSpecs();
JSONObject parse = (JSONObject) JSON.parse(specs);
if (parse.containsKey("unit")) {
hashMap1.put("unit", parse.get("unit"));
}
}
if (hashMap1.size() > 1) {
List<DeviceLog> deviceLogs1 = guimenCollect.get(thingsModel.getIdentifier());
if (deviceLogs1 != null) {
if(deviceLogs1.size() > 0){
if (StringUtils.isNotEmpty(deviceLogs1.get(0).getLogValue())) {
if(deviceLogs1.size() > 1){
if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) == Float.parseFloat(deviceLogs1.get(1).getLogValue())) {
hashMap1.put("upType", 1);
} else if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) < Float.parseFloat(deviceLogs1.get(1).getLogValue())) {
hashMap1.put("upType", -1);
}
}else{
hashMap1.put("upType", 0);
}
hashMap1.put("value", deviceLogs1.get(0).getLogValue());
} else {
hashMap1.put("value", "--");
hashMap1.put("upType", 0);
}
}else{
hashMap1.put("value", "--");
hashMap1.put("upType", 0);
}
}
} else if (hashMap1.size() > 0) {
List<DeviceLog> deviceLogs3 = guimenCollect.get(thingsModel.getIdentifier());
if (deviceLogs3 != null) {
hashMap1.put("value", deviceLogs3.get(0).getLogValue());
}
}
rMap.put(thingsModel.getIdentifier().equals("三菱FX2N_1_open")?"xiangmen":thingsModel.getIdentifier(), hashMap1);
}
} else {
for (ThingsModel thingsModel : taiyangnengModels) {
HashMap<Object, Object> hashMap1 = new HashMap<Object, Object>() {{
put("upType", 0);
put("identifier", thingsModel.getIdentifier().equals("三菱FX2N_1_open")?"xiangmen":thingsModel.getIdentifier());
put("unit", "");
put("value", 0);
put("name", thingsModel.getModelName());
}};
rMap.put(thingsModel.getIdentifier().equals("三菱FX2N_1_open")?"xiangmen":thingsModel.getIdentifier(), hashMap1);
}
}
// HashMap<Object, Object> hashMap = new HashMap<Object, Object>() {{
// put("upType", 0);
// put("identifier", "xiangmen");
// put("unit", "");
// put("value", 0);//0=正常1=箱门振动2=箱门打开
// put("name", "箱门状态");
// }};
// rMap.put("xiangmen", hashMap);
String liuliangIds = devParams.get("liuliangIds").toString();
ThingsModel thingsModel2 = new ThingsModel();
thingsModel2.setProductId(139L);
List<ThingsModel> liuliangModels = thingsModelService.selectThingsModelList(thingsModel2);
if (StringUtils.isNotEmpty(taiyangnengIds)) {
Device liuliangDevice = deviceMapper.selectDeviceByDeviceId(Long.parseLong(liuliangIds));
List<DeviceLog> deviceLogs = logService.selectDeviceLogList(new DeviceLog() {{
setSerialNumber(liuliangDevice.getSerialNumber());
setBeginTime(DateUtil.beginOfDay(DateUtil.offsetDay(dateTime, -1)).toString());
setEndTime(DateUtil.endOfDay(dateTime).toString());
}});
Map<String, List<DeviceLog>> liuliangCollect = deviceLogs.stream().sorted(Comparator
.comparing(DeviceLog::getCreateTime, Comparator
.nullsFirst(Comparator.naturalOrder())).reversed()).collect(Collectors.groupingBy(t -> t.getIdentity()));
for (ThingsModel thingsModel : liuliangModels) {
HashMap<Object, Object> hashMap1 = new HashMap<Object, Object>() {{
put("upType", 0);
put("identifier", thingsModel.getIdentifier().equals("三菱FX2N_1_sumFlow")?"sumFlow":thingsModel.getIdentifier());
put("unit", "");
put("value", 0);
put("name", thingsModel.getModelName());
}};
if (StringUtils.isNotEmpty(thingsModel.getSpecs())) {
String specs = thingsModel.getSpecs();
JSONObject parse = (JSONObject) JSON.parse(specs);
if (parse.containsKey("unit")) {
hashMap1.put("unit", parse.get("unit"));
}
}
if (hashMap1.size() > 1) {
List<DeviceLog> deviceLogs1 = liuliangCollect.get(thingsModel.getIdentifier());
if (deviceLogs1 != null) {
if(deviceLogs1.size() > 0){
if (StringUtils.isNotEmpty(deviceLogs1.get(0).getLogValue())) {
if(deviceLogs1.size() > 1){
if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) == Float.parseFloat(deviceLogs1.get(1).getLogValue())) {
hashMap1.put("upType", 1);
} else if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) < Float.parseFloat(deviceLogs1.get(1).getLogValue())) {
hashMap1.put("upType", -1);
}
}else{
hashMap1.put("upType", 0);
}
hashMap1.put("value", deviceLogs1.get(0).getLogValue());
} else {
hashMap1.put("value", "--");
hashMap1.put("upType", 0);
}
}else{
hashMap1.put("value", "--");
hashMap1.put("upType", 0);
}
}
} else if (hashMap1.size() > 0) {
List<DeviceLog> deviceLogs2 = liuliangCollect.get(thingsModel.getIdentifier());
if (deviceLogs2 != null) {
hashMap1.put("value", deviceLogs2.get(0).getLogValue());
}
}
rMap.put(thingsModel.getIdentifier().equals("三菱FX2N_1_sumFlow")?"sumFlow":thingsModel.getIdentifier(), hashMap1);
}
} else {
for (ThingsModel thingsModel : taiyangnengModels) {
HashMap<Object, Object> hashMap1 = new HashMap<Object, Object>() {{
put("upType", 0);
put("identifier", thingsModel.getIdentifier().equals("三菱FX2N_1_sumFlow")?"sumFlow":thingsModel.getIdentifier());
put("unit", "");
put("value", 0);
put("name", thingsModel.getModelName());
}};
rMap.put(thingsModel.getIdentifier().equals("三菱FX2N_1_sumFlow")?"sumFlow":thingsModel.getIdentifier(), hashMap1);
}
}
// HashMap<Object, Object> hashMap1 = new HashMap<Object, Object>() {{
// put("upType", 0);
// put("identifier", "sumFlow");
// put("unit", "");
// put("value", 0);
// put("name", "累计用水量");
// }};
// rMap.put("sumFlow", hashMap1);
MaWatereleRecord maWatereleRecord = new MaWatereleRecord();
maWatereleRecord.setDevSn(device.getSerialNumber());
TableDataInfo tableDataInfo = watereleRecordService.selectMaWatereleRecordList(maWatereleRecord);
List<MaWatereleRecord> deviceLogs = (List<MaWatereleRecord>) tableDataInfo.getRows();
String sumEle = "0";
if(deviceLogs.size() > 0){
sumEle = NumberUtil.isNumber(deviceLogs.get(0).getSumele())?deviceLogs.get(0).getSumele():
"0";
}
String finalSumEle = sumEle;
HashMap<Object, Object> hashMap2 = new HashMap<Object, Object>() {{ HashMap<Object, Object> hashMap2 = new HashMap<Object, Object>() {{
put("upType", 0); put("upType", 0);
put("identifier", "sumEle"); put("identifier", "sumEle");
put("unit", ""); put("unit", "kwh");
put("value", 0); put("value", finalSumEle);
put("name", "累计用电量"); put("name", "累计用电量");
}}; }};
rMap.put("sumEle", hashMap2); rMap.put("sumEle", hashMap2);
@ -228,7 +405,8 @@ public class GisDeviceServiceImpl implements IGisDeviceService {
//获取累计水量和累计电量的前20条数据记录 //获取累计水量和累计电量的前20条数据记录
MaWatereleRecord watereleRecord = new MaWatereleRecord(); MaWatereleRecord watereleRecord = new MaWatereleRecord();
watereleRecord.setDevSn(device.getSerialNumber()); watereleRecord.setDevSn(device.getSerialNumber());
List<MaWatereleRecord> maWatereleRecords = (List<MaWatereleRecord>) watereleRecordService.selectMaWatereleRecordList(watereleRecord).getRows(); List<MaWatereleRecord> maWatereleRecords =
(List<MaWatereleRecord>) watereleRecordService.selectMaWatereleRecordList(watereleRecord).getRows();
if (maWatereleRecords.size() > 20) { if (maWatereleRecords.size() > 20) {
maWatereleRecords = maWatereleRecords.subList(0, 20); maWatereleRecords = maWatereleRecords.subList(0, 20);
} }