123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- package com.huaxu.controller;
- import cn.hutool.core.collection.CollectionUtil;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.huaxu.common.EasyExcelUtil;
- import com.huaxu.dto.*;
- import com.huaxu.enums.SceneEnum;
- import com.huaxu.model.AjaxMessage;
- import com.huaxu.model.Pagination;
- import com.huaxu.model.ResultStatus;
- import com.huaxu.service.ReportDimensionSettingService;
- import com.huaxu.service.ReportService;
- import com.huaxu.util.ExcelUtil;
- import com.huaxu.util.ReportExcelUtil;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import io.swagger.annotations.ApiParam;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.web.bind.annotation.*;
- import javax.validation.Valid;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * 标签信息页面控制器
- * @author WYY
- * @date 2020-12-03 16:50
- */
- @RestController
- @RequestMapping("/report")
- @Api(tags = "日月年统计报表信息")
- public class DayMonthYearReportController {
- @Value("${SMS.sys_excel_path}")
- private String baseDir;
- @Autowired
- private ReportService reportService;
- @Autowired
- private ReportDimensionSettingService reportDimensionSettingService;
- @ApiOperation(value = "按年月日统计报表")
- @RequestMapping(value = "/getReportBySceneIds", method = RequestMethod.POST)
- @ResponseBody
- public AjaxMessage<Pagination<ReportDto>> getReportBySceneIds(
- @RequestParam Integer pageNum,
- @RequestParam Integer pageSize,
- @ApiParam(value = "场景IDS", required = true) @RequestParam(required = true) Long[] ids,
- @ApiParam(value = "查询年", required = false) @RequestParam(required = false) Integer year ,
- @ApiParam(value = "查询月", required = false) @RequestParam(required = false) Integer month ,
- @ApiParam(value = "查询日", required = false) @RequestParam(required = false) Integer day ,
- @ApiParam(value = "报表类型(0日 1月 2年)", required = true) @RequestParam(required = true) Integer reportType
- ) {
- IPage<ReportDto> iPage = new Page<>(pageNum, pageSize);
- iPage = reportService.getReportBySceneIds(iPage,ids,year,month,day,reportType);
- Pagination<ReportDto> pages = new Pagination<>(iPage);
- return new AjaxMessage<>(ResultStatus.OK,pages);
- }
- @ApiOperation(value = "按年月日统计报表")
- @RequestMapping(value = "/getReportBySceneIdsNews", method = RequestMethod.POST)
- @ResponseBody
- public AjaxMessage<Pagination<ReportDto>> getReportBySceneIdsNews(@RequestBody ReportQueryDto queryDto) {
- IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
- iPage = reportService.getReportBySceneIdsNew(iPage, queryDto);
- Pagination<ReportDto> pages = new Pagination<>(iPage);
- return new AjaxMessage<>(ResultStatus.OK,pages);
- }
- @ApiOperation(value = "按设备统计压力及流量年月日统计报表")
- @RequestMapping(value = "/getDevicePressReportByDeviceIdsNew", method = RequestMethod.POST)
- @ResponseBody
- public AjaxMessage<Pagination<ReportDto>> getDevicePressReportByDeviceIdsNew(@RequestBody ReportQueryDto queryDto) {
- IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
- iPage = reportService.getPipeDevicePressReportByDeviceIds(iPage, queryDto);
- Pagination<ReportDto> pages = new Pagination<>(iPage);
- return new AjaxMessage<>(ResultStatus.OK,pages);
- }
- @ApiOperation(value = "按设备统计压力及流量年月日统计报表")
- @RequestMapping(value = "/getDevicePressReportByDeviceIds", method = RequestMethod.POST)
- @ResponseBody
- public AjaxMessage<Pagination<DevicePressReportAttributeDto>> getDevicePressReportByDeviceIds(
- @RequestParam Integer pageNum,
- @RequestParam Integer pageSize,
- @ApiParam(value = "设备IDS", required = true) @RequestParam(required = true) Long[] ids,
- @ApiParam(value = "查询年", required = false) @RequestParam(required = false) Integer year ,
- @ApiParam(value = "查询月", required = false) @RequestParam(required = false) Integer month ,
- @ApiParam(value = "查询日", required = false) @RequestParam(required = false) Integer day ,
- @ApiParam(value = "类型(1压力 2流量)", required = false) @RequestParam(required = false) Integer type ,
- @ApiParam(value = "报表类型(0日 1月 2年)", required = true) @RequestParam(required = true) Integer reportType
- ) {
- IPage<DevicePressReportAttributeDto> iPage = new Page<>(pageNum, pageSize);
- iPage = reportService.getDevicePressReportByDeviceIds(iPage,ids,year,month,day,reportType,type);
- Pagination<DevicePressReportAttributeDto> pages = new Pagination<>(iPage);
- for(DevicePressReportAttributeDto item : pages.getList())
- {
- item.setAvgValue((double)Math.round(item.getAvgValue()==null?0:item.getAvgValue()*1000)/1000);
- item.setMinValue((double)Math.round(item.getMinValue()==null?0:item.getMinValue()*1000)/1000);
- item.setMaxValue((double)Math.round(item.getMaxValue()==null?0:item.getMaxValue()*1000)/1000);
- item.setSumValue((double)Math.round(item.getSumValue()==null?0:item.getSumValue()*1000)/1000);
- item.setLatestValue((double)Math.round(item.getLatestValue()==null?0:item.getLatestValue()*1000)/1000);
- }
- return new AjaxMessage<>(ResultStatus.OK,pages);
- }
- @ApiOperation(value = "按设备统计水质年月日统计报表")
- @RequestMapping(value = "/getDevicWaterReportByDeviceIdsNew", method = RequestMethod.POST)
- @ResponseBody
- public AjaxMessage<Pagination<ReportDto>> getDevicWaterReportByDeviceIdsNew(@RequestBody ReportQueryDto queryDto) {
- queryDto.setType(3);
- IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
- iPage = reportService.getPipeDevicePressReportByDeviceIds(iPage,queryDto);
- Pagination<ReportDto> pages = new Pagination<>(iPage);
- return new AjaxMessage<>(ResultStatus.OK,pages);
- }
- @ApiOperation(value = "按设备统计水质年月日统计报表")
- @RequestMapping(value = "/getDevicWaterReportByDeviceIds", method = RequestMethod.POST)
- @ResponseBody
- public AjaxMessage<Pagination<DeviceWaterReportAttributeDto>> getDevicWaterReportByDeviceIds(
- @RequestParam Integer pageNum,
- @RequestParam Integer pageSize,
- @ApiParam(value = "设备IDS", required = true) @RequestParam(required = true) Long[] ids,
- @ApiParam(value = "查询年", required = false) @RequestParam(required = false) Integer year ,
- @ApiParam(value = "查询月", required = false) @RequestParam(required = false) Integer month ,
- @ApiParam(value = "查询日", required = false) @RequestParam(required = false) Integer day ,
- @ApiParam(value = "报表类型(0日 1月 2年)", required = true) @RequestParam(required = true) Integer reportType
- ) {
- IPage<DeviceWaterReportAttributeDto> iPage = new Page<>(pageNum, pageSize);
- iPage = reportService.getDevicWaterReportByDeviceIds(iPage,ids,year,month,day,reportType);
- Pagination<DeviceWaterReportAttributeDto> pages = new Pagination<>(iPage);
- for(DeviceWaterReportAttributeDto item : pages.getList()) {
- item.setAvgCLValue((double)Math.round(item.getAvgCLValue()==null?0:item.getAvgCLValue()*1000)/1000);
- item.setAvgPHValue((double)Math.round(item.getAvgPHValue()==null?0:item.getAvgPHValue()*1000)/1000);
- item.setAvgQuValue((double)Math.round(item.getAvgQuValue()==null?0:item.getAvgQuValue()*1000)/1000);
- item.setMinCLValue((double)Math.round(item.getMinCLValue()==null?0:item.getMinCLValue()*1000)/1000);
- item.setMinPHValue((double)Math.round(item.getMinPHValue()==null?0:item.getMinPHValue()*1000)/1000);
- item.setMinQuValue((double)Math.round(item.getMinQuValue()==null?0:item.getMinQuValue()*1000)/1000);
- item.setMaxCLValue((double)Math.round(item.getMaxCLValue()==null?0:item.getMaxCLValue()*1000)/1000);
- item.setMaxPHValue((double)Math.round(item.getMaxPHValue()==null?0:item.getMaxPHValue()*1000)/1000);
- item.setMaxQuValue((double)Math.round(item.getMaxQuValue()==null?0:item.getMaxQuValue()*1000)/1000);
- item.setSumCLValue((double)Math.round(item.getSumCLValue()==null?0:item.getSumCLValue()*1000)/1000);
- item.setSumPHValue((double)Math.round(item.getSumPHValue()==null?0:item.getSumPHValue()*1000)/1000);
- item.setSumQuValue((double)Math.round(item.getSumQuValue()==null?0:item.getSumQuValue()*1000)/1000);
- item.setLatestCLValue((double)Math.round(item.getLatestCLValue()==null?0:item.getLatestCLValue()*1000)/1000);
- item.setLatestPHValue((double)Math.round(item.getLatestPHValue()==null?0:item.getLatestPHValue()*1000)/1000);
- item.setLatestQuValue((double)Math.round(item.getLatestQuValue()==null?0:item.getLatestQuValue()*1000)/1000);
- }
- return new AjaxMessage<>(ResultStatus.OK,pages);
- }
- @ApiOperation(value = "获取自定义报表统计维度")
- @RequestMapping(value = "/getCustomDimension", method = RequestMethod.POST)
- @ResponseBody
- public AjaxMessage<List<ReportAttributeDto>> getCustomDimension(
- @ApiParam(value = "场景IDS", required = true) @RequestParam(required = true) Long[] ids
- ) {
- return new AjaxMessage<>(ResultStatus.OK, reportService.findAttributeNameList(ids, null));
- }
- @ApiOperation(value = "获取管网自定义报表统计维度")
- @RequestMapping(value = "/getPipelineCustomDimension", method = RequestMethod.POST)
- @ResponseBody
- public AjaxMessage<List<ReportAttributeDto>> getPipelineCustomDimension(
- @ApiParam(value = "设备ID", required = true) @RequestParam(required = true) Long deviceId,
- @ApiParam(value = "类型:1压力,2流量,3水质", required = true) @RequestParam(required = true) Integer type) {
- return new AjaxMessage<>(ResultStatus.OK, reportService.findPipeAttributeNameList(deviceId, type));
- }
- @ApiOperation(value = "修改自定义报表统计维度")
- @RequestMapping(value = "/updateCustomDimension", method = RequestMethod.POST)
- @ResponseBody
- public AjaxMessage<List<ReportAttributeDto>> updateCustomDimension(@RequestBody @Valid List<ReportStatisticalDimensionDto> dataList) {
- reportDimensionSettingService.batchUpdateStatisticalDimension(dataList);
- return new AjaxMessage<>(ResultStatus.OK);
- }
- @RequestMapping(value = "/export/excel", method = RequestMethod.POST)
- @ApiOperation(value = "报表导出")
- public AjaxMessage<String> exportExcel(@RequestBody ReportQueryDto queryDto) {
- IPage<ReportDto> iPage = new Page<>(1, 1000000);
- if (queryDto.getType() == null ){
- iPage = reportService.getReportBySceneIdsNew(iPage, queryDto);
- } else {
- iPage = reportService.getPipeDevicePressReportByDeviceIds(iPage, queryDto);
- }
- List<ReportDto> list = iPage.getRecords();
- if (CollectionUtil.isEmpty(list)){
- return new AjaxMessage<>(ResultStatus.OK);
- }
- List<List<String>> reportTitle = ReportExcelUtil.toExcelTitleList(list.get(0).getReportTitle(), queryDto.getSceneType());
- String filePath = ExcelUtil.writeSimpleExcelWithHeader(baseDir, SceneEnum.getMsg(queryDto.getSceneType()) +"报表", reportTitle, ReportExcelUtil.toReportExcelDto(list,queryDto.getSceneType()));
- return new AjaxMessage<>(ResultStatus.OK, filePath);
- }
- }
|