From bd4d59193427501820e2640b09f868eafb78dcd2 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Mon, 20 Apr 2026 13:08:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(ems):=20=E6=B7=BB=E5=8A=A0=E8=83=BD?= =?UTF-8?q?=E6=BA=90=E6=B6=88=E8=80=97=E8=AE=B0=E5=BD=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 创建 EmsEnergyRecord 实体类,定义能耗记录主键、表计ID、能源ID、消耗量等字段 - 实现 EmsEnergyRecordBo 业务对象,用于接收前端参数并进行数据验证 - 开发 EmsEnergyRecordController 控制器,提供查询、新增、修改、删除和导出功能 - 配置 EmsEnergyRecordMapper 数据访问接口,继承 BaseMapperPlus 进行数据库操作 - 编写 EmsEnergyRecordMapper.xml 映射文件,定义结果集映射关系 - 实现 EmsEnergyRecordServiceImpl 服务类,封装业务逻辑和数据处理方法 - 定义 EmsEnergyRecordVo 视图对象,配置Excel导出注解和字典转换功能 - 提供 IEmsEnergyRecordService 接口,规范服务层方法契约 --- .../controller/EmsEnergyRecordController.java | 99 ++++++++++++++++ .../com/klp/ems/domain/EmsEnergyRecord.java | 60 ++++++++++ .../klp/ems/domain/bo/EmsEnergyRecordBo.java | 59 +++++++++ .../klp/ems/domain/vo/EmsEnergyRecordVo.java | 71 +++++++++++ .../klp/ems/mapper/EmsEnergyRecordMapper.java | 15 +++ .../ems/service/IEmsEnergyRecordService.java | 49 ++++++++ .../impl/EmsEnergyRecordServiceImpl.java | 112 ++++++++++++++++++ .../mapper/EmsEnergyRecordMapper.xml | 23 ++++ 8 files changed, 488 insertions(+) create mode 100644 klp-ems/src/main/java/com/klp/ems/controller/EmsEnergyRecordController.java create mode 100644 klp-ems/src/main/java/com/klp/ems/domain/EmsEnergyRecord.java create mode 100644 klp-ems/src/main/java/com/klp/ems/domain/bo/EmsEnergyRecordBo.java create mode 100644 klp-ems/src/main/java/com/klp/ems/domain/vo/EmsEnergyRecordVo.java create mode 100644 klp-ems/src/main/java/com/klp/ems/mapper/EmsEnergyRecordMapper.java create mode 100644 klp-ems/src/main/java/com/klp/ems/service/IEmsEnergyRecordService.java create mode 100644 klp-ems/src/main/java/com/klp/ems/service/impl/EmsEnergyRecordServiceImpl.java create mode 100644 klp-ems/src/main/resources/mapper/EmsEnergyRecordMapper.xml diff --git a/klp-ems/src/main/java/com/klp/ems/controller/EmsEnergyRecordController.java b/klp-ems/src/main/java/com/klp/ems/controller/EmsEnergyRecordController.java new file mode 100644 index 00000000..db3aeea8 --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/controller/EmsEnergyRecordController.java @@ -0,0 +1,99 @@ +package com.klp.ems.controller; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.annotation.Log; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.core.validate.EditGroup; +import com.klp.common.enums.BusinessType; +import com.klp.common.utils.poi.ExcelUtil; +import com.klp.ems.domain.vo.EmsEnergyRecordVo; +import com.klp.ems.domain.bo.EmsEnergyRecordBo; +import com.klp.ems.service.IEmsEnergyRecordService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 能源消耗记录 + * + * @author klp + * @date 2026-04-20 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/ems/energyRecord") +public class EmsEnergyRecordController extends BaseController { + + private final IEmsEnergyRecordService iEmsEnergyRecordService; + + /** + * 查询能源消耗记录列表 + */ + @GetMapping("/list") + public TableDataInfo list(EmsEnergyRecordBo bo, PageQuery pageQuery) { + return iEmsEnergyRecordService.queryPageList(bo, pageQuery); + } + + /** + * 导出能源消耗记录列表 + */ + @Log(title = "能源消耗记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(EmsEnergyRecordBo bo, HttpServletResponse response) { + List list = iEmsEnergyRecordService.queryList(bo); + ExcelUtil.exportExcel(list, "能源消耗记录", EmsEnergyRecordVo.class, response); + } + + /** + * 获取能源消耗记录详细信息 + * + * @param energyRecordId 主键 + */ + @GetMapping("/{energyRecordId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long energyRecordId) { + return R.ok(iEmsEnergyRecordService.queryById(energyRecordId)); + } + + /** + * 新增能源消耗记录 + */ + @Log(title = "能源消耗记录", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody EmsEnergyRecordBo bo) { + return toAjax(iEmsEnergyRecordService.insertByBo(bo)); + } + + /** + * 修改能源消耗记录 + */ + @Log(title = "能源消耗记录", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody EmsEnergyRecordBo bo) { + return toAjax(iEmsEnergyRecordService.updateByBo(bo)); + } + + /** + * 删除能源消耗记录 + * + * @param energyRecordIds 主键串 + */ + @Log(title = "能源消耗记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{energyRecordIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] energyRecordIds) { + return toAjax(iEmsEnergyRecordService.deleteWithValidByIds(Arrays.asList(energyRecordIds), true)); + } +} diff --git a/klp-ems/src/main/java/com/klp/ems/domain/EmsEnergyRecord.java b/klp-ems/src/main/java/com/klp/ems/domain/EmsEnergyRecord.java new file mode 100644 index 00000000..e8332aa7 --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/domain/EmsEnergyRecord.java @@ -0,0 +1,60 @@ +package com.klp.ems.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 能源消耗记录对象 ems_energy_record + * + * @author klp + * @date 2026-04-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("ems_energy_record") +public class EmsEnergyRecord extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 能耗记录主键ID + */ + @TableId(value = "energy_record_id") + private Long energyRecordId; + /** + * 表计ID(关联计量设备表) + */ + private Long meterId; + /** + * 能源ID(关联能源类型表:电/水/气/暖等) + */ + private Long energyId; + /** + * 消耗量 + */ + private BigDecimal consumption; + /** + * 统计日期(yyyy-MM-dd) + */ + private Date recordDate; + /** + * 记录人ID + */ + private Long recordedBy; + /** + * 删除标志(0=存在 2=删除) + */ + @TableLogic + private String delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/klp-ems/src/main/java/com/klp/ems/domain/bo/EmsEnergyRecordBo.java b/klp-ems/src/main/java/com/klp/ems/domain/bo/EmsEnergyRecordBo.java new file mode 100644 index 00000000..c69bfa05 --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/domain/bo/EmsEnergyRecordBo.java @@ -0,0 +1,59 @@ +package com.klp.ems.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 能源消耗记录业务对象 ems_energy_record + * + * @author klp + * @date 2026-04-20 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class EmsEnergyRecordBo extends BaseEntity { + + /** + * 能耗记录主键ID + */ + private Long energyRecordId; + + /** + * 表计ID(关联计量设备表) + */ + private Long meterId; + + /** + * 能源ID(关联能源类型表:电/水/气/暖等) + */ + private Long energyId; + + /** + * 消耗量 + */ + private BigDecimal consumption; + + /** + * 统计日期(yyyy-MM-dd) + */ + private Date recordDate; + + /** + * 记录人ID + */ + private Long recordedBy; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/klp-ems/src/main/java/com/klp/ems/domain/vo/EmsEnergyRecordVo.java b/klp-ems/src/main/java/com/klp/ems/domain/vo/EmsEnergyRecordVo.java new file mode 100644 index 00000000..eb7f60c3 --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/domain/vo/EmsEnergyRecordVo.java @@ -0,0 +1,71 @@ +package com.klp.ems.domain.vo; + +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.klp.common.annotation.ExcelDictFormat; +import com.klp.common.convert.ExcelDictConvert; +import lombok.Data; + + +/** + * 能源消耗记录视图对象 ems_energy_record + * + * @author klp + * @date 2026-04-20 + */ +@Data +@ExcelIgnoreUnannotated +public class EmsEnergyRecordVo { + + private static final long serialVersionUID = 1L; + + /** + * 能耗记录主键ID + */ + @ExcelProperty(value = "能耗记录主键ID") + private Long energyRecordId; + + /** + * 表计ID(关联计量设备表) + */ + @ExcelProperty(value = "表计ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "关=联计量设备表") + private Long meterId; + + /** + * 能源ID(关联能源类型表:电/水/气/暖等) + */ + @ExcelProperty(value = "能源ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "关=联能源类型表:电/水/气/暖等") + private Long energyId; + + /** + * 消耗量 + */ + @ExcelProperty(value = "消耗量") + private BigDecimal consumption; + + /** + * 统计日期(yyyy-MM-dd) + */ + @ExcelProperty(value = "统计日期", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "y=yyy-MM-dd") + private Date recordDate; + + /** + * 记录人ID + */ + @ExcelProperty(value = "记录人ID") + private Long recordedBy; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/klp-ems/src/main/java/com/klp/ems/mapper/EmsEnergyRecordMapper.java b/klp-ems/src/main/java/com/klp/ems/mapper/EmsEnergyRecordMapper.java new file mode 100644 index 00000000..ea17cd75 --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/mapper/EmsEnergyRecordMapper.java @@ -0,0 +1,15 @@ +package com.klp.ems.mapper; + +import com.klp.ems.domain.EmsEnergyRecord; +import com.klp.ems.domain.vo.EmsEnergyRecordVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 能源消耗记录Mapper接口 + * + * @author klp + * @date 2026-04-20 + */ +public interface EmsEnergyRecordMapper extends BaseMapperPlus { + +} diff --git a/klp-ems/src/main/java/com/klp/ems/service/IEmsEnergyRecordService.java b/klp-ems/src/main/java/com/klp/ems/service/IEmsEnergyRecordService.java new file mode 100644 index 00000000..7db3a0fa --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/service/IEmsEnergyRecordService.java @@ -0,0 +1,49 @@ +package com.klp.ems.service; + +import com.klp.ems.domain.EmsEnergyRecord; +import com.klp.ems.domain.vo.EmsEnergyRecordVo; +import com.klp.ems.domain.bo.EmsEnergyRecordBo; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 能源消耗记录Service接口 + * + * @author klp + * @date 2026-04-20 + */ +public interface IEmsEnergyRecordService { + + /** + * 查询能源消耗记录 + */ + EmsEnergyRecordVo queryById(Long energyRecordId); + + /** + * 查询能源消耗记录列表 + */ + TableDataInfo queryPageList(EmsEnergyRecordBo bo, PageQuery pageQuery); + + /** + * 查询能源消耗记录列表 + */ + List queryList(EmsEnergyRecordBo bo); + + /** + * 新增能源消耗记录 + */ + Boolean insertByBo(EmsEnergyRecordBo bo); + + /** + * 修改能源消耗记录 + */ + Boolean updateByBo(EmsEnergyRecordBo bo); + + /** + * 校验并批量删除能源消耗记录信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-ems/src/main/java/com/klp/ems/service/impl/EmsEnergyRecordServiceImpl.java b/klp-ems/src/main/java/com/klp/ems/service/impl/EmsEnergyRecordServiceImpl.java new file mode 100644 index 00000000..44050719 --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/service/impl/EmsEnergyRecordServiceImpl.java @@ -0,0 +1,112 @@ +package com.klp.ems.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.klp.common.core.page.TableDataInfo; +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 lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.klp.ems.domain.bo.EmsEnergyRecordBo; +import com.klp.ems.domain.vo.EmsEnergyRecordVo; +import com.klp.ems.domain.EmsEnergyRecord; +import com.klp.ems.mapper.EmsEnergyRecordMapper; +import com.klp.ems.service.IEmsEnergyRecordService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 能源消耗记录Service业务层处理 + * + * @author klp + * @date 2026-04-20 + */ +@RequiredArgsConstructor +@Service +public class EmsEnergyRecordServiceImpl implements IEmsEnergyRecordService { + + private final EmsEnergyRecordMapper baseMapper; + + /** + * 查询能源消耗记录 + */ + @Override + public EmsEnergyRecordVo queryById(Long energyRecordId){ + return baseMapper.selectVoById(energyRecordId); + } + + /** + * 查询能源消耗记录列表 + */ + @Override + public TableDataInfo queryPageList(EmsEnergyRecordBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询能源消耗记录列表 + */ + @Override + public List queryList(EmsEnergyRecordBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(EmsEnergyRecordBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getMeterId() != null, EmsEnergyRecord::getMeterId, bo.getMeterId()); + lqw.eq(bo.getEnergyId() != null, EmsEnergyRecord::getEnergyId, bo.getEnergyId()); + lqw.eq(bo.getConsumption() != null, EmsEnergyRecord::getConsumption, bo.getConsumption()); + lqw.eq(bo.getRecordDate() != null, EmsEnergyRecord::getRecordDate, bo.getRecordDate()); + lqw.eq(bo.getRecordedBy() != null, EmsEnergyRecord::getRecordedBy, bo.getRecordedBy()); + return lqw; + } + + /** + * 新增能源消耗记录 + */ + @Override + public Boolean insertByBo(EmsEnergyRecordBo bo) { + EmsEnergyRecord add = BeanUtil.toBean(bo, EmsEnergyRecord.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setEnergyRecordId(add.getEnergyRecordId()); + } + return flag; + } + + /** + * 修改能源消耗记录 + */ + @Override + public Boolean updateByBo(EmsEnergyRecordBo bo) { + EmsEnergyRecord update = BeanUtil.toBean(bo, EmsEnergyRecord.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(EmsEnergyRecord entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除能源消耗记录 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-ems/src/main/resources/mapper/EmsEnergyRecordMapper.xml b/klp-ems/src/main/resources/mapper/EmsEnergyRecordMapper.xml new file mode 100644 index 00000000..67ccb5e5 --- /dev/null +++ b/klp-ems/src/main/resources/mapper/EmsEnergyRecordMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + +