From a467454603763db6585fa9bb8322ed3d9e3ce3b7 Mon Sep 17 00:00:00 2001 From: 86156 <823267011@qq.com> Date: Mon, 8 Dec 2025 15:38:49 +0800 Subject: [PATCH] =?UTF-8?q?l3=E8=83=BD=E6=BA=90=E6=88=90=E6=9C=AC=E5=88=86?= =?UTF-8?q?=E6=91=8A=EF=BC=88=E9=83=A8=E5=88=86=E5=AE=8C=E6=88=90=E7=95=99?= =?UTF-8?q?=E5=AD=98=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WmsEnergyAreaLinkController.java | 92 +++++++++++++ .../com/klp/ems/domain/WmsEnergyAreaLink.java | 61 +++++++++ .../ems/domain/bo/WmsEnergyAreaLinkBo.java | 56 ++++++++ .../klp/ems/domain/vo/EnergyLinkDetailVo.java | 47 +++++++ .../klp/ems/domain/vo/EnergyLinkMatrixVo.java | 34 +++++ .../ems/domain/vo/EnergyLinkStatisticsVo.java | 32 +++++ .../ems/domain/vo/LatestMeterReadTimeVo.java | 24 ++++ .../ems/domain/vo/WmsEnergyAreaLinkVo.java | 80 ++++++++++++ .../ems/mapper/WmsEnergyAreaLinkMapper.java | 15 +++ .../service/IWmsEnergyAreaLinkService.java | 54 ++++++++ .../impl/WmsEnergyAreaLinkServiceImpl.java | 121 ++++++++++++++++++ .../mapper/WmsEnergyAreaLinkMapper.xml | 76 +++++++++++ 12 files changed, 692 insertions(+) create mode 100644 klp-ems/src/main/java/com/klp/ems/controller/WmsEnergyAreaLinkController.java create mode 100644 klp-ems/src/main/java/com/klp/ems/domain/WmsEnergyAreaLink.java create mode 100644 klp-ems/src/main/java/com/klp/ems/domain/bo/WmsEnergyAreaLinkBo.java create mode 100644 klp-ems/src/main/java/com/klp/ems/domain/vo/EnergyLinkDetailVo.java create mode 100644 klp-ems/src/main/java/com/klp/ems/domain/vo/EnergyLinkMatrixVo.java create mode 100644 klp-ems/src/main/java/com/klp/ems/domain/vo/EnergyLinkStatisticsVo.java create mode 100644 klp-ems/src/main/java/com/klp/ems/domain/vo/LatestMeterReadTimeVo.java create mode 100644 klp-ems/src/main/java/com/klp/ems/domain/vo/WmsEnergyAreaLinkVo.java create mode 100644 klp-ems/src/main/java/com/klp/ems/mapper/WmsEnergyAreaLinkMapper.java create mode 100644 klp-ems/src/main/java/com/klp/ems/service/IWmsEnergyAreaLinkService.java create mode 100644 klp-ems/src/main/java/com/klp/ems/service/impl/WmsEnergyAreaLinkServiceImpl.java create mode 100644 klp-ems/src/main/resources/mapper/WmsEnergyAreaLinkMapper.xml diff --git a/klp-ems/src/main/java/com/klp/ems/controller/WmsEnergyAreaLinkController.java b/klp-ems/src/main/java/com/klp/ems/controller/WmsEnergyAreaLinkController.java new file mode 100644 index 00000000..954a128e --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/controller/WmsEnergyAreaLinkController.java @@ -0,0 +1,92 @@ +package com.klp.ems.controller; + +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.ems.domain.vo.WmsEnergyAreaLinkVo; +import com.klp.ems.domain.bo.WmsEnergyAreaLinkBo; +import com.klp.ems.service.IWmsEnergyAreaLinkService; +import com.klp.common.core.page.TableDataInfo; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * EMS能源与库区映射关系 + * + * @author Joshi + * @date 2025-12-08 + */ +@Validated +@RestController +@RequestMapping("/ems/energy/link") +public class WmsEnergyAreaLinkController extends BaseController { + + private final IWmsEnergyAreaLinkService iWmsEnergyAreaLinkService; + + public WmsEnergyAreaLinkController(IWmsEnergyAreaLinkService iWmsEnergyAreaLinkService) { + this.iWmsEnergyAreaLinkService = iWmsEnergyAreaLinkService; + } + + /** + * 查询列表 + */ + @GetMapping("/list") + public TableDataInfo list(WmsEnergyAreaLinkBo bo, PageQuery pageQuery) { + return iWmsEnergyAreaLinkService.queryPageList(bo, pageQuery); + } + + /** + * 查询详情 + */ + @GetMapping("/{linkId}") + public R getInfo(@PathVariable @NotNull(message = "主键不能为空") Long linkId) { + return R.ok(iWmsEnergyAreaLinkService.queryById(linkId)); + } + + /** + * 新增 + */ + @Log(title = "EMS能源与库区映射关系", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping + public R add(@Validated(AddGroup.class) @RequestBody WmsEnergyAreaLinkBo bo) { + return toAjax(iWmsEnergyAreaLinkService.insertByBo(bo)); + } + + /** + * 修改 + */ + @Log(title = "EMS能源与库区映射关系", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping + public R edit(@Validated(EditGroup.class) @RequestBody WmsEnergyAreaLinkBo bo) { + return toAjax(iWmsEnergyAreaLinkService.updateByBo(bo)); + } + + /** + * 删除 + */ + @Log(title = "EMS能源与库区映射关系", businessType = BusinessType.DELETE) + @DeleteMapping("/{linkId}") + public R remove(@PathVariable @NotNull(message = "主键不能为空") Long linkId) { + return toAjax(iWmsEnergyAreaLinkService.deleteById(linkId)); + } + + /** + * 批量删除 + */ + @Log(title = "EMS能源与库区映射关系", businessType = BusinessType.DELETE) + @DeleteMapping("/batch") + public R removeBatch(@RequestBody @NotEmpty(message = "主键集合不能为空") List linkIds) { + return toAjax(iWmsEnergyAreaLinkService.deleteByIds(linkIds)); + } +} diff --git a/klp-ems/src/main/java/com/klp/ems/domain/WmsEnergyAreaLink.java b/klp-ems/src/main/java/com/klp/ems/domain/WmsEnergyAreaLink.java new file mode 100644 index 00000000..0683be5f --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/domain/WmsEnergyAreaLink.java @@ -0,0 +1,61 @@ +package com.klp.ems.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * EMS能源与库区映射关系表 + * + * @author Joshi + * @date 2025-12-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("wms_energy_area_link") +public class WmsEnergyAreaLink extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "link_id", type = IdType.AUTO) + private Long linkId; + + /** + * EMS能源类型ID,关联ems_energy_type.energy_type_id + */ + private Long energyTypeId; + + /** + * EMS计量设备ID,关联ems_meter.meter_id + */ + private Long meterId; + + /** + * EMS区域ID,关联ems_location.location_id + */ + private Long locationId; + + /** + * 逻辑库区ID,必须绑定 wms_warehouse.warehouse_id + */ + private Long warehouseId; + + /** + * 实际库区ID,关联wms_actual_warehouse.actual_warehouse_id + */ + private Long actualWarehouseId; + + /** + * 是否启用 1=是 0=否 + */ + private Integer isEnabled; + + /** + * 备注 + */ + private String remark; +} diff --git a/klp-ems/src/main/java/com/klp/ems/domain/bo/WmsEnergyAreaLinkBo.java b/klp-ems/src/main/java/com/klp/ems/domain/bo/WmsEnergyAreaLinkBo.java new file mode 100644 index 00000000..0dac43e8 --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/domain/bo/WmsEnergyAreaLinkBo.java @@ -0,0 +1,56 @@ +package com.klp.ems.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * EMS能源与库区映射关系 BO + * + * @author Joshi + * @date 2025-12-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class WmsEnergyAreaLinkBo extends BaseEntity { + + /** + * 主键ID + */ + private Long linkId; + + /** + * EMS能源类型ID + */ + private Long energyTypeId; + + /** + * EMS计量设备ID + */ + private Long meterId; + + /** + * EMS区域ID + */ + private Long locationId; + + /** + * 逻辑库区ID + */ + private Long warehouseId; + + /** + * 实际库区ID + */ + private Long actualWarehouseId; + + /** + * 是否启用 1=是 0=否 + */ + private Integer isEnabled; + + /** + * 备注 + */ + private String remark; +} diff --git a/klp-ems/src/main/java/com/klp/ems/domain/vo/EnergyLinkDetailVo.java b/klp-ems/src/main/java/com/klp/ems/domain/vo/EnergyLinkDetailVo.java new file mode 100644 index 00000000..b92056f0 --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/domain/vo/EnergyLinkDetailVo.java @@ -0,0 +1,47 @@ +package com.klp.ems.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import lombok.Data; + +/** + * 能源-库区绑定详情 VO + */ +@Data +@ExcelIgnoreUnannotated +public class EnergyLinkDetailVo { + + /** + * 绑定ID + */ + private Long linkId; + + /** + * 设备ID + */ + private Long meterId; + + /** + * 设备编号 + */ + private String meterCode; + + /** + * 能源类型ID + */ + private Long energyTypeId; + + /** + * 能源类型名称 + */ + private String energyTypeName; + + /** + * 设备型号 + */ + private String model; + + /** + * 制造商 + */ + private String manufacturer; +} diff --git a/klp-ems/src/main/java/com/klp/ems/domain/vo/EnergyLinkMatrixVo.java b/klp-ems/src/main/java/com/klp/ems/domain/vo/EnergyLinkMatrixVo.java new file mode 100644 index 00000000..841ff158 --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/domain/vo/EnergyLinkMatrixVo.java @@ -0,0 +1,34 @@ +package com.klp.ems.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import lombok.Data; + +import java.util.List; + +/** + * 库区-设备绑定矩阵 VO + */ +@Data +@ExcelIgnoreUnannotated +public class EnergyLinkMatrixVo { + + /** + * 库区ID + */ + private Long warehouseId; + + /** + * 库区名称 + */ + private String warehouseName; + + /** + * 库区编码 + */ + private String warehouseCode; + + /** + * 绑定的设备列表 + */ + private List links; +} diff --git a/klp-ems/src/main/java/com/klp/ems/domain/vo/EnergyLinkStatisticsVo.java b/klp-ems/src/main/java/com/klp/ems/domain/vo/EnergyLinkStatisticsVo.java new file mode 100644 index 00000000..1957f5b5 --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/domain/vo/EnergyLinkStatisticsVo.java @@ -0,0 +1,32 @@ +package com.klp.ems.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import lombok.Data; + +/** + * 能源绑定统计信息 VO + */ +@Data +@ExcelIgnoreUnannotated +public class EnergyLinkStatisticsVo { + + /** + * 库区总数 + */ + private Long totalWarehouses; + + /** + * 设备总数 + */ + private Long totalMeters; + + /** + * 绑定总数 + */ + private Long totalLinks; + + /** + * 能源类型总数 + */ + private Long totalEnergyTypes; +} diff --git a/klp-ems/src/main/java/com/klp/ems/domain/vo/LatestMeterReadTimeVo.java b/klp-ems/src/main/java/com/klp/ems/domain/vo/LatestMeterReadTimeVo.java new file mode 100644 index 00000000..ec075a70 --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/domain/vo/LatestMeterReadTimeVo.java @@ -0,0 +1,24 @@ +package com.klp.ems.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 最近一次抄表时间范围 VO + */ +@Data +@ExcelIgnoreUnannotated +public class LatestMeterReadTimeVo { + + /** + * 最近一次抄表的开始时间(上一次抄表的结束时间) + */ + private LocalDateTime startTime; + + /** + * 最近一次抄表的结束时间 + */ + private LocalDateTime endTime; +} diff --git a/klp-ems/src/main/java/com/klp/ems/domain/vo/WmsEnergyAreaLinkVo.java b/klp-ems/src/main/java/com/klp/ems/domain/vo/WmsEnergyAreaLinkVo.java new file mode 100644 index 00000000..9faae583 --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/domain/vo/WmsEnergyAreaLinkVo.java @@ -0,0 +1,80 @@ +package com.klp.ems.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import lombok.Data; + +/** + * EMS能源与库区映射关系 VO + * + * @author Joshi + * @date 2025-12-08 + */ +@Data +@ExcelIgnoreUnannotated +public class WmsEnergyAreaLinkVo { + + /** + * 主键ID + */ + private Long linkId; + + /** + * EMS能源类型ID + */ + private Long energyTypeId; + + /** + * 能源类型名称 + */ + private String energyTypeName; + + /** + * EMS计量设备ID + */ + private Long meterId; + + /** + * 计量设备编号 + */ + private String meterCode; + + /** + * EMS区域ID + */ + private Long locationId; + + /** + * 区域名称 + */ + private String locationName; + + /** + * 逻辑库区ID + */ + private Long warehouseId; + + /** + * 库区名称 + */ + private String warehouseName; + + /** + * 实际库区ID + */ + private Long actualWarehouseId; + + /** + * 实际库区名称 + */ + private String actualWarehouseName; + + /** + * 是否启用 1=是 0=否 + */ + private Integer isEnabled; + + /** + * 备注 + */ + private String remark; +} diff --git a/klp-ems/src/main/java/com/klp/ems/mapper/WmsEnergyAreaLinkMapper.java b/klp-ems/src/main/java/com/klp/ems/mapper/WmsEnergyAreaLinkMapper.java new file mode 100644 index 00000000..1dd162fa --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/mapper/WmsEnergyAreaLinkMapper.java @@ -0,0 +1,15 @@ +package com.klp.ems.mapper; + +import com.klp.ems.domain.WmsEnergyAreaLink; +import com.klp.ems.domain.vo.WmsEnergyAreaLinkVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * EMS能源与库区映射关系 Mapper接口 + * + * @author Joshi + * @date 2025-12-08 + */ +public interface WmsEnergyAreaLinkMapper extends BaseMapperPlus { + +} diff --git a/klp-ems/src/main/java/com/klp/ems/service/IWmsEnergyAreaLinkService.java b/klp-ems/src/main/java/com/klp/ems/service/IWmsEnergyAreaLinkService.java new file mode 100644 index 00000000..4a1b5b8f --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/service/IWmsEnergyAreaLinkService.java @@ -0,0 +1,54 @@ +package com.klp.ems.service; + +import com.klp.ems.domain.WmsEnergyAreaLink; +import com.klp.ems.domain.vo.WmsEnergyAreaLinkVo; +import com.klp.ems.domain.bo.WmsEnergyAreaLinkBo; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * EMS能源与库区映射关系 Service接口 + * + * @author Joshi + * @date 2025-12-08 + */ +public interface IWmsEnergyAreaLinkService { + + /** + * 查询单条 + */ + WmsEnergyAreaLinkVo queryById(Long linkId); + + /** + * 查询列表 + */ + TableDataInfo queryPageList(WmsEnergyAreaLinkBo bo, PageQuery pageQuery); + + /** + * 查询全部列表 + */ + List queryList(WmsEnergyAreaLinkBo bo); + + /** + * 新增 + */ + Boolean insertByBo(WmsEnergyAreaLinkBo bo); + + /** + * 修改 + */ + Boolean updateByBo(WmsEnergyAreaLinkBo bo); + + /** + * 删除 + */ + Boolean deleteById(Long linkId); + + /** + * 批量删除 + */ + Boolean deleteByIds(Collection linkIds); +} diff --git a/klp-ems/src/main/java/com/klp/ems/service/impl/WmsEnergyAreaLinkServiceImpl.java b/klp-ems/src/main/java/com/klp/ems/service/impl/WmsEnergyAreaLinkServiceImpl.java new file mode 100644 index 00000000..77b20ff1 --- /dev/null +++ b/klp-ems/src/main/java/com/klp/ems/service/impl/WmsEnergyAreaLinkServiceImpl.java @@ -0,0 +1,121 @@ +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 com.klp.common.utils.StringUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.klp.ems.domain.bo.WmsEnergyAreaLinkBo; +import com.klp.ems.domain.vo.WmsEnergyAreaLinkVo; +import com.klp.ems.domain.WmsEnergyAreaLink; +import com.klp.ems.mapper.WmsEnergyAreaLinkMapper; +import com.klp.ems.service.IWmsEnergyAreaLinkService; + +import java.util.Collection; +import java.util.List; + +/** + * EMS能源与库区映射关系 Service业务层处理 + * + * @author Joshi + * @date 2025-12-08 + */ +@RequiredArgsConstructor +@Service +public class WmsEnergyAreaLinkServiceImpl implements IWmsEnergyAreaLinkService { + + private final WmsEnergyAreaLinkMapper baseMapper; + + /** + * 查询单条 + */ + @Override + public WmsEnergyAreaLinkVo queryById(Long linkId) { + return baseMapper.selectVoById(linkId); + } + + /** + * 查询列表 + */ + @Override + public TableDataInfo queryPageList(WmsEnergyAreaLinkBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询全部列表 + */ + @Override + public List queryList(WmsEnergyAreaLinkBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + /** + * 新增 + */ + @Override + public Boolean insertByBo(WmsEnergyAreaLinkBo bo) { + WmsEnergyAreaLink add = BeanUtil.toBean(bo, WmsEnergyAreaLink.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setLinkId(add.getLinkId()); + } + return flag; + } + + /** + * 修改 + */ + @Override + public Boolean updateByBo(WmsEnergyAreaLinkBo bo) { + WmsEnergyAreaLink update = BeanUtil.toBean(bo, WmsEnergyAreaLink.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 删除 + */ + @Override + public Boolean deleteById(Long linkId) { + return baseMapper.deleteById(linkId) > 0; + } + + /** + * 批量删除 + */ + @Override + public Boolean deleteByIds(Collection linkIds) { + return baseMapper.deleteBatchIds(linkIds) > 0; + } + + /** + * 构建查询条件 + */ + private LambdaQueryWrapper buildQueryWrapper(WmsEnergyAreaLinkBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getEnergyTypeId() != null, WmsEnergyAreaLink::getEnergyTypeId, bo.getEnergyTypeId()); + lqw.eq(bo.getMeterId() != null, WmsEnergyAreaLink::getMeterId, bo.getMeterId()); + lqw.eq(bo.getWarehouseId() != null, WmsEnergyAreaLink::getWarehouseId, bo.getWarehouseId()); + lqw.eq(bo.getIsEnabled() != null, WmsEnergyAreaLink::getIsEnabled, bo.getIsEnabled()); + lqw.orderByDesc(WmsEnergyAreaLink::getLinkId); + return lqw; + } + + /** + * 保存前的数据有效性验证 + */ + private void validEntityBeforeSave(WmsEnergyAreaLink entity) { + if (StringUtils.isBlank(entity.getRemark())) { + entity.setRemark(""); + } + } +} diff --git a/klp-ems/src/main/resources/mapper/WmsEnergyAreaLinkMapper.xml b/klp-ems/src/main/resources/mapper/WmsEnergyAreaLinkMapper.xml new file mode 100644 index 00000000..0692b121 --- /dev/null +++ b/klp-ems/src/main/resources/mapper/WmsEnergyAreaLinkMapper.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +