mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 12:52:07 +08:00
报表模板名称唯一性校验优化
This commit is contained in:
-11
@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.framework.organ.core.aop.OrganIgnore;
|
||||
import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateSaveReqVO;
|
||||
import com.cf.imes.module.report.dal.dataobject.template.ReportTemplateDO;
|
||||
import com.cf.imes.module.report.enums.template.ReportTemplateTypeEnum;
|
||||
import org.apache.ibatis.annotations.Delete;
|
||||
@@ -62,16 +61,6 @@ public interface ReportTemplateMapper extends BaseMapperX<ReportTemplateDO> {
|
||||
return selectList(queryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询模版名是否重复
|
||||
*
|
||||
* @param reqVO
|
||||
* @param isSuperAdmin
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
int selectExistTemplateName(@Param("reqVO") ReportTemplateSaveReqVO reqVO, @Param("isSuperAdmin") boolean isSuperAdmin, @Param("type") Integer type);
|
||||
|
||||
/**
|
||||
* 根据id物理删除report_template
|
||||
*
|
||||
|
||||
+33
-8
@@ -6,11 +6,13 @@ import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.util.CharsetUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.URLUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import cn.hutool.http.ContentType;
|
||||
import cn.hutool.http.Header;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONException;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.bstek.common.exception.ReportDesignException;
|
||||
import com.bstek.designer.bean.PreviewParameters;
|
||||
import com.bstek.designer.bean.ReportDefinitionWrapper;
|
||||
@@ -38,6 +40,9 @@ import com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants;
|
||||
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
|
||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
||||
import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator;
|
||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.framework.organ.core.aop.OrganIgnore;
|
||||
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
||||
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.template.vo.ReportTemplatePreviewReqVO;
|
||||
@@ -112,12 +117,21 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
@Resource
|
||||
private TenantParamsUtils tenantParamsUtils;
|
||||
|
||||
/**
|
||||
* 获得自身的代理对象,解决 AOP 生效问题
|
||||
*
|
||||
* @return 自己
|
||||
*/
|
||||
private ReportTemplateServiceImpl getSelf() {
|
||||
return SpringUtil.getBean(getClass());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public ReportTemplateRespVO createReportTemplate(ReportTemplateSaveReqVO createReqVO) {
|
||||
boolean isSuperAdmin = SecurityFrameworkUtils.isSuperAdmin();
|
||||
// 校验模板名唯一性
|
||||
validateTemplateNameUnique(createReqVO, isSuperAdmin);
|
||||
getSelf().validateTemplateNameUnique(createReqVO, isSuperAdmin);
|
||||
// url解码xml
|
||||
String content = createReqVO.getContent();
|
||||
if (StringUtils.isNotEmpty(content)) {
|
||||
@@ -152,7 +166,7 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
// 校验存在
|
||||
ReportTemplateDO reportTemplateDO = validateTemplateExists(templateId);
|
||||
// 校验模板名唯一性
|
||||
validateTemplateNameUnique(createReqVO, isSuperAdmin);
|
||||
getSelf().validateTemplateNameUnique(createReqVO, isSuperAdmin);
|
||||
ReportTemplateDO copyTemplateDO = BeanUtils.toBean(reportTemplateDO, ReportTemplateDO.class);
|
||||
// 重置id
|
||||
copyTemplateDO.setId(null);
|
||||
@@ -184,7 +198,7 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
// 校验存在
|
||||
ReportTemplateDO reportTemplateDO = validateTemplateExists(templateId);
|
||||
// 校验模板名唯一性
|
||||
validateTemplateNameUnique(updateReqVO, SecurityFrameworkUtils.isSuperAdmin());
|
||||
getSelf().validateTemplateNameUnique(updateReqVO, SecurityFrameworkUtils.isSuperAdmin());
|
||||
// 校验内置模板操作权限
|
||||
validateSystemTemplate(reportTemplateDO);
|
||||
// url解码xml
|
||||
@@ -252,13 +266,24 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验唯一性约束
|
||||
* 校验唯一性约束(organId+name)
|
||||
*
|
||||
* @param reqVO
|
||||
*/
|
||||
private void validateTemplateNameUnique(ReportTemplateSaveReqVO reqVO, boolean isSuperAdmin) {
|
||||
if (templateMapper.selectExistTemplateName(reqVO, isSuperAdmin, ReportTemplateTypeEnum.SYSTEM.getType()) > 0) {
|
||||
throw exception(TEMPLATE_NAME_UNIQE_ERROR, reqVO.getName());
|
||||
@OrganIgnore
|
||||
void validateTemplateNameUnique(ReportTemplateSaveReqVO reqVO, boolean isSuperAdmin) {
|
||||
Long templateId = reqVO.getId();
|
||||
String name = reqVO.getName();
|
||||
LambdaQueryWrapper<ReportTemplateDO> wrapper = new LambdaQueryWrapperX<ReportTemplateDO>().eq(ReportTemplateDO::getName, name);
|
||||
wrapper.eq(ReportTemplateDO::getOrganId, OrganContextHolder.getOrganId());
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -505,7 +530,7 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
ReportTemplateSaveReqVO createReqVO = new ReportTemplateSaveReqVO();
|
||||
createReqVO.setName(name);
|
||||
// 校验模板名唯一性
|
||||
validateTemplateNameUnique(createReqVO, isSuperAdmin);
|
||||
getSelf().validateTemplateNameUnique(createReqVO, isSuperAdmin);
|
||||
// 复制信息
|
||||
String content = jsonObject.getString("content");
|
||||
if(StringUtils.isEmpty(content)) {
|
||||
|
||||
-12
@@ -1,16 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.cf.imes.module.report.dal.mysql.template.ReportTemplateMapper">
|
||||
|
||||
<select id="selectExistTemplateName" resultType="java.lang.Integer">
|
||||
SELECT COUNT(1)
|
||||
FROM report_template
|
||||
WHERE name = #{reqVO.name}
|
||||
<if test="reqVO.id != null">
|
||||
AND id != #{reqVO.id}
|
||||
</if>
|
||||
<if test="isSuperAdmin">
|
||||
AND type = #{type}
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user