diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/template/ReportTemplateMapper.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/template/ReportTemplateMapper.java index 1f47e97ba..898dc2f80 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/template/ReportTemplateMapper.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/template/ReportTemplateMapper.java @@ -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 { 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 * diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java index 79f43283c..78d17d294 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java @@ -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 wrapper = new LambdaQueryWrapperX().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)) { diff --git a/cf-module-report/cf-module-report-biz/src/main/resources/mapper/template/ReportTemplateMapper.xml b/cf-module-report/cf-module-report-biz/src/main/resources/mapper/template/ReportTemplateMapper.xml index e0323a43b..04de1d1e0 100644 --- a/cf-module-report/cf-module-report-biz/src/main/resources/mapper/template/ReportTemplateMapper.xml +++ b/cf-module-report/cf-module-report-biz/src/main/resources/mapper/template/ReportTemplateMapper.xml @@ -1,16 +1,4 @@ - - \ No newline at end of file