report
parent
bf6f3d9254
commit
34f73211a3
@ -0,0 +1,97 @@
|
|||||||
|
package com.anjiplus.template.gaea.business.modules.data.reportexcel.controller;
|
||||||
|
|
||||||
|
import com.anji.plus.gaea.annotation.Permission;
|
||||||
|
import com.anji.plus.gaea.annotation.log.GaeaAuditLog;
|
||||||
|
import com.anji.plus.gaea.bean.ResponseBean;
|
||||||
|
import com.anji.plus.gaea.code.ResponseCode;
|
||||||
|
import com.anji.plus.gaea.curd.controller.GaeaBaseController;
|
||||||
|
import com.anji.plus.gaea.curd.service.GaeaBaseService;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.data.reportexcel.controller.dto.ReportExcelDto;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.data.reportexcel.controller.param.ReportExcelParam;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.data.reportexcel.dao.entity.ReportExcel;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.data.reportexcel.service.ReportExcelService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author chenkening
|
||||||
|
* @date 2021/4/13 15:12
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@Api(tags = "报表表格管理")
|
||||||
|
@RequestMapping("/reportExcel")
|
||||||
|
public class ReportExcelController extends GaeaBaseController<ReportExcelParam, ReportExcel, ReportExcelDto> {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ReportExcelService reportExcelService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GaeaBaseService<ReportExcelParam, ReportExcel> getService() {
|
||||||
|
return reportExcelService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ReportExcel getEntity() {
|
||||||
|
return new ReportExcel();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ReportExcelDto getDTO() {
|
||||||
|
return new ReportExcelDto();
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/detailByReportCode/{reportCode}")
|
||||||
|
@Permission(
|
||||||
|
code = "DETAIL",
|
||||||
|
name = "详情"
|
||||||
|
)
|
||||||
|
@GaeaAuditLog(
|
||||||
|
pageTitle = "详情"
|
||||||
|
)
|
||||||
|
public ResponseBean detailByReportCode(@PathVariable String reportCode) {
|
||||||
|
ReportExcelDto reportExcelDto = reportExcelService.detailByReportCode(reportCode);
|
||||||
|
return ResponseBean.builder().data(reportExcelDto).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/preview")
|
||||||
|
@Permission(
|
||||||
|
code = "DETAIL",
|
||||||
|
name = "预览"
|
||||||
|
)
|
||||||
|
@GaeaAuditLog(
|
||||||
|
pageTitle = "预览"
|
||||||
|
)
|
||||||
|
public ResponseBean preview(@RequestBody ReportExcelDto reportExcelDto) {
|
||||||
|
ReportExcelDto result = reportExcelService.preview(reportExcelDto);
|
||||||
|
return ResponseBean.builder().data(result).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/exportExcel")
|
||||||
|
@Permission(
|
||||||
|
code = "IMPORT",
|
||||||
|
name = "导出"
|
||||||
|
)
|
||||||
|
@GaeaAuditLog(
|
||||||
|
pageTitle = "报表导出"
|
||||||
|
)
|
||||||
|
public ResponseBean exportExcel(@RequestBody ReportExcelDto reportExcelDto) {
|
||||||
|
|
||||||
|
return ResponseBean.builder().code(ResponseCode.SUCCESS_CODE)
|
||||||
|
.data(reportExcelService.exportExcel(reportExcelDto))
|
||||||
|
.message("导出成功,请稍后在下载中心查看").build();
|
||||||
|
}
|
||||||
|
|
||||||
|
// @PostMapping("/exportPdf")
|
||||||
|
// public ResponseBean exportPdf(@RequestBody ReportExcelDto reportExcelDto) {
|
||||||
|
// reportExcelService.exportPdf(reportExcelDto);
|
||||||
|
// return ResponseBean.builder().code(ResponseCode.SUCCESS_CODE)
|
||||||
|
// .build();
|
||||||
|
// }
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
|
||||||
|
package com.anjiplus.template.gaea.business.modules.data.reportexcel.controller.dto;
|
||||||
|
|
||||||
|
import com.anji.plus.gaea.curd.dto.GaeaBaseDTO;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author chenkening
|
||||||
|
* @date 2021/4/13 15:12
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class ReportExcelDto extends GaeaBaseDTO implements Serializable {
|
||||||
|
/** 报表名称 */
|
||||||
|
private String reportName;
|
||||||
|
|
||||||
|
/** 报表编码 */
|
||||||
|
private String reportCode;
|
||||||
|
|
||||||
|
/**数据集编码,以|分割*/
|
||||||
|
private String setCodes;
|
||||||
|
|
||||||
|
/** 分组 */
|
||||||
|
private String reportGroup;
|
||||||
|
|
||||||
|
/** 数据集查询参数 */
|
||||||
|
private String setParam;
|
||||||
|
|
||||||
|
/** 报表json字符串 */
|
||||||
|
private String jsonStr;
|
||||||
|
|
||||||
|
/** 报表类型 */
|
||||||
|
private String reportType;
|
||||||
|
|
||||||
|
/** 数据总计 */
|
||||||
|
private long total;
|
||||||
|
|
||||||
|
/**导出类型*/
|
||||||
|
private String exportType;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
package com.anjiplus.template.gaea.business.modules.data.reportexcel.controller.param;
|
||||||
|
|
||||||
|
import com.anji.plus.gaea.curd.params.PageParam;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author chenkening
|
||||||
|
* @date 2021/4/13 15:12
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class ReportExcelParam extends PageParam implements Serializable{
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.anjiplus.template.gaea.business.modules.data.reportexcel.dao;
|
||||||
|
|
||||||
|
import com.anji.plus.gaea.curd.mapper.GaeaBaseMapper;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.data.reportexcel.dao.entity.ReportExcel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author chenkening
|
||||||
|
* @date 2021/4/13 15:11
|
||||||
|
*/
|
||||||
|
public interface ReportExcelMapper extends GaeaBaseMapper<ReportExcel> {
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package com.anjiplus.template.gaea.business.modules.data.reportexcel.dao.entity;
|
||||||
|
|
||||||
|
import com.anji.plus.gaea.curd.entity.GaeaBaseEntity;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author chenkening
|
||||||
|
* @date 2021/4/13 15:11
|
||||||
|
*/
|
||||||
|
@TableName(value="gaea_report_excel")
|
||||||
|
@Data
|
||||||
|
public class ReportExcel extends GaeaBaseEntity {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "报表编码")
|
||||||
|
private String reportCode;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "数据集编码,以|分割")
|
||||||
|
private String setCodes;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "数据集查询参数")
|
||||||
|
private String setParam;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "报表json字符串")
|
||||||
|
private String jsonStr;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "0--已禁用 1--已启用 DIC_NAME=ENABLE_FLAG")
|
||||||
|
private Integer enableFlag;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "0--未删除 1--已删除 DIC_NAME=DELETE_FLAG")
|
||||||
|
private Integer deleteFlag;
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
package com.anjiplus.template.gaea.business.modules.data.reportexcel.service;
|
||||||
|
|
||||||
|
import com.anji.plus.gaea.curd.service.GaeaBaseService;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.data.reportexcel.controller.dto.ReportExcelDto;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.data.reportexcel.controller.param.ReportExcelParam;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.data.reportexcel.dao.entity.ReportExcel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO
|
||||||
|
*
|
||||||
|
* @author chenkening
|
||||||
|
* @date 2021/4/13 15:14
|
||||||
|
*/
|
||||||
|
public interface ReportExcelService extends GaeaBaseService<ReportExcelParam, ReportExcel> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据报表编码查询详情
|
||||||
|
* @param reportCode
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
ReportExcelDto detailByReportCode(String reportCode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 报表预览
|
||||||
|
* @param reportExcelDto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
ReportExcelDto preview(ReportExcelDto reportExcelDto);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出为excel
|
||||||
|
* @param reportExcelDto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Boolean exportExcel(ReportExcelDto reportExcelDto);
|
||||||
|
|
||||||
|
// Boolean exportPdf(ReportExcelDto reportExcelDto);
|
||||||
|
}
|
@ -0,0 +1,146 @@
|
|||||||
|
package com.anjiplus.template.gaea.business.modules.data.reportexcel.service.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.anji.plus.gaea.constant.BaseOperationEnum;
|
||||||
|
import com.anji.plus.gaea.curd.mapper.GaeaBaseMapper;
|
||||||
|
import com.anji.plus.gaea.exception.BusinessException;
|
||||||
|
import com.anji.plus.gaea.export.enums.ExportTypeEnum;
|
||||||
|
import com.anji.plus.gaea.export.utils.ExportUtil;
|
||||||
|
import com.anji.plus.gaea.export.vo.ExportOperation;
|
||||||
|
import com.anji.plus.gaea.holder.UserContentHolder;
|
||||||
|
import com.anji.plus.gaea.utils.GaeaAssert;
|
||||||
|
import com.anji.plus.gaea.utils.GaeaBeanUtils;
|
||||||
|
import com.anjiplus.template.gaea.business.code.ResponseCode;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.data.report.dao.ReportMapper;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.data.report.dao.entity.Report;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.data.reportexcel.controller.dto.ReportExcelDto;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.data.reportexcel.dao.ReportExcelMapper;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.data.reportexcel.dao.entity.ReportExcel;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.data.reportexcel.service.ReportExcelService;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.data.reportexcel.util.ReportUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO
|
||||||
|
*
|
||||||
|
* @author chenkening
|
||||||
|
* @date 2021/4/13 15:14
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class ReportExcelServiceImpl implements ReportExcelService {
|
||||||
|
|
||||||
|
private Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||||
|
@Autowired
|
||||||
|
private ReportExcelMapper reportExcelMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ThreadPoolTaskExecutor threadPoolExportExecutor;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ReportMapper reportMapper;
|
||||||
|
|
||||||
|
@Value("${file.dist-path}")
|
||||||
|
private String dictPath;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ReportUtil reportUtil;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GaeaBaseMapper<ReportExcel> getMapper() {
|
||||||
|
return reportExcelMapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ReportExcelDto detailByReportCode(String reportCode) {
|
||||||
|
QueryWrapper<ReportExcel> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("report_code" , reportCode);
|
||||||
|
ReportExcel reportExcel = reportExcelMapper.selectOne(queryWrapper);
|
||||||
|
if(reportExcel != null){
|
||||||
|
ReportExcelDto dto = new ReportExcelDto();
|
||||||
|
BeanUtils.copyProperties(reportExcel , dto);
|
||||||
|
return dto;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作前处理
|
||||||
|
*
|
||||||
|
* @param entity 前端传递的对象
|
||||||
|
* @param operationEnum 操作类型
|
||||||
|
* @throws BusinessException 阻止程序继续执行或回滚事务
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void processBeforeOperation(ReportExcel entity, BaseOperationEnum operationEnum) throws BusinessException {
|
||||||
|
if (operationEnum.equals(BaseOperationEnum.INSERT)) {
|
||||||
|
String reportCode = entity.getReportCode();
|
||||||
|
ReportExcel report = this.selectOne("report_code", reportCode);
|
||||||
|
if (null != report) {
|
||||||
|
this.deleteById(report.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 报表预览
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ReportExcelDto preview(ReportExcelDto reportExcelDto) {
|
||||||
|
// 根据id查询 报表详情
|
||||||
|
ReportExcel reportExcel = selectOne("report_code", reportExcelDto.getReportCode());
|
||||||
|
QueryWrapper<Report> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("report_code" , reportExcelDto.getReportCode());
|
||||||
|
Report report = reportMapper.selectOne(queryWrapper);
|
||||||
|
GaeaAssert.notNull(reportExcel, ResponseCode.RULE_CONTENT_NOT_EXIST, "reportExcel");
|
||||||
|
String setParam = reportExcelDto.getSetParam();
|
||||||
|
|
||||||
|
GaeaBeanUtils.copyAndFormatter(reportExcel , reportExcelDto);
|
||||||
|
if(StringUtils.isNotBlank(setParam)){
|
||||||
|
reportExcelDto.setSetParam(setParam);
|
||||||
|
}
|
||||||
|
reportExcelDto.setReportName(report.getReportName());
|
||||||
|
JSONObject jsonObject = reportUtil.reportParse(reportExcelDto);
|
||||||
|
reportExcelDto.setJsonStr(JSONObject.toJSONString(jsonObject));
|
||||||
|
reportExcelDto.setTotal(jsonObject.getJSONObject("rows").size());
|
||||||
|
return reportExcelDto;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean exportExcel(ReportExcelDto reportExcelDto) {
|
||||||
|
ExportOperation exportOperation = new ExportOperation();
|
||||||
|
//指明导出数据查询到结果开始时间
|
||||||
|
exportOperation.setResultStartTime(LocalDateTime.now());
|
||||||
|
ReportExcelDto result = preview(reportExcelDto);
|
||||||
|
//指明导出数据查询到结果结束时间
|
||||||
|
exportOperation.setResultEndTime(LocalDateTime.now());
|
||||||
|
//指明导出数据查询到结果条数
|
||||||
|
exportOperation.setResultSize(result.getTotal());
|
||||||
|
//指明采用什么模式导出
|
||||||
|
exportOperation.setExportType(StringUtils.isBlank(reportExcelDto.getExportType())
|
||||||
|
? ExportTypeEnum.GAEA_TEMPLATE_EXCEL.getCodeValue() : reportExcelDto.getExportType());
|
||||||
|
//设置导出的文件名
|
||||||
|
exportOperation.setFileTitle(result.getReportName());
|
||||||
|
//设置导出的文件存放目录
|
||||||
|
exportOperation.setFilePath(dictPath);
|
||||||
|
//设置导出的数据jsonStr
|
||||||
|
exportOperation.setJsonStr(result.getJsonStr());
|
||||||
|
//保存当前操作人
|
||||||
|
exportOperation.setCreaterUsername(UserContentHolder.getContext().getUsername());
|
||||||
|
//调用盖亚组件实现导出文件
|
||||||
|
threadPoolExportExecutor.execute(() -> {
|
||||||
|
ExportUtil.getInstance().exportByFilePathSimple(exportOperation, null);
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue