报表模板、数据源、数据集主键使用雪花算法替换自增

This commit is contained in:
gaoqr
2024-12-09 09:26:45 +08:00
parent 3450c2c19e
commit ed656582bf
4 changed files with 25 additions and 1 deletions
@@ -2,6 +2,7 @@ package com.cf.imes.module.report.service.dataset;
import cn.hutool.core.util.ObjectUtil; 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.generator.SnowFlakeGenerator;
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.util.SecurityFrameworkUtils; 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;
@@ -37,6 +38,9 @@ public class ReportDatasetServiceImpl implements ReportDatasetService {
@Resource @Resource
private ReportDatasetMapper datasetMapper; private ReportDatasetMapper datasetMapper;
@Resource
private SnowFlakeGenerator snowFlakeGenerator;
@Override @Override
public Long createDataset(ReportDatasetSaveReqVO createReqVO) { public Long createDataset(ReportDatasetSaveReqVO createReqVO) {
// 校验内置模板操作权限 // 校验内置模板操作权限
@@ -45,6 +49,8 @@ public class ReportDatasetServiceImpl implements ReportDatasetService {
ReportDatasetDO dataset = BeanUtils.toBean(createReqVO, ReportDatasetDO.class); ReportDatasetDO dataset = BeanUtils.toBean(createReqVO, ReportDatasetDO.class);
// 数据集机构id和数据源统一 // 数据集机构id和数据源统一
dataset.setOrganId(reportDatasourceDO.getOrganId()); dataset.setOrganId(reportDatasourceDO.getOrganId());
// 生成id
dataset.setId((Long) snowFlakeGenerator.nextId(null));
datasetMapper.insert(dataset); datasetMapper.insert(dataset);
// 返回 // 返回
return dataset.getId(); return dataset.getId();
@@ -17,6 +17,7 @@ import com.bstek.ureport.utils.ProcedureUtils;
import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil; import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
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.generator.SnowFlakeGenerator;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; 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.aop.OrganIgnore;
import com.cf.imes.framework.security.core.LoginUser; import com.cf.imes.framework.security.core.LoginUser;
@@ -81,6 +82,9 @@ public class ReportDatasourceServiceImpl implements ReportDatasourceService {
@Resource @Resource
private ReportDatasetMapper datasetMapper; private ReportDatasetMapper datasetMapper;
@Resource
private SnowFlakeGenerator snowFlakeGenerator;
private final ApplicationContext applicationContext; private final ApplicationContext applicationContext;
public ReportDatasourceServiceImpl(ApplicationContext applicationContext) { public ReportDatasourceServiceImpl(ApplicationContext applicationContext) {
@@ -93,6 +97,8 @@ public class ReportDatasourceServiceImpl implements ReportDatasourceService {
validateSystemDatasource(createReqVO.getBuildinType()); validateSystemDatasource(createReqVO.getBuildinType());
// 插入 // 插入
ReportDatasourceDO datasource = BeanUtils.toBean(createReqVO, ReportDatasourceDO.class); ReportDatasourceDO datasource = BeanUtils.toBean(createReqVO, ReportDatasourceDO.class);
// 生成id
datasource.setId((Long) snowFlakeGenerator.nextId(null));
datasourceMapper.insert(datasource); datasourceMapper.insert(datasource);
// 返回 // 返回
return datasource.getId(); return datasource.getId();
@@ -36,6 +36,7 @@ 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.common.exception.util.ServiceExceptionUtil; import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
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.generator.SnowFlakeGenerator;
import com.cf.imes.framework.security.core.LoginUser; import com.cf.imes.framework.security.core.LoginUser;
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplatePreviewReqVO; import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplatePreviewReqVO;
@@ -99,6 +100,9 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
@Resource @Resource
private ReportDatasetMapper datasetMapper; private ReportDatasetMapper datasetMapper;
@Resource
private SnowFlakeGenerator snowFlakeGenerator;
private static final String UTF8_CHARSET = CharsetUtil.UTF_8; private static final String UTF8_CHARSET = CharsetUtil.UTF_8;
private static final String ATTACHMENT_PREFIX = "attachment; filename="; private static final String ATTACHMENT_PREFIX = "attachment; filename=";
private static final String DATASETIDS_FIELD_NAME = "datasetIds"; private static final String DATASETIDS_FIELD_NAME = "datasetIds";
@@ -120,6 +124,8 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
} }
// 新增模板 // 新增模板
ReportTemplateDO template = BeanUtils.toBean(createReqVO, ReportTemplateDO.class); ReportTemplateDO template = BeanUtils.toBean(createReqVO, ReportTemplateDO.class);
// 生成id
template.setId((Long) snowFlakeGenerator.nextId(null));
// 超管创建的作为内置模板 // 超管创建的作为内置模板
if (isSuperAdmin) { if (isSuperAdmin) {
template.setType(ReportTemplateTypeEnum.SYSTEM); template.setType(ReportTemplateTypeEnum.SYSTEM);
@@ -163,6 +169,8 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
copyTemplateDO.setUpdater(null); copyTemplateDO.setUpdater(null);
copyTemplateDO.setUpdateTime(null); copyTemplateDO.setUpdateTime(null);
copyTemplateDO.setCreateTime(null); copyTemplateDO.setCreateTime(null);
// 生成id
copyTemplateDO.setId((Long) snowFlakeGenerator.nextId(null));
// 新增模版 // 新增模版
templateMapper.insert(copyTemplateDO); templateMapper.insert(copyTemplateDO);
// 返回主键 // 返回主键
@@ -502,6 +510,8 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
if(StringUtils.isEmpty(content)) { if(StringUtils.isEmpty(content)) {
throw new ServiceException(TEMPLATE_IMPORT_CONTENT_EMPTY_ERROR); throw new ServiceException(TEMPLATE_IMPORT_CONTENT_EMPTY_ERROR);
} }
// 生成id
createReqVO.setId((Long) snowFlakeGenerator.nextId(null));
createReqVO.setContent(content); createReqVO.setContent(content);
createReqVO.setDatasetIds(jsonObject.getJSONArray(DATASETIDS_FIELD_NAME).stream().map(s -> Long.parseLong(s.toString())).collect(Collectors.toSet())); createReqVO.setDatasetIds(jsonObject.getJSONArray(DATASETIDS_FIELD_NAME).stream().map(s -> Long.parseLong(s.toString())).collect(Collectors.toSet()));
createReqVO.setDatasourceIds(jsonObject.getJSONArray(DATASOURCEIDS_FIELD_NAME).stream().map(s -> Long.parseLong(s.toString())).collect(Collectors.toSet())); createReqVO.setDatasourceIds(jsonObject.getJSONArray(DATASOURCEIDS_FIELD_NAME).stream().map(s -> Long.parseLong(s.toString())).collect(Collectors.toSet()));
@@ -49,7 +49,9 @@ mybatis-plus:
map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。 map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。
global-config: global-config:
db-config: db-config:
id-type: NONE # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。 worker-id: 0
datacenter-id: 0
id-type: ASSIGN_ID # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。
# id-type: AUTO # 自增 ID,适合 MySQL 等直接自增的数据库 # id-type: AUTO # 自增 ID,适合 MySQL 等直接自增的数据库
# id-type: INPUT # 用户输入 ID,适合 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库 # id-type: INPUT # 用户输入 ID,适合 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库
# id-type: ASSIGN_ID # 分配 ID,默认使用雪花算法。注意,Oracle、PostgreSQL、Kingbase、DB2、H2 数据库时,需要去除实体类上的 @KeySequence 注解 # id-type: ASSIGN_ID # 分配 ID,默认使用雪花算法。注意,Oracle、PostgreSQL、Kingbase、DB2、H2 数据库时,需要去除实体类上的 @KeySequence 注解