能耗目标

liweidong
maxiangong 6 days ago
parent 577d6d066c
commit 95735bb65f
  1. 49
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyMonitorController.java
  2. 184
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyTargetController.java
  3. 76
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetElectricExcel.java
  4. 57
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetExcel.java
  5. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyTargetMapper.java
  6. 70
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyTargetMapper.xml
  7. 91
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/vo/BsEnergyTargetVO.java
  8. 38
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyTargetService.java
  9. 71
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyTargetServiceImpl.java
  10. BIN
      blade-service/blade-desk/src/main/resources/Excel/energy/用电目标.xls
  11. BIN
      blade-service/blade-desk/src/main/resources/Excel/energy/能耗目标.xls

@ -104,16 +104,16 @@ public class BsEnergyMonitorController extends BladeController {
if (exist != null && !exist.getId().equals(bsEnergyMonitor.getId())) { if (exist != null && !exist.getId().equals(bsEnergyMonitor.getId())) {
return R.fail(bsEnergyMonitor.getMonth() + "月份能源监控表已存在"); 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)); 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)); 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)); 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)); bsEnergyMonitor.setCurrentElectricRate(bsEnergyMonitor.getCurrentElectric().divide(bsEnergyMonitor.getCurrentOutput(), 6, RoundingMode.HALF_UP));
} }
} }
@ -148,28 +148,17 @@ public class BsEnergyMonitorController extends BladeController {
@GetMapping("/getLastYearDetail") @GetMapping("/getLastYearDetail")
@Operation(summary = "上年度详情", description = "传入bsEnergyMonitor") @Operation(summary = "上年度详情", description = "传入bsEnergyMonitor")
public R<BsEnergyMonitorEntity> getLastYearDetail(BsEnergyMonitorEntity bsEnergyMonitor) { public R<BsEnergyMonitorEntity> getLastYearDetail(BsEnergyMonitorEntity bsEnergyMonitor) {
YearMonth currentMonth = YearMonth.parse(bsEnergyMonitor.getMonth()); YearMonth currentYearMonth = YearMonth.parse(bsEnergyMonitor.getMonth());
String currentYear = String.valueOf(currentMonth.getYear()); String currentYear = String.valueOf(currentYearMonth.getYear());
YearMonth lastYearMonth = currentMonth.minusYears(1); String month = String.format("%02d", currentYearMonth.getMonthValue());
String lastMonth = lastYearMonth.toString(); YearMonth lastYearMonth = currentYearMonth.minusYears(1);
String lastYear = String.valueOf(lastYearMonth.getYear()); String lastYear = String.valueOf(lastYearMonth.getYear());
String quarter = this.getQuarter(currentMonth.getMonth().getValue());
BsEnergyMonitorEntity detail = new BsEnergyMonitorEntity(); BsEnergyMonitorEntity detail = new BsEnergyMonitorEntity();
BsEnergyMonitorEntity lastYearDetail = bsEnergyMonitorService.getOne(new LambdaQueryWrapper<BsEnergyMonitorEntity>().eq(BsEnergyMonitorEntity::getMonth, lastMonth)); BsEnergyMonitorEntity lastYearDetail = bsEnergyMonitorService.getOne(new LambdaQueryWrapper<BsEnergyMonitorEntity>().eq(BsEnergyMonitorEntity::getMonth, lastYearMonth.toString()));
BsEnergyTargetEntity lastYearWaterTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper<BsEnergyTargetEntity>(). BsEnergyTargetEntity lastYearWaterTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper<BsEnergyTargetEntity>().eq(BsEnergyTargetEntity::getYear, lastYear).eq(BsEnergyTargetEntity::getMonth, month).eq(BsEnergyTargetEntity::getType, "1"));
eq(BsEnergyTargetEntity::getYear, lastYear) BsEnergyTargetEntity currentYearWaterTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper<BsEnergyTargetEntity>().eq(BsEnergyTargetEntity::getYear, currentYear).eq(BsEnergyTargetEntity::getMonth, month).eq(BsEnergyTargetEntity::getType, "1"));
.eq(BsEnergyTargetEntity::getType, "1")); BsEnergyTargetEntity lastYearElectricTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper<BsEnergyTargetEntity>().eq(BsEnergyTargetEntity::getYear, lastYear).eq(BsEnergyTargetEntity::getMonth, month).eq(BsEnergyTargetEntity::getType, "2"));
BsEnergyTargetEntity currentYearWaterTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper<BsEnergyTargetEntity>(). BsEnergyTargetEntity currentYearElectricTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper<BsEnergyTargetEntity>().eq(BsEnergyTargetEntity::getYear, currentYear).eq(BsEnergyTargetEntity::getMonth, month).eq(BsEnergyTargetEntity::getType, "2"));
eq(BsEnergyTargetEntity::getYear, currentYear)
.eq(BsEnergyTargetEntity::getType, "1"));
BsEnergyTargetEntity lastYearElectricTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper<BsEnergyTargetEntity>().
eq(BsEnergyTargetEntity::getYear, lastYear)
.eq(BsEnergyTargetEntity::getQuarter, quarter)
.eq(BsEnergyTargetEntity::getType, "2"));
BsEnergyTargetEntity currentYearElectricTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper<BsEnergyTargetEntity>().
eq(BsEnergyTargetEntity::getYear, currentYear)
.eq(BsEnergyTargetEntity::getQuarter, quarter)
.eq(BsEnergyTargetEntity::getType, "2"));
if (lastYearDetail != null) { if (lastYearDetail != null) {
detail.setLastWater(lastYearDetail.getCurrentWater()); detail.setLastWater(lastYearDetail.getCurrentWater());
detail.setLastElectric(lastYearDetail.getCurrentElectric()); detail.setLastElectric(lastYearDetail.getCurrentElectric());
@ -192,16 +181,4 @@ public class BsEnergyMonitorController extends BladeController {
return R.data(detail); 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";
}
}
} }

