能耗目标

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. 190
      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. 48
      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. 113
      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. 91
      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())) {
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<BsEnergyMonitorEntity> 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<BsEnergyMonitorEntity>().eq(BsEnergyMonitorEntity::getMonth, lastMonth));
BsEnergyTargetEntity lastYearWaterTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper<BsEnergyTargetEntity>().
eq(BsEnergyTargetEntity::getYear, lastYear)
.eq(BsEnergyTargetEntity::getType, "1"));
BsEnergyTargetEntity currentYearWaterTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper<BsEnergyTargetEntity>().
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"));
BsEnergyMonitorEntity lastYearDetail = bsEnergyMonitorService.getOne(new LambdaQueryWrapper<BsEnergyMonitorEntity>().eq(BsEnergyMonitorEntity::getMonth, lastYearMonth.toString()));
BsEnergyTargetEntity lastYearWaterTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper<BsEnergyTargetEntity>().eq(BsEnergyTargetEntity::getYear, lastYear).eq(BsEnergyTargetEntity::getMonth, month).eq(BsEnergyTargetEntity::getType, "1"));
BsEnergyTargetEntity currentYearWaterTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper<BsEnergyTargetEntity>().eq(BsEnergyTargetEntity::getYear, currentYear).eq(BsEnergyTargetEntity::getMonth, month).eq(BsEnergyTargetEntity::getType, "1"));
BsEnergyTargetEntity lastYearElectricTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper<BsEnergyTargetEntity>().eq(BsEnergyTargetEntity::getYear, lastYear).eq(BsEnergyTargetEntity::getMonth, month).eq(BsEnergyTargetEntity::getType, "2"));
BsEnergyTargetEntity currentYearElectricTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper<BsEnergyTargetEntity>().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";
}
}
}

@ -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<BsEnergyTargetVO> detail(BsEnergyTargetEntity bsEnergyTarget) {
BsEnergyTargetEntity detail = bsEnergyTargetService.getOne(Condition.getQueryWrapper(bsEnergyTarget));
return R.data(BsEnergyTargetWrapper.build().entityVO(detail));
}
/**
* 能耗目标表 获取用水目标
*/
@GetMapping("/detailByWater")
@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);
public R<BsEnergyTargetVO> detail(BsEnergyTargetVO bsEnergyTarget) {
if (StringUtils.isEmpty(bsEnergyTarget.getYear()) || StringUtils.isEmpty(bsEnergyTarget.getType())) {
return R.fail("参数错误");
}
List<BsEnergyTargetVO> 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<BsEnergyTargetEntity>().
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<BsEnergyTargetVO> bsEnergyTargetList) {
List<String> years = bsEnergyTargetList.stream().map(BsEnergyTargetVO::getYear).collect(Collectors.toList());
List<BsEnergyTargetEntity> existList = bsEnergyTargetService.list(new LambdaQueryWrapper<BsEnergyTargetEntity>().in(BsEnergyTargetEntity::getYear, years));
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 : bsEnergyTargetList) {
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));
}
}
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<String, Object> bsEnergyTarget, BladeUser bladeUser, HttpServletResponse response) {
Map<String, Object> conMap = new HashMap();
conMap.put("type", bsEnergyTarget.get("type"));
conMap.put("isDeleted", 0);
List<BsEnergyTargetEntity> list = bsEnergyTargetService.listByMap(conMap);
if ("1".equals(bsEnergyTarget.get("type"))) {
List<BsEnergyTargetWaterExcel> bsEnergyTargetWaterExcels = BeanUtil.copyToList(list, BsEnergyTargetWaterExcel.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);
}
BsEnergyTargetVO vo = new BsEnergyTargetVO();
vo.setYear((String) bsEnergyTarget.get("year"));
vo.setType((String) bsEnergyTarget.get("type"));
List<BsEnergyTargetVO> list = bsEnergyTargetService.selectBsEnergyTargetList(vo);
List<BsEnergyTargetExcel> 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<Resource> waterDownloadExcelTemplate() {
return ExcelExtUtil.downloadXlsTemplate(
"Excel/energy/用水目标.xls",
"导入模版-用水目标.xls");
"Excel/energy/能耗目标.xls",
"导入模版-能耗目标.xls");
}
@GetMapping("/electric-download-excel-template")
@Operation(summary = "下载Excel模板", description = "")
public ResponseEntity<Resource> 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<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());
}
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<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());
}
return bsEnergyTargetService.importExcelData(file, "2");
}
}

@ -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)
@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;
}

@ -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<BsEnergyTargetEntity> {
/**
* 自定义分页
*
* @param page 分页参数
* @param bsEnergyTarget 查询参数
* @return List<BsEnergyTargetVO>
*/
List<BsEnergyTargetVO> selectBsEnergyTargetPage(IPage page, BsEnergyTargetVO bsEnergyTarget);
/**
* 自定义分页
*
* @param page 分页参数
* @param bsEnergyTarget 查询参数
* @return List<BsEnergyTargetVO>
*/
List<BsEnergyTargetVO> selectBsEnergyTargetPage(IPage page, BsEnergyTargetVO bsEnergyTarget);
/**
* 获取导出数据
*
* @param queryWrapper 查询条件
* @return List<BsEnergyTargetExcel>
*/
List<BsEnergyTargetWaterExcel> exportBsEnergyTarget(@Param("ew") Wrapper<BsEnergyTargetEntity> queryWrapper);
/**
* 自定义查询
*
* @param bsEnergyTarget
* @return
*/
List<BsEnergyTargetVO> selectBsEnergyTargetList(BsEnergyTargetVO bsEnergyTarget);
/**
* 根据条件查询列表
* @param conMap
* @return
*/
List<BsEnergyTargetEntity> listByMap(Map<String, Object> conMap);
/**
* 根据条件查询列表
*
* @param conMap
* @return
*/
List<BsEnergyTargetEntity> listByMap(Map<String, Object> conMap);
}

