Parcourir la source

feat(park): 添加电站充电统计数据管理功能

- 新增 PowerStationChargeStats 实体类,包含充电量、时长、费用等统计字段
- 创建 PowerStationChargeStatsController 提供 REST API 接口
- 实现 PowerStationChargeStatsService 数据访问服务
- 配置 PowerStationChargeStatsMapper 数据库映射
- 添加 MyBatis XML 映射文件定义 SQL 操作
- 集成 Excel 导入导出功能支持数据批量处理
- 实现分页查询、增删改查等基础 CRUD 操作
林仔 il y a 2 mois
Parent
commit
68680331bf

+ 104 - 0
park-overview-service/src/main/java/com/zksy/park/controller/PowerStationChargeStatsController.java

@@ -0,0 +1,104 @@
+package com.zksy.park.controller;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zksy.common.annotation.Log;
+import com.zksy.common.core.domain.Result;
+import com.zksy.common.enums.BusinessType;
+import com.zksy.common.utils.SearchUtil;
+import com.zksy.park.domain.PowerStationChargeStats;
+import com.zksy.park.service.PowerStationChargeStatsService;
+import com.zksy.park.utils.DowntemplateUtil;
+import com.zksy.park.utils.ExcelExportUtil;
+import com.zksy.park.utils.ExcelImportUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 智慧用工
+ */
+@Slf4j
+@RestController
+@RequestMapping("/PowerStationChargeStats")
+@Api(tags = "电站充电统计数据", description = "电站充电统计数据")
+public class PowerStationChargeStatsController {
+
+    @Autowired
+    private PowerStationChargeStatsService service;
+
+    @GetMapping("/getById/{id}")
+    @ApiOperation(value = "电站充电统计数据搜索getById")
+    public Result getById(@PathVariable String id) {
+        return Result.ok(service.getById(id));
+    }
+
+    @GetMapping("/findByPage")
+    @ApiOperation(value = "电站充电统计数据分页")
+    public Result findByPage(long pageNum, long pageSize, String conditionJson) throws Exception {
+        return Result.ok(service.page(new Page<>(pageNum, pageSize), SearchUtil.parseWhereSql(conditionJson)));
+    }
+
+    @GetMapping("/getList")
+    @ApiOperation(value = "查询所有电站充电统计数据")
+    public Result getList(String conditionJson) throws Exception {
+        return Result.ok(service.list(SearchUtil.parseWhereSql(conditionJson)));
+    }
+
+    @PostMapping("/save")
+    @ApiOperation(value = "新增电站充电统计数据")
+    @Log(title = "电站充电统计数据", businessType = BusinessType.INSERT)
+    public Result<Object> save(@RequestBody PowerStationChargeStats entity) {
+        entity.setCreateTime(LocalDateTime.now());
+        return Result.ok(service.save(entity),"新增成功");
+    }
+
+    @PutMapping("/updateById")
+    @ApiOperation(value = "电站充电统计数据修改")
+    @Log(title = "修改电站充电统计数据", businessType = BusinessType.UPDATE)
+    public Result<Object> updateById(@RequestBody PowerStationChargeStats entity) {
+        return Result.ok(service.updateById(entity),"修改成功");
+    }
+
+    @DeleteMapping("/deleteById")
+    @ApiOperation(value = "电站充电统计数据删除")
+    @Log(title = "删除v", businessType = BusinessType.DELETE)
+    public Result<Object> deleteById(String id) {
+        return Result.ok(service.removeById(id),"删除成功");
+    }
+
+    @DeleteMapping("/deleteBatchById")
+    @ApiOperation(value = "电站充电统计数据批量删除")
+    @Log(title = "电站充电统计数据批量删除", businessType = BusinessType.DELETE)
+    public Result<Object> deleteBatchById(@RequestParam List<String> ids) {
+        return Result.ok(service.removeByIds(ids),"删除成功");
+    }
+
+    @GetMapping("/exportExcel")
+    @ApiOperation(value = "导出电站充电统计数据Excel")
+    @Log(title = "导出电站充电统计数据Excel", businessType = BusinessType.EXPORT)
+    public void exportExcel(HttpServletResponse response,String conditionJson) throws Exception {
+        ExcelExportUtil.exportExcel(response,service.list(SearchUtil.parseWhereSql(conditionJson)), PowerStationChargeStats.class, "电站充电统计数据","电站充电统计数据");
+    }
+
+    @PostMapping("/importExcel")
+    @ApiOperation(value = "导入电站充电统计数据Excel")
+    @Log(title = "导入电站充电统计数据Excel", businessType = BusinessType.IMPORT)
+    public Result<Object> importExcel(@RequestParam("file") MultipartFile file) {
+        return Result.ok(service.saveOrUpdateBatch(ExcelImportUtil.importExcel(file, PowerStationChargeStats.class)));
+    }
+    @GetMapping("/downloadTemplateWord")
+    @ApiOperation(value = "下载电站充电统计数据模板", notes = "下载电站充电统计数据模板")
+    public void getUploadTemplate(HttpServletResponse response) throws IOException {
+        DowntemplateUtil.downloadTemplate(response,"电站充电统计数据");
+    }
+}