@ -26,9 +26,10 @@
package org.springblade.desk.energy.controller; package org.springblade.desk.energy.controller;
import cn.hutool.core.bean.BeanUtil; 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.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; 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.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; 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.DateUtil;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.util.ExcelExtUtil; import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springblade.desk.energy.excel.BsEnergyTargetElectricExcel; import org.springblade.desk.energy.excel.BsEnergyTargetExcel;
import org.springblade.desk.energy.excel.BsEnergyTargetWaterExcel;
import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity; import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity;
import org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO; import org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO;
import org.springblade.desk.energy.service.IBsEnergyTargetService; 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.core.io.Resource;
import org.springframework.data.redis.hash.HashMapper;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.math.BigDecimal; import java.util.ArrayList;
import java.util.*; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 能耗目标表 控制器 * 能耗目标表 控制器
@ -80,29 +79,16 @@ public class BsEnergyTargetController extends BladeController {
*/ */
@GetMapping("/detail") @GetMapping("/detail")
@Operation(summary = "详情", description = "传入bsEnergyTarget") @Operation(summary = "详情", description = "传入bsEnergyTarget")
public R<BsEnergyTargetVO> detail(BsEnergyTargetEntity bsEnergyTarget) { public R<BsEnergyTargetVO> detail(BsEnergyTargetVO bsEnergyTarget) {
BsEnergyTargetEntity detail = bsEnergyTargetService.getOne(Condition.getQueryWrapper(bsEnergyTarget)); if (StringUtils.isEmpty(bsEnergyTarget.getYear()) || StringUtils.isEmpty(bsEnergyTarget.getType())) {
return R.data(BsEnergyTargetWrapper.build().entityVO(detail)); return R.fail("参数错误");
} }
List<BsEnergyTargetVO> list = bsEnergyTargetService.selectBsEnergyTargetList(bsEnergyTarget);
/** if (CollectionUtils.isNotEmpty(list)) {
* 能耗目标表 获取用水目标 return R.data(list.get(0));
*/ } else {
@GetMapping("/detailByWater") return R.fail("能耗目标详情查询失败");
@Operation(summary = "根据月份获取用水目标", description = "获取用水目标")
public R<BigDecimal> getWaterTargetByMonth(String month) {
BigDecimal waterTarget = bsEnergyTargetService.getWaterTargetByMonth(month);
return R.data(waterTarget);
} }
/**
* 能耗目标表 获取用水目标
*/
@GetMapping("/detailByElectric")
@Operation(summary = "根据月份获取用电目标", description = "获取用电目标")
public R<BigDecimal> getElectricTargetByMonth(String month) {
BigDecimal electricTarget = bsEnergyTargetService.getElectricTargetByMonth(month);
return R.data(electricTarget);
} }
/** /**
@ -119,21 +105,23 @@ public class BsEnergyTargetController extends BladeController {
* 能耗目标表 新增或修改 * 能耗目标表 新增或修改
*/ */
@PostMapping("/submit") @PostMapping("/submit")
@Operation(summary = "新增或修改", description = "传入bsEnergyTarget") @Operation(summary = "新增或修改", description = "传入bsEnergyTargetList")
public R submit(@Valid @RequestBody BsEnergyTargetEntity bsEnergyTarget) { public R submit(@Valid @RequestBody List<BsEnergyTargetVO> bsEnergyTargetList) {
BsEnergyTargetEntity bsEnergyTargetEntity = bsEnergyTargetService.getOne(new LambdaQueryWrapper<BsEnergyTargetEntity>(). List<String> years = bsEnergyTargetList.stream().map(BsEnergyTargetVO::getYear).collect(Collectors.toList());
eq(BsEnergyTargetEntity::getYear, bsEnergyTarget.getYear()) List<BsEnergyTargetEntity> existList = bsEnergyTargetService.list(new LambdaQueryWrapper<BsEnergyTargetEntity>().in(BsEnergyTargetEntity::getYear, years));
.eq(BsEnergyTargetEntity::getType, bsEnergyTarget.getType()) Map<String, Long> existMap = existList.stream().collect(Collectors.toMap(e -> e.getYear() + "-" + e.getMonth() + "-" + e.getType(), BsEnergyTargetEntity::getId, (oldValue, newValue) -> oldValue));
.eq(bsEnergyTarget.getQuarter() != null, BsEnergyTargetEntity::getQuarter, bsEnergyTarget.getQuarter())); List<BsEnergyTargetEntity> saves = new ArrayList<>();
if (bsEnergyTargetEntity != null && !bsEnergyTargetEntity.getId().equals(bsEnergyTarget.getId())) { for (BsEnergyTargetVO bsEnergyTargetVO : bsEnergyTargetList) {
if ("1".equals(bsEnergyTarget.getType())) { List<BsEnergyTargetEntity> bsEnergyTargetEntities = bsEnergyTargetVO.parseEntities();
return R.fail("该年份能耗目标已存在"); for (BsEnergyTargetEntity bsEnergyTarget : bsEnergyTargetEntities) {
String key = bsEnergyTarget.getYear() + "-" + bsEnergyTarget.getMonth() + "-" + bsEnergyTarget.getType();
if (existMap.containsKey(key)) {
bsEnergyTarget.setId(existMap.get(key));
} }
if ("2".equals(bsEnergyTarget.getType())) {
return R.fail("该季度能耗目标已存在");
} }
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") @GetMapping("/export-bsEnergyTarget")
@Operation(summary = "导出数据", description = "传入bsEnergyTarget") @Operation(summary = "导出数据", description = "传入bsEnergyTarget")
public void exportBsEnergyTarget(@Parameter(hidden = true) @RequestParam Map<String, Object> bsEnergyTarget, BladeUser bladeUser, HttpServletResponse response) { public void exportBsEnergyTarget(@Parameter(hidden = true) @RequestParam Map<String, Object> bsEnergyTarget, BladeUser bladeUser, HttpServletResponse response) {
Map<String, Object> conMap = new HashMap(); BsEnergyTargetVO vo = new BsEnergyTargetVO();
conMap.put("type", bsEnergyTarget.get("type")); vo.setYear((String) bsEnergyTarget.get("year"));
conMap.put("isDeleted", 0); vo.setType((String) bsEnergyTarget.get("type"));
List<BsEnergyTargetEntity> list = bsEnergyTargetService.listByMap(conMap); List<BsEnergyTargetVO> list = bsEnergyTargetService.selectBsEnergyTargetList(vo);
if ("1".equals(bsEnergyTarget.get("type"))) { List<BsEnergyTargetExcel> bsEnergyTargetExcels = BeanUtil.copyToList(list, BsEnergyTargetExcel.class);
List<BsEnergyTargetWaterExcel> bsEnergyTargetWaterExcels = BeanUtil.copyToList(list, BsEnergyTargetWaterExcel.class); ExcelUtil.export(response, "能耗目标" + DateUtil.time(), "能耗目标", bsEnergyTargetExcels, BsEnergyTargetExcel.class);
ExcelUtil.export(response, "用水目标" + DateUtil.time(), "用水目标", bsEnergyTargetWaterExcels, BsEnergyTargetWaterExcel.class);
} else {
List<BsEnergyTargetElectricExcel> bsEnergyTargetElectricExcels = BeanUtil.copyToList(list, BsEnergyTargetElectricExcel.class);
ExcelUtil.export(response, "用电目标" + DateUtil.time(), "用电目标", bsEnergyTargetElectricExcels, BsEnergyTargetElectricExcel.class);
}
} }
@GetMapping("/water-download-excel-template") @GetMapping("/water-download-excel-template")
@Operation(summary = "下载Excel模板", description = "") @Operation(summary = "下载Excel模板", description = "")
public ResponseEntity<Resource> waterDownloadExcelTemplate() { public ResponseEntity<Resource> waterDownloadExcelTemplate() {
return ExcelExtUtil.downloadXlsTemplate( return ExcelExtUtil.downloadXlsTemplate(
"Excel/energy/用水目标.xls", "Excel/energy/能耗目标.xls",
"导入模版-用水目标.xls"); "导入模版-能耗目标.xls");
} }
@GetMapping("/electric-download-excel-template") @GetMapping("/electric-download-excel-template")
@Operation(summary = "下载Excel模板", description = "") @Operation(summary = "下载Excel模板", description = "")
public ResponseEntity<Resource> electricDownloadExcelTemplate() { public ResponseEntity<Resource> electricDownloadExcelTemplate() {
return ExcelExtUtil.downloadXlsTemplate( return ExcelExtUtil.downloadXlsTemplate(
"Excel/energy/用电目标.xls", "Excel/energy/能耗目标.xls",
"导入模版-用电目标.xls"); "导入模版-能耗目标.xls");
} }
@PostMapping("/water-import-excel") @PostMapping("/water-import-excel")
@Operation(summary = "导入Excel", description = "MultipartFile") @Operation(summary = "导入Excel", description = "MultipartFile")
public R waterImportExcel(@RequestParam("file") MultipartFile file) { public R waterImportExcel(@RequestParam("file") MultipartFile file) {
R checkR = ExcelExtUtil.importExcelCheck(file); return bsEnergyTargetService.importExcelData(file, "1");
if (checkR != null) {
return checkR;
}
List<BsEnergyTargetWaterExcel> importList = ExcelUtil.read(
file, 0, 1, BsEnergyTargetWaterExcel.class
);
boolean result = true;
Set<String> existSet = new HashSet<>();
StringBuffer msg = new StringBuffer();
List<BsEnergyTargetEntity> 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<BsEnergyTargetEntity>().
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") @PostMapping("/electric-import-excel")
@Operation(summary = "导入Excel", description = "MultipartFile") @Operation(summary = "导入Excel", description = "MultipartFile")
public R electricImportExcel(@RequestParam("file") MultipartFile file) { public R electricImportExcel(@RequestParam("file") MultipartFile file) {
R checkR = ExcelExtUtil.importExcelCheck(file); return bsEnergyTargetService.importExcelData(file, "2");
if (checkR != null) {
return checkR;
}
List<BsEnergyTargetElectricExcel> importList = ExcelUtil.read(
file, 0, 1, BsEnergyTargetElectricExcel.class
);
boolean result = true;
Set<String> existSet = new HashSet<>();
StringBuffer msg = new StringBuffer();
List<BsEnergyTargetEntity> 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<BsEnergyTargetEntity>().
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());
}
}
} }

@ -1,76 +0,0 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* 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;
}

@ -49,7 +49,7 @@ import java.io.Serial;
@ColumnWidth(25) @ColumnWidth(25)
@HeadRowHeight(20) @HeadRowHeight(20)
@ContentRowHeight(18) @ContentRowHeight(18)
public class BsEnergyTargetWaterExcel implements Serializable { public class BsEnergyTargetExcel implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -57,15 +57,56 @@ public class BsEnergyTargetWaterExcel implements Serializable {
/** /**
* 年份 * 年份
*/ */
@ColumnWidth(50) @ColumnWidth(20)
@ExcelProperty("年份") @ExcelProperty("年份")
private String year; private String year;
/** @ColumnWidth(20)
* 用水目标(L/d) @ExcelProperty("1月")
*/ private BigDecimal m01Target;
@ColumnWidth(50)
@ExcelProperty("用水目标(L/d㎡)") @ColumnWidth(20)
private BigDecimal target; @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;
} }

@ -27,11 +27,9 @@ package org.springblade.desk.energy.mapper;
import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity; import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity;
import org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO; 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.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -52,17 +50,17 @@ public interface BsEnergyTargetMapper extends BaseMapper<BsEnergyTargetEntity> {
*/ */
List<BsEnergyTargetVO> selectBsEnergyTargetPage(IPage page, BsEnergyTargetVO bsEnergyTarget); List<BsEnergyTargetVO> selectBsEnergyTargetPage(IPage page, BsEnergyTargetVO bsEnergyTarget);
/** /**
* 获取导出数据 * 自定义查询
* *
* @param queryWrapper 查询条件 * @param bsEnergyTarget
* @return List<BsEnergyTargetExcel> * @return
*/ */
List<BsEnergyTargetWaterExcel> exportBsEnergyTarget(@Param("ew") Wrapper<BsEnergyTargetEntity> queryWrapper); List<BsEnergyTargetVO> selectBsEnergyTargetList(BsEnergyTargetVO bsEnergyTarget);
/** /**
* 根据条件查询列表 * 根据条件查询列表
*
* @param conMap * @param conMap
* @return * @return
*/ */

@ -20,8 +20,24 @@
</resultMap> </resultMap>
<select id="selectBsEnergyTargetPage" resultMap="bsEnergyTargetResultMap"> <select id="selectBsEnergyTargetPage" resultType="org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO">
select * from BS_ENERGY_TARGET 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
<where> <where>
is_deleted = 0 is_deleted = 0
<if test="bsEnergyTarget.type!=null"> <if test="bsEnergyTarget.type!=null">
@ -30,13 +46,9 @@
<if test="bsEnergyTarget.year!=null"> <if test="bsEnergyTarget.year!=null">
and year = #{bsEnergyTarget.year} and year = #{bsEnergyTarget.year}
</if> </if>
<if test="bsEnergyTarget.quarter!=null">
and quarter = #{bsEnergyTarget.quarter}
</if>
<if test="bsEnergyTarget.status!=null">
and status = #{bsEnergyTarget.status}
</if>
</where> </where>
GROUP BY year, type
)
<choose> <choose>
<when test="bsEnergyTarget.orderByField != null and bsEnergyTarget.orderByField != ''"> <when test="bsEnergyTarget.orderByField != null and bsEnergyTarget.orderByField != ''">
ORDER BY ${bsEnergyTarget.orderByField} ORDER BY ${bsEnergyTarget.orderByField}
@ -44,36 +56,40 @@
<if test="!bsEnergyTarget.isAsc">DESC</if> <if test="!bsEnergyTarget.isAsc">DESC</if>
</when> </when>
<otherwise> <otherwise>
ORDER BY CREATE_TIME DESC ORDER BY year DESC
</otherwise> </otherwise>
</choose> </choose>
</select> </select>
<select id="exportBsEnergyTarget" resultType="org.springblade.desk.energy.excel.BsEnergyTargetWaterExcel"> <select id="selectBsEnergyTargetList" resultType="org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO">
SELECT * FROM BS_ENERGY_TARGET ${ew.customSqlSegment} SELECT
</select> year,
TYPE,
<select id="listByMap" resultType="org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity"> MAX(CASE WHEN month = '01' THEN target ELSE NULL END ) AS m01Target,
select ID,TYPE,MONTH,YEAR,TARGET,CASE WHEN QUARTER = 1 THEN '第一季度' WHEN QUARTER = 2 THEN '第二季度' WHEN QUARTER = 3 THEN '第三季度' WHEN QUARTER = 4 THEN '第四季度' ELSE '' END AS QUARTER 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 FROM BS_ENERGY_TARGET
<where> <where>
<if test="year!=null"> is_deleted = 0
and YEAR = #{year}
</if>
<if test="month!=null">
and MONTH = #{month}
</if>
<if test="quarter!=null">
and QUARTER = #{quarter}
</if>
<if test="type!=null"> <if test="type!=null">
and TYPE = #{type} and type = #{type}
</if> </if>
<if test="isDeleted!=null"> <if test="year!=null">
and IS_DELETED = #{isDeleted} and year = #{year}
</if> </if>
</where> </where>
GROUP BY year, TYPE
ORDER BY year DESC
</select> </select>
</mapper> </mapper>

@ -25,10 +25,15 @@
*/ */
package org.springblade.desk.energy.pojo.vo; package org.springblade.desk.energy.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity; import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.io.Serial; import java.io.Serial;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
/** /**
* 能耗目标表 视图实体类 * 能耗目标表 视图实体类
@ -42,6 +47,42 @@ public class BsEnergyTargetVO extends BsEnergyTargetEntity {
@Serial @Serial
private static final long serialVersionUID = 1L; 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;
/** /**
* 排序字段 * 排序字段
*/ */
@ -51,4 +92,54 @@ public class BsEnergyTargetVO extends BsEnergyTargetEntity {
*/ */
private boolean isAsc; private boolean isAsc;
public List<BsEnergyTargetEntity> parseEntities() {
List<BsEnergyTargetEntity> 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;
}
} }

@ -25,16 +25,14 @@
*/ */
package org.springblade.desk.energy.service; 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.entity.BsEnergyTargetEntity;
import org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO; import org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO;
import org.springblade.desk.energy.excel.BsEnergyTargetWaterExcel;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService; import org.springblade.core.mp.base.BaseService;
import org.springframework.web.multipart.MultipartFile;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 能耗目标表 服务类 * 能耗目标表 服务类
@ -52,36 +50,20 @@ public interface IBsEnergyTargetService extends BaseService<BsEnergyTargetEntity
*/ */
IPage<BsEnergyTargetVO> selectBsEnergyTargetPage(IPage<BsEnergyTargetVO> page, BsEnergyTargetVO bsEnergyTarget); IPage<BsEnergyTargetVO> selectBsEnergyTargetPage(IPage<BsEnergyTargetVO> page, BsEnergyTargetVO bsEnergyTarget);
/**
* 导出数据
*
* @param queryWrapper 查询条件
* @return List<BsEnergyTargetExcel>
*/
List<BsEnergyTargetWaterExcel> exportBsEnergyTarget(Wrapper<BsEnergyTargetEntity> queryWrapper);
/** /**
* 根据月份获取用水目标 * 自定义查询
* *
* @param month 月份 * @param bsEnergyTarget
* @return 用水目标 * @return
*/
BigDecimal getWaterTargetByMonth(String month);
/**
* 根据月份获取用电目标
*
* @param month 月份
* @return 用电目标
*/ */
BigDecimal getElectricTargetByMonth(String month); List<BsEnergyTargetVO> selectBsEnergyTargetList(BsEnergyTargetVO bsEnergyTarget);
/** /**
* 根据条件查询列表 * 数据导入
* *
* @param conMap * @param file
* @param type
* @return * @return
*/ */
List<BsEnergyTargetEntity> listByMap(Map<String, Object> conMap); R importExcelData(MultipartFile file, String type);
} }

