From 06d3d15a5a08637041cc601101c063b11b07a346 Mon Sep 17 00:00:00 2001 From: net <net@netdeMBP.lan> Date: 星期五, 14 二月 2025 17:25:21 +0800 Subject: [PATCH] 合并理去杀杀人 --- zhitan-admin/src/main/java/com/zhitan/web/controller/history/HistoryDataTrendController.java | 205 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 205 insertions(+), 0 deletions(-) diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/history/HistoryDataTrendController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/history/HistoryDataTrendController.java new file mode 100644 index 0000000..5b5bd17 --- /dev/null +++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/history/HistoryDataTrendController.java @@ -0,0 +1,205 @@ +package com.zhitan.web.controller.history; + +import cn.hutool.core.date.DateUtil; +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; +import com.zhitan.history.domain.vo.HistoricalDataVO; +import com.zhitan.model.domain.EnergyIndex; +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; +import org.springframework.web.bind.annotation.RestController; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 鍘嗗彶鏁版嵁瓒嬪娍Controller + * + * @author sys + * @date 2020-03-30 + */ +@Api(tags = "鍘嗗彶鏁版嵁瓒嬪娍") +@RestController +@RequestMapping("/dataMonitoring/historyDataTrend") +public class HistoryDataTrendController extends BaseController { + @Autowired + private final IEnergyIndexService energyIndexService; + + @Autowired + private final IMeterImplementService meterImplementService; + + @Autowired + private final RealtimeDatabaseService realtimeDatabaseService; + + + public HistoryDataTrendController(IEnergyIndexService energyIndexService, + IMeterImplementService meterImplementService, + RealtimeDatabaseService realtimeDatabaseService) { + this.energyIndexService = energyIndexService; + this.meterImplementService = meterImplementService; + this.realtimeDatabaseService = realtimeDatabaseService; + } + + + @Log(title = "鑾峰彇妯″瀷鑺傜偣鍏宠仈閲囬泦鎸囨爣", businessType = BusinessType.UPDATE) + @GetMapping("/energyIndex/list") + public AjaxResult getSettingIndex(EnergyIndex energyIndex) { + try { + List<EnergyIndex> infoList = energyIndexService.selectEnergyIndexList(energyIndex); + return AjaxResult.success(infoList); + } catch (Exception ex) { + logger.error("鑾峰彇鍏宠仈閲囬泦鎸囨爣鍑洪敊锛�", ex); + return AjaxResult.error("鑾峰彇鍏宠仈鎸囨爣鍑洪敊!"); + } + } + + @Log(title = "鏍规嵁鏃堕棿涓庣偣浣嶆煡璇㈠巻鍙茬洃娴嬫暟鎹�", businessType = BusinessType.UPDATE) + @GetMapping("/getHistoricalDataByIndexId") + public AjaxResult getHistoricalDataByIndexId(HistoricalDataDTO dto) { + try { + // 鑾峰彇鐐逛綅淇℃伅 + EnergyIndex energyIndex = energyIndexService.selectEnergyIndexById(dto.getIndexId()); + if (ObjectUtils.isEmpty(energyIndex)) { + return AjaxResult.error("鏈壘鍒扮偣浣嶄俊鎭�"); + } + 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 { + return AjaxResult.error("鏃堕棿闂撮殧绫诲瀷涓嶆纭�"); + } + // 鏌ヨ璁¢噺鍣ㄥ叿 + MeterImplement meterInfo = meterImplementService.selectMeterImplementById(energyIndex.getMeterId()); + if (ObjectUtils.isEmpty(meterInfo)) { + return AjaxResult.error("鏈壘鍒拌閲忓櫒鍏蜂俊鎭�"); + } + List<HistoricalDataVO> voList = new ArrayList<>(); + 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()); + 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()); + } + + voList.add(vo); + } + return AjaxResult.success(voList); + } catch (Exception ex) { + logger.error("鏌ヨ鍘嗗彶鐩戞祴鏁版嵁鍑洪敊锛�", ex); + return AjaxResult.error("鏌ヨ鍘嗗彶鐩戞祴鏁版嵁鍑洪敊!"); + } + } + + @Log(title = "瀵煎嚭Excel", businessType = BusinessType.UPDATE) + @GetMapping("/export") + public AjaxResult export(HistoricalDataDTO dto) { + try { + // 鑾峰彇鐐逛綅淇℃伅 + EnergyIndex energyIndex = energyIndexService.selectEnergyIndexById(dto.getIndexId()); + if (ObjectUtils.isEmpty(energyIndex)) { + return AjaxResult.success("鏈壘鍒扮偣浣嶄俊鎭�"); + } + Date beginTime = dto.getDataTime(); + Date endTime; + // 鏌ヨ鏉℃暟 + int count = 23; + if ("DAY".equals(dto.getTimeType())) { + endTime = DateUtil.endOfDay(beginTime); + } else { + count = 19; + endTime = DateUtil.offsetSecond(DateUtil.offsetHour(beginTime, 1), -1); + } + // 鏌ヨ璁¢噺鍣ㄥ叿 + MeterImplement infor = meterImplementService.selectMeterImplementById(energyIndex.getMeterId()); + List<TagValue> tagValueList = realtimeDatabaseService.retrieve(energyIndex.getCode(), beginTime, endTime, + RetrievalModes.BestFit, count); + List<HistoricalDataExcel> excelList = new ArrayList<>(); + Date date = DateUtil.date(); + for (int i = 0; i < count + 1; i++) { + HistoricalDataExcel vo = new HistoricalDataExcel(); + String indexName = energyIndex.getName(); + if (ObjectUtils.isNotEmpty(infor)) { + indexName = infor.getInstallactionLocation() + "_" + infor.getMeterName() + "_" + indexName; + } + 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 (i > 0) { + TagValue previousTagValue = tagValueList.get(i - 1); + BigDecimal previousValue = BigDecimal.valueOf(previousTagValue.getValue()); + 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.offsetHour(beginTime, 1); + } else { + beginTime = DateUtil.offsetMinute(beginTime, 3); + } + vo.setValue(String.valueOf(value)); + vo.setUsedValue(String.valueOf(usedValue)); + excelList.add(vo); + } + ExcelUtil<HistoricalDataExcel> util = new ExcelUtil<>(HistoricalDataExcel.class); + String sheetName = "鍘嗗彶鏁版嵁缁熻" + DateUtil.formatDate(dto.getDataTime()); +// return util.exportRealTimeDataExcel(excelList, sheetName); + return util.exportExcel(excelList, sheetName); + } catch (Exception ex) { + logger.error("瀵煎嚭Excel鏁版嵁鍑洪敊锛�", ex); + return AjaxResult.error("瀵煎嚭Excel鏁版嵁鍑洪敊!"); + } + } + +} -- Gitblit v1.9.3