mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-14 13:42:07 +08:00
1、报表基础模块:内置模板相关的操作权限限制、新增模板名称唯一性限制;2、分析页统计:排单面积统计关联表修改;
This commit is contained in:
+11
@@ -1,5 +1,6 @@
|
|||||||
package com.cf.imes.framework.security.core.util;
|
package com.cf.imes.framework.security.core.util;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.cf.imes.framework.common.exception.ServiceException;
|
import com.cf.imes.framework.common.exception.ServiceException;
|
||||||
import com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants;
|
import com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants;
|
||||||
import com.cf.imes.framework.security.core.LoginUser;
|
import com.cf.imes.framework.security.core.LoginUser;
|
||||||
@@ -132,4 +133,14 @@ public class SecurityFrameworkUtils {
|
|||||||
return loginUser.getOrganId();
|
return loginUser.getOrganId();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前用户是否超级管理员
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static boolean isSuperAdmin() {
|
||||||
|
LoginUser loginUser = getLoginUser();
|
||||||
|
return ObjectUtil.isNotNull(loginUser) && loginUser.getIsSupAdmin();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-3
@@ -161,9 +161,8 @@
|
|||||||
,CONCAT(YEAR(p.create_time), '-', MONTH(p.create_time), '-', DAY(p.create_time)) as date
|
,CONCAT(YEAR(p.create_time), '-', MONTH(p.create_time), '-', DAY(p.create_time)) as date
|
||||||
</if>
|
</if>
|
||||||
from order_plan p
|
from order_plan p
|
||||||
join order_plan_item opi on p.id = opi.plan_id
|
join order_goods g on g.plan_id = p.id
|
||||||
join order_item oi on oi.id = opi.item_id
|
join order_plate op on op.goods_id = g.id
|
||||||
join order_plate op on oi.plate_id = op.id
|
|
||||||
where p.create_time between #{req.createTime[0]} and #{req.createTime[1]}
|
where p.create_time between #{req.createTime[0]} and #{req.createTime[1]}
|
||||||
and p.deleted = 0
|
and p.deleted = 0
|
||||||
group by date;
|
group by date;
|
||||||
|
|||||||
+2
@@ -13,6 +13,8 @@ public final class ErrorCodeConstants {
|
|||||||
// ========== UREPORT template模块 1-003-001-000 ==========
|
// ========== UREPORT template模块 1-003-001-000 ==========
|
||||||
public static final ErrorCode TEMPLATE_NOT_EXISTS = new ErrorCode(1_003_001_001, "报表模板信息不存在");
|
public static final ErrorCode TEMPLATE_NOT_EXISTS = new ErrorCode(1_003_001_001, "报表模板信息不存在");
|
||||||
public static final ErrorCode TEMPLATE_BUILDIN_OPERATION_PERMISSION_ERROR = new ErrorCode(1_003_001_002, "内置模板操作权限不足");
|
public static final ErrorCode TEMPLATE_BUILDIN_OPERATION_PERMISSION_ERROR = new ErrorCode(1_003_001_002, "内置模板操作权限不足");
|
||||||
|
public static final ErrorCode TEMPLATE_NAME_UNIQE_ERROR = new ErrorCode(1_003_001_003, "模板名【{}】已存在,请编辑模板名后重试");
|
||||||
|
|
||||||
|
|
||||||
// ========== UREPORT datasource模块 1-003-002-000 ==========
|
// ========== UREPORT datasource模块 1-003-002-000 ==========
|
||||||
public static final ErrorCode DATASOURCE_NOT_EXISTS = new ErrorCode(1_003_002_001, "报表数据源不存在");
|
public static final ErrorCode DATASOURCE_NOT_EXISTS = new ErrorCode(1_003_002_001, "报表数据源不存在");
|
||||||
|
|||||||
+47
-3
@@ -1,12 +1,20 @@
|
|||||||
package com.cf.imes.module.report.service.dataset;
|
package com.cf.imes.module.report.service.dataset;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
import com.cf.imes.framework.common.util.object.BeanUtils;
|
||||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import com.cf.imes.framework.security.core.LoginUser;
|
||||||
|
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
|
||||||
import com.cf.imes.module.report.controller.admin.dataset.vo.ReportDatasetReqVO;
|
import com.cf.imes.module.report.controller.admin.dataset.vo.ReportDatasetReqVO;
|
||||||
import com.cf.imes.module.report.controller.admin.dataset.vo.ReportDatasetSaveReqVO;
|
import com.cf.imes.module.report.controller.admin.dataset.vo.ReportDatasetSaveReqVO;
|
||||||
import com.cf.imes.module.report.dal.dataobject.dataset.ReportDatasetDO;
|
import com.cf.imes.module.report.dal.dataobject.dataset.ReportDatasetDO;
|
||||||
|
import com.cf.imes.module.report.dal.dataobject.datasource.ReportDatasourceDO;
|
||||||
|
import com.cf.imes.module.report.dal.dataobject.template.ReportTemplateDO;
|
||||||
import com.cf.imes.module.report.dal.mysql.dataset.ReportDatasetMapper;
|
import com.cf.imes.module.report.dal.mysql.dataset.ReportDatasetMapper;
|
||||||
|
import com.cf.imes.module.report.dal.mysql.datasource.ReportDatasourceMapper;
|
||||||
|
import com.cf.imes.module.report.dal.mysql.template.ReportTemplateMapper;
|
||||||
|
import com.cf.imes.module.report.enums.template.ReportTemplateTypeEnum;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
@@ -15,6 +23,9 @@ import java.util.List;
|
|||||||
|
|
||||||
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static com.cf.imes.module.report.enums.ErrorCodeConstants.DATASET_NOT_EXISTS;
|
import static com.cf.imes.module.report.enums.ErrorCodeConstants.DATASET_NOT_EXISTS;
|
||||||
|
import static com.cf.imes.module.report.enums.ErrorCodeConstants.DATASOURCE_NOT_EXISTS;
|
||||||
|
import static com.cf.imes.module.report.enums.ErrorCodeConstants.TEMPLATE_BUILDIN_OPERATION_PERMISSION_ERROR;
|
||||||
|
import static com.cf.imes.module.report.enums.ErrorCodeConstants.TEMPLATE_NOT_EXISTS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 报表数据集 Service 实现类
|
* 报表数据集 Service 实现类
|
||||||
@@ -25,6 +36,12 @@ import static com.cf.imes.module.report.enums.ErrorCodeConstants.DATASET_NOT_EXI
|
|||||||
@Service
|
@Service
|
||||||
@Validated
|
@Validated
|
||||||
public class ReportDatasetServiceImpl implements ReportDatasetService {
|
public class ReportDatasetServiceImpl implements ReportDatasetService {
|
||||||
|
@Resource
|
||||||
|
private ReportTemplateMapper reportTemplateMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ReportDatasourceMapper reportDatasourceMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private ReportDatasetMapper datasetMapper;
|
private ReportDatasetMapper datasetMapper;
|
||||||
|
|
||||||
@@ -65,14 +82,41 @@ public class ReportDatasetServiceImpl implements ReportDatasetService {
|
|||||||
@Override
|
@Override
|
||||||
public void deleteDataset(Long id) {
|
public void deleteDataset(Long id) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
validateDatasetExists(id);
|
ReportDatasetDO reportDatasetDO = validateDatasetExists(id);
|
||||||
|
// 校验内置模板操作权限
|
||||||
|
validateSystemTemplate(reportDatasetDO.getDatasourceId());
|
||||||
// 删除
|
// 删除
|
||||||
datasetMapper.deleteById(id);
|
datasetMapper.deleteById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateDatasetExists(Long id) {
|
private ReportDatasetDO validateDatasetExists(Long id) {
|
||||||
if (datasetMapper.selectById(id) == null) {
|
ReportDatasetDO reportDatasetDO = datasetMapper.selectById(id);
|
||||||
|
if (ObjectUtil.isNull(reportDatasetDO)) {
|
||||||
throw exception(DATASET_NOT_EXISTS);
|
throw exception(DATASET_NOT_EXISTS);
|
||||||
|
} else {
|
||||||
|
return reportDatasetDO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验只有超管可以操作内置模板
|
||||||
|
*
|
||||||
|
* @param datasourceId 数据源id
|
||||||
|
*/
|
||||||
|
private void validateSystemTemplate(Long datasourceId) {
|
||||||
|
ReportDatasourceDO reportDatasourceDO = reportDatasourceMapper.selectById(datasourceId);
|
||||||
|
if (ObjectUtil.isNull(reportDatasourceDO)) {
|
||||||
|
throw exception(DATASOURCE_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
ReportTemplateDO templateDO = reportTemplateMapper.selectById(reportDatasourceDO.getTemplateId());
|
||||||
|
if (ObjectUtil.isNull(templateDO)) {
|
||||||
|
throw exception(TEMPLATE_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
||||||
|
boolean isSuperAdmin = loginUser != null && loginUser.getIsSupAdmin();
|
||||||
|
// 非超管不能操作内置模板
|
||||||
|
if (ReportTemplateTypeEnum.SYSTEM.equals(templateDO.getType()) && !isSuperAdmin) {
|
||||||
|
throw exception(TEMPLATE_BUILDIN_OPERATION_PERMISSION_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+34
-4
@@ -26,8 +26,10 @@ import com.cf.imes.module.report.controller.admin.datasource.vo.ReportDatasource
|
|||||||
import com.cf.imes.module.report.controller.admin.datasource.vo.ReportDatasourceSaveReqVO;
|
import com.cf.imes.module.report.controller.admin.datasource.vo.ReportDatasourceSaveReqVO;
|
||||||
import com.cf.imes.module.report.dal.dataobject.dataset.ReportDatasetDO;
|
import com.cf.imes.module.report.dal.dataobject.dataset.ReportDatasetDO;
|
||||||
import com.cf.imes.module.report.dal.dataobject.datasource.ReportDatasourceDO;
|
import com.cf.imes.module.report.dal.dataobject.datasource.ReportDatasourceDO;
|
||||||
|
import com.cf.imes.module.report.dal.dataobject.template.ReportTemplateDO;
|
||||||
import com.cf.imes.module.report.dal.mysql.dataset.ReportDatasetMapper;
|
import com.cf.imes.module.report.dal.mysql.dataset.ReportDatasetMapper;
|
||||||
import com.cf.imes.module.report.dal.mysql.datasource.ReportDatasourceMapper;
|
import com.cf.imes.module.report.dal.mysql.datasource.ReportDatasourceMapper;
|
||||||
|
import com.cf.imes.module.report.dal.mysql.template.ReportTemplateMapper;
|
||||||
import com.cf.imes.module.report.enums.template.ReportTemplateTypeEnum;
|
import com.cf.imes.module.report.enums.template.ReportTemplateTypeEnum;
|
||||||
import com.cf.imes.module.report.framework.ureport.annotation.CfReportSpringbeanDatasource;
|
import com.cf.imes.module.report.framework.ureport.annotation.CfReportSpringbeanDatasource;
|
||||||
import com.cf.imes.module.report.service.dataset.ReportDatasetService;
|
import com.cf.imes.module.report.service.dataset.ReportDatasetService;
|
||||||
@@ -63,6 +65,8 @@ import static com.cf.imes.module.report.enums.ErrorCodeConstants.DATASOURCE_BUIL
|
|||||||
import static com.cf.imes.module.report.enums.ErrorCodeConstants.DATASOURCE_NOT_EXISTS;
|
import static com.cf.imes.module.report.enums.ErrorCodeConstants.DATASOURCE_NOT_EXISTS;
|
||||||
import static com.cf.imes.module.report.enums.ErrorCodeConstants.DATASOURCE_SPRINGBEAN_GET_FAIL;
|
import static com.cf.imes.module.report.enums.ErrorCodeConstants.DATASOURCE_SPRINGBEAN_GET_FAIL;
|
||||||
import static com.cf.imes.module.report.enums.ErrorCodeConstants.DATASOURCE_SPRINGBEAN_METHODS_GET_FAIL;
|
import static com.cf.imes.module.report.enums.ErrorCodeConstants.DATASOURCE_SPRINGBEAN_METHODS_GET_FAIL;
|
||||||
|
import static com.cf.imes.module.report.enums.ErrorCodeConstants.TEMPLATE_BUILDIN_OPERATION_PERMISSION_ERROR;
|
||||||
|
import static com.cf.imes.module.report.enums.ErrorCodeConstants.TEMPLATE_NOT_EXISTS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 报表数据源 Service 实现类
|
* 报表数据源 Service 实现类
|
||||||
@@ -74,6 +78,9 @@ import static com.cf.imes.module.report.enums.ErrorCodeConstants.DATASOURCE_SPRI
|
|||||||
@Validated
|
@Validated
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class ReportDatasourceServiceImpl implements ReportDatasourceService {
|
public class ReportDatasourceServiceImpl implements ReportDatasourceService {
|
||||||
|
@Resource
|
||||||
|
private ReportTemplateMapper reportTemplateMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private ReportDatasourceMapper datasourceMapper;
|
private ReportDatasourceMapper datasourceMapper;
|
||||||
|
|
||||||
@@ -111,7 +118,9 @@ public class ReportDatasourceServiceImpl implements ReportDatasourceService {
|
|||||||
@Override
|
@Override
|
||||||
public void deleteDatasource(Long id) {
|
public void deleteDatasource(Long id) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
validateDatasourceExists(id);
|
ReportDatasourceDO reportDatasourceDO = validateDatasourceExists(id);
|
||||||
|
// 校验内置模板操作权限
|
||||||
|
validateSystemTemplate(reportDatasourceDO.getTemplateId());
|
||||||
// 删除
|
// 删除
|
||||||
datasourceMapper.deleteById(id);
|
datasourceMapper.deleteById(id);
|
||||||
// 删除关联数据集
|
// 删除关联数据集
|
||||||
@@ -334,11 +343,32 @@ public class ReportDatasourceServiceImpl implements ReportDatasourceService {
|
|||||||
/**
|
/**
|
||||||
* 校验数据源是否存在
|
* 校验数据源是否存在
|
||||||
*
|
*
|
||||||
* @param id
|
* @param id 数据源id
|
||||||
*/
|
*/
|
||||||
private void validateDatasourceExists(Long id) {
|
private ReportDatasourceDO validateDatasourceExists(Long id) {
|
||||||
if (datasourceMapper.selectById(id) == null) {
|
ReportDatasourceDO reportDatasourceDO = datasourceMapper.selectById(id);
|
||||||
|
if (reportDatasourceDO == null) {
|
||||||
throw exception(DATASOURCE_NOT_EXISTS);
|
throw exception(DATASOURCE_NOT_EXISTS);
|
||||||
|
} else {
|
||||||
|
return reportDatasourceDO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验只有超管可以操作内置模板
|
||||||
|
*
|
||||||
|
* @param templateId 模板id
|
||||||
|
*/
|
||||||
|
private void validateSystemTemplate(Long templateId) {
|
||||||
|
ReportTemplateDO templateDO = reportTemplateMapper.selectById(templateId);
|
||||||
|
if (ObjectUtil.isNull(templateDO)) {
|
||||||
|
throw exception(TEMPLATE_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
||||||
|
boolean isSuperAdmin = loginUser != null && loginUser.getIsSupAdmin();
|
||||||
|
// 非超管不能操作内置模板
|
||||||
|
if (ReportTemplateTypeEnum.SYSTEM.equals(templateDO.getType()) && !isSuperAdmin) {
|
||||||
|
throw exception(TEMPLATE_BUILDIN_OPERATION_PERMISSION_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+43
-9
@@ -70,6 +70,7 @@ import java.util.Objects;
|
|||||||
|
|
||||||
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static com.cf.imes.module.report.enums.ErrorCodeConstants.TEMPLATE_BUILDIN_OPERATION_PERMISSION_ERROR;
|
import static com.cf.imes.module.report.enums.ErrorCodeConstants.TEMPLATE_BUILDIN_OPERATION_PERMISSION_ERROR;
|
||||||
|
import static com.cf.imes.module.report.enums.ErrorCodeConstants.TEMPLATE_NAME_UNIQE_ERROR;
|
||||||
import static com.cf.imes.module.report.enums.ErrorCodeConstants.TEMPLATE_NOT_EXISTS;
|
import static com.cf.imes.module.report.enums.ErrorCodeConstants.TEMPLATE_NOT_EXISTS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -96,9 +97,14 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
|||||||
@Resource
|
@Resource
|
||||||
private ReportDatasetMapper datasetMapper;
|
private ReportDatasetMapper datasetMapper;
|
||||||
|
|
||||||
|
private static final String UTF8_CHARSET = CharsetUtil.UTF_8;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Long createReportTemplate(ReportTemplateSaveReqVO createReqVO) {
|
public Long createReportTemplate(ReportTemplateSaveReqVO createReqVO) {
|
||||||
|
boolean isSuperAdmin = SecurityFrameworkUtils.isSuperAdmin();
|
||||||
|
// 校验模板名唯一性
|
||||||
|
validateTemplateNameUnique(createReqVO, isSuperAdmin);
|
||||||
// url解码xml
|
// url解码xml
|
||||||
String content = createReqVO.getContent();
|
String content = createReqVO.getContent();
|
||||||
if (StringUtils.isNotEmpty(content)) {
|
if (StringUtils.isNotEmpty(content)) {
|
||||||
@@ -107,8 +113,6 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
|||||||
// 新增模板
|
// 新增模板
|
||||||
ReportTemplateDO template = BeanUtils.toBean(createReqVO, ReportTemplateDO.class);
|
ReportTemplateDO template = BeanUtils.toBean(createReqVO, ReportTemplateDO.class);
|
||||||
// 超管创建的作为内置模板
|
// 超管创建的作为内置模板
|
||||||
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
|
||||||
boolean isSuperAdmin = loginUser != null && loginUser.getIsSupAdmin();
|
|
||||||
if (isSuperAdmin) {
|
if (isSuperAdmin) {
|
||||||
template.setType(ReportTemplateTypeEnum.SYSTEM);
|
template.setType(ReportTemplateTypeEnum.SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
@@ -125,15 +129,24 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Long copyReportTemplate(ReportTemplateSaveReqVO createReqVO) {
|
public Long copyReportTemplate(ReportTemplateSaveReqVO createReqVO) {
|
||||||
|
boolean isSuperAdmin = SecurityFrameworkUtils.isSuperAdmin();
|
||||||
Long templateId = createReqVO.getId();
|
Long templateId = createReqVO.getId();
|
||||||
// 校验存在
|
// 校验存在
|
||||||
ReportTemplateDO reportTemplateDO = validateTemplateExists(templateId);
|
ReportTemplateDO reportTemplateDO = validateTemplateExists(templateId);
|
||||||
|
// 校验模板名唯一性
|
||||||
|
validateTemplateNameUnique(createReqVO, isSuperAdmin);
|
||||||
// 校验内置模板操作权限
|
// 校验内置模板操作权限
|
||||||
validateSystemTemplate(reportTemplateDO);
|
validateSystemTemplate(reportTemplateDO);
|
||||||
ReportTemplateDO copyTemplateDO = BeanUtils.toBean(reportTemplateDO, ReportTemplateDO.class);
|
ReportTemplateDO copyTemplateDO = BeanUtils.toBean(reportTemplateDO, ReportTemplateDO.class);
|
||||||
// 重置id
|
// 重置id
|
||||||
copyTemplateDO.setId(null);
|
copyTemplateDO.setId(null);
|
||||||
copyTemplateDO.setName(createReqVO.getName());
|
copyTemplateDO.setName(createReqVO.getName());
|
||||||
|
// 超管创建的作为内置模板
|
||||||
|
if (isSuperAdmin) {
|
||||||
|
copyTemplateDO.setType(ReportTemplateTypeEnum.SYSTEM);
|
||||||
|
} else {
|
||||||
|
copyTemplateDO.setType(ReportTemplateTypeEnum.CUSTOM);
|
||||||
|
}
|
||||||
// 新增模版
|
// 新增模版
|
||||||
templateMapper.insert(copyTemplateDO);
|
templateMapper.insert(copyTemplateDO);
|
||||||
Long newtemplateId = copyTemplateDO.getId();
|
Long newtemplateId = copyTemplateDO.getId();
|
||||||
@@ -217,6 +230,8 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
|||||||
Long templateId = updateReqVO.getId();
|
Long templateId = updateReqVO.getId();
|
||||||
// 校验存在
|
// 校验存在
|
||||||
ReportTemplateDO reportTemplateDO = validateTemplateExists(templateId);
|
ReportTemplateDO reportTemplateDO = validateTemplateExists(templateId);
|
||||||
|
// 校验模板名唯一性
|
||||||
|
validateTemplateNameUnique(updateReqVO, SecurityFrameworkUtils.isSuperAdmin());
|
||||||
// 校验内置模板操作权限
|
// 校验内置模板操作权限
|
||||||
validateSystemTemplate(reportTemplateDO);
|
validateSystemTemplate(reportTemplateDO);
|
||||||
// url解码xml
|
// url解码xml
|
||||||
@@ -257,8 +272,7 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
|||||||
* 校验只有超管可以操作内置模板
|
* 校验只有超管可以操作内置模板
|
||||||
*/
|
*/
|
||||||
private void validateSystemTemplate(ReportTemplateDO templateDO) {
|
private void validateSystemTemplate(ReportTemplateDO templateDO) {
|
||||||
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
boolean isSuperAdmin = SecurityFrameworkUtils.isSuperAdmin();
|
||||||
boolean isSuperAdmin = loginUser != null && loginUser.getIsSupAdmin();
|
|
||||||
// 非超管不能操作内置模板
|
// 非超管不能操作内置模板
|
||||||
if (ReportTemplateTypeEnum.SYSTEM.equals(templateDO.getType()) && !isSuperAdmin) {
|
if (ReportTemplateTypeEnum.SYSTEM.equals(templateDO.getType()) && !isSuperAdmin) {
|
||||||
throw exception(TEMPLATE_BUILDIN_OPERATION_PERMISSION_ERROR);
|
throw exception(TEMPLATE_BUILDIN_OPERATION_PERMISSION_ERROR);
|
||||||
@@ -279,6 +293,26 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验唯一性约束
|
||||||
|
*
|
||||||
|
* @param reqVO
|
||||||
|
*/
|
||||||
|
private void validateTemplateNameUnique(ReportTemplateSaveReqVO reqVO, boolean isSuperAdmin) {
|
||||||
|
Long templateId = reqVO.getId();
|
||||||
|
String name = reqVO.getName();
|
||||||
|
LambdaQueryWrapper<ReportTemplateDO> wrapper = new LambdaQueryWrapperX<ReportTemplateDO>().eq(ReportTemplateDO::getName, name);
|
||||||
|
if (ObjectUtil.isNotNull(templateId)) {
|
||||||
|
wrapper.ne(ReportTemplateDO::getId, templateId);
|
||||||
|
}
|
||||||
|
if (isSuperAdmin) {
|
||||||
|
wrapper.eq(ReportTemplateDO::getType, ReportTemplateTypeEnum.SYSTEM);
|
||||||
|
}
|
||||||
|
if (templateMapper.exists(wrapper)) {
|
||||||
|
throw exception(TEMPLATE_NAME_UNIQE_ERROR, name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ReportTemplateDO getReportTemplate(Long id) {
|
public ReportTemplateDO getReportTemplate(Long id) {
|
||||||
// 校验模板
|
// 校验模板
|
||||||
@@ -370,7 +404,7 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
|||||||
.orderByDesc(ReportTemplateDO::getCreateTime)
|
.orderByDesc(ReportTemplateDO::getCreateTime)
|
||||||
// 不返回content xml,点击具体的模板中返回xml
|
// 不返回content xml,点击具体的模板中返回xml
|
||||||
.select(ReportTemplateDO::getId, ReportTemplateDO::getName, ReportTemplateDO::getCreateTime, ReportTemplateDO::getRemark);
|
.select(ReportTemplateDO::getId, ReportTemplateDO::getName, ReportTemplateDO::getCreateTime, ReportTemplateDO::getRemark);
|
||||||
if (loginUser != null && Boolean.FALSE.equals(loginUser.getIsSupAdmin())) {
|
if (ObjectUtil.isNotNull(loginUser) && Boolean.FALSE.equals(loginUser.getIsSupAdmin())) {
|
||||||
// 普通用户查看机构下的和system模板
|
// 普通用户查看机构下的和system模板
|
||||||
queryWrapper.or(wrapper -> wrapper
|
queryWrapper.or(wrapper -> wrapper
|
||||||
.eq(ReportTemplateDO::getOrganId, loginUser.getOrganId())
|
.eq(ReportTemplateDO::getOrganId, loginUser.getOrganId())
|
||||||
@@ -401,12 +435,12 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
|||||||
report.setChartImages(chartImages);
|
report.setChartImages(chartImages);
|
||||||
try {
|
try {
|
||||||
OutputStream out = response.getOutputStream();
|
OutputStream out = response.getOutputStream();
|
||||||
response.setCharacterEncoding("UTF-8");
|
response.setCharacterEncoding(UTF8_CHARSET);
|
||||||
response.setContentType("application/pdf; charset=UTF-8");
|
response.setContentType("application/pdf; charset=UTF-8");
|
||||||
// 创建下载文件
|
// 创建下载文件
|
||||||
ProducerEnum p = ProducerEnum.PDF;
|
ProducerEnum p = ProducerEnum.PDF;
|
||||||
String downFileName = com.bstek.common.utils.StringUtils.randomFileName() + com.bstek.common.utils.StringUtils.getFileSuffix(p);
|
String downFileName = com.bstek.common.utils.StringUtils.randomFileName() + com.bstek.common.utils.StringUtils.getFileSuffix(p);
|
||||||
response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(downFileName, "UTF-8"));
|
response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(downFileName, UTF8_CHARSET));
|
||||||
response.setHeader("code", "20000");
|
response.setHeader("code", "20000");
|
||||||
ExportUtils.export(out, report, p);
|
ExportUtils.export(out, report, p);
|
||||||
long end = System.currentTimeMillis();
|
long end = System.currentTimeMillis();
|
||||||
@@ -425,12 +459,12 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
|||||||
report.setChartImages(chartImages);
|
report.setChartImages(chartImages);
|
||||||
try {
|
try {
|
||||||
OutputStream out = response.getOutputStream();
|
OutputStream out = response.getOutputStream();
|
||||||
response.setCharacterEncoding("UTF-8");
|
response.setCharacterEncoding(UTF8_CHARSET);
|
||||||
response.setContentType("application/octet-stream; charset=UTF-8");
|
response.setContentType("application/octet-stream; charset=UTF-8");
|
||||||
// 创建下载文件
|
// 创建下载文件
|
||||||
ProducerEnum p = ProducerEnum.valueOf(type.toUpperCase());
|
ProducerEnum p = ProducerEnum.valueOf(type.toUpperCase());
|
||||||
String downFileName = com.bstek.common.utils.StringUtils.randomFileName() + com.bstek.common.utils.StringUtils.getFileSuffix(p);
|
String downFileName = com.bstek.common.utils.StringUtils.randomFileName() + com.bstek.common.utils.StringUtils.getFileSuffix(p);
|
||||||
response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(downFileName, "UTF-8"));
|
response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(downFileName, UTF8_CHARSET));
|
||||||
response.setHeader("code", "20000");
|
response.setHeader("code", "20000");
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
ExportUtils.export(out, report, p);
|
ExportUtils.export(out, report, p);
|
||||||
|
|||||||
Reference in New Issue
Block a user