+ 260 - 0
park-overview-service/src/main/java/com/zksy/park/domain/PowerStationChargeStats.java

@@ -0,0 +1,260 @@
+package com.zksy.park.domain;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+
+/**
+ * 电站充电统计数据表
+ * @TableName power_station_charge_stats
+ */
+@TableName(value ="power_station_charge_stats")
+@Data
+public class PowerStationChargeStats implements Serializable {
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType. AUTO)
+    private Long id;
+
+    /**
+     * 所属周期
+     */
+    @ApiModelProperty(value = "所属周期", example = "2026年03月")
+    @ExcelProperty(value = "所属周期", index = 0)
+    @ColumnWidth(15)
+    @TableField(value = "cycle")
+    private String cycle;
+
+    /**
+     * 电站名称
+     */
+    @ApiModelProperty(value = "电站名称", example = "沅陵产业园区充电站")
+    @ExcelProperty(value = "电站名称", index = 1)
+    @ColumnWidth(25)
+    @TableField(value = "station_name")
+    private String stationName;
+
+    /**
+     * 充电量(度)
+     */
+    @ApiModelProperty(value = "充电量(度)", example = "3242.6483")
+    @ExcelProperty(value = "充电量(度)", index = 2)
+    @ColumnWidth(18)
+    @TableField(value = "total_charge")
+    private BigDecimal totalCharge;
+
+    /**
+     * 峰时电量(度)
+     */
+    @ApiModelProperty(value = "峰时电量(度)", example = "252.4037")
+    @ExcelProperty(value = "峰时电量(度)", index = 3)
+    @ColumnWidth(18)
+    @TableField(value = "peak_charge")
+    private BigDecimal peakCharge;
+
+    /**
+     * 尖时电量(度)
+     */
+    @ApiModelProperty(value = "尖时电量(度)", example = "365.1890")
+    @ExcelProperty(value = "尖时电量(度)", index = 4)
+    @ColumnWidth(18)
+    @TableField(value = "sharp_charge")
+    private BigDecimal sharpCharge;
+
+    /**
+     * 谷时电量(度)
+     */
+    @ApiModelProperty(value = "谷时电量(度)", example = "1719.1153")
+    @ExcelProperty(value = "谷时电量(度)", index = 5)
+    @ColumnWidth(18)
+    @TableField(value = "valley_charge")
+    private BigDecimal valleyCharge;
+
+    /**
+     * 平时电量(度)
+     */
+    @ApiModelProperty(value = "平时电量(度)", example = "905.9403")
+    @ExcelProperty(value = "平时电量(度)", index = 6)
+    @ColumnWidth(18)
+    @TableField(value = "normal_charge")
+    private BigDecimal normalCharge;
+
+    /**
+     * 尖峰电量(度)
+     */
+    @ApiModelProperty(value = "尖峰电量(度)", example = "0.0000")
+    @ExcelProperty(value = "尖峰电量(度)", index = 7)
+    @ColumnWidth(18)
+    @TableField(value = "sharp_peak_charge")
+    private BigDecimal sharpPeakCharge;
+
+    /**
+     * 深谷电量(度)
+     */
+    @ApiModelProperty(value = "深谷电量(度)", example = "0.0000")
+    @ExcelProperty(value = "深谷电量(度)", index = 8)
+    @ColumnWidth(18)
+    @TableField(value = "deep_valley_charge")
+    private BigDecimal deepValleyCharge;
+
+    /**
+     * 充电时长(分钟)
+     */
+    @ApiModelProperty(value = "充电时长(分钟)", example = "4416")
+    @ExcelProperty(value = "充电时长(分钟)", index = 9)
+    @ColumnWidth(18)
+    @TableField(value = "charge_duration")
+    private Integer chargeDuration;
+
+    /**
+     * 直流充电时长(分钟)
+     */
+    @ApiModelProperty(value = "直流充电时长(分钟)", example = "3097")
+    @ExcelProperty(value = "直流充电时长(分钟)", index = 10)
+    @ColumnWidth(20)
+    @TableField(value = "dc_charge_duration")
+    private Integer dcChargeDuration;
+
+    /**
+     * 交流充电时长(分钟)
+     */
+    @ApiModelProperty(value = "交流充电时长(分钟)", example = "1319")
+    @ExcelProperty(value = "交流充电时长(分钟)", index = 11)
+    @ColumnWidth(20)
+    @TableField(value = "ac_charge_duration")
+    private Integer acChargeDuration;
+
+    /**
+     * 充电数(次)
+     */
+    @ApiModelProperty(value = "充电数(次)", example = "96")
+    @ExcelProperty(value = "充电数(次)", index = 12)
+    @ColumnWidth(15)
+    @TableField(value = "charge_count")
+    private Integer chargeCount;
+
+    /**
+     * 直流充电数(次)
+     */
+    @ApiModelProperty(value = "直流充电数(次)", example = "90")
+    @ExcelProperty(value = "直流充电数(次)", index = 13)
+    @ColumnWidth(18)
+    @TableField(value = "dc_charge_count")
+    private Integer dcChargeCount;
+
+    /**
+     * 交流充电数(次)
+     */
+    @ApiModelProperty(value = "交流充电数(次)", example = "6")
+    @ExcelProperty(value = "交流充电数(次)", index = 14)
+    @ColumnWidth(18)
+    @TableField(value = "ac_charge_count")
+    private Integer acChargeCount;
+
+    /**
+     * 充电费-折后(元)
+     */
+    @ApiModelProperty(value = "充电费-折后(元)", example = "3463.14")
+    @ExcelProperty(value = "充电费-折后(元)", index = 15)
+    @ColumnWidth(18)
+    @TableField(value = "charge_fee_discounted")
+    private BigDecimal chargeFeeDiscounted;
+
+    /**
+     * 基础电费-折后(元)
+     */
+    @ApiModelProperty(value = "基础电费-折后(元)", example = "2054.26")
+    @ExcelProperty(value = "基础电费-折后(元)", index = 16)
+    @ColumnWidth(20)
+    @TableField(value = "basic_fee_discounted")
+    private BigDecimal basicFeeDiscounted;
+
+    /**
+     * 服务费-折后(元)
+     */
+    @ApiModelProperty(value = "服务费-折后(元)", example = "1408.88")
+    @ExcelProperty(value = "服务费-折后(元)", index = 17)
+    @ColumnWidth(20)
+    @TableField(value = "service_fee_discounted")
+    private BigDecimal serviceFeeDiscounted;
+
+    /**
+     * 充电费-原价(元)
+     */
+    @ApiModelProperty(value = "充电费-原价(元)", example = "3563.58")
+    @ExcelProperty(value = "充电费-原价(元)", index = 18)
+    @ColumnWidth(18)
+    @TableField(value = "charge_fee_original")
+    private BigDecimal chargeFeeOriginal;
+
+    /**
+     * 基础电费-原价(元)
+     */
+    @ApiModelProperty(value = "基础电费-原价(元)", example = "2054.26")
+    @ExcelProperty(value = "基础电费-原价(元)", index = 19)
+    @ColumnWidth(20)
+    @TableField(value = "basic_fee_original")
+    private BigDecimal basicFeeOriginal;
+
+    /**
+     * 服务费-原价(元)
+     */
+    @ApiModelProperty(value = "服务费-原价(元)", example = "1509.32")
+    @ExcelProperty(value = "服务费-原价(元)", index = 20)
+    @ColumnWidth(20)
+    @TableField(value = "service_fee_original")
+    private BigDecimal serviceFeeOriginal;
+
+    /**
+     * 单枪日均电量(度)
+     */
+    @ApiModelProperty(value = "单枪日均电量(度)", example = "6391.4324")
+    @ExcelProperty(value = "单枪日均电量(度)", index = 21)
+    @ColumnWidth(20)
+    @TableField(value = "daily_per_gun_charge")
+    private BigDecimal dailyPerGunCharge;
+
+    /**
+     * 直流日均电量(度)
+     */
+    @ApiModelProperty(value = "直流日均电量(度)", example = "3175.6590")
+    @ExcelProperty(value = "直流日均电量(度)", index = 22)
+    @ColumnWidth(20)
+    @TableField(value = "daily_dc_charge")
+    private BigDecimal dailyDcCharge;
+
+    /**
+     * 交流日均电量(度)
+     */
+    @ApiModelProperty(value = "交流日均电量(度)", example = "66.9893")
+    @ExcelProperty(value = "交流日均电量(度)", index = 23)
+    @ColumnWidth(20)
+    @TableField(value = "daily_ac_charge")
+    private BigDecimal dailyAcCharge;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    @TableField(value = "update_time")
+    private LocalDateTime updateTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 18 - 0
park-overview-service/src/main/java/com/zksy/park/mapper/PowerStationChargeStatsMapper.java

