Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
d5bd4998
提交
d5bd4998
authored
2月 04, 2023
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
infra:标准化代码
上级
dd1ed7b8
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
22 行增加
和
6 行删除
+22
-6
CodegenServiceImpl.java
...udao/module/infra/service/codegen/CodegenServiceImpl.java
+22
-6
没有找到文件。
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/CodegenServiceImpl.java
浏览文件 @
d5bd4998
...
...
@@ -28,6 +28,7 @@ import java.util.ArrayList;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.function.BiPredicate
;
import
java.util.stream.Collectors
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
exception
.
util
.
ServiceExceptionUtil
.
exception
;
...
...
@@ -75,7 +76,7 @@ public class CodegenServiceImpl implements CodegenService {
private
Long
createCodegen0
(
Long
userId
,
Long
dataSourceConfigId
,
TableInfo
tableInfo
)
{
// 校验导入的表和字段非空
check
TableInfo
(
tableInfo
);
validate
TableInfo
(
tableInfo
);
// 校验是否已经存在
if
(
codegenTableMapper
.
selectByTableNameAndDataSourceConfigId
(
tableInfo
.
getName
(),
dataSourceConfigId
)
!=
null
)
{
...
...
@@ -86,7 +87,7 @@ public class CodegenServiceImpl implements CodegenService {
CodegenTableDO
table
=
codegenBuilder
.
buildTable
(
tableInfo
);
table
.
setDataSourceConfigId
(
dataSourceConfigId
);
table
.
setScene
(
CodegenSceneEnum
.
ADMIN
.
getScene
());
// 默认配置下,使用管理后台的模板
table
.
setAuthor
(
userApi
.
getUser
(
userId
).
getData
().
getNickname
());
table
.
setAuthor
(
userApi
.
getUser
(
userId
).
get
Checked
Data
().
getNickname
());
codegenTableMapper
.
insert
(
table
);
// 构建 CodegenColumnDO 数组,插入到 DB 中
...
...
@@ -99,7 +100,7 @@ public class CodegenServiceImpl implements CodegenService {
return
table
.
getId
();
}
private
void
check
TableInfo
(
TableInfo
tableInfo
)
{
private
void
validate
TableInfo
(
TableInfo
tableInfo
)
{
if
(
tableInfo
==
null
)
{
throw
exception
(
CODEGEN_IMPORT_TABLE_NULL
);
}
...
...
@@ -148,18 +149,33 @@ public class CodegenServiceImpl implements CodegenService {
private
void
syncCodegen0
(
Long
tableId
,
TableInfo
tableInfo
)
{
// 校验导入的表和字段非空
check
TableInfo
(
tableInfo
);
validate
TableInfo
(
tableInfo
);
List
<
TableField
>
tableFields
=
tableInfo
.
getFields
();
// 构建 CodegenColumnDO 数组,只同步新增的字段
List
<
CodegenColumnDO
>
codegenColumns
=
codegenColumnMapper
.
selectListByTableId
(
tableId
);
Set
<
String
>
codegenColumnNames
=
CollectionUtils
.
convertSet
(
codegenColumns
,
CodegenColumnDO:
:
getColumnName
);
//计算需要修改的字段,插入时重新插入,删除时将原来的删除
BiPredicate
<
TableField
,
CodegenColumnDO
>
pr
=
(
tableField
,
codegenColumn
)
->
tableField
.
getType
().
equals
(
codegenColumn
.
getDataType
())
&&
tableField
.
getMetaInfo
().
isNullable
()
==
codegenColumn
.
getNullable
()
&&
tableField
.
isKeyFlag
()
==
codegenColumn
.
getPrimaryKey
()
&&
tableField
.
getComment
().
equals
(
codegenColumn
.
getColumnComment
());
Map
<
String
,
CodegenColumnDO
>
codegenColumnDOMap
=
CollectionUtils
.
convertMap
(
codegenColumns
,
CodegenColumnDO:
:
getColumnName
);
//需要修改的字段
Set
<
String
>
modifyFieldNames
=
tableFields
.
stream
()
.
filter
(
tableField
->
codegenColumnDOMap
.
get
(
tableField
.
getColumnName
())
!=
null
&&
!
pr
.
test
(
tableField
,
codegenColumnDOMap
.
get
(
tableField
.
getColumnName
())))
.
map
(
TableField:
:
getColumnName
)
.
collect
(
Collectors
.
toSet
());
// 计算需要删除的字段
Set
<
String
>
tableFieldNames
=
CollectionUtils
.
convertSet
(
tableFields
,
TableField:
:
getName
);
Set
<
Long
>
deleteColumnIds
=
codegenColumns
.
stream
().
filter
(
column
->
!
tableFieldNames
.
contains
(
column
.
getColumnName
()))
Set
<
Long
>
deleteColumnIds
=
codegenColumns
.
stream
()
.
filter
(
column
->
(!
tableFieldNames
.
contains
(
column
.
getColumnName
()))
||
modifyFieldNames
.
contains
(
column
.
getColumnName
()))
.
map
(
CodegenColumnDO:
:
getId
).
collect
(
Collectors
.
toSet
());
// 移除已经存在的字段
tableFields
.
removeIf
(
column
->
codegenColumnNames
.
contains
(
column
.
getColumnName
()));
tableFields
.
removeIf
(
column
->
codegenColumnNames
.
contains
(
column
.
getColumnName
())
&&
(!
modifyFieldNames
.
contains
(
column
.
getColumnName
()))
);
if
(
CollUtil
.
isEmpty
(
tableFields
)
&&
CollUtil
.
isEmpty
(
deleteColumnIds
))
{
throw
exception
(
CODEGEN_SYNC_NONE_CHANGE
);
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论