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 ebbb8456d..99ec4406b 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 @@ -104,16 +104,16 @@ public class BsEnergyMonitorController extends BladeController { if (exist != null && !exist.getId().equals(bsEnergyMonitor.getId())) { return R.fail(bsEnergyMonitor.getMonth() + "月份能源监控表已存在"); } - if(bsEnergyMonitor.getLastWater() != null && bsEnergyMonitor.getLastOutput() != null){ + 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){ + 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){ + 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){ + if (bsEnergyMonitor.getCurrentElectric() != null && bsEnergyMonitor.getCurrentOutput() != null) { bsEnergyMonitor.setCurrentElectricRate(bsEnergyMonitor.getCurrentElectric().divide(bsEnergyMonitor.getCurrentOutput(), 6, RoundingMode.HALF_UP)); } } @@ -148,28 +148,17 @@ public class BsEnergyMonitorController extends BladeController { @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(); + YearMonth currentYearMonth = YearMonth.parse(bsEnergyMonitor.getMonth()); + String currentYear = String.valueOf(currentYearMonth.getYear()); + String month = String.format("%02d", currentYearMonth.getMonthValue()); + YearMonth lastYearMonth = currentYearMonth.minusYears(1); 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")); + BsEnergyMonitorEntity lastYearDetail = bsEnergyMonitorService.getOne(new LambdaQueryWrapper().eq(BsEnergyMonitorEntity::getMonth, lastYearMonth.toString())); + BsEnergyTargetEntity lastYearWaterTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper().eq(BsEnergyTargetEntity::getYear, lastYear).eq(BsEnergyTargetEntity::getMonth, month).eq(BsEnergyTargetEntity::getType, "1")); + BsEnergyTargetEntity currentYearWaterTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper().eq(BsEnergyTargetEntity::getYear, currentYear).eq(BsEnergyTargetEntity::getMonth, month).eq(BsEnergyTargetEntity::getType, "1")); + BsEnergyTargetEntity lastYearElectricTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper().eq(BsEnergyTargetEntity::getYear, lastYear).eq(BsEnergyTargetEntity::getMonth, month).eq(BsEnergyTargetEntity::getType, "2")); + BsEnergyTargetEntity currentYearElectricTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper().eq(BsEnergyTargetEntity::getYear, currentYear).eq(BsEnergyTargetEntity::getMonth, month).eq(BsEnergyTargetEntity::getType, "2")); if (lastYearDetail != null) { detail.setLastWater(lastYearDetail.getCurrentWater()); detail.setLastElectric(lastYearDetail.getCurrentElectric()); @@ -192,16 +181,4 @@ public class BsEnergyMonitorController extends BladeController { 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/BsEnergyTargetController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyTargetController.java index c46dcb003..5af06a124 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 @@ -26,9 +26,10 @@ package org.springblade.desk.energy.controller; import cn.hutool.core.bean.BeanUtil; +import com.alibaba.excel.util.StringUtils; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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; @@ -45,21 +46,19 @@ 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.basic.util.ExcelExtUtil; -import org.springblade.desk.energy.excel.BsEnergyTargetElectricExcel; -import org.springblade.desk.energy.excel.BsEnergyTargetWaterExcel; +import org.springblade.desk.energy.excel.BsEnergyTargetExcel; 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.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 能耗目标表 控制器 @@ -80,29 +79,16 @@ public class BsEnergyTargetController extends BladeController { */ @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); + public R detail(BsEnergyTargetVO bsEnergyTarget) { + if (StringUtils.isEmpty(bsEnergyTarget.getYear()) || StringUtils.isEmpty(bsEnergyTarget.getType())) { + return R.fail("参数错误"); + } + List list = bsEnergyTargetService.selectBsEnergyTargetList(bsEnergyTarget); + if (CollectionUtils.isNotEmpty(list)) { + return R.data(list.get(0)); + } else { + return R.fail("能耗目标详情查询失败"); + } } /** @@ -119,21 +105,23 @@ public class BsEnergyTargetController extends BladeController { * 能耗目标表 新增或修改 */ @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("该季度能耗目标已存在"); + @Operation(summary = "新增或修改", description = "传入bsEnergyTargetList") + public R submit(@Valid @RequestBody List bsEnergyTargetList) { + List years = bsEnergyTargetList.stream().map(BsEnergyTargetVO::getYear).collect(Collectors.toList()); + List existList = bsEnergyTargetService.list(new LambdaQueryWrapper().in(BsEnergyTargetEntity::getYear, years)); + Map existMap = existList.stream().collect(Collectors.toMap(e -> e.getYear() + "-" + e.getMonth() + "-" + e.getType(), BsEnergyTargetEntity::getId, (oldValue, newValue) -> oldValue)); + List saves = new ArrayList<>(); + for (BsEnergyTargetVO bsEnergyTargetVO : bsEnergyTargetList) { + List bsEnergyTargetEntities = bsEnergyTargetVO.parseEntities(); + for (BsEnergyTargetEntity bsEnergyTarget : bsEnergyTargetEntities) { + String key = bsEnergyTarget.getYear() + "-" + bsEnergyTarget.getMonth() + "-" + bsEnergyTarget.getType(); + if (existMap.containsKey(key)) { + bsEnergyTarget.setId(existMap.get(key)); + } } + saves.addAll(bsEnergyTargetEntities); } - return R.status(bsEnergyTargetService.saveOrUpdate(bsEnergyTarget)); + return R.status(bsEnergyTargetService.saveOrUpdateBatch(saves)); } /** @@ -152,130 +140,40 @@ public class BsEnergyTargetController extends BladeController { @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); - } + BsEnergyTargetVO vo = new BsEnergyTargetVO(); + vo.setYear((String) bsEnergyTarget.get("year")); + vo.setType((String) bsEnergyTarget.get("type")); + List list = bsEnergyTargetService.selectBsEnergyTargetList(vo); + List bsEnergyTargetExcels = BeanUtil.copyToList(list, BsEnergyTargetExcel.class); + ExcelUtil.export(response, "能耗目标" + DateUtil.time(), "能耗目标", bsEnergyTargetExcels, BsEnergyTargetExcel.class); } @GetMapping("/water-download-excel-template") @Operation(summary = "下载Excel模板", description = "") public ResponseEntity waterDownloadExcelTemplate() { return ExcelExtUtil.downloadXlsTemplate( - "Excel/energy/用水目标.xls", - "导入模版-用水目标.xls"); + "Excel/energy/能耗目标.xls", + "导入模版-能耗目标.xls"); } @GetMapping("/electric-download-excel-template") @Operation(summary = "下载Excel模板", description = "") public ResponseEntity electricDownloadExcelTemplate() { return ExcelExtUtil.downloadXlsTemplate( - "Excel/energy/用电目标.xls", - "导入模版-用电目标.xls"); + "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()); - } + return bsEnergyTargetService.importExcelData(file, "1"); } @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()); - } + return bsEnergyTargetService.importExcelData(file, "2"); } - - } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetElectricExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetElectricExcel.java deleted file mode 100644 index 38a727d1e..000000000 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetElectricExcel.java +++ /dev/null @@ -1,76 +0,0 @@ -/** - * 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.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 lombok.Data; - -import java.io.Serial; -import java.io.Serializable; -import java.math.BigDecimal; - - -/** - * 能耗目标表 Excel实体类 - * - * @author BladeX - * @since 2026-03-02 - */ -@Data -@ColumnWidth(25) -@HeadRowHeight(20) -@ContentRowHeight(18) -public class BsEnergyTargetElectricExcel implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 年份 - */ - @ColumnWidth(50) - @ExcelProperty("年份") - private String year; - - /** - * 季度 - */ - @ColumnWidth(50) - @ExcelProperty("季度") - private String quarter; - - /** - * 用电目标(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/BsEnergyTargetExcel.java similarity index 60% rename from blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetWaterExcel.java rename to blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetExcel.java index 19c4ebba8..993486b61 100644 --- 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/BsEnergyTargetExcel.java @@ -49,7 +49,7 @@ import java.io.Serial; @ColumnWidth(25) @HeadRowHeight(20) @ContentRowHeight(18) -public class BsEnergyTargetWaterExcel implements Serializable { +public class BsEnergyTargetExcel implements Serializable { @Serial private static final long serialVersionUID = 1L; @@ -57,15 +57,56 @@ public class BsEnergyTargetWaterExcel implements Serializable { /** * 年份 */ - @ColumnWidth(50) + @ColumnWidth(20) @ExcelProperty("年份") private String year; - /** - * 用水目标(L/d㎡) - */ - @ColumnWidth(50) - @ExcelProperty("用水目标(L/d㎡)") - private BigDecimal target; + @ColumnWidth(20) + @ExcelProperty("1月") + private BigDecimal m01Target; + + @ColumnWidth(20) + @ExcelProperty("2月") + private BigDecimal m02Target; + + @ColumnWidth(20) + @ExcelProperty("3月") + private BigDecimal m03Target; + + @ColumnWidth(20) + @ExcelProperty("4月") + private BigDecimal m04Target; + + @ColumnWidth(20) + @ExcelProperty("5月") + private BigDecimal m05Target; + + @ColumnWidth(20) + @ExcelProperty("6月") + private BigDecimal m06Target; + + @ColumnWidth(20) + @ExcelProperty("7月") + private BigDecimal m07Target; + + @ColumnWidth(20) + @ExcelProperty("8月") + private BigDecimal m08Target; + + @ColumnWidth(20) + @ExcelProperty("9月") + private BigDecimal m09Target; + + @ColumnWidth(20) + @ExcelProperty("10月") + private BigDecimal m10Target; + + @ColumnWidth(20) + @ExcelProperty("11月") + private BigDecimal m11Target; + + @ColumnWidth(20) + @ExcelProperty("12月") + private BigDecimal m12Target; } 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 d26c8c08c..792058043 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,11 +27,9 @@ 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.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; @@ -43,29 +41,29 @@ import java.util.Map; */ public interface BsEnergyTargetMapper extends BaseMapper { - /** - * 自定义分页 - * - * @param page 分页参数 - * @param bsEnergyTarget 查询参数 - * @return List - */ - List selectBsEnergyTargetPage(IPage page, BsEnergyTargetVO bsEnergyTarget); - + /** + * 自定义分页 + * + * @param page 分页参数 + * @param bsEnergyTarget 查询参数 + * @return List + */ + List selectBsEnergyTargetPage(IPage page, BsEnergyTargetVO bsEnergyTarget); - /** - * 获取导出数据 - * - * @param queryWrapper 查询条件 - * @return List - */ - List exportBsEnergyTarget(@Param("ew") Wrapper queryWrapper); + /** + * 自定义查询 + * + * @param bsEnergyTarget + * @return + */ + List selectBsEnergyTargetList(BsEnergyTargetVO bsEnergyTarget); - /** - * 根据条件查询列表 - * @param conMap - * @return - */ - List listByMap(Map conMap); + /** + * 根据条件查询列表 + * + * @param conMap + * @return + */ + List listByMap(Map conMap); } 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 88a1bd18c..99c757c6a 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 @@ -20,8 +20,24 @@ - + SELECT * FROM ( + SELECT + year, + TYPE, + MAX(CASE WHEN month = '01' THEN target ELSE NULL END ) AS m01Target, + MAX(CASE WHEN month = '02' THEN target ELSE NULL END ) AS m02Target, + MAX(CASE WHEN month = '03' THEN target ELSE NULL END ) AS m03Target, + MAX(CASE WHEN month = '04' THEN target ELSE NULL END ) AS m04Target, + MAX(CASE WHEN month = '05' THEN target ELSE NULL END ) AS m05Target, + MAX(CASE WHEN month = '06' THEN target ELSE NULL END ) AS m06Target, + MAX(CASE WHEN month = '07' THEN target ELSE NULL END ) AS m07Target, + MAX(CASE WHEN month = '08' THEN target ELSE NULL END ) AS m08Target, + MAX(CASE WHEN month = '09' THEN target ELSE NULL END ) AS m09Target, + MAX(CASE WHEN month = '10' THEN target ELSE NULL END ) AS m10Target, + MAX(CASE WHEN month = '11' THEN target ELSE NULL END ) AS m11Target, + MAX(CASE WHEN month = '12' THEN target ELSE NULL END ) AS m12Target + FROM BS_ENERGY_TARGET is_deleted = 0 @@ -30,13 +46,9 @@ and year = #{bsEnergyTarget.year} - - and quarter = #{bsEnergyTarget.quarter} - - - and status = #{bsEnergyTarget.status} - + GROUP BY year, type + ) ORDER BY ${bsEnergyTarget.orderByField} @@ -44,36 +56,40 @@ DESC - ORDER BY CREATE_TIME DESC + ORDER BY year DESC - - - + SELECT + year, + TYPE, + MAX(CASE WHEN month = '01' THEN target ELSE NULL END ) AS m01Target, + MAX(CASE WHEN month = '02' THEN target ELSE NULL END ) AS m02Target, + MAX(CASE WHEN month = '03' THEN target ELSE NULL END ) AS m03Target, + MAX(CASE WHEN month = '04' THEN target ELSE NULL END ) AS m04Target, + MAX(CASE WHEN month = '05' THEN target ELSE NULL END ) AS m05Target, + MAX(CASE WHEN month = '06' THEN target ELSE NULL END ) AS m06Target, + MAX(CASE WHEN month = '07' THEN target ELSE NULL END ) AS m07Target, + MAX(CASE WHEN month = '08' THEN target ELSE NULL END ) AS m08Target, + MAX(CASE WHEN month = '09' THEN target ELSE NULL END ) AS m09Target, + MAX(CASE WHEN month = '10' THEN target ELSE NULL END ) AS m10Target, + MAX(CASE WHEN month = '11' THEN target ELSE NULL END ) AS m11Target, + MAX(CASE WHEN month = '12' THEN target ELSE NULL END ) AS m12Target FROM BS_ENERGY_TARGET - - and YEAR = #{year} - - - and MONTH = #{month} - - - and QUARTER = #{quarter} - + is_deleted = 0 - and TYPE = #{type} + and type = #{type} - - and IS_DELETED = #{isDeleted} + + and year = #{year} + GROUP BY year, TYPE + ORDER BY year DESC diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/vo/BsEnergyTargetVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/vo/BsEnergyTargetVO.java index 39414a3b5..a1b7dd058 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/vo/BsEnergyTargetVO.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/vo/BsEnergyTargetVO.java @@ -25,10 +25,15 @@ */ package org.springblade.desk.energy.pojo.vo; +import io.swagger.v3.oas.annotations.media.Schema; import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity; import lombok.Data; import lombok.EqualsAndHashCode; + import java.io.Serial; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; /** * 能耗目标表 视图实体类 @@ -39,16 +44,102 @@ import java.io.Serial; @Data @EqualsAndHashCode(callSuper = true) public class BsEnergyTargetVO extends BsEnergyTargetEntity { - @Serial - private static final long serialVersionUID = 1L; - - /** - * 排序字段 - */ - private String orderByField; - /** - * true: 升序,false: 降序 - */ - private boolean isAsc; + @Serial + private static final long serialVersionUID = 1L; + + @Schema(description = "1月") + private BigDecimal m01Target; + + @Schema(description = "2月") + private BigDecimal m02Target; + + @Schema(description = "3月") + private BigDecimal m03Target; + + @Schema(description = "4月") + private BigDecimal m04Target; + + @Schema(description = "5月") + private BigDecimal m05Target; + + @Schema(description = "6月") + private BigDecimal m06Target; + + @Schema(description = "7月") + private BigDecimal m07Target; + + @Schema(description = "8月") + private BigDecimal m08Target; + + @Schema(description = "9月") + private BigDecimal m09Target; + + @Schema(description = "10月") + private BigDecimal m10Target; + + @Schema(description = "11月") + private BigDecimal m11Target; + + @Schema(description = "12月") + private BigDecimal m12Target; + + /** + * 排序字段 + */ + private String orderByField; + /** + * true: 升序,false: 降序 + */ + private boolean isAsc; + + public List parseEntities() { + List list = new ArrayList<>(); + if (m01Target != null) { + list.add(buildEntity("01", m01Target)); + } + if (m02Target != null) { + list.add(buildEntity("02", m02Target)); + } + if (m03Target != null) { + list.add(buildEntity("03", m03Target)); + } + if (m04Target != null) { + list.add(buildEntity("04", m04Target)); + } + if (m05Target != null) { + list.add(buildEntity("05", m05Target)); + } + if (m06Target != null) { + list.add(buildEntity("06", m06Target)); + } + if (m07Target != null) { + list.add(buildEntity("07", m07Target)); + } + if (m08Target != null) { + list.add(buildEntity("08", m08Target)); + } + if (m09Target != null) { + list.add(buildEntity("09", m09Target)); + } + if (m10Target != null) { + list.add(buildEntity("10", m10Target)); + } + if (m11Target != null) { + list.add(buildEntity("11", m11Target)); + } + if (m12Target != null) { + list.add(buildEntity("12", m12Target)); + } + return list; + } + + private BsEnergyTargetEntity buildEntity(String month, BigDecimal target) { + BsEnergyTargetEntity entity = new BsEnergyTargetEntity(); + entity.setYear(super.getYear()); + entity.setMonth(month); + entity.setTarget(target); + entity.setType(super.getType()); + return entity; + } } 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 8247f41b3..d46a192f7 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 @@ -25,16 +25,14 @@ */ package org.springblade.desk.energy.service; -import com.baomidou.mybatisplus.core.conditions.Wrapper; +import org.springblade.core.tool.api.R; import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity; import org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO; -import org.springblade.desk.energy.excel.BsEnergyTargetWaterExcel; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; +import org.springframework.web.multipart.MultipartFile; -import java.math.BigDecimal; import java.util.List; -import java.util.Map; /** * 能耗目标表 服务类 @@ -52,36 +50,20 @@ public interface IBsEnergyTargetService extends BaseService selectBsEnergyTargetPage(IPage page, BsEnergyTargetVO bsEnergyTarget); - - /** - * 导出数据 - * - * @param queryWrapper 查询条件 - * @return List - */ - List exportBsEnergyTarget(Wrapper queryWrapper); - /** - * 根据月份获取用水目标 + * 自定义查询 * - * @param month 月份 - * @return 用水目标 - */ - BigDecimal getWaterTargetByMonth(String month); - - /** - * 根据月份获取用电目标 - * - * @param month 月份 - * @return 用电目标 + * @param bsEnergyTarget + * @return */ - BigDecimal getElectricTargetByMonth(String month); + List selectBsEnergyTargetList(BsEnergyTargetVO bsEnergyTarget); /** - * 根据条件查询列表 + * 数据导入 * - * @param conMap + * @param file + * @param type * @return */ - List listByMap(Map conMap); + R importExcelData(MultipartFile file, String type); } 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 b65eb467c..fb0c600b7 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 @@ -26,20 +26,24 @@ package org.springblade.desk.energy.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.springblade.desk.dashboard.utils.DateUtils; +import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.tool.api.R; +import org.springblade.desk.basic.util.ExcelExtUtil; +import org.springblade.desk.energy.excel.BsEnergyTargetExcel; import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity; import org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO; -import org.springblade.desk.energy.excel.BsEnergyTargetWaterExcel; import org.springblade.desk.energy.mapper.BsEnergyTargetMapper; import org.springblade.desk.energy.service.IBsEnergyTargetService; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseServiceImpl; +import org.springframework.web.multipart.MultipartFile; -import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 能耗目标表 服务实现类 @@ -50,46 +54,49 @@ import java.util.Map; @Service public class BsEnergyTargetServiceImpl extends BaseServiceImpl implements IBsEnergyTargetService { - @Override - public IPage selectBsEnergyTargetPage(IPage page, BsEnergyTargetVO bsEnergyTarget) { - return page.setRecords(baseMapper.selectBsEnergyTargetPage(page, bsEnergyTarget)); - } + @Override + public IPage selectBsEnergyTargetPage(IPage page, BsEnergyTargetVO bsEnergyTarget) { + return page.setRecords(baseMapper.selectBsEnergyTargetPage(page, bsEnergyTarget)); + } + @Override + public List selectBsEnergyTargetList(BsEnergyTargetVO bsEnergyTarget) { + return baseMapper.selectBsEnergyTargetList(bsEnergyTarget); + } - @Override - public List exportBsEnergyTarget(Wrapper queryWrapper) { - List bsEnergyTargetList = baseMapper.exportBsEnergyTarget(queryWrapper); - //bsEnergyTargetList.forEach(bsEnergyTarget -> { - // bsEnergyTarget.setTypeName(DictCache.getValue(DictEnum.YES_NO, BsEnergyTarget.getType())); - //}); - return bsEnergyTargetList; - } + @Override + public R importExcelData(MultipartFile file, String type) { + R checkR = ExcelExtUtil.importExcelCheck(file); + if (checkR != null) { + return checkR; + } + List importList = ExcelUtil.read( + file, 0, 1, BsEnergyTargetExcel.class + ); + List voList = importList.stream() + .map(excel -> { + BsEnergyTargetVO vo = new BsEnergyTargetVO(); + BeanUtils.copyProperties(excel, vo); + vo.setType(type); + return vo; + }) + .collect(Collectors.toList()); + List years = importList.stream().map(BsEnergyTargetExcel::getYear).collect(Collectors.toList()); + List existList = this.list(new LambdaQueryWrapper().in(BsEnergyTargetEntity::getYear, years).eq(BsEnergyTargetEntity::getType, type)); + Map existMap = existList.stream().collect(Collectors.toMap(e -> e.getYear() + "-" + e.getMonth() + "-" + e.getType(), BsEnergyTargetEntity::getId, (oldValue, newValue) -> oldValue)); + List saves = new ArrayList<>(); + for (BsEnergyTargetVO bsEnergyTargetVO : voList) { + List bsEnergyTargetEntities = bsEnergyTargetVO.parseEntities(); + for (BsEnergyTargetEntity bsEnergyTarget : bsEnergyTargetEntities) { + String key = bsEnergyTarget.getYear() + "-" + bsEnergyTarget.getMonth() + "-" + bsEnergyTarget.getType(); + if (existMap.containsKey(key)) { + bsEnergyTarget.setId(existMap.get(key)); + } + } + saves.addAll(bsEnergyTargetEntities); + } + return R.status(this.saveOrUpdateBatch(saves)); + } - @Override - public BigDecimal getWaterTargetByMonth(String month) { - BsEnergyTargetEntity energyTargetEntity = this.getOne(new LambdaQueryWrapper() - .eq(BsEnergyTargetEntity::getMonth, month)); - if(energyTargetEntity != null){ - return energyTargetEntity.getTarget(); - } - return new BigDecimal(0); - } - @Override - public BigDecimal getElectricTargetByMonth(String month) { - String year = month.substring(0, 4); - int quarter = DateUtils.getQuarter(Integer.parseInt(month.substring(5, 7))); - BsEnergyTargetEntity energyTargetEntity = this.getOne(new LambdaQueryWrapper() - .eq(BsEnergyTargetEntity::getYear, year) - .eq(BsEnergyTargetEntity::getQuarter, quarter)); - if (energyTargetEntity != null) { - return energyTargetEntity.getTarget(); - } - return new BigDecimal(0); - } - - @Override - public List 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 deleted file mode 100644 index 56513094c..000000000 Binary files a/blade-service/blade-desk/src/main/resources/Excel/energy/用电目标.xls and /dev/null 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 similarity index 95% rename from blade-service/blade-desk/src/main/resources/Excel/energy/用水目标.xls rename to blade-service/blade-desk/src/main/resources/Excel/energy/能耗目标.xls index e5f6b8458..2b73e392d 100644 Binary files a/blade-service/blade-desk/src/main/resources/Excel/energy/用水目标.xls and b/blade-service/blade-desk/src/main/resources/Excel/energy/能耗目标.xls differ