Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
appbuild
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
appbuild
Commits
78803d36
Commit
78803d36
authored
Dec 02, 2022
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改前端生成页面
parent
34a3d06a
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
10021 additions
and
9541 deletions
+10021
-9541
appbuild-manage-ui/admin/src/views/system/gentable/genInfoForm.vue
...manage-ui/admin/src/views/system/gentable/genInfoForm.vue
+9
-12
appbuild-manage-ui/admin/yarn.lock
appbuild-manage-ui/admin/yarn.lock
+9797
-9523
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/service/impl/GentableServiceImpl.java
...ase/system/gentable/service/impl/GentableServiceImpl.java
+1
-1
appbuild-manager/src/main/java/com/mortals/xhx/common/utils/ReadDoc.java
...r/src/main/java/com/mortals/xhx/common/utils/ReadDoc.java
+214
-5
No files found.
appbuild-manage-ui/admin/src/views/system/gentable/genInfoForm.vue
View file @
78803d36
...
@@ -83,14 +83,12 @@
...
@@ -83,14 +83,12 @@
<el-tooltip
content=
"生成前端导入导出功能"
placement=
"top"
>
<el-tooltip
content=
"生成前端导入导出功能"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
</el-tooltip>
</span>
</span>
<el-select
v-model=
"info.isGenExport"
>
<el-select
v-model=
"info.isGenExport"
>
<el-option
label=
"是"
value=
"1"
/>
<el-option
label=
"是"
value=
"1"
/>
<el-option
label=
"否"
value=
"0"
/>
<el-option
label=
"否"
value=
"0"
/>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
...
@@ -108,15 +106,12 @@
...
@@ -108,15 +106,12 @@
<el-select
v-model=
"info.isShowControl"
>
<el-select
v-model=
"info.isShowControl"
>
<el-option
label=
"RequestForm"
value=
"0"
/>
<el-option
label=
"RequestForm"
value=
"0"
/>
<!--
<el-option
label=
"RequestPOSTMapping"
value=
"1"
/>
-->
<el-option
label=
"RequestJsonBody"
value=
"2"
/>
<el-option
label=
"RequestJsonBody"
value=
"2"
/>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
"detailShow"
>
<el-form-item
prop=
"detailShow"
>
<span
slot=
"label"
<span
slot=
"label"
...
@@ -131,9 +126,9 @@
...
@@ -131,9 +126,9 @@
<el-select
v-model=
"info.detailShow"
>
<el-select
v-model=
"info.detailShow"
>
<el-option
label=
"独立页面"
value=
"0"
/>
<el-option
label=
"独立页面"
value=
"0"
/>
<el-option
label=
"弹出窗口"
value=
"1"
/>
<el-option
label=
"弹出窗口"
value=
"1"
/>
<el-option
label=
"抽屉"
value=
"2"
/>
<el-option
label=
"抽屉"
value=
"2"
/>
</el-select>
</el-select>
...
@@ -206,6 +201,7 @@
...
@@ -206,6 +201,7 @@
</span>
</span>
<el-select
v-model=
"info.treeCode"
placeholder=
"请选择"
>
<el-select
v-model=
"info.treeCode"
placeholder=
"请选择"
>
<el-option
<el-option
style=
"width:300px"
v-for=
"(column, index) in subColumns"
v-for=
"(column, index) in subColumns"
:key=
"index"
:key=
"index"
:label=
"column.columnName + ':' + column.columnComment"
:label=
"column.columnName + ':' + column.columnComment"
...
@@ -226,8 +222,8 @@
...
@@ -226,8 +222,8 @@
</el-tooltip>
</el-tooltip>
</span>
</span>
<el-select
v-model=
"info.treeParentCode"
placeholder=
"请选择"
>
<el-select
v-model=
"info.treeParentCode"
placeholder=
"请选择"
>
<el-option
<el-option
style=
"width:300px"
v-for=
"(column, index) in subColumns"
v-for=
"(column, index) in subColumns"
:key=
"index"
:key=
"index"
:label=
"column.columnName + ':' + column.columnComment"
:label=
"column.columnName + ':' + column.columnComment"
:value=
"column.columnName"
:value=
"column.columnName"
...
@@ -248,6 +244,7 @@
...
@@ -248,6 +244,7 @@
</span>
</span>
<el-select
v-model=
"info.treeName"
placeholder=
"请选择"
>
<el-select
v-model=
"info.treeName"
placeholder=
"请选择"
>
<el-option
<el-option
style=
"width:300px"
v-for=
"(column, index) in subColumns"
v-for=
"(column, index) in subColumns"
:key=
"index"
:key=
"index"
:label=
"column.columnName + ':' + column.columnComment"
:label=
"column.columnName + ':' + column.columnComment"
...
@@ -295,7 +292,7 @@
...
@@ -295,7 +292,7 @@
</span>
</span>
<el-select
<el-select
v-model=
"info.subTableFkName"
v-model=
"info.subTableFkName"
@
change=
"
subselect
"
@
change=
"
$forceUpdate()
"
style=
"width: 100%"
style=
"width: 100%"
placeholder=
"请选择关联的子表外键名"
placeholder=
"请选择关联的子表外键名"
>
>
...
...
appbuild-manage-ui/admin/yarn.lock
View file @
78803d36
This source diff could not be displayed because it is too large. You can
view the blob
instead.
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/service/impl/GentableServiceImpl.java
View file @
78803d36
...
@@ -377,8 +377,8 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
...
@@ -377,8 +377,8 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
@Override
@Override
public
void
importDoc
(
MultipartFile
file
,
Long
appId
,
Context
context
)
{
public
void
importDoc
(
MultipartFile
file
,
Long
appId
,
Context
context
)
{
List
<
GentableEntity
>
tableList
=
ReadDoc
.
readWord
(
file
);
try
{
try
{
List
<
GentableEntity
>
tableList
=
ReadDoc
.
readWord
(
file
);
//String operName = context.getUser().getLoginName();
//String operName = context.getUser().getLoginName();
String
operName
=
"admin"
;
String
operName
=
"admin"
;
for
(
GentableEntity
table
:
tableList
)
{
for
(
GentableEntity
table
:
tableList
)
{
...
...
appbuild-manager/src/main/java/com/mortals/xhx/common/utils/ReadDoc.java
View file @
78803d36
package
com.mortals.xhx.common.utils
;
package
com.mortals.xhx.common.utils
;
import
cn.hutool.core.io.FileUtil
;
import
cn.hutool.core.io.FileUtil
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.xhx.base.system.gentable.model.GentableColumnEntity
;
import
com.mortals.xhx.base.system.gentable.model.GentableColumnEntity
;
import
com.mortals.xhx.base.system.gentable.model.GentableEntity
;
import
com.mortals.xhx.base.system.gentable.model.GentableEntity
;
import
lombok.experimental.UtilityClass
;
import
lombok.experimental.UtilityClass
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.poi.hwpf.HWPFDocument
;
import
org.apache.poi.hwpf.HWPFDocument
;
import
org.apache.poi.hwpf.usermodel.*
;
import
org.apache.poi.hwpf.usermodel.*
;
import
org.apache.poi.poifs.filesystem.FileMagic
;
import
org.apache.poi.poifs.filesystem.POIFSFileSystem
;
import
org.apache.poi.poifs.filesystem.POIFSFileSystem
;
import
org.apache.poi.xwpf.usermodel.XWPFDocument
;
import
org.apache.poi.xwpf.usermodel.XWPFDocument
;
import
org.apache.poi.xwpf.usermodel.XWPFTable
;
import
org.apache.poi.xwpf.usermodel.XWPFTable
;
...
@@ -15,6 +18,7 @@ import org.springframework.util.ObjectUtils;
...
@@ -15,6 +18,7 @@ import org.springframework.util.ObjectUtils;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.FileInputStream
;
import
java.io.FileInputStream
;
import
java.io.InputStream
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.List
;
...
@@ -23,14 +27,12 @@ import java.util.List;
...
@@ -23,14 +27,12 @@ import java.util.List;
* @author: zxfei
* @author: zxfei
* @date: 2021/10/11 21:40
* @date: 2021/10/11 21:40
*/
*/
@Slf4j
public
class
ReadDoc
{
public
class
ReadDoc
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
}
}
/**
/**
* 读取文档中表格
* 读取文档中表格
*
*
...
@@ -40,11 +42,216 @@ public class ReadDoc {
...
@@ -40,11 +42,216 @@ public class ReadDoc {
List
<
GentableEntity
>
docTables
=
new
ArrayList
<>();
List
<
GentableEntity
>
docTables
=
new
ArrayList
<>();
try
{
try
{
// 处理docx格式 即office2007以后版本
// 处理docx格式 即office2007以后版本
InputStream
ins
=
FileMagic
.
prepareToCheckMagic
(
file
.
getInputStream
());
if
(
FileMagic
.
valueOf
(
ins
)
==
FileMagic
.
OLE2
)
{
// 处理doc格式 即office2003版本
POIFSFileSystem
pfs
=
new
POIFSFileSystem
(
file
.
getInputStream
());
HWPFDocument
hwpf
=
new
HWPFDocument
(
pfs
);
Range
range
=
hwpf
.
getRange
();
//得到文档的读取范围
TableIterator
it
=
new
TableIterator
(
range
);
while
(
it
.
hasNext
())
{
List
<
GentableColumnEntity
>
columns
=
new
ArrayList
<
GentableColumnEntity
>();
Table
table
=
it
.
next
();
// XWPFTable table = (XWPFTable) next;
GentableEntity
docTable
=
new
GentableEntity
();
TableRow
firstRow
=
table
.
getRow
(
0
);
TableCell
firstTdCell
=
firstRow
.
getCell
(
0
);
String
firstStr
=
firstTdCell
.
text
();
String
[]
split
=
firstStr
.
split
(
":"
);
if
(
split
.
length
<
2
)
{
continue
;
}
String
tableName
=
split
[
1
];
String
[]
vals
=
tableName
.
split
(
"_"
);
if
(
tableName
.
toLowerCase
().
indexOf
(
"yyyymmdd"
)
!=
-
1
)
{
docTable
.
setDividedTableType
(
1
);
}
else
if
(
tableName
.
toLowerCase
().
indexOf
(
"yyyyww"
)
!=
-
1
)
{
docTable
.
setDividedTableType
(
2
);
}
else
if
(
tableName
.
toLowerCase
().
indexOf
(
"yyyymm"
)
!=
-
1
)
{
docTable
.
setDividedTableType
(
3
);
}
else
if
(
tableName
.
toLowerCase
().
indexOf
(
"yyyy"
)
!=
-
1
)
{
docTable
.
setDividedTableType
(
4
);
}
else
{
docTable
.
setDividedTableType
(
0
);
}
if
(
vals
[
vals
.
length
-
1
].
toLowerCase
().
startsWith
(
"yyyy"
))
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
vals
.
length
-
1
;
i
++)
{
sb
.
append
(
vals
[
i
]);
if
(
i
<
vals
.
length
-
2
)
{
sb
.
append
(
"_"
);
}
}
tableName
=
sb
.
toString
();
}
docTable
.
setTableName
(
tableName
.
trim
());
docTable
.
setTableComment
(
split
[
0
].
replace
(
",表名"
,
""
).
trim
());
// System.out.println("这是第" + num + "个表的数据");
int
rows
=
table
.
numRows
();
//读取每一行数据,每一行为一列
for
(
int
i
=
2
;
i
<
rows
;
i
++)
{
GentableColumnEntity
column
=
new
GentableColumnEntity
();
TableRow
row
=
table
.
getRow
(
i
);
//判断是否第一个列数据为空 如果为空 跳过
// if ("".equals(row.getCell(0).getText().trim())) {
// continue;
// }
//读取每一列数据
// List<TableCell> cells = row.getCell();
//列名
TableCell
cell
=
row
.
getCell
(
1
);
column
.
setColumnName
(
cell
.
text
().
trim
());
//数据类型
cell
=
row
.
getCell
(
2
);
column
.
setColumnType
(
cell
.
text
().
trim
());
//是否必填
cell
=
row
.
getCell
(
3
);
column
.
setIsRequired
(
"是"
.
equals
(
cell
.
text
().
trim
())
?
1
:
0
);
//是否主键
cell
=
row
.
getCell
(
4
);
column
.
setIsPrimaryKey
(
"是"
.
equals
(
cell
.
text
().
trim
())
?
1
:
0
);
//是否自增
cell
=
row
.
getCell
(
5
);
column
.
setIsIncrement
(
"是"
.
equals
(
cell
.
text
().
trim
())
?
1
:
0
);
//是否列表
cell
=
row
.
getCell
(
6
);
column
.
setIsList
(
"是"
.
equals
(
cell
.
text
().
trim
())
?
1
:
0
);
//是否导入导出
cell
=
row
.
getCell
(
7
);
column
.
setIsExport
(
"是"
.
equals
(
cell
.
text
().
trim
())
?
1
:
0
);
//是否查询
cell
=
row
.
getCell
(
8
);
column
.
setIsQuery
(
"是"
.
equals
(
cell
.
text
().
trim
())
?
1
:
0
);
//默认值
cell
=
row
.
getCell
(
9
);
if
(!
ObjectUtils
.
isEmpty
(
cell
.
text
().
trim
()))
{
column
.
setDefaultValue
(
cell
.
text
().
trim
());
}
else
{
column
.
setDefaultValue
(
""
);
}
//备注信息
cell
=
row
.
getCell
(
10
);
column
.
setColumnComment
(
cell
.
text
().
trim
());
columns
.
add
(
column
);
}
docTable
.
setColumns
(
columns
);
docTables
.
add
(
docTable
);
}
}
else
if
(
FileMagic
.
valueOf
(
ins
)
==
FileMagic
.
OOXML
)
{
XWPFDocument
xwpf
=
new
XWPFDocument
(
file
.
getInputStream
());
//得到word文档的信息
Iterator
<
XWPFTable
>
it
=
xwpf
.
getTablesIterator
();
//得到word中的表格
while
(
it
.
hasNext
())
{
List
<
GentableColumnEntity
>
columns
=
new
ArrayList
<>();
XWPFTable
table
=
it
.
next
();
GentableEntity
docTable
=
new
GentableEntity
();
XWPFTableRow
firstRow
=
table
.
getRow
(
0
);
XWPFTableCell
firstTdCell
=
firstRow
.
getCell
(
0
);
String
firstStr
=
firstTdCell
.
getText
();
String
[]
split
=
firstStr
.
split
(
":"
);
if
(
split
.
length
<
2
)
{
continue
;
}
String
tableName
=
split
[
1
];
String
[]
vals
=
tableName
.
split
(
"_"
);
if
(
tableName
.
toLowerCase
().
indexOf
(
"yyyymmdd"
)
!=
-
1
)
{
docTable
.
setDividedTableType
(
1
);
}
else
if
(
tableName
.
toLowerCase
().
indexOf
(
"yyyyww"
)
!=
-
1
)
{
docTable
.
setDividedTableType
(
2
);
}
else
if
(
tableName
.
toLowerCase
().
indexOf
(
"yyyymm"
)
!=
-
1
)
{
docTable
.
setDividedTableType
(
3
);
}
else
if
(
tableName
.
toLowerCase
().
indexOf
(
"yyyy"
)
!=
-
1
)
{
docTable
.
setDividedTableType
(
4
);
}
else
{
docTable
.
setDividedTableType
(
0
);
}
if
(
vals
[
vals
.
length
-
1
].
toLowerCase
().
startsWith
(
"yyyy"
))
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
vals
.
length
-
1
;
i
++)
{
sb
.
append
(
vals
[
i
]);
if
(
i
<
vals
.
length
-
2
)
{
sb
.
append
(
"_"
);
}
}
tableName
=
sb
.
toString
();
}
docTable
.
setTableName
(
tableName
.
trim
());
docTable
.
setTableComment
(
split
[
0
].
replace
(
",表名"
,
""
).
trim
());
// System.out.println("这是第" + num + "个表的数据");
List
<
XWPFTableRow
>
rows
=
table
.
getRows
();
//读取每一行数据,每一行为一列
for
(
int
i
=
2
;
i
<
rows
.
size
();
i
++)
{
GentableColumnEntity
column
=
new
GentableColumnEntity
();
XWPFTableRow
row
=
rows
.
get
(
i
);
//判断是否第一个列数据为空 如果为空 跳过
// if ("".equals(row.getCell(0).getText().trim())) {
// continue;
// }
//读取每一列数据
List
<
XWPFTableCell
>
cells
=
row
.
getTableCells
();
//列名
XWPFTableCell
cell
=
cells
.
get
(
1
);
column
.
setColumnName
(
cell
.
getText
().
trim
());
//数据类型
cell
=
cells
.
get
(
2
);
column
.
setColumnType
(
cell
.
getText
().
trim
());
//是否必填
cell
=
cells
.
get
(
3
);
column
.
setIsRequired
(
"是"
.
equals
(
cell
.
getText
().
trim
())
?
1
:
0
);
//是否主键
cell
=
cells
.
get
(
4
);
column
.
setIsPrimaryKey
(
"是"
.
equals
(
cell
.
getText
().
trim
())
?
1
:
0
);
//是否自增
cell
=
cells
.
get
(
5
);
column
.
setIsIncrement
(
"是"
.
equals
(
cell
.
getText
().
trim
())
?
1
:
0
);
//是否列表
cell
=
cells
.
get
(
6
);
column
.
setIsList
(
"是"
.
equals
(
cell
.
getText
().
trim
())
?
1
:
0
);
//是否导入导出
cell
=
cells
.
get
(
7
);
column
.
setIsExport
(
"是"
.
equals
(
cell
.
getText
().
trim
())
?
1
:
0
);
//是否查询
cell
=
cells
.
get
(
8
);
column
.
setIsQuery
(
"是"
.
equals
(
cell
.
getText
().
trim
())
?
1
:
0
);
//默认值
cell
=
cells
.
get
(
9
);
if
(!
ObjectUtils
.
isEmpty
(
cell
.
getText
().
trim
()))
{
column
.
setDefaultValue
(
cell
.
getText
().
trim
());
}
else
{
column
.
setDefaultValue
(
""
);
}
//备注信息
cell
=
cells
.
get
(
10
);
column
.
setColumnComment
(
cell
.
getText
().
trim
());
columns
.
add
(
column
);
}
docTable
.
setColumns
(
columns
);
docTables
.
add
(
docTable
);
}
}
else
{
throw
new
AppException
(
"当前未知文档类型"
);
}
/*
if (FileUtil.getSuffix(file.getOriginalFilename()).toLowerCase().endsWith("docx")) {
if (FileUtil.getSuffix(file.getOriginalFilename()).toLowerCase().endsWith("docx")) {
XWPFDocument xwpf = new XWPFDocument(file.getInputStream());//得到word文档的信息
XWPFDocument xwpf = new XWPFDocument(file.getInputStream());//得到word文档的信息
Iterator<XWPFTable> it = xwpf.getTablesIterator();//得到word中的表格
Iterator<XWPFTable> it = xwpf.getTablesIterator();//得到word中的表格
while (it.hasNext()) {
while (it.hasNext()) {
List
<
GentableColumnEntity
>
columns
=
new
ArrayList
<
GentableColumnEntity
>();
List<GentableColumnEntity> columns = new ArrayList<>();
XWPFTable table = it.next();
XWPFTable table = it.next();
GentableEntity docTable = new GentableEntity();
GentableEntity docTable = new GentableEntity();
XWPFTableRow firstRow = table.getRow(0);
XWPFTableRow firstRow = table.getRow(0);
...
@@ -240,9 +447,11 @@ public class ReadDoc {
...
@@ -240,9 +447,11 @@ public class ReadDoc {
}
}
}
}
*/
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
"读取文档异常"
,
e
);
throw
new
AppException
(
e
.
getMessage
());
}
}
return
docTables
;
return
docTables
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment