From d7c626bbb83393550b63678a49d73a9ba44b1c85 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期二, 10 三月 2026 13:16:58 +0800
Subject: [PATCH] 能耗管理的能源类型+能耗抄表明细
---
src/main/java/com/ruoyi/energy/service/impl/EnergyServiceImpl.java | 88 ++++++
src/main/java/com/ruoyi/energy/mapper/EnergyConsumptionDetailMapper.java | 23 +
src/main/java/com/ruoyi/energy/pojo/EnergyConsumptionDetail.java | 93 +++++++
src/main/java/com/ruoyi/energy/controller/EnergyConsumptionDetailController.java | 76 +++++
src/main/java/com/ruoyi/CodeGenerator.java | 4
src/main/java/com/ruoyi/energy/service/EnergyConsumptionDetailService.java | 28 ++
src/main/java/com/ruoyi/energy/service/impl/EnergyConsumptionDetailServiceImpl.java | 91 +++++++
src/main/java/com/ruoyi/energy/pojo/Energy.java | 84 ++++++
src/main/resources/mapper/energy/EnergyMapper.xml | 32 ++
doc/宁夏-中盛建材.sql | 33 ++
src/main/java/com/ruoyi/energy/service/EnergyService.java | 31 ++
src/main/java/com/ruoyi/energy/dto/EnergyConsumptionDetailDto.java | 29 ++
src/main/java/com/ruoyi/energy/controller/EnergyController.java | 78 ++++++
src/main/java/com/ruoyi/energy/mapper/EnergyMapper.java | 22 +
src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml | 41 +++
15 files changed, 750 insertions(+), 3 deletions(-)
diff --git "a/doc/\345\256\201\345\244\217-\344\270\255\347\233\233\345\273\272\346\235\220.sql" "b/doc/\345\256\201\345\244\217-\344\270\255\347\233\233\345\273\272\346\235\220.sql"
index ee0341f..3407354 100644
--- "a/doc/\345\256\201\345\244\217-\344\270\255\347\233\233\345\273\272\346\235\220.sql"
+++ "b/doc/\345\256\201\345\244\217-\344\270\255\347\233\233\345\273\272\346\235\220.sql"
@@ -31,4 +31,35 @@
PRIMARY KEY (`id`),
KEY `idx_form_instance_id` (`form_instance_id`)
) ENGINE = INNODB
- DEFAULT CHARSET = utf8mb4 COMMENT = '閿�鍞敓浜ч渶姹�';
\ No newline at end of file
+ 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 = '鑳芥簮绫诲瀷-鑳借�楁妱琛ㄦ槑缁�';
diff --git a/src/main/java/com/ruoyi/CodeGenerator.java b/src/main/java/com/ruoyi/CodeGenerator.java
index 6356273..7960d87 100644
--- a/src/main/java/com/ruoyi/CodeGenerator.java
+++ b/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) {
diff --git a/src/main/java/com/ruoyi/energy/controller/EnergyConsumptionDetailController.java b/src/main/java/com/ruoyi/energy/controller/EnergyConsumptionDetailController.java
new file mode 100644
index 0000000..22ef516
--- /dev/null
+++ b/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);
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/energy/controller/EnergyController.java b/src/main/java/com/ruoyi/energy/controller/EnergyController.java
new file mode 100644
index 0000000..46bb32a
--- /dev/null
+++ b/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);
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/energy/dto/EnergyConsumptionDetailDto.java b/src/main/java/com/ruoyi/energy/dto/EnergyConsumptionDetailDto.java
new file mode 100644
index 0000000..eec50f8
--- /dev/null
+++ b/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;
+}
diff --git a/src/main/java/com/ruoyi/energy/mapper/EnergyConsumptionDetailMapper.java b/src/main/java/com/ruoyi/energy/mapper/EnergyConsumptionDetailMapper.java
new file mode 100644
index 0000000..af10b49
--- /dev/null
+++ b/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);
+}
diff --git a/src/main/java/com/ruoyi/energy/mapper/EnergyMapper.java b/src/main/java/com/ruoyi/energy/mapper/EnergyMapper.java
new file mode 100644
index 0000000..f46468e
--- /dev/null
+++ b/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);
+}
diff --git a/src/main/java/com/ruoyi/energy/pojo/Energy.java b/src/main/java/com/ruoyi/energy/pojo/Energy.java
new file mode 100644
index 0000000..fd61c48
--- /dev/null
+++ b/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;
+}
diff --git a/src/main/java/com/ruoyi/energy/pojo/EnergyConsumptionDetail.java b/src/main/java/com/ruoyi/energy/pojo/EnergyConsumptionDetail.java
new file mode 100644
index 0000000..aa0d8ab
--- /dev/null
+++ b/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;
+}
diff --git a/src/main/java/com/ruoyi/energy/service/EnergyConsumptionDetailService.java b/src/main/java/com/ruoyi/energy/service/EnergyConsumptionDetailService.java
new file mode 100644
index 0000000..86a759d
--- /dev/null
+++ b/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);
+}
diff --git a/src/main/java/com/ruoyi/energy/service/EnergyService.java b/src/main/java/com/ruoyi/energy/service/EnergyService.java
new file mode 100644
index 0000000..66a2779
--- /dev/null
+++ b/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);
+
+}
diff --git a/src/main/java/com/ruoyi/energy/service/impl/EnergyConsumptionDetailServiceImpl.java b/src/main/java/com/ruoyi/energy/service/impl/EnergyConsumptionDetailServiceImpl.java
new file mode 100644
index 0000000..305ad75
--- /dev/null
+++ b/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, "鑳借�楁妱琛�");
+ }
+}
diff --git a/src/main/java/com/ruoyi/energy/service/impl/EnergyServiceImpl.java b/src/main/java/com/ruoyi/energy/service/impl/EnergyServiceImpl.java
new file mode 100644
index 0000000..b07e96d
--- /dev/null
+++ b/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, "鑳芥簮绫诲瀷");
+ }
+}
diff --git a/src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml b/src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml
new file mode 100644
index 0000000..2fe5f17
--- /dev/null
+++ b/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>
diff --git a/src/main/resources/mapper/energy/EnergyMapper.xml b/src/main/resources/mapper/energy/EnergyMapper.xml
new file mode 100644
index 0000000..224a4ff
--- /dev/null
+++ b/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>
--
Gitblit v1.9.3