From 0388cd8aba86cd6416107e77d6bb04e758b6ded1 Mon Sep 17 00:00:00 2001 From: wyw <373811525@qq.com> Date: Fri, 16 Aug 2024 02:32:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=94=A8=E6=B0=B4=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devicedetail/DeviceDetailController.java | 20 ++++ .../devicedetail/IDeviceDetailService.java | 3 + .../impl/DeviceDetailServiceImpl.java | 105 ++++++++++++++++++ .../gis/impl/GisDeviceServiceImpl.java | 1 - .../iot/service/impl/DeviceServiceImpl.java | 6 +- .../impl/MaWatereleRecordServiceImpl.java | 12 +- 6 files changed, 137 insertions(+), 10 deletions(-) diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/devicedetail/DeviceDetailController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/devicedetail/DeviceDetailController.java index b301657..d068a2a 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/devicedetail/DeviceDetailController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/devicedetail/DeviceDetailController.java @@ -97,6 +97,26 @@ public class DeviceDetailController extends BaseController { return ajaxResult; } + /** + * 查询用水数据 + * @param queryLogVo 传参 + * @return com.fastbee.common.core.domain.AjaxResult + */ + @ApiOperation("查询用水数据") + @GetMapping("/yongshuiChart") + public AjaxResult yongshuiChart(QueryLogVo queryLogVo) + { + if (null == queryLogVo.getDeviceId() || queryLogVo.getDeviceId() == 0L) { + return AjaxResult.error("请选择设备"); + } + //设备历史echart数据 + List list = deviceDetailService.yongshuiChart(queryLogVo); + AjaxResult ajaxResult = AjaxResult.success(); + ajaxResult.put("data", list); + ajaxResult.put("realData", deviceDetailService.yongshuiRealData(queryLogVo)); + return ajaxResult; + } + /** * 查询巡检记录 diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/service/devicedetail/IDeviceDetailService.java b/fastbee-open-api/src/main/java/com/fastbee/data/service/devicedetail/IDeviceDetailService.java index 8540b7e..3417db0 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/service/devicedetail/IDeviceDetailService.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/service/devicedetail/IDeviceDetailService.java @@ -29,6 +29,7 @@ public interface IDeviceDetailService { List getBindDevices(String ids); ArrayList gongdianChart(QueryLogVo queryLogVo); + List yongshuiChart(QueryLogVo queryLogVo); List xunjianRecord(QueryLogVo queryLogVo); @@ -41,4 +42,6 @@ public interface IDeviceDetailService { * @param queryLogVo */ List> gongdianRealData(QueryLogVo queryLogVo); + List> yongshuiRealData(QueryLogVo queryLogVo); + } diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/service/devicedetail/impl/DeviceDetailServiceImpl.java b/fastbee-open-api/src/main/java/com/fastbee/data/service/devicedetail/impl/DeviceDetailServiceImpl.java index 85e9623..ec1f548 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/service/devicedetail/impl/DeviceDetailServiceImpl.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/service/devicedetail/impl/DeviceDetailServiceImpl.java @@ -107,6 +107,27 @@ public class DeviceDetailServiceImpl implements IDeviceDetailService { return deviceLogAllCurves; } + @Override + public List yongshuiChart(QueryLogVo queryLogVo) { + Long deviceId = queryLogVo.getDeviceId(); + if (deviceId == null) { + throw new RuntimeException("请上传devicerId"); + } + Device device = iDeviceService.selectDeviceByDeviceId(deviceId); + if (device == null) { + throw new RuntimeException("未查到该设备"); + } + Map devParams = DevParamsUtils.getDevParams(device.getDevParams()); + //太阳能设备 + String liuliangIds = devParams.get("liuliangIds").toString(); + if (liuliangIds == null) { + return new ArrayList<>(); + } + ArrayList deviceLogAllCurves = + iDeviceService.getDeviceLogAllCurves(Long.parseLong(liuliangIds), queryLogVo.getStartTime(), queryLogVo.getEndTime()); + return deviceLogAllCurves; + } + @Override public List xunjianRecord(QueryLogVo queryLogVo) { @@ -270,6 +291,90 @@ public class DeviceDetailServiceImpl implements IDeviceDetailService { return list; } + @Override + public List> yongshuiRealData(QueryLogVo queryLogVo) { + Long deviceId = queryLogVo.getDeviceId(); + if (deviceId == null) { + throw new RuntimeException("请上传devicerId"); + } + Device device = iDeviceService.selectDeviceByDeviceId(deviceId); + if (device == null) { + throw new RuntimeException("未查到该设备"); + } + DateTime dateTime = DateUtil.date(new Date()); + Map devParams = DevParamsUtils.getDevParams(device.getDevParams()); + //太阳能设备 + String liuliangIds = devParams.get("liuliangIds").toString(); + ThingsModel thingsModel1 = new ThingsModel(); + thingsModel1.setProductId(139L); + List liuliangModels = thingsModelService.selectThingsModelList(thingsModel1); + liuliangModels.sort(Comparator.comparing(ThingsModel::getModelOrder)); + List> list = new ArrayList<>(); + if (StringUtils.isNotEmpty(liuliangIds)) { + Device taiyangnengDevice = deviceMapper.selectDeviceByDeviceId(Long.parseLong(liuliangIds)); + List deviceLogs = logService.selectDeviceLogList(new DeviceLog() {{ + setSerialNumber(taiyangnengDevice.getSerialNumber()); + setBeginTime(DateUtil.beginOfDay(DateUtil.offsetDay(dateTime, -1)).toString()); + setEndTime(DateUtil.endOfDay(dateTime).toString()); + }}); + Map> taiyangnengCollect = deviceLogs.stream().sorted(Comparator + .comparing(DeviceLog::getCreateTime, Comparator + .nullsFirst(Comparator.naturalOrder())).reversed()).collect(Collectors.groupingBy(t -> t.getIdentity())); + for (ThingsModel thingsModel : liuliangModels) { + HashMap hashMap = new HashMap() {{ + put("upType", 0); + put("identifier", 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")) { + hashMap.put("unit", parse.get("unit")); + } + } + + if (hashMap.size() > 1) { + List deviceLogs1 = taiyangnengCollect.get(thingsModel.getIdentifier()); + if (deviceLogs1 != null) { + if (StringUtils.isNotEmpty(deviceLogs1.get(0).getLogValue())) { + if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) == Float.parseFloat(deviceLogs1.get(1).getLogValue())) { + hashMap.put("upType", 1); + } else if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) < Float.parseFloat(deviceLogs1.get(1).getLogValue())) { + hashMap.put("upType", -1); + } + hashMap.put("value", deviceLogs1.get(0).getLogValue()); + } else { + hashMap.put("value", "--"); + hashMap.put("upType", 0); + } + + } + } else if (hashMap.size() > 0) { + List deviceLogs2 = taiyangnengCollect.get(thingsModel.getIdentifier()); + if (deviceLogs2 != null) { + hashMap.put("value", deviceLogs2.get(0).getLogValue()); + } + } + list.add(hashMap); + } + } else { + for (ThingsModel thingsModel : liuliangModels) { + HashMap hashMap = new HashMap() {{ + put("upType", 0); + put("identifier", thingsModel.getIdentifier()); + put("unit", ""); + put("value", 0); + put("name", thingsModel.getModelName()); + }}; + list.add(hashMap); + } + } + return list; + } + @Override public CommonResult cmdDevices(CmdHaiWeiDto cmdHaiWeiDto) { String url = "https://cloud.haiwell.com/api/project/machine/datagroup/setTagsValue"; diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/service/gis/impl/GisDeviceServiceImpl.java b/fastbee-open-api/src/main/java/com/fastbee/data/service/gis/impl/GisDeviceServiceImpl.java index cfbac92..e0d8c10 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/service/gis/impl/GisDeviceServiceImpl.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/service/gis/impl/GisDeviceServiceImpl.java @@ -107,7 +107,6 @@ public class GisDeviceServiceImpl implements IGisDeviceService { return deviceListVo; } - //todo 需要修改安防版和水电双计设备实时数据 @Override public Object getRealTimeDataByDevicerId(Long deviceId) { HashMap rMap = new HashMap() { diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceServiceImpl.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceServiceImpl.java index b29a5e0..af1d148 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceServiceImpl.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceServiceImpl.java @@ -133,6 +133,9 @@ public class DeviceServiceImpl implements IDeviceService { @Override public Device selectDeviceByDeviceId(Long deviceId) { Device device = deviceMapper.selectDeviceByDeviceId(deviceId); + if (device == null) { + return null; + } List list = itslValueCache.getCacheDeviceStatus(device.getProductId(), device.getSerialNumber()); if (list != null && list.size() > 0) { // redis中获取设备状态(物模型值) @@ -1600,12 +1603,10 @@ public class DeviceServiceImpl implements IDeviceService { ArrayList> resultList = new ArrayList<>(); devices.setProductId(136L); List deviceList = selectDeviceList(devices); - for (Device device : deviceList) { HashMap itemMap = new HashMap<>(); resultList.add(itemMap); Integer integer = 0; - itemMap.put("device",device); if (device.getStatus() != null) { if (device.getStatus().equals(4)) { @@ -1613,7 +1614,6 @@ public class DeviceServiceImpl implements IDeviceService { } } itemMap.put("online",integer); - } return resultList; } diff --git a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaWatereleRecordServiceImpl.java b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaWatereleRecordServiceImpl.java index 137d85b..f0f498c 100644 --- a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaWatereleRecordServiceImpl.java +++ b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaWatereleRecordServiceImpl.java @@ -202,9 +202,9 @@ public class MaWatereleRecordServiceImpl implements IMaWatereleRecordService List time = new ArrayList<>(); List sumFlow = new ArrayList<>(); List sumEle = new ArrayList<>(); - HashMap sumFlowtMap = new HashMap<>(); - sumFlowtMap.put("name", "累计水量"); - sumFlowtMap.put("unit", "m³"); +// HashMap sumFlowtMap = new HashMap<>(); +// sumFlowtMap.put("name", "累计水量"); +// sumFlowtMap.put("unit", "m³"); HashMap sumEletMap = new HashMap<>(); sumEletMap.put("name", "累计电量"); sumEletMap.put("unit", "度"); @@ -213,11 +213,11 @@ public class MaWatereleRecordServiceImpl implements IMaWatereleRecordService sumFlow.add(record.getSumflow()); sumEle.add(record.getSumele()); } - sumFlowtMap.put("time", time); - sumFlowtMap.put("data", sumFlow); +// sumFlowtMap.put("time", time); +// sumFlowtMap.put("data", sumFlow); sumEletMap.put("time", time); sumEletMap.put("data", sumEle); - list.add(sumFlowtMap); +// list.add(sumFlowtMap); list.add(sumEletMap); // map.put("time", time); // map.put("sumFlow", sumFlow);