添加流量计瞬时流量和累计流量的图表接口
This commit is contained in:
parent
17dadbf393
commit
910256b336
@ -3,7 +3,9 @@ package com.fastbee.data.controller.userRecharge;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.fastbee.iot.domain.dto.NgFlowDeviceDataChartsDto;
|
||||
import com.fastbee.iot.domain.dto.NgFlowDeviceDataDto;
|
||||
import com.fastbee.rechargecard.domain.dto.NgWaterPumpUsageRecordsChartsDto;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -36,6 +38,17 @@ public class NgFlowDeviceDataController extends BaseController
|
||||
@Autowired
|
||||
private INgFlowDeviceDataService ngFlowDeviceDataService;
|
||||
|
||||
/**
|
||||
* 流量计瞬时流量累计流量的图表
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('rechargecard:records:list')")
|
||||
@GetMapping("/charts")
|
||||
@ApiOperation("流量计瞬时流量累计流量的图表")
|
||||
public AjaxResult FlowCharts(@RequestBody NgFlowDeviceDataChartsDto ngFlowDeviceDataChartsDto)
|
||||
{
|
||||
return success(ngFlowDeviceDataService.selectNgFlowDeviceDataFlowCharts(ngFlowDeviceDataChartsDto.getDeviceNumber(),ngFlowDeviceDataChartsDto.getStartTime(),ngFlowDeviceDataChartsDto.getEndTime()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询流量计设备数据列表
|
||||
*/
|
||||
|
@ -0,0 +1,11 @@
|
||||
package com.fastbee.iot.domain.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
@Data
|
||||
public class NgFlowDeviceDataChartsDto {
|
||||
private String deviceNumber;
|
||||
private Date startTime;
|
||||
private Date endTime;
|
||||
}
|
@ -1,6 +1,8 @@
|
||||
package com.fastbee.iot.service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.fastbee.iot.domain.NgFlowDeviceData;
|
||||
@ -14,6 +16,8 @@ import com.fastbee.iot.domain.dto.NgFlowDeviceDataDto;
|
||||
*/
|
||||
public interface INgFlowDeviceDataService extends IService<NgFlowDeviceData>
|
||||
{
|
||||
public Map<String,Object> selectNgFlowDeviceDataFlowCharts(String deviceNumber, Date startTime, Date endTime);
|
||||
|
||||
/**
|
||||
* 查询流量计设备数据列表
|
||||
*
|
||||
|
@ -1,9 +1,12 @@
|
||||
package com.fastbee.iot.service.impl;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.fastbee.deviceData.domain.DeviceRealtimedataMeteorology;
|
||||
import com.fastbee.deviceData.mapper.DeviceRealtimedataMeteorologyMapper;
|
||||
@ -26,6 +29,82 @@ public class NgFlowDeviceDataServiceImpl extends ServiceImpl<NgFlowDeviceDataMap
|
||||
@Autowired
|
||||
private NgFlowDeviceDataMapper ngFlowDeviceDataMapper;
|
||||
|
||||
/**
|
||||
* 获取流量计瞬时流量、累计流量图表
|
||||
* @param deviceNumber
|
||||
* @param startTime
|
||||
* @param endTime
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Map<String, Object> selectNgFlowDeviceDataFlowCharts(String deviceNumber, Date startTime, Date endTime) {
|
||||
QueryWrapper<NgFlowDeviceData> queryWrapper=new QueryWrapper<>();
|
||||
Map<String,Object> resultMap=new HashMap<>();
|
||||
List<BigDecimal> insList=new ArrayList<>();
|
||||
List<BigDecimal> sumList=new ArrayList<>();
|
||||
List<String> timeList=new ArrayList<>();
|
||||
|
||||
Date start = DateUtil.beginOfDay(DateUtil.date());// 获取今日零点时间
|
||||
Date now = DateUtil.date();// 获取当前时间
|
||||
// 获取当前整点时刻的时间
|
||||
Date end = DateUtil.beginOfHour(now);//用当前整点时刻时间作为结束时间
|
||||
if (startTime != null && endTime != null) {
|
||||
//如果有时间筛选,按照时间筛选为起止时间
|
||||
start=startTime;
|
||||
end=endTime;
|
||||
}
|
||||
|
||||
queryWrapper.between("real_time", start, end);
|
||||
queryWrapper.eq("device_number",deviceNumber);
|
||||
List<NgFlowDeviceData> list=ngFlowDeviceDataMapper.selectList(queryWrapper);//获取根据时间和设备编码筛选后的数据
|
||||
|
||||
while(start.compareTo(end) <=0 )//start<=end
|
||||
{
|
||||
//整点时间数据=前半个小时到后半个小时的平均数据,即12点数据=11:30到12:30的平均值
|
||||
Date tempStart=DateUtil.offsetMinute(start,-30);//前半个小时时间
|
||||
Date tempEnd=DateUtil.offsetMinute(start,30);//后半个小时时间
|
||||
if(tempEnd.after(now))
|
||||
{
|
||||
tempEnd=now;//用来处理当前是12:10但需要获取12点数据的情况
|
||||
}
|
||||
BigDecimal insData=new BigDecimal("0");//瞬时流量总和
|
||||
BigDecimal sumData=new BigDecimal("0");//累计流量总和
|
||||
int num=0;
|
||||
for(int i=0;i<list.size();i++)
|
||||
{
|
||||
NgFlowDeviceData temp=list.get(i);
|
||||
//如果时间符合条件
|
||||
if(temp.getRealTime().compareTo(tempStart)>=0 && temp.getRealTime().compareTo(tempEnd)<=0)
|
||||
{
|
||||
BigDecimal insFlow=new BigDecimal(temp.getInFlow());//瞬时流量
|
||||
insData=insData.add(insFlow);
|
||||
BigDecimal sumFlow=new BigDecimal(temp.getSumFlow());//累计流量
|
||||
sumData=sumData.add(sumFlow);
|
||||
num++;
|
||||
}
|
||||
}
|
||||
BigDecimal insResult=new BigDecimal("0");
|
||||
BigDecimal sumResult=new BigDecimal("0");
|
||||
if(num>0)
|
||||
{
|
||||
insResult = insData.divide(new BigDecimal(String.valueOf(num)), 2, RoundingMode.HALF_UP);//计算瞬时流量平均值
|
||||
sumResult=sumData.divide(new BigDecimal(String.valueOf(num)),2,RoundingMode.HALF_UP);//计算累计流量平均值
|
||||
}
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");//格式化为时:分
|
||||
String formattedDate = sdf.format(start);
|
||||
timeList.add(formattedDate);
|
||||
insList.add(insResult);
|
||||
sumList.add(sumResult);
|
||||
|
||||
start=DateUtil.offsetHour(start,1);//start添加一个小时
|
||||
}
|
||||
resultMap.put("time",timeList);
|
||||
resultMap.put("insFlow",insList);
|
||||
resultMap.put("sumFlow",sumList);
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据时间查询流量计历史数据
|
||||
* @param ngFlowDeviceData 流量计设备数据
|
||||
|
Loading…
x
Reference in New Issue
Block a user