@@ -0,0 +1,18 @@
+package com.zksy.park.mapper;
+
+import com.zksy.park.domain.PowerStationChargeStats;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author Administrator
+* @description 针对表【power_station_charge_stats(电站充电统计数据表)】的数据库操作Mapper
+* @createDate 2026-03-06 15:34:21
+* @Entity com.zksy.park.domain.PowerStationChargeStats
+*/
+public interface PowerStationChargeStatsMapper extends BaseMapper<PowerStationChargeStats> {
+
+}
+
+
+
+

+ 13 - 0
park-overview-service/src/main/java/com/zksy/park/service/PowerStationChargeStatsService.java

@@ -0,0 +1,13 @@
+package com.zksy.park.service;
+
+import com.zksy.park.domain.PowerStationChargeStats;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author Administrator
+* @description 针对表【power_station_charge_stats(电站充电统计数据表)】的数据库操作Service
+* @createDate 2026-03-06 15:34:21
+*/
+public interface PowerStationChargeStatsService extends IService<PowerStationChargeStats> {
+
+}

+ 22 - 0
park-overview-service/src/main/java/com/zksy/park/service/impl/PowerStationChargeStatsServiceImpl.java

@@ -0,0 +1,22 @@
+package com.zksy.park.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zksy.park.domain.PowerStationChargeStats;
+import com.zksy.park.service.PowerStationChargeStatsService;
+import com.zksy.park.mapper.PowerStationChargeStatsMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author Administrator
+* @description 针对表【power_station_charge_stats(电站充电统计数据表)】的数据库操作Service实现
+* @createDate 2026-03-06 15:34:21
+*/
+@Service
+public class PowerStationChargeStatsServiceImpl extends ServiceImpl<PowerStationChargeStatsMapper, PowerStationChargeStats>
+    implements PowerStationChargeStatsService{
+
+}
+
+
+
+

