diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IWorkCenterService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IWorkCenterService.java index 8c3f0d88..348c02eb 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IWorkCenterService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IWorkCenterService.java @@ -64,4 +64,11 @@ public interface IWorkCenterService extends BaseService { * @return BsWorkCenterEntity 对象 */ WorkCenter getWorkCenter(Long workCenterId); + + /** + * 根据作业中心编码查找作业中心 + * @param wcCode + * @return + */ + WorkCenter getWorkCenterByCode(String wcCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/WorkCenterServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/WorkCenterServiceImpl.java index cfd3cbd6..6d9f4d00 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/WorkCenterServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/WorkCenterServiceImpl.java @@ -4,6 +4,7 @@ package org.springblade.desk.basic.service.impl; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -124,4 +125,11 @@ public class WorkCenterServiceImpl extends BaseServiceImpl qw = new LambdaQueryWrapper().eq(WorkCenter::getWcCode, wcCode); + WorkCenter center = this.getOne(qw); + return center; + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyCoreUseController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyCoreUseController.java new file mode 100644 index 00000000..27748ec7 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyCoreUseController.java @@ -0,0 +1,76 @@ +package org.springblade.desk.energy.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.AllArgsConstructor; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springblade.desk.energy.pojo.entity.BsEnergyCoreUseEntity; +import org.springblade.desk.energy.pojo.vo.BsEnergyCoreUseVO; +import org.springblade.desk.energy.pojo.vo.BsEnergyHistoryRecVO; +import org.springblade.desk.energy.service.IBsEnergyCoreUseService; +import org.springblade.desk.energy.service.IBsEnergyHistoryRecService; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 水电能耗记录 控制器 + * + * @author BladeX + * @since 2026-04-17 + */ +@RestController +@AllArgsConstructor +@RequestMapping("/bsEnergyCoreUse") +@Tag(name = "水电能耗记录", description = "水电能耗记录接口") +public class BsEnergyCoreUseController extends BladeController { + + private final IBsEnergyCoreUseService bsEnergyCoreUseService; + + private final IBsEnergyHistoryRecService bsEnergyHistoryRecService; + + /** + * 水电能耗记录 自定义分页 + */ + @GetMapping("/page") + @Operation(summary = "分页", description = "传入bsEnergyQuota") + public R> page(BsEnergyCoreUseVO bsEnergyCoreUse, Query query) { + IPage pages = bsEnergyCoreUseService.selectBsEnergyCoreUsePage(Condition.getPage(query), bsEnergyCoreUse); + return R.data(pages); + } + + /** + * 能源定额 新增或修改 + */ + @PostMapping("/updateIsJumbotron") + @Operation(summary = "新增或修改", description = "传入bsEnergyQuota") + public R updateIsJumbotron(@Valid @RequestBody BsEnergyCoreUseEntity bsEnergyCoreUse) { + if (bsEnergyCoreUse.getId() == null || bsEnergyCoreUse.getIsJumbotron() == null) { + R.fail("修改失败"); + } + BsEnergyCoreUseEntity upd = new BsEnergyCoreUseEntity(); + upd.setId(bsEnergyCoreUse.getId()); + upd.setIsJumbotron(bsEnergyCoreUse.getIsJumbotron()); + return R.status(bsEnergyCoreUseService.updateById(upd)); + } + + + @GetMapping("/detail") + @Operation(summary = "详情", description = "传入bsEnergyQuota") + public R> detail(BsEnergyCoreUseEntity bsEnergyCoreUse) { + BsEnergyCoreUseEntity bsEnergyCoreUseEntity = bsEnergyCoreUseService.getById(bsEnergyCoreUse.getId()); + if (bsEnergyCoreUseEntity == null) { + R.fail("明细查询失败"); + } + BsEnergyHistoryRecVO params = new BsEnergyHistoryRecVO(); + params.setCreateTime(bsEnergyCoreUseEntity.getCreateTime()); + List list = bsEnergyHistoryRecService.selectBsEnergyHistoryRec(params); + return R.data(list); + } + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyMonitorController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyMonitorController.java index e85733bb..ebbb8456 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyMonitorController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyMonitorController.java @@ -25,6 +25,7 @@ */ package org.springblade.desk.energy.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.v3.oas.annotations.Operation; @@ -44,11 +45,15 @@ import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.desk.energy.excel.BsEnergyMonitorExcel; import org.springblade.desk.energy.pojo.entity.BsEnergyMonitorEntity; +import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity; import org.springblade.desk.energy.pojo.vo.BsEnergyMonitorVO; import org.springblade.desk.energy.service.IBsEnergyMonitorService; +import org.springblade.desk.energy.service.IBsEnergyTargetService; import org.springblade.desk.energy.wrapper.BsEnergyMonitorWrapper; import org.springframework.web.bind.annotation.*; +import java.math.RoundingMode; +import java.time.YearMonth; import java.util.List; import java.util.Map; @@ -64,68 +69,139 @@ import java.util.Map; @Tag(name = "能源监控表", description = "能源监控表接口") public class BsEnergyMonitorController extends BladeController { - private final IBsEnergyMonitorService bsEnergyMonitorService; + private final IBsEnergyMonitorService bsEnergyMonitorService; - /** - * 能源监控表 详情 - */ - @GetMapping("/detail") - @Operation(summary = "详情", description = "传入bsEnergyMonitor") - public R detail(BsEnergyMonitorEntity bsEnergyMonitor) { - BsEnergyMonitorEntity detail = bsEnergyMonitorService.getOne(Condition.getQueryWrapper(bsEnergyMonitor)); - return R.data(BsEnergyMonitorWrapper.build().entityVO(detail)); - } + private final IBsEnergyTargetService bsEnergyTargetService; - /** - * 能源监控表 自定义分页 - */ - @GetMapping("/page") - @Operation(summary = "分页", description = "传入bsEnergyMonitor") - public R> page(BsEnergyMonitorVO bsEnergyMonitor, Query query) { - IPage pages = bsEnergyMonitorService.selectBsEnergyMonitorPage(Condition.getPage(query), bsEnergyMonitor); - return R.data(pages); - } + /** + * 能源监控表 详情 + */ + @GetMapping("/detail") + @Operation(summary = "详情", description = "传入bsEnergyMonitor") + public R detail(BsEnergyMonitorEntity bsEnergyMonitor) { + BsEnergyMonitorEntity detail = bsEnergyMonitorService.getOne(Condition.getQueryWrapper(bsEnergyMonitor)); + return R.data(BsEnergyMonitorWrapper.build().entityVO(detail)); + } - /** - * 能源监控表 新增或修改 - */ - @PostMapping("/submit") - @Operation(summary = "新增或修改", description = "传入bsEnergyMonitor") - public R submit(@Valid @RequestBody BsEnergyMonitorEntity bsEnergyMonitor) { - if (bsEnergyMonitor.getId() == null) { - // 新增需要校验 - BsEnergyMonitorEntity bsEnergyMonitorEntity = bsEnergyMonitorService.getOne(new QueryWrapper().eq("month", bsEnergyMonitor.getMonth())); - if (bsEnergyMonitorEntity != null) { - return R.fail("该月份能源监控表已存在"); - } - } - bsEnergyMonitor.setLastWaterRate(bsEnergyMonitor.getLastWater().divide(bsEnergyMonitor.getLastWaterTarget(), 2)); - bsEnergyMonitor.setLastElectricRate(bsEnergyMonitor.getLastElectric().divide(bsEnergyMonitor.getLastElectricTarget(), 2)); - bsEnergyMonitor.setCurrentWaterRate(bsEnergyMonitor.getCurrentWater().divide(bsEnergyMonitor.getCurrentWaterTarget(), 2)); - bsEnergyMonitor.setCurrentElectricRate(bsEnergyMonitor.getCurrentElectric().divide(bsEnergyMonitor.getCurrentElectricTarget(), 2)); - return R.status(bsEnergyMonitorService.saveOrUpdate(bsEnergyMonitor)); - } + /** + * 能源监控表 自定义分页 + */ + @GetMapping("/page") + @Operation(summary = "分页", description = "传入bsEnergyMonitor") + public R> page(BsEnergyMonitorVO bsEnergyMonitor, Query query) { + IPage pages = bsEnergyMonitorService.selectBsEnergyMonitorPage(Condition.getPage(query), bsEnergyMonitor); + return R.data(pages); + } - /** - * 能源监控表 删除 - */ - @PostMapping("/remove") - @Operation(summary = "逻辑删除", description = "传入ids") - public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { - return R.status(bsEnergyMonitorService.deleteLogic(Func.toLongList(ids))); - } + /** + * 能源监控表 新增或修改 + */ + @PostMapping("/submit") + @Operation(summary = "新增或修改", description = "传入bsEnergyMonitor") + public R submit(@Valid @RequestBody List bsEnergyMonitorList) { + for (BsEnergyMonitorEntity bsEnergyMonitor : bsEnergyMonitorList) { + BsEnergyMonitorEntity exist = bsEnergyMonitorService.getOne(new QueryWrapper().eq("month", bsEnergyMonitor.getMonth())); + if (exist != null && !exist.getId().equals(bsEnergyMonitor.getId())) { + return R.fail(bsEnergyMonitor.getMonth() + "月份能源监控表已存在"); + } + if(bsEnergyMonitor.getLastWater() != null && bsEnergyMonitor.getLastOutput() != null){ + bsEnergyMonitor.setLastWaterRate(bsEnergyMonitor.getLastWater().divide(bsEnergyMonitor.getLastOutput(), 6, RoundingMode.HALF_UP)); + } + if(bsEnergyMonitor.getLastElectric() != null && bsEnergyMonitor.getLastOutput() != null){ + bsEnergyMonitor.setLastElectricRate(bsEnergyMonitor.getLastElectric().divide(bsEnergyMonitor.getLastOutput(), 6, RoundingMode.HALF_UP)); + } + if(bsEnergyMonitor.getCurrentWater() != null && bsEnergyMonitor.getCurrentOutput() != null){ + bsEnergyMonitor.setCurrentWaterRate(bsEnergyMonitor.getCurrentWater().divide(bsEnergyMonitor.getCurrentOutput(), 6, RoundingMode.HALF_UP)); + } + if(bsEnergyMonitor.getCurrentElectric() != null && bsEnergyMonitor.getCurrentOutput() != null){ + bsEnergyMonitor.setCurrentElectricRate(bsEnergyMonitor.getCurrentElectric().divide(bsEnergyMonitor.getCurrentOutput(), 6, RoundingMode.HALF_UP)); + } + } + return R.status(bsEnergyMonitorService.saveOrUpdateBatch(bsEnergyMonitorList)); + } + /** + * 能源监控表 删除 + */ + @PostMapping("/remove") + @Operation(summary = "逻辑删除", description = "传入ids") + public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { + return R.status(bsEnergyMonitorService.deleteLogic(Func.toLongList(ids))); + } - /** - * 导出数据 - */ - @IsAdmin - @GetMapping("/export-bsEnergyMonitor") - @Operation(summary = "导出数据", description = "传入bsEnergyMonitor") - public void exportBsEnergyMonitor(@Parameter(hidden = true) @RequestParam Map bsEnergyMonitor, BladeUser bladeUser, HttpServletResponse response) { - QueryWrapper queryWrapper = Condition.getQueryWrapper(bsEnergyMonitor, BsEnergyMonitorEntity.class); - List list = bsEnergyMonitorService.exportBsEnergyMonitor(queryWrapper); - ExcelUtil.export(response, "能源监控表数据" + DateUtil.time(), "能源监控表数据表", list, BsEnergyMonitorExcel.class); - } + /** + * 导出数据 + */ + @IsAdmin + @GetMapping("/export-bsEnergyMonitor") + @Operation(summary = "导出数据", description = "传入bsEnergyMonitor") + public void exportBsEnergyMonitor(@Parameter(hidden = true) @RequestParam Map bsEnergyMonitor, BladeUser bladeUser, HttpServletResponse response) { + QueryWrapper queryWrapper = Condition.getQueryWrapper(bsEnergyMonitor, BsEnergyMonitorEntity.class); + List list = bsEnergyMonitorService.exportBsEnergyMonitor(queryWrapper); + ExcelUtil.export(response, "能源监控表数据" + DateUtil.time(), "能源监控表数据表", list, BsEnergyMonitorExcel.class); + } + + /** + * 能源监控表 详情 + */ + @GetMapping("/getLastYearDetail") + @Operation(summary = "上年度详情", description = "传入bsEnergyMonitor") + public R getLastYearDetail(BsEnergyMonitorEntity bsEnergyMonitor) { + YearMonth currentMonth = YearMonth.parse(bsEnergyMonitor.getMonth()); + String currentYear = String.valueOf(currentMonth.getYear()); + YearMonth lastYearMonth = currentMonth.minusYears(1); + String lastMonth = lastYearMonth.toString(); + String lastYear = String.valueOf(lastYearMonth.getYear()); + String quarter = this.getQuarter(currentMonth.getMonth().getValue()); + BsEnergyMonitorEntity detail = new BsEnergyMonitorEntity(); + BsEnergyMonitorEntity lastYearDetail = bsEnergyMonitorService.getOne(new LambdaQueryWrapper().eq(BsEnergyMonitorEntity::getMonth, lastMonth)); + BsEnergyTargetEntity lastYearWaterTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper(). + eq(BsEnergyTargetEntity::getYear, lastYear) + .eq(BsEnergyTargetEntity::getType, "1")); + BsEnergyTargetEntity currentYearWaterTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper(). + eq(BsEnergyTargetEntity::getYear, currentYear) + .eq(BsEnergyTargetEntity::getType, "1")); + BsEnergyTargetEntity lastYearElectricTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper(). + eq(BsEnergyTargetEntity::getYear, lastYear) + .eq(BsEnergyTargetEntity::getQuarter, quarter) + .eq(BsEnergyTargetEntity::getType, "2")); + BsEnergyTargetEntity currentYearElectricTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper(). + eq(BsEnergyTargetEntity::getYear, currentYear) + .eq(BsEnergyTargetEntity::getQuarter, quarter) + .eq(BsEnergyTargetEntity::getType, "2")); + if (lastYearDetail != null) { + detail.setLastWater(lastYearDetail.getCurrentWater()); + detail.setLastElectric(lastYearDetail.getCurrentElectric()); + detail.setLastOutput(lastYearDetail.getCurrentOutput()); + detail.setLastWaterRate(lastYearDetail.getCurrentWaterRate()); + detail.setLastElectricRate(lastYearDetail.getCurrentElectricRate()); + } + if (lastYearWaterTarget != null) { + detail.setLastWaterTarget(lastYearWaterTarget.getTarget()); + } + if (lastYearElectricTarget != null) { + detail.setLastElectricTarget(lastYearElectricTarget.getTarget()); + } + if (currentYearWaterTarget != null) { + detail.setCurrentWaterTarget(currentYearWaterTarget.getTarget()); + } + if (currentYearElectricTarget != null) { + detail.setCurrentElectricTarget(currentYearElectricTarget.getTarget()); + } + return R.data(detail); + } + + + public static String getQuarter(int month) { + if (month <= 3) { + return "1"; + } else if (month <= 6) { + return "2"; + } else if (month <= 9) { + return "3"; + } else { + return "4"; + } + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyQuotaController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyQuotaController.java index 52a6c2d6..50a91320 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyQuotaController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyQuotaController.java @@ -25,10 +25,9 @@ */ package org.springblade.desk.energy.controller; +import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -44,15 +43,28 @@ import org.springblade.core.secure.annotation.IsAdmin; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; -import org.springblade.desk.energy.excel.BsEnergyQuotaExcel; +import org.springblade.desk.basic.pojo.entity.WorkCenter; +import org.springblade.desk.basic.service.IWorkCenterService; +import org.springblade.desk.basic.util.ExcelExtUtil; +import org.springblade.desk.device.pojo.entity.EquipmentEntity; +import org.springblade.desk.device.service.IEquipmentService; +import org.springblade.desk.energy.excel.BsEnergyQuotaElectricExcel; +import org.springblade.desk.energy.excel.BsEnergyQuotaElectricImportExcel; +import org.springblade.desk.energy.excel.BsEnergyQuotaWaterExcel; +import org.springblade.desk.energy.excel.BsEnergyQuotaWaterImportExcel; import org.springblade.desk.energy.pojo.entity.BsEnergyQuotaEntity; import org.springblade.desk.energy.pojo.vo.BsEnergyQuotaVO; import org.springblade.desk.energy.service.IBsEnergyQuotaService; import org.springblade.desk.energy.wrapper.BsEnergyQuotaWrapper; +import org.springframework.beans.BeanUtils; +import org.springframework.core.io.Resource; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; -import java.util.List; -import java.util.Map; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.*; /** * 能源定额 控制器 @@ -66,67 +78,246 @@ import java.util.Map; @Tag(name = "能源定额", description = "能源定额接口") public class BsEnergyQuotaController extends BladeController { - private final IBsEnergyQuotaService bsEnergyQuotaService; - - /** - * 能源定额 详情 - */ - @GetMapping("/detail") - @Operation(summary = "详情", description = "传入bsEnergyQuota") - public R detail(BsEnergyQuotaEntity bsEnergyQuota) { - BsEnergyQuotaEntity detail = bsEnergyQuotaService.getOne(Condition.getQueryWrapper(bsEnergyQuota)); - return R.data(BsEnergyQuotaWrapper.build().entityVO(detail)); - } - - /** - * 能源定额 自定义分页 - */ - @GetMapping("/page") - @Operation(summary = "分页", description = "传入bsEnergyQuota") - public R> page(BsEnergyQuotaVO bsEnergyQuota, Query query) { - IPage pages = bsEnergyQuotaService.selectBsEnergyQuotaPage(Condition.getPage(query), bsEnergyQuota); - return R.data(pages); - } - - /** - * 能源定额 新增或修改 - */ - @PostMapping("/submit") - @Operation(summary = "新增或修改", description = "传入bsEnergyQuota") - public R submit(@Valid @RequestBody BsEnergyQuotaEntity bsEnergyQuota) { - if (bsEnergyQuota.getId() == null){ - // 新增需要校验 - BsEnergyQuotaEntity bsEnergyQuotaEntity = bsEnergyQuotaService.getOne(new LambdaQueryWrapper() - .eq(BsEnergyQuotaEntity::getWorkCenterId, bsEnergyQuota.getWorkCenterId()) - .eq(BsEnergyQuotaEntity::getEquipmentId, bsEnergyQuota.getEquipmentId()) - .eq(BsEnergyQuotaEntity::getType, bsEnergyQuota.getType()) - .eq(BsEnergyQuotaEntity::getDate, bsEnergyQuota.getDate())); - if (bsEnergyQuotaEntity != null) { - return R.fail("该日期能源定额已存在"); - } - } - return R.status(bsEnergyQuotaService.saveOrUpdate(bsEnergyQuota)); - } - - /** - * 能源定额 删除 - */ - @PostMapping("/remove") - @Operation(summary = "逻辑删除", description = "传入ids") - public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { - return R.status(bsEnergyQuotaService.deleteLogic(Func.toLongList(ids))); - } - - /** - * 导出数据 - */ - @IsAdmin - @GetMapping("/export-bsEnergyQuota") - @Operation(summary = "导出数据", description = "传入bsEnergyQuota") - public void exportBsEnergyQuota(@Parameter(hidden = true) @RequestParam Map bsEnergyQuota, BladeUser bladeUser, HttpServletResponse response) { - QueryWrapper queryWrapper = Condition.getQueryWrapper(bsEnergyQuota, BsEnergyQuotaEntity.class); - List list = bsEnergyQuotaService.exportBsEnergyQuota(queryWrapper); - ExcelUtil.export(response, "能源定额数据" + DateUtil.time(), "能源定额数据表", list, BsEnergyQuotaExcel.class); - } + private final IBsEnergyQuotaService bsEnergyQuotaService; + + private final IEquipmentService equipmentService; + + private final IWorkCenterService workCenterService; + + /** + * 能源定额 详情 + */ + @GetMapping("/detail") + @Operation(summary = "详情", description = "传入bsEnergyQuota") + public R detail(BsEnergyQuotaEntity bsEnergyQuota) { + BsEnergyQuotaEntity detail = bsEnergyQuotaService.getOne(Condition.getQueryWrapper(bsEnergyQuota)); + return R.data(BsEnergyQuotaWrapper.build().entityVO(detail)); + } + + /** + * 能源定额 自定义分页 + */ + @GetMapping("/page") + @Operation(summary = "分页", description = "传入bsEnergyQuota") + public R> page(BsEnergyQuotaVO bsEnergyQuota, Query query) { + IPage pages = bsEnergyQuotaService.selectBsEnergyQuotaPage(Condition.getPage(query), bsEnergyQuota); + return R.data(pages); + } + + /** + * 能源定额 新增或修改 + */ + @PostMapping("/submit") + @Operation(summary = "新增或修改", description = "传入bsEnergyQuota") + public R submit(@Valid @RequestBody BsEnergyQuotaEntity bsEnergyQuota) { + BsEnergyQuotaEntity bsEnergyQuotaEntity = bsEnergyQuotaService.getOne(new LambdaQueryWrapper() + .eq(BsEnergyQuotaEntity::getEquipmentId, bsEnergyQuota.getEquipmentId()) + .eq(BsEnergyQuotaEntity::getType, bsEnergyQuota.getType())); + if (bsEnergyQuotaEntity != null && !bsEnergyQuotaEntity.getId().equals(bsEnergyQuota.getId())) { + String msg = "该设备能源定额已存在"; + if ("1".equals(bsEnergyQuota.getType())) { + msg = "该设备用水定额已存在"; + } + if ("2".equals(bsEnergyQuota.getType())) { + msg = "该设备用电定额已存在"; + } + return R.fail(msg); + } + return R.status(bsEnergyQuotaService.saveOrUpdate(bsEnergyQuota)); + } + + /** + * 能源定额 删除 + */ + @PostMapping("/remove") + @Operation(summary = "逻辑删除", description = "传入ids") + public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { + return R.status(bsEnergyQuotaService.deleteLogic(Func.toLongList(ids))); + } + + /** + * 导出数据 + */ + @IsAdmin + @GetMapping("/export-bsEnergyQuota") + @Operation(summary = "导出数据", description = "传入bsEnergyQuota") + public void exportBsEnergyQuota(@Parameter(hidden = true) @RequestParam Map bsEnergyQuota, BladeUser bladeUser, HttpServletResponse response) { + LambdaQueryWrapper qw = new LambdaQueryWrapper().eq(BsEnergyQuotaEntity::getType, bsEnergyQuota.get("type")); + List list = bsEnergyQuotaService.list(qw); + if ("1".equals(bsEnergyQuota.get("type"))) { + List bsEnergyTargetWaterExcels = BeanUtil.copyToList(list, BsEnergyQuotaWaterExcel.class); + ExcelUtil.export(response, "用水定额数据" + DateUtil.time(), "用水定额数据表", bsEnergyTargetWaterExcels, BsEnergyQuotaWaterExcel.class); + } else { + List bsEnergyTargetElectricExcels = BeanUtil.copyToList(list, BsEnergyQuotaElectricExcel.class); + ExcelUtil.export(response, "用电定额数据" + DateUtil.time(), "用电定额数据表", bsEnergyTargetElectricExcels, BsEnergyQuotaElectricExcel.class); + } + } + + @GetMapping("/water-download-excel-template") + @Operation(summary = "下载Excel模板", description = "") + public ResponseEntity waterDownloadExcelTemplate() { + return ExcelExtUtil.downloadXlsTemplate( + "Excel/energy/用水定额.xls", + "导入模版-用水定额.xls"); + } + + @GetMapping("/electric-download-excel-template") + @Operation(summary = "下载Excel模板", description = "") + public ResponseEntity electricDownloadExcelTemplate() { + return ExcelExtUtil.downloadXlsTemplate( + "Excel/energy/用电定额.xls", + "导入模版-用电定额.xls"); + } + + @PostMapping("/water-import-excel") + @Operation(summary = "导入Excel", description = "MultipartFile") + public R waterImportExcel(@RequestParam("file") MultipartFile file) { + R checkR = ExcelExtUtil.importExcelCheck(file); + if (checkR != null) { + return checkR; + } + List importList = ExcelUtil.read( + file, 0, 1, BsEnergyQuotaWaterImportExcel.class + ); + boolean result = true; + Set existSet = new HashSet<>(); + StringBuffer msg = new StringBuffer(); + List list = new ArrayList<>(); + for (BsEnergyQuotaWaterImportExcel excel : importList) { + LocalDate parse = LocalDate.parse(excel.getDate(), DateTimeFormatter.ofPattern("yyyy/M/d")); + String newDate = parse.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + excel.setDate(newDate); + EquipmentEntity equipmentEntity = equipmentService.getDeEquipmentCardByCode(excel.getDeviceCode()); + if (equipmentEntity == null) { + msg.append("设备【" + excel.getDeviceCode() + "】不存在\rn"); + result = false; + continue; + } + List wcCodes = Arrays.asList(excel.getWcCode().split(",")); + StringBuffer workCenterId = new StringBuffer(); + StringBuffer workCenterName = new StringBuffer(); + for (String wcCode : wcCodes) { + WorkCenter workCenter = workCenterService.getWorkCenterByCode(wcCode); + if (workCenter == null) { + msg.append("作业中心【" + wcCode + "】不存在\rn"); + result = false; + break; + } + if (workCenterId.length() > 0) { + workCenterId.append(","); + } + workCenterId.append(workCenter.getId()); + if (workCenterName.length() > 0) { + workCenterName.append(","); + } + workCenterName.append(workCenter.getWcName()); + } + if (!result) { + continue; + } + if (existSet.contains(excel.getDeviceCode())) { + msg.append("Excel里设备【" + excel.getDeviceCode() + "】重复了\rn"); + result = false; + continue; + } + existSet.add(excel.getDeviceCode()); + BsEnergyQuotaEntity exist = bsEnergyQuotaService.getOne(new LambdaQueryWrapper(). + eq(BsEnergyQuotaEntity::getEquipmentId, equipmentEntity.getId()) + .eq(BsEnergyQuotaEntity::getType, "1")); + if (exist != null) { + msg.append(excel.getDeviceCode() + "设备用水定额已存在\n"); + result = false; + continue; + } + BsEnergyQuotaEntity bsEnergyQuotaEntity = new BsEnergyQuotaEntity(); + BeanUtils.copyProperties(excel, bsEnergyQuotaEntity); + bsEnergyQuotaEntity.setEquipmentId(equipmentEntity.getId()); + bsEnergyQuotaEntity.setEquipmentName(equipmentEntity.getDeviceName()); + bsEnergyQuotaEntity.setWorkCenterId(workCenterId.toString()); + bsEnergyQuotaEntity.setWorkCenterName(workCenterName.toString()); + bsEnergyQuotaEntity.setType("1"); + list.add(bsEnergyQuotaEntity); + } + bsEnergyQuotaService.saveBatch(list); + if (result) { + return R.success("导入成功"); + } else { + return R.fail(msg.toString()); + } + } + + @PostMapping("/electric-import-excel") + @Operation(summary = "导入Excel", description = "MultipartFile") + public R electricImportExcel(@RequestParam("file") MultipartFile file) { + R checkR = ExcelExtUtil.importExcelCheck(file); + if (checkR != null) { + return checkR; + } + List importList = ExcelUtil.read( + file, 0, 1, BsEnergyQuotaElectricImportExcel.class + ); + boolean result = true; + Set existSet = new HashSet<>(); + StringBuffer msg = new StringBuffer(); + List list = new ArrayList<>(); + for (BsEnergyQuotaElectricImportExcel excel : importList) { + EquipmentEntity equipmentEntity = equipmentService.getDeEquipmentCardByCode(excel.getDeviceCode()); + if (equipmentEntity == null) { + msg.append("设备【" + excel.getDeviceCode() + "】不存在\rn"); + result = false; + continue; + } + List wcCodes = Arrays.asList(excel.getWcCode().split(",")); + StringBuffer workCenterId = new StringBuffer(); + StringBuffer workCenterName = new StringBuffer(); + for (String wcCode : wcCodes) { + WorkCenter workCenter = workCenterService.getWorkCenterByCode(wcCode); + if (workCenter == null) { + msg.append("作业中心【" + wcCode + "】不存在\rn"); + result = false; + break; + } + if (workCenterId.length() > 0) { + workCenterId.append(","); + } + workCenterId.append(workCenter.getId()); + if (workCenterName.length() > 0) { + workCenterName.append(","); + } + workCenterName.append(workCenter.getWcName()); + } + if (!result) { + continue; + } + if (existSet.contains(excel.getDeviceCode())) { + msg.append("Excel里设备【" + excel.getDeviceCode() + "】重复了\rn"); + result = false; + continue; + } + existSet.add(excel.getDeviceCode()); + BsEnergyQuotaEntity exist = bsEnergyQuotaService.getOne(new LambdaQueryWrapper(). + eq(BsEnergyQuotaEntity::getEquipmentId, equipmentEntity.getId()) + .eq(BsEnergyQuotaEntity::getType, "2")); + if (exist != null) { + msg.append(excel.getDeviceCode() + "设备用电定额已存在\n"); + result = false; + continue; + } + BsEnergyQuotaEntity bsEnergyQuotaEntity = new BsEnergyQuotaEntity(); + BeanUtils.copyProperties(excel, bsEnergyQuotaEntity); + bsEnergyQuotaEntity.setEquipmentId(equipmentEntity.getId()); + bsEnergyQuotaEntity.setEquipmentName(equipmentEntity.getDeviceName()); + bsEnergyQuotaEntity.setWorkCenterId(workCenterId.toString()); + bsEnergyQuotaEntity.setWorkCenterName(workCenterName.toString()); + bsEnergyQuotaEntity.setType("2"); + list.add(bsEnergyQuotaEntity); + } + bsEnergyQuotaService.saveBatch(list); + if (result) { + return R.success("导入成功"); + } else { + return R.fail(msg.toString()); + } + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyTargetController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyTargetController.java index 116f2711..c46dcb00 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyTargetController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyTargetController.java @@ -25,9 +25,10 @@ */ package org.springblade.desk.energy.controller; +import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -43,16 +44,22 @@ import org.springblade.core.secure.annotation.IsAdmin; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; -import org.springblade.desk.energy.excel.BsEnergyTargetExcel; +import org.springblade.desk.basic.util.ExcelExtUtil; +import org.springblade.desk.energy.excel.BsEnergyTargetElectricExcel; +import org.springblade.desk.energy.excel.BsEnergyTargetWaterExcel; import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity; import org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO; import org.springblade.desk.energy.service.IBsEnergyTargetService; import org.springblade.desk.energy.wrapper.BsEnergyTargetWrapper; +import org.springframework.beans.BeanUtils; +import org.springframework.core.io.Resource; +import org.springframework.data.redis.hash.HashMapper; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.math.BigDecimal; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 能耗目标表 控制器 @@ -66,85 +73,209 @@ import java.util.Map; @Tag(name = "能耗目标表", description = "能耗目标表接口") public class BsEnergyTargetController extends BladeController { - private final IBsEnergyTargetService bsEnergyTargetService; - - /** - * 能耗目标表 详情 - */ - @GetMapping("/detail") - @Operation(summary = "详情", description = "传入bsEnergyTarget") - public R detail(BsEnergyTargetEntity bsEnergyTarget) { - BsEnergyTargetEntity detail = bsEnergyTargetService.getOne(Condition.getQueryWrapper(bsEnergyTarget)); - return R.data(BsEnergyTargetWrapper.build().entityVO(detail)); - } - - /** - * 能耗目标表 获取用水目标 - */ - @GetMapping("/detailByWater") - @Operation(summary = "根据月份获取用水目标", description = "获取用水目标") - public R getWaterTargetByMonth(String month) { - BigDecimal waterTarget = bsEnergyTargetService.getWaterTargetByMonth(month); - return R.data(waterTarget); - } - - /** - * 能耗目标表 获取用水目标 - */ - @GetMapping("/detailByElectric") - @Operation(summary = "根据月份获取用电目标", description = "获取用电目标") - public R getElectricTargetByMonth(String month) { - BigDecimal electricTarget = bsEnergyTargetService.getElectricTargetByMonth(month); - return R.data(electricTarget); - } - - /** - * 能耗目标表 自定义分页 - */ - @GetMapping("/page") - @Operation(summary = "分页", description = "传入bsEnergyTarget") - public R> page(BsEnergyTargetVO bsEnergyTarget, Query query) { - IPage pages = bsEnergyTargetService.selectBsEnergyTargetPage(Condition.getPage(query), bsEnergyTarget); - return R.data(pages); - } - - /** - * 能耗目标表 新增或修改 - */ - @PostMapping("/submit") - @Operation(summary = "新增或修改", description = "传入bsEnergyTarget") - public R submit(@Valid @RequestBody BsEnergyTargetEntity bsEnergyTarget) { - if (bsEnergyTarget.getId() == null) { - // 新增需要校验 - BsEnergyTargetEntity bsEnergyTargetEntity = bsEnergyTargetService.getOne(new LambdaQueryWrapper(). - eq(BsEnergyTargetEntity::getMonth, bsEnergyTarget.getMonth()) - .eq(BsEnergyTargetEntity::getType, bsEnergyTarget.getType())); - if (bsEnergyTargetEntity != null) { - return R.fail("该月份能耗目标已存在"); - } - } - return R.status(bsEnergyTargetService.saveOrUpdate(bsEnergyTarget)); - } - - /** - * 能耗目标表 删除 - */ - @PostMapping("/remove") - @Operation(summary = "逻辑删除", description = "传入ids") - public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { - return R.status(bsEnergyTargetService.deleteLogic(Func.toLongList(ids))); - } - - /** - * 导出数据 - */ - @IsAdmin - @GetMapping("/export-bsEnergyTarget") - @Operation(summary = "导出数据", description = "传入bsEnergyTarget") - public void exportBsEnergyTarget(@Parameter(hidden = true) @RequestParam Map bsEnergyTarget, BladeUser bladeUser, HttpServletResponse response) { - QueryWrapper queryWrapper = Condition.getQueryWrapper(bsEnergyTarget, BsEnergyTargetEntity.class); - List list = bsEnergyTargetService.exportBsEnergyTarget(queryWrapper); - ExcelUtil.export(response, "能耗目标表数据" + DateUtil.time(), "能耗目标表数据表", list, BsEnergyTargetExcel.class); - } + private final IBsEnergyTargetService bsEnergyTargetService; + + /** + * 能耗目标表 详情 + */ + @GetMapping("/detail") + @Operation(summary = "详情", description = "传入bsEnergyTarget") + public R detail(BsEnergyTargetEntity bsEnergyTarget) { + BsEnergyTargetEntity detail = bsEnergyTargetService.getOne(Condition.getQueryWrapper(bsEnergyTarget)); + return R.data(BsEnergyTargetWrapper.build().entityVO(detail)); + } + + /** + * 能耗目标表 获取用水目标 + */ + @GetMapping("/detailByWater") + @Operation(summary = "根据月份获取用水目标", description = "获取用水目标") + public R getWaterTargetByMonth(String month) { + BigDecimal waterTarget = bsEnergyTargetService.getWaterTargetByMonth(month); + return R.data(waterTarget); + } + + /** + * 能耗目标表 获取用水目标 + */ + @GetMapping("/detailByElectric") + @Operation(summary = "根据月份获取用电目标", description = "获取用电目标") + public R getElectricTargetByMonth(String month) { + BigDecimal electricTarget = bsEnergyTargetService.getElectricTargetByMonth(month); + return R.data(electricTarget); + } + + /** + * 能耗目标表 自定义分页 + */ + @GetMapping("/page") + @Operation(summary = "分页", description = "传入bsEnergyTarget") + public R> page(BsEnergyTargetVO bsEnergyTarget, Query query) { + IPage pages = bsEnergyTargetService.selectBsEnergyTargetPage(Condition.getPage(query), bsEnergyTarget); + return R.data(pages); + } + + /** + * 能耗目标表 新增或修改 + */ + @PostMapping("/submit") + @Operation(summary = "新增或修改", description = "传入bsEnergyTarget") + public R submit(@Valid @RequestBody BsEnergyTargetEntity bsEnergyTarget) { + BsEnergyTargetEntity bsEnergyTargetEntity = bsEnergyTargetService.getOne(new LambdaQueryWrapper(). + eq(BsEnergyTargetEntity::getYear, bsEnergyTarget.getYear()) + .eq(BsEnergyTargetEntity::getType, bsEnergyTarget.getType()) + .eq(bsEnergyTarget.getQuarter() != null, BsEnergyTargetEntity::getQuarter, bsEnergyTarget.getQuarter())); + if (bsEnergyTargetEntity != null && !bsEnergyTargetEntity.getId().equals(bsEnergyTarget.getId())) { + if ("1".equals(bsEnergyTarget.getType())) { + return R.fail("该年份能耗目标已存在"); + } + if ("2".equals(bsEnergyTarget.getType())) { + return R.fail("该季度能耗目标已存在"); + } + } + return R.status(bsEnergyTargetService.saveOrUpdate(bsEnergyTarget)); + } + + /** + * 能耗目标表 删除 + */ + @PostMapping("/remove") + @Operation(summary = "逻辑删除", description = "传入ids") + public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { + return R.status(bsEnergyTargetService.deleteLogic(Func.toLongList(ids))); + } + + /** + * 导出数据 + */ + @IsAdmin + @GetMapping("/export-bsEnergyTarget") + @Operation(summary = "导出数据", description = "传入bsEnergyTarget") + public void exportBsEnergyTarget(@Parameter(hidden = true) @RequestParam Map bsEnergyTarget, BladeUser bladeUser, HttpServletResponse response) { + Map conMap = new HashMap(); + conMap.put("type", bsEnergyTarget.get("type")); + conMap.put("isDeleted", 0); + List list = bsEnergyTargetService.listByMap(conMap); + if ("1".equals(bsEnergyTarget.get("type"))) { + List bsEnergyTargetWaterExcels = BeanUtil.copyToList(list, BsEnergyTargetWaterExcel.class); + ExcelUtil.export(response, "用水目标" + DateUtil.time(), "用水目标", bsEnergyTargetWaterExcels, BsEnergyTargetWaterExcel.class); + } else { + List bsEnergyTargetElectricExcels = BeanUtil.copyToList(list, BsEnergyTargetElectricExcel.class); + ExcelUtil.export(response, "用电目标" + DateUtil.time(), "用电目标", bsEnergyTargetElectricExcels, BsEnergyTargetElectricExcel.class); + } + } + + @GetMapping("/water-download-excel-template") + @Operation(summary = "下载Excel模板", description = "") + public ResponseEntity waterDownloadExcelTemplate() { + return ExcelExtUtil.downloadXlsTemplate( + "Excel/energy/用水目标.xls", + "导入模版-用水目标.xls"); + } + + @GetMapping("/electric-download-excel-template") + @Operation(summary = "下载Excel模板", description = "") + public ResponseEntity electricDownloadExcelTemplate() { + return ExcelExtUtil.downloadXlsTemplate( + "Excel/energy/用电目标.xls", + "导入模版-用电目标.xls"); + } + + @PostMapping("/water-import-excel") + @Operation(summary = "导入Excel", description = "MultipartFile") + public R waterImportExcel(@RequestParam("file") MultipartFile file) { + R checkR = ExcelExtUtil.importExcelCheck(file); + if (checkR != null) { + return checkR; + } + List importList = ExcelUtil.read( + file, 0, 1, BsEnergyTargetWaterExcel.class + ); + boolean result = true; + Set existSet = new HashSet<>(); + StringBuffer msg = new StringBuffer(); + List list = new ArrayList<>(); + for (BsEnergyTargetWaterExcel excel : importList) { + if (existSet.contains(excel.getYear())) { + msg.append("Excel里【" + excel.getYear() + "】重复了\rn"); + result = false; + continue; + } + existSet.add(excel.getYear()); + BsEnergyTargetEntity exist = bsEnergyTargetService.getOne(new LambdaQueryWrapper(). + eq(BsEnergyTargetEntity::getYear, excel.getYear()) + .eq(BsEnergyTargetEntity::getType, "1")); + if (exist != null) { + msg.append(excel.getYear() + "能耗目标已存在\n"); + result = false; + continue; + } + BsEnergyTargetEntity bsEnergyTargetEntity = new BsEnergyTargetEntity(); + BeanUtils.copyProperties(excel, bsEnergyTargetEntity); + bsEnergyTargetEntity.setType("1"); + list.add(bsEnergyTargetEntity); + } + bsEnergyTargetService.saveBatch(list); + if (result) { + return R.success("导入成功"); + } else { + return R.fail(msg.toString()); + } + } + + @PostMapping("/electric-import-excel") + @Operation(summary = "导入Excel", description = "MultipartFile") + public R electricImportExcel(@RequestParam("file") MultipartFile file) { + R checkR = ExcelExtUtil.importExcelCheck(file); + if (checkR != null) { + return checkR; + } + List importList = ExcelUtil.read( + file, 0, 1, BsEnergyTargetElectricExcel.class + ); + boolean result = true; + Set existSet = new HashSet<>(); + StringBuffer msg = new StringBuffer(); + List list = new ArrayList<>(); + for (BsEnergyTargetElectricExcel excel : importList) { + String key = excel.getYear() + "-" + excel.getQuarter(); + if (existSet.contains(key)) { + msg.append("Excel里【" + key + "】重复了\rn"); + result = false; + continue; + } + existSet.add(key); + if("第一季度".equals(excel.getQuarter())){ + excel.setQuarter("1"); + } else if("第二季度".equals(excel.getQuarter())){ + excel.setQuarter("2"); + } else if("第三季度".equals(excel.getQuarter())){ + excel.setQuarter("3"); + } else if("第四季度".equals(excel.getQuarter())){ + excel.setQuarter("4"); + } + BsEnergyTargetEntity exist = bsEnergyTargetService.getOne(new LambdaQueryWrapper(). + eq(BsEnergyTargetEntity::getYear, excel.getYear()) + .eq(BsEnergyTargetEntity::getType, "2") + .eq(BsEnergyTargetEntity::getQuarter, excel.getQuarter())); + if (exist != null) { + msg.append(key + "能耗目标已存在\n"); + result = false; + continue; + } + BsEnergyTargetEntity bsEnergyTargetEntity = new BsEnergyTargetEntity(); + BeanUtils.copyProperties(excel, bsEnergyTargetEntity); + bsEnergyTargetEntity.setType("2"); + list.add(bsEnergyTargetEntity); + } + bsEnergyTargetService.saveBatch(list); + if (result) { + return R.success("导入成功"); + } else { + return R.fail(msg.toString()); + } + } + + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsPeakFlatValleyController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsPeakFlatValleyController.java index f546c235..468a6101 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsPeakFlatValleyController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsPeakFlatValleyController.java @@ -66,65 +66,64 @@ import java.util.Map; @Tag(name = "峰平谷", description = "峰平谷接口") public class BsPeakFlatValleyController extends BladeController { - private final IBsPeakFlatValleyService bsPeakFlatValleyService; + private final IBsPeakFlatValleyService bsPeakFlatValleyService; - /** - * 峰平谷 详情 - */ - @GetMapping("/detail") - @Operation(summary = "详情", description = "传入bsPeakFlatValley") - public R detail(BsPeakFlatValleyEntity bsPeakFlatValley) { - BsPeakFlatValleyEntity detail = bsPeakFlatValleyService.getOne(Condition.getQueryWrapper(bsPeakFlatValley)); - return R.data(BsPeakFlatValleyWrapper.build().entityVO(detail)); - } + /** + * 峰平谷 详情 + */ + @GetMapping("/detail") + @Operation(summary = "详情", description = "传入bsPeakFlatValley") + public R detail(BsPeakFlatValleyEntity bsPeakFlatValley) { + BsPeakFlatValleyEntity detail = bsPeakFlatValleyService.getOne(Condition.getQueryWrapper(bsPeakFlatValley)); + return R.data(BsPeakFlatValleyWrapper.build().entityVO(detail)); + } - /** - * 峰平谷 自定义分页 - */ - @GetMapping("/page") - @Operation(summary = "分页", description = "传入bsPeakFlatValley") - public R> page(BsPeakFlatValleyVO bsPeakFlatValley, Query query) { - IPage pages = bsPeakFlatValleyService.selectBsPeakFlatValleyPage(Condition.getPage(query), bsPeakFlatValley); - return R.data(pages); - } + /** + * 峰平谷 自定义分页 + */ + @GetMapping("/page") + @Operation(summary = "分页", description = "传入bsPeakFlatValley") + public R> page(BsPeakFlatValleyVO bsPeakFlatValley, Query query) { + IPage pages = bsPeakFlatValleyService.selectBsPeakFlatValleyPage(Condition.getPage(query), bsPeakFlatValley); + return R.data(pages); + } - /** - * 峰平谷 新增或修改 - */ - @PostMapping("/submit") - @Operation(summary = "新增或修改", description = "传入bsPeakFlatValley") - public R submit(@Valid @RequestBody BsPeakFlatValleyEntity bsPeakFlatValley) { - if (bsPeakFlatValley.getId() == null){ - // 新增校验是否存在 - BsPeakFlatValleyEntity bsPeakFlatValleyEntity = bsPeakFlatValleyService.getOne(new LambdaQueryWrapper() - .eq(BsPeakFlatValleyEntity::getMonth, bsPeakFlatValley.getMonth())); - if (bsPeakFlatValleyEntity != null) { - return R.fail("该月份峰平谷已存在"); - } - } - return R.status(bsPeakFlatValleyService.saveOrUpdate(bsPeakFlatValley)); - } + /** + * 峰平谷 新增或修改 + */ + @PostMapping("/submit") + @Operation(summary = "新增或修改", description = "传入bsPeakFlatValley") + public R submit(@Valid @RequestBody List bsPeakFlatValleyList) { + for (BsPeakFlatValleyEntity bsPeakFlatValley : bsPeakFlatValleyList) { + BsPeakFlatValleyEntity exist = bsPeakFlatValleyService.getOne(new LambdaQueryWrapper() + .eq(BsPeakFlatValleyEntity::getMonth, bsPeakFlatValley.getMonth())); + if (exist != null && !exist.getId().equals(bsPeakFlatValley.getId())) { + return R.fail("该月份峰平谷已存在"); + } + } + return R.status(bsPeakFlatValleyService.saveOrUpdateBatch(bsPeakFlatValleyList)); + } - /** - * 峰平谷 删除 - */ - @PostMapping("/remove") - @Operation(summary = "逻辑删除", description = "传入ids") - public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { - return R.status(bsPeakFlatValleyService.deleteLogic(Func.toLongList(ids))); - } + /** + * 峰平谷 删除 + */ + @PostMapping("/remove") + @Operation(summary = "逻辑删除", description = "传入ids") + public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { + return R.status(bsPeakFlatValleyService.deleteLogic(Func.toLongList(ids))); + } - /** - * 导出数据 - */ - @IsAdmin - @GetMapping("/export-bsPeakFlatValley") - @ApiOperationSupport(order = 9) - @Operation(summary = "导出数据", description = "传入bsPeakFlatValley") - public void exportBsPeakFlatValley(@Parameter(hidden = true) @RequestParam Map bsPeakFlatValley, BladeUser bladeUser, HttpServletResponse response) { - QueryWrapper queryWrapper = Condition.getQueryWrapper(bsPeakFlatValley, BsPeakFlatValleyEntity.class); - List list = bsPeakFlatValleyService.exportBsPeakFlatValley(queryWrapper); - ExcelUtil.export(response, "峰平谷数据" + DateUtil.time(), "峰平谷数据表", list, BsPeakFlatValleyExcel.class); - } + /** + * 导出数据 + */ + @IsAdmin + @GetMapping("/export-bsPeakFlatValley") + @ApiOperationSupport(order = 9) + @Operation(summary = "导出数据", description = "传入bsPeakFlatValley") + public void exportBsPeakFlatValley(@Parameter(hidden = true) @RequestParam Map bsPeakFlatValley, BladeUser bladeUser, HttpServletResponse response) { + QueryWrapper queryWrapper = Condition.getQueryWrapper(bsPeakFlatValley, BsPeakFlatValleyEntity.class); + List list = bsPeakFlatValleyService.exportBsPeakFlatValley(queryWrapper); + ExcelUtil.export(response, "峰平谷数据" + DateUtil.time(), "峰平谷数据表", list, BsPeakFlatValleyExcel.class); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyQuotaElectricExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyQuotaElectricExcel.java new file mode 100644 index 00000000..9e068edf --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyQuotaElectricExcel.java @@ -0,0 +1,60 @@ +package org.springblade.desk.energy.excel; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ColumnWidth(25) +@HeadRowHeight(20) +@ContentRowHeight(18) +public class BsEnergyQuotaElectricExcel implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 作业中心 + */ + @ColumnWidth(50) + @ExcelProperty("作业中心") + private String workCenterName; + /** + * 作业中心编码 + */ + @ColumnWidth(50) + @ExcelProperty("作业中心编码") + private String wcCode; + /** + * 设备 + */ + @ColumnWidth(50) + @ExcelProperty("设备") + private String equipmentName; + /** + * 设备编码 + */ + @ColumnWidth(50) + @ExcelProperty("设备") + private String deviceCode; + /** + * 日期 + */ + @ColumnWidth(50) + @ExcelProperty("日期") + private String date; + /** + * 用电量 + */ + @ColumnWidth(50) + @ExcelProperty("定额单位面积用电量(kWh/dm²)") + private BigDecimal electricNum; +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyQuotaElectricImportExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyQuotaElectricImportExcel.java new file mode 100644 index 00000000..6cd43305 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyQuotaElectricImportExcel.java @@ -0,0 +1,48 @@ +package org.springblade.desk.energy.excel; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ColumnWidth(25) +@HeadRowHeight(20) +@ContentRowHeight(18) +public class BsEnergyQuotaElectricImportExcel implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 作业中心编码 + */ + @ColumnWidth(50) + @ExcelProperty("作业中心编码") + private String wcCode; + /** + * 设备编码 + */ + @ColumnWidth(50) + @ExcelProperty("设备编码") + private String deviceCode; + /** + * 日期 + */ + @ColumnWidth(50) + @ExcelProperty("日期") + private String date; + /** + * 用电量 + */ + @ColumnWidth(50) + @ExcelProperty("定额单位面积用电量(kWh/dm²)") + private BigDecimal electricNum; +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyQuotaExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyQuotaWaterExcel.java similarity index 65% rename from blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyQuotaExcel.java rename to blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyQuotaWaterExcel.java index d5e5c546..97666394 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyQuotaExcel.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyQuotaWaterExcel.java @@ -26,9 +26,12 @@ package org.springblade.desk.energy.excel; +import com.alibaba.excel.annotation.ExcelIgnore; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import java.util.Date; +import java.math.BigDecimal; + import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; @@ -47,41 +50,34 @@ import java.io.Serial; @ColumnWidth(25) @HeadRowHeight(20) @ContentRowHeight(18) -public class BsEnergyQuotaExcel implements Serializable { +public class BsEnergyQuotaWaterExcel implements Serializable { @Serial private static final long serialVersionUID = 1L; + /** - * ID + * 作业中心 */ - @ColumnWidth(20) - @ExcelProperty("ID") - private Long id; + @ColumnWidth(50) + @ExcelProperty("作业中心") + private String workCenterName; /** - * 类型 1-用水 2-用电 + * 作业中心编码 */ - @ColumnWidth(20) - @ExcelProperty("类型 1-用水 2-用电") - private String type; + @Schema(description = "作业中心编码") + private String wcCode; /** - * 作业中心ID + * 设备 */ - @ColumnWidth(20) - @ExcelProperty("作业中心ID") - private Long workCenterId; + @ColumnWidth(50) + @ExcelProperty("设备") + private String equipmentName; /** - * 设备ID + * 设备编码 */ - @ColumnWidth(20) - @ExcelProperty("设备ID") - private Long equipmentId; - /** - * 月份 - */ - @ColumnWidth(20) - @ExcelProperty("月份") - private String month; + @Schema(description = "设备编码") + private String deviceCode; /** * 日期 */ @@ -91,26 +87,14 @@ public class BsEnergyQuotaExcel implements Serializable { /** * 自来水用水量 */ - @ColumnWidth(20) - @ExcelProperty("自来水用水量") - private Long tapWaterNum; + @ColumnWidth(50) + @ExcelProperty("自来水用水量(L/dm²)") + private BigDecimal tapWaterNum; /** * 纯水用水量 */ - @ColumnWidth(20) - @ExcelProperty("纯水用水量") - private Long pureWaterNum; - /** - * 用电量 - */ - @ColumnWidth(20) - @ExcelProperty("用电量") - private Long electricNum; - /** - * 是否已删除 - */ - @ColumnWidth(20) - @ExcelProperty("是否已删除") - private Long isDeleted; + @ColumnWidth(50) + @ExcelProperty("纯水用水量(L/dm²)") + private BigDecimal pureWaterNum; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyQuotaWaterImportExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyQuotaWaterImportExcel.java new file mode 100644 index 00000000..f631dea9 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyQuotaWaterImportExcel.java @@ -0,0 +1,92 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.desk.energy.excel; + + +import com.alibaba.excel.annotation.ExcelIgnore; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.io.Serial; + + +/** + * 能源定额 Excel实体类 + * + * @author BladeX + * @since 2026-03-02 + */ +@Data +@ColumnWidth(25) +@HeadRowHeight(20) +@ContentRowHeight(18) +public class BsEnergyQuotaWaterImportExcel implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 作业中心编码 + */ + @ColumnWidth(50) + @ExcelProperty("作业中心编码") + private String wcCode; + /** + * 设备编码 + */ + @ColumnWidth(50) + @ExcelProperty("设备编码") + private String deviceCode; + /** + * 日期 + */ + @ColumnWidth(20) + @ExcelProperty("日期") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private String date; + /** + * 自来水用水量 + */ + @ColumnWidth(50) + @ExcelProperty("自来水用水量(L/dm²)") + private BigDecimal tapWaterNum; + /** + * 纯水用水量 + */ + @ColumnWidth(50) + @ExcelProperty("纯水用水量(L/dm²)") + private BigDecimal pureWaterNum; + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetElectricExcel.java similarity index 67% rename from blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetExcel.java rename to blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetElectricExcel.java index fe13b63d..38a727d1 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetExcel.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetElectricExcel.java @@ -26,16 +26,15 @@ package org.springblade.desk.energy.excel; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; import com.alibaba.excel.annotation.write.style.HeadRowHeight; -import java.io.Serializable; +import lombok.Data; + import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; /** @@ -48,46 +47,30 @@ import java.io.Serial; @ColumnWidth(25) @HeadRowHeight(20) @ContentRowHeight(18) -public class BsEnergyTargetExcel implements Serializable { +public class BsEnergyTargetElectricExcel implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 年份 + */ + @ColumnWidth(50) + @ExcelProperty("年份") + private String year; - @Serial - private static final long serialVersionUID = 1L; + /** + * 季度 + */ + @ColumnWidth(50) + @ExcelProperty("季度") + private String quarter; - /** - * ID - */ - @ColumnWidth(20) - @ExcelProperty("ID") - private Long id; - /** - * 类型 1-用水 2-用电 - */ - @ColumnWidth(20) - @ExcelProperty("类型 1-用水 2-用电") - private String type; - /** - * 月份 - */ - @ColumnWidth(20) - @ExcelProperty("月份") - private String month; - /** - * 日期 - */ - @ColumnWidth(20) - @ExcelProperty("日期") - private String date; - /** - * 目标 - */ - @ColumnWidth(20) - @ExcelProperty("目标") - private Long target; - /** - * 是否已删除 - */ - @ColumnWidth(20) - @ExcelProperty("是否已删除") - private Long isDeleted; + /** + * 用电目标(kWh/dm²) + */ + @ColumnWidth(50) + @ExcelProperty("用电目标(kWh/dm²)") + private BigDecimal target; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetWaterExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetWaterExcel.java new file mode 100644 index 00000000..19c4ebba --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetWaterExcel.java @@ -0,0 +1,71 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.desk.energy.excel; + + +import lombok.Data; + +import java.math.BigDecimal; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; + +import java.io.Serializable; +import java.io.Serial; + + +/** + * 能耗目标表 Excel实体类 + * + * @author BladeX + * @since 2026-03-02 + */ +@Data +@ColumnWidth(25) +@HeadRowHeight(20) +@ContentRowHeight(18) +public class BsEnergyTargetWaterExcel implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 年份 + */ + @ColumnWidth(50) + @ExcelProperty("年份") + private String year; + + /** + * 用水目标(L/d㎡) + */ + @ColumnWidth(50) + @ExcelProperty("用水目标(L/d㎡)") + private BigDecimal target; + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyCoreUseMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyCoreUseMapper.java new file mode 100644 index 00000000..c6aa921b --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyCoreUseMapper.java @@ -0,0 +1,26 @@ +package org.springblade.desk.energy.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.desk.energy.pojo.entity.BsEnergyCoreUseEntity; +import org.springblade.desk.energy.pojo.vo.BsEnergyCoreUseVO; + +import java.util.List; + +/** + * 水电能耗记录表 Mapper 接口 + * + * @author BladeX + * @since 2026-04-16 + */ +public interface BsEnergyCoreUseMapper extends BaseMapper { + + /** + * 自定义分页 + * + * @param page 分页参数 + * @param bsEnergyCoreUse 查询参数 + * @return List + */ + List selectBsEnergyCoreUsePage(IPage page, BsEnergyCoreUseVO bsEnergyCoreUse); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyHistoryRecMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyHistoryRecMapper.java new file mode 100644 index 00000000..67ae93e2 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyHistoryRecMapper.java @@ -0,0 +1,35 @@ +package org.springblade.desk.energy.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.desk.energy.pojo.entity.BsEnergyHistoryRecEntity; +import org.springblade.desk.energy.pojo.vo.BsEnergyHistoryRecVO; + +import java.util.List; + +/** + * iot水电能耗历史记录表 Mapper 接口 + * + * @author BladeX + * @since 2026-04-17 + */ +public interface BsEnergyHistoryRecMapper extends BaseMapper { + + /** + * 自定义分页 + * + * @param page 分页参数 + * @param bsEnergyHistoryRec 查询参数 + * @return List + */ + List selectBsEnergyHistoryRecPage(IPage page, BsEnergyHistoryRecVO bsEnergyHistoryRec); + + + /** + * 自定义查询 + * + * @param bsEnergyHistoryRec 查询参数 + * @return List + */ + List selectBsEnergyHistoryRec(BsEnergyHistoryRecVO bsEnergyHistoryRec); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyQuotaMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyQuotaMapper.java index 7811efde..c51b47a3 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyQuotaMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyQuotaMapper.java @@ -27,7 +27,7 @@ package org.springblade.desk.energy.mapper; import org.springblade.desk.energy.pojo.entity.BsEnergyQuotaEntity; import org.springblade.desk.energy.pojo.vo.BsEnergyQuotaVO; -import org.springblade.desk.energy.excel.BsEnergyQuotaExcel; +import org.springblade.desk.energy.excel.BsEnergyQuotaWaterExcel; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -58,6 +58,6 @@ public interface BsEnergyQuotaMapper extends BaseMapper { * @param queryWrapper 查询条件 * @return List */ - List exportBsEnergyQuota(@Param("ew") Wrapper queryWrapper); + List exportBsEnergyQuota(@Param("ew") Wrapper queryWrapper); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyTargetMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyTargetMapper.java index 16979f0f..d26c8c08 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyTargetMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyTargetMapper.java @@ -27,12 +27,13 @@ package org.springblade.desk.energy.mapper; import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity; import org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO; -import org.springblade.desk.energy.excel.BsEnergyTargetExcel; +import org.springblade.desk.energy.excel.BsEnergyTargetWaterExcel; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** * 能耗目标表 Mapper 接口 @@ -58,6 +59,13 @@ public interface BsEnergyTargetMapper extends BaseMapper { * @param queryWrapper 查询条件 * @return List */ - List exportBsEnergyTarget(@Param("ew") Wrapper queryWrapper); + List exportBsEnergyTarget(@Param("ew") Wrapper queryWrapper); + + /** + * 根据条件查询列表 + * @param conMap + * @return + */ + List listByMap(Map conMap); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyCoreUseMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyCoreUseMapper.xml new file mode 100644 index 00000000..f16fdaf7 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyCoreUseMapper.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyHistoryRecMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyHistoryRecMapper.xml new file mode 100644 index 00000000..48450a00 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyHistoryRecMapper.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyMonitorMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyMonitorMapper.xml index 523b19fe..dddc63f0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyMonitorMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyMonitorMapper.xml @@ -31,7 +31,13 @@ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyQuotaMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyQuotaMapper.xml index f7a0db40..f17b68c0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyQuotaMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyQuotaMapper.xml @@ -24,11 +24,29 @@ - SELECT * FROM BS_ENERGY_QUOTA ${ew.customSqlSegment} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyTargetMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyTargetMapper.xml index 8362d7a0..3ef61635 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyTargetMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyTargetMapper.xml @@ -7,7 +7,7 @@ - + @@ -16,16 +16,54 @@ + - SELECT * FROM BS_ENERGY_TARGET ${ew.customSqlSegment} + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/PeakFlatValleyMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/PeakFlatValleyMapper.xml index c4b86bff..94dad978 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/PeakFlatValleyMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/PeakFlatValleyMapper.xml @@ -31,7 +31,13 @@ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyCoreUseEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyCoreUseEntity.java new file mode 100644 index 00000000..8287efa6 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyCoreUseEntity.java @@ -0,0 +1,110 @@ +package org.springblade.desk.energy.pojo.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +import java.io.Serial; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 水电能耗记录表 实体类 + * + * @author BladeX + * @since 2026-04-16 + */ +@Data +@TableName("BS_ENERGY_CORE_USE") +@Schema(description = "BsEnergyCoreUse对象") +@EqualsAndHashCode(callSuper = true) +public class BsEnergyCoreUseEntity extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 类型 1-用水 2-用电 + */ + @Schema(description = "类型 1-用水 2-用电") + private String type; + /** + * 作业中心ID + */ + @Schema(description = "作业中心ID") + private String workCenterId; + /** + * 作业中心名称 + */ + @Schema(description = "作业中心名称") + private String workCenterName; + /** + * 开始时间 + */ + @Schema(description = "开始时间") + private Date startTime; + + /** + * 结束时间 + */ + @Schema(description = "结束时间") + private Date endTime; + /** + * 加工面积 + */ + @Schema(description = "加工面积") + private BigDecimal workArea; + /** + * 定额单位面积自来水用水量 + */ + @Schema(description = "定额单位面积自来水用水量") + private BigDecimal quoTapWaterNum; + /** + * 实际单位面积自来水用水量 + */ + @Schema(description = "实际单位面积自来水用水量") + private BigDecimal realTapWaterNum; + /** + * 实际总自来水用水量 + */ + @Schema(description = "实际总自来水用水量") + private BigDecimal totalTapWaterNum; + /** + * 定额单位面积纯水用水量 + */ + @Schema(description = "定额单位面积纯水用水量") + private BigDecimal quoPureWaterNum; + /** + * 实际单位面积纯水用水量 + */ + @Schema(description = "实际单位面积纯水用水量") + private BigDecimal realPureWaterNum; + /** + * 实际总纯水用水量 + */ + @Schema(description = "实际总纯水用水量") + private BigDecimal totalPureWaterNum; + /** + * 定额单位面积用电量 + */ + @Schema(description = "定额单位面积用电量") + private BigDecimal quoElectricNum; + /** + * 实际单位面积用电量 + */ + @Schema(description = "实际单位面积用电量") + private BigDecimal realElectricNum; + /** + * 实际总用电量 + */ + @Schema(description = "实际总用电量") + private BigDecimal totalElectricNum; + /** + * 是否大屏展示 + */ + @Schema(description = "是否大屏展示") + private Integer isJumbotron; + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyHistoryRecEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyHistoryRecEntity.java new file mode 100644 index 00000000..90421c89 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyHistoryRecEntity.java @@ -0,0 +1,54 @@ +package org.springblade.desk.energy.pojo.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * iot水电能耗历史记录表 实体类 + * + * @author BladeX + * @since 2026-04-17 + */ +@Data +@TableName("BS_ENERGY_HISTORY_REC") +@Schema(description = "BsEnergyHistoryRec对象") +@EqualsAndHashCode(callSuper = true) +public class BsEnergyHistoryRecEntity extends BaseEntity { + + /** + * 设备ID + */ + @Schema(description = "设备ID") + private Long deviceId; + /** + * 设备编码 + */ + @Schema(description = "设备编码") + private String deviceCode; + /** + * 自来水量读取值 + */ + @Schema(description = "自来水量读取值") + private BigDecimal readTap; + /** + * 纯水量读取值 + */ + @Schema(description = "纯水量读取值") + private BigDecimal readPure; + /** + * 电量读取值 + */ + @Schema(description = "电量读取值") + private BigDecimal readElectric; + /** + * iot上传时间 + */ + @Schema(description = "iot上传时间") + private Date uploadTime; +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyMonitorEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyMonitorEntity.java index 8309665e..f047d30e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyMonitorEntity.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyMonitorEntity.java @@ -31,6 +31,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.util.Date; import java.math.BigDecimal; import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.tenant.mp.TenantEntity; import java.io.Serial; @@ -44,7 +45,7 @@ import java.io.Serial; @TableName("BS_ENERGY_MONITOR") @Schema(description = "BsEnergyMonitor对象") @EqualsAndHashCode(callSuper = true) -public class BsEnergyMonitorEntity extends TenantEntity { +public class BsEnergyMonitorEntity extends BaseEntity { @Serial private static final long serialVersionUID = 1L; @@ -53,7 +54,7 @@ public class BsEnergyMonitorEntity extends TenantEntity { * 月份 */ @Schema(description = "月份") - private Date month; + private String month; /** * 上月用水 */ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyQuotaEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyQuotaEntity.java index a130b1f2..1de0709c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyQuotaEntity.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyQuotaEntity.java @@ -25,6 +25,7 @@ */ package org.springblade.desk.energy.pojo.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -32,6 +33,7 @@ import lombok.EqualsAndHashCode; import org.springblade.core.mp.base.BaseEntity; import java.io.Serial; +import java.math.BigDecimal; import java.util.Date; /** @@ -58,7 +60,7 @@ public class BsEnergyQuotaEntity extends BaseEntity { * 作业中心ID */ @Schema(description = "作业中心ID") - private Long workCenterId; + private String workCenterId; /** * 作业中心名称 */ @@ -78,21 +80,22 @@ public class BsEnergyQuotaEntity extends BaseEntity { * 日期 */ @Schema(description = "日期") - private Date date; + @TableField("\"DATE\"") + private String date; /** * 自来水用水量 */ @Schema(description = "自来水用水量") - private Long tapWaterNum; + private BigDecimal tapWaterNum; /** * 纯水用水量 */ @Schema(description = "纯水用水量") - private Long pureWaterNum; + private BigDecimal pureWaterNum; /** * 用电量 */ @Schema(description = "用电量") - private Long electricNum; + private BigDecimal electricNum; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyTargetEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyTargetEntity.java index 8f3462c1..917d242f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyTargetEntity.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsEnergyTargetEntity.java @@ -59,17 +59,17 @@ public class BsEnergyTargetEntity extends BaseEntity { * 月份 */ @Schema(description = "月份") - private Date month; + private String month; /** * 年 */ @Schema(description = "年") - private Date year; - /** - * 日期 - */ - @Schema(description = "日期") - private String date; + private String year; +// /** +// * 日期 +// */ +// @Schema(description = "日期") +// private String date; /** * 目标 */ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsPeakFlatValleyEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsPeakFlatValleyEntity.java index 05c4adf4..74045189 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsPeakFlatValleyEntity.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsPeakFlatValleyEntity.java @@ -53,7 +53,7 @@ public class BsPeakFlatValleyEntity extends BaseEntity { * 月份 */ @Schema(description = "月份") - private Date month; + private String month; /** * 尖时一开始时间 */ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/vo/BsEnergyCoreUseVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/vo/BsEnergyCoreUseVO.java new file mode 100644 index 00000000..d8fd97c4 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/vo/BsEnergyCoreUseVO.java @@ -0,0 +1,41 @@ +package org.springblade.desk.energy.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.desk.energy.pojo.entity.BsEnergyCoreUseEntity; + +import java.io.Serial; + +/** + * 水电能耗记录表 视图实体类 + * + * @author BladeX + * @since 2026-04-16 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class BsEnergyCoreUseVO extends BsEnergyCoreUseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 开始日期 + */ + @Schema(description = "开始日期") + private String startDate; + + /** + * 结束日期 + */ + @Schema(description = "结束日期") + private String endDate; + + /** + * 日期 + */ + @Schema(description = "日期") + private String date; + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/vo/BsEnergyHistoryRecVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/vo/BsEnergyHistoryRecVO.java new file mode 100644 index 00000000..c8ae2218 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/vo/BsEnergyHistoryRecVO.java @@ -0,0 +1,38 @@ +package org.springblade.desk.energy.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.desk.energy.pojo.entity.BsEnergyHistoryRecEntity; + +import java.io.Serial; + +/** + * iot水电能耗历史记录表 视图实体类 + * + * @author BladeX + * @since 2026-04-16 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class BsEnergyHistoryRecVO extends BsEnergyHistoryRecEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 设备名称 + */ + @Schema(description = "设备名称") + private String deviceName; + /** + * 设备型号 + */ + @Schema(description = "设备型号") + private String macSpec; + /** + * 服役状态 + */ + @Schema(description = "服役状态") + private Long used; +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyCoreUseService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyCoreUseService.java new file mode 100644 index 00000000..19b577e3 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyCoreUseService.java @@ -0,0 +1,36 @@ +package org.springblade.desk.energy.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.mp.base.BaseService; +import org.springblade.desk.energy.pojo.entity.BsEnergyCoreUseEntity; +import org.springblade.desk.energy.pojo.vo.BsEnergyCoreUseVO; + +/** + * 水电能耗记录表 服务类 + * + * @author BladeX + * @since 2026-04-17 + */ +public interface IBsEnergyCoreUseService extends BaseService { + + /** + * 自定义分页 + * @param page 分页参数 + * @param bsEnergyCoreUse 查询参数 + * @return IPage + */ + IPage selectBsEnergyCoreUsePage(IPage page, BsEnergyCoreUseVO bsEnergyCoreUse); + + /** + * 更新用水用电记录 + * @param type 类型 + */ + void updateUsed(String type); + + /** + * 保存iot用水用电历史记录 + */ + void saveHistoryRec(); + + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyHistoryRecService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyHistoryRecService.java new file mode 100644 index 00000000..55559ae1 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyHistoryRecService.java @@ -0,0 +1,33 @@ +package org.springblade.desk.energy.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.mp.base.BaseService; +import org.springblade.desk.energy.pojo.entity.BsEnergyHistoryRecEntity; +import org.springblade.desk.energy.pojo.vo.BsEnergyHistoryRecVO; + +import java.util.List; + +/** + * 水电能耗记录表 服务类 + * + * @author BladeX + * @since 2026-04-17 + */ +public interface IBsEnergyHistoryRecService extends BaseService { + + /** + * 自定义分页 + * + * @param page 分页参数 + * @param bsEnergyHistoryRec 查询参数 + * @return IPage + */ + IPage selectBsEnergyHistoryRecPage(IPage page, BsEnergyHistoryRecVO bsEnergyHistoryRec); + + /** + * 自定义查询 + * @param bsEnergyHistoryRec 查询参数 + * @return List + */ + List selectBsEnergyHistoryRec(BsEnergyHistoryRecVO bsEnergyHistoryRec); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyQuotaService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyQuotaService.java index 58a33667..931d5db2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyQuotaService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyQuotaService.java @@ -28,7 +28,7 @@ package org.springblade.desk.energy.service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import org.springblade.desk.energy.pojo.entity.BsEnergyQuotaEntity; import org.springblade.desk.energy.pojo.vo.BsEnergyQuotaVO; -import org.springblade.desk.energy.excel.BsEnergyQuotaExcel; +import org.springblade.desk.energy.excel.BsEnergyQuotaWaterExcel; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; import java.util.List; @@ -56,6 +56,6 @@ public interface IBsEnergyQuotaService extends BaseService * @param queryWrapper 查询条件 * @return List */ - List exportBsEnergyQuota(Wrapper queryWrapper); + List exportBsEnergyQuota(Wrapper queryWrapper); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyTargetService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyTargetService.java index 17a70a92..8247f41b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyTargetService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyTargetService.java @@ -28,12 +28,13 @@ package org.springblade.desk.energy.service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity; import org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO; -import org.springblade.desk.energy.excel.BsEnergyTargetExcel; +import org.springblade.desk.energy.excel.BsEnergyTargetWaterExcel; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; import java.math.BigDecimal; import java.util.List; +import java.util.Map; /** * 能耗目标表 服务类 @@ -42,35 +43,45 @@ import java.util.List; * @since 2026-03-02 */ public interface IBsEnergyTargetService extends BaseService { - /** - * 自定义分页 - * - * @param page 分页参数 - * @param bsEnergyTarget 查询参数 - * @return IPage - */ - IPage selectBsEnergyTargetPage(IPage page, BsEnergyTargetVO bsEnergyTarget); + /** + * 自定义分页 + * + * @param page 分页参数 + * @param bsEnergyTarget 查询参数 + * @return IPage + */ + IPage selectBsEnergyTargetPage(IPage page, BsEnergyTargetVO bsEnergyTarget); - /** - * 导出数据 - * - * @param queryWrapper 查询条件 - * @return List - */ - List exportBsEnergyTarget(Wrapper queryWrapper); + /** + * 导出数据 + * + * @param queryWrapper 查询条件 + * @return List + */ + List exportBsEnergyTarget(Wrapper queryWrapper); - /** - * 根据月份获取用水目标 - * @param month 月份 - * @return 用水目标 - */ - BigDecimal getWaterTargetByMonth(String month); + /** + * 根据月份获取用水目标 + * + * @param month 月份 + * @return 用水目标 + */ + BigDecimal getWaterTargetByMonth(String month); - /** - * 根据月份获取用电目标 - * @param month 月份 - * @return 用电目标 - */ - BigDecimal getElectricTargetByMonth(String month); + /** + * 根据月份获取用电目标 + * + * @param month 月份 + * @return 用电目标 + */ + BigDecimal getElectricTargetByMonth(String month); + + /** + * 根据条件查询列表 + * + * @param conMap + * @return + */ + List listByMap(Map conMap); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyCoreUseServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyCoreUseServiceImpl.java new file mode 100644 index 00000000..8b36a5a4 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyCoreUseServiceImpl.java @@ -0,0 +1,287 @@ +package org.springblade.desk.energy.service.impl; + +import com.alibaba.excel.util.StringUtils; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import jakarta.annotation.Resource; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.desk.device.pojo.entity.EquipmentEntity; +import org.springblade.desk.device.service.IEquipmentService; +import org.springblade.desk.energy.mapper.BsEnergyCoreUseMapper; +import org.springblade.desk.energy.pojo.entity.BsEnergyCoreUseEntity; +import org.springblade.desk.energy.pojo.entity.BsEnergyHistoryRecEntity; +import org.springblade.desk.energy.pojo.entity.BsEnergyQuotaEntity; +import org.springblade.desk.energy.pojo.vo.BsEnergyCoreUseVO; +import org.springblade.desk.energy.pojo.vo.BsEnergyHistoryRecVO; +import org.springblade.desk.energy.service.IBsEnergyCoreUseService; +import org.springblade.desk.energy.service.IBsEnergyHistoryRecService; +import org.springblade.desk.energy.service.IBsEnergyQuotaService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.web.client.RestTemplate; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + + +/** + * 水电能耗记录表 服务实现类 + * + * @author BladeX + * @since 2026-04-17 + */ +@Service +public class BsEnergyCoreUseServiceImpl extends BaseServiceImpl implements IBsEnergyCoreUseService { + + @Resource + private IBsEnergyQuotaService bsEnergyQuotaService; + @Resource + private IBsEnergyHistoryRecService bsEnergyHistoryRecService; + @Resource + private IEquipmentService equipmentService; + @Resource + private RestTemplate httpClientTemplate; + + private String timestamp = "timestamp", waterOne = "Water1", waterTwo = "Water2", waterThree = "Water3", waterFour = "Water4", readElectric = "ElectricPower", readElectric2 = "TotalElectricEnergyOfBX2", readElectric3 = "TotalElectricEnergyOfBX3"; + + @Value("${request.iotNew.url}") + private String iotNewUrl; + + @Value("${request.iot.orgId}") + private String orgId; + + @Value("${request.iot.systemId}") + private String systemId; + + @Override + public IPage selectBsEnergyCoreUsePage(IPage page, BsEnergyCoreUseVO bsEnergyCoreUse) { + return page.setRecords(baseMapper.selectBsEnergyCoreUsePage(page, bsEnergyCoreUse)); + } + + @Override + public void updateUsed(String type) { + List bsEnergyQuotaEntitys = bsEnergyQuotaService.list(new LambdaQueryWrapper() + .eq(BsEnergyQuotaEntity::getType, type)); + if (CollectionUtils.isEmpty(bsEnergyQuotaEntitys)) { + return; + } + // 时间处理 + Date date = new Date(); + LocalDate today = LocalDate.now(); + LocalDate yesterday = today.minusDays(1); + LocalDateTime minTime = LocalDateTime.of(yesterday, LocalTime.MIN); + LocalDateTime maxTime = LocalDateTime.of(yesterday, LocalTime.MAX); + Date startTime = Date.from(minTime.atZone(ZoneId.systemDefault()).toInstant()); + Date endTime = Date.from(maxTime.atZone(ZoneId.systemDefault()).toInstant()); + for (BsEnergyQuotaEntity bsEnergyQuotaEntity : bsEnergyQuotaEntitys) { + Long equipmentId = bsEnergyQuotaEntity.getEquipmentId(); + EquipmentEntity equipment = equipmentService.getById(equipmentId); + if (equipment == null) { + continue; + } + BsEnergyHistoryRecVO params = new BsEnergyHistoryRecVO(); + params.setCreateTime(startTime); + params.setDeviceCode(equipment.getDeviceCode()); + List hrList = bsEnergyHistoryRecService.selectBsEnergyHistoryRec(params); + if (!CollectionUtils.isEmpty(hrList)) { + // 每日用自来水最大最小值 + BigDecimal maxTa = hrList.get(hrList.size() - 1).getReadTap(); + BigDecimal minTa = hrList.get(0).getReadTap(); + // 每日用纯水最大最小值 + BigDecimal maxPu = hrList.get(hrList.size() - 1).getReadPure(); + BigDecimal minPu = hrList.get(0).getReadPure(); + // 每日用电最大最小值 + BigDecimal maxEl = hrList.get(hrList.size() - 1).getReadElectric(); + BigDecimal minEl = hrList.get(0).getReadElectric(); + this.createWorkCenterUse(bsEnergyQuotaEntity, maxTa.subtract(minTa), maxPu.subtract(minPu), maxEl.subtract(minEl), date, startTime, endTime, type); + } + } + } + + @Override + public void saveHistoryRec() { + List equipments = equipmentService.list(new LambdaQueryWrapper().eq(EquipmentEntity::getIsDeleted, 0)); + LocalDateTime now = LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault()); + LocalDateTime lastHour = now.minusHours(1); + DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String startTime = lastHour.format(fmt); + String endTime = now.format(fmt); + List params = Arrays.asList("Water4", "Water3", "Water2", "Water1", "ElectricPower", "TotalElectricEnergyOfBX2", "TotalElectricEnergyOfBX2"); + BsEnergyHistoryRecEntity bsEnergyHistoryRec; + JSONObject jsonObject; + for (EquipmentEntity equipment : equipments) { + List eneUsed; + String deviceCode = equipment.getDeviceCode(); + try { + eneUsed = this.getEneUsed(deviceCode, params, startTime, endTime); + } catch (Exception e) { + log.error("设备:" + deviceCode + "查询用水用电量接口调用失败!\n" + e.getMessage()); + continue; + } + if (CollectionUtils.isEmpty(eneUsed)) { + continue; + } + jsonObject = eneUsed.get(eneUsed.size() - 1); + bsEnergyHistoryRec = new BsEnergyHistoryRecEntity(); + bsEnergyHistoryRec.setDeviceId(equipment.getId()); + bsEnergyHistoryRec.setDeviceCode(equipment.getDeviceCode()); + // 读取自来水用量(如果存在自来水2则计算累加值) + if (jsonObject.get(waterThree) != null) { + bsEnergyHistoryRec.setReadTap(new BigDecimal(this.totalRead(jsonObject, waterOne, waterThree))); + } else { + bsEnergyHistoryRec.setReadTap(new BigDecimal(this.totalRead(jsonObject, waterOne))); + } + // 读取纯水用量(如果存在纯水2则计算累加值) + if (jsonObject.get(waterFour) != null) { + bsEnergyHistoryRec.setReadPure(new BigDecimal(this.totalRead(jsonObject, waterTwo, waterFour))); + } else { + bsEnergyHistoryRec.setReadPure(new BigDecimal(this.totalRead(jsonObject, waterTwo))); + } + // 读取电用量 + bsEnergyHistoryRec.setReadElectric(new BigDecimal(this.totalRead(jsonObject, readElectric, readElectric2, readElectric3))); + // 读取上传时间 + bsEnergyHistoryRec.setUploadTime(jsonObject.getDate(timestamp)); + BsEnergyHistoryRecEntity last = bsEnergyHistoryRecService.getOne(new LambdaQueryWrapper().eq(BsEnergyHistoryRecEntity::getDeviceCode, deviceCode).orderByDesc(BsEnergyHistoryRecEntity::getCreateTime).last("AND ROWNUM = 1")); + if (last != null && last.getId() != null) { + BigDecimal readElectric = last.getReadElectric(); // 电 + BigDecimal readPure = last.getReadPure(); // 纯水 + BigDecimal readTap = last.getReadTap();// 自来水 + // 如果最新的自来水数据为空或者小于上一笔数据,直接改为上一笔数据 + if (!(bsEnergyHistoryRec.getReadTap() != null && bsEnergyHistoryRec.getReadTap().compareTo(readTap) > 0)) { + bsEnergyHistoryRec.setReadTap(readTap); + } + // 如果最新的纯水数据为空或者小于上一笔数据,直接改为上一笔数据 + if (!(bsEnergyHistoryRec.getReadPure() != null && bsEnergyHistoryRec.getReadPure().compareTo(readPure) > 0)) { + bsEnergyHistoryRec.setReadPure(readPure); + } + // 如果最新的电数据为空或者小于上一笔数据,直接改为上一笔数据 + if (!(bsEnergyHistoryRec.getReadElectric() != null && bsEnergyHistoryRec.getReadElectric().compareTo(readElectric) > 0)) { + bsEnergyHistoryRec.setReadElectric(readElectric); + } + } + bsEnergyHistoryRecService.save(bsEnergyHistoryRec); + } + } + + /** + * 创建作业中心用水用电记录 + * + * @param bsEnergyQuota + * @param useTa + * @param usePu + * @param useEl + * @param date + * @param startTime + * @param endTime + * @param type + */ + private void createWorkCenterUse(BsEnergyQuotaEntity bsEnergyQuota, BigDecimal useTa, BigDecimal usePu, BigDecimal useEl, Date date, Date startTime, Date endTime, String type) { + String workCenterId = bsEnergyQuota.getWorkCenterId(); + if (StringUtils.isEmpty(workCenterId)) { + return; + } + BigDecimal wcArea = new BigDecimal("0"); + // TODO 作业面积 + BigDecimal quotaEl = bsEnergyQuota.getElectricNum(); // 定额单位面积用电量 + BigDecimal tapWater = bsEnergyQuota.getTapWaterNum(); // 定额自来水单位用量 + BigDecimal pureWater = bsEnergyQuota.getPureWaterNum(); // 定额纯水单位用量 + + BigDecimal realUnitTa = new BigDecimal("0"); // 实际自来水单位用量 + BigDecimal realUnitPu = new BigDecimal("0"); // 实际纯水单位用量 + BigDecimal realUnitEl = new BigDecimal("0"); // 实际单位面积用电量 + + BsEnergyCoreUseEntity bsEnergyCoreUse = new BsEnergyCoreUseEntity(); + if (!(wcArea.compareTo(BigDecimal.ZERO) == 0)) { + realUnitTa = useTa.divide(wcArea, 6, RoundingMode.HALF_UP); + realUnitPu = usePu.divide(wcArea, 6, RoundingMode.HALF_UP); + realUnitEl = useEl.divide(wcArea, 6, RoundingMode.HALF_UP); + } + bsEnergyCoreUse.setType(type); + bsEnergyCoreUse.setWorkCenterId(bsEnergyQuota.getWorkCenterId()); + bsEnergyCoreUse.setWorkCenterName(bsEnergyQuota.getWorkCenterName()); + bsEnergyCoreUse.setStartTime(startTime); + bsEnergyCoreUse.setEndTime(endTime); + bsEnergyCoreUse.setWorkArea(wcArea); + bsEnergyCoreUse.setQuoTapWaterNum(tapWater); + bsEnergyCoreUse.setQuoPureWaterNum(pureWater); + bsEnergyCoreUse.setQuoElectricNum(quotaEl); + bsEnergyCoreUse.setRealTapWaterNum(realUnitTa); + bsEnergyCoreUse.setRealPureWaterNum(realUnitPu); + bsEnergyCoreUse.setRealElectricNum(realUnitEl); + bsEnergyCoreUse.setTotalTapWaterNum(useTa); + bsEnergyCoreUse.setTotalPureWaterNum(usePu); + bsEnergyCoreUse.setTotalElectricNum(useEl); + bsEnergyCoreUse.setIsJumbotron(0); + this.save(bsEnergyCoreUse); + } + + /** + * 获取iot用水用电记录 + * + * @param deviceCode + * @param params + * @param startTime + * @param endTime + * @return + */ + private List getEneUsed(String deviceCode, List params, String startTime, String endTime) { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + JSONObject object = new JSONObject(); + object.put("orgId", orgId); + object.put("systemId", systemId); + object.put("params", params); // 设备对应的参数信息 + object.put("deviceId", deviceCode); // 设备编码 + object.put("startTime", startTime); // 开始时间(入炉) + object.put("endTime", endTime); // 结束时间(出炉) + HttpEntity entity = new HttpEntity<>(object, headers); + ResponseEntity responseEntity = null; + try { + responseEntity = httpClientTemplate.postForEntity(iotNewUrl + "/deviceForZhgd/deviceDataHistoryByParams", entity, JSONObject.class); + JSONObject result = responseEntity.getBody(); + if (result != null && result.getInteger("code").equals(0)) { + List jsonList = JSONArray.parseArray(result.getJSONArray("result").toJSONString(), JSONObject.class); + if (jsonList != null && jsonList.size() > 0) { + return jsonList; + } + } else { + log.error("获取用水用电量、烧结解绑获取数据接口调用失败!" + result.getString("message") + "设备编码" + deviceCode + "参数" + object); + } + } catch (Exception e) { + log.error("获取用水用电量、烧结解绑获取数据接口调用失败!" + e.getMessage() + "设备编码" + deviceCode + "参数" + object); + } + return null; + } + + /** + * 合计读取值 + * + * @param jsonObject + * @param args + * @return + */ + public Double totalRead(JSONObject jsonObject, String... args) { + Double total = 0d; + String waStr; + for (String s : args) { + waStr = jsonObject.getString(s); + total += org.apache.commons.lang3.StringUtils.isNotBlank(waStr) ? Double.valueOf(waStr) : 0; + } + return total; + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyHistoryRecServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyHistoryRecServiceImpl.java new file mode 100644 index 00000000..a33f2611 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyHistoryRecServiceImpl.java @@ -0,0 +1,31 @@ +package org.springblade.desk.energy.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.desk.energy.mapper.BsEnergyHistoryRecMapper; +import org.springblade.desk.energy.pojo.entity.BsEnergyHistoryRecEntity; +import org.springblade.desk.energy.pojo.vo.BsEnergyHistoryRecVO; +import org.springblade.desk.energy.service.IBsEnergyHistoryRecService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * iot水电能耗历史记录表 服务实现类 + * + * @author BladeX + * @since 2026-04-17 + */ +@Service +public class BsEnergyHistoryRecServiceImpl extends BaseServiceImpl implements IBsEnergyHistoryRecService { + + @Override + public IPage selectBsEnergyHistoryRecPage(IPage page, BsEnergyHistoryRecVO bsEnergyHistoryRec) { + return page.setRecords(baseMapper.selectBsEnergyHistoryRecPage(page, bsEnergyHistoryRec)); + } + + @Override + public List selectBsEnergyHistoryRec(BsEnergyHistoryRecVO bsEnergyHistoryRec) { + return baseMapper.selectBsEnergyHistoryRec(bsEnergyHistoryRec); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyQuotaServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyQuotaServiceImpl.java index 91d63c1c..5723c5bc 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyQuotaServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyQuotaServiceImpl.java @@ -27,7 +27,7 @@ package org.springblade.desk.energy.service.impl; import org.springblade.desk.energy.pojo.entity.BsEnergyQuotaEntity; import org.springblade.desk.energy.pojo.vo.BsEnergyQuotaVO; -import org.springblade.desk.energy.excel.BsEnergyQuotaExcel; +import org.springblade.desk.energy.excel.BsEnergyQuotaWaterExcel; import org.springblade.desk.energy.mapper.BsEnergyQuotaMapper; import org.springblade.desk.energy.service.IBsEnergyQuotaService; import org.springframework.stereotype.Service; @@ -52,8 +52,8 @@ public class BsEnergyQuotaServiceImpl extends BaseServiceImpl exportBsEnergyQuota(Wrapper queryWrapper) { - List bsEnergyQuotaList = baseMapper.exportBsEnergyQuota(queryWrapper); + public List exportBsEnergyQuota(Wrapper queryWrapper) { + List bsEnergyQuotaList = baseMapper.exportBsEnergyQuota(queryWrapper); //bsEnergyQuotaList.forEach(bsEnergyQuota -> { // bsEnergyQuota.setTypeName(DictCache.getValue(DictEnum.YES_NO, BsEnergyQuota.getType())); //}); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyTargetServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyTargetServiceImpl.java index 8f9cb33b..b65eb467 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyTargetServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyTargetServiceImpl.java @@ -29,7 +29,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.springblade.desk.dashboard.utils.DateUtils; import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity; import org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO; -import org.springblade.desk.energy.excel.BsEnergyTargetExcel; +import org.springblade.desk.energy.excel.BsEnergyTargetWaterExcel; import org.springblade.desk.energy.mapper.BsEnergyTargetMapper; import org.springblade.desk.energy.service.IBsEnergyTargetService; import org.springframework.stereotype.Service; @@ -39,6 +39,7 @@ import org.springblade.core.mp.base.BaseServiceImpl; import java.math.BigDecimal; import java.util.List; +import java.util.Map; /** * 能耗目标表 服务实现类 @@ -56,8 +57,8 @@ public class BsEnergyTargetServiceImpl extends BaseServiceImpl exportBsEnergyTarget(Wrapper queryWrapper) { - List bsEnergyTargetList = baseMapper.exportBsEnergyTarget(queryWrapper); + public List exportBsEnergyTarget(Wrapper queryWrapper) { + List bsEnergyTargetList = baseMapper.exportBsEnergyTarget(queryWrapper); //bsEnergyTargetList.forEach(bsEnergyTarget -> { // bsEnergyTarget.setTypeName(DictCache.getValue(DictEnum.YES_NO, BsEnergyTarget.getType())); //}); @@ -86,4 +87,9 @@ public class BsEnergyTargetServiceImpl extends BaseServiceImpl listByMap(Map conMap){ + return baseMapper.listByMap(conMap); + } } diff --git a/blade-service/blade-desk/src/main/resources/Excel/energy/用水定额.xls b/blade-service/blade-desk/src/main/resources/Excel/energy/用水定额.xls new file mode 100644 index 00000000..5c653d99 Binary files /dev/null and b/blade-service/blade-desk/src/main/resources/Excel/energy/用水定额.xls differ diff --git a/blade-service/blade-desk/src/main/resources/Excel/energy/用水目标.xls b/blade-service/blade-desk/src/main/resources/Excel/energy/用水目标.xls new file mode 100644 index 00000000..e5f6b845 Binary files /dev/null and b/blade-service/blade-desk/src/main/resources/Excel/energy/用水目标.xls differ diff --git a/blade-service/blade-desk/src/main/resources/Excel/energy/用电定额.xls b/blade-service/blade-desk/src/main/resources/Excel/energy/用电定额.xls new file mode 100644 index 00000000..3218b306 Binary files /dev/null and b/blade-service/blade-desk/src/main/resources/Excel/energy/用电定额.xls differ diff --git a/blade-service/blade-desk/src/main/resources/Excel/energy/用电目标.xls b/blade-service/blade-desk/src/main/resources/Excel/energy/用电目标.xls new file mode 100644 index 00000000..56513094 Binary files /dev/null and b/blade-service/blade-desk/src/main/resources/Excel/energy/用电目标.xls differ