zss
4 天以前 d7c626bbb83393550b63678a49d73a9ba44b1c85
能耗管理的能源类型+能耗抄表明细
已添加13个文件
已修改2个文件
753 ■■■■■ 文件已修改
doc/宁夏-中盛建材.sql 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/CodeGenerator.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/controller/EnergyConsumptionDetailController.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/controller/EnergyController.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/dto/EnergyConsumptionDetailDto.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/mapper/EnergyConsumptionDetailMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/mapper/EnergyMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/pojo/Energy.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/pojo/EnergyConsumptionDetail.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/service/EnergyConsumptionDetailService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/service/EnergyService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/service/impl/EnergyConsumptionDetailServiceImpl.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/service/impl/EnergyServiceImpl.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/energy/EnergyMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/ÄþÏÄ-ÖÐÊ¢½¨²Ä.sql
@@ -31,4 +31,35 @@
    PRIMARY KEY (`id`),
    KEY `idx_form_instance_id` (`form_instance_id`)
) ENGINE = INNODB
  DEFAULT CHARSET = utf8mb4 COMMENT = '销售生产需求';
  DEFAULT CHARSET = utf8mb4 COMMENT = '销售生产需求';
CREATE TABLE `product-inventory-management-zsjc`.`energy`  (
    `id` int NOT NULL AUTO_INCREMENT,
    `energy_tyep` varchar(255) NULL COMMENT '能源类型',
    `energy_name` varchar(255) NULL COMMENT '能源名称',
    `unit` varchar(255) NULL COMMENT '单位',
    `unit_price` decimal(10, 2) NULL COMMENT '单价',
    `remark` varchar(255) NULL COMMENT '备注',
    `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
    `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
    `create_user` bigint NULL DEFAULT NULL COMMENT '创建者',
    `update_user` bigint NULL DEFAULT NULL COMMENT '更新者',
    PRIMARY KEY (`id`)
    ) COMMENT = '能源类型';
CREATE TABLE `product-inventory-management-zsjc`.`energy_consumption_detail`  (
    `id` int NOT NULL AUTO_INCREMENT,
    `energy_id` int NULL COMMENT '外检关联能源类型id',
    `type` varchar(255) NULL COMMENT '办公/生产',
    `meter_reading_location` varchar(255) NULL COMMENT '抄表位置',
    `meter_reading_date` date NULL COMMENT '抄表日期',
    `start_code` decimal(10, 2) NULL COMMENT '起码',
    `stop_code` decimal(10, 2) NULL COMMENT '止码',
    `dosage` decimal(10, 2) NULL COMMENT '用量',
    `remark` varchar(255) NULL COMMENT '备注',
    `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
    `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
    `create_user` bigint NULL DEFAULT NULL COMMENT '创建者',
    `update_user` bigint NULL DEFAULT NULL COMMENT '更新者',
    PRIMARY KEY (`id`)
    ) COMMENT = '能源类型-能耗抄表明细';
src/main/java/com/ruoyi/CodeGenerator.java
@@ -19,11 +19,11 @@
// æ¼”示例子,执行 main æ–¹æ³•控制台输入模块表名回车自动生成对应项目目录中
public class CodeGenerator {
    public static String database_url = "jdbc:mysql://1.15.17.182:9999/product-inventory-management-new";
    public static String database_url = "jdbc:mysql://1.15.17.182:9999/product-inventory-management-zsjc";
    public static String database_username = "root";
    public static String database_password= "xd@123456..";
    public static String author = "芯导软件(江苏)有限公司";
    public static String model = "staff"; // æ¨¡å—
    public static String model = "energy"; // æ¨¡å—
    public static String setParent = "com.ruoyi."+ model; // åŒ…路径
    public static String tablePrefix = ""; // è®¾ç½®è¿‡æ»¤è¡¨å‰ç¼€
    public static void main(String[] args) {
src/main/java/com/ruoyi/energy/controller/EnergyConsumptionDetailController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
package com.ruoyi.energy.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.energy.dto.EnergyConsumptionDetailDto;
import com.ruoyi.energy.pojo.Energy;
import com.ruoyi.energy.pojo.EnergyConsumptionDetail;
import com.ruoyi.energy.service.EnergyConsumptionDetailService;
import com.ruoyi.energy.service.EnergyService;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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.util.Arrays;
/**
 * <p>
 * èƒ½æºç±»åž‹-能耗抄表明细 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-10 11:22:20
 */
@RestController
@RequestMapping("/energyConsumptionDetail")
@Api(tags = "能耗管理-能耗抄表明细")
public class EnergyConsumptionDetailController {
    @Autowired
    private EnergyConsumptionDetailService energyConsumptionDetailService;
    @GetMapping("page")
    @ApiOperation("分页查询")
    public R page(Page<EnergyConsumptionDetailDto> page, EnergyConsumptionDetailDto energyConsumptionDetailDto) {
        return R.ok(energyConsumptionDetailService.pageEnergyConsumptionDetail(page, energyConsumptionDetailDto));
    }
    @ApiOperation("新增/修改能耗抄表")
    @PostMapping()
    public R add(@RequestBody EnergyConsumptionDetail energyConsumptionDetail) {
        return R.ok(energyConsumptionDetailService.saveOrUpdate(energyConsumptionDetail));
    }
    @ApiOperation("删除能耗抄表")
    @DeleteMapping("/{ids}")
    public R delete(@PathVariable("ids") Long[] ids) {
        return R.ok(energyConsumptionDetailService.removeBatchByIds(Arrays.asList(ids)));
    }
    @Log(title = "能耗抄表明细-导入", businessType = BusinessType.IMPORT)
    @PostMapping("/importData")
    public R importData(MultipartFile file) throws Exception {
        return energyConsumptionDetailService.importData(file);
    }
    @PostMapping("/downloadTemplate")
    @Log(title = "能耗抄表-下载模板", businessType = BusinessType.EXPORT)
    public void downloadTemplate(HttpServletResponse response) {
        ExcelUtil<EnergyConsumptionDetailDto> util = new ExcelUtil<EnergyConsumptionDetailDto>(EnergyConsumptionDetailDto.class);
        util.importTemplateExcel(response, "能耗抄表模版");
    }
    @PostMapping("/export")
    @ApiOperation("能耗抄表-导出")
    @Log(title = "能耗抄表-导出", businessType = BusinessType.EXPORT)
    public void export(HttpServletResponse response) {
        energyConsumptionDetailService.export(response);
    }
}
src/main/java/com/ruoyi/energy/controller/EnergyController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
package com.ruoyi.energy.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.energy.pojo.Energy;
import com.ruoyi.energy.service.EnergyService;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.production.dto.ProcessRouteDto;
import com.ruoyi.production.pojo.ProcessRoute;
import com.ruoyi.production.pojo.ProductProcess;
import com.ruoyi.production.service.ProcessRouteService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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.util.Arrays;
/**
 * <p>
 * èƒ½æºç±»åž‹ å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-10 10:50:18
 */
@RestController
@RequestMapping("/energy")
@Api(tags = "能耗管理-能源类型")
public class EnergyController {
    @Autowired
    private EnergyService energyService;
    @GetMapping("page")
    @ApiOperation("分页查询")
    public R page(Page<Energy> page, Energy energy) {
        return R.ok(energyService.pageEnergy(page, energy));
    }
    @ApiOperation("新增/修改能源类型")
    @PostMapping()
    public R add(@RequestBody Energy energy) {
        return R.ok(energyService.saveOrUpdate(energy));
    }
    @ApiOperation("删除能源类型")
    @DeleteMapping("/{ids}")
    public R delete(@PathVariable("ids") Long[] ids) {
        return R.ok(energyService.batchDelete(Arrays.asList(ids)));
    }
    @Log(title = "能源类型-导入", businessType = BusinessType.IMPORT)
    @PostMapping("/importData")
    public R importData(MultipartFile file) throws Exception {
        return energyService.importData(file);
    }
    @PostMapping("/downloadTemplate")
    @Log(title = "能源类型-下载模板", businessType = BusinessType.EXPORT)
    public void downloadTemplate(HttpServletResponse response) {
        ExcelUtil<Energy> util = new ExcelUtil<Energy>(Energy.class);
        util.importTemplateExcel(response, "能源类型模版");
    }
    @PostMapping("/export")
    @ApiOperation("能源类型-导出")
    @Log(title = "能源类型-导出", businessType = BusinessType.EXPORT)
    public void export(HttpServletResponse response) {
        energyService.export(response);
    }
}
src/main/java/com/ruoyi/energy/dto/EnergyConsumptionDetailDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.ruoyi.energy.dto;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.baomidou.mybatisplus.annotation.TableField;
import com.ruoyi.energy.pojo.EnergyConsumptionDetail;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
//能耗抄表明细
@Data
@ExcelIgnoreUnannotated
public class EnergyConsumptionDetailDto extends EnergyConsumptionDetail {
    @ApiModelProperty("能源类型")
    @Excel(name = "能源类型")
    private String energyTyep;
    @ApiModelProperty("能源名称")
    @Excel(name = "能源名称")
    private String energyName;
    @ApiModelProperty("单位")
    @Excel(name = "单位")
    private String unit;
    //创建人
    private String createUserName;
}
src/main/java/com/ruoyi/energy/mapper/EnergyConsumptionDetailMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.ruoyi.energy.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.energy.dto.EnergyConsumptionDetailDto;
import com.ruoyi.energy.pojo.EnergyConsumptionDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * èƒ½æºç±»åž‹-能耗抄表明细 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-10 11:22:20
 */
@Mapper
public interface EnergyConsumptionDetailMapper extends BaseMapper<EnergyConsumptionDetail> {
    IPage<EnergyConsumptionDetailDto> pageEnergyConsumptionDetail(Page<EnergyConsumptionDetailDto> page, @Param("c") EnergyConsumptionDetailDto energyConsumptionDetailDto);
}
src/main/java/com/ruoyi/energy/mapper/EnergyMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.ruoyi.energy.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.energy.pojo.Energy;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * èƒ½æºç±»åž‹ Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-10 10:50:18
 */
@Mapper
public interface EnergyMapper extends BaseMapper<Energy> {
    IPage<Energy> pageEnergy(Page<Energy> page, @Param("c") Energy energy);
}
src/main/java/com/ruoyi/energy/pojo/Energy.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
package com.ruoyi.energy.pojo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.baomidou.mybatisplus.annotation.FieldFill;
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 com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * <p>
 * èƒ½æºç±»åž‹
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-10 10:50:18
 */
@Getter
@Setter
@TableName("energy")
@ApiModel(value = "Energy对象", description = "能源类型")
@ExcelIgnoreUnannotated
public class Energy implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("能源类型")
    @Excel(name = "能源类型")
    private String energyTyep;
    @ApiModelProperty("能源名称")
    @Excel(name = "能源名称")
    private String energyName;
    @ApiModelProperty("单位")
    @Excel(name = "单位")
    private String unit;
    @ApiModelProperty("单价")
    @Excel(name = "单价")
    private BigDecimal unitPrice;
    @ApiModelProperty("备注")
    @Excel(name = "备注")
    private String remark;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty("更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @ApiModelProperty("创建者")
    @TableField(fill = FieldFill.INSERT)
    private Long createUser;
    @ApiModelProperty("更新者")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateUser;
    //创建人
    @TableField(exist = false)
    private String createUserName;
}
src/main/java/com/ruoyi/energy/pojo/EnergyConsumptionDetail.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package com.ruoyi.energy.pojo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.baomidou.mybatisplus.annotation.FieldFill;
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.LocalDate;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * <p>
 * èƒ½æºç±»åž‹-能耗抄表明细
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-10 11:22:20
 */
@Getter
@Setter
@TableName("energy_consumption_detail")
@ApiModel(value = "EnergyConsumptionDetail对象", description = "能源类型-能耗抄表明细")
@ExcelIgnoreUnannotated
public class EnergyConsumptionDetail implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("外检关联能源类型id")
    private Integer energyId;
    @ApiModelProperty("办公/生产")
    @Excel(name = "能耗场景")
    private String type;
    @ApiModelProperty("抄表位置")
    private String meterReadingLocation;
    @ApiModelProperty("抄表日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "日期")
    private LocalDate meterReadingDate;
    @ApiModelProperty("起码")
    @Excel(name = "起码")
    private BigDecimal startCode;
    @ApiModelProperty("止码")
    @Excel(name = "止码")
    private BigDecimal stopCode;
    @ApiModelProperty("用量")
    @Excel(name = "用量")
    private BigDecimal dosage;
    @ApiModelProperty("备注")
    @Excel(name = "备注")
    private String remark;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty("更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @ApiModelProperty("创建者")
    @TableField(fill = FieldFill.INSERT)
    private Long createUser;
    @ApiModelProperty("更新者")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateUser;
}
src/main/java/com/ruoyi/energy/service/EnergyConsumptionDetailService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.energy.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.energy.dto.EnergyConsumptionDetailDto;
import com.ruoyi.energy.pojo.EnergyConsumptionDetail;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.framework.web.domain.R;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * èƒ½æºç±»åž‹-能耗抄表明细 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-10 11:22:20
 */
public interface EnergyConsumptionDetailService extends IService<EnergyConsumptionDetail> {
    IPage<EnergyConsumptionDetailDto> pageEnergyConsumptionDetail(Page<EnergyConsumptionDetailDto> page, EnergyConsumptionDetailDto energyConsumptionDetailDto);
    R importData(MultipartFile file);
    void export(HttpServletResponse response);
}
src/main/java/com/ruoyi/energy/service/EnergyService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.ruoyi.energy.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.energy.pojo.Energy;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.framework.web.domain.R;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
 * <p>
 * èƒ½æºç±»åž‹ æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-10 10:50:18
 */
public interface EnergyService extends IService<Energy> {
    IPage<Energy> pageEnergy(Page<Energy> page, Energy energy);
    boolean batchDelete(List<Long> ids);
    R importData(MultipartFile file);
    void export(HttpServletResponse response);
}
src/main/java/com/ruoyi/energy/service/impl/EnergyConsumptionDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
package com.ruoyi.energy.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.energy.dto.EnergyConsumptionDetailDto;
import com.ruoyi.energy.mapper.EnergyMapper;
import com.ruoyi.energy.pojo.Energy;
import com.ruoyi.energy.pojo.EnergyConsumptionDetail;
import com.ruoyi.energy.mapper.EnergyConsumptionDetailMapper;
import com.ruoyi.energy.service.EnergyConsumptionDetailService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.framework.web.domain.R;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
 * èƒ½æºç±»åž‹-能耗抄表明细 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-10 11:22:20
 */
@Service
public class EnergyConsumptionDetailServiceImpl extends ServiceImpl<EnergyConsumptionDetailMapper, EnergyConsumptionDetail> implements EnergyConsumptionDetailService {
    @Autowired
    private EnergyConsumptionDetailMapper energyConsumptionDetailMapper;
    @Autowired
    private EnergyMapper energyMapper;
    @Override
    public IPage<EnergyConsumptionDetailDto> pageEnergyConsumptionDetail(Page<EnergyConsumptionDetailDto> page, EnergyConsumptionDetailDto energyConsumptionDetailDto) {
        return energyConsumptionDetailMapper.pageEnergyConsumptionDetail(page,energyConsumptionDetailDto);
    }
    @Override
    public R importData(MultipartFile file) {
        try {
            ExcelUtil<EnergyConsumptionDetailDto> util = new ExcelUtil<EnergyConsumptionDetailDto>(EnergyConsumptionDetailDto.class);
            List<EnergyConsumptionDetailDto> energyConsumptionDetailDtoList = util.importExcel(file.getInputStream());
            if(CollectionUtils.isEmpty(energyConsumptionDetailDtoList)){
                return R.fail("模板错误或导入数据为空");
            }
            List<EnergyConsumptionDetail> list = energyConsumptionDetailDtoList.stream().map(energyConsumptionDetailDto -> {
                if (ObjectUtils.isEmpty(energyConsumptionDetailDto)) {
                    throw new RuntimeException("使用模板进行导入");
                }
                if (ObjectUtils.isEmpty(energyConsumptionDetailDto.getEnergyTyep()) && ObjectUtils.isEmpty(energyConsumptionDetailDto.getEnergyName())) {
                    throw new RuntimeException("能源类型不能为空");
                }
                List<Energy> energy = energyMapper.selectList(Wrappers.<Energy>lambdaQuery()
                        .eq(Energy::getEnergyTyep, energyConsumptionDetailDto.getEnergyTyep())
                        .eq(Energy::getEnergyName, energyConsumptionDetailDto.getEnergyName()));
                if (CollectionUtils.isEmpty(energy)) {
                    throw new RuntimeException("导入数据中的能源类型在系统中不存在,请先前往能源类型中配置!");
                }
                EnergyConsumptionDetail energyConsumptionDetail = new EnergyConsumptionDetail();
                BeanUtils.copyProperties(energyConsumptionDetailDto, energyConsumptionDetail);
                energyConsumptionDetail.setEnergyId(energy.get(0).getId());
                return energyConsumptionDetail;
            }).collect(Collectors.toList());
            this.saveOrUpdateBatch(list);
            return R.ok(true);
        }catch (Exception e){
            e.printStackTrace();
            return R.fail(e.getMessage());
        }
    }
    @Override
    public void export(HttpServletResponse response) {
        List<EnergyConsumptionDetailDto> list = energyConsumptionDetailMapper.pageEnergyConsumptionDetail(new Page<>(-1,-1),null).getRecords();
        if(CollectionUtils.isEmpty(list)){
            throw new RuntimeException("无导出数据");
        }
        ExcelUtil<EnergyConsumptionDetailDto> util = new ExcelUtil<>(EnergyConsumptionDetailDto.class);
        util.exportExcel(response, list, "能耗抄表");
    }
}
src/main/java/com/ruoyi/energy/service/impl/EnergyServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
package com.ruoyi.energy.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.energy.mapper.EnergyConsumptionDetailMapper;
import com.ruoyi.energy.pojo.Energy;
import com.ruoyi.energy.mapper.EnergyMapper;
import com.ruoyi.energy.pojo.EnergyConsumptionDetail;
import com.ruoyi.energy.service.EnergyService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.framework.web.domain.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
 * <p>
 * èƒ½æºç±»åž‹ æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-10 10:50:18
 */
@Service
public class EnergyServiceImpl extends ServiceImpl<EnergyMapper, Energy> implements EnergyService {
    @Autowired
    private EnergyMapper energyMapper;
    @Autowired
    private EnergyConsumptionDetailMapper energyConsumptionDetailMapper;
    @Override
    public IPage<Energy> pageEnergy(Page<Energy> page, Energy energy) {
        return energyMapper.pageEnergy(page,energy);
    }
    @Override
    public boolean batchDelete(List<Long> ids) {
        //先判断是否已经有填写的能耗数据
        List<EnergyConsumptionDetail> energyConsumptionDetails = energyConsumptionDetailMapper.selectList(Wrappers.<EnergyConsumptionDetail>lambdaQuery().in(EnergyConsumptionDetail::getEnergyId, ids));
        if (CollectionUtils.isNotEmpty(energyConsumptionDetails)){
            throw new RuntimeException("选中的能源类型已有对应的能耗数据,无法进行删除!");
        }
        return removeBatchByIds(ids);
    }
    @Override
    public R importData(MultipartFile file) {
        try {
            ExcelUtil<Energy> util = new ExcelUtil<Energy>(Energy.class);
            List<Energy> energyList = util.importExcel(file.getInputStream());
            if(CollectionUtils.isEmpty(energyList)){
                return R.fail("模板错误或导入数据为空");
            }
            energyList.forEach(energy -> {
                if (ObjectUtils.isEmpty(energy)) {
                    throw new RuntimeException("使用模板进行导入");
                }
                if (ObjectUtils.isEmpty(energy.getEnergyTyep())) {
                    throw new RuntimeException("能源类型不能为空");
                }
            });
            this.saveOrUpdateBatch(energyList);
            return R.ok(true);
        }catch (Exception e){
            e.printStackTrace();
            return R.fail(e.getMessage());
        }
    }
    @Override
    public void export(HttpServletResponse response) {
        List<Energy> list = energyMapper.selectList(null);
        if(CollectionUtils.isEmpty(list)){
            throw new RuntimeException("无导出数据");
        }
        ExcelUtil<Energy> util = new ExcelUtil<>(Energy.class);
        util.exportExcel(response, list, "能源类型");
    }
}
src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
<?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.ruoyi.energy.mapper.EnergyConsumptionDetailMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.ruoyi.energy.pojo.EnergyConsumptionDetail">
        <id column="id" property="id"/>
        <result column="energy_id" property="energyId"/>
        <result column="type" property="type"/>
        <result column="meter_reading_location" property="meterReadingLocation"/>
        <result column="meter_reading_date" property="meterReadingDate"/>
        <result column="start_code" property="startCode"/>
        <result column="stop_code" property="stopCode"/>
        <result column="dosage" property="dosage"/>
        <result column="remark" property="remark"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
        <result column="create_user" property="createUser"/>
        <result column="update_user" property="updateUser"/>
    </resultMap>
    <select id="pageEnergyConsumptionDetail"
            resultType="com.ruoyi.energy.dto.EnergyConsumptionDetailDto">
        select *
        from (select ecd.*, e.energy_tyep, e.energy_name, e.unit, su.nick_name createUserName
              from energy_consumption_detail ecd
                       left join energy e on ecd.energy_id = e.id
                       left join sys_user su on ecd.create_user = su.user_id) A
         <where>
            <if test="c.energyTyep != null and c.energyTyep != ''">
                and energy_tyep like concat('%',#{c.energyTyep},'%')
            </if>
             <if test="c.energyName != null and c.energyName != ''">
                and energy_name like concat('%',#{c.energyName},'%')
            </if>
             <if test="c.meterReadingDate != null and c.meterReadingDate != ''">
                 and meter_reading_date =#{c.meterReadingDate}
            </if>
        </where>
    </select>
</mapper>
src/main/resources/mapper/energy/EnergyMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
<?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.ruoyi.energy.mapper.EnergyMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.ruoyi.energy.pojo.Energy">
        <id column="id" property="id"/>
        <result column="energy_tyep" property="energyTyep"/>
        <result column="energy_name" property="energyName"/>
        <result column="unit" property="unit"/>
        <result column="unit_price" property="unitPrice"/>
        <result column="remark" property="remark"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
        <result column="create_user" property="createUser"/>
        <result column="update_user" property="updateUser"/>
    </resultMap>
    <select id="pageEnergy" resultType="com.ruoyi.energy.pojo.Energy">
        select * from (select e.*, su.nick_name createUserName
        from energy e
                 left join sys_user su on e.create_user = su.user_id)A
        <where>
            <if test="c.energyTyep != null and c.energyTyep != ''">
                and energy_tyep like concat('%',#{c.energyTyep},'%')
            </if>
             <if test="c.energyName != null and c.energyName != ''">
                and energy_name like concat('%',#{c.energyName},'%')
            </if>
        </where>
    </select>
</mapper>