+ 48 - 0
park-overview-service/src/main/resources/mapper/PowerStationChargeStatsMapper.xml

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zksy.park.mapper.PowerStationChargeStatsMapper">
+
+    <resultMap id="BaseResultMap" type="com.zksy.park.domain.PowerStationChargeStats">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="cycle" column="cycle" jdbcType="VARCHAR"/>
+            <result property="stationName" column="station_name" jdbcType="VARCHAR"/>
+            <result property="totalCharge" column="total_charge" jdbcType="DECIMAL"/>
+            <result property="peakCharge" column="peak_charge" jdbcType="DECIMAL"/>
+            <result property="sharpCharge" column="sharp_charge" jdbcType="DECIMAL"/>
+            <result property="valleyCharge" column="valley_charge" jdbcType="DECIMAL"/>
+            <result property="normalCharge" column="normal_charge" jdbcType="DECIMAL"/>
+            <result property="sharpPeakCharge" column="sharp_peak_charge" jdbcType="DECIMAL"/>
+            <result property="deepValleyCharge" column="deep_valley_charge" jdbcType="DECIMAL"/>
+            <result property="chargeDuration" column="charge_duration" jdbcType="INTEGER"/>
+            <result property="dcChargeDuration" column="dc_charge_duration" jdbcType="INTEGER"/>
+            <result property="acChargeDuration" column="ac_charge_duration" jdbcType="INTEGER"/>
+            <result property="chargeCount" column="charge_count" jdbcType="INTEGER"/>
+            <result property="dcChargeCount" column="dc_charge_count" jdbcType="INTEGER"/>
+            <result property="acChargeCount" column="ac_charge_count" jdbcType="INTEGER"/>
+            <result property="chargeFeeDiscounted" column="charge_fee_discounted" jdbcType="DECIMAL"/>
+            <result property="basicFeeDiscounted" column="basic_fee_discounted" jdbcType="DECIMAL"/>
+            <result property="serviceFeeDiscounted" column="service_fee_discounted" jdbcType="DECIMAL"/>
+            <result property="chargeFeeOriginal" column="charge_fee_original" jdbcType="DECIMAL"/>
+            <result property="basicFeeOriginal" column="basic_fee_original" jdbcType="DECIMAL"/>
+            <result property="serviceFeeOriginal" column="service_fee_original" jdbcType="DECIMAL"/>
+            <result property="dailyPerGunCharge" column="daily_per_gun_charge" jdbcType="DECIMAL"/>
+            <result property="dailyDcCharge" column="daily_dc_charge" jdbcType="DECIMAL"/>
+            <result property="dailyAcCharge" column="daily_ac_charge" jdbcType="DECIMAL"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,cycle,station_name,
+        total_charge,peak_charge,sharp_charge,
+        valley_charge,normal_charge,sharp_peak_charge,
+        deep_valley_charge,charge_duration,dc_charge_duration,
+        ac_charge_duration,charge_count,dc_charge_count,
+        ac_charge_count,charge_fee_discounted,basic_fee_discounted,
+        service_fee_discounted,charge_fee_original,basic_fee_original,
+        service_fee_original,daily_per_gun_charge,daily_dc_charge,
+        daily_ac_charge,create_time,update_time
+    </sql>
+</mapper>

BIN
park-overview-service/src/main/resources/template/电站充电统计数据.xlsx