liulin
6 天以前 bcf8c46e009d5d825a7bf07b9eac46fb7432418b
src/main/java/com/fengdu/gas/service/DataUploadRecordService.java
@@ -26,9 +26,11 @@
import com.fengdu.gas.common.enums.*;
import com.fengdu.gas.common.model.Tuple;
import com.fengdu.gas.common.util.*;
import com.fengdu.gas.entity.request.datauploadrecord.ReqGetDataUploadRecord;
import com.fengdu.gas.repository.impl.*;
import com.fengdu.gas.repository.mapper.DataUploadRecordHourMapper;
import com.fengdu.gas.repository.po.*;
import com.fengdu.gas.repository.vo.DataUploadRecordDayVO;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
@@ -47,6 +49,7 @@
import com.fengdu.gas.entity.search.SearchDataUploadRecord;
import com.fengdu.gas.repository.vo.DataUploadRecordVO;
import com.fengdu.gas.service.convert.DataUploadRecordConvert;
import org.springframework.web.bind.annotation.RequestBody;
/**
 * 数据上报记录
@@ -70,6 +73,7 @@
    private WaterFacilityParameterMapperImpl waterFacilityParameterMapper;
    private static final Logger DEBUG_LOGGER = LoggerUtil.get(ELogger.DEBUG);
    private static final Logger ERROR_LOGGER = LoggerUtil.get(ELogger.SYS_ERROR);
    public ExecutedResult<Long> create(ReqCreateDataUploadRecord request) {
        // 转换po
        DataUploadRecordPO item = DataUploadRecordConvert.INSTANCE.toCreate(request);
@@ -204,6 +208,7 @@
//        }
//        return ExecutedResult.success();
//    }
    /**
     * mqtt收到消息
     * @param topic 主题
@@ -224,9 +229,10 @@
        //报文解析
        //添加参数报警记录
        List<WaterFacilityPO> facilityPOList = waterFacilityMapper.getList();
        FacilityAlarmRecordPO recordPO=new FacilityAlarmRecordPO();
        FacilityAlarmRecordPO recordPO = new FacilityAlarmRecordPO();
    }
    public ExecutedResult<String> dataUpload(Long startTime, Long endTime, Integer type) {
        List<WaterFacilityPO> facilityPOList = waterFacilityMapper.getList();
        //获取所有设备参数
@@ -236,7 +242,7 @@
            case 1:
                //按小时统计插入数据
                List<DataUploadRecordPO> recordPOList = mapper.getByTime(startTime, endTime);
                if(ListUtil.isNotNullOrEmpty(recordPOList)){
                if (ListUtil.isNotNullOrEmpty(recordPOList)) {
                    for (WaterFacilityParameterPO parameterPO : parameterPOList) {
                        WaterFacilityPO waterFacilityPO = facilityPOList.stream().filter(item -> item.getId().equals(parameterPO.getFacilityId())).findFirst().orElse(null);
                        //根据设备参数筛选数据集合
@@ -267,7 +273,7 @@
                break;
            case 2://按天统计插入数据
                List<DataUploadRecordHourPO> hourPOList = dataUploadRecordHourMapper.getByTime(startTime, endTime);
                if(ListUtil.isNotNullOrEmpty(hourPOList)){
                if (ListUtil.isNotNullOrEmpty(hourPOList)) {
                    for (WaterFacilityParameterPO parameterPO : parameterPOList) {
                        WaterFacilityPO waterFacilityPO = facilityPOList.stream().filter(item -> item.getId().equals(parameterPO.getFacilityId())).findFirst().orElse(null);
                        List<DataUploadRecordHourPO> dataList = hourPOList.stream().filter(item -> item.getFacilityId().equals(parameterPO.getFacilityId()) && item.getColumnsCode().equals(parameterPO.getColumnsCode())).collect(Collectors.toList());
@@ -295,7 +301,7 @@
                break;
            case 3://按月统计插入数据
                List<DataUploadRecordDayPO> dayPOList = dataUploadRecordDayMapper.getByTime(startTime, endTime);
                if(ListUtil.isNotNullOrEmpty(dayPOList)){
                if (ListUtil.isNotNullOrEmpty(dayPOList)) {
                    for (WaterFacilityParameterPO parameterPO : parameterPOList) {
                        WaterFacilityPO waterFacilityPO = facilityPOList.stream().filter(item -> item.getId().equals(parameterPO.getFacilityId())).findFirst().orElse(null);
                        List<DataUploadRecordDayPO> dataList = dayPOList.stream().filter(item -> item.getFacilityId().equals(parameterPO.getFacilityId()) && item.getColumnsCode().equals(parameterPO.getColumnsCode())).collect(Collectors.toList());
@@ -323,11 +329,88 @@
                }
        }
        return ExecutedResult.success();
    }
    public ExecutedResult<List<DataUploadRecordDayVO>> getLineChart(ReqGetDataUploadRecord record) {
        Long beginTime = 0L;
        Long endTime = 0L;
        List<DataUploadRecordDayVO> data = new ArrayList<>();
        List<DataUploadRecordDayVO> result = new ArrayList<>();
        switch (record.getDateType()) {
            case 1:
                beginTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.todayStartTime()).getTime();
                endTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.todayEndTime()).getTime();
                if (beginTime > 0 && endTime > 0) {
                    List<DataUploadRecordHourPO> lineChart = dataUploadRecordHourMapper.getLineChart(record.getPointId(), record.getColumnsCode(), beginTime, endTime);
                    if(ListUtil.isNotNullOrEmpty(lineChart)){
                        data = CopierUtil.mapTo(lineChart, DataUploadRecordDayVO.class);
                    }
                }
                break;
            case 2:
                beginTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.weekStartTime()).getTime();
                endTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.weekEndTime()).getTime();
                if (beginTime > 0 && endTime > 0) {
                    List<DataUploadRecordDayPO> lineChart = dataUploadRecordDayMapper.getLineChart(record.getPointId(), record.getColumnsCode(), beginTime, endTime);
                    if(ListUtil.isNotNullOrEmpty(lineChart)){
                        data = CopierUtil.mapTo(lineChart, DataUploadRecordDayVO.class);
                    }
                }
                break;
            case 3:
                beginTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.monthStartTime()).getTime();
                endTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.monthEndTime()).getTime();
                if (beginTime > 0 && endTime > 0) {
                    List<DataUploadRecordMonthPO> lineChart = dataUploadRecordMonthMapper.getLineChart(record.getPointId(), record.getColumnsCode(), beginTime, endTime);
                    if(ListUtil.isNotNullOrEmpty(lineChart)){
                        data = CopierUtil.mapTo(lineChart, DataUploadRecordDayVO.class);
                    }
                }
                break;
            case 4:
                beginTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.yearStartTime()).getTime();
                endTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.yearEndTime()).getTime();
                if (beginTime > 0 && endTime > 0) {
                    List<DataUploadRecordMonthPO> lineChart = dataUploadRecordMonthMapper.getLineChart(record.getPointId(), record.getColumnsCode(), beginTime, endTime);
                    if(ListUtil.isNotNullOrEmpty(lineChart)){
                        data = CopierUtil.mapTo(lineChart, DataUploadRecordDayVO.class);
                    }
                }
                break;
        }
        //查询监控点下是否存在多个设备的数据,存在则计算最小、最大、平均值
        if (ListUtil.isNotNullOrEmpty(data)) {
            Map<String, List<DataUploadRecordDayVO>> collect = data.stream().collect(Collectors.groupingBy(DataUploadRecordDayVO::getUploadDate));
            for (Map.Entry<String, List<DataUploadRecordDayVO>> map : collect.entrySet()) {
                List<DataUploadRecordDayVO> value = map.getValue();
                DataUploadRecordDayVO dayVO = new DataUploadRecordDayVO();
                dayVO.setUploadDate(map.getKey());
                BigDecimal maxValue = BigDecimal.ZERO;
                BigDecimal minValue = BigDecimal.ZERO;
                BigDecimal avgValue = BigDecimal.ZERO;
                if (value.size() > 1) {
                    maxValue = Collections.max(value, Comparator.comparing(DataUploadRecordDayVO::getMaxValue)).getMaxValue();
                    minValue = Collections.min(value, Comparator.comparing(DataUploadRecordDayVO::getMinValue)).getMinValue();
                    BigDecimal sum = maxValue.add(minValue);
                    avgValue=sum.divide(new BigDecimal(2)).setScale(2,RoundingMode.DOWN);
                }else {
                    maxValue=value.get(0).getMaxValue();
                    minValue=value.get(0).getMinValue();
                    avgValue=value.get(0).getAvgValue();
                }
                dayVO.setMaxValue(maxValue);
                dayVO.setMinValue(minValue);
                dayVO.setAvgValue(avgValue);
                result.add(dayVO);
            }
            result.sort(Comparator.comparingInt(o -> Integer.parseInt(o.getUploadDate())));
        }
        return ExecutedResult.success(result);
    }
    public ExecutedResult<List<DataUploadRecordVO>> getList(List<Long> listId) {
        List<DataUploadRecordVO> result = new ArrayList<>();