@ -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 ) ) ;
public R < BsEnergyTargetVO > detail ( BsEnergyTargetVO bsEnergyTarget ) {
if ( StringUtils . isEmpty ( bsEnergyTarget . getYear ( ) ) | | StringUtils . isEmpty ( bsEnergyTarget . getType ( ) ) ) {
return R . fail ( "参数错误" ) ;
}
/ * *
* 能耗目标表 获取用水目标
* /
@GetMapping ( "/detailByWater" )
@Operation ( summary = "根据月份获取用水目标" , description = "获取用水目标" )
public R < BigDecimal > getWaterTargetByMonth ( String month ) {
BigDecimal waterTarget = bsEnergyTargetService . getWaterTargetByMonth ( month ) ;
return R . data ( waterTarget ) ;
List < BsEnergyTargetVO > list = bsEnergyTargetService . selectBsEnergyTargetList ( bsEnergyTarget ) ;
if ( CollectionUtils . isNotEmpty ( list ) ) {
return R . data ( list . get ( 0 ) ) ;
} else {
return R . fail ( "能耗目标详情查询失败" ) ;
}
/ * *
* 能耗目标表 获取用水目标
* /
@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" )
@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 ( "该年份能耗目标已存在" ) ;
@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 ) ) ;
}
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" )
@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 ;
return bsEnergyTargetService . importExcelData ( file , "2" ) ;
}
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 ( ) ) ;
}
}
}