From 47a00e60e8367b5782416b21d6fe28881285e74e Mon Sep 17 00:00:00 2001 From: wyw <373811525@qq.com> Date: Tue, 13 Aug 2024 14:44:08 +0800 Subject: [PATCH 01/29] =?UTF-8?q?=E5=AD=97=E5=85=B8=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=B8=AD=E6=96=87=E8=8E=B7=E5=8F=96label?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fastbee/system/service/impl/SysDictTypeServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysDictTypeServiceImpl.java b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysDictTypeServiceImpl.java index bec8922..667aa33 100644 --- a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysDictTypeServiceImpl.java +++ b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysDictTypeServiceImpl.java @@ -246,7 +246,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService break; case ZH_CN: for (SysDictData data : list) { - data.setDictLabel(data.getDictLabel_zh_CN()); + data.setDictLabel(data.getDictLabel()); } break; } From c4a03a4d44a1f26b4bade3708f9daab689a6b783 Mon Sep 17 00:00:00 2001 From: wyw <373811525@qq.com> Date: Tue, 13 Aug 2024 19:19:18 +0800 Subject: [PATCH 02/29] =?UTF-8?q?getRealTimeDataByDevicerId=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=95=B0=E6=8D=AE=E7=AC=AC=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gis/impl/GisDeviceServiceImpl.java | 165 ++++++++++++------ .../iot/service/impl/DeviceServiceImpl.java | 1 + .../service/impl/ThingsModelServiceImpl.java | 2 +- 3 files changed, 114 insertions(+), 54 deletions(-) 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 6c9fb18..6ca07e6 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 @@ -54,7 +54,9 @@ public class GisDeviceServiceImpl implements IGisDeviceService { @Override public GisDeviceListVo totalAndList(Device device) { - List productEntities = productMapper.selectProductList(new Product()); + Product product = new Product(); + product.setProductId(136L); + List productEntities = productMapper.selectProductList(product); Long userId = SecurityUtils.getUserId(); List productContainDeviceListVos = new ArrayList<>(); int count = 0; @@ -99,8 +101,7 @@ public class GisDeviceServiceImpl implements IGisDeviceService { @Override public Object getRealTimeDataByDevicerId(Long deviceId) { - HashMap rMap = new HashMap() { - }; + HashMap rMap = new HashMap() {}; if (deviceId == null) { throw new RuntimeException("请上传devicerId"); } @@ -108,62 +109,104 @@ public class GisDeviceServiceImpl implements IGisDeviceService { if (device == null) { throw new RuntimeException("未查到该设备"); } - ThingsModel thingsModel1 = new ThingsModel(); - thingsModel1.setProductId(device.getProductId()); - List thingsModelEntities = thingsModelService.selectThingsModelList(thingsModel1); -// List thingsModelValueItems = deviceInfoCacheService.getDeviceInfoCache(device.getDeviceId()); -// List thingsModelValueItems = deviceInfoCacheService.getCacheDeviceStatus(device.getProductId(), -// device.getSerialNumber()); DateTime dateTime = DateUtil.date(new Date()); - List deviceLogsAll = new ArrayList<>(); - List deviceLogs = logService.selectDeviceLogList(new DeviceLog() {{ - setSerialNumber(device.getSerialNumber()); - setBeginTime(DateUtil.beginOfDay(DateUtil.offsetDay(dateTime, -1)).toString()); - setEndTime(DateUtil.endOfDay(dateTime).toString()); - }}); - if (deviceLogs != null) { - deviceLogsAll.addAll(deviceLogs); - } - - Map> collect = deviceLogsAll.stream().sorted(Comparator - .comparing(DeviceLog::getCreateTime, Comparator - .nullsFirst(Comparator.naturalOrder())).reversed()).collect(Collectors.groupingBy(t -> t.getIdentity())); - for (ThingsModel thingsModel : thingsModelEntities) { - HashMap hashMap = new HashMap() {{ - put("upType", 0); - put("identifier", thingsModel.getIdentifier()); - put("unit", ""); - put("value", 0); - put("name", thingsModel.getModelName()); - }}; -// {"max": 100, "min": 0, "step": 1, "type": "decimal", "unit": "m/s"} - 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 = collect.get(thingsModel.getIdentifier()); - if (deviceLogs1 != null) { - 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); + Map devParams = getDevParams(device); + //太阳能设备 + String taiyangnengIds = devParams.get("taiyangnIds").toString(); + ThingsModel thingsModel1 = new ThingsModel(); + thingsModel1.setProductId(138L); + List taiyangnengModels = thingsModelService.selectThingsModelList(thingsModel1); +// HashMap taiyangnengMap = new HashMap() {}; + if (StringUtils.isNotEmpty(taiyangnengIds)) { + Device taiyangnengDevice = deviceMapper.selectDeviceByDeviceId(Long.parseLong(taiyangnengIds)); + 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 : taiyangnengModels) { + 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")); } - hashMap.put("value", deviceLogs1.get(0).getLogValue()); } - } else if (hashMap.size() > 0) { - List deviceLogs2 = collect.get(thingsModel.getIdentifier()); - if (deviceLogs2 != null) { - hashMap.put("value", deviceLogs2.get(0).getLogValue()); + + 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()); + } } + rMap.put(thingsModel.getIdentifier(), hashMap); + } + }else{ + for (ThingsModel thingsModel : taiyangnengModels){ + HashMap hashMap = new HashMap() {{ + put("upType", 0); + put("identifier", thingsModel.getIdentifier()); + put("unit", ""); + put("value", 0); + put("name", thingsModel.getModelName()); + }}; + rMap.put(thingsModel.getIdentifier(), hashMap); } - rMap.put(thingsModel.getIdentifier(), hashMap); } + //安防信息 + String anfangIds = devParams.get("anfangIds").toString(); + HashMap hashMap = new HashMap() {{ + put("upType", 0); + put("identifier", "xiangmen"); + put("unit", ""); + put("value", 0);//0=正常,1=箱门振动,2=箱门打开 + put("name", "箱门状态"); + }}; + rMap.put("xiangmen",hashMap); + //机井信息 + HashMap hashMap1 = new HashMap() {{ + put("upType", 0); + put("identifier", "sumFlow"); + put("unit", "m³"); + put("value", 0); + put("name", "累计用水量"); + }}; + rMap.put("sumFlow",hashMap1); + HashMap hashMap2 = new HashMap() {{ + put("upType", 0); + put("identifier", "sumEle"); + put("unit", "度"); + put("value", 0); + put("name", "累计用电量"); + }}; + rMap.put("sumEle",hashMap2); return rMap; } @@ -257,4 +300,20 @@ public class GisDeviceServiceImpl implements IGisDeviceService { } + public Map getDevParams(Device device) { + Map devData = new HashMap<>(); + try{ + Object devParams = com.alibaba.fastjson.JSON.parse(device.getDevParams()); //先转换成Object + List> Params = (List>) devParams; + if (Params != null) { + for (Map param : Params) { + devData.put(param.get("key").toString(), param.get("value").toString()); + } + } + }catch (Exception exception){ + } + + return devData; + } + } 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 23743ec..086efe9 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 @@ -1600,6 +1600,7 @@ public class DeviceServiceImpl implements IDeviceService { @Override public List> devicePointInfo(Device devices) { ArrayList> resultList = new ArrayList<>(); + devices.setProductId(136L); List deviceList = selectDeviceList(devices); for (Device device : deviceList) { diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ThingsModelServiceImpl.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ThingsModelServiceImpl.java index 3c02273..9ab6ac6 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ThingsModelServiceImpl.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ThingsModelServiceImpl.java @@ -88,7 +88,7 @@ public class ThingsModelServiceImpl implements IThingsModelService { */ @Override public ThingsModel selectSingleThingsModel(ThingsModel model) { - model.setLanguage(SecurityUtils.getLanguage()); +// model.setLanguage(SecurityUtils.getLanguage()); return thingsModelMapper.selectSingleThingsModel(model); } From 71069adb85f739fa44dfa09a87395e2110facc7c Mon Sep 17 00:00:00 2001 From: wyw <373811525@qq.com> Date: Tue, 13 Aug 2024 19:37:22 +0800 Subject: [PATCH 03/29] =?UTF-8?q?/gis/device/getDeviceLogCurves=E7=94=B5?= =?UTF-8?q?=E9=87=8F=E5=92=8C=E6=B0=B4=E9=87=8F=E6=8A=98=E7=BA=BF=E5=9B=BE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gis/impl/GisDeviceServiceImpl.java | 38 ++++++++++++------- .../resources/mapper/iot/ProductMapper.xml | 1 + .../waterele/MaWatereleRecordMapper.xml | 1 + 3 files changed, 26 insertions(+), 14 deletions(-) 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 6ca07e6..f374aa5 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 @@ -18,6 +18,8 @@ import com.fastbee.iot.domain.ThingsModel; import com.fastbee.iot.mapper.DeviceMapper; import com.fastbee.iot.mapper.ProductMapper; import com.fastbee.iot.service.*; +import com.fastbee.waterele.domain.MaWatereleRecord; +import com.fastbee.waterele.service.IMaWatereleRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @@ -47,6 +49,9 @@ public class GisDeviceServiceImpl implements IGisDeviceService { @Autowired private IThingsModelService thingsModelService; + @Autowired + private IMaWatereleRecordService watereleRecordService; + public GisDeviceServiceImpl(@Qualifier("deviceMapper") DeviceMapper deviceMapper, @Qualifier("productMapper") ProductMapper productMapper) { this.deviceMapper = deviceMapper; this.productMapper = productMapper; @@ -220,21 +225,26 @@ public class GisDeviceServiceImpl implements IGisDeviceService { if (device == null) { throw new RuntimeException("未查到该设备"); } -// List alertList = getAlertListForDevice(deviceId, device.getProductId()); -// List waterLevelAlert = new ArrayList<>(); -// List rainfallAlert = new ArrayList<>(); -// -// if (!alertList.isEmpty()) { -// alertList.forEach(alert -> parseAlert(alert, waterLevelAlert, rainfallAlert)); -// } - Map sumFlow = getDataList(device, "dataSumFlow"); - Map insFlow = getDataList(device, "dataInsFlow"); + //获取累计水量和累计电量的前20条数据记录 + MaWatereleRecord watereleRecord = new MaWatereleRecord(); + watereleRecord.setDevSn(device.getSerialNumber()); + List maWatereleRecords = watereleRecordService.selectMaWatereleRecordList(watereleRecord); + if(maWatereleRecords.size() > 20){ + maWatereleRecords = maWatereleRecords.subList(0, 20); + } + maWatereleRecords.sort(Comparator.comparing(MaWatereleRecord::getCreateTime)); + ArrayList sumFlow = new ArrayList<>(); + ArrayList sumEle = new ArrayList<>(); + ArrayList time = new ArrayList<>(); + for (MaWatereleRecord record : maWatereleRecords) { + time.add(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,record.getCreateTime())); + sumFlow.add(record.getSumflow()); + sumEle.add(record.getSumele()); + } Map rMap = new HashMap<>(); - rMap.put("time", insFlow.get("time")); - rMap.put("sumFlow", sumFlow.get("data")); - rMap.put("insFlow", insFlow.get("data")); -// rMap.put("sumFlowAlert", waterLevelAlert); -// rMap.put("insFlowAlert", rainfallAlert); + rMap.put("time", time); + rMap.put("sumFlow", sumFlow); + rMap.put("sumEle", sumEle); return rMap; } diff --git a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/ProductMapper.xml b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/ProductMapper.xml index 6efbe6a..6b64299 100644 --- a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/ProductMapper.xml +++ b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/ProductMapper.xml @@ -70,6 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and p.tenant_id = #{tenantId} + and p.product_id = #{productId} and p.product_name like concat('%', #{productName}, '%') and p.category_name like concat('%', #{categoryName}, '%') and p.status = #{status} diff --git a/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaWatereleRecordMapper.xml b/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaWatereleRecordMapper.xml index 06f3aab..02ecc2d 100644 --- a/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaWatereleRecordMapper.xml +++ b/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaWatereleRecordMapper.xml @@ -52,6 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and areaCode = #{areacode} and action = #{action} + order by create_time desc From 5272ca1570b60fc4944eb295ddcd4ed3fb9e56fe Mon Sep 17 00:00:00 2001 From: wyw <373811525@qq.com> Date: Tue, 13 Aug 2024 21:37:47 +0800 Subject: [PATCH 08/29] =?UTF-8?q?GIS=E8=AE=BE=E5=A4=87=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E7=94=A8=E6=B0=B4=E7=94=A8=E7=94=B5=E7=9A=84=E6=8A=98=E7=BA=BF?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devicedetail/DeviceDetailController.java | 3 ++ .../waterele/MaWatereleRecordController.java | 46 +++++++++++-------- .../impl/DeviceDetailServiceImpl.java | 1 - .../service/IMaWatereleRecordService.java | 6 +++ .../impl/MaWatereleRecordServiceImpl.java | 23 +++++++++- .../waterele/MaWatereleRecordMapper.xml | 6 +++ 6 files changed, 62 insertions(+), 23 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 f99ac6b..b6f2cc5 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 @@ -47,6 +47,9 @@ public class DeviceDetailController extends BaseController { } + + + /** * 查询灌溉记录 * @param maWatereleRecordDto 传参 diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaWatereleRecordController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaWatereleRecordController.java index bcf8a61..1ad333b 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaWatereleRecordController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaWatereleRecordController.java @@ -1,6 +1,7 @@ package com.fastbee.data.controller.waterele; import java.util.List; +import java.util.Map; import javax.servlet.http.HttpServletResponse; import io.swagger.annotations.Api; @@ -33,32 +34,41 @@ import com.fastbee.common.core.page.TableDataInfo; @RestController @RequestMapping("/waterele/watereleRecord") @Api(tags = "水电双计数据记录") -public class MaWatereleRecordController extends BaseController -{ +public class MaWatereleRecordController extends BaseController { @Autowired private IMaWatereleRecordService maWatereleRecordService; -/** - * 查询水电双计数据记录列表 - */ -@PreAuthorize("@ss.hasPermi('waterele:watereleRecord:list')") -@GetMapping("/list") -@ApiOperation("查询水电双计数据记录列表") - public TableDataInfo list(MaWatereleRecord maWatereleRecord) - { + /** + * 查询水电双计数据记录列表 + */ + @PreAuthorize("@ss.hasPermi('waterele:watereleRecord:list')") + @GetMapping("/list") + @ApiOperation("查询水电双计数据记录列表") + public TableDataInfo list(MaWatereleRecord maWatereleRecord) { startPage(); List list = maWatereleRecordService.selectMaWatereleRecordList(maWatereleRecord); return getDataTable(list); } + /** + * 查询水电双计数据记录echart + */ + @PreAuthorize("@ss.hasPermi('waterele:watereleRecord:echart')") + @GetMapping("/echart") + @ApiOperation("查询水电双计数据记录echart") + public Map echart(MaWatereleRecord maWatereleRecord) { + Map map = maWatereleRecordService.chartData(maWatereleRecord); + return success(map); + } + + /** * 导出水电双计数据记录列表 */ @ApiOperation("导出水电双计数据记录列表") @PreAuthorize("@ss.hasPermi('waterele:watereleRecord:export')") @PostMapping("/export") - public void export(HttpServletResponse response, MaWatereleRecord maWatereleRecord) - { + public void export(HttpServletResponse response, MaWatereleRecord maWatereleRecord) { List list = maWatereleRecordService.selectMaWatereleRecordList(maWatereleRecord); ExcelUtil util = new ExcelUtil(MaWatereleRecord.class); util.exportExcel(response, list, "水电双计数据记录数据"); @@ -70,8 +80,7 @@ public class MaWatereleRecordController extends BaseController @PreAuthorize("@ss.hasPermi('waterele:watereleRecord:query')") @GetMapping(value = "/{id}") @ApiOperation("获取水电双计数据记录详细信息") - public AjaxResult getInfo(@PathVariable("id") Long id) - { + public AjaxResult getInfo(@PathVariable("id") Long id) { return success(maWatereleRecordService.selectMaWatereleRecordById(id)); } @@ -81,8 +90,7 @@ public class MaWatereleRecordController extends BaseController @PreAuthorize("@ss.hasPermi('waterele:watereleRecord:add')") @PostMapping @ApiOperation("新增水电双计数据记录") - public AjaxResult add(@RequestBody MaWatereleRecord maWatereleRecord) - { + public AjaxResult add(@RequestBody MaWatereleRecord maWatereleRecord) { return toAjax(maWatereleRecordService.insertMaWatereleRecord(maWatereleRecord)); } @@ -92,8 +100,7 @@ public class MaWatereleRecordController extends BaseController @PreAuthorize("@ss.hasPermi('waterele:watereleRecord:edit')") @PutMapping @ApiOperation("修改水电双计数据记录") - public AjaxResult edit(@RequestBody MaWatereleRecord maWatereleRecord) - { + public AjaxResult edit(@RequestBody MaWatereleRecord maWatereleRecord) { return toAjax(maWatereleRecordService.updateMaWatereleRecord(maWatereleRecord)); } @@ -103,8 +110,7 @@ public class MaWatereleRecordController extends BaseController @PreAuthorize("@ss.hasPermi('waterele:watereleRecord:remove')") @DeleteMapping("/{ids}") @ApiOperation("删除水电双计数据记录") - public AjaxResult remove(@PathVariable Long[] ids) - { + public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(maWatereleRecordService.deleteMaWatereleRecordByIds(ids)); } } 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 c324ed2..10ed663 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 @@ -112,5 +112,4 @@ public class DeviceDetailServiceImpl implements IDeviceDetailService { - } diff --git a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaWatereleRecordService.java b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaWatereleRecordService.java index fa80dbf..3c0d403 100644 --- a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaWatereleRecordService.java +++ b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaWatereleRecordService.java @@ -1,6 +1,8 @@ package com.fastbee.waterele.service; import java.util.List; +import java.util.Map; + import com.fastbee.waterele.domain.MaWatereleRecord; /** @@ -58,4 +60,8 @@ public interface IMaWatereleRecordService * @return 结果 */ public int deleteMaWatereleRecordById(Long id); + + Map chartData(MaWatereleRecord maWatereleRecord); + + } 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 9f9cdb0..6c4310d 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 @@ -1,6 +1,7 @@ package com.fastbee.waterele.service.impl; -import java.util.List; +import java.util.*; + import com.fastbee.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -15,7 +16,7 @@ import com.fastbee.waterele.service.IMaWatereleRecordService; * @date 2024-08-12 */ @Service -public class MaWatereleRecordServiceImpl implements IMaWatereleRecordService +public class MaWatereleRecordServiceImpl implements IMaWatereleRecordService { @Autowired private MaWatereleRecordMapper maWatereleRecordMapper; @@ -93,4 +94,22 @@ public class MaWatereleRecordServiceImpl implements IMaWatereleRecordService { return maWatereleRecordMapper.deleteMaWatereleRecordById(id); } + + @Override + public Map chartData(MaWatereleRecord maWatereleRecord) { + Map map = new HashMap(); + List maWatereleRecords = maWatereleRecordMapper.selectMaWatereleRecordList(maWatereleRecord); + List time = new ArrayList<>(); + List sumFlow = new ArrayList<>(); + List sumEle = new ArrayList<>(); + for (MaWatereleRecord record : maWatereleRecords) { + time.add(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, record.getCreateTime())); + sumFlow.add(record.getSumflow()); + sumEle.add(record.getSumele()); + } + map.put("time", time); + map.put("sumFlow", sumFlow); + map.put("sumEle", sumEle); + return map; + } } diff --git a/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaWatereleRecordMapper.xml b/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaWatereleRecordMapper.xml index 02ecc2d..70a0b2b 100644 --- a/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaWatereleRecordMapper.xml +++ b/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaWatereleRecordMapper.xml @@ -51,6 +51,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and cardId = #{cardid} and areaCode = #{areacode} and action = #{action} + + AND date_format(create_time ,'%y%m%d%H%i%s') >= date_format(#{params.beginTime},'%y%m%d%H%i%s') + + + AND date_format(create_time ,'%y%m%d%H%i%s') <= date_format(#{params.endTime},'%y%m%d%H%i%s') + order by create_time desc From 84500495f1ee360ffbd5442154c241d72eb5d58d Mon Sep 17 00:00:00 2001 From: wuyw <373811525@qq.com> Date: Wed, 14 Aug 2024 07:17:19 +0800 Subject: [PATCH 09/29] =?UTF-8?q?=E7=94=A8=E6=B0=B4=E7=94=A8=E7=94=B5?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../waterele/MaWatereleRecordController.java | 5 ++-- .../service/IMaWatereleRecordService.java | 3 ++- .../impl/MaWatereleRecordServiceImpl.java | 23 +++++++++++++++---- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaWatereleRecordController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaWatereleRecordController.java index 1ad333b..bb7f3fd 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaWatereleRecordController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaWatereleRecordController.java @@ -1,5 +1,6 @@ package com.fastbee.data.controller.waterele; +import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; @@ -57,8 +58,8 @@ public class MaWatereleRecordController extends BaseController { @GetMapping("/echart") @ApiOperation("查询水电双计数据记录echart") public Map echart(MaWatereleRecord maWatereleRecord) { - Map map = maWatereleRecordService.chartData(maWatereleRecord); - return success(map); + ArrayList list = maWatereleRecordService.chartData(maWatereleRecord); + return success(list); } diff --git a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaWatereleRecordService.java b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaWatereleRecordService.java index 3c0d403..15f5ac0 100644 --- a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaWatereleRecordService.java +++ b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaWatereleRecordService.java @@ -1,5 +1,6 @@ package com.fastbee.waterele.service; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -61,7 +62,7 @@ public interface IMaWatereleRecordService */ public int deleteMaWatereleRecordById(Long id); - Map chartData(MaWatereleRecord maWatereleRecord); + ArrayList chartData(MaWatereleRecord maWatereleRecord); } 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 6c4310d..4a18793 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 @@ -96,20 +96,33 @@ public class MaWatereleRecordServiceImpl implements IMaWatereleRecordService } @Override - public Map chartData(MaWatereleRecord maWatereleRecord) { + public ArrayList chartData(MaWatereleRecord maWatereleRecord) { Map map = new HashMap(); + ArrayList list = new ArrayList<>(); List maWatereleRecords = maWatereleRecordMapper.selectMaWatereleRecordList(maWatereleRecord); List time = new ArrayList<>(); List sumFlow = new ArrayList<>(); List sumEle = new ArrayList<>(); + HashMap sumFlowtMap = new HashMap<>(); + sumFlowtMap.put("name", "累计水量"); + sumFlowtMap.put("unit", "m³"); + HashMap sumEletMap = new HashMap<>(); + sumEletMap.put("name", "累计电量"); + sumEletMap.put("unit", "度"); for (MaWatereleRecord record : maWatereleRecords) { time.add(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, record.getCreateTime())); sumFlow.add(record.getSumflow()); sumEle.add(record.getSumele()); } - map.put("time", time); - map.put("sumFlow", sumFlow); - map.put("sumEle", sumEle); - return map; + sumFlowtMap.put("time", time); + sumFlowtMap.put("data", sumFlow); + sumEletMap.put("time", time); + sumEletMap.put("data", sumEle); + list.add(sumFlowtMap); + list.add(sumEletMap); +// map.put("time", time); +// map.put("sumFlow", sumFlow); +// map.put("sumEle", sumEle); + return list; } } From 1869db087444c774d189a9abb0edcda74ec07ace Mon Sep 17 00:00:00 2001 From: wuyw <373811525@qq.com> Date: Wed, 14 Aug 2024 08:00:36 +0800 Subject: [PATCH 10/29] =?UTF-8?q?=E7=AE=B1=E9=97=A8=E6=89=93=E5=BC=80?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devicedetail/DeviceDetailController.java | 17 +++++++++++----- .../devicedetail/IDeviceDetailService.java | 6 +++++- .../impl/DeviceDetailServiceImpl.java | 20 ++++++++++++++++++- 3 files changed, 36 insertions(+), 7 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 b6f2cc5..0129411 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 @@ -1,13 +1,13 @@ package com.fastbee.data.controller.devicedetail; -import com.alibaba.fastjson2.JSONObject; import com.fastbee.common.core.controller.BaseController; import com.fastbee.common.core.domain.AjaxResult; +import com.fastbee.common.core.domain.CommonResult; import com.fastbee.common.model.vo.iot.QueryLogVo; -import com.fastbee.common.utils.StringUtils; import com.fastbee.data.service.devicedetail.IDeviceDetailService; import com.fastbee.iot.domain.Device; -import com.fastbee.iot.model.DeviceHistoryParam; +import com.fastbee.iot.model.haiwei.CmdHaiWeiVo; +import com.fastbee.iot.model.haiwei.dto.CmdHaiWeiDto; import com.fastbee.waterele.domain.MaWatereleRecord; import com.fastbee.waterele.domain.dto.MaGuangaiRecordDto; import com.fastbee.waterele.domain.dto.MaWatereleRecordDto; @@ -15,10 +15,8 @@ import com.fastbee.xunjian.domain.XjInspectionRecords; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; -import java.util.HashMap; import java.util.List; @Api(tags = "设备详情数据") @@ -112,6 +110,15 @@ public class DeviceDetailController extends BaseController { return AjaxResult.success(list); } + @ApiOperation("箱门打开控制") + @PostMapping("/hwcmd") + public CommonResult cmdDevices(@RequestBody CmdHaiWeiDto cmdHwDto) { + return deviceDetailService.cmdDevices(cmdHwDto); + } + + + + 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 e0d7b35..ce3a978 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 @@ -1,14 +1,16 @@ package com.fastbee.data.service.devicedetail; +import com.fastbee.common.core.domain.CommonResult; import com.fastbee.common.model.vo.iot.QueryLogVo; import com.fastbee.iot.domain.Device; +import com.fastbee.iot.model.haiwei.CmdHaiWeiVo; +import com.fastbee.iot.model.haiwei.dto.CmdHaiWeiDto; import com.fastbee.waterele.domain.MaWatereleRecord; import com.fastbee.waterele.domain.dto.MaGuangaiRecordDto; import com.fastbee.waterele.domain.dto.MaWatereleRecordDto; import com.fastbee.xunjian.domain.XjInspectionRecords; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; public interface IDeviceDetailService { @@ -27,4 +29,6 @@ public interface IDeviceDetailService { ArrayList gongdianChart(QueryLogVo queryLogVo); List xunjianRecord(QueryLogVo queryLogVo); + + CommonResult cmdDevices(CmdHaiWeiDto cmdHaiWeiDto); } 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 10ed663..589da5d 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 @@ -1,11 +1,15 @@ package com.fastbee.data.service.devicedetail.impl; +import com.fastbee.common.core.domain.CommonResult; import com.fastbee.common.model.vo.iot.QueryLogVo; import com.fastbee.common.utils.DevParamsUtils; +import com.fastbee.common.utils.StringUtils; import com.fastbee.data.service.devicedetail.IDeviceDetailService; import com.fastbee.iot.domain.Device; -import com.fastbee.iot.domain.ThingsModel; +import com.fastbee.iot.haiwei.service.HaiWeiService; import com.fastbee.iot.mapper.DeviceMapper; +import com.fastbee.iot.model.haiwei.CmdHaiWeiVo; +import com.fastbee.iot.model.haiwei.dto.CmdHaiWeiDto; import com.fastbee.iot.service.IDeviceService; import com.fastbee.iot.service.IThingsModelService; import com.fastbee.waterele.domain.MaWatereleRecord; @@ -33,6 +37,8 @@ public class DeviceDetailServiceImpl implements IDeviceDetailService { private XjInspectionRoutesMapper xjInspectionRoutesMapper; @Autowired private XjInspectionRecordsMapper xjInspectionRecordsMapper; + @Autowired + private HaiWeiService haiWeiService; public DeviceDetailServiceImpl(DeviceMapper deviceMapper) { this.deviceMapper = deviceMapper; } @@ -110,6 +116,18 @@ public class DeviceDetailServiceImpl implements IDeviceDetailService { return new ArrayList<>(); } + @Override + public CommonResult cmdDevices(CmdHaiWeiDto cmdHaiWeiDto) { + String url = "https://cloud.haiwell.com/api/project/machine/datagroup/setTagsValue"; + Device deviceEntity = deviceMapper.selectDeviceByDeviceId(cmdHaiWeiDto.getDeviceId()); + Map devParams1 = DevParamsUtils.getDevParams(deviceEntity.getDevParams()); + String guimenIds = devParams1.get("guimenIds").toString(); + if (StringUtils.isEmpty(guimenIds)) { + return null; + } + cmdHaiWeiDto.setDeviceId(Long.valueOf(guimenIds)); + return haiWeiService.cmdDevices(cmdHaiWeiDto); + } } From 6922c0d0535f1725b0568f7eea654cffb757c07e Mon Sep 17 00:00:00 2001 From: wyw <373811525@qq.com> Date: Wed, 14 Aug 2024 15:16:47 +0800 Subject: [PATCH 11/29] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E5=AE=89=E9=98=B2=E9=A1=B5=E9=9D=A2=E6=95=B0=E6=8D=AE=E7=AC=AC?= =?UTF-8?q?=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devicedetail/DeviceDetailController.java | 15 +++++++++- .../fastbee/data/domain/vo/AnfangInfoVo.java | 14 ++++++++++ .../devicedetail/IDeviceDetailService.java | 3 ++ .../impl/DeviceDetailServiceImpl.java | 28 +++++++++++++++++++ 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 fastbee-open-api/src/main/java/com/fastbee/data/domain/vo/AnfangInfoVo.java 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 b6f2cc5..1eb289d 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 @@ -112,7 +112,20 @@ public class DeviceDetailController extends BaseController { return AjaxResult.success(list); } - + /** + * 获取安防信息 + * @param deviceId 传参 + * @return com.fastbee.common.core.domain.AjaxResult + */ + @ApiOperation("获取安防信息") + @GetMapping("/anfangInfo") + public AjaxResult anfangInfo(Long deviceId) + { + if (null == deviceId || deviceId == 0L) { + return AjaxResult.error("请传入设备号"); + } + return AjaxResult.success(deviceDetailService.anfangInfo(deviceId)); + } } diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/domain/vo/AnfangInfoVo.java b/fastbee-open-api/src/main/java/com/fastbee/data/domain/vo/AnfangInfoVo.java new file mode 100644 index 0000000..ba7982b --- /dev/null +++ b/fastbee-open-api/src/main/java/com/fastbee/data/domain/vo/AnfangInfoVo.java @@ -0,0 +1,14 @@ +package com.fastbee.data.domain.vo; + +import com.fastbee.iot.domain.Device; +import lombok.Data; + +/** + * 安防信息 + */ +@Data +public class AnfangInfoVo { + + private Device jiankongDevice; + +} 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 e0d7b35..e77564a 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 @@ -1,6 +1,7 @@ package com.fastbee.data.service.devicedetail; import com.fastbee.common.model.vo.iot.QueryLogVo; +import com.fastbee.data.domain.vo.AnfangInfoVo; import com.fastbee.iot.domain.Device; import com.fastbee.waterele.domain.MaWatereleRecord; import com.fastbee.waterele.domain.dto.MaGuangaiRecordDto; @@ -27,4 +28,6 @@ public interface IDeviceDetailService { ArrayList gongdianChart(QueryLogVo queryLogVo); List xunjianRecord(QueryLogVo queryLogVo); + + AnfangInfoVo anfangInfo(Long deviceId); } 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 10ed663..2fd3b40 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 @@ -2,6 +2,8 @@ package com.fastbee.data.service.devicedetail.impl; import com.fastbee.common.model.vo.iot.QueryLogVo; import com.fastbee.common.utils.DevParamsUtils; +import com.fastbee.common.utils.StringUtils; +import com.fastbee.data.domain.vo.AnfangInfoVo; import com.fastbee.data.service.devicedetail.IDeviceDetailService; import com.fastbee.iot.domain.Device; import com.fastbee.iot.domain.ThingsModel; @@ -110,6 +112,32 @@ public class DeviceDetailServiceImpl implements IDeviceDetailService { return new ArrayList<>(); } + @Override + public AnfangInfoVo anfangInfo(Long deviceId) { + //获取监控设备信息 + Device device = iDeviceService.selectDeviceByDeviceId(deviceId); + if (device == null) { + throw new RuntimeException("未查到该设备"); + } + AnfangInfoVo anfangInfoVo = new AnfangInfoVo(); + //获取设备参数 + Map devParams = DevParamsUtils.getDevParams(device.getDevParams()); + //安防设备 + String jiankongIds = devParams.get("jiankongIds").toString(); + if(StringUtils.isNotEmpty(jiankongIds)){ + Device jiankongDevice = iDeviceService.selectDeviceByDeviceId(Long.parseLong(jiankongIds)); + anfangInfoVo.setJiankongDevice(jiankongDevice); + } + //安防设备 + String anfangIds = devParams.get("anfangIds").toString(); + //获取设备安防状态 + if(StringUtils.isNotEmpty(anfangIds)){ + Device anfangDevice = iDeviceService.selectDeviceByDeviceId(Long.parseLong(anfangIds)); + //获取当前安防告警状态 + } + //获取安防历史记录 + return null; + } } From 7356e2d19954e31aaa94edc375c9bc37220b928f Mon Sep 17 00:00:00 2001 From: wyw <373811525@qq.com> Date: Wed, 14 Aug 2024 15:47:24 +0800 Subject: [PATCH 12/29] =?UTF-8?q?1=E3=80=81=E8=AE=BE=E5=A4=87=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E5=AE=89=E9=98=B2=E9=A1=B5=E9=9D=A2=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E7=89=88=202=E3=80=81=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E7=9B=91=E6=8E=A7=E8=8E=B7=E5=8F=96=E8=BF=9E=E6=8E=A5=E5=9C=B0?= =?UTF-8?q?=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/controller/DeviceController.java | 116 +++++++-------- .../fastbee/data/domain/vo/AnfangInfoVo.java | 12 +- .../impl/DeviceDetailServiceImpl.java | 34 ++++- .../iot/domain/JiankongDeviceParam.java | 50 +++++++ .../iot/haikang/HaikangYingshiApi.java | 132 ++++++++++++++++++ .../com/fastbee/iot/haikang/UrlConstant.java | 28 ++++ .../fastbee/iot/service/IDeviceService.java | 3 +- .../iot/service/impl/DeviceServiceImpl.java | 78 ++++++++++- 8 files changed, 382 insertions(+), 71 deletions(-) create mode 100644 fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/JiankongDeviceParam.java create mode 100644 fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/haikang/HaikangYingshiApi.java create mode 100644 fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/haikang/UrlConstant.java diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/DeviceController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/DeviceController.java index d62a924..a50c480 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/DeviceController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/DeviceController.java @@ -14,6 +14,7 @@ import com.fastbee.common.utils.SecurityUtils; import com.fastbee.common.utils.StringUtils; import com.fastbee.common.utils.poi.ExcelUtil; import com.fastbee.iot.domain.Device; +import com.fastbee.iot.domain.JiankongDeviceParam; import com.fastbee.iot.model.DeviceAssignmentVO; import com.fastbee.iot.model.DeviceImportVO; import com.fastbee.iot.model.DeviceRelateUserInput; @@ -48,8 +49,7 @@ import java.util.stream.Collectors; @Api(tags = "设备管理") @RestController @RequestMapping("/iot/device") -public class DeviceController extends BaseController -{ +public class DeviceController extends BaseController { @Autowired private IDeviceService deviceService; @@ -63,8 +63,7 @@ public class DeviceController extends BaseController @PreAuthorize("@ss.hasPermi('iot:device:list')") @GetMapping("/list") @ApiOperation("设备分页列表") - public TableDataInfo list(Device device) - { + public TableDataInfo list(Device device) { startPage(); // 限制当前用户机构 if (null == device.getDeptId()) { @@ -79,8 +78,7 @@ public class DeviceController extends BaseController @PreAuthorize("@ss.hasPermi('iot:device:list')") @GetMapping("/unAuthlist") @ApiOperation("设备分页列表") - public TableDataInfo unAuthlist(Device device) - { + public TableDataInfo unAuthlist(Device device) { startPage(); if (null == device.getDeptId()) { device.setDeptId(getLoginUser().getDeptId()); @@ -94,8 +92,7 @@ public class DeviceController extends BaseController @PreAuthorize("@ss.hasPermi('iot:device:list')") @GetMapping("/listByGroup") @ApiOperation("查询分组可添加设备分页列表") - public TableDataInfo listByGroup(Device device) - { + public TableDataInfo listByGroup(Device device) { startPage(); LoginUser loginUser = getLoginUser(); if (null == loginUser.getDeptId()) { @@ -114,8 +111,7 @@ public class DeviceController extends BaseController @PreAuthorize("@ss.hasPermi('iot:device:list')") @GetMapping("/shortList") @ApiOperation("设备分页简短列表") - public TableDataInfo shortList(Device device) - { + public TableDataInfo shortList(Device device) { startPage(); LoginUser loginUser = getLoginUser(); if (null == loginUser.getDeptId()) { @@ -126,7 +122,7 @@ public class DeviceController extends BaseController if (null == device.getDeptId()) { device.setDeptId(getLoginUser().getDeptId()); } - if (Objects.isNull(device.getTenantId())){ + if (Objects.isNull(device.getTenantId())) { device.setTenantId(getLoginUser().getUserId()); } if (null == device.getShowChild()) { @@ -141,8 +137,7 @@ public class DeviceController extends BaseController @PreAuthorize("@ss.hasPermi('iot:device:list')") @GetMapping("/all") @ApiOperation("查询所有设备简短列表") - public TableDataInfo allShortList() - { + public TableDataInfo allShortList() { Device device = new Device(); device.setDeptId(SecurityUtils.getLoginUser().getUser().getDeptId()); device.setShowChild(true); @@ -156,8 +151,7 @@ public class DeviceController extends BaseController @Log(title = "设备", businessType = BusinessType.EXPORT) @PostMapping("/export") @ApiOperation("导出设备") - public void export(HttpServletResponse response, Device device) - { + public void export(HttpServletResponse response, Device device) { List list = deviceService.selectDeviceList(device); ExcelUtil util = new ExcelUtil(Device.class); util.exportExcel(response, list, "设备数据"); @@ -169,20 +163,19 @@ public class DeviceController extends BaseController @PreAuthorize("@ss.hasPermi('iot:device:query')") @GetMapping(value = "/{deviceId}") @ApiOperation("获取设备详情") - public AjaxResult getInfo(@PathVariable("deviceId") Long deviceId) - { + public AjaxResult getInfo(@PathVariable("deviceId") Long deviceId) { Device device = deviceService.selectDeviceByDeviceId(deviceId); // 判断当前用户是否有设备分享权限 (设备所属机构管理员和设备所属用户有权限) LoginUser loginUser = getLoginUser(); List roles = loginUser.getUser().getRoles(); //判断当前用户是否为设备所属机构管理员 - if(roles.stream().anyMatch(a-> "admin".equals(a.getRoleKey()))){ + if (roles.stream().anyMatch(a -> "admin".equals(a.getRoleKey()))) { device.setIsOwner(1); } else { //判断当前用户是否是设备所属用户 - if (Objects.equals(device.getTenantId(), loginUser.getUserId())){ + if (Objects.equals(device.getTenantId(), loginUser.getUserId())) { device.setIsOwner(1); - }else { + } else { device.setIsOwner(0); } } @@ -195,8 +188,7 @@ public class DeviceController extends BaseController @PreAuthorize("@ss.hasPermi('iot:device:query')") @GetMapping(value = "/synchronization/{serialNumber}") @ApiOperation("设备数据同步") - public AjaxResult deviceSynchronization(@PathVariable("serialNumber") String serialNumber) - { + public AjaxResult deviceSynchronization(@PathVariable("serialNumber") String serialNumber) { return AjaxResult.success(messagePublish.deviceSynchronization(serialNumber)); } @@ -206,8 +198,7 @@ public class DeviceController extends BaseController @PreAuthorize("@ss.hasPermi('iot:device:query')") @GetMapping(value = "/getDeviceBySerialNumber/{serialNumber}") @ApiOperation("根据设备编号获取设备详情") - public AjaxResult getInfoBySerialNumber(@PathVariable("serialNumber") String serialNumber) - { + public AjaxResult getInfoBySerialNumber(@PathVariable("serialNumber") String serialNumber) { return AjaxResult.success(deviceService.selectDeviceBySerialNumber(serialNumber)); } @@ -217,8 +208,7 @@ public class DeviceController extends BaseController @PreAuthorize("@ss.hasPermi('iot:device:query')") @GetMapping(value = "/statistic") @ApiOperation("获取设备统计信息") - public AjaxResult getDeviceStatistic() - { + public AjaxResult getDeviceStatistic() { return AjaxResult.success(deviceService.selectDeviceStatistic()); } @@ -228,8 +218,7 @@ public class DeviceController extends BaseController @PreAuthorize("@ss.hasPermi('iot:device:query')") @GetMapping(value = "/runningStatus") @ApiOperation("获取设备详情和运行状态") - public AjaxResult getRunningStatusInfo(Long deviceId) - { + public AjaxResult getRunningStatusInfo(Long deviceId) { return AjaxResult.success(deviceService.selectDeviceRunningStatusByDeviceId(deviceId)); } @@ -240,8 +229,7 @@ public class DeviceController extends BaseController @Log(title = "添加设备", businessType = BusinessType.INSERT) @PostMapping @ApiOperation("添加设备") - public AjaxResult add(@RequestBody Device device) - { + public AjaxResult add(@RequestBody Device device) { return AjaxResult.success(deviceService.insertDevice(device)); } @@ -253,12 +241,11 @@ public class DeviceController extends BaseController @Log(title = "设备关联用户", businessType = BusinessType.UPDATE) @PostMapping("/relateUser") @ApiOperation("终端-设备关联用户") - public AjaxResult relateUser(@RequestBody DeviceRelateUserInput deviceRelateUserInput) - { - if(deviceRelateUserInput.getUserId()==0 || deviceRelateUserInput.getUserId()==null){ + public AjaxResult relateUser(@RequestBody DeviceRelateUserInput deviceRelateUserInput) { + if (deviceRelateUserInput.getUserId() == 0 || deviceRelateUserInput.getUserId() == null) { return AjaxResult.error(MessageUtils.message("device.user.id.null")); } - if(deviceRelateUserInput.getDeviceNumberAndProductIds()==null || deviceRelateUserInput.getDeviceNumberAndProductIds().size()==0){ + if (deviceRelateUserInput.getDeviceNumberAndProductIds() == null || deviceRelateUserInput.getDeviceNumberAndProductIds().size() == 0) { return AjaxResult.error(MessageUtils.message("device.product.id.null")); } return deviceService.deviceRelateUser(deviceRelateUserInput); @@ -271,8 +258,7 @@ public class DeviceController extends BaseController @Log(title = "修改设备", businessType = BusinessType.UPDATE) @PutMapping @ApiOperation("修改设备") - public AjaxResult edit(@RequestBody Device device) - { + public AjaxResult edit(@RequestBody Device device) { return deviceService.updateDevice(device); } @@ -283,9 +269,8 @@ public class DeviceController extends BaseController @Log(title = "重置设备状态", businessType = BusinessType.UPDATE) @PutMapping("/reset/{serialNumber}") @ApiOperation("重置设备状态") - public AjaxResult resetDeviceStatus(@PathVariable String serialNumber) - { - Device device=new Device(); + public AjaxResult resetDeviceStatus(@PathVariable String serialNumber) { + Device device = new Device(); device.setSerialNumber(serialNumber); return toAjax(deviceService.resetDeviceStatus(device.getSerialNumber())); } @@ -295,7 +280,7 @@ public class DeviceController extends BaseController */ @PreAuthorize("@ss.hasPermi('iot:device:remove')") @Log(title = "删除设备", businessType = BusinessType.DELETE) - @DeleteMapping("/{deviceIds}") + @DeleteMapping("/{deviceIds}") @ApiOperation("批量删除设备") public AjaxResult remove(@PathVariable Long[] deviceIds) throws SchedulerException { return deviceService.deleteDeviceByDeviceId(deviceIds[0]); @@ -307,27 +292,27 @@ public class DeviceController extends BaseController @PreAuthorize("@ss.hasPermi('iot:device:add')") @GetMapping("/generator") @ApiOperation("生成设备编号") - public AjaxResult generatorDeviceNum(Integer type){ - return AjaxResult.success(MessageUtils.message("operate.success"),deviceService.generationDeviceNum(type)); + public AjaxResult generatorDeviceNum(Integer type) { + return AjaxResult.success(MessageUtils.message("operate.success"), deviceService.generationDeviceNum(type)); } /** * 获取设备MQTT连接参数 + * * @param deviceId 设备主键id * @return */ @PreAuthorize("@ss.hasPermi('iot:device:query')") @GetMapping("/getMqttConnectData") @ApiOperation("获取设备MQTT连接参数") - public AjaxResult getMqttConnectData(Long deviceId){ + public AjaxResult getMqttConnectData(Long deviceId) { return AjaxResult.success(deviceService.getMqttConnectData(deviceId)); } @PreAuthorize("@ss.hasPermi('iot:device:add')") @ApiOperation("下载设备导入模板") @PostMapping("/uploadTemplate") - public void uploadTemplate(HttpServletResponse response, @RequestParam(name = "type") Integer type) - { + public void uploadTemplate(HttpServletResponse response, @RequestParam(name = "type") Integer type) { // 1-设备导入;2-设备分配 if (1 == type) { ExcelUtil util = new ExcelUtil<>(DeviceImportVO.class); @@ -342,8 +327,7 @@ public class DeviceController extends BaseController @ApiOperation("批量导入设备") @Log(title = "用户管理", businessType = BusinessType.IMPORT) @PostMapping("/importData") - public AjaxResult importData(@RequestParam("file") MultipartFile file, @RequestParam("productId") Long productId) throws Exception - { + public AjaxResult importData(@RequestParam("file") MultipartFile file, @RequestParam("productId") Long productId) throws Exception { if (null == file) { return error(MessageUtils.message("import.failed.file.null")); } @@ -364,10 +348,7 @@ public class DeviceController extends BaseController @ApiOperation("批量导入分配设备") @Log(title = "用户管理", businessType = BusinessType.IMPORT) @PostMapping("/importAssignmentData") - public AjaxResult importAssignmentData(@RequestParam("file") MultipartFile file, - @RequestParam("productId") Long productId, - @RequestParam("deptId") Long deptId) throws Exception - { + public AjaxResult importAssignmentData(@RequestParam("file") MultipartFile file, @RequestParam("productId") Long productId, @RequestParam("deptId") Long deptId) throws Exception { if (null == file) { return error(MessageUtils.message("import.failed.file.null")); } @@ -386,15 +367,15 @@ public class DeviceController extends BaseController /** * 分配设备 + * * @param deptId 机构id - * @param: deviceIds 设备id字符串 * @return com.fastbee.common.core.domain.AjaxResult + * @param: deviceIds 设备id字符串 */ @PreAuthorize("@ss.hasPermi('iot:device:assignment')") @ApiOperation("分配设备") @PostMapping("/assignment") - public AjaxResult assignment(@RequestParam("deptId") Long deptId, - @RequestParam("deviceIds") String deviceIds) { + public AjaxResult assignment(@RequestParam("deptId") Long deptId, @RequestParam("deviceIds") String deviceIds) { if (null == deptId) { return error(MessageUtils.message("device.dept.id.null")); } @@ -406,14 +387,14 @@ public class DeviceController extends BaseController /** * 回收设备 - * @param: deviceIds 设备id字符串 + * * @return com.fastbee.common.core.domain.AjaxResult + * @param: deviceIds 设备id字符串 */ @PreAuthorize("@ss.hasPermi('iot:device:recovery')") @ApiOperation("回收设备") @PostMapping("/recovery") - public AjaxResult recovery(@RequestParam("deviceIds") String deviceIds, - @RequestParam("recoveryDeptId") Long recoveryDeptId) { + public AjaxResult recovery(@RequestParam("deviceIds") String deviceIds, @RequestParam("recoveryDeptId") Long recoveryDeptId) { if (StringUtils.isEmpty(deviceIds)) { return error("请选择设备"); } @@ -426,8 +407,7 @@ public class DeviceController extends BaseController @PreAuthorize("@ss.hasPermi('iot:device:batchGenerator')") @PostMapping("/batchGenerator") @ApiOperation("批量生成设备编号") - public void batchGeneratorDeviceNum(HttpServletResponse response, - @RequestParam("count") Integer count){ + public void batchGeneratorDeviceNum(HttpServletResponse response, @RequestParam("count") Integer count) { if (count > 200) { throw new ServiceException("最多只能生成200个!"); } @@ -448,8 +428,7 @@ public class DeviceController extends BaseController @PreAuthorize("@ss.hasPermi('iot:device:query')") @GetMapping("/listThingsModel") @ApiOperation("查询变量概况") - public TableDataInfo listThingsModel(Integer pageNum, Integer pageSize, Long deviceId, String modelName, Integer type) - { + public TableDataInfo listThingsModel(Integer pageNum, Integer pageSize, Long deviceId, String modelName, Integer type) { TableDataInfo rspData = new TableDataInfo(); rspData.setCode(HttpStatus.SUCCESS); rspData.setMsg("查询成功"); @@ -497,9 +476,20 @@ public class DeviceController extends BaseController */ @GetMapping("/getDeviceLogAllCurves") @ApiOperation("查询设备历史数据曲线图") - public AjaxResult getDeviceLogAllCurves(Long deviceId,String beginTime ,String endTime) { - ArrayList data = deviceService.getDeviceLogAllCurves(deviceId,beginTime ,endTime); + public AjaxResult getDeviceLogAllCurves(Long deviceId, String beginTime, String endTime) { + ArrayList data = deviceService.getDeviceLogAllCurves(deviceId, beginTime, endTime); return success(data); } + /** + * 获取视频监控 + * + * @param + * @return + */ + @GetMapping("/getvideourl") + public AjaxResult getvideourl(JiankongDeviceParam baseGet) throws Exception { + return AjaxResult.success(deviceService.getvideourl(baseGet)); + } + } diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/domain/vo/AnfangInfoVo.java b/fastbee-open-api/src/main/java/com/fastbee/data/domain/vo/AnfangInfoVo.java index ba7982b..92cbdf9 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/domain/vo/AnfangInfoVo.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/domain/vo/AnfangInfoVo.java @@ -1,14 +1,24 @@ package com.fastbee.data.domain.vo; import com.fastbee.iot.domain.Device; +import com.fastbee.iot.model.anfang.UploadedPhotos; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + /** * 安防信息 */ @Data public class AnfangInfoVo { - + @ApiModelProperty("监控设备") private Device jiankongDevice; + @ApiModelProperty("门状态:0=正常,1=箱门振动,2=箱门打开") + private Integer doorStatus; + @ApiModelProperty("柜门ID,控制柜门开启的设备ID") + private String guimenId; + @ApiModelProperty("安防告警列表") + private ListanfangList; } 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 d5827ad..7c261ca 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 @@ -7,9 +7,11 @@ import com.fastbee.common.utils.StringUtils; import com.fastbee.common.utils.StringUtils; import com.fastbee.data.domain.vo.AnfangInfoVo; import com.fastbee.data.service.devicedetail.IDeviceDetailService; +import com.fastbee.iot.anfang.service.IUploadedPhotosService; import com.fastbee.iot.domain.Device; import com.fastbee.iot.haiwei.service.HaiWeiService; import com.fastbee.iot.mapper.DeviceMapper; +import com.fastbee.iot.model.anfang.UploadedPhotos; import com.fastbee.iot.model.haiwei.CmdHaiWeiVo; import com.fastbee.iot.model.haiwei.dto.CmdHaiWeiDto; import com.fastbee.iot.service.IDeviceService; @@ -24,6 +26,7 @@ import com.fastbee.xunjian.mapper.XjInspectionRoutesMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.xml.crypto.Data; import java.util.*; @Service @@ -41,6 +44,9 @@ public class DeviceDetailServiceImpl implements IDeviceDetailService { private XjInspectionRecordsMapper xjInspectionRecordsMapper; @Autowired private HaiWeiService haiWeiService; + + @Autowired + private IUploadedPhotosService uploadedPhotosService; public DeviceDetailServiceImpl(DeviceMapper deviceMapper) { this.deviceMapper = deviceMapper; } @@ -140,9 +146,33 @@ public class DeviceDetailServiceImpl implements IDeviceDetailService { if(StringUtils.isNotEmpty(anfangIds)){ Device anfangDevice = iDeviceService.selectDeviceByDeviceId(Long.parseLong(anfangIds)); //获取当前安防告警状态 + UploadedPhotos uploadedPhotos = new UploadedPhotos(); + uploadedPhotos.setSn(anfangDevice.getSerialNumber()); + List uploadedPhotos1 = uploadedPhotosService.selectUploadedPhotosList(uploadedPhotos); + int doorStatus = 0;//0=正常,1=箱门振动,2=箱门打开 + if(uploadedPhotos1.size() > 0){ + UploadedPhotos temp = uploadedPhotos1.get(0); + if(new Date().getTime() - temp.getUploadTime().getTime() < 36000000){ + if(temp.getShakeState().equals("1")){ + doorStatus = 1; + } + if(temp.getDoorState().equals("1")){ + doorStatus = 2; + } + } + } + if(uploadedPhotos1.size() > 5){ + uploadedPhotos1 = uploadedPhotos1.subList(0,5); + } + anfangInfoVo.setDoorStatus(doorStatus); + anfangInfoVo.setAnfangList(uploadedPhotos1); } - //获取安防历史记录 - return null; + //安防设备 + String guimenIds = devParams.get("guimenIds").toString(); + if(StringUtils.isNotEmpty(guimenIds)){ + anfangInfoVo.setGuimenId(devParams.get("guimenIds").toString()); + } + return anfangInfoVo; } @Override public CommonResult cmdDevices(CmdHaiWeiDto cmdHaiWeiDto) { diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/JiankongDeviceParam.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/JiankongDeviceParam.java new file mode 100644 index 0000000..12cf7d3 --- /dev/null +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/JiankongDeviceParam.java @@ -0,0 +1,50 @@ +package com.fastbee.iot.domain; + +import lombok.Data; + +/** + * 设备参数设置对象 device_param_config + * + * @author mafa + * @date 2023-08-22 + */ +@Data +public class JiankongDeviceParam +{ + private static final long serialVersionUID = 1L; + + + /** 设备id */ + private Long deviceId; + /** ezopen协议地址的本地录像/云存储录像回放开始时间,示例:2019-12-01 00:00:00 */ + private String startTime; + /** ezopen协议地址的本地录像/云存储录像回放开始时间,示例:2019-12-01 00:00:00 */ + private String stopTime; + /** ezopen协议地址的类型,1-预览,2-本地录像回放,3-云存储录像回放,非必选,默认为1 */ + private String type; + /** ezopen协议地址的设备的视频加密密码 */ + private String code; + /** 流播放协议,1-ezopen、2-hls、3-rtmp、4-flv,默认为1 */ + private String protocol; + + /** 视频清晰度,1-高清(主码流)、2-流畅(子码流) */ + private String quality; + + /** 云台操作命令:0-上,1-下,2-左,3-右,4-左上,5-左下,6-右上,7-右下,8-放大,9-缩小,10-近焦距,11-远焦距 */ + private String direction; + /** 云台操作命令:速度 */ + private String speed; + + /** 云台操作命令:传了一直动 不传移动一格 */ + private String notStop; + + + + + + + + + + +} diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/haikang/HaikangYingshiApi.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/haikang/HaikangYingshiApi.java new file mode 100644 index 0000000..77a34a8 --- /dev/null +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/haikang/HaikangYingshiApi.java @@ -0,0 +1,132 @@ +package com.fastbee.iot.haikang; + +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONObject; + +import java.util.HashMap; +import java.util.Map; + +/** + * 点点控api界面 + */ +public class HaikangYingshiApi { + /** + * @return + */ + public static JSONObject getToken(Map params) { + String url = UrlConstant.getToken;//指定URL + + HashMap headers = new HashMap<>();//存放请求头,可以存放多个请求头 + headers.put("Content-Type", "application/x-www-form-urlencoded"); + String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body(); + JSONObject jsonObject = new JSONObject(result); +// System.out.println("jsonObject = " + jsonObject); +// Map data =null; +// if (jsonObject.get("code").equals("200")) { +// data= (Map) jsonObject.get("data"); +// } + return jsonObject; + } + + /** + * @param params accessToken String 授权过程获取的access_token Y + * deviceSerial String 直播源,例如427734222,均采用英文符号,限制50个 Y + * channelNo Integer 通道号,,非必选,默认为1 N + * code String ezopen协议地址的设备的视频加密密码 N + * expireTime Integer 过期时长,单位秒;针对hls/rtmp设置有效期,相对时间;30秒-720天 N + * protocol Integer 流播放协议,1-ezopen、2-hls、3-rtmp、4-flv,默认为1 N + * quality Integer 视频清晰度,1-高清(主码流)、2-流畅(子码流) N + * startTime String ezopen协议地址的本地录像/云存储录像回放开始时间,示例:2019-12-01 00:00:00 N + * stopTime String ezopen协议地址的本地录像/云存储录像回放开始时间,示例:2019-12-01 00:00:00 N + * type String ezopen协议地址的类型,1-预览,2-本地录像回放,3-云存储录像回放,非必选,默认为1 N + * supportH265 Integer 是否要求播放视频为H265编码格式,1表示需要,0表示不要求 N + * gbchannel String 国标设备的通道编号,视频通道编号ID N + * @return + */ + public static JSONObject getAddress(Map params) { +// accessToken=at.dunwhxt2azk02hcn7phqygsybbw0wv6p&deviceSerial=C78957921&channelNo=1 + String url = UrlConstant.address;//指定URL + HashMap headers = new HashMap<>();//存放请求头,可以存放多个请求头 + headers.put("Content-Type", "application/x-www-form-urlencoded"); + String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body(); + JSONObject jsonObject = new JSONObject(result); +// System.out.println("result = " + result); +// Map data =(Map) jsonObject.get("data"); + return jsonObject; + } + + /** + * @param params accessToken String 授权过程获取的access_token Y + * deviceSerial String 设备序列号,存在英文字母的设备序列号,字母需为大写 Y + * channelNo int 通道号 Y + * direction int 操作命令:0-上,1-下,2-左,3-右,4-左上,5-左下,6-右上,7-右下,8-放大,9-缩小,10-近焦距,11-远焦距 Y + * speed int 云台速度:0-慢,1-适中,2-快,海康设备参数不可为0 + * @return + */ + public static JSONObject startMove(Map params) { +// accessToken=at.dunwhxt2azk02hcn7phqygsybbw0wv6p&deviceSerial=C78957921&channelNo=1 + String url = UrlConstant.startyuntai;//指定URL + HashMap headers = new HashMap<>();//存放请求头,可以存放多个请求头 + headers.put("Content-Type", "application/x-www-form-urlencoded"); + String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body(); + JSONObject jsonObject = new JSONObject(result); + + return jsonObject; + } + + /** + * @param params accessToken String 授权过程获取的access_token Y + * deviceSerial String 设备序列号,存在英文字母的设备序列号,字母需为大写 Y + * channelNo int 通道号 Y + * direction int 操作命令:0-上,1-下,2-左,3-右,4-左上,5-左下,6-右上,7-右下,8-放大,9-缩小,10-近焦距,11-远焦距 Y + * @return + */ + public static JSONObject stopMove(Map params) { +// accessToken=at.dunwhxt2azk02hcn7phqygsybbw0wv6p&deviceSerial=C78957921&channelNo=1 + String url = UrlConstant.stopyuntai;//指定URL + HashMap headers = new HashMap<>();//存放请求头,可以存放多个请求头 + headers.put("Content-Type", "application/x-www-form-urlencoded"); + String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body(); + JSONObject jsonObject = new JSONObject(result); + + return jsonObject; + } + + + /** + * @param params accessToken String 授权过程获取的access_token Y + * deviceSerial String 设备序列号,存在英文字母的设备序列号,字母需为大写 Y + * channelNo int 通道号 Y + * direction int 操作命令:0-上,1-下,2-左,3-右,4-左上,5-左下,6-右上,7-右下,8-放大,9-缩小,10-近焦距,11-远焦距 Y + * @return + */ + public static JSONObject getDeviceInfo(Map params) { +// accessToken=at.dunwhxt2azk02hcn7phqygsybbw0wv6p&deviceSerial=C78957921&channelNo=1 + String url = UrlConstant.deviceInfo;//指定URL + HashMap headers = new HashMap<>();//存放请求头,可以存放多个请求头 + headers.put("Content-Type", "application/x-www-form-urlencoded"); + String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body(); + JSONObject jsonObject = new JSONObject(result); + + return jsonObject; + } + + /** + * @param params accessToken String 授权过程获取的access_token Y + * deviceSerial String 直播源,例如427734222,均采用英文符号,限制50个 Y + * channelNo Integer 通道号,,非必选,默认为1 N + * @return + */ + public static JSONObject capture(Map params) { +// accessToken=at.dunwhxt2azk02hcn7phqygsybbw0wv6p&deviceSerial=C78957921&channelNo=1 + String url = UrlConstant.capture;//指定URL + HashMap headers = new HashMap<>();//存放请求头,可以存放多个请求头 + headers.put("Content-Type", "application/x-www-form-urlencoded"); + String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body(); + JSONObject jsonObject = new JSONObject(result); +// System.out.println("result = " + result); +// Map data =(Map) jsonObject.get("data"); + return jsonObject; + } + +} diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/haikang/UrlConstant.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/haikang/UrlConstant.java new file mode 100644 index 0000000..b2c3907 --- /dev/null +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/haikang/UrlConstant.java @@ -0,0 +1,28 @@ +package com.fastbee.iot.haikang; + +/** + * 点点控 + */ +public class UrlConstant { + + public static String appKey = "be85054cf4504710861fad77ec4e4af9"; + public static String appSecret = "104f39e29f9847e5d819a99c1c32fc88"; + + //获取 token + public static String getToken = "https://open.ys7.com/api/lapp/token/get"; + //获取 直播地址 + public static String address = "https://open.ys7.com/api/lapp/v2/live/address/get"; + //开始云台 + public static String startyuntai = "https://open.ys7.com/api/lapp/device/ptz/start"; + //停止云台 + public static String stopyuntai = "https://open.ys7.com/api/lapp/device/ptz/stop"; + //设备信息 + public static String deviceInfo = "https://open.ys7.com/api/lapp/device/info"; + //设备抓拍图片 + public static String capture = "https://open.ys7.com/api/lapp/device/capture"; + //关闭设备视频加密 + public static String deviceEncryptOff = "https://open.ys7.com/api/lapp/device/encrypt/off"; + + +} + diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IDeviceService.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IDeviceService.java index 8602997..13efba3 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IDeviceService.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IDeviceService.java @@ -6,6 +6,7 @@ import com.fastbee.common.core.thingsModel.ThingsModelSimpleItem; import com.fastbee.common.enums.DeviceStatus; import com.fastbee.iot.domain.Device; import com.fastbee.iot.domain.DeviceGroup; +import com.fastbee.iot.domain.JiankongDeviceParam; import com.fastbee.iot.model.*; import com.fastbee.iot.model.ThingsModels.ThingsModelShadow; import com.fastbee.iot.model.ThingsModels.ThingsModelValueItem; @@ -334,5 +335,5 @@ public interface IDeviceService ArrayList getDeviceLogAllCurves(Long deviceId, String beginTime, String endTime); - + Map getvideourl(JiankongDeviceParam jiankongDeviceParam); } 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 7b17d0e..0d86811 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 @@ -16,15 +16,13 @@ import com.fastbee.common.core.thingsModel.ThingsModelSimpleItem; import com.fastbee.common.core.thingsModel.ThingsModelValuesInput; import com.fastbee.common.enums.*; import com.fastbee.common.exception.ServiceException; -import com.fastbee.common.utils.CaculateUtils; -import com.fastbee.common.utils.DateUtils; -import com.fastbee.common.utils.SecurityUtils; -import com.fastbee.common.utils.StringUtils; +import com.fastbee.common.utils.*; import com.fastbee.common.utils.http.HttpUtils; import com.fastbee.common.utils.ip.IpUtils; import com.fastbee.common.utils.json.JsonUtils; import com.fastbee.iot.cache.ITSLCache; import com.fastbee.iot.domain.*; +import com.fastbee.iot.haikang.HaikangYingshiApi; import com.fastbee.iot.mapper.*; import com.fastbee.iot.model.*; import com.fastbee.iot.model.ThingsModelItem.Datatype; @@ -1668,4 +1666,76 @@ public class DeviceServiceImpl implements IDeviceService { } + @Override + public Map getvideourl(JiankongDeviceParam jiankongDeviceParam) { + if (jiankongDeviceParam.getDeviceId() == null) { + throw new RuntimeException("请上传设备id"); + } + Device device = selectDeviceByDeviceId(jiankongDeviceParam.getDeviceId()); + + if (device == null) { + throw new RuntimeException("设备未找到"); + } + Map devData = DevParamsUtils.getDevParams(device.getDevParams()); + if (devData.get("appKey") == null) { + throw new RuntimeException("未绑定设备参数appKey"); + } + if (devData.get("appSecret") == null) { + throw new RuntimeException("未绑定设备参数appSecret"); + } + if (devData.get("channelNo") == null) { + throw new RuntimeException("未绑定设备参数channelNo"); + } + Map map = new HashMap<>();//存放参数 + map.put("appKey", devData.get("appKey")); + map.put("appSecret", devData.get("appSecret")); + cn.hutool.json.JSONObject token = HaikangYingshiApi.getToken(map); + if (token != null && token.get("code").equals("200")) { + Map params = new HashMap<>(); + // accessToken=at.dunwhxt2azk02hcn7phqygsybbw0wv6p&deviceSerial=C78957921&channelNo=1 + token = (cn.hutool.json.JSONObject) token.get("data"); + params.put("accessToken", token.get("accessToken")); + params.put("deviceSerial", device.getSerialNumber()); + + if (StringUtils.isNotEmpty(jiankongDeviceParam.getStartTime())) { + params.put("startTime", jiankongDeviceParam.getStartTime()); + } + if (StringUtils.isNotEmpty(jiankongDeviceParam.getStopTime())) { + params.put("stopTime", jiankongDeviceParam.getStopTime()); + } + if (StringUtils.isNotEmpty(jiankongDeviceParam.getType())) { + params.put("type", jiankongDeviceParam.getType()); + } + if (StringUtils.isNotEmpty(jiankongDeviceParam.getCode())) { + params.put("code", jiankongDeviceParam.getCode()); + } + if (StringUtils.isNotEmpty(jiankongDeviceParam.getProtocol())) { + params.put("protocol", jiankongDeviceParam.getProtocol()); + } + if (StringUtils.isNotEmpty(jiankongDeviceParam.getQuality())) { + params.put("quality", jiankongDeviceParam.getQuality()); + } + + cn.hutool.json.JSONObject response = HaikangYingshiApi.getAddress(params); + if (response != null && response.get("code").equals("200")) { + Map data = (cn.hutool.json.JSONObject) response.get("data"); + Map reMap = new HashMap<>(); + reMap.put("url", data.get("url")); + reMap.put("devName", device.getDeviceName()); + reMap.put("accessToken", token.get("accessToken")); + reMap.put("id", device.getDeviceId()); + reMap.put("status", device.getStatus() == null || device.getStatus() == 4 ? "离线" : "在线"); + return reMap; + } else { + throw new RuntimeException(response.get("msg").toString()); + } + + } else { + } + + return null; + } + + + } From e75bef3f48db4b0ad5cfd28bf73595f0d9b96b72 Mon Sep 17 00:00:00 2001 From: wyw <373811525@qq.com> Date: Wed, 14 Aug 2024 18:43:53 +0800 Subject: [PATCH 13/29] =?UTF-8?q?1=E3=80=81=E5=A2=9E=E5=8A=A0=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=9C=AA=E5=85=85=E5=80=BC=E7=9A=84=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=92=8C=E5=85=85=E5=80=BC=E6=88=90=E5=8A=9F=E5=8F=8D=E9=A6=88?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/config/SecurityConfig.java | 3 +- .../waterele/MaRechargerecordController.java | 53 +++++++++------ .../waterele/domain/MaRechargerecord.java | 66 ++++++++++++------- .../waterele/domain/vo/UnchargeAmountVo.java | 15 +++++ .../mapper/MaRechargerecordMapper.java | 2 + .../service/IMaRechargerecordService.java | 15 +++++ .../impl/MaRechargerecordServiceImpl.java | 65 ++++++++++++------ .../waterele/MaRechargerecordMapper.xml | 15 ++++- 8 files changed, 168 insertions(+), 66 deletions(-) create mode 100644 fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/domain/vo/UnchargeAmountVo.java diff --git a/fastbee-framework/src/main/java/com/fastbee/framework/config/SecurityConfig.java b/fastbee-framework/src/main/java/com/fastbee/framework/config/SecurityConfig.java index 393e257..dba933c 100644 --- a/fastbee-framework/src/main/java/com/fastbee/framework/config/SecurityConfig.java +++ b/fastbee-framework/src/main/java/com/fastbee/framework/config/SecurityConfig.java @@ -111,7 +111,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { // 对于登录login 注册register 验证码captchaImage 允许匿名访问 .antMatchers("/login", "/register", "/captchaImage", "/iot/tool/register", "/iot/tool/ntp", "/iot/tool/download", "/iot/tool/mqtt/auth", "/iot/tool/mqtt/authv5", "/iot/tool/mqtt/webhook", "/iot/tool/mqtt/webhookv5", "/auth/**/**", - "/wechat/mobileLogin", "/wechat/miniLogin", "/wechat/wxBind/callback").permitAll() + "/wechat/mobileLogin", "/wechat/miniLogin", "/wechat/wxBind/callback","/waterele/rechargerecord/queryUnchargeAmount", + "/waterele/rechargerecord/rechargeReply").permitAll() .antMatchers("/zlmhook/**").permitAll() .antMatchers("/ruleengine/rulemanager/**").permitAll() .antMatchers("/goview/sys/login", "/goview/project/getData").permitAll() diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaRechargerecordController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaRechargerecordController.java index a83be33..79f1142 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaRechargerecordController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaRechargerecordController.java @@ -3,6 +3,7 @@ package com.fastbee.data.controller.waterele; import java.util.List; import javax.servlet.http.HttpServletResponse; +import com.fastbee.waterele.domain.vo.UnchargeAmountVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.security.access.prepost.PreAuthorize; @@ -33,19 +34,17 @@ import com.fastbee.common.core.page.TableDataInfo; @RestController @RequestMapping("/waterele/rechargerecord") @Api(tags = "充值记录") -public class MaRechargerecordController extends BaseController -{ +public class MaRechargerecordController extends BaseController { @Autowired private IMaRechargerecordService maRechargerecordService; -/** - * 查询充值记录列表 - */ -@PreAuthorize("@ss.hasPermi('waterele:rechargerecord:list')") -@GetMapping("/list") -@ApiOperation("查询充值记录列表") - public TableDataInfo list(MaRechargerecord maRechargerecord) - { + /** + * 查询充值记录列表 + */ + @PreAuthorize("@ss.hasPermi('waterele:rechargerecord:list')") + @GetMapping("/list") + @ApiOperation("查询充值记录列表") + public TableDataInfo list(MaRechargerecord maRechargerecord) { startPage(); List list = maRechargerecordService.selectMaRechargerecordList(maRechargerecord); return getDataTable(list); @@ -57,8 +56,7 @@ public class MaRechargerecordController extends BaseController @ApiOperation("导出充值记录列表") @PreAuthorize("@ss.hasPermi('waterele:rechargerecord:export')") @PostMapping("/export") - public void export(HttpServletResponse response, MaRechargerecord maRechargerecord) - { + public void export(HttpServletResponse response, MaRechargerecord maRechargerecord) { List list = maRechargerecordService.selectMaRechargerecordList(maRechargerecord); ExcelUtil util = new ExcelUtil(MaRechargerecord.class); util.exportExcel(response, list, "充值记录数据"); @@ -70,8 +68,7 @@ public class MaRechargerecordController extends BaseController @PreAuthorize("@ss.hasPermi('waterele:rechargerecord:query')") @GetMapping(value = "/{id}") @ApiOperation("获取充值记录详细信息") - public AjaxResult getInfo(@PathVariable("id") Long id) - { + public AjaxResult getInfo(@PathVariable("id") Long id) { return success(maRechargerecordService.selectMaRechargerecordById(id)); } @@ -81,8 +78,7 @@ public class MaRechargerecordController extends BaseController @PreAuthorize("@ss.hasPermi('waterele:rechargerecord:add')") @PostMapping @ApiOperation("新增充值记录") - public AjaxResult add(@RequestBody MaRechargerecord maRechargerecord) - { + public AjaxResult add(@RequestBody MaRechargerecord maRechargerecord) { return toAjax(maRechargerecordService.insertMaRechargerecord(maRechargerecord)); } @@ -92,8 +88,7 @@ public class MaRechargerecordController extends BaseController @PreAuthorize("@ss.hasPermi('waterele:rechargerecord:edit')") @PutMapping @ApiOperation("修改充值记录") - public AjaxResult edit(@RequestBody MaRechargerecord maRechargerecord) - { + public AjaxResult edit(@RequestBody MaRechargerecord maRechargerecord) { return toAjax(maRechargerecordService.updateMaRechargerecord(maRechargerecord)); } @@ -103,8 +98,26 @@ public class MaRechargerecordController extends BaseController @PreAuthorize("@ss.hasPermi('waterele:rechargerecord:remove')") @DeleteMapping("/{ids}") @ApiOperation("删除充值记录") - public AjaxResult remove(@PathVariable Long[] ids) - { + public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(maRechargerecordService.deleteMaRechargerecordByIds(ids)); } + + //通过卡ID和区域号查询未充值的记录,返回总充值金额 +// @PreAuthorize("@ss.hasPermi('waterele:rechargerecord:queryUnchargeAmount')") + @GetMapping("/queryUnchargeAmount") + @ApiOperation("查询未充值的记录") + public AjaxResult queryUnchargeAmount(MaRechargerecord maRechargerecord) { + UnchargeAmountVo amount = maRechargerecordService.queryUnchargeAmount(maRechargerecord); + return AjaxResult.success(amount); + } + + + //充值成功后提交充值成功接口,修改卡ID、区域号对应的未充值记录 +// @PreAuthorize("@ss.hasPermi('waterele:rechargerecord:rechargeReply')") + @GetMapping("/rechargeReply") + @ApiOperation("充值成功反馈") + public AjaxResult rechargeReply(MaRechargerecord maRechargerecord) { + String msg = maRechargerecordService.rechargeReply(maRechargerecord); + return AjaxResult.success(msg); + } } diff --git a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/domain/MaRechargerecord.java b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/domain/MaRechargerecord.java index aa62def..1332be9 100644 --- a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/domain/MaRechargerecord.java +++ b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/domain/MaRechargerecord.java @@ -15,44 +15,64 @@ import com.fastbee.common.core.domain.BaseEntity; * @author kerwincui * @date 2024-08-12 */ -@ApiModel(value = "MaRechargerecord",description = "充值记录 ma_rechargerecord") +@ApiModel(value = "MaRechargerecord", description = "充值记录 ma_rechargerecord") @Data @EqualsAndHashCode(callSuper = true) -public class MaRechargerecord extends BaseEntity - { -private static final long serialVersionUID = 1L; +public class MaRechargerecord extends BaseEntity { + private static final long serialVersionUID = 1L; - /** 序号 */ + /** + * 序号 + */ private Long id; - /** 余额 */ - @Excel(name = "余额") - @ApiModelProperty("余额") + /** + * 余额 + */ + @Excel(name = "余额") + @ApiModelProperty("余额") private String balance; - /** 充值金额 */ - @Excel(name = "充值金额") - @ApiModelProperty("充值金额") + /** + * 充值金额 + */ + @Excel(name = "充值金额") + @ApiModelProperty("充值金额") private String investval; - /** 卡编号 */ - @Excel(name = "卡编号") - @ApiModelProperty("卡编号") + /** + * 卡编号 + */ + @Excel(name = "卡编号") + @ApiModelProperty("卡编号") private String cardNum; - /** 区域号 */ - @Excel(name = "区域号") - @ApiModelProperty("区域号") + /** + * 区域号 + */ + @Excel(name = "区域号") + @ApiModelProperty("区域号") private String areaCode; - /** 卡ID */ - @Excel(name = "卡ID") - @ApiModelProperty("卡ID") + /** + * 卡ID + */ + @Excel(name = "卡ID") + @ApiModelProperty("卡ID") private String cardId; - /** mcuSn */ - @Excel(name = "mcuSn") - @ApiModelProperty("mcuSn") + /** + * mcuSn + */ + @Excel(name = "mcuSn") + @ApiModelProperty("mcuSn") private String mcusn; + /** + * 充值状态 + */ + @Excel(name = "充值状态") + @ApiModelProperty("充值状态:0=未充值,1=充值成功") + private Integer isRecharge; + } diff --git a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/domain/vo/UnchargeAmountVo.java b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/domain/vo/UnchargeAmountVo.java new file mode 100644 index 0000000..b9c009d --- /dev/null +++ b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/domain/vo/UnchargeAmountVo.java @@ -0,0 +1,15 @@ +package com.fastbee.waterele.domain.vo; + +import lombok.Data; + +@Data +public class UnchargeAmountVo { + //卡编号 + private String cardNum; + //区域号 + private String areaCode; + //充值金额 + private float investVal; + + +} diff --git a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/mapper/MaRechargerecordMapper.java b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/mapper/MaRechargerecordMapper.java index 644470a..85f77bf 100644 --- a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/mapper/MaRechargerecordMapper.java +++ b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/mapper/MaRechargerecordMapper.java @@ -58,4 +58,6 @@ public interface MaRechargerecordMapper * @return 结果 */ public int deleteMaRechargerecordByIds(Long[] ids); + + int updateByCardNumAndAreaCode(MaRechargerecord maRechargerecord); } diff --git a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaRechargerecordService.java b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaRechargerecordService.java index f62b8c5..2d0a2d9 100644 --- a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaRechargerecordService.java +++ b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaRechargerecordService.java @@ -2,6 +2,7 @@ package com.fastbee.waterele.service; import java.util.List; import com.fastbee.waterele.domain.MaRechargerecord; +import com.fastbee.waterele.domain.vo.UnchargeAmountVo; /** * 充值记录Service接口 @@ -58,4 +59,18 @@ public interface IMaRechargerecordService * @return 结果 */ public int deleteMaRechargerecordById(Long id); + + /** + * 获取未充值的总金额 + * @param maRechargerecord + * @return + */ + UnchargeAmountVo queryUnchargeAmount(MaRechargerecord maRechargerecord); + + /** + * 充值成功反馈 + * @param maRechargerecord + * @return + */ + String rechargeReply(MaRechargerecord maRechargerecord); } diff --git a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaRechargerecordServiceImpl.java b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaRechargerecordServiceImpl.java index a1e3b04..d827c0d 100644 --- a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaRechargerecordServiceImpl.java +++ b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaRechargerecordServiceImpl.java @@ -1,7 +1,11 @@ package com.fastbee.waterele.service.impl; +import java.util.Date; import java.util.List; + import com.fastbee.common.utils.DateUtils; +import com.fastbee.common.utils.StringUtils; +import com.fastbee.waterele.domain.vo.UnchargeAmountVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.fastbee.waterele.mapper.MaRechargerecordMapper; @@ -10,87 +14,106 @@ import com.fastbee.waterele.service.IMaRechargerecordService; /** * 充值记录Service业务层处理 - * + * * @author kerwincui * @date 2024-08-12 */ @Service -public class MaRechargerecordServiceImpl implements IMaRechargerecordService -{ +public class MaRechargerecordServiceImpl implements IMaRechargerecordService { @Autowired private MaRechargerecordMapper maRechargerecordMapper; /** * 查询充值记录 - * + * * @param id 充值记录主键 * @return 充值记录 */ @Override - public MaRechargerecord selectMaRechargerecordById(Long id) - { + public MaRechargerecord selectMaRechargerecordById(Long id) { return maRechargerecordMapper.selectMaRechargerecordById(id); } /** * 查询充值记录列表 - * + * * @param maRechargerecord 充值记录 * @return 充值记录 */ @Override - public List selectMaRechargerecordList(MaRechargerecord maRechargerecord) - { + public List selectMaRechargerecordList(MaRechargerecord maRechargerecord) { return maRechargerecordMapper.selectMaRechargerecordList(maRechargerecord); } /** * 新增充值记录 - * + * * @param maRechargerecord 充值记录 * @return 结果 */ @Override - public int insertMaRechargerecord(MaRechargerecord maRechargerecord) - { + public int insertMaRechargerecord(MaRechargerecord maRechargerecord) { maRechargerecord.setCreateTime(DateUtils.getNowDate()); return maRechargerecordMapper.insertMaRechargerecord(maRechargerecord); } /** * 修改充值记录 - * + * * @param maRechargerecord 充值记录 * @return 结果 */ @Override - public int updateMaRechargerecord(MaRechargerecord maRechargerecord) - { + public int updateMaRechargerecord(MaRechargerecord maRechargerecord) { maRechargerecord.setUpdateTime(DateUtils.getNowDate()); return maRechargerecordMapper.updateMaRechargerecord(maRechargerecord); } /** * 批量删除充值记录 - * + * * @param ids 需要删除的充值记录主键 * @return 结果 */ @Override - public int deleteMaRechargerecordByIds(Long[] ids) - { + public int deleteMaRechargerecordByIds(Long[] ids) { return maRechargerecordMapper.deleteMaRechargerecordByIds(ids); } /** * 删除充值记录信息 - * + * * @param id 充值记录主键 * @return 结果 */ @Override - public int deleteMaRechargerecordById(Long id) - { + public int deleteMaRechargerecordById(Long id) { return maRechargerecordMapper.deleteMaRechargerecordById(id); } + + @Override + public UnchargeAmountVo queryUnchargeAmount(MaRechargerecord maRechargerecord) { + maRechargerecord.setIsRecharge(0); + List maRechargerecords = maRechargerecordMapper.selectMaRechargerecordList(maRechargerecord); + float total = 0; + for (MaRechargerecord record : maRechargerecords) { + total += Float.parseFloat(record.getInvestval()); + } + UnchargeAmountVo vo = new UnchargeAmountVo(); + vo.setInvestVal(total); + vo.setCardNum(maRechargerecord.getCardNum()); + vo.setAreaCode(maRechargerecord.getAreaCode()); + return vo; + } + + @Override + public String rechargeReply(MaRechargerecord maRechargerecord) { + if (StringUtils.isNotEmpty(maRechargerecord.getCardNum()) && StringUtils.isNotEmpty(maRechargerecord.getAreaCode())) { + if (maRechargerecord.getIsRecharge() == 1) { + maRechargerecord.setUpdateTime(new Date()); + int count = maRechargerecordMapper.updateByCardNumAndAreaCode(maRechargerecord); + } + } + return "更新成功"; + } } diff --git a/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaRechargerecordMapper.xml b/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaRechargerecordMapper.xml index bbf392f..e1c6b75 100644 --- a/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaRechargerecordMapper.xml +++ b/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaRechargerecordMapper.xml @@ -12,12 +12,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - select id, balance, investVal, card_num, area_code, card_id, mcuSn, create_time, update_time from ma_rechargerecord + select * from ma_rechargerecord @@ -46,6 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" area_code, card_id, mcuSn, + is_recharge, create_time, update_time, @@ -56,6 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{areaCode}, #{cardId}, #{mcusn}, + #{isRecharge}, #{createTime}, #{updateTime}, @@ -70,11 +74,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" area_code = #{areaCode}, card_id = #{cardId}, mcuSn = #{mcusn}, + is_recharge = #{isRecharge}, create_time = #{createTime}, update_time = #{updateTime}, where id = #{id} + + update ma_rechargerecord + + is_recharge = #{isRecharge}, + update_time = #{updateTime}, + + where card_num = #{cardNum} and is_recharge = 0 and area_code = #{areaCode} + delete from ma_rechargerecord where id = #{id} From 58b20a4b8dcc3c132f538b825a9490de4245f51a Mon Sep 17 00:00:00 2001 From: wyw <373811525@qq.com> Date: Wed, 14 Aug 2024 19:04:02 +0800 Subject: [PATCH 14/29] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E5=A4=8D=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=9C=AA=E5=85=85=E5=80=BC=E7=9A=84=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E4=B8=BA0=E6=97=B6=E6=9F=A5=E8=AF=A2=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/controller/waterele/MaRechargerecordController.java | 4 ++-- .../java/com/fastbee/waterele/domain/MaRechargerecord.java | 2 +- .../waterele/service/impl/MaRechargerecordServiceImpl.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaRechargerecordController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaRechargerecordController.java index 79f1142..005e627 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaRechargerecordController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaRechargerecordController.java @@ -108,7 +108,7 @@ public class MaRechargerecordController extends BaseController { @ApiOperation("查询未充值的记录") public AjaxResult queryUnchargeAmount(MaRechargerecord maRechargerecord) { UnchargeAmountVo amount = maRechargerecordService.queryUnchargeAmount(maRechargerecord); - return AjaxResult.success(amount); + return success(amount); } @@ -118,6 +118,6 @@ public class MaRechargerecordController extends BaseController { @ApiOperation("充值成功反馈") public AjaxResult rechargeReply(MaRechargerecord maRechargerecord) { String msg = maRechargerecordService.rechargeReply(maRechargerecord); - return AjaxResult.success(msg); + return success(msg); } } diff --git a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/domain/MaRechargerecord.java b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/domain/MaRechargerecord.java index 1332be9..874bec3 100644 --- a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/domain/MaRechargerecord.java +++ b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/domain/MaRechargerecord.java @@ -72,7 +72,7 @@ public class MaRechargerecord extends BaseEntity { * 充值状态 */ @Excel(name = "充值状态") - @ApiModelProperty("充值状态:0=未充值,1=充值成功") + @ApiModelProperty("充值状态:2=未充值,1=充值成功") private Integer isRecharge; } diff --git a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaRechargerecordServiceImpl.java b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaRechargerecordServiceImpl.java index d827c0d..bc787a0 100644 --- a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaRechargerecordServiceImpl.java +++ b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaRechargerecordServiceImpl.java @@ -93,7 +93,7 @@ public class MaRechargerecordServiceImpl implements IMaRechargerecordService { @Override public UnchargeAmountVo queryUnchargeAmount(MaRechargerecord maRechargerecord) { - maRechargerecord.setIsRecharge(0); + maRechargerecord.setIsRecharge(2); List maRechargerecords = maRechargerecordMapper.selectMaRechargerecordList(maRechargerecord); float total = 0; for (MaRechargerecord record : maRechargerecords) { From c86a631cc58b230986f84914a92d29be815bd0be Mon Sep 17 00:00:00 2001 From: wuyw <373811525@qq.com> Date: Thu, 15 Aug 2024 07:52:19 +0800 Subject: [PATCH 15/29] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=BC=B9=E7=AA=97-?= =?UTF-8?q?=E4=BE=9B=E7=94=B5=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=AE=9E=E6=97=B6=E6=95=B0=E6=8D=AErealData=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E5=AF=B9=E6=8E=A5=E5=8F=A3=E8=BF=9B=E8=A1=8C=E6=8E=92?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devicedetail/DeviceDetailController.java | 6 +- .../devicedetail/IDeviceDetailService.java | 7 ++ .../impl/DeviceDetailServiceImpl.java | 118 ++++++++++++++++-- .../gis/impl/GisDeviceServiceImpl.java | 1 + .../iot/service/impl/DeviceServiceImpl.java | 1 + 5 files changed, 122 insertions(+), 11 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 319c1e0..b301657 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 @@ -89,8 +89,12 @@ public class DeviceDetailController extends BaseController { if (null == queryLogVo.getDeviceId() || queryLogVo.getDeviceId() == 0L) { return AjaxResult.error("请选择设备"); } + //设备历史echart数据 List list = deviceDetailService.gongdianChart(queryLogVo); - return AjaxResult.success(list); + AjaxResult ajaxResult = AjaxResult.success(); + ajaxResult.put("data", list); + ajaxResult.put("realData", deviceDetailService.gongdianRealData(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 a7e2b92..8540b7e 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 @@ -12,6 +12,7 @@ import com.fastbee.waterele.domain.dto.MaWatereleRecordDto; import com.fastbee.xunjian.domain.XjInspectionRecords; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; public interface IDeviceDetailService { @@ -34,4 +35,10 @@ public interface IDeviceDetailService { CommonResult cmdDevices(CmdHaiWeiDto cmdHaiWeiDto); AnfangInfoVo anfangInfo(Long deviceId); + + /** + * 供电实时数据 + * @param queryLogVo + */ + List> gongdianRealData(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 7c261ca..7427b71 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 @@ -1,5 +1,9 @@ package com.fastbee.data.service.devicedetail.impl; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; import com.fastbee.common.core.domain.CommonResult; import com.fastbee.common.model.vo.iot.QueryLogVo; import com.fastbee.common.utils.DevParamsUtils; @@ -9,11 +13,14 @@ import com.fastbee.data.domain.vo.AnfangInfoVo; import com.fastbee.data.service.devicedetail.IDeviceDetailService; import com.fastbee.iot.anfang.service.IUploadedPhotosService; import com.fastbee.iot.domain.Device; +import com.fastbee.iot.domain.DeviceLog; +import com.fastbee.iot.domain.ThingsModel; import com.fastbee.iot.haiwei.service.HaiWeiService; import com.fastbee.iot.mapper.DeviceMapper; import com.fastbee.iot.model.anfang.UploadedPhotos; import com.fastbee.iot.model.haiwei.CmdHaiWeiVo; import com.fastbee.iot.model.haiwei.dto.CmdHaiWeiDto; +import com.fastbee.iot.service.IDeviceLogService; import com.fastbee.iot.service.IDeviceService; import com.fastbee.iot.service.IThingsModelService; import com.fastbee.waterele.domain.MaWatereleRecord; @@ -28,6 +35,7 @@ import org.springframework.stereotype.Service; import javax.xml.crypto.Data; import java.util.*; +import java.util.stream.Collectors; @Service public class DeviceDetailServiceImpl implements IDeviceDetailService { @@ -47,6 +55,10 @@ public class DeviceDetailServiceImpl implements IDeviceDetailService { @Autowired private IUploadedPhotosService uploadedPhotosService; + + @Autowired + private IDeviceLogService logService; + public DeviceDetailServiceImpl(DeviceMapper deviceMapper) { this.deviceMapper = deviceMapper; } @@ -97,6 +109,7 @@ public class DeviceDetailServiceImpl implements IDeviceDetailService { return deviceLogAllCurves; } + @Override public List xunjianRecord(QueryLogVo queryLogVo) { //todo @@ -112,7 +125,7 @@ public class DeviceDetailServiceImpl implements IDeviceDetailService { xjInspectionRoutes.setEngineeringObjectId(deviceId); xjInspectionRoutes.setEngineeringObjectType("1"); List xjInspectionRoutes1 = xjInspectionRoutesMapper.selectXjInspectionRoutesList(xjInspectionRoutes); - if(xjInspectionRoutes1.size() > 0){ + if (xjInspectionRoutes1.size() > 0) { List xjInspectionRecordsList = new ArrayList<>(); XjInspectionRecords xjInspectionRecords = new XjInspectionRecords(); xjInspectionRecords.setInspectionRouteId(xjInspectionRoutes1.get(0).getId()); @@ -136,44 +149,129 @@ public class DeviceDetailServiceImpl implements IDeviceDetailService { Map devParams = DevParamsUtils.getDevParams(device.getDevParams()); //安防设备 String jiankongIds = devParams.get("jiankongIds").toString(); - if(StringUtils.isNotEmpty(jiankongIds)){ + if (StringUtils.isNotEmpty(jiankongIds)) { Device jiankongDevice = iDeviceService.selectDeviceByDeviceId(Long.parseLong(jiankongIds)); anfangInfoVo.setJiankongDevice(jiankongDevice); } //安防设备 String anfangIds = devParams.get("anfangIds").toString(); //获取设备安防状态 - if(StringUtils.isNotEmpty(anfangIds)){ + if (StringUtils.isNotEmpty(anfangIds)) { Device anfangDevice = iDeviceService.selectDeviceByDeviceId(Long.parseLong(anfangIds)); //获取当前安防告警状态 UploadedPhotos uploadedPhotos = new UploadedPhotos(); uploadedPhotos.setSn(anfangDevice.getSerialNumber()); List uploadedPhotos1 = uploadedPhotosService.selectUploadedPhotosList(uploadedPhotos); int doorStatus = 0;//0=正常,1=箱门振动,2=箱门打开 - if(uploadedPhotos1.size() > 0){ + if (uploadedPhotos1.size() > 0) { UploadedPhotos temp = uploadedPhotos1.get(0); - if(new Date().getTime() - temp.getUploadTime().getTime() < 36000000){ - if(temp.getShakeState().equals("1")){ + if (new Date().getTime() - temp.getUploadTime().getTime() < 36000000) { + if (temp.getShakeState().equals("1")) { doorStatus = 1; } - if(temp.getDoorState().equals("1")){ + if (temp.getDoorState().equals("1")) { doorStatus = 2; } } } - if(uploadedPhotos1.size() > 5){ - uploadedPhotos1 = uploadedPhotos1.subList(0,5); + if (uploadedPhotos1.size() > 5) { + uploadedPhotos1 = uploadedPhotos1.subList(0, 5); } anfangInfoVo.setDoorStatus(doorStatus); anfangInfoVo.setAnfangList(uploadedPhotos1); } //安防设备 String guimenIds = devParams.get("guimenIds").toString(); - if(StringUtils.isNotEmpty(guimenIds)){ + if (StringUtils.isNotEmpty(guimenIds)) { anfangInfoVo.setGuimenId(devParams.get("guimenIds").toString()); } return anfangInfoVo; } + + @Override + public List> gongdianRealData(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 taiyangnengIds = devParams.get("taiyangnIds").toString(); + ThingsModel thingsModel1 = new ThingsModel(); + thingsModel1.setProductId(138L); + List taiyangnengModels = thingsModelService.selectThingsModelList(thingsModel1); + taiyangnengModels.sort(Comparator.comparing(ThingsModel::getModelOrder)); + List> list = new ArrayList<>(); + if (StringUtils.isNotEmpty(taiyangnengIds)) { + Device taiyangnengDevice = deviceMapper.selectDeviceByDeviceId(Long.parseLong(taiyangnengIds)); + 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 : taiyangnengModels) { + 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 : taiyangnengModels) { + 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 72a21d6..68f99bf 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 @@ -121,6 +121,7 @@ public class GisDeviceServiceImpl implements IGisDeviceService { ThingsModel thingsModel1 = new ThingsModel(); thingsModel1.setProductId(138L); List taiyangnengModels = thingsModelService.selectThingsModelList(thingsModel1); + taiyangnengModels.sort(Comparator.comparing(ThingsModel::getModelOrder)); if (StringUtils.isNotEmpty(taiyangnengIds)) { Device taiyangnengDevice = deviceMapper.selectDeviceByDeviceId(Long.parseLong(taiyangnengIds)); List deviceLogs = logService.selectDeviceLogList(new DeviceLog() {{ 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 0d86811..b29a5e0 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 @@ -1635,6 +1635,7 @@ public class DeviceServiceImpl implements IDeviceService { kvHashMap.put("beginTime", beginTime); kvHashMap.put("endTime", endTime); List thingsModels = thingsModelService.selectThingsModelList(new ThingsModel(device.getProductId())); + thingsModels.sort(Comparator.comparing(ThingsModel::getModelOrder)); List deviceLogs= logService.selectDataList(kvHashMap); Map> collect = deviceLogs != null ? deviceLogs.stream().collect(Collectors.groupingBy(t -> t.getIdentity())): new HashMap(); for (ThingsModel modelDevice : thingsModels) { From 498f77bc80262f2cb818e5a4571acafac32a0f5a Mon Sep 17 00:00:00 2001 From: wuyw <373811525@qq.com> Date: Thu, 15 Aug 2024 08:34:29 +0800 Subject: [PATCH 16/29] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E7=AE=A1=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fastbee/iot/domain/Device.java | 6 +++ .../iot/model/DeviceAllShortOutput.java | 7 +++ .../fastbee/iot/model/DeviceShortOutput.java | 7 +++ .../resources/mapper/iot/DeviceMapper.xml | 45 ++++++++++++++++--- 4 files changed, 58 insertions(+), 7 deletions(-) diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Device.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Device.java index 594506b..66cc962 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Device.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Device.java @@ -178,6 +178,12 @@ public class Device extends BaseEntity @ApiModelProperty("设备参数") private String devParams; + @ApiModelProperty("管护人") + private String caretaker; + @ApiModelProperty("管护单位") + private String managementUnit; + @ApiModelProperty("联系电话") + private String tel; /** * 关联组态,来源产品 diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceAllShortOutput.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceAllShortOutput.java index f06a71d..d455d9f 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceAllShortOutput.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceAllShortOutput.java @@ -1,6 +1,7 @@ package com.fastbee.iot.model; import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; import java.math.BigDecimal; import java.util.Date; @@ -66,6 +67,12 @@ public class DeviceAllShortOutput private Integer isOwner; private Integer subDeviceCount; + @ApiModelProperty("管护人") + private String caretaker; + @ApiModelProperty("管护单位") + private String managementUnit; + @ApiModelProperty("联系电话") + private String tel; public Integer getSubDeviceCount() { return subDeviceCount; diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceShortOutput.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceShortOutput.java index feb141c..35ebe8e 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceShortOutput.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceShortOutput.java @@ -94,6 +94,13 @@ public class DeviceShortOutput @Excel(name = "网关设备编号(子设备使用)") private String gwDevCode; + @ApiModelProperty("管护人") + private String caretaker; + @ApiModelProperty("管护单位") + private String managementUnit; + @ApiModelProperty("联系电话") + private String tel; + /** 是否自定义位置 **/ private Integer locationWay; diff --git a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceMapper.xml b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceMapper.xml index e87ab73..73ec48a 100644 --- a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceMapper.xml +++ b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceMapper.xml @@ -36,6 +36,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + @@ -65,6 +68,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + @@ -86,6 +92,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + @@ -203,7 +212,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select d.device_id, d.device_name, d.dev_params, p.product_id, p.product_name,p.device_type, - d.tenant_id, d.tenant_name, d.serial_number,d.gw_dev_code, + d.tenant_id, d.tenant_name, d.serial_number,d.gw_dev_code,d.management_unit, d.caretaker, d.tel, d.firmware_version, d.status,d.rssi,d.is_shadow,d.is_simulate ,d.location_way, d.things_model_value, d.active_time,d.create_time, if(null = d.img_url or '' = d.img_url, p.img_url, d.img_url) as img_url, case @@ -352,7 +367,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select d.device_id, d.device_name, d.product_id, d.product_name,p.device_type, d.tenant_id, d.tenant_name, d.serial_number,d.gw_dev_code, + d.management_unit, d.caretaker, d.tel, d.firmware_version, d.status,d.rssi,d.is_shadow,d.is_simulate ,d.location_way, d.things_model_value, d.active_time,d.create_time,d.img_url,d.dev_params, (select count(*) from iot_device d1 where d1.gw_dev_code = d.serial_number) as sub_device_count, @@ -879,7 +909,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + From efafc02865f109ecdfea045b6444e8f04451b2f0 Mon Sep 17 00:00:00 2001 From: wyw <373811525@qq.com> Date: Thu, 15 Aug 2024 23:27:52 +0800 Subject: [PATCH 19/29] =?UTF-8?q?1=E3=80=81=E5=88=B7=E5=8D=A1=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E4=BB=8Ephp=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../waterele/MaWatereleRecordController.java | 9 +- .../gis/impl/GisDeviceServiceImpl.java | 2 +- .../service/IMaWatereleRecordService.java | 3 +- .../impl/MaWatereleRecordServiceImpl.java | 98 ++++++++++++++++++- 4 files changed, 104 insertions(+), 8 deletions(-) diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaWatereleRecordController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaWatereleRecordController.java index bb7f3fd..d63450c 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaWatereleRecordController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/waterele/MaWatereleRecordController.java @@ -46,9 +46,9 @@ public class MaWatereleRecordController extends BaseController { @GetMapping("/list") @ApiOperation("查询水电双计数据记录列表") public TableDataInfo list(MaWatereleRecord maWatereleRecord) { - startPage(); - List list = maWatereleRecordService.selectMaWatereleRecordList(maWatereleRecord); - return getDataTable(list); +// startPage(); + TableDataInfo tableDataInfo = maWatereleRecordService.selectMaWatereleRecordList(maWatereleRecord); + return tableDataInfo; } /** @@ -70,7 +70,8 @@ public class MaWatereleRecordController extends BaseController { @PreAuthorize("@ss.hasPermi('waterele:watereleRecord:export')") @PostMapping("/export") public void export(HttpServletResponse response, MaWatereleRecord maWatereleRecord) { - List list = maWatereleRecordService.selectMaWatereleRecordList(maWatereleRecord); + TableDataInfo tableDataInfo= maWatereleRecordService.selectMaWatereleRecordList(maWatereleRecord); + List list = (List) tableDataInfo.getRows(); ExcelUtil util = new ExcelUtil(MaWatereleRecord.class); util.exportExcel(response, list, "水电双计数据记录数据"); } 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 68f99bf..7c27eab 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 @@ -228,7 +228,7 @@ public class GisDeviceServiceImpl implements IGisDeviceService { //获取累计水量和累计电量的前20条数据记录 MaWatereleRecord watereleRecord = new MaWatereleRecord(); watereleRecord.setDevSn(device.getSerialNumber()); - List maWatereleRecords = watereleRecordService.selectMaWatereleRecordList(watereleRecord); + List maWatereleRecords = (List) watereleRecordService.selectMaWatereleRecordList(watereleRecord).getRows(); if(maWatereleRecords.size() > 20){ maWatereleRecords = maWatereleRecords.subList(0, 20); } diff --git a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaWatereleRecordService.java b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaWatereleRecordService.java index 15f5ac0..6325170 100644 --- a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaWatereleRecordService.java +++ b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaWatereleRecordService.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import com.fastbee.common.core.page.TableDataInfo; import com.fastbee.waterele.domain.MaWatereleRecord; /** @@ -28,7 +29,7 @@ public interface IMaWatereleRecordService * @param maWatereleRecord 水电双计数据记录 * @return 水电双计数据记录集合 */ - public List selectMaWatereleRecordList(MaWatereleRecord maWatereleRecord); + public TableDataInfo selectMaWatereleRecordList(MaWatereleRecord maWatereleRecord); /** * 新增水电双计数据记录 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 4a18793..9a372a0 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 @@ -2,7 +2,15 @@ package com.fastbee.waterele.service.impl; import java.util.*; +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import com.fastbee.common.core.page.PageDomain; +import com.fastbee.common.core.page.TableDataInfo; +import com.fastbee.common.core.page.TableSupport; import com.fastbee.common.utils.DateUtils; +import com.fastbee.common.utils.StringUtils; +import com.fastbee.waterele.domain.MaGuangaiRecord; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.fastbee.waterele.mapper.MaWatereleRecordMapper; @@ -40,9 +48,95 @@ public class MaWatereleRecordServiceImpl implements IMaWatereleRecordService * @return 水电双计数据记录 */ @Override - public List selectMaWatereleRecordList(MaWatereleRecord maWatereleRecord) + public TableDataInfo selectMaWatereleRecordList(MaWatereleRecord maWatereleRecord) { - return maWatereleRecordMapper.selectMaWatereleRecordList(maWatereleRecord); + // + Long endTime = 0L; + Long startTime = 0L; + if(null == maWatereleRecord.getParams()){ + endTime = new Date().getTime()/1000; + startTime = endTime - 86400*3; + }else{ + if(!maWatereleRecord.getParams().containsKey("endCreateTime")){ + endTime = new Date().getTime()/1000; + }else{ + endTime = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, + maWatereleRecord.getParams().get("endCreateTime").toString()).getTime(); + } + if(!maWatereleRecord.getParams().containsKey("beginCreateTime")){ + startTime = endTime - 86400*3; + }else{ + startTime = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, + maWatereleRecord.getParams().get("beginCreateTime").toString()).getTime(); + } + } + Date startDate = new Date(); + startDate.setTime(startTime*1000); + String startDateStr = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,startDate); + Date endDate = new Date(); + endDate.setTime(endTime*1000); + String endDateStr = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,endDate); + String url = "https://zhwly.sdhzwl.cn/api/java/xinjiangup/getShuakaRecord?devSn=" + +maWatereleRecord.getDevSn()+"&startTime="+startDateStr+"&endTime="+endDateStr; + String result = HttpUtil.get(url); + + JSONObject jsonObject = new JSONObject(result); + List list = new ArrayList<>(); + if(jsonObject != null){ + if(jsonObject.containsKey("code") && Integer.parseInt(jsonObject.get("code").toString()) == 200){ + if(jsonObject.containsKey("data") && jsonObject.get("data") != null){ + JSONArray dataList = (JSONArray)jsonObject.get("data"); + for (Object object : dataList) { + JSONObject item = (JSONObject)object; + MaWatereleRecord record = new MaWatereleRecord(); + record.setDevSn(item.get("dev_sn").toString()); + record.setWorkstate(Integer.parseInt(item.get("workState").toString())); + record.setUsersumflow(item.get("userSumFlow").toString()); + record.setUsersumele(item.get("userSumEle").toString()); + record.setUserbalance(item.get("userBalance").toString()); + record.setSumflow(item.get("sumFlow").toString()); + record.setSumele(item.get("sumEle").toString()); + record.setMcusn(item.get("mcuSn").toString()); + record.setInspower(item.get("insPower").toString()); + record.setInsflow(item.get("insFlow").toString()); + record.setCurflow(item.get("curFlow").toString()); + record.setCurele(item.get("curEle").toString()); + record.setMetersum(item.get("meterSum").toString()); + record.setMeterins(item.get("meterIns").toString()); + record.setCardid(item.get("cardId").toString()); + record.setAreacode(item.get("areaCode").toString()); + record.setAction(item.get("action").toString()); + if(StringUtils.isNotEmpty(item.get("create_time").toString())){ + Date date = new Date(Long.parseLong(item.get("create_time").toString())*1000); + record.setCreateTime(date); + } + if(StringUtils.isNotEmpty(item.get("update_time").toString())){ + Date date = new Date(Long.parseLong(item.get("update_time").toString())*1000); + record.setUpdateTime(date); + } + list.add(record); + } + } + } + } + // + PageDomain pageDomain = TableSupport.buildPageRequest(); + Integer pageNum = pageDomain.getPageNum(); + Integer pageSize = pageDomain.getPageSize(); + List subList = new ArrayList<>(); + if(list.size() > (pageNum-1)*pageSize){ + if(list.size() < pageNum*pageSize){ + subList = list.subList((pageNum-1)*pageSize, list.size()); + }else{ + subList = list.subList((pageNum-1)*pageSize, pageNum*pageSize); + } + } + TableDataInfo tableDataInfo = new TableDataInfo(); + tableDataInfo.setMsg("获取成功"); + tableDataInfo.setTotal(list.size()); + tableDataInfo.setRows(subList); + tableDataInfo.setCode(200); + return tableDataInfo; } /** From 52f9a1c3829e19dfb67bcb8fd0fad94533f555a6 Mon Sep 17 00:00:00 2001 From: wyw <373811525@qq.com> Date: Thu, 15 Aug 2024 23:50:40 +0800 Subject: [PATCH 20/29] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9=E7=81=8C?= =?UTF-8?q?=E6=BA=89=E8=AE=B0=E5=BD=95=E5=92=8C=E5=88=B7=E5=8D=A1=E8=AE=B0?= =?UTF-8?q?=E5=BD=95bug=202=E3=80=81=E4=BF=AE=E6=94=B9=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E4=BF=A1=E6=81=AFbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/controller/DeviceController.java | 26 +++++++++---------- .../impl/MaGuangaiRecordServiceImpl.java | 25 ++++++++++++------ .../impl/MaRechargerecordServiceImpl.java | 15 ++++++++++- .../impl/MaWatereleRecordServiceImpl.java | 13 +++++++--- 4 files changed, 53 insertions(+), 26 deletions(-) diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/DeviceController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/DeviceController.java index 4d60e54..65f9eba 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/DeviceController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/DeviceController.java @@ -166,19 +166,19 @@ public class DeviceController extends BaseController { public AjaxResult getInfo(@PathVariable("deviceId") Long deviceId) { Device device = deviceService.selectDeviceByDeviceId(deviceId); // 判断当前用户是否有设备分享权限 (设备所属机构管理员和设备所属用户有权限) - LoginUser loginUser = getLoginUser(); - List roles = loginUser.getUser().getRoles(); - //判断当前用户是否为设备所属机构管理员 - if (roles.stream().anyMatch(a -> "admin".equals(a.getRoleKey()))) { - device.setIsOwner(1); - } else { - //判断当前用户是否是设备所属用户 - if (Objects.equals(device.getTenantId(), loginUser.getUserId())) { - device.setIsOwner(1); - } else { - device.setIsOwner(0); - } - } +// LoginUser loginUser = getLoginUser(); +// List roles = loginUser.getUser().getRoles(); +// //判断当前用户是否为设备所属机构管理员 +// if (roles.stream().anyMatch(a -> "admin".equals(a.getRoleKey()))) { +// device.setIsOwner(1); +// } else { +// //判断当前用户是否是设备所属用户 +// if (Objects.equals(device.getTenantId(), loginUser.getUserId())) { +// device.setIsOwner(1); +// } else { +// device.setIsOwner(0); +// } +// } return AjaxResult.success(device); } diff --git a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaGuangaiRecordServiceImpl.java b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaGuangaiRecordServiceImpl.java index a9d7590..a133249 100644 --- a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaGuangaiRecordServiceImpl.java +++ b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaGuangaiRecordServiceImpl.java @@ -5,6 +5,7 @@ import java.util.Collection; import java.util.Date; import java.util.List; +import cn.hutool.core.util.NumberUtil; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSON; import cn.hutool.json.JSONArray; @@ -96,16 +97,22 @@ public class MaGuangaiRecordServiceImpl implements IMaGuangaiRecordService MaGuangaiRecord record = new MaGuangaiRecord(); record.setDevSn(item.get("dev_sn").toString()); if(StringUtils.isNotEmpty(item.get("start_time").toString())){ - Date date = new Date(Long.parseLong(item.get("start_time").toString())*1000); - record.setStartTime(date); + if(NumberUtil.isNumber(item.get("start_time").toString())) { + Date date = new Date(Long.parseLong(item.get("start_time").toString()) * 1000); + record.setStartTime(date); + } } if(StringUtils.isNotEmpty(item.get("end_time").toString())){ - Date date = new Date(Long.parseLong(item.get("end_time").toString())*1000); - record.setEndTime(date); + if(NumberUtil.isNumber(item.get("end_time").toString())){ + Date date = new Date(Long.parseLong(item.get("end_time").toString())*1000); + record.setEndTime(date); + } } if(StringUtils.isNotEmpty(item.get("last_time").toString())){ - Date date = new Date(Long.parseLong(item.get("last_time").toString())*1000); - record.setLastTime(date); + if(NumberUtil.isNumber(item.get("last_time").toString())) { + Date date = new Date(Long.parseLong(item.get("last_time").toString()) * 1000); + record.setLastTime(date); + } } record.setCurEle(item.get("cur_ele").toString()); record.setCardId(item.get("card_id").toString()); @@ -115,8 +122,10 @@ public class MaGuangaiRecordServiceImpl implements IMaGuangaiRecordService record.setCurEle(item.get("cur_ele").toString()); record.setStatus(Integer.parseInt(item.get("status").toString())); if(StringUtils.isNotEmpty(item.get("create_time").toString())){ - Date date = new Date(Long.parseLong(item.get("create_time").toString())*1000); - record.setCreateTime(date); + if(NumberUtil.isNumber(item.get("create_time").toString())) { + Date date = new Date(Long.parseLong(item.get("create_time").toString()) * 1000); + record.setCreateTime(date); + } } list.add(record); } diff --git a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaRechargerecordServiceImpl.java b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaRechargerecordServiceImpl.java index bc787a0..2c751b2 100644 --- a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaRechargerecordServiceImpl.java +++ b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/impl/MaRechargerecordServiceImpl.java @@ -3,6 +3,8 @@ package com.fastbee.waterele.service.impl; import java.util.Date; import java.util.List; +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONObject; import com.fastbee.common.utils.DateUtils; import com.fastbee.common.utils.StringUtils; import com.fastbee.waterele.domain.vo.UnchargeAmountVo; @@ -54,7 +56,18 @@ public class MaRechargerecordServiceImpl implements IMaRechargerecordService { @Override public int insertMaRechargerecord(MaRechargerecord maRechargerecord) { maRechargerecord.setCreateTime(DateUtils.getNowDate()); - return maRechargerecordMapper.insertMaRechargerecord(maRechargerecord); +// https://zhwly.sdhzwl.cn/api/java/xinjiangup/recharge?cardNum=1&areaCode=123&jine=20 + String url = "https://zhwly.sdhzwl.cn/api/java/xinjiangup/recharge?cardNum=" + + maRechargerecord.getCardNum()+"&areaCode="+maRechargerecord.getAreaCode()+"&jine="+maRechargerecord.getInvestval(); + String result = HttpUtil.get(url); + JSONObject jsonObject = new JSONObject(result); + if(jsonObject != null){ + if(jsonObject.containsKey("code") && Integer.parseInt(jsonObject.get("code").toString()) == 200){ + return maRechargerecordMapper.insertMaRechargerecord(maRechargerecord); + } + } + return 0; + } /** 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 9a372a0..137d85b 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 @@ -2,6 +2,7 @@ package com.fastbee.waterele.service.impl; import java.util.*; +import cn.hutool.core.util.NumberUtil; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; @@ -107,12 +108,16 @@ public class MaWatereleRecordServiceImpl implements IMaWatereleRecordService record.setAreacode(item.get("areaCode").toString()); record.setAction(item.get("action").toString()); if(StringUtils.isNotEmpty(item.get("create_time").toString())){ - Date date = new Date(Long.parseLong(item.get("create_time").toString())*1000); - record.setCreateTime(date); + if(NumberUtil.isNumber(item.get("create_time").toString())) { + Date date = new Date(Long.parseLong(item.get("create_time").toString()) * 1000); + record.setCreateTime(date); + } } if(StringUtils.isNotEmpty(item.get("update_time").toString())){ - Date date = new Date(Long.parseLong(item.get("update_time").toString())*1000); - record.setUpdateTime(date); + if(NumberUtil.isNumber(item.get("update_time").toString())) { + Date date = new Date(Long.parseLong(item.get("update_time").toString()) * 1000); + record.setUpdateTime(date); + } } list.add(record); } From 9acc3940d8a3094a4a26c52e97e4e124f6c0d57f Mon Sep 17 00:00:00 2001 From: wyw <373811525@qq.com> Date: Fri, 16 Aug 2024 00:58:12 +0800 Subject: [PATCH 21/29] =?UTF-8?q?=E7=9F=AD=E4=BF=A1=E5=91=8A=E8=AD=A6?= =?UTF-8?q?=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/UploadedPhotosController.java | 4 +- .../service/IUploadedPhotosService.java | 2 +- .../impl/UploadedPhotosServiceImpl.java | 77 +++++++++++++++++-- .../impl/DeviceDetailServiceImpl.java | 4 +- 4 files changed, 76 insertions(+), 11 deletions(-) rename {fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot => fastbee-open-api/src/main/java/com/fastbee/data/controller}/anfang/controller/UploadedPhotosController.java (97%) rename {fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot => fastbee-open-api/src/main/java/com/fastbee/data/controller}/anfang/service/IUploadedPhotosService.java (97%) rename {fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot => fastbee-open-api/src/main/java/com/fastbee/data/controller}/anfang/service/impl/UploadedPhotosServiceImpl.java (73%) diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/anfang/controller/UploadedPhotosController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/anfang/controller/UploadedPhotosController.java similarity index 97% rename from fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/anfang/controller/UploadedPhotosController.java rename to fastbee-open-api/src/main/java/com/fastbee/data/controller/anfang/controller/UploadedPhotosController.java index f242231..d2447e7 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/anfang/controller/UploadedPhotosController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/anfang/controller/UploadedPhotosController.java @@ -1,4 +1,4 @@ -package com.fastbee.iot.anfang.controller; +package com.fastbee.data.controller.anfang.controller; import com.fastbee.common.annotation.Log; import com.fastbee.common.config.RuoYiConfig; @@ -9,7 +9,7 @@ import com.fastbee.common.enums.BusinessType; import com.fastbee.common.exception.ServiceException; import com.fastbee.common.utils.file.FileUploadUtils; import com.fastbee.common.utils.poi.ExcelUtil; -import com.fastbee.iot.anfang.service.IUploadedPhotosService; +import com.fastbee.data.controller.anfang.service.IUploadedPhotosService; import com.fastbee.iot.model.anfang.UploadedPhotos; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/anfang/service/IUploadedPhotosService.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/anfang/service/IUploadedPhotosService.java similarity index 97% rename from fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/anfang/service/IUploadedPhotosService.java rename to fastbee-open-api/src/main/java/com/fastbee/data/controller/anfang/service/IUploadedPhotosService.java index 8bdec76..4e30063 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/anfang/service/IUploadedPhotosService.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/anfang/service/IUploadedPhotosService.java @@ -1,4 +1,4 @@ -package com.fastbee.iot.anfang.service; +package com.fastbee.data.controller.anfang.service; import com.fastbee.iot.model.anfang.UploadedPhotos; diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/anfang/service/impl/UploadedPhotosServiceImpl.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/anfang/service/impl/UploadedPhotosServiceImpl.java similarity index 73% rename from fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/anfang/service/impl/UploadedPhotosServiceImpl.java rename to fastbee-open-api/src/main/java/com/fastbee/data/controller/anfang/service/impl/UploadedPhotosServiceImpl.java index 9f7e1e3..edd43e1 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/anfang/service/impl/UploadedPhotosServiceImpl.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/anfang/service/impl/UploadedPhotosServiceImpl.java @@ -1,17 +1,21 @@ -package com.fastbee.iot.anfang.service.impl; +package com.fastbee.data.controller.anfang.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.json.JSONObject; import com.fastbee.common.config.RuoYiConfig; import com.fastbee.common.utils.DevParamsUtils; +import com.fastbee.common.utils.StringUtils; import com.fastbee.common.utils.file.FileUploadUtils; -import com.fastbee.iot.anfang.service.IUploadedPhotosService; +import com.fastbee.data.controller.anfang.service.IUploadedPhotosService; import com.fastbee.iot.domain.Device; +import com.fastbee.iot.domain.DeviceAlertUser; import com.fastbee.iot.haikang.HaikangYingshiApi; +import com.fastbee.iot.mapper.DeviceAlertUserMapper; import com.fastbee.iot.mapper.UploadedPhotosMapper; import com.fastbee.iot.model.anfang.UploadedPhotos; import com.fastbee.iot.service.IDeviceService; -import org.checkerframework.checker.units.qual.A; +import com.fastbee.notify.core.service.NotifySendService; +import com.fastbee.notify.core.vo.SendParams; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -22,7 +26,6 @@ import java.net.URL; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.logging.Handler; /** * 存储上传的照片信息Service业务层处理 @@ -37,6 +40,17 @@ public class UploadedPhotosServiceImpl implements IUploadedPhotosService private UploadedPhotosMapper uploadedPhotosMapper; @Autowired private IDeviceService deviceService; + + @Autowired + private NotifySendService notifySendService; + + @Autowired + private RuoYiConfig ruoYiConfig; + + private HaikangYingshiApi haikangYingshiApi; + @Autowired + private DeviceAlertUserMapper deviceAlertUserMapper; + /** * 查询存储上传的照片信息 * @@ -201,8 +215,61 @@ public class UploadedPhotosServiceImpl implements IUploadedPhotosService return ""; } + @Override public void sendAlarmMessage(String sn, String doorState, String shakeState) { - + // + boolean notify = false; + SendParams sendParams = new SendParams(); + sendParams.setId(14L); + Map temp = new HashMap<>(); + Device device = deviceService.selectDeviceBySerialNumber(sn); + if (device == null) { + return; + } + Map devParams = DevParamsUtils.getDevParams(device.getDevParams()); + Device jijingDevice = null; + if(devParams.containsKey("jijingIds")){ + String jijingIds = devParams.get("jijingIds").toString(); + jijingDevice = deviceService.selectDeviceByDeviceId(Long.parseLong(jijingIds)); + if (jijingDevice == null){ + return; + } + temp.put("stationName",jijingDevice.getDeviceName()); + }else{ + return; + } + if(Integer.parseInt(doorState) == 1){ + temp.put("warnInfo","箱门打开"); + notify = true; + }else { + if(Integer.parseInt(shakeState) == 1){ + temp.put("warnInfo","箱门振动"); + notify = true; + } + } + if(notify){ + DeviceAlertUser deviceAlertUser = new DeviceAlertUser(); + deviceAlertUser.setDeviceId(jijingDevice.getDeviceId()); + List deviceAlertUsers = deviceAlertUserMapper.selectDeviceAlertUserList(deviceAlertUser); + if(deviceAlertUsers.size() > 0){ + String phone = ""; + for (int i = 0; i < deviceAlertUsers.size(); i++) { + if(i == 0){ + phone = deviceAlertUsers.get(i).getPhoneNumber(); + }else { + phone += "," + deviceAlertUsers.get(i).getPhoneNumber(); + } + } + if(StringUtils.isEmpty(phone)){ + return; + } + sendParams.setSendAccount(phone); + JSONObject jsonObject = new JSONObject(temp); + String jsonString = jsonObject.toString(); + sendParams.setVariables(jsonString); + notifySendService.send(sendParams); + } + } } } 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 7427b71..85e9623 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 @@ -8,10 +8,9 @@ import com.fastbee.common.core.domain.CommonResult; import com.fastbee.common.model.vo.iot.QueryLogVo; import com.fastbee.common.utils.DevParamsUtils; import com.fastbee.common.utils.StringUtils; -import com.fastbee.common.utils.StringUtils; import com.fastbee.data.domain.vo.AnfangInfoVo; import com.fastbee.data.service.devicedetail.IDeviceDetailService; -import com.fastbee.iot.anfang.service.IUploadedPhotosService; +import com.fastbee.data.controller.anfang.service.IUploadedPhotosService; import com.fastbee.iot.domain.Device; import com.fastbee.iot.domain.DeviceLog; import com.fastbee.iot.domain.ThingsModel; @@ -33,7 +32,6 @@ import com.fastbee.xunjian.mapper.XjInspectionRoutesMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import javax.xml.crypto.Data; import java.util.*; import java.util.stream.Collectors; From 0d42fc07858cdf333822c0e9dd51e4f88475c9f4 Mon Sep 17 00:00:00 2001 From: wyw <373811525@qq.com> Date: Fri, 16 Aug 2024 01:45:55 +0800 Subject: [PATCH 22/29] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=B4=AF=E8=AE=A1?= =?UTF-8?q?=E6=B0=B4=E9=87=8F=E3=80=81=E7=B4=AF=E8=AE=A1=E7=94=B5=E9=87=8F?= =?UTF-8?q?=E3=80=81=E7=AE=B1=E9=97=A8=E7=8A=B6=E6=80=81=E7=9A=84=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gis/impl/GisDeviceServiceImpl.java | 272 +++++++++++++++--- 1 file changed, 225 insertions(+), 47 deletions(-) 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 7c27eab..cfbac92 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 @@ -2,9 +2,11 @@ package com.fastbee.data.service.gis.impl; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; 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.iot.GisDeviceListVo; import com.fastbee.common.utils.DateUtils; @@ -42,7 +44,7 @@ public class GisDeviceServiceImpl implements IGisDeviceService { @Autowired private IDeviceLogService logService; -// @Resource + // @Resource // DeviceInfoCacheService deviceInfoCacheService; @Autowired private IAlertService iAlertService; @@ -52,6 +54,7 @@ public class GisDeviceServiceImpl implements IGisDeviceService { @Autowired private IMaWatereleRecordService watereleRecordService; + public GisDeviceServiceImpl(@Qualifier("deviceMapper") DeviceMapper deviceMapper, @Qualifier("productMapper") ProductMapper productMapper) { this.deviceMapper = deviceMapper; this.productMapper = productMapper; @@ -88,8 +91,8 @@ public class GisDeviceServiceImpl implements IGisDeviceService { devItem.setName(deviceEntity1.getDeviceName()); devItem.setId(deviceEntity1.getDeviceId()); devItem.setStatus(deviceEntity1.getStatus()); - devItem.setLatitude(deviceEntity1.getLatitude() != null ?deviceEntity1.getLatitude().floatValue():null); - devItem.setLongitude(deviceEntity1.getLongitude()!= null ?deviceEntity1.getLongitude().floatValue():null); + devItem.setLatitude(deviceEntity1.getLatitude() != null ? deviceEntity1.getLatitude().floatValue() : null); + devItem.setLongitude(deviceEntity1.getLongitude() != null ? deviceEntity1.getLongitude().floatValue() : null); treeItemVoList.add(devItem); if (deviceEntity1.getStatus() == 3) { onLineCount++; @@ -103,10 +106,12 @@ public class GisDeviceServiceImpl implements IGisDeviceService { deviceListVo.setOnLineCount(onLineCount); return deviceListVo; } + //todo 需要修改安防版和水电双计设备实时数据 @Override public Object getRealTimeDataByDevicerId(Long deviceId) { - HashMap rMap = new HashMap() {}; + HashMap rMap = new HashMap() { + }; if (deviceId == null) { throw new RuntimeException("请上传devicerId"); } @@ -140,10 +145,10 @@ public class GisDeviceServiceImpl implements IGisDeviceService { put("value", 0); put("name", thingsModel.getModelName()); }}; - if(StringUtils.isNotEmpty(thingsModel.getSpecs())){ + if (StringUtils.isNotEmpty(thingsModel.getSpecs())) { String specs = thingsModel.getSpecs(); JSONObject parse = (JSONObject) JSON.parse(specs); - if(parse.containsKey("unit")){ + if (parse.containsKey("unit")) { hashMap.put("unit", parse.get("unit")); } } @@ -151,19 +156,29 @@ public class GisDeviceServiceImpl implements IGisDeviceService { 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); + 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())) { + hashMap.put("upType", 1); + } else if (Float.parseFloat(deviceLogs1.get(0).getLogValue()) < Float.parseFloat(deviceLogs1.get(1).getLogValue())) { + hashMap.put("upType", -1); + } + }else{ + hashMap.put("upType", 0); + } + hashMap.put("value", deviceLogs1.get(0).getLogValue()); + } else { + hashMap.put("value", "--"); + hashMap.put("upType", 0); } - 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()); @@ -173,8 +188,8 @@ public class GisDeviceServiceImpl implements IGisDeviceService { } rMap.put(thingsModel.getIdentifier(), hashMap); } - }else{ - for (ThingsModel thingsModel : taiyangnengModels){ + } else { + for (ThingsModel thingsModel : taiyangnengModels) { HashMap hashMap = new HashMap() {{ put("upType", 0); put("identifier", thingsModel.getIdentifier()); @@ -185,33 +200,195 @@ public class GisDeviceServiceImpl implements IGisDeviceService { rMap.put(thingsModel.getIdentifier(), hashMap); } } - //安防信息 - String anfangIds = devParams.get("anfangIds").toString(); - HashMap hashMap = new HashMap() {{ - put("upType", 0); - put("identifier", "xiangmen"); - put("unit", ""); - put("value", 0);//0=正常,1=箱门振动,2=箱门打开 - put("name", "箱门状态"); - }}; - rMap.put("xiangmen",hashMap); - //机井信息 - HashMap hashMap1 = new HashMap() {{ - put("upType", 0); - put("identifier", "sumFlow"); - put("unit", "m³"); - put("value", 0); - put("name", "累计用水量"); - }}; - rMap.put("sumFlow",hashMap1); + //箱门信息 + String guimenIds = devParams.get("guimenIds").toString(); + ThingsModel thingsModel3 = new ThingsModel(); + thingsModel3.setProductId(140L); + List guimenModels = thingsModelService.selectThingsModelList(thingsModel3); + if (StringUtils.isNotEmpty(taiyangnengIds)) { + Device guimenDevice = deviceMapper.selectDeviceByDeviceId(Long.parseLong(guimenIds)); + List deviceLogs = logService.selectDeviceLogList(new DeviceLog() {{ + setSerialNumber(guimenDevice.getSerialNumber()); + setBeginTime(DateUtil.beginOfDay(DateUtil.offsetDay(dateTime, -1)).toString()); + setEndTime(DateUtil.endOfDay(dateTime).toString()); + }}); + Map> guimenCollect = deviceLogs.stream().sorted(Comparator + .comparing(DeviceLog::getCreateTime, Comparator + .nullsFirst(Comparator.naturalOrder())).reversed()).collect(Collectors.groupingBy(t -> t.getIdentity())); + for (ThingsModel thingsModel : guimenModels) { + HashMap hashMap1 = new HashMap() {{ + put("upType", 0); + put("identifier", thingsModel.getIdentifier().equals("三菱FX2N_1_open")?"xiangmen":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 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 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 hashMap1 = new HashMap() {{ + 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 hashMap = new HashMap() {{ +// 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 liuliangModels = thingsModelService.selectThingsModelList(thingsModel2); + if (StringUtils.isNotEmpty(taiyangnengIds)) { + Device liuliangDevice = deviceMapper.selectDeviceByDeviceId(Long.parseLong(liuliangIds)); + List deviceLogs = logService.selectDeviceLogList(new DeviceLog() {{ + setSerialNumber(liuliangDevice.getSerialNumber()); + setBeginTime(DateUtil.beginOfDay(DateUtil.offsetDay(dateTime, -1)).toString()); + setEndTime(DateUtil.endOfDay(dateTime).toString()); + }}); + Map> liuliangCollect = deviceLogs.stream().sorted(Comparator + .comparing(DeviceLog::getCreateTime, Comparator + .nullsFirst(Comparator.naturalOrder())).reversed()).collect(Collectors.groupingBy(t -> t.getIdentity())); + for (ThingsModel thingsModel : liuliangModels) { + HashMap hashMap1 = new HashMap() {{ + 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 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 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 hashMap1 = new HashMap() {{ + 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 hashMap1 = new HashMap() {{ +// put("upType", 0); +// put("identifier", "sumFlow"); +// put("unit", "m³"); +// put("value", 0); +// put("name", "累计用水量"); +// }}; +// rMap.put("sumFlow", hashMap1); + MaWatereleRecord maWatereleRecord = new MaWatereleRecord(); + maWatereleRecord.setDevSn(device.getSerialNumber()); + TableDataInfo tableDataInfo = watereleRecordService.selectMaWatereleRecordList(maWatereleRecord); + List deviceLogs = (List) 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 hashMap2 = new HashMap() {{ put("upType", 0); put("identifier", "sumEle"); - put("unit", "度"); - put("value", 0); + put("unit", "kwh"); + put("value", finalSumEle); put("name", "累计用电量"); }}; - rMap.put("sumEle",hashMap2); + rMap.put("sumEle", hashMap2); return rMap; } @@ -228,8 +405,9 @@ public class GisDeviceServiceImpl implements IGisDeviceService { //获取累计水量和累计电量的前20条数据记录 MaWatereleRecord watereleRecord = new MaWatereleRecord(); watereleRecord.setDevSn(device.getSerialNumber()); - List maWatereleRecords = (List) watereleRecordService.selectMaWatereleRecordList(watereleRecord).getRows(); - if(maWatereleRecords.size() > 20){ + List maWatereleRecords = + (List) watereleRecordService.selectMaWatereleRecordList(watereleRecord).getRows(); + if (maWatereleRecords.size() > 20) { maWatereleRecords = maWatereleRecords.subList(0, 20); } maWatereleRecords.sort(Comparator.comparing(MaWatereleRecord::getCreateTime)); @@ -237,7 +415,7 @@ public class GisDeviceServiceImpl implements IGisDeviceService { ArrayList sumEle = new ArrayList<>(); ArrayList time = new ArrayList<>(); for (MaWatereleRecord record : maWatereleRecords) { - time.add(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,record.getCreateTime())); + time.add(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, record.getCreateTime())); sumFlow.add(record.getSumflow()); sumEle.add(record.getSumele()); } @@ -255,11 +433,11 @@ public class GisDeviceServiceImpl implements IGisDeviceService { kvHashMap.put("identity", identity); kvHashMap.put("serialNumber", device.getSerialNumber()); Date endTime = new Date(); - kvHashMap.put("endTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,endTime)); + kvHashMap.put("endTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, endTime)); Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); - calendar.add(Calendar.HOUR,-23); - kvHashMap.put("beginTime",DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH,calendar.getTime())+":00:00"); + calendar.add(Calendar.HOUR, -23); + kvHashMap.put("beginTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH, calendar.getTime()) + ":00:00"); List> reMap = logService.selectDayData(kvHashMap); Map> create_time = new HashMap<>(); if (reMap != null) { @@ -277,10 +455,10 @@ public class GisDeviceServiceImpl implements IGisDeviceService { time.add(s); Map map = create_time.get(s); if (map != null) { - if(identity.equals("dataSumFlow")){ + if (identity.equals("dataSumFlow")) { jiangyvliang.add(Float.parseFloat(create_time.get(s).get("maxLogValue").toString()) - Float.parseFloat(create_time.get(s).get("minLogValue").toString())); - }else{ + } else { jiangyvliang.add(create_time.get(s).get("avgLogValue")); } } else { @@ -293,7 +471,7 @@ public class GisDeviceServiceImpl implements IGisDeviceService { public Map getDevParams(Device device) { Map devData = new HashMap<>(); - try{ + try { Object devParams = com.alibaba.fastjson.JSON.parse(device.getDevParams()); //先转换成Object List> Params = (List>) devParams; if (Params != null) { @@ -301,7 +479,7 @@ public class GisDeviceServiceImpl implements IGisDeviceService { devData.put(param.get("key").toString(), param.get("value").toString()); } } - }catch (Exception exception){ + } catch (Exception exception) { } return devData; 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 23/29] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=94=A8=E6=B0=B4?= =?UTF-8?q?=E6=95=B0=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); From ab9792668cb40177c12dd1d94ff4acb7328b701b Mon Sep 17 00:00:00 2001 From: wyw <373811525@qq.com> Date: Fri, 16 Aug 2024 02:47:07 +0800 Subject: [PATCH 24/29] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=82=B9=E4=BD=8D?= =?UTF-8?q?=E6=95=B0=E6=8D=AEbug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fastbee-service/fastbee-iot-service/pom.xml | 4 ++++ .../iot/service/impl/DeviceServiceImpl.java | 18 +++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/fastbee-service/fastbee-iot-service/pom.xml b/fastbee-service/fastbee-iot-service/pom.xml index 7f8eb0d..bf4ffed 100644 --- a/fastbee-service/fastbee-iot-service/pom.xml +++ b/fastbee-service/fastbee-iot-service/pom.xml @@ -156,6 +156,10 @@ forest-spring-boot-starter 1.5.36 + + com.fastbee + fastbee-waterele-service + 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 af1d148..cff4818 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 @@ -10,6 +10,7 @@ import com.fastbee.common.core.domain.AjaxResult; import com.fastbee.common.core.domain.entity.SysDept; import com.fastbee.common.core.domain.entity.SysUser; import com.fastbee.common.core.domain.model.LoginUser; +import com.fastbee.common.core.page.TableDataInfo; import com.fastbee.common.core.redis.RedisCache; import com.fastbee.common.core.redis.RedisKeyBuilder; import com.fastbee.common.core.thingsModel.ThingsModelSimpleItem; @@ -37,6 +38,8 @@ import com.fastbee.iot.cache.ITSLValueCache; import com.fastbee.iot.tdengine.service.ILogService; import com.fastbee.system.mapper.SysDeptMapper; import com.fastbee.system.service.ISysUserService; +import com.fastbee.waterele.domain.MaWatereleRecord; +import com.fastbee.waterele.service.IMaWatereleRecordService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; @@ -121,7 +124,8 @@ public class DeviceServiceImpl implements IDeviceService { private SubGatewayMapper subGatewayMapper; @Resource private IOrderControlService orderControlService; - + @Resource + private IMaWatereleRecordService watereleRecordService; /** * 查询设备 @@ -1604,6 +1608,18 @@ public class DeviceServiceImpl implements IDeviceService { devices.setProductId(136L); List deviceList = selectDeviceList(devices); for (Device device : deviceList) { + MaWatereleRecord maWatereleRecord = new MaWatereleRecord(); + maWatereleRecord.setDevSn(device.getSerialNumber()); + TableDataInfo tableDataInfo = watereleRecordService.selectMaWatereleRecordList(maWatereleRecord); + List list = (List) tableDataInfo.getRows(); + int status = 4; + if(list.size() > 0){ + MaWatereleRecord record = list.get(0); + if(new Date().getTime() - record.getCreateTime().getTime() < 3600000){ + status = 3; + } + } + device.setStatus(status); HashMap itemMap = new HashMap<>(); resultList.add(itemMap); Integer integer = 0; From 77386bfbb0beaee772a4079c295dcdfd79b6c589 Mon Sep 17 00:00:00 2001 From: wyw <373811525@qq.com> Date: Fri, 16 Aug 2024 03:26:52 +0800 Subject: [PATCH 25/29] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E7=8A=B6=E6=80=81=E8=8E=B7=E5=8F=96=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/service/impl/DeviceServiceImpl.java | 24 +++++++------- .../java/com/fastbee/iot/timer/QxtrTask.java | 32 ++++++++++++++++++- 2 files changed, 43 insertions(+), 13 deletions(-) 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 cff4818..70252d9 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 @@ -1608,18 +1608,18 @@ public class DeviceServiceImpl implements IDeviceService { devices.setProductId(136L); List deviceList = selectDeviceList(devices); for (Device device : deviceList) { - MaWatereleRecord maWatereleRecord = new MaWatereleRecord(); - maWatereleRecord.setDevSn(device.getSerialNumber()); - TableDataInfo tableDataInfo = watereleRecordService.selectMaWatereleRecordList(maWatereleRecord); - List list = (List) tableDataInfo.getRows(); - int status = 4; - if(list.size() > 0){ - MaWatereleRecord record = list.get(0); - if(new Date().getTime() - record.getCreateTime().getTime() < 3600000){ - status = 3; - } - } - device.setStatus(status); +// MaWatereleRecord maWatereleRecord = new MaWatereleRecord(); +// maWatereleRecord.setDevSn(device.getSerialNumber()); +// TableDataInfo tableDataInfo = watereleRecordService.selectMaWatereleRecordList(maWatereleRecord); +// List list = (List) tableDataInfo.getRows(); +// int status = 4; +// if(list.size() > 0){ +// MaWatereleRecord record = list.get(0); +// if(new Date().getTime() - record.getCreateTime().getTime() < 3600000){ +// status = 3; +// } +// } +// device.setStatus(status); HashMap itemMap = new HashMap<>(); resultList.add(itemMap); Integer integer = 0; diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/QxtrTask.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/QxtrTask.java index ce6051c..50cb57f 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/QxtrTask.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/QxtrTask.java @@ -1,5 +1,6 @@ package com.fastbee.iot.timer;//package com.fastbee.farming; +import com.fastbee.common.core.page.TableDataInfo; import com.fastbee.common.core.redis.RedisCache; import com.fastbee.common.core.redis.RedisKeyBuilder; import com.fastbee.common.utils.DateUtils; @@ -17,6 +18,8 @@ import com.fastbee.iot.model.haiwei.HaiWeiPropertyVo; import com.fastbee.iot.service.IDeviceService; import com.fastbee.iot.tdengine.service.ILogService; import com.fastbee.iot.tdengine.service.model.TdLogDto; +import com.fastbee.waterele.domain.MaWatereleRecord; +import com.fastbee.waterele.service.IMaWatereleRecordService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -43,7 +46,8 @@ public class QxtrTask { private ILogService iLogService; @Resource RedisCache redisCache; - + @Resource + private IMaWatereleRecordService watereleRecordService; private static Pattern pattern = Pattern.compile("[-+]?[0-9]+(\\.[0-9]+)?$"); /** @@ -57,6 +61,32 @@ public class QxtrTask { getDeviceInfo(Long.valueOf(SOLAR_DEVICE.getType()), devices); } + /** + * 定时任务 更新设备在线状态 + */ + public void updateDeviceStatus() throws Exception { + log.info("定时任务,更新设备在线状态"); + Device device = new Device(); + ArrayList> resultList = new ArrayList<>(); + device.setProductId(136L); + List deviceList = iDeviceService.selectDeviceList(device); + for (Device item : deviceList) { + MaWatereleRecord maWatereleRecord = new MaWatereleRecord(); + maWatereleRecord.setDevSn(item.getSerialNumber()); + TableDataInfo tableDataInfo = watereleRecordService.selectMaWatereleRecordList(maWatereleRecord); + List list = (List) tableDataInfo.getRows(); + int status = 4; + if(list.size() > 0){ + MaWatereleRecord record = list.get(0); + if(new Date().getTime() - record.getCreateTime().getTime() < 3600000){ + status = 3; + } + } + item.setStatus(status); + iDeviceService.updateDevice(item); + } + } + /** * 定时任务 流量计设备 */ From b036a60a608b461a923142b6c76dbe5eab6b1524 Mon Sep 17 00:00:00 2001 From: wyw <373811525@qq.com> Date: Fri, 16 Aug 2024 03:44:48 +0800 Subject: [PATCH 26/29] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E7=8A=B6=E6=80=81=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fastbee/iot/timer/QxtrTask.java | 5 ++- .../service/IMaWatereleRecordService.java | 1 + .../impl/MaWatereleRecordServiceImpl.java | 43 +++++++++++-------- 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/QxtrTask.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/QxtrTask.java index 50cb57f..54d24d1 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/QxtrTask.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/QxtrTask.java @@ -73,8 +73,7 @@ public class QxtrTask { for (Device item : deviceList) { MaWatereleRecord maWatereleRecord = new MaWatereleRecord(); maWatereleRecord.setDevSn(item.getSerialNumber()); - TableDataInfo tableDataInfo = watereleRecordService.selectMaWatereleRecordList(maWatereleRecord); - List list = (List) tableDataInfo.getRows(); + List list = watereleRecordService.getList(maWatereleRecord); int status = 4; if(list.size() > 0){ MaWatereleRecord record = list.get(0); @@ -87,6 +86,8 @@ public class QxtrTask { } } + + /** * 定时任务 流量计设备 */ diff --git a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaWatereleRecordService.java b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaWatereleRecordService.java index 6325170..841e57f 100644 --- a/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaWatereleRecordService.java +++ b/fastbee-service/fastbee-waterele-service/src/main/java/com/fastbee/waterele/service/IMaWatereleRecordService.java @@ -31,6 +31,7 @@ public interface IMaWatereleRecordService */ public TableDataInfo selectMaWatereleRecordList(MaWatereleRecord maWatereleRecord); + List getList(MaWatereleRecord maWatereleRecord); /** * 新增水电双计数据记录 * 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 f0f498c..f144c1a 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 @@ -1,6 +1,7 @@ package com.fastbee.waterele.service.impl; import java.util.*; +import java.util.function.Function; import cn.hutool.core.util.NumberUtil; import cn.hutool.http.HttpUtil; @@ -51,7 +52,28 @@ public class MaWatereleRecordServiceImpl implements IMaWatereleRecordService @Override public TableDataInfo selectMaWatereleRecordList(MaWatereleRecord maWatereleRecord) { - // + List list = getList(maWatereleRecord); + PageDomain pageDomain = TableSupport.buildPageRequest(); + Integer pageNum = pageDomain.getPageNum(); + Integer pageSize = pageDomain.getPageSize(); + List subList = new ArrayList<>(); + if(list.size() > (pageNum-1)*pageSize){ + if(list.size() < pageNum*pageSize){ + subList = list.subList((pageNum-1)*pageSize, list.size()); + }else{ + subList = list.subList((pageNum-1)*pageSize, pageNum*pageSize); + } + } + TableDataInfo tableDataInfo = new TableDataInfo(); + tableDataInfo.setMsg("获取成功"); + tableDataInfo.setTotal(list.size()); + tableDataInfo.setRows(subList); + tableDataInfo.setCode(200); + return tableDataInfo; + } + + @Override + public List getList(MaWatereleRecord maWatereleRecord){ Long endTime = 0L; Long startTime = 0L; if(null == maWatereleRecord.getParams()){ @@ -124,24 +146,7 @@ public class MaWatereleRecordServiceImpl implements IMaWatereleRecordService } } } - // - PageDomain pageDomain = TableSupport.buildPageRequest(); - Integer pageNum = pageDomain.getPageNum(); - Integer pageSize = pageDomain.getPageSize(); - List subList = new ArrayList<>(); - if(list.size() > (pageNum-1)*pageSize){ - if(list.size() < pageNum*pageSize){ - subList = list.subList((pageNum-1)*pageSize, list.size()); - }else{ - subList = list.subList((pageNum-1)*pageSize, pageNum*pageSize); - } - } - TableDataInfo tableDataInfo = new TableDataInfo(); - tableDataInfo.setMsg("获取成功"); - tableDataInfo.setTotal(list.size()); - tableDataInfo.setRows(subList); - tableDataInfo.setCode(200); - return tableDataInfo; + return list; } /** From d46835f89aa52cf298c562a34e1b05901c1f31cf Mon Sep 17 00:00:00 2001 From: wyw <373811525@qq.com> Date: Fri, 16 Aug 2024 05:08:57 +0800 Subject: [PATCH 27/29] =?UTF-8?q?=E5=88=B7=E5=8D=A1=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/waterele/MaCardinfoMapper.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaCardinfoMapper.xml b/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaCardinfoMapper.xml index 9239384..66d36b8 100644 --- a/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaCardinfoMapper.xml +++ b/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaCardinfoMapper.xml @@ -30,6 +30,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and cardType = #{cardtype} and mcuSn = #{mcusn} + order by create_time desc