@ -26,20 +26,24 @@
package org.springblade.desk.energy.service.impl; package org.springblade.desk.energy.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.entity.BsEnergyTargetEntity;
import org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO; 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.mapper.BsEnergyTargetMapper;
import org.springblade.desk.energy.service.IBsEnergyTargetService; import org.springblade.desk.energy.service.IBsEnergyTargetService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl; 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.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 能耗目标表 服务实现类 * 能耗目标表 服务实现类
@ -55,41 +59,44 @@ public class BsEnergyTargetServiceImpl extends BaseServiceImpl<BsEnergyTargetMap
return page.setRecords(baseMapper.selectBsEnergyTargetPage(page, bsEnergyTarget)); return page.setRecords(baseMapper.selectBsEnergyTargetPage(page, bsEnergyTarget));
} }
@Override @Override
public List<BsEnergyTargetWaterExcel> exportBsEnergyTarget(Wrapper<BsEnergyTargetEntity> queryWrapper) { public List<BsEnergyTargetVO> selectBsEnergyTargetList(BsEnergyTargetVO bsEnergyTarget) {
List<BsEnergyTargetWaterExcel> bsEnergyTargetList = baseMapper.exportBsEnergyTarget(queryWrapper); return baseMapper.selectBsEnergyTargetList(bsEnergyTarget);
//bsEnergyTargetList.forEach(bsEnergyTarget -> {
// bsEnergyTarget.setTypeName(DictCache.getValue(DictEnum.YES_NO, BsEnergyTarget.getType()));
//});
return bsEnergyTargetList;
} }
@Override @Override
public BigDecimal getWaterTargetByMonth(String month) { public R importExcelData(MultipartFile file, String type) {
BsEnergyTargetEntity energyTargetEntity = this.getOne(new LambdaQueryWrapper<BsEnergyTargetEntity>() R checkR = ExcelExtUtil.importExcelCheck(file);
.eq(BsEnergyTargetEntity::getMonth, month)); if (checkR != null) {
if(energyTargetEntity != null){ return checkR;
return energyTargetEntity.getTarget();
} }
return new BigDecimal(0); List<BsEnergyTargetExcel> importList = ExcelUtil.read(
file, 0, 1, BsEnergyTargetExcel.class
);
List<BsEnergyTargetVO> voList = importList.stream()
.map(excel -> {
BsEnergyTargetVO vo = new BsEnergyTargetVO();
BeanUtils.copyProperties(excel, vo);
vo.setType(type);
return vo;
})
.collect(Collectors.toList());
List<String> years = importList.stream().map(BsEnergyTargetExcel::getYear).collect(Collectors.toList());
List<BsEnergyTargetEntity> existList = this.list(new LambdaQueryWrapper<BsEnergyTargetEntity>().in(BsEnergyTargetEntity::getYear, years).eq(BsEnergyTargetEntity::getType, type));
Map<String, Long> existMap = existList.stream().collect(Collectors.toMap(e -> e.getYear() + "-" + e.getMonth() + "-" + e.getType(), BsEnergyTargetEntity::getId, (oldValue, newValue) -> oldValue));
List<BsEnergyTargetEntity> saves = new ArrayList<>();
for (BsEnergyTargetVO bsEnergyTargetVO : voList) {
List<BsEnergyTargetEntity> bsEnergyTargetEntities = bsEnergyTargetVO.parseEntities();
for (BsEnergyTargetEntity bsEnergyTarget : bsEnergyTargetEntities) {
String key = bsEnergyTarget.getYear() + "-" + bsEnergyTarget.getMonth() + "-" + bsEnergyTarget.getType();
if (existMap.containsKey(key)) {
bsEnergyTarget.setId(existMap.get(key));
} }
@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<BsEnergyTargetEntity>()
.eq(BsEnergyTargetEntity::getYear, year)
.eq(BsEnergyTargetEntity::getQuarter, quarter));
if (energyTargetEntity != null) {
return energyTargetEntity.getTarget();
} }
return new BigDecimal(0); saves.addAll(bsEnergyTargetEntities);
} }
return R.status(this.saveOrUpdateBatch(saves));
@Override
public List<BsEnergyTargetEntity> listByMap(Map<String, Object> conMap){
return baseMapper.listByMap(conMap);
} }
} }

Loading…
Cancel
Save