Merge branch 'master' of https://codeup.aliyun.com/6428039c708c83a3fd907211/hzwmiot/hzwmiot24_java
This commit is contained in:
commit
3cbc798b60
@ -0,0 +1,19 @@
|
|||||||
|
package com.fastbee.common.model.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class TreeItemVo {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
private String name;
|
||||||
|
//经度
|
||||||
|
private Float longitude;
|
||||||
|
//纬度
|
||||||
|
private Float latitude;
|
||||||
|
private Integer status = 1;//状态:1-未激活,2-禁用,3-在线,4-离线
|
||||||
|
private List<TreeItemVo> children = new ArrayList<>();
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.fastbee.common.model.vo.iot;
|
||||||
|
|
||||||
|
import com.fastbee.common.model.vo.TreeItemVo;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gis设备列表
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class GisDeviceListVo {
|
||||||
|
|
||||||
|
private Integer count;
|
||||||
|
private Integer onLineCount;
|
||||||
|
private List<TreeItemVo> productContainDeviceList;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.fastbee.common.model.vo.iot;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备数据查询
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class QueryLogVo {
|
||||||
|
|
||||||
|
private Long deviceId;
|
||||||
|
//开始时间
|
||||||
|
private String startTime;
|
||||||
|
//结束时间
|
||||||
|
private String endTime;
|
||||||
|
/**
|
||||||
|
* 类型:year=年度,btw=时间段,不传默认btw(时间段),非必传项
|
||||||
|
*/
|
||||||
|
private String type="btw";
|
||||||
|
//非必传项,不传默认查询全部图表数据点
|
||||||
|
private String identity;
|
||||||
|
}
|
@ -21,12 +21,11 @@ import org.apache.commons.lang3.time.DateFormatUtils;
|
|||||||
public class DateUtils extends org.apache.commons.lang3.time.DateUtils
|
public class DateUtils extends org.apache.commons.lang3.time.DateUtils
|
||||||
{
|
{
|
||||||
public static String YYYY = "yyyy";
|
public static String YYYY = "yyyy";
|
||||||
|
|
||||||
public static String YYYYMM = "yyyyMM";
|
public static String YYYYMM = "yyyyMM";
|
||||||
|
|
||||||
public static String YYYY_MM = "yyyy-MM";
|
public static String YYYY_MM = "yyyy-MM";
|
||||||
|
|
||||||
public static String YYYY_MM_DD = "yyyy-MM-dd";
|
public static String YYYY_MM_DD = "yyyy-MM-dd";
|
||||||
|
public static String YYYY_MM_DD_HH = "yyyy-MM-dd HH";
|
||||||
|
|
||||||
public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
|
public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
|
||||||
|
|
||||||
|
@ -127,13 +127,13 @@ public class SecurityUtils
|
|||||||
{
|
{
|
||||||
String language = getLoginUser().getLanguage();
|
String language = getLoginUser().getLanguage();
|
||||||
if (StringUtils.isEmpty(language)){
|
if (StringUtils.isEmpty(language)){
|
||||||
return "en-US";
|
return "en-CN";
|
||||||
}
|
}
|
||||||
return language;
|
return language;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
return "en-US";
|
return "en-CN";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -481,4 +481,25 @@ public class DeviceController extends BaseController
|
|||||||
return rspData;
|
return rspData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 所有设备点数据
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping("/devicePointInfo")
|
||||||
|
@ApiOperation("所有设备点数据")
|
||||||
|
public AjaxResult devicePointInfo(Device device) {
|
||||||
|
return AjaxResult.success(deviceService.devicePointInfo(device));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询设备历史数据曲线图
|
||||||
|
*/
|
||||||
|
@GetMapping("/getDeviceLogAllCurves")
|
||||||
|
@ApiOperation("查询设备历史数据曲线图")
|
||||||
|
public AjaxResult getDeviceLogAllCurves(Long deviceId,String beginTime ,String endTime) {
|
||||||
|
ArrayList<Object> data = deviceService.getDeviceLogAllCurves(deviceId,beginTime ,endTime);
|
||||||
|
return success(data);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,48 @@
|
|||||||
|
package com.fastbee.data.controller;
|
||||||
|
|
||||||
|
import com.fastbee.common.core.controller.BaseController;
|
||||||
|
import com.fastbee.common.core.domain.AjaxResult;
|
||||||
|
import com.fastbee.data.service.gis.IGisDeviceService;
|
||||||
|
import com.fastbee.iot.domain.Device;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
@Api(tags = "GIS设备")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/gis/device")
|
||||||
|
public class GisDeviceController extends BaseController {
|
||||||
|
@Autowired
|
||||||
|
private IGisDeviceService gisDeviceService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取设备数量和列表
|
||||||
|
*/
|
||||||
|
@ApiOperation("获取设备数量和列表")
|
||||||
|
@GetMapping("/totalAndList")
|
||||||
|
public AjaxResult totalAndList(Device device) {
|
||||||
|
return AjaxResult.success(gisDeviceService.totalAndList(device));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据设备id获取实时数据
|
||||||
|
*/
|
||||||
|
@GetMapping(value = "/getRealTimeDataByDevicerId")
|
||||||
|
public AjaxResult getRealTimeDataByDevicerId(Long deviceId)
|
||||||
|
{
|
||||||
|
return success(gisDeviceService.getRealTimeDataByDevicerId(deviceId));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据设备id获取流量水量
|
||||||
|
*/
|
||||||
|
@GetMapping(value = "/getDeviceLogCurves")
|
||||||
|
public AjaxResult getDeviceLogCurves(Long deviceId)
|
||||||
|
{
|
||||||
|
return success(gisDeviceService.getDeviceLogCurves(deviceId));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,115 @@
|
|||||||
|
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.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.waterele.domain.MaWatereleRecord;
|
||||||
|
import com.fastbee.waterele.domain.dto.MaGuangaiRecordDto;
|
||||||
|
import com.fastbee.waterele.domain.dto.MaWatereleRecordDto;
|
||||||
|
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 = "设备详情数据")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/device/detail")
|
||||||
|
public class DeviceDetailController extends BaseController {
|
||||||
|
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
IDeviceDetailService deviceDetailService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询设备刷卡记录
|
||||||
|
* @param maWatereleRecordDto 传参
|
||||||
|
* @return com.fastbee.common.core.domain.AjaxResult
|
||||||
|
*/
|
||||||
|
@ApiOperation("查询刷卡记录")
|
||||||
|
@GetMapping("/shuakaRecord")
|
||||||
|
public AjaxResult shuakaRecord(MaWatereleRecordDto maWatereleRecordDto)
|
||||||
|
{
|
||||||
|
if (null == maWatereleRecordDto.getDeviceId() || maWatereleRecordDto.getDeviceId() == 0L) {
|
||||||
|
return AjaxResult.error("请选择设备");
|
||||||
|
}
|
||||||
|
List<MaWatereleRecord> list = deviceDetailService.shuakaRecord(maWatereleRecordDto);
|
||||||
|
return AjaxResult.success(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询灌溉记录
|
||||||
|
* @param maWatereleRecordDto 传参
|
||||||
|
* @return com.fastbee.common.core.domain.AjaxResult
|
||||||
|
*/
|
||||||
|
@ApiOperation("查询灌溉记录")
|
||||||
|
@GetMapping("/guangaiRecord")
|
||||||
|
public AjaxResult guangaiRecord(MaGuangaiRecordDto maWatereleRecordDto)
|
||||||
|
{
|
||||||
|
if (null == maWatereleRecordDto.getDeviceId() || maWatereleRecordDto.getDeviceId() == 0L) {
|
||||||
|
return AjaxResult.error("请选择设备");
|
||||||
|
}
|
||||||
|
List<MaGuangaiRecordDto> list = deviceDetailService.guangaiRecord(maWatereleRecordDto);
|
||||||
|
return AjaxResult.success(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取绑定设备列表
|
||||||
|
* @param ids 传参
|
||||||
|
* @return com.fastbee.common.core.domain.AjaxResult
|
||||||
|
*/
|
||||||
|
@ApiOperation("获取绑定设备列表")
|
||||||
|
@GetMapping("/getBindDevices")
|
||||||
|
public AjaxResult getBindDevices(String ids)
|
||||||
|
{
|
||||||
|
List<Device> list = deviceDetailService.getBindDevices(ids);
|
||||||
|
return AjaxResult.success(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询供电数据
|
||||||
|
* @param queryLogVo 传参
|
||||||
|
* @return com.fastbee.common.core.domain.AjaxResult
|
||||||
|
*/
|
||||||
|
@ApiOperation("查询供电数据")
|
||||||
|
@GetMapping("/gongdianChart")
|
||||||
|
public AjaxResult gongdianChart(QueryLogVo queryLogVo)
|
||||||
|
{
|
||||||
|
if (null == queryLogVo.getDeviceId() || queryLogVo.getDeviceId() == 0L) {
|
||||||
|
return AjaxResult.error("请选择设备");
|
||||||
|
}
|
||||||
|
List<HashMap<String, Object>> list = deviceDetailService.gongdianChart(queryLogVo);
|
||||||
|
return AjaxResult.success(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询巡检记录
|
||||||
|
* @param queryLogVo 传参
|
||||||
|
* @return com.fastbee.common.core.domain.AjaxResult
|
||||||
|
*/
|
||||||
|
@ApiOperation("查询巡检记录")
|
||||||
|
@GetMapping("/xunjianRecord")
|
||||||
|
public AjaxResult xunjianRecord(QueryLogVo queryLogVo)
|
||||||
|
{
|
||||||
|
if (null == queryLogVo.getDeviceId() || queryLogVo.getDeviceId() == 0L) {
|
||||||
|
return AjaxResult.error("请选择设备");
|
||||||
|
}
|
||||||
|
List<XjInspectionRecords> list = deviceDetailService.xunjianRecord(queryLogVo);
|
||||||
|
return AjaxResult.success(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package com.fastbee.data.service.devicedetail;
|
||||||
|
|
||||||
|
import com.fastbee.common.model.vo.iot.QueryLogVo;
|
||||||
|
import com.fastbee.iot.domain.Device;
|
||||||
|
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.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface IDeviceDetailService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取刷卡记录
|
||||||
|
* @param maWatereleRecordDto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<MaWatereleRecord> shuakaRecord(MaWatereleRecordDto maWatereleRecordDto);
|
||||||
|
|
||||||
|
List<MaGuangaiRecordDto> guangaiRecord(MaGuangaiRecordDto maWatereleRecordDto);
|
||||||
|
|
||||||
|
List<Device> getBindDevices(String ids);
|
||||||
|
|
||||||
|
List<HashMap<String, Object>> gongdianChart(QueryLogVo queryLogVo);
|
||||||
|
|
||||||
|
List<XjInspectionRecords> xunjianRecord(QueryLogVo queryLogVo);
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
package com.fastbee.data.service.devicedetail.impl;
|
||||||
|
|
||||||
|
import com.fastbee.common.model.vo.iot.QueryLogVo;
|
||||||
|
import com.fastbee.data.service.devicedetail.IDeviceDetailService;
|
||||||
|
import com.fastbee.iot.domain.Device;
|
||||||
|
import com.fastbee.iot.mapper.DeviceMapper;
|
||||||
|
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 org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class DeviceDetailServiceImpl implements IDeviceDetailService {
|
||||||
|
|
||||||
|
private final DeviceMapper deviceMapper;
|
||||||
|
|
||||||
|
public DeviceDetailServiceImpl(DeviceMapper deviceMapper) {
|
||||||
|
this.deviceMapper = deviceMapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<MaWatereleRecord> shuakaRecord(MaWatereleRecordDto maWatereleRecordDto) {
|
||||||
|
//todo
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<MaGuangaiRecordDto> guangaiRecord(MaGuangaiRecordDto maWatereleRecordDto) {
|
||||||
|
//todo
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Device> getBindDevices(String ids) {
|
||||||
|
String[] idArray = ids.split(",");
|
||||||
|
List<Long> idList = new ArrayList<>();
|
||||||
|
for (String id : idArray) {
|
||||||
|
try {
|
||||||
|
idList.add(Long.parseLong(id));
|
||||||
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
List<Device> devices = deviceMapper.selectDeviceListByDeviceIds(idList);
|
||||||
|
return devices;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<HashMap<String, Object>> gongdianChart(QueryLogVo queryLogVo) {
|
||||||
|
//todo
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<XjInspectionRecords> xunjianRecord(QueryLogVo queryLogVo) {
|
||||||
|
//todo
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.fastbee.data.service.gis;
|
||||||
|
|
||||||
|
import com.fastbee.common.model.vo.iot.GisDeviceListVo;
|
||||||
|
import com.fastbee.iot.domain.Device;
|
||||||
|
|
||||||
|
public interface IGisDeviceService {
|
||||||
|
|
||||||
|
public GisDeviceListVo totalAndList(Device device);
|
||||||
|
|
||||||
|
Object getRealTimeDataByDevicerId(Long deviceId);
|
||||||
|
|
||||||
|
Object getDeviceLogCurves(Long deviceId);
|
||||||
|
}
|
@ -0,0 +1,260 @@
|
|||||||
|
package com.fastbee.data.service.gis.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateTime;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import com.alibaba.fastjson2.JSON;
|
||||||
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
|
import com.fastbee.common.model.vo.TreeItemVo;
|
||||||
|
import com.fastbee.common.model.vo.iot.GisDeviceListVo;
|
||||||
|
import com.fastbee.common.utils.DateUtils;
|
||||||
|
import com.fastbee.common.utils.SecurityUtils;
|
||||||
|
import com.fastbee.common.utils.StringUtils;
|
||||||
|
import com.fastbee.data.service.gis.IGisDeviceService;
|
||||||
|
import com.fastbee.iot.domain.Device;
|
||||||
|
import com.fastbee.iot.domain.DeviceLog;
|
||||||
|
import com.fastbee.iot.domain.Product;
|
||||||
|
import com.fastbee.iot.domain.ThingsModel;
|
||||||
|
import com.fastbee.iot.mapper.DeviceMapper;
|
||||||
|
import com.fastbee.iot.mapper.ProductMapper;
|
||||||
|
import com.fastbee.iot.service.*;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class GisDeviceServiceImpl implements IGisDeviceService {
|
||||||
|
|
||||||
|
private final DeviceMapper deviceMapper;
|
||||||
|
private final ProductMapper productMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public IDeviceService iDeviceService;
|
||||||
|
@Autowired
|
||||||
|
public IProductService iProductService;
|
||||||
|
@Autowired
|
||||||
|
private IDeviceLogService logService;
|
||||||
|
|
||||||
|
// @Resource
|
||||||
|
// DeviceInfoCacheService deviceInfoCacheService;
|
||||||
|
@Autowired
|
||||||
|
private IAlertService iAlertService;
|
||||||
|
@Autowired
|
||||||
|
private IThingsModelService thingsModelService;
|
||||||
|
|
||||||
|
public GisDeviceServiceImpl(@Qualifier("deviceMapper") DeviceMapper deviceMapper, @Qualifier("productMapper") ProductMapper productMapper) {
|
||||||
|
this.deviceMapper = deviceMapper;
|
||||||
|
this.productMapper = productMapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GisDeviceListVo totalAndList(Device device) {
|
||||||
|
List<Product> productEntities = productMapper.selectProductList(new Product());
|
||||||
|
Long userId = SecurityUtils.getUserId();
|
||||||
|
List<TreeItemVo> productContainDeviceListVos = new ArrayList<>();
|
||||||
|
int count = 0;
|
||||||
|
int onLineCount = 0;
|
||||||
|
GisDeviceListVo deviceListVo = new GisDeviceListVo();
|
||||||
|
for (Product productEntity : productEntities) {
|
||||||
|
TreeItemVo treeItemVo = new TreeItemVo();
|
||||||
|
treeItemVo.setId(1000000 + productEntity.getProductId());
|
||||||
|
treeItemVo.setName(productEntity.getProductName());
|
||||||
|
List<Device> deviceEntities = new ArrayList<>();
|
||||||
|
Device deviceEntity = new Device();
|
||||||
|
deviceEntity.setProductId(productEntity.getProductId());
|
||||||
|
deviceEntity.setStatus(device.getStatus());
|
||||||
|
deviceEntity.setDeviceNameOrSerialNumber(device.getDeviceNameOrSerialNumber());
|
||||||
|
if (userId.equals(1L)) {
|
||||||
|
deviceEntities = deviceMapper.selectDeviceListNotUser(deviceEntity);
|
||||||
|
} else {
|
||||||
|
deviceEntities = deviceMapper.selectDeviceList(deviceEntity);
|
||||||
|
}
|
||||||
|
count += deviceEntities.size();
|
||||||
|
List<TreeItemVo> treeItemVoList = new ArrayList<>();
|
||||||
|
for (Device deviceEntity1 : deviceEntities) {
|
||||||
|
TreeItemVo devItem = new TreeItemVo();
|
||||||
|
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);
|
||||||
|
treeItemVoList.add(devItem);
|
||||||
|
if (deviceEntity1.getStatus() == 3) {
|
||||||
|
onLineCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
treeItemVo.setChildren(treeItemVoList);
|
||||||
|
productContainDeviceListVos.add(treeItemVo);
|
||||||
|
}
|
||||||
|
deviceListVo.setProductContainDeviceList(productContainDeviceListVos);
|
||||||
|
deviceListVo.setCount(count);
|
||||||
|
deviceListVo.setOnLineCount(onLineCount);
|
||||||
|
return deviceListVo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getRealTimeDataByDevicerId(Long deviceId) {
|
||||||
|
HashMap<String, Object> rMap = new HashMap<String, Object>() {
|
||||||
|
};
|
||||||
|
if (deviceId == null) {
|
||||||
|
throw new RuntimeException("请上传devicerId");
|
||||||
|
}
|
||||||
|
Device device = iDeviceService.selectDeviceByDeviceId(deviceId);
|
||||||
|
if (device == null) {
|
||||||
|
throw new RuntimeException("未查到该设备");
|
||||||
|
}
|
||||||
|
ThingsModel thingsModel1 = new ThingsModel();
|
||||||
|
thingsModel1.setProductId(device.getProductId());
|
||||||
|
List<ThingsModel> thingsModelEntities = thingsModelService.selectThingsModelList(thingsModel1);
|
||||||
|
// List<ThingsModelValueItem> thingsModelValueItems = deviceInfoCacheService.getDeviceInfoCache(device.getDeviceId());
|
||||||
|
// List<ThingsModelValueItem> thingsModelValueItems = deviceInfoCacheService.getCacheDeviceStatus(device.getProductId(),
|
||||||
|
// device.getSerialNumber());
|
||||||
|
DateTime dateTime = DateUtil.date(new Date());
|
||||||
|
List<DeviceLog> deviceLogsAll = new ArrayList<>();
|
||||||
|
List<DeviceLog> 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<String, List<DeviceLog>> collect = deviceLogsAll.stream().sorted(Comparator
|
||||||
|
.comparing(DeviceLog::getCreateTime, Comparator
|
||||||
|
.nullsFirst(Comparator.naturalOrder())).reversed()).collect(Collectors.groupingBy(t -> t.getIdentity()));
|
||||||
|
for (ThingsModel thingsModel : thingsModelEntities) {
|
||||||
|
HashMap<Object, Object> hashMap = new HashMap<Object, Object>() {{
|
||||||
|
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<DeviceLog> 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);
|
||||||
|
}
|
||||||
|
hashMap.put("value", deviceLogs1.get(0).getLogValue());
|
||||||
|
}
|
||||||
|
} else if (hashMap.size() > 0) {
|
||||||
|
List<DeviceLog> deviceLogs2 = collect.get(thingsModel.getIdentifier());
|
||||||
|
if (deviceLogs2 != null) {
|
||||||
|
hashMap.put("value", deviceLogs2.get(0).getLogValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rMap.put(thingsModel.getIdentifier(), hashMap);
|
||||||
|
}
|
||||||
|
return rMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getDeviceLogCurves(Long deviceId) {
|
||||||
|
if (deviceId == null) {
|
||||||
|
throw new RuntimeException("请上传deviceId");
|
||||||
|
}
|
||||||
|
|
||||||
|
Device device = iDeviceService.selectDeviceByDeviceId(deviceId);
|
||||||
|
if (device == null) {
|
||||||
|
throw new RuntimeException("未查到该设备");
|
||||||
|
}
|
||||||
|
// List<AlertEntity> alertList = getAlertListForDevice(deviceId, device.getProductId());
|
||||||
|
// List<DeviceAlertDto> waterLevelAlert = new ArrayList<>();
|
||||||
|
// List<DeviceAlertDto> rainfallAlert = new ArrayList<>();
|
||||||
|
//
|
||||||
|
// if (!alertList.isEmpty()) {
|
||||||
|
// alertList.forEach(alert -> parseAlert(alert, waterLevelAlert, rainfallAlert));
|
||||||
|
// }
|
||||||
|
Map<String, Object> sumFlow = getDataList(device, "dataSumFlow");
|
||||||
|
Map<String, Object> insFlow = getDataList(device, "dataInsFlow");
|
||||||
|
Map<String, Object> 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);
|
||||||
|
return rMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
// private List<AlertEntity> getAlertListForDevice(Long deviceId, Long productId) {
|
||||||
|
// AlertEntity alert = new AlertEntity();
|
||||||
|
// alert.setDeviceId(deviceId);
|
||||||
|
// alert.setProductId(productId);
|
||||||
|
// return iAlertService.selectAlertList(alert);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// private void parseAlert(AlertEntity alert, List<DeviceAlertDto> waterLevelAlert, List<DeviceAlertDto> rainfallAlert) {
|
||||||
|
// JSONArray triggers = JSON.parseArray(alert.getTriggers());
|
||||||
|
// for (Object obj : triggers) {
|
||||||
|
// Map<String, Object> trigger = (Map<String, Object>) obj;
|
||||||
|
// Float value = Float.valueOf(trigger.get("value").toString());
|
||||||
|
// if (alert.getAlertType() == 1) {
|
||||||
|
// waterLevelAlert.add(new DeviceAlertDto(alert.getAlertName(), "#FF0000", value));
|
||||||
|
// } else if (alert.getAlertType() == 2) {
|
||||||
|
// rainfallAlert.add(new DeviceAlertDto(alert.getAlertName(), "#FFFF00", value));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
private HashMap<String, Object> getDataList(Device device, String identity) {
|
||||||
|
HashMap<String, Object> dataListMap = new HashMap<>();
|
||||||
|
HashMap<String, Object> kvHashMap = new HashMap<>();
|
||||||
|
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));
|
||||||
|
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");
|
||||||
|
List<HashMap<String, Object>> reMap = logService.selectDayData(kvHashMap);
|
||||||
|
Map<String, Map<String, Object>> create_time = new HashMap<>();
|
||||||
|
if (reMap != null) {
|
||||||
|
create_time = reMap.stream().collect(Collectors.toMap(t -> {
|
||||||
|
return DateUtil.date((LocalDateTime) t.get("create_time")).toString("HH");
|
||||||
|
}, t -> t, (t, t1) -> t1));
|
||||||
|
}
|
||||||
|
DateTime date = DateUtil.date();
|
||||||
|
ArrayList<Object> jiangyvliang = new ArrayList<>();
|
||||||
|
ArrayList<Object> time = new ArrayList<>();
|
||||||
|
dataListMap.put("time", time);
|
||||||
|
dataListMap.put("data", jiangyvliang);
|
||||||
|
for (int i = 0; i < 24; i++) {
|
||||||
|
String s = DateUtil.offsetHour(DateUtil.offsetHour(date, -23), i).toString("HH");
|
||||||
|
time.add(s);
|
||||||
|
Map<String, Object> map = create_time.get(s);
|
||||||
|
if (map != null) {
|
||||||
|
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{
|
||||||
|
jiangyvliang.add(create_time.get(s).get("avgLogValue"));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
jiangyvliang.add(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dataListMap;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -136,6 +136,12 @@ public class Device extends BaseEntity
|
|||||||
@ApiModelProperty("设备摘要")
|
@ApiModelProperty("设备摘要")
|
||||||
private String summary;
|
private String summary;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备名称编号搜索
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("设备名称编号搜索")
|
||||||
|
private String deviceNameOrSerialNumber;
|
||||||
|
|
||||||
/** 分组ID,用于分组查询 **/
|
/** 分组ID,用于分组查询 **/
|
||||||
@ApiModelProperty("分组ID,用于分组查询")
|
@ApiModelProperty("分组ID,用于分组查询")
|
||||||
private Long groupId;
|
private Long groupId;
|
||||||
|
@ -136,5 +136,11 @@ public class ThingsModel extends BaseEntity
|
|||||||
private String language;
|
private String language;
|
||||||
|
|
||||||
private List<String> modelIdList;
|
private List<String> modelIdList;
|
||||||
|
public ThingsModel() {
|
||||||
|
|
||||||
|
}
|
||||||
|
public ThingsModel(Long productId) {
|
||||||
|
this.productId = productId;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,9 @@ import org.apache.ibatis.annotations.Param;
|
|||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设备日志Mapper接口
|
* 设备日志Mapper接口
|
||||||
@ -134,4 +136,17 @@ public interface DeviceLogMapper
|
|||||||
* @return com.fastbee.common.core.domain.AjaxResult
|
* @return com.fastbee.common.core.domain.AjaxResult
|
||||||
*/
|
*/
|
||||||
List<ThingsModelLogCountVO> countThingsModelInvoke(DataCenterParam dataCenterParam);
|
List<ThingsModelLogCountVO> countThingsModelInvoke(DataCenterParam dataCenterParam);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建数据库表
|
||||||
|
*
|
||||||
|
// * @param tableName 表名称
|
||||||
|
*/
|
||||||
|
// int createTable(@Param("tableName") String tableName, @Param("id") Long id);
|
||||||
|
|
||||||
|
List<HashMap<String, Object>> selectDayData(Map<String, Object> kvHashMap);
|
||||||
|
|
||||||
|
void createTableByDate(String ymTableName);
|
||||||
|
|
||||||
|
List<DeviceLog> selectDataList(HashMap<String, Object> kvHashMap);
|
||||||
}
|
}
|
||||||
|
@ -93,7 +93,7 @@ public interface DeviceMapper
|
|||||||
*/
|
*/
|
||||||
public int updateDeviceThingsModelValue(ThingsModelValuesInput input);
|
public int updateDeviceThingsModelValue(ThingsModelValuesInput input);
|
||||||
|
|
||||||
|
public List<Device> selectDeviceListNotUser(Device deviceEntity);
|
||||||
/**
|
/**
|
||||||
* 查询设备列表
|
* 查询设备列表
|
||||||
*
|
*
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.fastbee.iot.mapper;
|
package com.fastbee.iot.mapper;
|
||||||
|
|
||||||
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -8,6 +8,8 @@ import com.fastbee.iot.model.MonitorModel;
|
|||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import com.fastbee.iot.model.ThingsModelLogCountVO;
|
import com.fastbee.iot.model.ThingsModelLogCountVO;
|
||||||
import com.fastbee.iot.model.param.DataCenterParam;
|
import com.fastbee.iot.model.param.DataCenterParam;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -106,4 +108,6 @@ public interface IDeviceLogService
|
|||||||
* @return com.fastbee.common.core.domain.AjaxResult
|
* @return com.fastbee.common.core.domain.AjaxResult
|
||||||
*/
|
*/
|
||||||
List<ThingsModelLogCountVO> countThingsModelInvoke(DataCenterParam dataCenterParam);
|
List<ThingsModelLogCountVO> countThingsModelInvoke(DataCenterParam dataCenterParam);
|
||||||
|
|
||||||
|
List<HashMap<String, Object>> selectDayData(HashMap<String, Object> kvHashMap);
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,7 @@ import com.fastbee.common.core.thingsModel.ThingsModelValuesInput;
|
|||||||
import com.fastbee.iot.model.dto.ThingsModelDTO;
|
import com.fastbee.iot.model.dto.ThingsModelDTO;
|
||||||
import org.quartz.SchedulerException;
|
import org.quartz.SchedulerException;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -329,4 +330,9 @@ public interface IDeviceService
|
|||||||
*/
|
*/
|
||||||
List<DeviceGroup> listDeviceGroupByGroupIds(List<Long> groupIds);
|
List<DeviceGroup> listDeviceGroupByGroupIds(List<Long> groupIds);
|
||||||
|
|
||||||
|
List<Map<String,Object>> devicePointInfo(Device device);
|
||||||
|
|
||||||
|
|
||||||
|
ArrayList<Object> getDeviceLogAllCurves(Long deviceId, String beginTime, String endTime);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
package com.fastbee.iot.service.impl;
|
package com.fastbee.iot.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.fastbee.common.utils.DateUtils;
|
import com.fastbee.common.utils.DateUtils;
|
||||||
import com.fastbee.common.utils.StringUtils;
|
import com.fastbee.common.utils.StringUtils;
|
||||||
import com.fastbee.iot.domain.Device;
|
import com.fastbee.iot.domain.Device;
|
||||||
import com.fastbee.iot.domain.DeviceLog;
|
import com.fastbee.iot.domain.DeviceLog;
|
||||||
import com.fastbee.iot.domain.ThingsModel;
|
import com.fastbee.iot.domain.ThingsModel;
|
||||||
|
import com.fastbee.iot.mapper.TableMapper;
|
||||||
import com.fastbee.iot.model.DeviceReport;
|
import com.fastbee.iot.model.DeviceReport;
|
||||||
import com.fastbee.iot.model.HistoryModel;
|
import com.fastbee.iot.model.HistoryModel;
|
||||||
import com.fastbee.iot.service.IDeviceService;
|
import com.fastbee.iot.service.IDeviceService;
|
||||||
@ -44,6 +46,10 @@ public class DeviceLogServiceImpl implements IDeviceLogService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private IDeviceService deviceService;
|
private IDeviceService deviceService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private TableMapper tableMapper;
|
||||||
|
|
||||||
|
private String tableName = "iot_device_log_";
|
||||||
/**
|
/**
|
||||||
* 查询设备日志
|
* 查询设备日志
|
||||||
*
|
*
|
||||||
@ -216,4 +222,26 @@ public class DeviceLogServiceImpl implements IDeviceLogService {
|
|||||||
public List<ThingsModelLogCountVO> countThingsModelInvoke(DataCenterParam dataCenterParam) {
|
public List<ThingsModelLogCountVO> countThingsModelInvoke(DataCenterParam dataCenterParam) {
|
||||||
return logService.countThingsModelInvoke(dataCenterParam);
|
return logService.countThingsModelInvoke(dataCenterParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<HashMap<String, Object>> selectDayData(HashMap<String, Object> kvHashMap) {
|
||||||
|
String serialNumber = (String) kvHashMap.get("serialNumber");
|
||||||
|
if (kvHashMap.get("tableName") == null) {
|
||||||
|
Date date = new Date();
|
||||||
|
String ym = DateUtils.parseDateToStr(DateUtils.YYYYMM, date);
|
||||||
|
kvHashMap.put("tableName", tableName + ym);
|
||||||
|
}
|
||||||
|
if (kvHashMap.get("tableName2") == null) {
|
||||||
|
String ym = DateUtils.parseDateToStr(DateUtils.YYYYMM, DateUtil.offsetMonth(new Date(), -1));
|
||||||
|
kvHashMap.put("tableName2", tableName + ym);
|
||||||
|
}
|
||||||
|
if (tableMapper.getTableByName(kvHashMap.get("tableName").toString()) == null) {
|
||||||
|
deviceLogMapper.createTable(kvHashMap.get("tableName").toString(),1L);
|
||||||
|
}
|
||||||
|
if (tableMapper.getTableByName(kvHashMap.get("tableName2").toString()) == null) {
|
||||||
|
deviceLogMapper.createTable(kvHashMap.get("tableName2").toString(),1L);
|
||||||
|
}
|
||||||
|
return deviceLogMapper.selectDayData(kvHashMap);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ import com.fastbee.iot.mapper.*;
|
|||||||
import com.fastbee.iot.model.*;
|
import com.fastbee.iot.model.*;
|
||||||
import com.fastbee.iot.model.ThingsModelItem.Datatype;
|
import com.fastbee.iot.model.ThingsModelItem.Datatype;
|
||||||
import com.fastbee.iot.model.ThingsModelItem.EnumItem;
|
import com.fastbee.iot.model.ThingsModelItem.EnumItem;
|
||||||
import com.fastbee.iot.model.ThingsModelItem.ThingsModel;
|
import com.fastbee.iot.domain.ThingsModel;
|
||||||
import com.fastbee.iot.model.ThingsModels.*;
|
import com.fastbee.iot.model.ThingsModels.*;
|
||||||
import com.fastbee.iot.model.dto.ThingsModelDTO;
|
import com.fastbee.iot.model.dto.ThingsModelDTO;
|
||||||
import com.fastbee.iot.model.gateWay.SubDeviceListVO;
|
import com.fastbee.iot.model.gateWay.SubDeviceListVO;
|
||||||
@ -623,11 +623,11 @@ public class DeviceServiceImpl implements IDeviceService {
|
|||||||
// 排序
|
// 排序
|
||||||
thingsList = thingsList.stream().sorted(Comparator.comparing(ThingsModelValueItem::getOrder).reversed()).collect(Collectors.toList());
|
thingsList = thingsList.stream().sorted(Comparator.comparing(ThingsModelValueItem::getOrder).reversed()).collect(Collectors.toList());
|
||||||
// 数组类型物模型里面对象赋值
|
// 数组类型物模型里面对象赋值
|
||||||
List<ThingsModel>[] arrayParams = new List[dataType.getArrayCount()];
|
List<com.fastbee.iot.model.ThingsModelItem.ThingsModel>[] arrayParams = new List[dataType.getArrayCount()];
|
||||||
for (int i = 0; i < dataType.getArrayCount(); i++) {
|
for (int i = 0; i < dataType.getArrayCount(); i++) {
|
||||||
List<ThingsModel> thingsModels = new ArrayList<>();
|
List<com.fastbee.iot.model.ThingsModelItem.ThingsModel> thingsModels = new ArrayList<>();
|
||||||
for (int j = 0; j < thingsList.size(); j++) {
|
for (int j = 0; j < thingsList.size(); j++) {
|
||||||
ThingsModel thingsModel = new ThingsModel();
|
com.fastbee.iot.model.ThingsModelItem.ThingsModel thingsModel = new com.fastbee.iot.model.ThingsModelItem.ThingsModel();
|
||||||
BeanUtils.copyProperties(thingsList.get(j), thingsModel);
|
BeanUtils.copyProperties(thingsList.get(j), thingsModel);
|
||||||
String shadow = thingsList.get(j).getShadow();
|
String shadow = thingsList.get(j).getShadow();
|
||||||
if (StringUtils.isNotEmpty(shadow) && !shadow.equals("")) {
|
if (StringUtils.isNotEmpty(shadow) && !shadow.equals("")) {
|
||||||
@ -1592,5 +1592,75 @@ public class DeviceServiceImpl implements IDeviceService {
|
|||||||
return deviceMapper.listDeviceGroupByGroupIds(groupIds);
|
return deviceMapper.listDeviceGroupByGroupIds(groupIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 所有设备点数据
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<Map<String, Object>> devicePointInfo(Device devices) {
|
||||||
|
ArrayList<Map<String, Object>> resultList = new ArrayList<>();
|
||||||
|
List<Device> deviceList = selectDeviceList(devices);
|
||||||
|
|
||||||
|
for (Device device : deviceList) {
|
||||||
|
HashMap<String, Object> itemMap = new HashMap<>();
|
||||||
|
resultList.add(itemMap);
|
||||||
|
Integer integer = 0;
|
||||||
|
|
||||||
|
itemMap.put("device",device);
|
||||||
|
if (device.getStatus() != null) {
|
||||||
|
if (device.getStatus().equals(4)) {
|
||||||
|
integer = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
itemMap.put("online",integer);
|
||||||
|
|
||||||
|
}
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ArrayList<Object> getDeviceLogAllCurves(Long deviceId, String beginTime, String endTime) {
|
||||||
|
if (deviceId == null) {
|
||||||
|
throw new RuntimeException("请上传devicerId");
|
||||||
|
}
|
||||||
|
|
||||||
|
Device device = selectDeviceByDeviceId(deviceId);
|
||||||
|
if (device == null) {
|
||||||
|
throw new RuntimeException("未查到该设备");
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<Object> list = new ArrayList<>();
|
||||||
|
HashMap<String, Object> kvHashMap = new HashMap<>();
|
||||||
|
kvHashMap.put("serialNumber", device.getSerialNumber());
|
||||||
|
kvHashMap.put("beginTime", beginTime);
|
||||||
|
kvHashMap.put("endTime", endTime);
|
||||||
|
List<ThingsModel> thingsModels = thingsModelService.selectThingsModelList(new ThingsModel(device.getProductId()));
|
||||||
|
List<DeviceLog> deviceLogs= logService.selectDataList(kvHashMap);
|
||||||
|
Map<String, List<DeviceLog>> collect = deviceLogs != null ? deviceLogs.stream().collect(Collectors.groupingBy(t -> t.getIdentity())): new HashMap();
|
||||||
|
for (ThingsModel modelDevice : thingsModels) {
|
||||||
|
HashMap<String, Object> dataListMap = new HashMap<>();
|
||||||
|
|
||||||
|
List<DeviceLog> deviceLogs1 = collect.get(modelDevice.getIdentifier());
|
||||||
|
dataListMap.put("name", modelDevice.getModelName());
|
||||||
|
if (StringUtils.isNotEmpty(modelDevice.getSpecs())) {
|
||||||
|
cn.hutool.json.JSONObject object = new cn.hutool.json.JSONObject(modelDevice.getSpecs());
|
||||||
|
dataListMap.put("unit",object.get("unit"));
|
||||||
|
}else{
|
||||||
|
dataListMap.put("unit","");
|
||||||
|
}
|
||||||
|
if (deviceLogs1 != null) {
|
||||||
|
System.out.println(deviceLogs1);
|
||||||
|
dataListMap.put("time",deviceLogs1.stream().map(t->t.getCreateTime()).collect(Collectors.toList()));
|
||||||
|
dataListMap.put("data",deviceLogs1.stream().map(t->t.getLogValue()).collect(Collectors.toList()));
|
||||||
|
}else{
|
||||||
|
dataListMap.put("time",new ArrayList<>());
|
||||||
|
dataListMap.put("data",new ArrayList<>());
|
||||||
|
}
|
||||||
|
list.add(dataListMap);
|
||||||
|
}
|
||||||
|
return list ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import com.fastbee.iot.tdengine.service.model.TdLogDto;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -73,4 +74,6 @@ public interface ILogService {
|
|||||||
List<ThingsModelLogCountVO> countThingsModelInvoke(DataCenterParam dataCenterParam);
|
List<ThingsModelLogCountVO> countThingsModelInvoke(DataCenterParam dataCenterParam);
|
||||||
|
|
||||||
DeviceLog selectLastReport(DeviceLog deviceLog);
|
DeviceLog selectLastReport(DeviceLog deviceLog);
|
||||||
|
|
||||||
|
List<DeviceLog> selectDataList(HashMap<String, Object> kvHashMap);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package com.fastbee.iot.tdengine.service.impl;
|
package com.fastbee.iot.tdengine.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateTime;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.fastbee.common.utils.DateUtils;
|
import com.fastbee.common.utils.DateUtils;
|
||||||
import com.fastbee.iot.domain.Device;
|
import com.fastbee.iot.domain.Device;
|
||||||
import com.fastbee.iot.domain.DeviceLog;
|
import com.fastbee.iot.domain.DeviceLog;
|
||||||
@ -15,9 +17,7 @@ import com.fastbee.iot.tdengine.service.model.TdLogDto;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.Date;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -28,9 +28,9 @@ import java.util.stream.Collectors;
|
|||||||
*/
|
*/
|
||||||
public class MySqlLogServiceImpl implements ILogService {
|
public class MySqlLogServiceImpl implements ILogService {
|
||||||
|
|
||||||
private String tableName = "iot_device_log_";
|
|
||||||
|
|
||||||
private DeviceLogMapper deviceLogMapper;
|
private DeviceLogMapper deviceLogMapper;
|
||||||
|
private String tableName = "iot_device_log_";
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private TableMapper tableMapper;
|
private TableMapper tableMapper;
|
||||||
@ -148,4 +148,35 @@ public class MySqlLogServiceImpl implements ILogService {
|
|||||||
public DeviceLog selectLastReport(DeviceLog deviceLog) {
|
public DeviceLog selectLastReport(DeviceLog deviceLog) {
|
||||||
return deviceLogMapper.selectLastReport(deviceLog);
|
return deviceLogMapper.selectLastReport(deviceLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DeviceLog> selectDataList(HashMap<String, Object> kvHashMap) {
|
||||||
|
if (kvHashMap.get("endTime") != null) {
|
||||||
|
DateTime endTime = DateUtil.parse(kvHashMap.get("endTime").toString());
|
||||||
|
String yyyyMM = endTime.toString("yyyyMM");
|
||||||
|
String yyyyMM2 = DateUtil.offsetMonth(endTime, -1).toString("yyyyMM");
|
||||||
|
if (tableMapper.getTableByName(tableName + yyyyMM) == null) {
|
||||||
|
deviceLogMapper.createTableByDate(tableName + yyyyMM);
|
||||||
|
}
|
||||||
|
if (tableMapper.getTableByName(tableName + yyyyMM2) == null) {
|
||||||
|
deviceLogMapper.createTableByDate(tableName + yyyyMM2);
|
||||||
|
}
|
||||||
|
kvHashMap.put("tableName", tableName + yyyyMM);
|
||||||
|
kvHashMap.put("tableName2", tableName + yyyyMM2);
|
||||||
|
}
|
||||||
|
if (kvHashMap.get("tableName") == null) {
|
||||||
|
Date date = new Date();
|
||||||
|
String ym = DateUtils.parseDateToStr(DateUtils.YYYYMM, date);
|
||||||
|
String ym2 = DateUtils.parseDateToStr(DateUtils.YYYYMM, DateUtil.offsetMonth(new Date(), -1));
|
||||||
|
if (tableMapper.getTableByName(tableName + ym) == null) {
|
||||||
|
deviceLogMapper.createTableByDate(tableName + ym);
|
||||||
|
}
|
||||||
|
if (tableMapper.getTableByName(tableName + ym2) == null) {
|
||||||
|
deviceLogMapper.createTableByDate(tableName + ym2);
|
||||||
|
}
|
||||||
|
kvHashMap.put("tableName", tableName + ym);
|
||||||
|
kvHashMap.put("tableName2", tableName + ym2);
|
||||||
|
}
|
||||||
|
return deviceLogMapper.selectDataList(kvHashMap);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,8 @@ import com.fastbee.iot.tdengine.service.model.TdLogDto;
|
|||||||
import com.fastbee.iot.util.SnowflakeIdWorker;
|
import com.fastbee.iot.util.SnowflakeIdWorker;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -162,4 +164,9 @@ public class TdengineLogServiceImpl implements ILogService {
|
|||||||
public DeviceLog selectLastReport(DeviceLog deviceLog) {
|
public DeviceLog selectLastReport(DeviceLog deviceLog) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DeviceLog> selectDataList(HashMap<String, Object> kvHashMap) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -262,6 +262,154 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
<select id="selectDataList" resultType="com.fastbee.iot.domain.DeviceLog">
|
||||||
|
select log_id,identity,device_id,device_name,serial_number,log_value,user_id,user_name,log_type,is_monitor,mode
|
||||||
|
,create_by,create_time,tenant_id,tenant_name,remark
|
||||||
|
from ${tableName}
|
||||||
|
<where>
|
||||||
|
<if test="identity != null and identity != ''">and identity = #{identity}</if>
|
||||||
|
<if test="deviceId != null and deviceId !=0">and device_id = #{deviceId}</if>
|
||||||
|
<if test="serialNumber != null and serialNumber !=''">and serial_number = #{serialNumber}</if>
|
||||||
|
<if test="beginTime != null and beginTime!= ''"><!-- 开始时间检索 -->
|
||||||
|
and date_format(create_time,'%y%m%d%H%i%s') >= date_format(#{beginTime},'%y%m%d%H%i%s')
|
||||||
|
</if>
|
||||||
|
<if test=" endTime != null and endTime != ''"><!-- 结束时间检索 -->
|
||||||
|
and date_format(create_time,'%y%m%d%H%i%s') <= date_format(#{endTime},'%y%m%d%H%i%s')
|
||||||
|
</if>
|
||||||
|
<if test="identitys != null and identitys != '' and identitys.size > 0">
|
||||||
|
AND identity in
|
||||||
|
<foreach item="identity" collection="identitys" open="(" separator="," close=")">
|
||||||
|
#{identity}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
union
|
||||||
|
select log_id,identity,device_id,device_name,serial_number,log_value,user_id,user_name,log_type,is_monitor,mode
|
||||||
|
,create_by,create_time,tenant_id,tenant_name,remark
|
||||||
|
from ${tableName2}
|
||||||
|
<where>
|
||||||
|
<if test="identity != null and identity != ''">and identity = #{identity}</if>
|
||||||
|
<if test="deviceId != null and deviceId !=0">and device_id = #{deviceId}</if>
|
||||||
|
<if test="serialNumber != null and serialNumber !=''">and serial_number = #{serialNumber}</if>
|
||||||
|
<if test="beginTime != null and beginTime!= ''"><!-- 开始时间检索 -->
|
||||||
|
and date_format(create_time,'%y%m%d%H%i%s') >= date_format(#{beginTime},'%y%m%d%H%i%s')
|
||||||
|
</if>
|
||||||
|
<if test=" endTime != null and endTime != ''"><!-- 结束时间检索 -->
|
||||||
|
and date_format(create_time,'%y%m%d%H%i%s') <= date_format(#{endTime},'%y%m%d%H%i%s')
|
||||||
|
</if>
|
||||||
|
<if test="identitys != null and identitys != '' and identitys.size > 0">
|
||||||
|
AND identity in
|
||||||
|
<foreach item="identity" collection="identitys" open="(" separator="," close=")">
|
||||||
|
#{identity}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
|
||||||
|
order by create_time desc
|
||||||
|
</select>
|
||||||
|
<update id="createTableByDate">
|
||||||
|
CREATE TABLE `${tableName}`
|
||||||
|
(
|
||||||
|
`log_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '设备日志ID',
|
||||||
|
`identity` varchar(64) NOT NULL COMMENT '标识符',
|
||||||
|
`log_type` tinyint(1) NOT NULL COMMENT '类型(1=属性上报,2=调用功能,3=事件上报,4=设备升级,5=设备上线,6=设备离线)',
|
||||||
|
`log_value` decimal(18, 3) default 0 comment '日志值',
|
||||||
|
`device_id` bigint(20) DEFAULT NULL COMMENT '设备ID',
|
||||||
|
`device_name` varchar(64) DEFAULT NULL COMMENT '设备名称',
|
||||||
|
`serial_number` varchar(64) DEFAULT NULL COMMENT '设备编号',
|
||||||
|
`is_monitor` tinyint(1) unsigned zerofill DEFAULT '0' COMMENT '是否监测数据(1=是,0=否)',
|
||||||
|
`mode` tinyint(1) unsigned zerofill DEFAULT '0' COMMENT '模式(1=影子模式,2=在线模式,3=其他)',
|
||||||
|
`user_id` bigint(20) DEFAULT NULL COMMENT '用户ID',
|
||||||
|
`user_name` varchar(30) DEFAULT '' COMMENT '用户昵称',
|
||||||
|
`tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID',
|
||||||
|
`tenant_name` varchar(30) DEFAULT '' COMMENT '租户名称',
|
||||||
|
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`remark` varchar(200) DEFAULT NULL COMMENT '备注',
|
||||||
|
PRIMARY KEY (`log_id`) USING BTREE,
|
||||||
|
KEY `iot_device_log_index_serial_number` (`serial_number`) USING BTREE,
|
||||||
|
KEY `iot_device_log_index_tenant_id` (`tenant_id`) USING BTREE,
|
||||||
|
KEY `iot_device_log_index_user_id` (`user_id`) USING BTREE,
|
||||||
|
KEY `iot_device_log_index_identity_device_id` (`identity`, `device_id`) USING BTREE,
|
||||||
|
KEY `iot_device_log_index_identity_createTime` (`identity`, `create_time`) USING BTREE
|
||||||
|
) ENGINE = InnoDB
|
||||||
|
AUTO_INCREMENT = 1
|
||||||
|
DEFAULT CHARSET = utf8
|
||||||
|
ROW_FORMAT = DYNAMIC COMMENT ='设备日志';
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<select id="selectDayData" resultType="java.util.Map">
|
||||||
|
select create_time,
|
||||||
|
avg(log_value ) as avgLogValue ,
|
||||||
|
max(log_value ) as maxLogValue ,
|
||||||
|
sum(log_value ) as sumLogValue ,
|
||||||
|
min(log_value ) as minLogValue
|
||||||
|
from ${tableName}
|
||||||
|
<where>
|
||||||
|
<if test="identity != null and identity != ''">and identity = #{identity}</if>
|
||||||
|
<if test="deviceId != null and deviceId !=0">and device_id = #{deviceId}</if>
|
||||||
|
<if test="serialNumber != null and serialNumber !=''">and serial_number = #{serialNumber}</if>
|
||||||
|
<if test="beginTime != null and beginTime!= ''"><!-- 开始时间检索 -->
|
||||||
|
and date_format(create_time,'%y%m%d%H%i%s') >= date_format(#{beginTime},'%y%m%d%H%i%s')
|
||||||
|
</if>
|
||||||
|
<if test=" endTime != null and endTime != ''"><!-- 结束时间检索 -->
|
||||||
|
and date_format(create_time,'%y%m%d%H%i%s') <= date_format(#{endTime},'%y%m%d%H%i%s')
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
group by date_format(create_time,'%Y-%m-%d %H')
|
||||||
|
union
|
||||||
|
select create_time,
|
||||||
|
avg(log_value ) as avgLogValue ,
|
||||||
|
max(log_value ) as maxLogValue ,
|
||||||
|
sum(log_value ) as sumLogValue ,
|
||||||
|
min(log_value ) as minLogValue
|
||||||
|
from ${tableName2}
|
||||||
|
<where>
|
||||||
|
<if test="identity != null and identity != ''">and identity = #{identity}</if>
|
||||||
|
<if test="deviceId != null and deviceId !=0">and device_id = #{deviceId}</if>
|
||||||
|
<if test="serialNumber != null and serialNumber !=''">and serial_number = #{serialNumber}</if>
|
||||||
|
<if test="beginTime != null and beginTime!= ''"><!-- 开始时间检索 -->
|
||||||
|
and date_format(create_time,'%y%m%d%H%i%s') >= date_format(#{beginTime},'%y%m%d%H%i%s')
|
||||||
|
</if>
|
||||||
|
<if test=" endTime != null and endTime != ''"><!-- 结束时间检索 -->
|
||||||
|
and date_format(create_time,'%y%m%d%H%i%s') <= date_format(#{endTime},'%y%m%d%H%i%s')
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
group by date_format(create_time,'%Y-%m-%d %H')
|
||||||
|
|
||||||
|
order by create_time desc
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<update id="createTable">
|
||||||
|
CREATE TABLE ${tableName}
|
||||||
|
(
|
||||||
|
`log_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '设备监测信息ID',
|
||||||
|
`identity` varchar(64) NOT NULL COMMENT '标识符',
|
||||||
|
`model_name` varchar(255) DEFAULT NULL COMMENT '物模型名称',
|
||||||
|
`log_type` tinyint(1) NOT NULL COMMENT '类型(1=属性上报,2=调用功能,3=事件上报,4=设备升级,5=设备上线,6=设备离线)',
|
||||||
|
`log_value` varchar(64) NOT NULL COMMENT '日志值',
|
||||||
|
`device_id` bigint(20) DEFAULT NULL COMMENT '设备ID',
|
||||||
|
`device_name` varchar(64) DEFAULT NULL COMMENT '设备名称',
|
||||||
|
`serial_number` varchar(64) DEFAULT NULL COMMENT '设备编号',
|
||||||
|
`is_monitor` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0' COMMENT '是否监测数据(1=是,0=否)',
|
||||||
|
`mode` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0' COMMENT '模式(1=影子模式,2=在线模式,3=其他)',
|
||||||
|
`user_id` bigint(20) DEFAULT NULL COMMENT '用户ID',
|
||||||
|
`user_name` varchar(30) DEFAULT '' COMMENT '用户昵称',
|
||||||
|
`tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID',
|
||||||
|
`tenant_name` varchar(30) DEFAULT '' COMMENT '租户名称',
|
||||||
|
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`remark` varchar(200) DEFAULT NULL COMMENT '备注',
|
||||||
|
PRIMARY KEY (`log_id`) USING BTREE,
|
||||||
|
KEY `iot_device_log_index_serial_number` (`serial_number`) USING BTREE,
|
||||||
|
KEY `iot_device_log_index_tenant_id` (`tenant_id`) USING BTREE,
|
||||||
|
KEY `iot_device_log_index_user_id` (`user_id`) USING BTREE,
|
||||||
|
KEY `iot_device_log_index_device_id` (`device_id`) USING BTREE,
|
||||||
|
KEY `index_serialNumber_createTime` (`serial_number`,`create_time`) USING BTREE,
|
||||||
|
KEY `index_isMonitor_serialNumber_createTime` (`serial_number`,`is_monitor`,`create_time`) USING BTREE
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='设备日志';
|
||||||
|
|
||||||
|
</update>
|
||||||
|
|
||||||
<select id="countThingsModelInvoke" resultType="com.fastbee.iot.model.ThingsModelLogCountVO">
|
<select id="countThingsModelInvoke" resultType="com.fastbee.iot.model.ThingsModelLogCountVO">
|
||||||
select identity identifier, min(model_name) modelName, count(identity) count
|
select identity identifier, min(model_name) modelName, count(identity) count
|
||||||
|
@ -287,6 +287,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
select product_id,product_name,device_id,device_name,serial_number,gw_dev_code,is_shadow,is_simulate,status,tenant_id, tenant_name,things_model_value from iot_device where serial_number = #{serialNumber}
|
select product_id,product_name,device_id,device_name,serial_number,gw_dev_code,is_shadow,is_simulate,status,tenant_id, tenant_name,things_model_value from iot_device where serial_number = #{serialNumber}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectDeviceListNotUser" parameterType="com.fastbee.iot.domain.Device" resultMap="DeviceResult">
|
||||||
|
<include refid="selectDeviceShortVo"/>
|
||||||
|
<where>
|
||||||
|
<if test="deviceNameOrSerialNumber != null and deviceNameOrSerialNumber != ''">
|
||||||
|
and (device_name like concat('%', #{deviceNameOrSerialNumber},'%') or
|
||||||
|
serial_number like concat('%',
|
||||||
|
#{deviceNameOrSerialNumber},'%'))
|
||||||
|
</if>
|
||||||
|
<if test="productId != null ">and product_id = #{productId}</if>
|
||||||
|
<if test="status != null ">and status = #{status}</if>
|
||||||
|
</where>
|
||||||
|
order by create_time desc
|
||||||
|
</select>
|
||||||
|
|
||||||
<update id="updateDeviceThingsModelValue" parameterType="com.fastbee.common.core.thingsModel.ThingsModelValuesInput">
|
<update id="updateDeviceThingsModelValue" parameterType="com.fastbee.common.core.thingsModel.ThingsModelValuesInput">
|
||||||
update iot_device set things_model_value=#{stringValue} where device_id = #{deviceId}
|
update iot_device set things_model_value=#{stringValue} where device_id = #{deviceId}
|
||||||
</update>
|
</update>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.fastbee.waterele.domain;
|
package com.fastbee.waterele.domain;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -7,70 +8,96 @@ import lombok.EqualsAndHashCode;
|
|||||||
import com.fastbee.common.annotation.Excel;
|
import com.fastbee.common.annotation.Excel;
|
||||||
import com.fastbee.common.core.domain.BaseEntity;
|
import com.fastbee.common.core.domain.BaseEntity;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 灌溉记录对象 ma_guangai_record
|
* 灌溉记录对象 ma_guangai_record
|
||||||
*
|
*
|
||||||
* @author kerwincui
|
* @author kerwincui
|
||||||
* @date 2024-08-12
|
* @date 2024-08-12
|
||||||
*/
|
*/
|
||||||
@ApiModel(value = "MaGuangaiRecord",description = "灌溉记录 ma_guangai_record")
|
@ApiModel(value = "MaGuangaiRecord", description = "灌溉记录 ma_guangai_record")
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public class MaGuangaiRecord extends BaseEntity
|
public class MaGuangaiRecord extends BaseEntity {
|
||||||
{
|
private static final long serialVersionUID = 1L;
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 序号 */
|
/**
|
||||||
|
* 序号
|
||||||
|
*/
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
/** 设备编号 */
|
/**
|
||||||
@Excel(name = "设备编号")
|
* 设备编号
|
||||||
@ApiModelProperty("设备编号")
|
*/
|
||||||
|
@Excel(name = "设备编号")
|
||||||
|
@ApiModelProperty("设备编号")
|
||||||
private String devSn;
|
private String devSn;
|
||||||
|
|
||||||
/** 开泵时间 */
|
/**
|
||||||
@Excel(name = "开泵时间")
|
* 开泵时间
|
||||||
@ApiModelProperty("开泵时间")
|
*/
|
||||||
private Long startTime;
|
@Excel(name = "开泵时间")
|
||||||
|
@ApiModelProperty("开泵时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date startTime;
|
||||||
|
|
||||||
/** 关泵时间 */
|
/**
|
||||||
@Excel(name = "关泵时间")
|
* 关泵时间
|
||||||
@ApiModelProperty("关泵时间")
|
*/
|
||||||
private Long endTime;
|
@Excel(name = "关泵时间")
|
||||||
|
@ApiModelProperty("关泵时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date endTime;
|
||||||
|
|
||||||
/** 灌溉最新上报时间 */
|
/**
|
||||||
@Excel(name = "灌溉最新上报时间")
|
* 灌溉最新上报时间
|
||||||
@ApiModelProperty("灌溉最新上报时间")
|
*/
|
||||||
private Long lastTime;
|
@Excel(name = "灌溉最新上报时间")
|
||||||
|
@ApiModelProperty("灌溉最新上报时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date lastTime;
|
||||||
|
|
||||||
/** 卡编号 */
|
/**
|
||||||
@Excel(name = "卡编号")
|
* 卡编号
|
||||||
@ApiModelProperty("卡编号")
|
*/
|
||||||
|
@Excel(name = "卡编号")
|
||||||
|
@ApiModelProperty("卡编号")
|
||||||
private String cardId;
|
private String cardId;
|
||||||
|
|
||||||
/** 区域号 */
|
/**
|
||||||
@Excel(name = "区域号")
|
* 区域号
|
||||||
@ApiModelProperty("区域号")
|
*/
|
||||||
|
@Excel(name = "区域号")
|
||||||
|
@ApiModelProperty("区域号")
|
||||||
private String areaCode;
|
private String areaCode;
|
||||||
|
|
||||||
/** 卡内余额 */
|
/**
|
||||||
@Excel(name = "卡内余额")
|
* 卡内余额
|
||||||
@ApiModelProperty("卡内余额")
|
*/
|
||||||
|
@Excel(name = "卡内余额")
|
||||||
|
@ApiModelProperty("卡内余额")
|
||||||
private String userBalance;
|
private String userBalance;
|
||||||
|
|
||||||
/** 本次用水量 */
|
/**
|
||||||
@Excel(name = "本次用水量")
|
* 本次用水量
|
||||||
@ApiModelProperty("本次用水量")
|
*/
|
||||||
|
@Excel(name = "本次用水量")
|
||||||
|
@ApiModelProperty("本次用水量")
|
||||||
private String curFlow;
|
private String curFlow;
|
||||||
|
|
||||||
/** 本次用电量 */
|
/**
|
||||||
@Excel(name = "本次用电量")
|
* 本次用电量
|
||||||
@ApiModelProperty("本次用电量")
|
*/
|
||||||
|
@Excel(name = "本次用电量")
|
||||||
|
@ApiModelProperty("本次用电量")
|
||||||
private String curEle;
|
private String curEle;
|
||||||
|
|
||||||
/** 灌溉状态 */
|
/**
|
||||||
@Excel(name = "灌溉状态")
|
* 灌溉状态
|
||||||
@ApiModelProperty("灌溉状态")
|
*/
|
||||||
|
@Excel(name = "灌溉状态")
|
||||||
|
@ApiModelProperty("灌溉状态:1=开始灌溉,2=结束灌溉")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -107,7 +107,7 @@ private static final long serialVersionUID = 1L;
|
|||||||
|
|
||||||
/** 当前动作 */
|
/** 当前动作 */
|
||||||
@Excel(name = "当前动作")
|
@Excel(name = "当前动作")
|
||||||
@ApiModelProperty("当前动作")
|
@ApiModelProperty("当前动作:timeMsg=灌溉定时报,startPump=开始灌溉,stopPump=停止灌溉,safeMsg=定时报")
|
||||||
private String action;
|
private String action;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,37 @@
|
|||||||
|
package com.fastbee.waterele.domain.dto;
|
||||||
|
|
||||||
|
import com.fastbee.common.annotation.Excel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 灌溉记录查询入参
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class MaGuangaiRecordDto {
|
||||||
|
|
||||||
|
/** 设备编号 */
|
||||||
|
private String devSn;
|
||||||
|
/** 开泵开始时间 */
|
||||||
|
private String startBeginTime;
|
||||||
|
/** 开泵结束时间 */
|
||||||
|
private String startEndTime;
|
||||||
|
/** 关泵开始时间 */
|
||||||
|
private String endBeginTime;
|
||||||
|
/** 关泵结束时间 */
|
||||||
|
private String endEndTime;
|
||||||
|
|
||||||
|
/** 卡编号 */
|
||||||
|
private String cardId;
|
||||||
|
|
||||||
|
/** 区域号 */
|
||||||
|
private String areaCode;
|
||||||
|
|
||||||
|
/** 灌溉状态 */
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备ID
|
||||||
|
*/
|
||||||
|
private Long deviceId;
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package com.fastbee.waterele.domain.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class MaWatereleRecordDto {
|
||||||
|
|
||||||
|
/** 设备编号 */
|
||||||
|
private String devSn;
|
||||||
|
|
||||||
|
/** 工作状态:0=关泵,1=开泵 */
|
||||||
|
private Integer workstate;
|
||||||
|
/** 卡编号 */
|
||||||
|
private String cardid;
|
||||||
|
|
||||||
|
/** 区域号 */
|
||||||
|
private String areacode;
|
||||||
|
|
||||||
|
/** 当前动作:timeMsg=灌溉定时报,startPump=开始灌溉,stopPump=停止灌溉,safeMsg=定时报 */
|
||||||
|
private String action;
|
||||||
|
/**
|
||||||
|
* 设备ID
|
||||||
|
*/
|
||||||
|
private Long deviceId;
|
||||||
|
/**
|
||||||
|
* 开始时间
|
||||||
|
*/
|
||||||
|
private String startTime;
|
||||||
|
/**
|
||||||
|
* 结束时间
|
||||||
|
*/
|
||||||
|
private String endTime;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user