zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/ComprehensiveStatisticsController.java
@@ -9,6 +9,7 @@ import com.zhitan.keyequipment.service.IDailyKeyEquipmentService; import com.zhitan.model.domain.EnergyIndex; import com.zhitan.model.service.IModelNodeService; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; zhitan-admin/src/main/java/com/zhitan/web/controller/consumptionanalysis/ConsumptionAnalysisController.java
@@ -10,6 +10,7 @@ import com.zhitan.consumptionanalysis.domain.vo.RankingDataVO; import com.zhitan.consumptionanalysis.domain.vo.RankingEnergyData; import com.zhitan.consumptionanalysis.service.IConsumptionAnalysisService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; @@ -35,6 +36,7 @@ * @Author: Zhujw * @Date: 2023/3/1 */ @Api(tags = "综合能耗分析") @RestController @RequestMapping("/consumptionanalysis") public class ConsumptionAnalysisController extends BaseController { zhitan-admin/src/main/java/com/zhitan/web/controller/energyMonitor/ElectricThreePhaseController.java
@@ -56,6 +56,7 @@ if (ObjectUtils.isEmpty(meterId)){ return AjaxResult.error("电表id不能为空"); } List<EnergyIndex> energyIndexList = energyIndexService.listDeviceIndex(nodeId, meterId); return AjaxResult.success(electricThreePhaseService.list(timeType, timeCode, energyIndexList, requestType, meterId)); zhitan-admin/src/main/java/com/zhitan/web/controller/history/HistoryDataTrendController.java
@@ -4,10 +4,15 @@ import com.zhitan.basicdata.domain.MeterImplement; import com.zhitan.basicdata.services.IMeterImplementService; import com.zhitan.common.annotation.Log; import com.zhitan.common.constant.CommonConst; import com.zhitan.common.constant.TimeTypeConst; import com.zhitan.common.core.controller.BaseController; import com.zhitan.common.core.domain.AjaxResult; import com.zhitan.common.enums.BusinessType; import com.zhitan.common.enums.RetrievalModes; import com.zhitan.common.enums.TimeType; import com.zhitan.common.utils.ChartUtils; import com.zhitan.common.utils.DateTimeUtil; import com.zhitan.common.utils.poi.ExcelUtil; import com.zhitan.history.domain.dto.HistoricalDataDTO; import com.zhitan.history.domain.vo.HistoricalDataExcel; @@ -16,7 +21,9 @@ import com.zhitan.model.service.IEnergyIndexService; import com.zhitan.realtimedata.domain.TagValue; import com.zhitan.realtimedata.service.RealtimeDatabaseService; import io.swagger.annotations.Api; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -29,11 +36,12 @@ import java.util.List; /** * 设备启停实时监测Controller * 历史数据趋势Controller * * @author sys * @date 2020-03-30 */ @Api(tags = "历史数据趋势") @RestController @RequestMapping("/dataMonitoring/historyDataTrend") public class HistoryDataTrendController extends BaseController { @@ -61,9 +69,6 @@ public AjaxResult getSettingIndex(EnergyIndex energyIndex) { try { List<EnergyIndex> infoList = energyIndexService.selectEnergyIndexList(energyIndex); // List<String> codeList= infoList.stream().map(EnergyIndex::getCode).collect(Collectors.toList()); // List<TagValue> valList = realtimeDatabaseService.retrieve(codeList); // List resultList = new ArrayList(); return AjaxResult.success(infoList); } catch (Exception ex) { logger.error("获取关联采集指标出错!", ex); @@ -80,68 +85,44 @@ if (ObjectUtils.isEmpty(energyIndex)) { return AjaxResult.error("未找到点位信息"); } Date beginTime = dto.getDataTime(); Date endTime; // 查询条数 int count = 1440; if ("DAY".equals(dto.getTimeType())) { endTime = DateUtil.endOfDay(beginTime); List<Date> dateList = new ArrayList<>(); if (TimeType.DAY.name().equals(dto.getTimeType())) { String timeCode = DateTimeUtil.getDateTime(dto.getDataTime(), DateTimeUtil.COMMON_PATTERN_TO_DAY); ChartUtils.generateDateList(TimeTypeConst.TIME_TYPE_DAY, timeCode, dateList); } else if (TimeType.HOUR.name().equals(dto.getTimeType())) { String timeCode = DateTimeUtil.getDateTime(dto.getDataTime(), DateTimeUtil.COMMON_PATTERN_TO_HOUR); ChartUtils.generateDateList(TimeTypeConst.TIME_TYPE_HOUR, timeCode, dateList); } else { count = 3600; endTime = DateUtil.offsetSecond(DateUtil.offsetHour(beginTime, 1), -1); return AjaxResult.error("时间间隔类型不正确"); } // 查询计量器具 MeterImplement info = meterImplementService.selectMeterImplementById(energyIndex.getMeterId()); List<TagValue> tagValueList = realtimeDatabaseService.retrieve(energyIndex.getCode(), beginTime, endTime, RetrievalModes.BestFit, count); MeterImplement meterInfo = meterImplementService.selectMeterImplementById(energyIndex.getMeterId()); if (ObjectUtils.isEmpty(meterInfo)) { return AjaxResult.error("未找到计量器具信息"); } List<HistoricalDataVO> voList = new ArrayList<>(); Date date = DateUtil.date(); for (int i = 0; i < count + 1; i++) { for (Date date : dateList) { List<TagValue> tagValues = new ArrayList<>(); if(TimeType.DAY.name().equals(dto.getTimeType())){ Date beginTime = date; Date endTime = DateUtil.offsetHour(DateUtil.offsetMinute(date, CommonConst.DIGIT_MINUS_1), CommonConst.DIGIT_1); tagValues = realtimeDatabaseService.retrieve(energyIndex.getCode(), beginTime,endTime,CommonConst.DIGIT_1); } if(TimeType.HOUR.name().equals(dto.getTimeType())){ Date beginTime = date; Date endTime = DateUtil.offsetMinute(DateUtil.offsetSecond(date, CommonConst.DIGIT_MINUS_1), CommonConst.DIGIT_1); tagValues = realtimeDatabaseService.retrieve(energyIndex.getCode(), beginTime,endTime,CommonConst.DIGIT_1); } HistoricalDataVO vo = new HistoricalDataVO(); vo.setDataTime(DateUtil.formatDateTime(date)); vo.setIndexId(energyIndex.getIndexId()); String indexName = energyIndex.getName(); if (ObjectUtils.isNotEmpty(info)) { indexName = info.getInstallactionLocation() + "_" + info.getMeterName() + "_" + indexName; vo.setIndexName(meterInfo.getInstallactionLocation() + "_" + meterInfo.getMeterName() + "_" + energyIndex.getName()); vo.setValue(CommonConst.DOUBLE_MINUS_SIGN); if(ObjectUtils.isNotEmpty(tagValues)){ vo.setValue(tagValues.get(0).getValue().toString()); } vo.setIndexName(indexName); // 取值 String value = "--"; String usedValue = "--"; if (beginTime.getTime() <= date.getTime()) { try { TagValue tagValue = tagValueList.get(i); BigDecimal cumulative = BigDecimal.valueOf(tagValue.getValue()); if ("SWWSDJ_SD".equals(energyIndex.getCode()) || "SWWSDJ_WD".equals(energyIndex.getCode())) { cumulative = cumulative.multiply(BigDecimal.valueOf(0.1)); } if (i > 0) { TagValue previousTagValue = tagValueList.get(i - 1); BigDecimal previousValue = BigDecimal.ZERO; if (ObjectUtils.isNotEmpty(previousTagValue.getValue())) { previousValue = BigDecimal.valueOf(previousTagValue.getValue()); } if ("SWWSDJ_SD".equals(energyIndex.getCode()) || "SWWSDJ_WD".equals(energyIndex.getCode())) { previousValue = previousValue.multiply(BigDecimal.valueOf(0.1)); } usedValue = String.valueOf(cumulative.subtract(previousValue).setScale(2, RoundingMode.HALF_UP)); } value = String.valueOf(cumulative.setScale(2, RoundingMode.HALF_UP)); } catch (Exception ignored) { } } // 时间 String timeName = DateUtil.formatDateTime(beginTime); vo.setDataTime(timeName); if ("DAY".equals(dto.getTimeType())) { beginTime = DateUtil.offsetMinute(beginTime, 1); } else { beginTime = DateUtil.offsetSecond(beginTime, 1); } vo.setUsedValue(String.valueOf(usedValue)); vo.setValue(String.valueOf(value)); voList.add(vo); } return AjaxResult.success(voList); zhitan-admin/src/main/java/com/zhitan/web/controller/meter/MeterController.java
@@ -26,9 +26,8 @@ * @Version: 1.0 * @Since: JDK1.8 */ @Slf4j @Api("采集计量表数据管理") @Slf4j @RestController @RequestMapping("/meters") public class MeterController extends BaseController { zhitan-admin/src/main/java/com/zhitan/web/controller/model/ModelInfoController.java
@@ -10,6 +10,7 @@ import com.zhitan.model.domain.vo.PointDataVO; import com.zhitan.model.service.IEnergyIndexService; import com.zhitan.model.service.IModelInfoService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -23,6 +24,7 @@ * @author fanxinfu * @date 2020-02-17 */ @Api(tags = "模型相关") @RestController @RequestMapping("/basicsetting/model") public class ModelInfoController extends BaseController { zhitan-admin/src/main/java/com/zhitan/web/controller/statisticalAnalysis/StatisticalAnalysisController.java
@@ -9,6 +9,7 @@ import com.zhitan.statisticalAnalysis.domain.vo.DataAnalysisYoYExcel; import com.zhitan.statisticalAnalysis.domain.vo.DataAnalysisYoYVO; import com.zhitan.statisticalAnalysis.service.IStatisticalAnalysisService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.BeanUtils; @@ -26,6 +27,7 @@ /** * 统计分析 控制层 */ @Api(tags = "统计分析") @RestController @RequestMapping("/statisticalAnalysis") public class StatisticalAnalysisController extends BaseController { zhitan-common/src/main/java/com/zhitan/common/constant/CommonConst.java
@@ -891,15 +891,15 @@ /** * 电流 */ public static final String TAG_CODE_CURRENT = "Current_"; public static final String TAG_CODE_CURRENT = "Current"; /** * 电压 */ public static final String TAG_CODE_VOLTAGE = "Voltage_"; public static final String TAG_CODE_VOLTAGE = "Voltage"; /** * 功率因数 */ public static final String TAG_CODE_FACTOR = "PowerFactor_"; public static final String TAG_CODE_FACTOR = "PowerFactor"; /** * 功率因数 */ zhitan-common/src/main/java/com/zhitan/common/enums/RetrievalModes.java
@@ -6,5 +6,8 @@ * 获取实时数据方式. */ public enum RetrievalModes { Full, BestFit Full, BestFit } zhitan-common/src/main/java/com/zhitan/common/utils/ChartUtils.java
@@ -24,6 +24,20 @@ public static void generateDateList(String timeType, String timeCode, List<Date> dateList) { Date now = new Date(); switch (timeType) { case TimeTypeConst.TIME_TYPE_HOUR: if (!timeCode.contains(CommonConst.SINGLE_MINUS_SIGN)) { timeCode = DateTimeUtil.toDateTimeStr(timeCode, DateTimeUtil.COMMON_PATTERN_HOUR, DateTimeUtil.COMMON_PATTERN_TO_HOUR); } int minute = 59; for (int i = CommonConst.DIGIT_0; i <= minute; i++) { String tempCode = timeCode + ":0" + i; if(i>9){ tempCode = timeCode + ":" + i; } Date tempD = DateTimeUtil.toDateTime(tempCode, DateTimeUtil.COMMON_PATTERN_END_WITH_MINUTE); dateList.add(tempD); } break; case TimeTypeConst.TIME_TYPE_DAY: if (!timeCode.contains(CommonConst.SINGLE_MINUS_SIGN)) { timeCode = DateTimeUtil.toDateTimeStr(timeCode, DateTimeUtil.COMMON_PATTERN_DAY, DateTimeUtil.COMMON_PATTERN_TO_DAY); zhitan-system/src/main/java/com/zhitan/energyMonitor/service/impl/ElectricThreePhaseServiceImpl.java
@@ -54,9 +54,7 @@ @Override public ElectricThreePhaseVO list(String timeType, String timeCode, List<EnergyIndex> energyIndexList, String requestType, String meterId) { ElectricThreePhaseVO vo = new ElectricThreePhaseVO(); if (ObjectUtil.isEmpty(energyIndexList)) { return vo; } // 获取电压不平衡数据 if (CommonConst.STR_NUMBER_0.equals(requestType)) { energyIndexList = energyIndexList.stream() @@ -70,9 +68,13 @@ || StringUtil.ifEmptyOrNullReturnValue(x.getCode()).trim().endsWith(CommonConst.TAG_CODE_CURRENT_C)) .collect(Collectors.toList()); } if (ObjectUtil.isEmpty(energyIndexList)) { return vo; } List<String> tagCodeList = energyIndexList.stream().map(EnergyIndex::getCode).collect(Collectors.toList()); tagCodeList.add(CommonConst.STR_NUMBER_MINUS_ONE); String tagCodes = String.join(StrUtil.COMMA, tagCodeList); if(ObjectUtil.isEmpty(tagCodeList)){ tagCodeList.add(CommonConst.STR_NUMBER_MINUS_ONE); } Date start = ChartUtils.getDateTime(timeType, timeCode); Date end = getEndTime(timeType, start); @@ -82,7 +84,7 @@ long millis = new Duration(begin, finish).getMillis(); int pointCount = IntegerUtil.toInt(millis / CommonConst.DIGIT_3600 / CommonConst.DIGIT_1000); List<TagValue> tagValueList = realtimeDatabaseService.retrieve(tagCodes, start, end, pointCount); List<TagValue> tagValueList = realtimeDatabaseService.retrieve(tagCodeList, start, end, pointCount); List<ElectricThreePhaseItem> itemList = new ArrayList<>(); List<Date> dateList = new ArrayList<>(); ChartUtils.generateDateList(timeType, timeCode, dateList); @@ -281,10 +283,14 @@ */ private void listDayData(Date date, List<TagValue> tagValueList, ElectricThreePhaseItem temp, ElectricThreePhaseTempModel tempModel) { Date endTime = DateTimeUtil.addHours(date, CommonConst.DIGIT_1); List<TagValue> currentTagValueList = tagValueList.stream().filter(x -> DateTimeUtil.compareDateDiff(date, x.getDataTime()) <= 0 && DateTimeUtil.compareDateDiff(endTime, x.getDataTime()) > 0).collect(Collectors.toList()); List<TagValue> currentATagValueList = currentTagValueList.stream().filter(x -> StringUtil.ifEmptyOrNullReturnValue(x.getTagCode()).trim().endsWith("_A")).collect(Collectors.toList()); List<TagValue> currentBTagValueList = currentTagValueList.stream().filter(x -> StringUtil.ifEmptyOrNullReturnValue(x.getTagCode()).trim().endsWith("_B")).collect(Collectors.toList()); List<TagValue> currentCTagValueList = currentTagValueList.stream().filter(x -> StringUtil.ifEmptyOrNullReturnValue(x.getTagCode()).trim().endsWith("_C")).collect(Collectors.toList()); List<TagValue> currentTagValueList = tagValueList.stream() .filter(x -> DateTimeUtil.compareDateDiff(date, x.getDataTime()) <= 0 && DateTimeUtil.compareDateDiff(endTime, x.getDataTime()) > 0).collect(Collectors.toList()); List<TagValue> currentATagValueList = currentTagValueList.stream() .filter(x -> StringUtil.ifEmptyOrNullReturnValue(x.getTagCode()).trim().endsWith(CommonConst.A_PHASE)).collect(Collectors.toList()); List<TagValue> currentBTagValueList = currentTagValueList.stream() .filter(x -> StringUtil.ifEmptyOrNullReturnValue(x.getTagCode()).trim().endsWith(CommonConst.B_PHASE)).collect(Collectors.toList()); List<TagValue> currentCTagValueList = currentTagValueList.stream() .filter(x -> StringUtil.ifEmptyOrNullReturnValue(x.getTagCode()).trim().endsWith(CommonConst.C_PHASE)).collect(Collectors.toList()); TagValue tagValueA = currentATagValueList.stream().filter(x -> DateTimeUtil.compareDateDiff(date, x.getDataTime()) == 0).findAny().orElse(null); TagValue tagValueB = currentBTagValueList.stream().filter(x -> DateTimeUtil.compareDateDiff(date, x.getDataTime()) == 0).findAny().orElse(null); TagValue tagValueC = currentCTagValueList.stream().filter(x -> DateTimeUtil.compareDateDiff(date, x.getDataTime()) == 0).findAny().orElse(null); zhitan-system/src/main/java/com/zhitan/model/service/impl/EnergyIndexServiceImpl.java
@@ -358,8 +358,7 @@ */ @Override public List<EnergyIndex> listDeviceIndex(String nodeId, String meterId) { return energyIndexMapper.selectList(Wrappers.<EnergyIndex>lambdaQuery() .eq(EnergyIndex::getNodeId, nodeId) .eq(EnergyIndex::getMeterId, meterId)); List<EnergyIndex> energyIndexList = energyIndexMapper.getIndexByMeterIdIndexCode(meterId,null,nodeId); return energyIndexList; } } zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/RealtimeDatabaseServiceImpl.java
@@ -178,6 +178,5 @@ tagCodes.add(tagCode); List<TagValue> historyData = repository.getHistoryData(tagCodes, beginTime, endTime, interval); return historyData; // return realtimeDatabaseManager.retrieve(tagCode, beginTime, endTime, retrievalModes, pointCount); } }