@ -20,8 +20,24 @@
</resultMap>
<select id="selectBsEnergyTargetPage" resultMap="bsEnergyTargetResultMap">
select * from BS_ENERGY_TARGET
<select id="selectBsEnergyTargetPage" resultType="org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO">
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>
is_deleted = 0
<if test="bsEnergyTarget.type!=null">
@ -30,13 +46,9 @@
<if test="bsEnergyTarget.year!=null">
and year = #{bsEnergyTarget.year}
</if>
<if test="bsEnergyTarget.quarter!=null">
and quarter = #{bsEnergyTarget.quarter}
</if>
<if test="bsEnergyTarget.status!=null">
and status = #{bsEnergyTarget.status}
</if>
</where>
GROUP BY year, type
)
<choose>
<when test="bsEnergyTarget.orderByField != null and bsEnergyTarget.orderByField != ''">
ORDER BY ${bsEnergyTarget.orderByField}
@ -44,36 +56,40 @@
<if test="!bsEnergyTarget.isAsc">DESC</if>
</when>
<otherwise>
ORDER BY CREATE_TIME DESC
ORDER BY year DESC
</otherwise>
</choose>
</select>
<select id="exportBsEnergyTarget" resultType="org.springblade.desk.energy.excel.BsEnergyTargetWaterExcel">
SELECT * FROM BS_ENERGY_TARGET ${ew.customSqlSegment}
</select>
<select id="listByMap" resultType="org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity">
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
<select id="selectBsEnergyTargetList" resultType="org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO">
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>
<if test="year!=null">
and YEAR = #{year}
</if>
<if test="month!=null">
and MONTH = #{month}
</if>
<if test="quarter!=null">
and QUARTER = #{quarter}
</if>
is_deleted = 0
<if test="type!=null">
and TYPE = #{type}
and type = #{type}
</if>
<if test="isDeleted!=null">
and IS_DELETED = #{isDeleted}
<if test="year!=null">
and year = #{year}
</if>
</where>
GROUP BY year, TYPE
ORDER BY year DESC
</select>
</mapper>

@ -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<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;
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<BsEnergyTargetEntity
*/
IPage<BsEnergyTargetVO> selectBsEnergyTargetPage(IPage<BsEnergyTargetVO> page, BsEnergyTargetVO bsEnergyTarget);
/**
* 导出数据
*
* @param queryWrapper 查询条件
* @return List<BsEnergyTargetExcel>
*/
List<BsEnergyTargetWaterExcel> exportBsEnergyTarget(Wrapper<BsEnergyTargetEntity> queryWrapper);
/**
* 根据月份获取用水目标
* 自定义查询
*
* @param month 月份
* @return 用水目标
*/
BigDecimal getWaterTargetByMonth(String month);
/**
* 根据月份获取用电目标
*
* @param month 月份
* @return 用电目标
* @param bsEnergyTarget
* @return
*/
BigDecimal getElectricTargetByMonth(String month);
List<BsEnergyTargetVO> selectBsEnergyTargetList(BsEnergyTargetVO bsEnergyTarget);
/**
* 根据条件查询列表
* 数据导入
*
* @param conMap
* @param file
* @param type
* @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;
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<BsEnergyTargetMapper, BsEnergyTargetEntity> implements IBsEnergyTargetService {
@Override
public IPage<BsEnergyTargetVO> selectBsEnergyTargetPage(IPage<BsEnergyTargetVO> page, BsEnergyTargetVO bsEnergyTarget) {
return page.setRecords(baseMapper.selectBsEnergyTargetPage(page, bsEnergyTarget));
}
@Override
public IPage<BsEnergyTargetVO> selectBsEnergyTargetPage(IPage<BsEnergyTargetVO> page, BsEnergyTargetVO bsEnergyTarget) {
return page.setRecords(baseMapper.selectBsEnergyTargetPage(page, bsEnergyTarget));
}
@Override
public List<BsEnergyTargetVO> selectBsEnergyTargetList(BsEnergyTargetVO bsEnergyTarget) {
return baseMapper.selectBsEnergyTargetList(bsEnergyTarget);
}
@Override
public List<BsEnergyTargetWaterExcel> exportBsEnergyTarget(Wrapper<BsEnergyTargetEntity> queryWrapper) {
List<BsEnergyTargetWaterExcel> 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<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));
}
}
saves.addAll(bsEnergyTargetEntities);
}
return R.status(this.saveOrUpdateBatch(saves));
}
@Override
public BigDecimal getWaterTargetByMonth(String month) {
BsEnergyTargetEntity energyTargetEntity = this.getOne(new LambdaQueryWrapper<BsEnergyTargetEntity>()
.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<BsEnergyTargetEntity>()
.eq(BsEnergyTargetEntity::getYear, year)
.eq(BsEnergyTargetEntity::getQuarter, quarter));
if (energyTargetEntity != null) {
return energyTargetEntity.getTarget();
}
return new BigDecimal(0);
}
@Override
public List<BsEnergyTargetEntity> listByMap(Map<String, Object> conMap){
return baseMapper.listByMap(conMap);
}
}

Loading…
Cancel
Save