feat(ems): 新增能耗统计与环比分析功能- 添加按日和按月汇总能耗数据的接口与实现
- 实现能耗环比概况的数据结构与基础查询逻辑 - 引入新的查询参数类和返回值对象以支持统计功能 - 配置MyBatis XML映射文件以支持能耗统计数据查询 - 控制器层增加获取能耗趋势和环比信息的新端点
This commit is contained in:
@@ -3,9 +3,15 @@ package com.klp.ems.controller;
|
||||
import java.util.List;
|
||||
import java.util.Arrays;
|
||||
|
||||
import com.klp.ems.domain.bo.EmsEnergyConsumptionQueryBo;
|
||||
import com.klp.ems.domain.vo.EnergyChainRatioVo;
|
||||
import com.klp.ems.domain.vo.SummaryDailyVo;
|
||||
import com.klp.ems.domain.vo.SummaryMonthlyVo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
import org.flywaydb.core.internal.util.StringUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import com.klp.common.annotation.RepeatSubmit;
|
||||
@@ -36,6 +42,31 @@ public class EmsEnergyConsumptionController extends BaseController {
|
||||
|
||||
private final IEmsEnergyConsumptionService iEmsEnergyConsumptionService;
|
||||
|
||||
/**
|
||||
* 近期能耗趋势(测过了)
|
||||
*/
|
||||
@GetMapping("/getEnergySummary")
|
||||
public R getEnergySummary(EmsEnergyConsumptionQueryBo queryBo){
|
||||
if (StringUtils.hasText(queryBo.getMonth())) {
|
||||
List<SummaryDailyVo> data = iEmsEnergyConsumptionService.getEnergySummaryDaily(queryBo.getMonth());
|
||||
return R.ok(data);
|
||||
}else if (StringUtils.hasText(queryBo.getYear())) {
|
||||
List<SummaryMonthlyVo> data = iEmsEnergyConsumptionService.getEnergySummaryMonthly(queryBo.getYear());
|
||||
return R.ok(data);
|
||||
} else {
|
||||
return R.fail("year 或 month 必须提供一个");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取能耗环比概况(没写完)
|
||||
*/
|
||||
@GetMapping("/getEnergyChainRatio")
|
||||
public R<EnergyChainRatioVo> getEnergyChainRatio() {
|
||||
EnergyChainRatioVo energyChainRatioVo = iEmsEnergyConsumptionService.getEnergyChainRatio();
|
||||
return R.ok(energyChainRatioVo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询能耗记录列表
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.klp.ems.domain.bo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class EmsEnergyConsumptionQueryBo {
|
||||
/**
|
||||
* 年份,用于按月汇总(格式:yyyy)
|
||||
*/
|
||||
private String year;
|
||||
|
||||
/**
|
||||
* 月份,用于按天汇总(格式:yyyy-MM)
|
||||
*/
|
||||
private String month;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.klp.ems.domain.vo;
|
||||
|
||||
/**
|
||||
* 环比概况
|
||||
*/
|
||||
public class EnergyChainRatioVo {
|
||||
private Double todayUsage; // 今日用能
|
||||
private Double yesterdayUsage; // 昨日同期
|
||||
private Double thisMonthUsage; // 当月累计
|
||||
private Double lastMonthUsage; // 上月同期
|
||||
private Double lastYearUsage; // 去年同期
|
||||
|
||||
private Double dailyChainRate; // 日环比 (%)
|
||||
private Double monthlyChainRate; // 月环比 (%)
|
||||
private Double yearOnYearRate; // 年同比 (%)
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.klp.ems.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class SummaryDailyVo {
|
||||
private String day; // 日期,如 "2025-09-01"
|
||||
private BigDecimal totalConsumption; // 当日总能耗
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.klp.ems.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class SummaryMonthlyVo {
|
||||
private String month; // 月份,如 "2025-09"
|
||||
private BigDecimal totalConsumption; // 当月总能耗
|
||||
}
|
||||
@@ -3,6 +3,11 @@ package com.klp.ems.mapper;
|
||||
import com.klp.ems.domain.EmsEnergyConsumption;
|
||||
import com.klp.ems.domain.vo.EmsEnergyConsumptionVo;
|
||||
import com.klp.common.core.mapper.BaseMapperPlus;
|
||||
import com.klp.ems.domain.vo.SummaryDailyVo;
|
||||
import com.klp.ems.domain.vo.SummaryMonthlyVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 能耗记录Mapper接口
|
||||
@@ -12,4 +17,7 @@ import com.klp.common.core.mapper.BaseMapperPlus;
|
||||
*/
|
||||
public interface EmsEnergyConsumptionMapper extends BaseMapperPlus<EmsEnergyConsumptionMapper, EmsEnergyConsumption, EmsEnergyConsumptionVo> {
|
||||
|
||||
List<SummaryDailyVo> selectDailySummary(@Param("startDate") String startDate, @Param("endDate") String endDate);
|
||||
|
||||
List<SummaryMonthlyVo> selectMonthlySummary(@Param("year") String year);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package com.klp.ems.service;
|
||||
|
||||
import com.klp.ems.domain.EmsEnergyConsumption;
|
||||
import com.klp.ems.domain.vo.EmsEnergyConsumptionVo;
|
||||
import com.klp.ems.domain.bo.EmsEnergyConsumptionBo;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
import com.klp.common.core.domain.PageQuery;
|
||||
import com.klp.ems.domain.vo.EnergyChainRatioVo;
|
||||
import com.klp.ems.domain.vo.SummaryDailyVo;
|
||||
import com.klp.ems.domain.vo.SummaryMonthlyVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@@ -46,4 +48,10 @@ public interface IEmsEnergyConsumptionService {
|
||||
* 校验并批量删除能耗记录信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
EnergyChainRatioVo getEnergyChainRatio();
|
||||
|
||||
List<SummaryDailyVo> getEnergySummaryDaily(String month);
|
||||
|
||||
List<SummaryMonthlyVo> getEnergySummaryMonthly(String year);
|
||||
}
|
||||
|
||||
@@ -6,6 +6,10 @@ import com.klp.common.core.domain.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.klp.ems.domain.bo.EmsEnergyConsumptionQueryBo;
|
||||
import com.klp.ems.domain.vo.EnergyChainRatioVo;
|
||||
import com.klp.ems.domain.vo.SummaryDailyVo;
|
||||
import com.klp.ems.domain.vo.SummaryMonthlyVo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.klp.ems.domain.bo.EmsEnergyConsumptionBo;
|
||||
@@ -14,6 +18,9 @@ import com.klp.ems.domain.EmsEnergyConsumption;
|
||||
import com.klp.ems.mapper.EmsEnergyConsumptionMapper;
|
||||
import com.klp.ems.service.IEmsEnergyConsumptionService;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
@@ -111,4 +118,30 @@ public class EmsEnergyConsumptionServiceImpl implements IEmsEnergyConsumptionSer
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnergyChainRatioVo getEnergyChainRatio() {
|
||||
EnergyChainRatioVo energyChainRatioVo = new EnergyChainRatioVo();
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SummaryDailyVo> getEnergySummaryDaily(String month) {
|
||||
// 解析 month 为开始和结束时间
|
||||
LocalDate startDate = LocalDate.parse(month + "-01", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
||||
LocalDate endDate = startDate.withDayOfMonth(startDate.lengthOfMonth());
|
||||
|
||||
return baseMapper.selectDailySummary(month + "-01", endDate.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SummaryMonthlyVo> getEnergySummaryMonthly(String year) {
|
||||
return baseMapper.selectMonthlySummary(year);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user