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
5b6faec7
Commit
5b6faec7
authored
Feb 25, 2022
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改部分生成代码逻辑
parent
7a46454f
Changes
39
Hide whitespace changes
Inline
Side-by-side
Showing
39 changed files
with
3074 additions
and
452 deletions
+3074
-452
appbuild-manage-ui/admin/src/views/system/gentable/editTable.vue
...d-manage-ui/admin/src/views/system/gentable/editTable.vue
+17
-13
appbuild-manage-ui/admin/src/views/system/gentable/genInfoForm.vue
...manage-ui/admin/src/views/system/gentable/genInfoForm.vue
+1
-0
appbuild-manage-ui/admin/src/views/system/gentable/list.vue
appbuild-manage-ui/admin/src/views/system/gentable/list.vue
+99
-48
appbuild-manager/pom.xml
appbuild-manager/pom.xml
+7
-1
appbuild-manager/src/main/bin/shutdown.sh
appbuild-manager/src/main/bin/shutdown.sh
+1
-1
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/model/GentableColumnEntityExt.java
...x/base/system/gentable/model/GentableColumnEntityExt.java
+68
-7
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/service/GentableService.java
...als/xhx/base/system/gentable/service/GentableService.java
+2
-2
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/service/impl/GentableServiceImpl.java
...ase/system/gentable/service/impl/GentableServiceImpl.java
+185
-30
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/web/GentableController.java
...tals/xhx/base/system/gentable/web/GentableController.java
+13
-8
appbuild-manager/src/main/java/com/mortals/xhx/common/code/HtmlTypeEnum.java
...c/main/java/com/mortals/xhx/common/code/HtmlTypeEnum.java
+3
-3
appbuild-manager/src/main/java/com/mortals/xhx/common/key/GenConstants.java
...rc/main/java/com/mortals/xhx/common/key/GenConstants.java
+3
-3
appbuild-manager/src/main/java/com/mortals/xhx/common/utils/FreeMarkerUtils.java
...in/java/com/mortals/xhx/common/utils/FreeMarkerUtils.java
+38
-3
appbuild-manager/src/main/java/com/mortals/xhx/common/utils/GenUtils.java
.../src/main/java/com/mortals/xhx/common/utils/GenUtils.java
+40
-20
appbuild-manager/src/main/java/com/mortals/xhx/common/utils/ReadDoc.java
...r/src/main/java/com/mortals/xhx/common/utils/ReadDoc.java
+28
-25
appbuild-manager/src/main/resources/generator.yml
appbuild-manager/src/main/resources/generator.yml
+1
-1
appbuild-manager/src/main/resources/static/doc/AllInOne.md.md
...uild-manager/src/main/resources/static/doc/AllInOne.md.md
+9
-1
appbuild-manager/src/main/resources/static/doc/api.md
appbuild-manager/src/main/resources/static/doc/api.md
+907
-0
appbuild-manager/src/main/resources/template/doc/api-two.md.ftl
...ld-manager/src/main/resources/template/doc/api-two.md.ftl
+420
-0
appbuild-manager/src/main/resources/template/doc/api.md.ftl
appbuild-manager/src/main/resources/template/doc/api.md.ftl
+380
-0
appbuild-manager/src/main/resources/template/doc/apidict.md.ftl
...ld-manager/src/main/resources/template/doc/apidict.md.ftl
+17
-0
appbuild-manager/src/main/resources/template/java/entity-tree.java.ftl
...ger/src/main/resources/template/java/entity-tree.java.ftl
+1
-1
appbuild-manager/src/main/resources/template/java/entity.java.ftl
...-manager/src/main/resources/template/java/entity.java.ftl
+8
-11
appbuild-manager/src/main/resources/template/java/enum.java.ftl
...ld-manager/src/main/resources/template/java/enum.java.ftl
+10
-6
appbuild-manager/src/main/resources/template/java/httpclient.test.ftl
...ager/src/main/resources/template/java/httpclient.test.ftl
+58
-0
appbuild-manager/src/main/resources/template/java/service-tree.java.ftl
...er/src/main/resources/template/java/service-tree.java.ftl
+7
-1
appbuild-manager/src/main/resources/template/java/service.java.ftl
...manager/src/main/resources/template/java/service.java.ftl
+0
-1
appbuild-manager/src/main/resources/template/java/serviceImpl-tree.java.ftl
...rc/main/resources/template/java/serviceImpl-tree.java.ftl
+15
-3
appbuild-manager/src/main/resources/template/java/serviceImpl.java.ftl
...ger/src/main/resources/template/java/serviceImpl.java.ftl
+13
-13
appbuild-manager/src/main/resources/template/java/vo.java.ftl
...uild-manager/src/main/resources/template/java/vo.java.ftl
+1
-1
appbuild-manager/src/main/resources/template/java/web.java.ftl
...ild-manager/src/main/resources/template/java/web.java.ftl
+249
-9
appbuild-manager/src/main/resources/template/sql/menu.sql.ftl
...uild-manager/src/main/resources/template/sql/menu.sql.ftl
+3
-14
appbuild-manager/src/main/resources/template/sql/params.sql.ftl
...ld-manager/src/main/resources/template/sql/params.sql.ftl
+11
-0
appbuild-manager/src/main/resources/template/vue/VueDialogShow.vue.ftl
...ger/src/main/resources/template/vue/VueDialogShow.vue.ftl
+142
-36
appbuild-manager/src/main/resources/template/vue/VueTreeDialogShow.vue.ftl
...src/main/resources/template/vue/VueTreeDialogShow.vue.ftl
+27
-24
appbuild-manager/src/main/resources/template/vue/webVueList.vue.ftl
...anager/src/main/resources/template/vue/webVueList.vue.ftl
+24
-41
appbuild-manager/src/main/resources/template/vue/webVueShow.vue.ftl
...anager/src/main/resources/template/vue/webVueShow.vue.ftl
+52
-107
appbuild-manager/src/main/resources/template/vue/webVueTreeList.vue.ftl
...er/src/main/resources/template/vue/webVueTreeList.vue.ftl
+39
-12
appbuild-manager/src/main/resources/template/vue/webVueView.vue.ftl
...anager/src/main/resources/template/vue/webVueView.vue.ftl
+173
-0
appbuild-manager/src/main/resources/template/xml/sqlMap.xml.ftl
...ld-manager/src/main/resources/template/xml/sqlMap.xml.ftl
+2
-6
No files found.
appbuild-manage-ui/admin/src/views/system/gentable/editTable.vue
View file @
5b6faec7
...
@@ -65,6 +65,7 @@
...
@@ -65,6 +65,7 @@
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-checkbox
<el-checkbox
true-label=
"1"
true-label=
"1"
false-label=
"0"
v-model=
"scope.row.isInsert"
v-model=
"scope.row.isInsert"
></el-checkbox>
></el-checkbox>
</
template
>
</
template
>
...
@@ -73,6 +74,7 @@
...
@@ -73,6 +74,7 @@
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-checkbox
<el-checkbox
true-label=
"1"
true-label=
"1"
false-label=
"0"
v-model=
"scope.row.isEdit"
v-model=
"scope.row.isEdit"
></el-checkbox>
></el-checkbox>
</
template
>
</
template
>
...
@@ -81,6 +83,7 @@
...
@@ -81,6 +83,7 @@
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-checkbox
<el-checkbox
true-label=
"1"
true-label=
"1"
false-label=
"0"
v-model=
"scope.row.isList"
v-model=
"scope.row.isList"
></el-checkbox>
></el-checkbox>
</
template
>
</
template
>
...
@@ -89,6 +92,7 @@
...
@@ -89,6 +92,7 @@
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-checkbox
<el-checkbox
true-label=
"1"
true-label=
"1"
false-label=
"0"
v-model=
"scope.row.isExport"
v-model=
"scope.row.isExport"
></el-checkbox>
></el-checkbox>
</
template
>
</
template
>
...
@@ -97,6 +101,7 @@
...
@@ -97,6 +101,7 @@
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-checkbox
<el-checkbox
true-label=
"1"
true-label=
"1"
false-label=
"0"
v-model=
"scope.row.isSerialize"
v-model=
"scope.row.isSerialize"
></el-checkbox>
></el-checkbox>
</
template
>
</
template
>
...
@@ -105,6 +110,7 @@
...
@@ -105,6 +110,7 @@
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-checkbox
<el-checkbox
true-label=
"1"
true-label=
"1"
false-label=
"0"
v-model=
"scope.row.isQuery"
v-model=
"scope.row.isQuery"
></el-checkbox>
></el-checkbox>
</
template
>
</
template
>
...
@@ -113,6 +119,7 @@
...
@@ -113,6 +119,7 @@
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-checkbox
<el-checkbox
true-label=
"1"
true-label=
"1"
false-label=
"0"
v-model=
"scope.row.isRequired"
v-model=
"scope.row.isRequired"
></el-checkbox>
></el-checkbox>
</
template
>
</
template
>
...
@@ -232,6 +239,14 @@ export default {
...
@@ -232,6 +239,14 @@ export default {
this
.
util_toString
(
entity
,
this
.
toString
)
this
.
util_toString
(
entity
,
this
.
toString
)
);
);
this
.
info
=
this
.
util_toString
(
res
.
data
.
info
,
this
.
toString
);
this
.
info
=
this
.
util_toString
(
res
.
data
.
info
,
this
.
toString
);
if
(
res
.
data
.
info
.
options
){
Object
.
assign
(
this
.
info
,
JSON
.
parse
(
res
.
data
.
info
.
options
));
console
.
log
(
"
info
"
,
this
.
info
)
}
this
.
tables
=
res
.
data
.
tables
;
this
.
tables
=
res
.
data
.
tables
;
this
.
dict
=
Object
.
assign
({},
this
.
dict
,
res
.
data
.
dict
);
this
.
dict
=
Object
.
assign
({},
this
.
dict
,
res
.
data
.
dict
);
this
.
loading
=
false
;
this
.
loading
=
false
;
...
@@ -245,22 +260,12 @@ export default {
...
@@ -245,22 +260,12 @@ export default {
this
.
data
=
this
.
rule2
;
this
.
data
=
this
.
rule2
;
},
},
methods
:
{
methods
:
{
submitAns
(
data
,
label
,
all_data
,
index
)
{
let
ans
=
null
;
if
(
data
)
{
ans
=
deepClone
(
data
);
}
console
.
log
(
this
.
rule
);
this
.
$emit
(
"
submitAns
"
,
data
,
label
,
all_data
,
this
.
moIndex
);
},
/** 提交按钮 */
/** 提交按钮 */
submitForm
()
{
submitForm
()
{
const
basicForm
=
this
.
$refs
.
basicInfo
.
$refs
.
basicInfoForm
;
const
basicForm
=
this
.
$refs
.
basicInfo
.
$refs
.
basicInfoForm
;
const
genForm
=
this
.
$refs
.
genInfo
.
$refs
.
genInfoForm
;
const
genForm
=
this
.
$refs
.
genInfo
.
$refs
.
genInfoForm
;
//构建树扩展
//构建树扩展
if
(
basicForm
.
model
.
tplCategory
===
'
tree
'
){
if
(
basicForm
.
model
.
tplCategory
===
'
tree
'
){
let
json
=
{}
let
json
=
{}
json
.
treeCode
=
basicForm
.
model
.
treeCode
json
.
treeCode
=
basicForm
.
model
.
treeCode
...
@@ -269,8 +274,7 @@ export default {
...
@@ -269,8 +274,7 @@ export default {
basicForm
.
model
.
options
=
JSON
.
stringify
(
json
)
basicForm
.
model
.
options
=
JSON
.
stringify
(
json
)
}
}
console
.
log
(
"
basicForm
"
,
basicForm
);
console
.
log
(
"
genForm
"
,
genForm
);
Promise
.
all
([
basicForm
,
genForm
].
map
(
this
.
getFormPromise
)).
then
((
res
)
=>
{
Promise
.
all
([
basicForm
,
genForm
].
map
(
this
.
getFormPromise
)).
then
((
res
)
=>
{
const
validateResult
=
res
.
every
((
item
)
=>
!!
item
);
const
validateResult
=
res
.
every
((
item
)
=>
!!
item
);
//console.log("validateResult", validateResult);
//console.log("validateResult", validateResult);
...
...
appbuild-manage-ui/admin/src/views/system/gentable/genInfoForm.vue
View file @
5b6faec7
...
@@ -108,6 +108,7 @@
...
@@ -108,6 +108,7 @@
</span>
</span>
<el-select
v-model=
"info.isShowControl"
>
<el-select
v-model=
"info.isShowControl"
>
<el-option
label=
"php"
value=
"2"
/>
<el-option
label=
"是"
value=
"1"
/>
<el-option
label=
"是"
value=
"1"
/>
<el-option
label=
"否"
value=
"0"
/>
<el-option
label=
"否"
value=
"0"
/>
</el-select>
</el-select>
...
...
appbuild-manage-ui/admin/src/views/system/gentable/list.vue
View file @
5b6faec7
<
template
>
<
template
>
<div
class=
"page"
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
notSearch
notAdd
notDel
>
<LayoutTable
:data=
"tableData"
<Breadcrumb
slot=
'breadcrumb'
:list=
'breadcrumbList'
></Breadcrumb>
:config=
"tableConfig"
notSearch
notAdd
notDel
>
<Breadcrumb
slot=
"breadcrumb"
:list=
"breadcrumbList"
></Breadcrumb>
<el-button
<el-button
slot=
"table-head-left2"
slot=
"table-head-left2"
type=
"primary"
type=
"primary"
...
@@ -64,7 +69,7 @@
...
@@ -64,7 +69,7 @@
>
执行建表语句
</el-button
>
执行建表语句
</el-button
>
>
<!--
<el-button
<!--
<el-button
slot=
"table-head-left2"
slot=
"table-head-left2"
type=
"primary"
type=
"primary"
plain
plain
...
@@ -201,6 +206,34 @@
...
@@ -201,6 +206,34 @@
</div>
</div>
</el-dialog>
</el-dialog>
<!-- 生成代码对话框 -->
<el-dialog
:title=
"genCodeDialog.title"
:visible.sync=
"genCodeDialog.open"
width=
"1000px"
append-to-body
>
<el-form
label-width=
"100px"
>
<el-row>
<el-col
:span=
"24"
>
<el-form-item
label=
"生成代码类型"
>
<el-checkbox
true-label=
"1"
false-label=
"0"
v-model=
"all"
>
All
</el-checkbox
>
<el-checkbox
true-label=
"2"
false-label=
"0"
v-model=
"model"
>
model模型
</el-checkbox
>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitGenCodeForm"
>
确 定
</el-button>
<el-button
@
click=
"genCodeDialog.open = false"
>
取 消
</el-button>
</div>
</el-dialog>
<import-table
ref=
"import"
@
ok=
"handleQuery"
/>
<import-table
ref=
"import"
@
ok=
"handleQuery"
/>
</div>
</div>
</
template
>
</
template
>
...
@@ -214,6 +247,7 @@ hljs.registerLanguage("java", require("highlight.js/lib/languages/java"));
...
@@ -214,6 +247,7 @@ hljs.registerLanguage("java", require("highlight.js/lib/languages/java"));
hljs
.
registerLanguage
(
"
xml
"
,
require
(
"
highlight.js/lib/languages/xml
"
));
hljs
.
registerLanguage
(
"
xml
"
,
require
(
"
highlight.js/lib/languages/xml
"
));
hljs
.
registerLanguage
(
"
html
"
,
require
(
"
highlight.js/lib/languages/xml
"
));
hljs
.
registerLanguage
(
"
html
"
,
require
(
"
highlight.js/lib/languages/xml
"
));
hljs
.
registerLanguage
(
"
vue
"
,
require
(
"
highlight.js/lib/languages/xml
"
));
hljs
.
registerLanguage
(
"
vue
"
,
require
(
"
highlight.js/lib/languages/xml
"
));
hljs
.
registerLanguage
(
"
test
"
,
require
(
"
highlight.js/lib/languages/xml
"
));
hljs
.
registerLanguage
(
hljs
.
registerLanguage
(
"
javascript
"
,
"
javascript
"
,
require
(
"
highlight.js/lib/languages/javascript
"
)
require
(
"
highlight.js/lib/languages/javascript
"
)
...
@@ -224,12 +258,11 @@ export default {
...
@@ -224,12 +258,11 @@ export default {
components
:
{
importTable
},
components
:
{
importTable
},
mixins
:
[
table
],
mixins
:
[
table
],
created
()
{
created
()
{
const
appId
=
this
.
$route
.
query
[
"
query.appId
"
];
const
appId
=
this
.
$route
.
query
[
"
query.appId
"
];
console
.
log
(
"
appId
"
,
appId
)
console
.
log
(
"
appId
"
,
appId
);
this
.
appId
=
appId
this
.
appId
=
appId
;
//this.query={ appId: appId }
//this.query={ appId: appId }
// this.config.addQuery = { appId: appId };
// this.config.addQuery = { appId: appId };
},
},
methods
:
{
methods
:
{
onCopy
(
e
)
{
onCopy
(
e
)
{
...
@@ -271,15 +304,15 @@ export default {
...
@@ -271,15 +304,15 @@ export default {
/** 生成sql建表 */
/** 生成sql建表 */
submitSqlForm
()
{
submitSqlForm
()
{
this
.
loading
=
true
;
this
.
loading
=
true
;
this
.
$post
(
"
/
gentable/createTableSql
"
,
{
this
.
$post
(
"
/
device/liset
"
,
{
tableSql
:
this
.
sqlDialog
.
textarea
,
tableSql
:
this
.
sqlDialog
.
textarea
,
})
})
.
then
((
res
)
=>
{
.
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
loading
=
false
;
this
.
sqlDialog
.
open
=
false
;
this
.
sqlDialog
.
open
=
false
;
this
.
sqlDialog
.
textarea
=
""
this
.
sqlDialog
.
textarea
=
""
;
this
.
$message
.
success
(
"
执行成功!
"
);
this
.
$message
.
success
(
"
执行成功!
"
);
})
})
.
catch
((
error
)
=>
{
.
catch
((
error
)
=>
{
console
.
log
(
"
error
"
,
error
);
console
.
log
(
"
error
"
,
error
);
...
@@ -292,20 +325,20 @@ export default {
...
@@ -292,20 +325,20 @@ export default {
//this.queryParams.pageNum = 1;
//this.queryParams.pageNum = 1;
//this.getList();
//this.getList();
},
},
/** 生成代码操作 */
submitGenCodeForm
()
{
handleGenTable
(
row
)
{
console
.
log
(
"
gen
"
,
row
);
let
types
=
[]
const
tableIds
=
row
.
id
||
this
.
ids
;
types
.
push
(
this
.
all
)
if
(
tableIds
==
""
)
{
types
.
push
(
this
.
model
)
this
.
$message
.
error
(
"
请选择要生成的数据
"
);
let
gentype
=
types
.
join
(
"
,
"
)
return
;
}
this
.
loading
=
true
;
this
.
loading
=
true
;
if
(
row
.
tableName
)
{
if
(
this
.
genCodeDialog
.
tableName
)
{
this
.
$download
(
this
.
$download
(
"
/gentable/genCode
"
,
"
/gentable/genCode
"
,
{
{
tableId
:
t
ableIds
,
tableId
:
t
his
.
genCodeDialog
.
tableId
,
genTypes
:
gentype
},
},
{
type
:
"
zip
"
}
{
type
:
"
zip
"
}
)
)
...
@@ -319,11 +352,12 @@ export default {
...
@@ -319,11 +352,12 @@ export default {
}
else
{
}
else
{
this
.
$download
(
this
.
$download
(
"
/gentable/batchGenCode
"
,
"
/gentable/batchGenCode
"
,
{
tables
:
t
ableIds
.
join
(
"
,
"
)
},
{
tables
:
t
his
.
ids
.
join
(
"
,
"
)
,
genTypes
:
gentype
},
{
type
:
"
zip
"
}
{
type
:
"
zip
"
}
)
)
.
then
((
res
)
=>
{
.
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
loading
=
false
;
this
.
genCodeDialog
.
open
=
false
;
})
})
.
catch
((
error
)
=>
{
.
catch
((
error
)
=>
{
console
.
log
(
"
error
"
,
error
);
console
.
log
(
"
error
"
,
error
);
...
@@ -331,17 +365,36 @@ export default {
...
@@ -331,17 +365,36 @@ export default {
});
});
}
}
},
},
/** 生成代码操作 */
handleGenTable
(
row
)
{
console
.
log
(
"
gen
"
,
row
);
const
tableIds
=
row
.
id
||
this
.
ids
;
if
(
tableIds
==
""
)
{
this
.
$message
.
error
(
"
请选择要生成的数据
"
);
return
;
}
if
(
row
.
tableName
)
{
this
.
genCodeDialog
.
tableId
=
tableIds
;
this
.
genCodeDialog
.
tableName
=
true
;
}
else
{
this
.
genCodeDialog
.
tableName
=
false
;
}
this
.
genCodeDialog
.
open
=
true
;
},
/** 同步数据库操作 */
/** 同步数据库操作 */
handleSynchDb
(
row
)
{
handleSynchDb
(
row
)
{
let
_this
=
this
;
let
_this
=
this
;
this
.
$confirm
(
'
确认要强制同步"
'
+
row
.
tableName
+
'
"表结构吗?
'
,
"
警告
"
,
{
this
.
$confirm
(
'
确认要强制同步"
'
+
row
.
tableName
+
'
"表结构吗?
'
,
"
警告
"
,
{
confirmButtonText
:
"
确定
"
,
confirmButtonText
:
"
确定
"
,
cancelButtonText
:
"
取消
"
,
cancelButtonText
:
"
取消
"
,
type
:
"
warning
"
,
type
:
"
warning
"
,
}).
then
(
function
()
{
}).
then
(
function
()
{
_this
.
loading
=
true
;
_this
.
loading
=
true
;
_this
.
$post
(
"
/gentable/synchDb
"
,
{
_this
tableId
:
row
.
tableId
,
.
$post
(
"
/gentable/synchDb
"
,
{
tableId
:
row
.
id
,
})
})
.
then
((
res
)
=>
{
.
then
((
res
)
=>
{
if
(
res
&&
res
.
code
&&
res
.
code
==
1
)
{
if
(
res
&&
res
.
code
&&
res
.
code
==
1
)
{
...
@@ -399,21 +452,12 @@ export default {
...
@@ -399,21 +452,12 @@ export default {
const
tableId
=
row
.
id
;
const
tableId
=
row
.
id
;
this
.
$router
.
push
({
this
.
$router
.
push
({
path
:
"
/gen/edit
"
,
path
:
"
/gen/edit
"
,
query
:
{
tableId
:
tableId
,
appId
:
this
.
appId
},
query
:
{
tableId
:
tableId
,
appId
:
this
.
appId
},
});
});
// this.$router.push("/gen/edit/" + tableId);
// this.$router.push("/gen/edit/" + tableId);
},
},
test
()
{
this
.
$router
.
push
(
"
/demo
"
);
// this.$router.push({
// path: "demo",
// query: { tableId: tableId },
// });
// this.$router.push("/gen/edit/" + tableId);
},
/** 删除按钮操作 */
/** 删除按钮操作 */
handleDelete
(
row
)
{
handleDelete
(
row
)
{
...
@@ -433,11 +477,8 @@ export default {
...
@@ -433,11 +477,8 @@ export default {
},
},
handleImportExcel
()
{
handleImportExcel
()
{
this
.
upload
.
title
=
"
导入
"
;
this
.
upload
.
title
=
"
导入
"
;
this
.
upload
.
url
+=
this
.
appId
;
this
.
upload
.
url
+=
this
.
appId
;
this
.
upload
.
open
=
true
;
this
.
upload
.
open
=
true
;
},
},
// 文件上传中处理
// 文件上传中处理
handleFileUploadProgress
(
event
,
file
,
fileList
)
{
handleFileUploadProgress
(
event
,
file
,
fileList
)
{
...
@@ -459,12 +500,14 @@ export default {
...
@@ -459,12 +500,14 @@ export default {
},
},
data
()
{
data
()
{
return
{
return
{
breadcrumbList
:
[
breadcrumbList
:
[
{
name
:
'
工程构建
'
,
},
{
name
:
"
工程构建
"
},
{
name
:
'
应用信息
'
,
path
:
'
/app/list
'
},
{
name
:
"
应用信息
"
,
path
:
"
/app/list
"
},
{
name
:
'
生成列表
'
,
},
{
name
:
"
生成列表
"
},
],
],
appId
:
null
,
appId
:
null
,
all
:
"
1
"
,
model
:
"
0
"
,
// 用户导入参数
// 用户导入参数
upload
:
{
upload
:
{
// 是否显示弹出层(用户导入)
// 是否显示弹出层(用户导入)
...
@@ -474,7 +517,7 @@ export default {
...
@@ -474,7 +517,7 @@ export default {
// 是否禁用上传
// 是否禁用上传
isUploading
:
false
,
isUploading
:
false
,
// 上传的地址
// 上传的地址
url
:
"
/m/gentable/importDoc?appId=
"
url
:
"
/m/gentable/importDoc?appId=
"
,
},
},
// 文档导出参数
// 文档导出参数
docExport
:
{
docExport
:
{
...
@@ -493,6 +536,14 @@ export default {
...
@@ -493,6 +536,14 @@ export default {
// 是否禁用上传
// 是否禁用上传
textarea
:
""
,
textarea
:
""
,
},
},
genCodeDialog
:
{
// 是否显示弹出层(用户导入)
open
:
false
,
// 弹出层标题(用户导入)
title
:
"
生成代码对话框
"
,
tableName
:
false
,
},
// 预览参数
// 预览参数
preview
:
{
preview
:
{
open
:
false
,
open
:
false
,
...
@@ -501,7 +552,7 @@ export default {
...
@@ -501,7 +552,7 @@ export default {
activeName
:
"
entity.java
"
,
activeName
:
"
entity.java
"
,
},
},
docForm
:
{},
docForm
:
{},
appId
:
null
,
appId
:
null
,
config
:
{
config
:
{
search
:
[],
search
:
[],
...
...
appbuild-manager/pom.xml
View file @
5b6faec7
...
@@ -87,9 +87,15 @@
...
@@ -87,9 +87,15 @@
<artifactId>
freemarker
</artifactId>
<artifactId>
freemarker
</artifactId>
<version>
2.3.31
</version>
<version>
2.3.31
</version>
</dependency>
</dependency>
<dependency>
<groupId>
com.github.javafaker
</groupId>
<artifactId>
javafaker
</artifactId>
<version>
1.0.2
</version>
<scope>
compile
</scope>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
appbuild-manager/src/main/bin/shutdown.sh
View file @
5b6faec7
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
PORT
=
"17211"
PORT
=
"17211"
BASEDIR
=
`
dirname
$0
`
BASEDIR
=
`
dirname
$0
`
BASEDIR
=
`
(
cd
"
$BASEDIR
"
;
pwd
)
`
BASEDIR
=
`
(
cd
"
$BASEDIR
"
;
pwd
)
`
PROJECT_NAME
=
"
appbuild-manager
"
PROJECT_NAME
=
"
@project.artifactId@
"
MAIN_CLASS
=
"
$PROJECT_NAME
"
;
MAIN_CLASS
=
"
$PROJECT_NAME
"
;
if
[
!
-n
"
$PORT
"
]
;
then
if
[
!
-n
"
$PORT
"
]
;
then
...
...
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/model/GentableColumnEntityExt.java
View file @
5b6faec7
package
com.mortals.xhx.base.system.gentable.model
;
package
com.mortals.xhx.base.system.gentable.model
;
import
cn.hutool.core.util.RandomUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.github.javafaker.Faker
;
import
com.mortals.framework.model.BaseEntityLong
;
import
com.mortals.framework.model.BaseEntityLong
;
import
com.mortals.framework.util.DateUtils
;
import
com.mortals.xhx.common.utils.StringUtils
;
import
com.mortals.xhx.common.utils.StringUtils
;
import
lombok.Data
;
import
lombok.Data
;
import
org.springframework.util.ObjectUtils
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Locale
;
import
java.util.Map
;
import
java.util.Map
;
/**
/**
...
@@ -18,22 +24,74 @@ public class GentableColumnEntityExt extends BaseEntityLong {
...
@@ -18,22 +24,74 @@ public class GentableColumnEntityExt extends BaseEntityLong {
private
List
<
Map
<
String
,
String
>>
dict
;
private
List
<
Map
<
String
,
String
>>
dict
;
public
static
String
subComment
(
String
comment
)
{
public
static
String
subComment
(
String
comment
)
{
if
(
comment
.
indexOf
(
"("
)
!=
-
1
)
{
if
(
comment
.
indexOf
(
"("
)
!=
-
1
)
{
return
comment
.
substring
(
0
,
comment
.
indexOf
(
"("
));
return
comment
.
substring
(
0
,
comment
.
indexOf
(
"("
));
}
}
if
(
comment
.
indexOf
(
"("
)
!=
-
1
)
{
if
(
comment
.
indexOf
(
"("
)
!=
-
1
)
{
return
comment
.
substring
(
0
,
comment
.
indexOf
(
"("
));
return
comment
.
substring
(
0
,
comment
.
indexOf
(
"("
));
}
}
return
comment
;
return
comment
;
}
}
public
static
String
randomStr
(
GentableColumnEntity
column
)
{
String
returnStr
=
""
;
if
(!
ObjectUtils
.
isEmpty
(
column
.
getDefaultValue
())){
returnStr
=
column
.
getDefaultValue
();
}
else
{
if
(
"String"
.
equalsIgnoreCase
(
column
.
getJavaType
()))
{
returnStr
=
RandomUtil
.
randomString
(
6
);
}
else
if
(
"Integer"
.
equalsIgnoreCase
(
column
.
getJavaType
())
||
"Long"
.
equalsIgnoreCase
(
column
.
getJavaType
()))
{
returnStr
=
RandomUtil
.
randomInt
(
0
,
1000
)
+
""
;
}
else
if
(
"BigDecimal"
.
equalsIgnoreCase
(
column
.
getJavaType
()))
{
returnStr
=
RandomUtil
.
randomBigDecimal
().
setScale
(
2
,
1
).
doubleValue
()
+
""
;
}
else
if
(
"date"
.
equalsIgnoreCase
(
column
.
getJavaType
()))
{
returnStr
=
DateUtils
.
getCurrDate
().
getTime
()+
""
;
}
}
return
returnStr
;
}
public
static
String
randomStr
(
String
javaType
)
{
String
returnStr
=
""
;
if
(
"String"
.
equalsIgnoreCase
(
javaType
))
{
returnStr
=
RandomUtil
.
randomString
(
6
);
}
else
if
(
"Integer"
.
equalsIgnoreCase
(
javaType
)
||
"Long"
.
equalsIgnoreCase
(
javaType
))
{
returnStr
=
RandomUtil
.
randomInt
(
0
,
10000
)
+
""
;
}
else
if
(
"BigDecimal"
.
equalsIgnoreCase
(
javaType
))
{
returnStr
=
RandomUtil
.
randomBigDecimal
().
setScale
(
2
,
1
).
doubleValue
()
+
""
;
}
else
if
(
"date"
.
equalsIgnoreCase
(
javaType
))
{
returnStr
=
DateUtils
.
getCurrStrDate
();
}
return
returnStr
;
}
public
static
String
randomNumber
()
{
Faker
faker
=
new
Faker
(
Locale
.
CHINESE
);
return
faker
.
number
().
numberBetween
(
0
,
10000
)
+
""
;
}
public
static
String
subBetween
(
String
comment
)
{
comment
=
comment
.
replaceAll
(
"("
,
"("
);
comment
=
comment
.
replaceAll
(
")"
,
")"
);
String
max
=
StrUtil
.
subBetween
(
comment
,
"("
,
")"
);
return
max
==
null
?
"9999"
:
max
;
}
public
String
test
(){
public
String
test
()
{
return
"aaa"
;
return
"aaa"
;
}
}
...
@@ -42,7 +100,10 @@ public class GentableColumnEntityExt extends BaseEntityLong {
...
@@ -42,7 +100,10 @@ public class GentableColumnEntityExt extends BaseEntityLong {
GentableColumnEntity
gentableColumnEntity
=
new
GentableColumnEntity
();
GentableColumnEntity
gentableColumnEntity
=
new
GentableColumnEntity
();
gentableColumnEntity
.
setCreateUser
(
"bbbbbb"
);
gentableColumnEntity
.
setCreateUser
(
"bbbbbb"
);
System
.
out
.
println
(
JSON
.
toJSONString
(
gentableColumnEntity
));
System
.
out
.
println
(
JSON
.
toJSONString
(
gentableColumnEntity
));
// System.out.println(gentableColumnEntity.test());
// System.out.println(gentableColumnEntity.test());
System
.
out
.
println
(
DateUtils
.
getCurrDatetime
().
getTime
());
}
}
...
...
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/service/GentableService.java
View file @
5b6faec7
...
@@ -67,7 +67,7 @@ public interface GentableService extends ICRUDService<GentableEntity, Long> {
...
@@ -67,7 +67,7 @@ public interface GentableService extends ICRUDService<GentableEntity, Long> {
* @param tableId 表tableId
* @param tableId 表tableId
* @return 数据
* @return 数据
*/
*/
byte
[]
downloadCode
(
Long
tableId
);
byte
[]
downloadCode
(
Long
tableId
,
String
genTypes
);
/**
/**
* 批量生成代码(下载方式)
* 批量生成代码(下载方式)
...
@@ -75,7 +75,7 @@ public interface GentableService extends ICRUDService<GentableEntity, Long> {
...
@@ -75,7 +75,7 @@ public interface GentableService extends ICRUDService<GentableEntity, Long> {
* @param tableIds 表数组
* @param tableIds 表数组
* @return 数据
* @return 数据
*/
*/
byte
[]
downloadCode
(
Long
[]
tableIds
);
byte
[]
downloadCode
(
Long
[]
tableIds
,
String
genTypes
);
/**
/**
* 同步数据库
* 同步数据库
...
...
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/service/impl/GentableServiceImpl.java
View file @
5b6faec7
...
@@ -9,7 +9,9 @@ import com.mortals.framework.exception.AppException;
...
@@ -9,7 +9,9 @@ import com.mortals.framework.exception.AppException;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.ParamDto
;
import
com.mortals.framework.model.ParamDto
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.framework.util.DateUtils
;
import
com.mortals.framework.util.EntityUtil
;
import
com.mortals.framework.util.EntityUtil
;
import
com.mortals.framework.util.FileUtil
;
import
com.mortals.xhx.base.system.gentable.dao.GentableDao
;
import
com.mortals.xhx.base.system.gentable.dao.GentableDao
;
import
com.mortals.xhx.base.system.gentable.model.*
;
import
com.mortals.xhx.base.system.gentable.model.*
;
import
com.mortals.xhx.base.system.gentable.service.GentableColumnService
;
import
com.mortals.xhx.base.system.gentable.service.GentableColumnService
;
...
@@ -32,6 +34,7 @@ import org.springframework.util.ObjectUtils;
...
@@ -32,6 +34,7 @@ import org.springframework.util.ObjectUtils;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.ByteArrayOutputStream
;
import
java.io.ByteArrayOutputStream
;
import
java.io.File
;
import
java.io.StringWriter
;
import
java.io.StringWriter
;
import
java.util.*
;
import
java.util.*
;
import
java.util.regex.Pattern
;
import
java.util.regex.Pattern
;
...
@@ -52,6 +55,20 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
...
@@ -52,6 +55,20 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
@Autowired
@Autowired
private
GentableColumnService
gentableColumnService
;
private
GentableColumnService
gentableColumnService
;
String
headStr
=
"版本 | 创建时间 | 作者 | 备注信息\n"
+
"---|---|---|---\n"
+
"v1.0|"
+
DateUtils
.
getCurrStrDate
()+
"|zxfei| 接口文档\n\n"
+
"## 数据类型\n"
+
"类型名称|类型描述|参考样例\n"
+
"---|---|---\n"
+
"String |字符串|A、a、ab\n"
+
"Integer|数字类型|1、12、-1\n"
+
"Long|长整型数字|1、12、-1\n"
+
"date|时间类型,单位纳秒数字|167988745573\n"
+
"BigDecimal|小数类型|545.256\n"
+
"object|对象类型|{\"name\":\"zhang3\"}\n"
+
"arrays|数组类型|[{\"name\":\"zhang3\"},{\"name\":\"zhang2\"}]\n"
;
@Override
@Override
public
List
<
GentableEntity
>
selectDbTableList
(
GentableQuery
query
)
{
public
List
<
GentableEntity
>
selectDbTableList
(
GentableQuery
query
)
{
//query to dao
//query to dao
...
@@ -145,6 +162,17 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
...
@@ -145,6 +162,17 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
if
(
temp
.
equals
(
"enum.java.ftl"
))
{
if
(
temp
.
equals
(
"enum.java.ftl"
))
{
continue
;
continue
;
}
}
if
(
temp
.
equals
(
"api.md.ftl"
))
{
continue
;
}
if
(
temp
.
equals
(
"api-two.md.ftl"
))
{
continue
;
}
if
(
temp
.
equals
(
"apidict.md.ftl"
))
{
continue
;
}
try
{
try
{
//初始化freeMarkers
//初始化freeMarkers
FreeMarkerUtils
.
initFreeMarker
(
genFreePath
(
temp
));
FreeMarkerUtils
.
initFreeMarker
(
genFreePath
(
temp
));
...
@@ -173,12 +201,19 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
...
@@ -173,12 +201,19 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
@SneakyThrows
@SneakyThrows
@Override
@Override
public
byte
[]
downloadCode
(
Long
tableId
)
{
public
byte
[]
downloadCode
(
Long
tableId
,
String
genTypes
)
{
ByteArrayOutputStream
outputStream
=
new
ByteArrayOutputStream
();
ByteArrayOutputStream
outputStream
=
new
ByteArrayOutputStream
();
ZipOutputStream
zip
=
new
ZipOutputStream
(
outputStream
);
ZipOutputStream
zip
=
new
ZipOutputStream
(
outputStream
);
FreeMarkerUtils
.
menuSql
=
new
StringBuilder
();
FreeMarkerUtils
.
menuSql
=
new
StringBuilder
();
FreeMarkerUtils
.
paramsSql
=
new
StringBuilder
();
FreeMarkerUtils
.
dbSql
=
new
StringBuilder
();
FreeMarkerUtils
.
dbSql
=
new
StringBuilder
();
generatorCode
(
tableId
,
zip
);
FreeMarkerUtils
.
apimd
=
new
StringBuilder
();
FreeMarkerUtils
.
apitwomd
=
new
StringBuilder
();
FreeMarkerUtils
.
apidict
=
new
StringBuilder
();
FreeMarkerUtils
.
apidict
.
append
(
"## 字典附录\n"
);
FreeMarkerUtils
.
apimd
.
append
(
headStr
);
FreeMarkerUtils
.
apitwomd
.
append
(
headStr
);
generatorCode
(
tableId
,
genTypes
,
zip
);
if
(
StringUtils
.
isNotEmpty
(
FreeMarkerUtils
.
menuSql
))
{
if
(
StringUtils
.
isNotEmpty
(
FreeMarkerUtils
.
menuSql
))
{
zip
.
putNextEntry
(
new
ZipEntry
(
"db/menu.sql"
));
zip
.
putNextEntry
(
new
ZipEntry
(
"db/menu.sql"
));
IOUtils
.
write
(
FreeMarkerUtils
.
menuSql
.
toString
(),
zip
,
Constant
.
UTF8
);
IOUtils
.
write
(
FreeMarkerUtils
.
menuSql
.
toString
(),
zip
,
Constant
.
UTF8
);
...
@@ -187,19 +222,45 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
...
@@ -187,19 +222,45 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
zip
.
putNextEntry
(
new
ZipEntry
(
"db/db.sql"
));
zip
.
putNextEntry
(
new
ZipEntry
(
"db/db.sql"
));
IOUtils
.
write
(
FreeMarkerUtils
.
dbSql
.
toString
(),
zip
,
Constant
.
UTF8
);
IOUtils
.
write
(
FreeMarkerUtils
.
dbSql
.
toString
(),
zip
,
Constant
.
UTF8
);
}
}
if
(
StringUtils
.
isNotEmpty
(
FreeMarkerUtils
.
paramsSql
))
{
zip
.
putNextEntry
(
new
ZipEntry
(
"db/params.sql"
));
IOUtils
.
write
(
FreeMarkerUtils
.
paramsSql
.
toString
(),
zip
,
Constant
.
UTF8
);
}
if
(
StringUtils
.
isNotEmpty
(
FreeMarkerUtils
.
apimd
))
{
zip
.
putNextEntry
(
new
ZipEntry
(
"doc/api.md"
));
IOUtils
.
write
(
FreeMarkerUtils
.
apimd
.
toString
(),
zip
,
Constant
.
UTF8
);
}
if
(
StringUtils
.
isNotEmpty
(
FreeMarkerUtils
.
apitwomd
))
{
zip
.
putNextEntry
(
new
ZipEntry
(
"doc/api-two.md"
));
IOUtils
.
write
(
FreeMarkerUtils
.
apitwomd
.
toString
(),
zip
,
Constant
.
UTF8
);
}
if
(
StringUtils
.
isNotEmpty
(
FreeMarkerUtils
.
apidict
))
{
zip
.
putNextEntry
(
new
ZipEntry
(
"doc/dict.md"
));
IOUtils
.
write
(
FreeMarkerUtils
.
apidict
.
toString
(),
zip
,
Constant
.
UTF8
);
}
IOUtils
.
closeQuietly
(
zip
);
IOUtils
.
closeQuietly
(
zip
);
return
outputStream
.
toByteArray
();
return
outputStream
.
toByteArray
();
}
}
@SneakyThrows
@SneakyThrows
@Override
@Override
public
byte
[]
downloadCode
(
Long
[]
tableIds
)
{
public
byte
[]
downloadCode
(
Long
[]
tableIds
,
String
genTypes
)
{
FreeMarkerUtils
.
menuSql
=
new
StringBuilder
();
FreeMarkerUtils
.
menuSql
=
new
StringBuilder
();
FreeMarkerUtils
.
dbSql
=
new
StringBuilder
();
FreeMarkerUtils
.
dbSql
=
new
StringBuilder
();
FreeMarkerUtils
.
paramsSql
=
new
StringBuilder
();
FreeMarkerUtils
.
apimd
=
new
StringBuilder
();
FreeMarkerUtils
.
apitwomd
=
new
StringBuilder
();
FreeMarkerUtils
.
apidict
=
new
StringBuilder
();
FreeMarkerUtils
.
apidict
.
append
(
"## 字典附录\n"
);
FreeMarkerUtils
.
apimd
.
append
(
headStr
);
FreeMarkerUtils
.
apitwomd
.
append
(
headStr
);
ByteArrayOutputStream
outputStream
=
new
ByteArrayOutputStream
();
ByteArrayOutputStream
outputStream
=
new
ByteArrayOutputStream
();
ZipOutputStream
zip
=
new
ZipOutputStream
(
outputStream
);
ZipOutputStream
zip
=
new
ZipOutputStream
(
outputStream
);
for
(
Long
tableId
:
tableIds
)
{
for
(
Long
tableId
:
tableIds
)
{
generatorCode
(
tableId
,
zip
);
generatorCode
(
tableId
,
genTypes
,
zip
);
}
}
if
(
StringUtils
.
isNotEmpty
(
FreeMarkerUtils
.
menuSql
))
{
if
(
StringUtils
.
isNotEmpty
(
FreeMarkerUtils
.
menuSql
))
{
zip
.
putNextEntry
(
new
ZipEntry
(
"db/menu.sql"
));
zip
.
putNextEntry
(
new
ZipEntry
(
"db/menu.sql"
));
...
@@ -209,7 +270,30 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
...
@@ -209,7 +270,30 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
zip
.
putNextEntry
(
new
ZipEntry
(
"db/db.sql"
));
zip
.
putNextEntry
(
new
ZipEntry
(
"db/db.sql"
));
IOUtils
.
write
(
FreeMarkerUtils
.
dbSql
.
toString
(),
zip
,
Constant
.
UTF8
);
IOUtils
.
write
(
FreeMarkerUtils
.
dbSql
.
toString
(),
zip
,
Constant
.
UTF8
);
}
}
if
(
StringUtils
.
isNotEmpty
(
FreeMarkerUtils
.
paramsSql
))
{
zip
.
putNextEntry
(
new
ZipEntry
(
"db/params.sql"
));
IOUtils
.
write
(
FreeMarkerUtils
.
paramsSql
.
toString
(),
zip
,
Constant
.
UTF8
);
}
if
(
StringUtils
.
isNotEmpty
(
FreeMarkerUtils
.
apimd
))
{
FreeMarkerUtils
.
apimd
.
append
(
FreeMarkerUtils
.
apidict
);
zip
.
putNextEntry
(
new
ZipEntry
(
"doc/api.md"
));
IOUtils
.
write
(
FreeMarkerUtils
.
apimd
.
toString
(),
zip
,
Constant
.
UTF8
);
}
if
(
StringUtils
.
isNotEmpty
(
FreeMarkerUtils
.
apitwomd
))
{
FreeMarkerUtils
.
apitwomd
.
append
(
FreeMarkerUtils
.
apidict
);
zip
.
putNextEntry
(
new
ZipEntry
(
"doc/api-two.md"
));
IOUtils
.
write
(
FreeMarkerUtils
.
apitwomd
.
toString
(),
zip
,
Constant
.
UTF8
);
}
// if (StringUtils.isNotEmpty(FreeMarkerUtils.apidict)) {
// zip.putNextEntry(new ZipEntry("doc/dict.md"));
// IOUtils.write(FreeMarkerUtils.apidict.toString(), zip, Constant.UTF8);
// }
//
IOUtils
.
closeQuietly
(
zip
);
IOUtils
.
closeQuietly
(
zip
);
return
outputStream
.
toByteArray
();
return
outputStream
.
toByteArray
();
}
}
...
@@ -243,6 +327,44 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
...
@@ -243,6 +327,44 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
}
}
}
}
public
void
synchDb
(
Long
tableId
,
List
<
GentableColumnEntity
>
dbTableColumns
)
{
GentableEntity
table
=
this
.
get
(
tableId
);
List
<
GentableColumnEntity
>
tableColumns
=
gentableColumnService
.
find
(
new
GentableColumnQuery
().
tableId
(
table
.
getId
()));
table
.
setColumns
(
tableColumns
);
List
<
String
>
tableColumnNames
=
tableColumns
.
stream
().
map
(
GentableColumnEntity:
:
getColumnName
).
collect
(
Collectors
.
toList
());
List
<
String
>
dbTableColumnNames
=
dbTableColumns
.
stream
().
map
(
GentableColumnEntity:
:
getColumnName
).
collect
(
Collectors
.
toList
());
dbTableColumns
.
forEach
(
column
->
{
//新增列
if
(!
tableColumnNames
.
contains
(
column
.
getColumnName
()))
{
GenUtils
.
initColumnField
(
column
,
table
);
gentableColumnService
.
save
(
column
);
}
else
{
//todo 更新列
GentableColumnEntity
columnEntity
=
tableColumns
.
stream
().
filter
(
f
->
f
.
getColumnName
().
equals
(
column
.
getColumnName
())).
findFirst
().
orElseGet
(()
->
null
);
if
(!
ObjectUtils
.
isEmpty
(
columnEntity
)){
columnEntity
.
setColumnComment
(
column
.
getColumnComment
());
columnEntity
.
setDefaultValue
(
column
.
getDefaultValue
());
columnEntity
.
setColumnType
(
column
.
getColumnType
());
gentableColumnService
.
update
(
columnEntity
);
}
}
});
//删除多于列
List
<
GentableColumnEntity
>
delColumns
=
tableColumns
.
stream
().
filter
(
column
->
!
dbTableColumnNames
.
contains
(
column
.
getColumnName
())).
collect
(
Collectors
.
toList
());
if
(
StringUtils
.
isNotEmpty
(
delColumns
))
{
Long
[]
ids
=
delColumns
.
stream
().
map
(
GentableColumnEntity:
:
getId
).
toArray
(
Long
[]::
new
);
gentableColumnService
.
remove
(
ids
,
null
);
}
}
@Override
@Override
public
void
importDoc
(
MultipartFile
file
,
Long
appId
,
Context
context
)
{
public
void
importDoc
(
MultipartFile
file
,
Long
appId
,
Context
context
)
{
...
@@ -253,6 +375,8 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
...
@@ -253,6 +375,8 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
GenUtils
.
initTable
(
table
,
operName
);
GenUtils
.
initTable
(
table
,
operName
);
table
.
setAppId
(
appId
);
table
.
setAppId
(
appId
);
table
.
setGenType
(
0
);
table
.
setGenType
(
0
);
table
.
setIsGenExport
(
0
);
table
.
setIsShowControl
(
0
);
table
.
setGenPath
(
"/"
);
table
.
setGenPath
(
"/"
);
table
.
setTplCategory
(
"crud"
);
table
.
setTplCategory
(
"crud"
);
table
.
setCacheServiceType
(
CacheServiceTypeEnum
.
NORMAL_SERVICE
.
getValue
());
table
.
setCacheServiceType
(
CacheServiceTypeEnum
.
NORMAL_SERVICE
.
getValue
());
...
@@ -260,32 +384,35 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
...
@@ -260,32 +384,35 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
//查询如果存在相同表名,先删除后再添加
//查询如果存在相同表名,先删除后再添加
GentableEntity
gentableEntity
=
this
.
selectOne
(
new
GentableQuery
().
tableName
(
table
.
getTableName
()).
appId
(
appId
));
GentableEntity
gentableEntity
=
this
.
selectOne
(
new
GentableQuery
().
tableName
(
table
.
getTableName
()).
appId
(
appId
));
if
(!
ObjectUtils
.
isEmpty
(
gentableEntity
))
{
if
(!
ObjectUtils
.
isEmpty
(
gentableEntity
))
{
//删除表
synchDb
(
gentableEntity
.
getId
(),
table
.
getColumns
());
this
.
remove
(
gentableEntity
.
getId
(),
context
);
// //删除表
// this.remove(gentableEntity.getId(), context);
//删除列
// //删除列
List
<
GentableColumnEntity
>
gentableColumnEntities
=
gentableColumnService
.
find
(
new
GentableColumnQuery
().
tableId
(
gentableEntity
.
getId
()));
// List<GentableColumnEntity> gentableColumnEntities = gentableColumnService.find(new GentableColumnQuery().tableId(gentableEntity.getId()));
// if (ObjectUtils.isEmpty(gentableColumnEntities)) {
if
(
ObjectUtils
.
isEmpty
(
gentableColumnEntities
))
{
// gentableEntity.setColumns(gentableColumnEntities);
gentableEntity
.
setColumns
(
gentableColumnEntities
);
// gentableColumnService.remove(gentableEntity.getColumns().stream().map(item -> item.getId()).toArray(Long[]::new), context);
gentableColumnService
.
remove
(
gentableEntity
.
getColumns
().
stream
().
map
(
item
->
item
.
getId
()).
toArray
(
Long
[]::
new
),
context
);
// }
}
else
{
//保存表
this
.
save
(
table
);
//保存列
List
<
GentableColumnEntity
>
genTableColumns
=
table
.
getColumns
();
//校验是否有主键列,如果没有,默认第一列为主键
GentableColumnEntity
columnEntity
=
genTableColumns
.
stream
().
filter
(
f
->
f
.
getIsPrimaryKey
()
!=
null
).
filter
(
f
->
f
.
getIsPrimaryKey
()
==
1
).
findFirst
().
orElseGet
(()
->
null
);
if
(
ObjectUtils
.
isEmpty
(
columnEntity
))
{
if
(
genTableColumns
.
size
()
>
0
)
{
genTableColumns
.
get
(
0
).
setIsPrimaryKey
(
YesNo
.
YES
.
getValue
());
}
}
}
}
//保存表
for
(
GentableColumnEntity
column
:
genTableColumns
)
{
this
.
save
(
table
);
GenUtils
.
initColumnField
(
column
,
table
);
//保存列
gentableColumnService
.
save
(
column
);
List
<
GentableColumnEntity
>
genTableColumns
=
table
.
getColumns
();
}
//校验是否有主键列,如果没有,默认第一列为主键
GentableColumnEntity
columnEntity
=
genTableColumns
.
stream
().
filter
(
f
->
f
.
getIsPrimaryKey
()
!=
null
).
filter
(
f
->
f
.
getIsPrimaryKey
()
==
1
).
findFirst
().
orElseGet
(()
->
null
);
if
(
ObjectUtils
.
isEmpty
(
columnEntity
))
{
genTableColumns
.
get
(
0
).
setIsPrimaryKey
(
YesNo
.
YES
.
getValue
());
}
for
(
GentableColumnEntity
column
:
genTableColumns
)
{
GenUtils
.
initColumnField
(
column
,
table
);
gentableColumnService
.
save
(
column
);
}
}
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
@@ -326,8 +453,9 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
...
@@ -326,8 +453,9 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
/**
/**
* 查询表信息并生成代码
* 查询表信息并生成代码
*/
*/
private
void
generatorCode
(
Long
tableId
,
ZipOutputStream
zip
)
{
private
void
generatorCode
(
Long
tableId
,
String
genTypes
,
ZipOutputStream
zip
)
{
GentableEntity
gentableEntity
=
this
.
get
(
tableId
);
GentableEntity
gentableEntity
=
this
.
get
(
tableId
);
Set
<
String
>
types
=
StrUtil
.
splitTrim
(
genTypes
,
","
.
charAt
(
0
),
-
1
).
stream
().
collect
(
Collectors
.
toSet
());
if
(!
ObjectUtils
.
isEmpty
(
gentableEntity
))
{
if
(!
ObjectUtils
.
isEmpty
(
gentableEntity
))
{
List
<
GentableColumnEntity
>
columnEntities
=
this
.
gentableColumnService
.
find
(
new
GentableColumnQuery
().
tableId
(
gentableEntity
.
getId
())).
stream
().
map
(
column
->
{
List
<
GentableColumnEntity
>
columnEntities
=
this
.
gentableColumnService
.
find
(
new
GentableColumnQuery
().
tableId
(
gentableEntity
.
getId
())).
stream
().
map
(
column
->
{
String
temp1
=
StringUtils
.
substringBetween
(
column
.
getColumnComment
(),
"("
,
")"
);
String
temp1
=
StringUtils
.
substringBetween
(
column
.
getColumnComment
(),
"("
,
")"
);
...
@@ -349,20 +477,35 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
...
@@ -349,20 +477,35 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
List
<
String
>
templates
=
FreeMarkerUtils
.
getTemplateList
(
gentableEntity
.
getTplCategory
());
List
<
String
>
templates
=
FreeMarkerUtils
.
getTemplateList
(
gentableEntity
.
getTplCategory
());
for
(
String
temp
:
templates
)
{
for
(
String
temp
:
templates
)
{
if
(!
types
.
contains
(
"1"
)
&&
types
.
contains
(
"2"
))
{
//只生成model类型
Set
<
String
>
modelTemplateSet
=
FreeMarkerUtils
.
getModelTemplateSet
();
if
(!
modelTemplateSet
.
contains
(
temp
))
{
continue
;
}
}
//通过模板生成不同的业务类
//通过模板生成不同的业务类
if
(
temp
.
equals
(
"enum.java.ftl"
))
{
if
(
temp
.
equals
(
"enum.java.ftl"
))
{
//单独生成枚举类
//单独生成枚举类
List
<
GentableColumnEntity
>
collect
=
gentableEntity
.
getColumns
().
stream
()
List
<
GentableColumnEntity
>
collect
=
gentableEntity
.
getColumns
().
stream
()
.
filter
(
f
->
f
.
getDict
()
!=
null
)
.
filter
(
f
->
f
.
getDict
()
!=
null
)
.
map
(
item
->
{
.
map
(
item
->
{
Map
enumData
=
FreeMarkerUtils
.
prepareSetFreeMarkerDataByEnum
(
item
.
getDict
(),
item
.
getColumnComment
(),
item
.
getColumnName
(),
gentableEntity
);
Map
enumData
=
FreeMarkerUtils
.
prepareSetFreeMarkerDataByEnum
(
item
.
getDict
(),
item
.
getColumnComment
(),
item
.
getColumnName
(),
item
.
getJavaType
());
try
{
try
{
FreeMarkerUtils
.
initFreeMarker
(
genFreePath
(
temp
));
FreeMarkerUtils
.
initFreeMarker
(
genFreePath
(
temp
));
StringWriter
sw
=
new
StringWriter
();
StringWriter
sw
=
new
StringWriter
();
Template
template
=
FreeMarkerUtils
.
getTemplate
(
temp
);
Template
template
=
FreeMarkerUtils
.
getTemplate
(
temp
);
template
.
process
(
enumData
,
sw
);
template
.
process
(
enumData
,
sw
);
zip
.
putNextEntry
(
new
ZipEntry
(
FreeMarkerUtils
.
getEnumFileName
(
item
.
getColumnName
())));
String
enumFileName
=
FreeMarkerUtils
.
getEnumFileName
(
item
.
getColumnName
());
File
file
=
new
File
(
enumFileName
);
if
(
file
.
exists
())
{
return
item
;
}
zip
.
putNextEntry
(
new
ZipEntry
(
enumFileName
));
IOUtils
.
write
(
sw
.
toString
(),
zip
,
Constant
.
UTF8
);
IOUtils
.
write
(
sw
.
toString
(),
zip
,
Constant
.
UTF8
);
...
@@ -389,6 +532,14 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
...
@@ -389,6 +532,14 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
FreeMarkerUtils
.
menuSql
.
append
(
sw
.
toString
());
FreeMarkerUtils
.
menuSql
.
append
(
sw
.
toString
());
}
else
if
(
template
.
getName
().
equals
(
"db.sql.ftl"
))
{
}
else
if
(
template
.
getName
().
equals
(
"db.sql.ftl"
))
{
FreeMarkerUtils
.
dbSql
.
append
(
sw
.
toString
());
FreeMarkerUtils
.
dbSql
.
append
(
sw
.
toString
());
}
else
if
(
template
.
getName
().
equals
(
"params.sql.ftl"
))
{
FreeMarkerUtils
.
paramsSql
.
append
(
sw
.
toString
());
}
else
if
(
template
.
getName
().
equals
(
"api.md.ftl"
))
{
FreeMarkerUtils
.
apimd
.
append
(
sw
.
toString
());
}
else
if
(
template
.
getName
().
equals
(
"api-two.md.ftl"
))
{
FreeMarkerUtils
.
apitwomd
.
append
(
sw
.
toString
());
}
else
if
(
template
.
getName
().
equals
(
"apidict.md.ftl"
))
{
FreeMarkerUtils
.
apidict
.
append
(
sw
.
toString
()+
"\n"
);
}
else
{
}
else
{
zip
.
putNextEntry
(
new
ZipEntry
(
FreeMarkerUtils
.
getFileName
(
template
.
getName
(),
gentableEntity
)));
zip
.
putNextEntry
(
new
ZipEntry
(
FreeMarkerUtils
.
getFileName
(
template
.
getName
(),
gentableEntity
)));
IOUtils
.
write
(
sw
.
toString
(),
zip
,
Constant
.
UTF8
);
IOUtils
.
write
(
sw
.
toString
(),
zip
,
Constant
.
UTF8
);
...
@@ -503,12 +654,16 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
...
@@ -503,12 +654,16 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
path
=
"java"
;
path
=
"java"
;
}
else
if
(
temp
.
indexOf
(
".sql."
)
!=
-
1
)
{
}
else
if
(
temp
.
indexOf
(
".sql."
)
!=
-
1
)
{
path
=
"sql"
;
path
=
"sql"
;
}
else
if
(
temp
.
indexOf
(
".test."
)
!=
-
1
)
{
path
=
"java"
;
}
else
if
(
temp
.
indexOf
(
".xml."
)
!=
-
1
)
{
}
else
if
(
temp
.
indexOf
(
".xml."
)
!=
-
1
)
{
path
=
"xml"
;
path
=
"xml"
;
}
else
if
(
temp
.
indexOf
(
".vue."
)
!=
-
1
)
{
}
else
if
(
temp
.
indexOf
(
".vue."
)
!=
-
1
)
{
path
=
"vue"
;
path
=
"vue"
;
}
else
if
(
temp
.
indexOf
(
".doc."
)
!=
-
1
)
{
}
else
if
(
temp
.
indexOf
(
".doc."
)
!=
-
1
)
{
path
=
"doc"
;
path
=
"doc"
;
}
else
if
(
temp
.
indexOf
(
".md."
)
!=
-
1
)
{
path
=
"doc"
;
}
}
return
path
;
return
path
;
}
}
...
...
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/web/GentableController.java
View file @
5b6faec7
...
@@ -2,6 +2,7 @@ package com.mortals.xhx.base.system.gentable.web;
...
@@ -2,6 +2,7 @@ package com.mortals.xhx.base.system.gentable.web;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.convert.Convert
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.web.BaseCRUDJsonMappingController
;
import
com.mortals.framework.web.BaseCRUDJsonMappingController
;
import
com.mortals.xhx.base.system.gentable.model.*
;
import
com.mortals.xhx.base.system.gentable.model.*
;
...
@@ -62,6 +63,14 @@ public class GentableController extends BaseCRUDJsonMappingController<GentableSe
...
@@ -62,6 +63,14 @@ public class GentableController extends BaseCRUDJsonMappingController<GentableSe
super
.
init
(
request
,
response
,
form
,
model
,
context
);
super
.
init
(
request
,
response
,
form
,
model
,
context
);
}
}
@Override
protected
void
doListBefore
(
HttpServletRequest
request
,
HttpServletResponse
response
,
GentableForm
form
,
Map
<
String
,
Object
>
model
,
Context
context
)
throws
AppException
{
form
.
getQuery
().
setOrderField
(
"tableName"
);
super
.
doListBefore
(
request
,
response
,
form
,
model
,
context
);
}
/**
/**
* 导入数据库列表
* 导入数据库列表
*
*
...
@@ -131,13 +140,9 @@ public class GentableController extends BaseCRUDJsonMappingController<GentableSe
...
@@ -131,13 +140,9 @@ public class GentableController extends BaseCRUDJsonMappingController<GentableSe
//查询单表信息
//查询单表信息
GentableEntity
gentableEntity
=
this
.
service
.
get
(
tableId
);
GentableEntity
gentableEntity
=
this
.
service
.
get
(
tableId
);
//关联查询表与列信息
//关联查询表与列信息
List
<
GentableEntity
>
allList
=
this
.
service
.
find
(
new
GentableQuery
().
appId
(
appId
)).
stream
().
map
(
item
->{
List
<
GentableEntity
>
allList
=
this
.
service
.
find
(
new
GentableQuery
().
appId
(
appId
)).
stream
().
map
(
item
->{
List
<
GentableColumnEntity
>
columnEntities
=
gentableColumnService
.
find
(
new
GentableColumnQuery
().
tableId
(
item
.
getId
()));
List
<
GentableColumnEntity
>
columnEntities
=
gentableColumnService
.
find
(
new
GentableColumnQuery
().
tableId
(
item
.
getId
()));
item
.
setColumns
(
columnEntities
);
item
.
setColumns
(
columnEntities
);
return
item
;
return
item
;
}).
collect
(
Collectors
.
toList
());
}).
collect
(
Collectors
.
toList
());
...
@@ -167,12 +172,12 @@ public class GentableController extends BaseCRUDJsonMappingController<GentableSe
...
@@ -167,12 +172,12 @@ public class GentableController extends BaseCRUDJsonMappingController<GentableSe
* @return
* @return
*/
*/
@PostMapping
(
"/genCode"
)
@PostMapping
(
"/genCode"
)
public
void
genCode
(
@RequestParam
(
value
=
"tableId"
)
Long
tableId
)
{
public
void
genCode
(
@RequestParam
(
value
=
"tableId"
)
Long
tableId
,
@RequestParam
(
value
=
"genTypes"
)
String
genTypes
)
{
Map
<
String
,
Object
>
model
=
new
HashMap
<>();
Map
<
String
,
Object
>
model
=
new
HashMap
<>();
String
busiDesc
=
"生成单表代码"
;
String
busiDesc
=
"生成单表代码"
;
try
{
try
{
byte
[]
bytes
=
this
.
service
.
downloadCode
(
tableId
);
byte
[]
bytes
=
this
.
service
.
downloadCode
(
tableId
,
genTypes
);
genCode
(
response
,
bytes
);
genCode
(
response
,
bytes
);
recordSysLog
(
request
,
busiDesc
+
" 【成功】"
);
recordSysLog
(
request
,
busiDesc
+
" 【成功】"
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
@@ -188,12 +193,12 @@ public class GentableController extends BaseCRUDJsonMappingController<GentableSe
...
@@ -188,12 +193,12 @@ public class GentableController extends BaseCRUDJsonMappingController<GentableSe
* @return
* @return
*/
*/
@PostMapping
(
"/batchGenCode"
)
@PostMapping
(
"/batchGenCode"
)
public
void
batchGenCode
(
@RequestParam
(
value
=
"tables"
)
String
tables
)
{
public
void
batchGenCode
(
@RequestParam
(
value
=
"tables"
)
String
tables
,
@RequestParam
(
value
=
"genTypes"
)
String
genTypes
)
{
Map
<
String
,
Object
>
model
=
new
HashMap
<>();
Map
<
String
,
Object
>
model
=
new
HashMap
<>();
String
busiDesc
=
"批量生成单表代码"
;
String
busiDesc
=
"批量生成单表代码"
;
try
{
try
{
Long
[]
tableIds
=
Convert
.
toLongArray
(
tables
);
Long
[]
tableIds
=
Convert
.
toLongArray
(
tables
);
byte
[]
bytes
=
this
.
service
.
downloadCode
(
tableIds
);
byte
[]
bytes
=
this
.
service
.
downloadCode
(
tableIds
,
genTypes
);
genCode
(
response
,
bytes
);
genCode
(
response
,
bytes
);
recordSysLog
(
request
,
busiDesc
+
" 【成功】"
);
recordSysLog
(
request
,
busiDesc
+
" 【成功】"
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
...
appbuild-manager/src/main/java/com/mortals/xhx/common/code/HtmlTypeEnum.java
View file @
5b6faec7
...
@@ -12,8 +12,8 @@ public enum HtmlTypeEnum {
...
@@ -12,8 +12,8 @@ public enum HtmlTypeEnum {
HTML_INPUT
(
1
,
"文本框"
),
HTML_INPUT
(
1
,
"文本框"
),
HTML_TEXTAREA
(
2
,
"文本域"
),
HTML_TEXTAREA
(
2
,
"文本域"
),
HTML_SELECT
(
3
,
"下拉框"
),
HTML_SELECT
(
3
,
"下拉框"
),
HTML_
RADIO
(
4
,
"单
选框"
),
HTML_
CHECKBOX
(
4
,
"复
选框"
),
HTML_
CHECKBOX
(
5
,
"复
选框"
),
HTML_
RADIO
(
5
,
"单
选框"
),
HTML_DATETIME
(
6
,
"日期控件"
),
HTML_DATETIME
(
6
,
"日期控件"
),
HTML_IMAGE_UPLOAD
(
7
,
"图片上传控件"
),
HTML_IMAGE_UPLOAD
(
7
,
"图片上传控件"
),
HTML_FILE_UPLOAD
(
8
,
"文件上传控件"
),
HTML_FILE_UPLOAD
(
8
,
"文件上传控件"
),
...
@@ -22,7 +22,7 @@ public enum HtmlTypeEnum {
...
@@ -22,7 +22,7 @@ public enum HtmlTypeEnum {
private
int
value
;
private
int
value
;
private
String
desc
;
private
String
desc
;
private
HtmlTypeEnum
(
int
value
,
String
desc
)
{
HtmlTypeEnum
(
int
value
,
String
desc
)
{
this
.
value
=
value
;
this
.
value
=
value
;
this
.
desc
=
desc
;
this
.
desc
=
desc
;
}
}
...
...
appbuild-manager/src/main/java/com/mortals/xhx/common/key/GenConstants.java
View file @
5b6faec7
...
@@ -66,19 +66,19 @@ public class GenConstants {
...
@@ -66,19 +66,19 @@ public class GenConstants {
/**
/**
* 页面不需要编辑字段
* 页面不需要编辑字段
*/
*/
public
static
final
String
[]
COLUMNNAME_NOT_EDIT
=
{
"id"
,
"createUser"
,
"createTime"
,
"delFlag"
,
"updateUser
"
,
public
static
final
String
[]
COLUMNNAME_NOT_EDIT
=
{
"id"
,
"createUser"
,
"createUserId"
,
"createTime"
,
"delFlag"
,
"updateUser"
,
"updateUserId"
,
"updateTime
"
,
"updateTime"
};
"updateTime"
};
/**
/**
* 页面不需要显示的列表字段
* 页面不需要显示的列表字段
*/
*/
public
static
final
String
[]
COLUMNNAME_NOT_LIST
=
{
"id"
,
"createUser"
,
"createTime"
,
"delFlag"
,
"updateUser
"
,
public
static
final
String
[]
COLUMNNAME_NOT_LIST
=
{
"id"
,
"createUser"
,
"createUserId"
,
"createTime"
,
"delFlag"
,
"updateUser"
,
"updateUserId
"
,
"updateTime"
};
"updateTime"
};
/**
/**
* 页面不需要查询字段
* 页面不需要查询字段
*/
*/
public
static
final
String
[]
COLUMNNAME_NOT_QUERY
=
{
"id"
,
"createUser"
,
"createTime"
,
"delFlag"
,
"updateUser
"
,
public
static
final
String
[]
COLUMNNAME_NOT_QUERY
=
{
"id"
,
"createUser"
,
"createUserId"
,
"createTime"
,
"delFlag"
,
"updateUser"
,
"updateUserId
"
,
"updateTime"
,
"remark"
};
"updateTime"
,
"remark"
};
/**
/**
...
...
appbuild-manager/src/main/java/com/mortals/xhx/common/utils/FreeMarkerUtils.java
View file @
5b6faec7
...
@@ -31,6 +31,7 @@ public class FreeMarkerUtils {
...
@@ -31,6 +31,7 @@ public class FreeMarkerUtils {
* 项目空间路径
* 项目空间路径
*/
*/
private
static
final
String
PROJECT_PATH
=
"main/java"
;
private
static
final
String
PROJECT_PATH
=
"main/java"
;
private
static
final
String
TEST_PATH
=
"test/java/com/mortals/httpclient"
;
/**
/**
* mybatis空间路径
* mybatis空间路径
...
@@ -46,6 +47,10 @@ public class FreeMarkerUtils {
...
@@ -46,6 +47,10 @@ public class FreeMarkerUtils {
public
static
StringBuilder
dbSql
=
new
StringBuilder
();
public
static
StringBuilder
dbSql
=
new
StringBuilder
();
public
static
StringBuilder
menuSql
=
new
StringBuilder
();
public
static
StringBuilder
menuSql
=
new
StringBuilder
();
public
static
StringBuilder
paramsSql
=
new
StringBuilder
();
public
static
StringBuilder
apimd
=
new
StringBuilder
();
public
static
StringBuilder
apitwomd
=
new
StringBuilder
();
public
static
StringBuilder
apidict
=
new
StringBuilder
();
/**
/**
* 初始化freeMaker方法
* 初始化freeMaker方法
...
@@ -113,7 +118,11 @@ public class FreeMarkerUtils {
...
@@ -113,7 +118,11 @@ public class FreeMarkerUtils {
templates
.
add
(
"sqlMap.xml.ftl"
);
templates
.
add
(
"sqlMap.xml.ftl"
);
templates
.
add
(
"db.sql.ftl"
);
templates
.
add
(
"db.sql.ftl"
);
templates
.
add
(
"menu.sql.ftl"
);
templates
.
add
(
"menu.sql.ftl"
);
//templates.add("db.doc.ftl");
templates
.
add
(
"params.sql.ftl"
);
templates
.
add
(
"api.md.ftl"
);
templates
.
add
(
"api-two.md.ftl"
);
templates
.
add
(
"apidict.md.ftl"
);
templates
.
add
(
"httpclient.test.ftl"
);
if
(
GenConstants
.
TPL_CRUD
.
equals
(
tplCategory
))
{
if
(
GenConstants
.
TPL_CRUD
.
equals
(
tplCategory
))
{
templates
.
add
(
"service.java.ftl"
);
templates
.
add
(
"service.java.ftl"
);
templates
.
add
(
"serviceImpl.java.ftl"
);
templates
.
add
(
"serviceImpl.java.ftl"
);
...
@@ -133,6 +142,23 @@ public class FreeMarkerUtils {
...
@@ -133,6 +142,23 @@ public class FreeMarkerUtils {
templates
.
add
(
"webVueShow.vue.ftl"
);
templates
.
add
(
"webVueShow.vue.ftl"
);
templates
.
add
(
"VueDialogShow.vue.ftl"
);
templates
.
add
(
"VueDialogShow.vue.ftl"
);
}
}
templates
.
add
(
"webVueView.vue.ftl"
);
return
templates
;
}
/**
* 获取model模板信息
*
* @return 模板列表
*/
public
static
Set
<
String
>
getModelTemplateSet
()
{
Set
<
String
>
templates
=
new
HashSet
<
String
>();
templates
.
add
(
"vo.java.ftl"
);
templates
.
add
(
"entity.java.ftl"
);
templates
.
add
(
"entityQuery.java.ftl"
);
templates
.
add
(
"sqlMap.xml.ftl"
);
templates
.
add
(
"entity-tree.java.ftl"
);
return
templates
;
return
templates
;
}
}
...
@@ -213,10 +239,11 @@ public class FreeMarkerUtils {
...
@@ -213,10 +239,11 @@ public class FreeMarkerUtils {
*
*
* @return 模板列表
* @return 模板列表
*/
*/
public
static
Map
prepareSetFreeMarkerDataByEnum
(
List
<
Map
<
String
,
String
>>
enums
,
String
enumName
,
String
enumClassName
,
GentableEntity
genTabl
e
)
{
public
static
Map
prepareSetFreeMarkerDataByEnum
(
List
<
Map
<
String
,
String
>>
enums
,
String
enumName
,
String
enumClassName
,
String
javaTyp
e
)
{
Map
data
=
new
HashMap
();
Map
data
=
new
HashMap
();
data
.
put
(
"enums"
,
enums
);
data
.
put
(
"enums"
,
enums
);
data
.
put
(
"EnumName"
,
enumName
);
data
.
put
(
"EnumName"
,
enumName
);
data
.
put
(
"JavaType"
,
javaType
);
data
.
put
(
"EnumClassName"
,
StringUtils
.
capitalize
(
enumClassName
));
data
.
put
(
"EnumClassName"
,
StringUtils
.
capitalize
(
enumClassName
));
return
data
;
return
data
;
}
}
...
@@ -431,6 +458,10 @@ public class FreeMarkerUtils {
...
@@ -431,6 +458,10 @@ public class FreeMarkerUtils {
String
businessNameExt
=
getBusinessNameExt
(
genTable
.
getTableName
());
String
businessNameExt
=
getBusinessNameExt
(
genTable
.
getTableName
());
businessNameExt
=
StringUtils
.
replace
(
businessNameExt
,
"."
,
"/"
);
businessNameExt
=
StringUtils
.
replace
(
businessNameExt
,
"."
,
"/"
);
fileName
=
StringUtils
.
format
(
"{}/views/{}/show.vue"
,
vuePath
,
businessNameExt
);
fileName
=
StringUtils
.
format
(
"{}/views/{}/show.vue"
,
vuePath
,
businessNameExt
);
}
else
if
(
template
.
contains
(
"webVueView.vue.ftl"
))
{
String
businessNameExt
=
getBusinessNameExt
(
genTable
.
getTableName
());
businessNameExt
=
StringUtils
.
replace
(
businessNameExt
,
"."
,
"/"
);
fileName
=
StringUtils
.
format
(
"{}/views/{}/view.vue"
,
vuePath
,
businessNameExt
);
}
else
if
(
template
.
contains
(
"webVueTreeList.vue.ftl"
))
{
}
else
if
(
template
.
contains
(
"webVueTreeList.vue.ftl"
))
{
String
businessNameExt
=
getBusinessNameExt
(
genTable
.
getTableName
());
String
businessNameExt
=
getBusinessNameExt
(
genTable
.
getTableName
());
businessNameExt
=
StringUtils
.
replace
(
businessNameExt
,
"."
,
"/"
);
businessNameExt
=
StringUtils
.
replace
(
businessNameExt
,
"."
,
"/"
);
...
@@ -444,7 +475,11 @@ public class FreeMarkerUtils {
...
@@ -444,7 +475,11 @@ public class FreeMarkerUtils {
businessNameExt
=
StringUtils
.
replace
(
businessNameExt
,
"."
,
"/"
);
businessNameExt
=
StringUtils
.
replace
(
businessNameExt
,
"."
,
"/"
);
fileName
=
StringUtils
.
format
(
"{}/views/{}/dialogshow.vue"
,
vuePath
,
businessNameExt
);
fileName
=
StringUtils
.
format
(
"{}/views/{}/dialogshow.vue"
,
vuePath
,
businessNameExt
);
}
else
if
(
template
.
contains
(
"db.doc.ftl"
))
{
}
else
if
(
template
.
contains
(
"db.doc.ftl"
))
{
fileName
=
StringUtils
.
format
(
"{}/views/{}/show.vue"
,
vuePath
,
businessName
);
fileName
=
StringUtils
.
format
(
"doc/alldoc.docx"
);
}
else
if
(
template
.
contains
(
"api.doc.ftl"
))
{
fileName
=
StringUtils
.
format
(
"doc/api.md"
);
}
else
if
(
template
.
contains
(
"httpclient.test.ftl"
))
{
fileName
=
StringUtils
.
format
(
"{}/{}/{}Controller.http"
,
TEST_PATH
,
businessName
,
className
);
}
}
return
fileName
;
return
fileName
;
}
}
...
...
appbuild-manager/src/main/java/com/mortals/xhx/common/utils/GenUtils.java
View file @
5b6faec7
...
@@ -49,7 +49,9 @@ public class GenUtils {
...
@@ -49,7 +49,9 @@ public class GenUtils {
column
.
setCreateUser
(
table
.
getCreateUser
());
column
.
setCreateUser
(
table
.
getCreateUser
());
column
.
setCreateTime
(
new
Date
());
column
.
setCreateTime
(
new
Date
());
column
.
setIsSerialize
(
0
);
column
.
setIsSerialize
(
0
);
column
.
setIsExport
(
0
);
if
(
column
.
getIsExport
()==
null
){
column
.
setIsExport
(
0
);
}
column
.
setQueryType
(
"="
);
column
.
setQueryType
(
"="
);
// 设置java字段名
// 设置java字段名
column
.
setJavaField
(
StrUtil
.
toCamelCase
(
columnName
));
column
.
setJavaField
(
StrUtil
.
toCamelCase
(
columnName
));
...
@@ -57,9 +59,9 @@ public class GenUtils {
...
@@ -57,9 +59,9 @@ public class GenUtils {
column
.
setJavaType
(
GenConstants
.
TYPE_STRING
);
column
.
setJavaType
(
GenConstants
.
TYPE_STRING
);
if
(
arraysContains
(
GenConstants
.
COLUMNTYPE_STR
,
dataType
)
||
arraysContains
(
GenConstants
.
COLUMNTYPE_TEXT
,
dataType
))
{
if
(
arraysContains
(
GenConstants
.
COLUMNTYPE_STR
,
dataType
)
||
arraysContains
(
GenConstants
.
COLUMNTYPE_TEXT
,
dataType
))
{
// 字符串长度超过
500
设置为文本域
// 字符串长度超过
255
设置为文本域
Integer
columnLength
=
getColumnLength
(
column
.
getColumnType
());
Integer
columnLength
=
getColumnLength
(
column
.
getColumnType
());
Integer
htmlType
=
columnLength
>=
500
||
arraysContains
(
GenConstants
.
COLUMNTYPE_TEXT
,
dataType
)
?
HtmlTypeEnum
.
HTML_TEXTAREA
.
getValue
()
:
HtmlTypeEnum
.
HTML_INPUT
.
getValue
();
Integer
htmlType
=
columnLength
>=
255
||
arraysContains
(
GenConstants
.
COLUMNTYPE_TEXT
,
dataType
)
?
HtmlTypeEnum
.
HTML_TEXTAREA
.
getValue
()
:
HtmlTypeEnum
.
HTML_INPUT
.
getValue
();
column
.
setHtmlType
(
htmlType
);
column
.
setHtmlType
(
htmlType
);
}
else
if
(
arraysContains
(
GenConstants
.
COLUMNTYPE_TIME
,
dataType
))
{
}
else
if
(
arraysContains
(
GenConstants
.
COLUMNTYPE_TIME
,
dataType
))
{
column
.
setJavaType
(
GenConstants
.
TYPE_DATE
);
column
.
setJavaType
(
GenConstants
.
TYPE_DATE
);
...
@@ -109,7 +111,10 @@ public class GenUtils {
...
@@ -109,7 +111,10 @@ public class GenUtils {
column
.
setIsQuery
(
GenConstants
.
NOREQUIRE
);
column
.
setIsQuery
(
GenConstants
.
NOREQUIRE
);
}
}
}
}
//默认都是否
column
.
setIsList
(
GenConstants
.
NOREQUIRE
);
column
.
setIsQuery
(
GenConstants
.
NOREQUIRE
);
//拆解枚举类,格式必须为(1.啊啊啊,2.不不不)
//拆解枚举类,格式必须为(1.啊啊啊,2.不不不)
String
temp1
=
StringUtils
.
substringBetween
(
column
.
getColumnComment
(),
"("
,
")"
);
String
temp1
=
StringUtils
.
substringBetween
(
column
.
getColumnComment
(),
"("
,
")"
);
...
@@ -117,17 +122,27 @@ public class GenUtils {
...
@@ -117,17 +122,27 @@ public class GenUtils {
checkDict
(
column
,
temp1
);
checkDict
(
column
,
temp1
);
checkDict
(
column
,
temp2
);
checkDict
(
column
,
temp2
);
// if(column.)
// 状态字段设置单选框
if
(!
ObjectUtils
.
isEmpty
(
column
.
getDict
())){
if
(
StringUtils
.
endsWithIgnoreCase
(
columnName
.
toLowerCase
(),
"status"
))
{
column
.
setHtmlType
(
HtmlTypeEnum
.
HTML_RADIO
.
getValue
());
if
(
column
.
getDict
().
size
()>
2
){
}
column
.
setHtmlType
(
HtmlTypeEnum
.
HTML_SELECT
.
getValue
());
// 类型&性别字段设置下拉框
}
else
{
else
if
(
StringUtils
.
endsWithIgnoreCase
(
columnName
.
toLowerCase
(),
"type"
)
column
.
setHtmlType
(
HtmlTypeEnum
.
HTML_RADIO
.
getValue
());
||
StringUtils
.
endsWithIgnoreCase
(
columnName
,
"sex"
))
{
}
column
.
setHtmlType
(
HtmlTypeEnum
.
HTML_SELECT
.
getValue
());
//radio
}
}
// 状态字段设置单选框
// if (StringUtils.endsWithIgnoreCase(columnName.toLowerCase(), "status")) {
// column.setHtmlType(HtmlTypeEnum.HTML_RADIO.getValue());
// }
// // 类型&性别字段设置下拉框
// else if (StringUtils.endsWithIgnoreCase(columnName.toLowerCase(), "type")
// || StringUtils.endsWithIgnoreCase(columnName, "sex")) {
// column.setHtmlType(HtmlTypeEnum.HTML_SELECT.getValue());
// }
// 图片字段设置图片上传控件
// 图片字段设置图片上传控件
else
if
(
StringUtils
.
endsWithIgnoreCase
(
columnName
.
toLowerCase
(),
"imagepath"
))
{
else
if
(
StringUtils
.
endsWithIgnoreCase
(
columnName
.
toLowerCase
(),
"imagepath"
))
{
column
.
setHtmlType
(
HtmlTypeEnum
.
HTML_IMAGE_UPLOAD
.
getValue
());
column
.
setHtmlType
(
HtmlTypeEnum
.
HTML_IMAGE_UPLOAD
.
getValue
());
...
@@ -145,20 +160,21 @@ public class GenUtils {
...
@@ -145,20 +160,21 @@ public class GenUtils {
public
static
void
checkDict
(
GentableColumnEntity
column
,
String
temp
)
{
public
static
void
checkDict
(
GentableColumnEntity
column
,
String
temp
)
{
if
(
StringUtils
.
isNotEmpty
(
temp
))
{
if
(
StringUtils
.
isNotEmpty
(
temp
))
{
//同意替换分割符号
temp
=
temp
.
replaceAll
(
","
,
","
);
temp
=
temp
.
replaceAll
(
";"
,
","
);
temp
=
temp
.
replaceAll
(
"、"
,
"."
);
temp
=
temp
.
replaceAll
(
"。"
,
"."
);
String
[]
split
=
checkSplitStr
(
temp
,
","
);
String
[]
split
=
checkSplitStr
(
temp
,
","
);
if
(
split
.
length
<=
1
)
{
split
=
checkSplitStr
(
temp
,
","
);
}
if
(
split
.
length
<=
1
)
{
split
=
checkSplitStr
(
temp
,
"、"
);
}
if
(
split
.
length
>
0
)
{
if
(
split
.
length
>
0
)
{
Arrays
.
asList
(
split
).
stream
().
peek
(
item
->
{
Arrays
.
asList
(
split
).
stream
().
peek
(
item
->
{
String
[]
vals
=
checkSplitStr
(
item
,
"."
);
String
[]
vals
=
checkSplitStr
(
item
,
"."
);
if
(
vals
.
length
>
1
)
{
if
(
vals
.
length
>
1
)
{
HashMap
<
String
,
String
>
map
=
new
HashMap
<>();
HashMap
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"num"
,
vals
[
0
]);
map
.
put
(
"num"
,
vals
[
0
]
.
trim
()
);
map
.
put
(
"value"
,
vals
[
1
]);
map
.
put
(
"value"
,
vals
[
1
]
.
trim
()
);
if
(
ObjectUtils
.
isEmpty
(
column
.
getDict
()))
{
if
(
ObjectUtils
.
isEmpty
(
column
.
getDict
()))
{
column
.
setDict
(
new
ArrayList
<>());
column
.
setDict
(
new
ArrayList
<>());
...
@@ -316,6 +332,10 @@ public class GenUtils {
...
@@ -316,6 +332,10 @@ public class GenUtils {
public
static
Integer
getColumnLength
(
String
columnType
)
{
public
static
Integer
getColumnLength
(
String
columnType
)
{
if
(
StringUtils
.
indexOf
(
columnType
,
"("
)
>
0
)
{
if
(
StringUtils
.
indexOf
(
columnType
,
"("
)
>
0
)
{
String
length
=
StringUtils
.
substringBetween
(
columnType
,
"("
,
")"
);
String
length
=
StringUtils
.
substringBetween
(
columnType
,
"("
,
")"
);
if
(
ObjectUtils
.
isEmpty
(
length
))
{
return
0
;
}
return
Integer
.
valueOf
(
length
);
return
Integer
.
valueOf
(
length
);
}
else
{
}
else
{
return
0
;
return
0
;
...
...
appbuild-manager/src/main/java/com/mortals/xhx/common/utils/ReadDoc.java
View file @
5b6faec7
...
@@ -9,6 +9,7 @@ import org.apache.poi.xwpf.usermodel.XWPFDocument;
...
@@ -9,6 +9,7 @@ import org.apache.poi.xwpf.usermodel.XWPFDocument;
import
org.apache.poi.xwpf.usermodel.XWPFTable
;
import
org.apache.poi.xwpf.usermodel.XWPFTable
;
import
org.apache.poi.xwpf.usermodel.XWPFTableCell
;
import
org.apache.poi.xwpf.usermodel.XWPFTableCell
;
import
org.apache.poi.xwpf.usermodel.XWPFTableRow
;
import
org.apache.poi.xwpf.usermodel.XWPFTableRow
;
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
;
...
@@ -86,44 +87,46 @@ public class ReadDoc {
...
@@ -86,44 +87,46 @@ public class ReadDoc {
GentableColumnEntity
column
=
new
GentableColumnEntity
();
GentableColumnEntity
column
=
new
GentableColumnEntity
();
XWPFTableRow
row
=
rows
.
get
(
i
);
XWPFTableRow
row
=
rows
.
get
(
i
);
//判断是否第一个列数据为空 如果为空 跳过
//判断是否第一个列数据为空 如果为空 跳过
if
(
""
.
equals
(
row
.
getCell
(
0
).
getText
().
trim
()))
{
//
if ("".equals(row.getCell(0).getText().trim())) {
continue
;
//
continue;
}
//
}
//读取每一列数据
//读取每一列数据
List
<
XWPFTableCell
>
cells
=
row
.
getTableCells
();
List
<
XWPFTableCell
>
cells
=
row
.
getTableCells
();
//列名
//列名
XWPFTableCell
cell
=
cells
.
get
(
0
);
XWPFTableCell
cell
=
cells
.
get
(
1
);
column
.
setColumnName
(
cell
.
getText
().
trim
());
column
.
setColumnName
(
cell
.
getText
().
trim
());
//备注说明
//数据类型
column
.
setColumnComment
(
cells
.
get
(
1
).
getText
().
trim
()
+
","
+
cells
.
get
(
4
).
getText
().
trim
());
//物理类型
cell
=
cells
.
get
(
2
);
cell
=
cells
.
get
(
2
);
column
.
setColumnType
(
cell
.
getText
().
trim
());
column
.
setColumnType
(
cell
.
getText
().
trim
());
//是否必填
//是否必填
cell
=
cells
.
get
(
3
);
cell
=
cells
.
get
(
3
);
column
.
setIsRequired
(
cell
.
getText
().
trim
()
==
"是"
?
1
:
0
);
column
.
setIsRequired
(
"是"
.
equals
(
cell
.
getText
().
trim
())
?
1
:
0
);
//是否主键
//是否列表
cell
=
cells
.
get
(
4
);
column
.
setIsPrimaryKey
(
"是"
.
equals
(
cell
.
getText
().
trim
())
?
1
:
0
);
//是否自增
cell
=
cells
.
get
(
5
);
cell
=
cells
.
get
(
5
);
column
.
setIsList
(
cell
.
getText
().
trim
()
==
"是"
?
1
:
0
);
column
.
setIsIncrement
(
"是"
.
equals
(
cell
.
getText
().
trim
())
?
1
:
0
);
//是否列表
//是否编辑
cell
=
cells
.
get
(
6
);
cell
=
cells
.
get
(
6
);
column
.
setIsEdit
(
cell
.
getText
().
trim
()
==
"是"
?
1
:
0
);
column
.
setIsList
(
"是"
.
equals
(
cell
.
getText
().
trim
())
?
1
:
0
);
//是否导入导出
//是否查询
cell
=
cells
.
get
(
7
);
cell
=
cells
.
get
(
7
);
column
.
setIsQuery
(
cell
.
getText
().
trim
()
==
"是"
?
1
:
0
);
column
.
setIsExport
(
"是"
.
equals
(
cell
.
getText
().
trim
())
?
1
:
0
);
column
.
setIsPrimaryKey
(
0
);
//是否查询
column
.
setIsIncrement
(
0
);
cell
=
cells
.
get
(
8
);
if
(
column
.
getColumnComment
().
trim
().
indexOf
(
"自增长"
)
>
-
1
)
{
column
.
setIsQuery
(
"是"
.
equals
(
cell
.
getText
().
trim
())
?
1
:
0
);
column
.
setIsIncrement
(
1
);
//默认值
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
());
if
(
column
.
getColumnComment
().
trim
().
indexOf
(
"主键"
)
>
-
1
)
{
column
.
setIsPrimaryKey
(
1
);
}
columns
.
add
(
column
);
columns
.
add
(
column
);
}
}
...
...
appbuild-manager/src/main/resources/generator.yml
View file @
5b6faec7
...
@@ -9,4 +9,4 @@ gen:
...
@@ -9,4 +9,4 @@ gen:
# 自动去除表前缀,默认是false
# 自动去除表前缀,默认是false
autoRemovePre
:
true
autoRemovePre
:
true
# 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
# 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
tablePrefix
:
sys_,mortals_xhx_,mortals_iot_
tablePrefix
:
sys_,mortals_xhx_,mortals_iot_,mortals_stp_,mortals_sys_
\ No newline at end of file
\ No newline at end of file
appbuild-manager/src/main/resources/static/doc/AllInOne.md.md
View file @
5b6faec7
...
@@ -2,7 +2,15 @@ Version | Update Time | Status | Author | Description
...
@@ -2,7 +2,15 @@ Version | Update Time | Status | Author | Description
---|---|---|---|---
---|---|---|---|---
v2021-11-05 16:10:28|2021-11-05 16:10:28|auto|@finegirl|Created by smart-doc
v2021-11-05 16:10:28|2021-11-05 16:10:28|auto|@finegirl|Created by smart-doc
类型名称|类型描述|参考样例
---|---|---
String |字符串|A、a、ab
Integer|数字类型|1、12、-1
Long|长整型数字|1、12、-1
date|时间类型,单位纳秒数字|167988745573
BigDecimal|小数类型|545.256
object|对象类型|{"name":"zhang3"}
arrays|数组类型|[{"name":"zhang3"},{"name":"zhang2"}]
## 错误码列表
## 错误码列表
Error code |Description
Error code |Description
...
...
appbuild-manager/src/main/resources/static/doc/api.md
0 → 100644
View file @
5b6faec7
版本 | 创建时间 | 作者 | 备注信息
---|---|---|---
v1.0|2021-12-05|zxfei| 接口文档
## 数据类型
类型名称|类型描述|参考样例
---|---|---
String |字符串|A、a、ab
Integer|数字类型|1、12、-1
Long|长整型数字|1、12、-1
date|时间类型,单位纳秒数字|167988745573
BigDecimal|小数类型|545.256
object|对象类型|{"name":"zhang3"}
arrays|数组类型|[{"name":"zhang3"},{"name":"zhang2"}]
## 设备服务接口
### 查询设备列表
**URL:**
http://localhost:8080/m/device/list
**Type:**
POST
**Content-Type:**
application/x-www-form-urlencoded;charset=utf-8
**Description:**
查询设备
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
pageInfo|object|分页对象|否|-
└─beginIndex|Integer|开始记录序号|否|-
└─prePageResult|Integer|每页条数|否|-
└─totalResult|Integer|总条数|否|-
└─totalPage|Integer|总页数|否|-
└─currPage|Integer|当前页|否|-
└─displayPageSize|Integer|显示页数量|否|-
└─hasNextPage|Boolean|是否有下一页|否|-
└─hasPrePage|Boolean|是否有前一页|否|-
└─lastRecordKey|String|最后一条|否|-
└─countPage|Boolean|是否计算总页数|否|-
query|object|查询对象|否|-
└─id|Long|主键ID,主键,自增长|否|-
└─deviceName|String|设备名称,支持英文字母、数字、短划线(-)、下划线(_)、at(@)、英文句号(.)和英文冒号(:),长度限制为4~20个字符。|否|-
└─deviceCode|String|设备编码|否|-
└─deviceType|Integer|设备类型(1.引导查询机,2.电子门牌, 3.LED大屏,4.集中显示屏, 5.PAD,6.打印机, 7.电脑,8.服务器, 9.其他)|否|-
└─deviceMac|String|设备的MAC地址|否|-
└─deviceFirmId|Long|设备生产厂商ID关联mortals_xhx_stp_firm|否|-
└─deviceFirmname|String|设备生产厂商名称关联mortals_xhx_stp_firm|否|-
└─deviceToRoomId|Long|设备所属房间ID|否|-
└─deviceToRoomName|String|设备所属房间名称|否|-
└─deviceOnlineStatus|Integer|在线状态 (0.离线,1.在线)|否|-
└─deviceStatus|Integer|启用状态 (0.停止,1.启用,2.测试)|否|-
└─deviceRemark|String|备注|否|-
└─onlineTime|Date|最近上线时间|否|-
└─offlineTime|Date|最近离线时间|否|-
└─createUserId|Long|创建用户|否|-
└─createTime|Date|创建时间|否|-
└─updateUserId|Long|更新用户|否|-
└─updateTime|Date|更新时间|否|-
└─idStart|Long|大于 > 主键ID,主键,自增长|否|-
└─idEnd|Long|小于 < 主键ID,主键,自增长|否|-
└─idList|array|主键ID,主键,自增长列表|否|-
└─deviceNameList|array|设备名称,支持英文字母、数字、短划线(-)、下划线(_)、at(@)、英文句号(.)和英文冒号(:),长度限制为4~20个字符。列表|否|-
└─deviceCodeList|array|设备编码列表|否|-
└─deviceTypeStart|Integer|大于 > 设备类型(1.引导查询机,2.电子门牌, 3.LED大屏,4.集中显示屏, 5.PAD,6.打印机, 7.电脑,8.服务器, 9.其他)|否|-
└─deviceTypeEnd|Integer|小于 < 设备类型(1.引导查询机,2.电子门牌, 3.LED大屏,4.集中显示屏, 5.PAD,6.打印机, 7.电脑,8.服务器, 9.其他)|否|-
└─deviceTypeList|array|设备类型(1.引导查询机,2.电子门牌, 3.LED大屏,4.集中显示屏, 5.PAD,6.打印机, 7.电脑,8.服务器, 9.其他)列表|否|-
└─deviceMacList|array|设备的MAC地址列表|否|-
└─deviceFirmIdStart|Long|大于 > 设备生产厂商ID关联mortals_xhx_stp_firm|否|-
└─deviceFirmIdEnd|Long|小于 < 设备生产厂商ID关联mortals_xhx_stp_firm|否|-
└─deviceFirmIdList|array|设备生产厂商ID关联mortals_xhx_stp_firm列表|否|-
└─deviceFirmnameList|array|设备生产厂商名称关联mortals_xhx_stp_firm列表|否|-
└─deviceToRoomIdStart|Long|大于 > 设备所属房间ID|否|-
└─deviceToRoomIdEnd|Long|小于 < 设备所属房间ID|否|-
└─deviceToRoomIdList|array|设备所属房间ID列表|否|-
└─deviceToRoomNameList|array|设备所属房间名称列表|否|-
└─deviceOnlineStatusStart|Integer|大于 > 在线状态 (0.离线,1.在线)|否|-
└─deviceOnlineStatusEnd|Integer|小于 < 在线状态 (0.离线,1.在线)|否|-
└─deviceOnlineStatusList|array|在线状态 (0.离线,1.在线)列表|否|-
└─deviceStatusStart|Integer|大于 > 启用状态 (0.停止,1.启用,2.测试)|否|-
└─deviceStatusEnd|Integer|小于 < 启用状态 (0.停止,1.启用,2.测试)|否|-
└─deviceStatusList|array|启用状态 (0.停止,1.启用,2.测试)列表|否|-
└─deviceRemarkList|array|备注列表|否|-
└─onlineTimeStart|Date|大于 > 最近上线时间|否|-
└─onlineTimeEnd|Date|小于 < 最近上线时间|否|-
└─offlineTimeStart|Date|大于 > 最近离线时间|否|-
└─offlineTimeEnd|Date|小于 < 最近离线时间|否|-
└─createUserIdStart|Long|大于 > 创建用户|否|-
└─createUserIdEnd|Long|小于 < 创建用户|否|-
└─createUserIdList|array|创建用户列表|否|-
└─createTimeStart|Date|大于 > 创建时间|否|-
└─createTimeEnd|Date|小于 < 创建时间|否|-
└─updateUserIdStart|Long|大于 > 更新用户|否|-
└─updateUserIdEnd|Long|小于 < 更新用户|否|-
└─updateUserIdList|array|更新用户列表|否|-
└─updateTimeStart|Date|大于 > 更新时间|否|-
└─updateTimeEnd|Date|小于 < 更新时间|否|-
**请求样例:**
```
...
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─result|array|结果集列表|数组
└─id|Long|主键ID,主键,自增长|-
└─deviceName|String|设备名称,支持英文字母、数字、短划线(-)、下划线(_)、at(@)、英文句号(.)和英文冒号(:),长度限制为4~20个字符。|-
└─deviceCode|String|设备编码|-
└─deviceType|Integer|设备类型(1.引导查询机,2.电子门牌, 3.LED大屏,4.集中显示屏, 5.PAD,6.打印机, 7.电脑,8.服务器, 9.其他)|-
└─deviceMac|String|设备的MAC地址|-
└─deviceFirmId|Long|设备生产厂商ID关联mortals_xhx_stp_firm|-
└─deviceFirmname|String|设备生产厂商名称关联mortals_xhx_stp_firm|-
└─deviceToRoomId|Long|设备所属房间ID|-
└─deviceToRoomName|String|设备所属房间名称|-
└─deviceOnlineStatus|Integer|在线状态 (0.离线,1.在线)|-
└─deviceStatus|Integer|启用状态 (0.停止,1.启用,2.测试)|-
└─deviceRemark|String|备注|-
└─onlineTime|Date|最近上线时间|-
└─offlineTime|Date|最近离线时间|-
└─createUserId|Long|创建用户|-
└─createTime|Date|创建时间|-
└─updateUserId|Long|更新用户|-
└─updateTime|Date|更新时间|-
└─pageInfo|object|分页对象|-
└─beginIndex|Integer|开始记录序号|-
└─prePageResult|Integer|每页条数|-
└─totalResult|Integer|总条数|-
└─totalPage|Integer|总页数|-
└─currPage|Integer|当前页|-
└─displayPageSize|Integer|显示页数量|-
└─hasNextPage|Boolean|是否有下一页|-
└─hasPrePage|Boolean|是否有前一页|-
└─lastRecordKey|String|最后一条|-
└─countPage|Boolean|是否计算总页数|-
└─dict|object|字典对象|-
└─deviceType|object|字典属性对象,详见附录|-
└─deviceOnlineStatus|object|字典属性对象,详见附录|-
└─deviceStatus|object|字典属性对象,详见附录|-
└─query|object|查询时候返回的查询列表参数对象|-
**响应消息样例:**
```
{
"code":1,
"data":{
"result":[
{
"appId":6,
"businessName":"device",
}
],
"pageInfo":{
"currPage":1,
"prePageResult":200,
"totalPage":1,
"totalResult":16
},
"dict":{
"dividedTableType":{
"0":"无",
"1":"日"
}
}
},
"query":{
"appId":6
}
}
```
### 编辑设备
**URL:**
http://localhost:8080/m/device/edit
**Type:**
POST
**Content-Type:**
application/x-www-form-urlencoded;charset=utf-8
**Description:**
编辑设备,返回实例详细信息
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
id|array|实例主键ID,数组形式|是|-
**请求样例:**
```
...
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─entity|object|对象实体|对象
└─id|Long|主键ID,主键,自增长|-
└─deviceName|String|设备名称,支持英文字母、数字、短划线(-)、下划线(_)、at(@)、英文句号(.)和英文冒号(:),长度限制为4~20个字符。|-
└─deviceCode|String|设备编码|-
└─deviceType|Integer|设备类型(1.引导查询机,2.电子门牌, 3.LED大屏,4.集中显示屏, 5.PAD,6.打印机, 7.电脑,8.服务器, 9.其他)|-
└─deviceMac|String|设备的MAC地址|-
└─deviceFirmId|Long|设备生产厂商ID关联mortals_xhx_stp_firm|-
└─deviceFirmname|String|设备生产厂商名称关联mortals_xhx_stp_firm|-
└─deviceToRoomId|Long|设备所属房间ID|-
└─deviceToRoomName|String|设备所属房间名称|-
└─deviceOnlineStatus|Integer|在线状态 (0.离线,1.在线)|-
└─deviceStatus|Integer|启用状态 (0.停止,1.启用,2.测试)|-
└─deviceRemark|String|备注|-
└─onlineTime|Date|最近上线时间|-
└─offlineTime|Date|最近离线时间|-
└─createUserId|Long|创建用户|-
└─createTime|Date|创建时间|-
└─updateUserId|Long|更新用户|-
└─updateTime|Date|更新时间|-
└─dict|object|字典对象|-
└─deviceType|object|字典属性对象,详见附录|-
└─deviceOnlineStatus|object|字典属性对象,详见附录|-
└─deviceStatus|object|字典属性对象,详见附录|-
**响应消息样例:**
```
{
"code":1,
"data":{
"dict":{
"interimExcuteStatus":{
"0":"未启用",
"1":"立即执行并保留"
}
},
"entity":{
"createTime":1628737643000,
"createUserId":1,
"createUserName":"系统管理员",
"excuteDate":0
}
}
}
```
### 保存更新设备
**URL:**
http://localhost:8080/m/device/save
**Type:**
POST
**Content-Type:**
application/x-www-form-urlencoded;charset=utf-8
**Description:**
保存或更新设备:id为空时为新增保存,否则为更新提交
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
entity|object|实体对象|是|-
└─deviceName|String|设备名称,支持英文字母、数字、短划线(-)、下划线(_)、at(@)、英文句号(.)和英文冒号(:),长度限制为4~20个字符。|是|-
└─deviceCode|String|设备编码|是|-
└─deviceType|Integer|设备类型(1.引导查询机,2.电子门牌, 3.LED大屏,4.集中显示屏, 5.PAD,6.打印机, 7.电脑,8.服务器, 9.其他)|是|-
└─deviceMac|String|设备的MAC地址|是|-
└─deviceFirmId|Long|设备生产厂商ID关联mortals_xhx_stp_firm|是|-
└─deviceFirmname|String|设备生产厂商名称关联mortals_xhx_stp_firm|是|-
└─deviceToRoomId|Long|设备所属房间ID|是|-
└─deviceToRoomName|String|设备所属房间名称|是|-
└─deviceOnlineStatus|Integer|在线状态 (0.离线,1.在线)|是|-
└─deviceStatus|Integer|启用状态 (0.停止,1.启用,2.测试)|是|-
└─deviceRemark|String|备注|是|-
└─onlineTime|Date|最近上线时间|是|-
└─offlineTime|Date|最近离线时间|是|-
**请求样例:**
```
...
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─entity|object|保存实体|对象
└─id|Long|主键ID,主键,自增长|-
└─deviceName|String|设备名称,支持英文字母、数字、短划线(-)、下划线(_)、at(@)、英文句号(.)和英文冒号(:),长度限制为4~20个字符。|-
└─deviceCode|String|设备编码|-
└─deviceType|Integer|设备类型(1.引导查询机,2.电子门牌, 3.LED大屏,4.集中显示屏, 5.PAD,6.打印机, 7.电脑,8.服务器, 9.其他)|-
└─deviceMac|String|设备的MAC地址|-
└─deviceFirmId|Long|设备生产厂商ID关联mortals_xhx_stp_firm|-
└─deviceFirmname|String|设备生产厂商名称关联mortals_xhx_stp_firm|-
└─deviceToRoomId|Long|设备所属房间ID|-
└─deviceToRoomName|String|设备所属房间名称|-
└─deviceOnlineStatus|Integer|在线状态 (0.离线,1.在线)|-
└─deviceStatus|Integer|启用状态 (0.停止,1.启用,2.测试)|-
└─deviceRemark|String|备注|-
└─onlineTime|Date|最近上线时间|-
└─offlineTime|Date|最近离线时间|-
└─createUserId|Long|创建用户|-
└─createTime|Date|创建时间|-
└─updateUserId|Long|更新用户|-
└─updateTime|Date|更新时间|-
└─dict|object|字典对象|-
└─deviceType|object|字典属性对象想,详见附录|-
└─deviceOnlineStatus|object|字典属性对象想,详见附录|-
└─deviceStatus|object|字典属性对象想,详见附录|-
**响应消息样例:**
```
{
"code":1,
"msg":"成功",
"data":{
"dict":{
"interimExcuteStatus":{
"0":"未启用",
"1":"立即执行并保留"
}
},
"entity":{
"createTime":1628737643000,
"createUserId":1,
"createUserName":"系统管理员",
"excuteDate":0
}
}
}
```
### 查看设备
**URL:**
http://localhost:8080/m/device/view
**Type:**
POST
**Content-Type:**
application/x-www-form-urlencoded;charset=utf-8
**Description:**
查看设备,返回实例详细信息
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
id|array|实例主键ID,数组形式|是|-
**请求样例:**
```
...
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─entity|object|对象实体|对象
└─id|Long|主键ID,主键,自增长|-
└─deviceName|String|设备名称,支持英文字母、数字、短划线(-)、下划线(_)、at(@)、英文句号(.)和英文冒号(:),长度限制为4~20个字符。|-
└─deviceCode|String|设备编码|-
└─deviceType|Integer|设备类型(1.引导查询机,2.电子门牌, 3.LED大屏,4.集中显示屏, 5.PAD,6.打印机, 7.电脑,8.服务器, 9.其他)|-
└─deviceMac|String|设备的MAC地址|-
└─deviceFirmId|Long|设备生产厂商ID关联mortals_xhx_stp_firm|-
└─deviceFirmname|String|设备生产厂商名称关联mortals_xhx_stp_firm|-
└─deviceToRoomId|Long|设备所属房间ID|-
└─deviceToRoomName|String|设备所属房间名称|-
└─deviceOnlineStatus|Integer|在线状态 (0.离线,1.在线)|-
└─deviceStatus|Integer|启用状态 (0.停止,1.启用,2.测试)|-
└─deviceRemark|String|备注|-
└─onlineTime|Date|最近上线时间|-
└─offlineTime|Date|最近离线时间|-
└─createUserId|Long|创建用户|-
└─createTime|Date|创建时间|-
└─updateUserId|Long|更新用户|-
└─updateTime|Date|更新时间|-
└─dict|object|字典对象|-
└─deviceType|object|字典属性对象,详见附录|-
└─deviceOnlineStatus|object|字典属性对象,详见附录|-
└─deviceStatus|object|字典属性对象,详见附录|-
**响应消息样例:**
```
{
"code":1,
"data":{
"dict":{
"interimExcuteStatus":{
"0":"未启用",
"1":"立即执行并保留"
}
},
"entity":{
"createTime":1628737643000,
"createUserId":1,
"createUserName":"系统管理员",
"excuteDate":0
}
}
}
```
### 删除设备
**URL:**
http://localhost:8080/m/device/delete
**Type:**
POST
**Content-Type:**
application/x-www-form-urlencoded;charset=utf-8
**Description:**
删除设备
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
id|array|实例主键ID,数组形式|是|-
**请求样例:**
```
...
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
**响应消息样例:**
```
{
"code":1,
"msg":"成功"
}
```
### 设备导入模板下载
**URL:**
http://localhost:8081/m/device/downloadTemplate
**Type:**
POST
**Content-Type:**
application/x-www-form-urlencoded;charset=utf-8
**Description:**
设备导入模板下载
**Request-example:**
```
curl -X POST -i http://localhost:8081/m/device/downloadTemplate
```
**Response-example:**
```
...
```
### 导入设备
**URL:**
http://localhost:8081/m/device/importData
**Type:**
POST
**Content-Type:**
multipart/form-data
**Description:**
导入设备
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
file|file|文件流|是|-
updateSupport|boolean|相同数据项是否更新|false|-
**Request-example:**
```
curl -X POST -H 'Content-Type: multipart/form-data' -i http://localhost:8081/m/device/importData --data 'updateSupport=true'
```
**Response-example:**
```
...
```
## 设备生产厂商服务接口
### 查询设备生产厂商列表
**URL:**
http://localhost:8080/m/firm/list
**Type:**
POST
**Content-Type:**
application/x-www-form-urlencoded;charset=utf-8
**Description:**
查询设备生产厂商
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
pageInfo|object|分页对象|否|-
└─beginIndex|Integer|开始记录序号|否|-
└─prePageResult|Integer|每页条数|否|-
└─totalResult|Integer|总条数|否|-
└─totalPage|Integer|总页数|否|-
└─currPage|Integer|当前页|否|-
└─displayPageSize|Integer|显示页数量|否|-
└─hasNextPage|Boolean|是否有下一页|否|-
└─hasPrePage|Boolean|是否有前一页|否|-
└─lastRecordKey|String|最后一条|否|-
└─countPage|Boolean|是否计算总页数|否|-
query|object|查询对象|否|-
└─id|Long|主键ID,主键,自增长|否|-
└─firmName|String|设备生产厂商名称|否|-
└─firmCode|String|设备生产商编码|否|-
└─firmRemark|String|备注|否|-
└─createUserId|Long|创建用户|否|-
└─createTime|Date|创建时间|否|-
└─updateUserId|Long|更新用户|否|-
└─updateTime|Date|更新时间|否|-
└─idStart|Long|大于 > 主键ID,主键,自增长|否|-
└─idEnd|Long|小于 < 主键ID,主键,自增长|否|-
└─idList|array|主键ID,主键,自增长列表|否|-
└─firmNameList|array|设备生产厂商名称列表|否|-
└─firmCodeList|array|设备生产商编码列表|否|-
└─firmRemarkList|array|备注列表|否|-
└─createUserIdStart|Long|大于 > 创建用户|否|-
└─createUserIdEnd|Long|小于 < 创建用户|否|-
└─createUserIdList|array|创建用户列表|否|-
└─createTimeStart|Date|大于 > 创建时间|否|-
└─createTimeEnd|Date|小于 < 创建时间|否|-
└─updateUserIdStart|Long|大于 > 更新用户|否|-
└─updateUserIdEnd|Long|小于 < 更新用户|否|-
└─updateUserIdList|array|更新用户列表|否|-
└─updateTimeStart|Date|大于 > 更新时间|否|-
└─updateTimeEnd|Date|小于 < 更新时间|否|-
**请求样例:**
```
...
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─result|array|结果集列表|数组
└─id|Long|主键ID,主键,自增长|-
└─firmName|String|设备生产厂商名称|-
└─firmCode|String|设备生产商编码|-
└─firmRemark|String|备注|-
└─createUserId|Long|创建用户|-
└─createTime|Date|创建时间|-
└─updateUserId|Long|更新用户|-
└─updateTime|Date|更新时间|-
└─pageInfo|object|分页对象|-
└─beginIndex|Integer|开始记录序号|-
└─prePageResult|Integer|每页条数|-
└─totalResult|Integer|总条数|-
└─totalPage|Integer|总页数|-
└─currPage|Integer|当前页|-
└─displayPageSize|Integer|显示页数量|-
└─hasNextPage|Boolean|是否有下一页|-
└─hasPrePage|Boolean|是否有前一页|-
└─lastRecordKey|String|最后一条|-
└─countPage|Boolean|是否计算总页数|-
└─dict|object|字典对象|-
└─query|object|查询时候返回的查询列表参数对象|-
**响应消息样例:**
```
{
"code":1,
"data":{
"result":[
{
"appId":6,
"businessName":"device",
}
],
"pageInfo":{
"currPage":1,
"prePageResult":200,
"totalPage":1,
"totalResult":16
},
"dict":{
"dividedTableType":{
"0":"无",
"1":"日"
}
}
},
"query":{
"appId":6
}
}
```
### 编辑设备生产厂商
**URL:**
http://localhost:8080/m/firm/edit
**Type:**
POST
**Content-Type:**
application/x-www-form-urlencoded;charset=utf-8
**Description:**
编辑设备生产厂商,返回实例详细信息
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
id|array|实例主键ID,数组形式|是|-
**请求样例:**
```
...
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─entity|object|对象实体|对象
└─id|Long|主键ID,主键,自增长|-
└─firmName|String|设备生产厂商名称|-
└─firmCode|String|设备生产商编码|-
└─firmRemark|String|备注|-
└─createUserId|Long|创建用户|-
└─createTime|Date|创建时间|-
└─updateUserId|Long|更新用户|-
└─updateTime|Date|更新时间|-
└─dict|object|字典对象|-
**响应消息样例:**
```
{
"code":1,
"data":{
"dict":{
"interimExcuteStatus":{
"0":"未启用",
"1":"立即执行并保留"
}
},
"entity":{
"createTime":1628737643000,
"createUserId":1,
"createUserName":"系统管理员",
"excuteDate":0
}
}
}
```
### 保存更新设备生产厂商
**URL:**
http://localhost:8080/m/firm/save
**Type:**
POST
**Content-Type:**
application/x-www-form-urlencoded;charset=utf-8
**Description:**
保存或更新设备生产厂商:id为空时为新增保存,否则为更新提交
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
entity|object|实体对象|是|-
└─firmName|String|设备生产厂商名称|是|-
└─firmCode|String|设备生产商编码|是|-
└─firmRemark|String|备注|是|-
**请求样例:**
```
...
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─entity|object|保存实体|对象
└─id|Long|主键ID,主键,自增长|-
└─firmName|String|设备生产厂商名称|-
└─firmCode|String|设备生产商编码|-
└─firmRemark|String|备注|-
└─createUserId|Long|创建用户|-
└─createTime|Date|创建时间|-
└─updateUserId|Long|更新用户|-
└─updateTime|Date|更新时间|-
└─dict|object|字典对象|-
**响应消息样例:**
```
{
"code":1,
"msg":"成功",
"data":{
"dict":{
"interimExcuteStatus":{
"0":"未启用",
"1":"立即执行并保留"
}
},
"entity":{
"createTime":1628737643000,
"createUserId":1,
"createUserName":"系统管理员",
"excuteDate":0
}
}
}
```
### 查看设备生产厂商
**URL:**
http://localhost:8080/m/firm/view
**Type:**
POST
**Content-Type:**
application/x-www-form-urlencoded;charset=utf-8
**Description:**
查看设备生产厂商,返回实例详细信息
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
id|array|实例主键ID,数组形式|是|-
**请求样例:**
```
...
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─entity|object|对象实体|对象
└─id|Long|主键ID,主键,自增长|-
└─firmName|String|设备生产厂商名称|-
└─firmCode|String|设备生产商编码|-
└─firmRemark|String|备注|-
└─createUserId|Long|创建用户|-
└─createTime|Date|创建时间|-
└─updateUserId|Long|更新用户|-
└─updateTime|Date|更新时间|-
└─dict|object|字典对象|-
**响应消息样例:**
```
{
"code":1,
"data":{
"dict":{
"interimExcuteStatus":{
"0":"未启用",
"1":"立即执行并保留"
}
},
"entity":{
"createTime":1628737643000,
"createUserId":1,
"createUserName":"系统管理员",
"excuteDate":0
}
}
}
```
### 删除设备生产厂商
**URL:**
http://localhost:8080/m/firm/delete
**Type:**
POST
**Content-Type:**
application/x-www-form-urlencoded;charset=utf-8
**Description:**
删除设备生产厂商
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
id|array|实例主键ID,数组形式|是|-
**请求样例:**
```
...
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
**响应消息样例:**
```
{
"code":1,
"msg":"成功"
}
```
### 设备生产厂商导入模板下载
**URL:**
http://localhost:8081/m/firm/downloadTemplate
**Type:**
POST
**Content-Type:**
application/x-www-form-urlencoded;charset=utf-8
**Description:**
设备生产厂商导入模板下载
**Request-example:**
```
curl -X POST -i http://localhost:8081/m/firm/downloadTemplate
```
**Response-example:**
```
...
```
### 导入设备生产厂商
**URL:**
http://localhost:8081/m/firm/importData
**Type:**
POST
**Content-Type:**
multipart/form-data
**Description:**
导入设备生产厂商
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
file|file|文件流|是|-
updateSupport|boolean|相同数据项是否更新|false|-
**Request-example:**
```
curl -X POST -H 'Content-Type: multipart/form-data' -i http://localhost:8081/m/firm/importData --data 'updateSupport=true'
```
**Response-example:**
```
...
```
###deviceType字典
字典参数key|字典参数值|其它
---|---|---
1|引导查询机
2|电子门牌
3|LED大屏
4|集中显示屏
5|PAD
6|打印机
7|电脑
8|服务器
9|其他
###deviceOnlineStatus字典
字典参数key|字典参数值|其它
---|---|---
0|离线
1|在线
###deviceStatus字典
字典参数key|字典参数值|其它
---|---|---
0|停止
1|启用
2|测试
appbuild-manager/src/main/resources/template/doc/api-two.md.ftl
0 → 100644
View file @
5b6faec7
## ${functionName}
### 查询${functionName}列表
**请求URL:** ${RequestMapping}/list
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 查询${functionName}
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
page|Integer|当前页|否|-
size|Integer|每页条数|否|-
<#list columns as column>
<#if column.isQuery == 1>
${column.javaField}|${column.javaType}|${column.columnComment}|否|-
</#if>
</#list>
**请求样例:**
```
{
<#list columns as column>
<#if column.isQuery == 1>
<#if column.javaType=="String" ||column.javaType=="Date">
<#assign fakeValue>"${column.randomStr(column.javaType)}"</#assign>
<#else>
<#assign fakeValue>${column.randomStr(column.javaType)}</#assign>
</#if>
"${column.javaField}":${fakeValue}<#sep>,</#sep>
</#if>
</#list>
"page":1,
"size":10
}
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
 per_page|Integer|每页条数|-
 total|Integer|总条数|-
 last_page|Integer|总页数|-
 current_page|Integer|当前页|-
 data|array|结果集列表|数组
<#list columns as column>
  ${column.javaField}|${column.javaType}|${column.columnComment}|-
</#list>
dict|object|字典对象|-
<#list columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
 ${column.javaField}|object|字典属性对象,详见附录|-
</#if>
</#list>
**响应消息样例:**
```
{
"code":1,
"data":{
"per_page":10,
"total":0,
"data":[],
"last_page":0,
"current_page":1
},
"query":{
"modelCode":"phxt1",
"modelName":"排号系统"
}
}
```
### 编辑${functionName}
**请求URL:** ${RequestMapping}/edit
**请求方式:** GET
**内容类型:** application/json;charset=utf-8
**简要描述:** 编辑${functionName},返回实例详细信息
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
${pkColumn.javaField}|${pkColumn.javaType}|主键,唯一|是|-
**请求样例:**
```
http://localhost/${RequestMapping}/edit?id=549
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
<#list columns as column>
 ${column.javaField}|${column.javaType}|${column.columnComment}|-
</#list>
dict|object|字典对象|-
<#list columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
 ${column.javaField}|object|字典属性对象,详见附录|-
</#if>
</#list>
**响应消息样例:**
```
{
"code": 1,
"data": {
<#list columns as column>
<#if column.javaType=="String" ||column.javaType=="Date">
<#assign fakeValue>"${column.randomStr(column.javaType)}"</#assign>
<#else>
<#assign fakeValue>${column.randomStr(column.javaType)}</#assign>
</#if>
"${column.javaField}":${fakeValue}<#sep>,</#sep>
</#list>
}
}
```
### 查看${functionName}
**请求URL:** ${RequestMapping}/info
**请求方式:** GET
**内容类型:** application/json;charset=utf-8
**简要描述:** 查看${functionName},返回实例详细信息
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
${pkColumn.javaField}|${pkColumn.javaType}|主键,唯一|是|-
**请求样例:**
```
http://localhost/${RequestMapping}/info?id=549
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
<#list columns as column>
 ${column.javaField}|${column.javaType}|${column.columnComment}|-
</#list>
dict|object|字典对象|-
<#list columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
 ${column.javaField}|object|字典属性对象,详见附录|-
</#if>
</#list>
**响应消息样例:**
```
{
"code": 1,
"data": {
<#list columns as column>
<#if column.javaType=="String" ||column.javaType=="Date">
<#assign fakeValue>"${column.randomStr(column.javaType)}"</#assign>
<#else>
<#assign fakeValue>${column.randomStr(column.javaType)}</#assign>
</#if>
"${column.javaField}":${fakeValue}<#sep>,</#sep>
</#list>
}
}
```
### 保存更新${functionName}
**请求URL:** ${RequestMapping}/save
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 保存或更新${functionName}:id为空时为新增保存,否则为更新提交
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
<#list columns as column>
<#if !column.isSuperColumn(column.javaField)>
${column.javaField}|${column.javaType}|${column.columnComment}|是|-
</#if>
</#list>
**请求样例:**
```
{
<#list columns as column>
<#if !column.isSuperColumn(column.javaField)>
<#if column.javaType=="String" ||column.javaType=="Date">
<#assign fakeValue>"${column.randomStr(column.javaType)}"</#assign>
<#else>
<#assign fakeValue>${column.randomStr(column.javaType)}</#assign>
</#if>
"${column.javaField}":${fakeValue}<#sep>,</#sep>
</#if>
</#list>
}
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
 id|Long|保存后主键id|-
 entity|object|保存更新实体|对象
<#list columns as column>
  ${column.javaField}|${column.javaType}|${column.columnComment}|-
</#list>
**响应消息样例:**
```
{
"msg":"新增模块成功",
"code":1,
"data":{
"__mortals_form_state__":"ADD",
"id":4,
"entity":{
"createTime":1642486776780,
"id":4,
"modelCode":"phxt1",
"modelName":"排号系统4",
"updateTime":1642486776780
}
}
}
```
### 删除${functionName}
**请求URL:** ${RequestMapping}/delete
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 删除${functionName}
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
id|String|字符串,多个逗号分隔|是|-
**请求样例:**
```
http://localhost:8080/${RequestMapping}/delete?id=1'
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
**响应消息样例:**
```
{
"code":1,
"msg":"成功"
}
```
<#if table.isGenExport==1 >
### 导入${functionName}模板下载
**请求URL:** ${RequestMapping}/downloadTemplate
**请求方式:** POST
**内容类型:** application/x-www-form-urlencoded;charset=utf-8
**简要描述:** ${functionName}导入模板下载
**请求样例:**
```
http://localhost/${RequestMapping}/downloadTemplate
```
**Response-example:**
```
...
```
### 导入${functionName}
**请求URL:** ${RequestMapping}/importData
**请求方式:** POST
**内容类型:** multipart/form-data
**简要描述:** 导入${functionName}
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
file|file|文件流|是|-
updateSupport|boolean|相同数据项是否更新|false|-
**请求样例:**
```
http://localhost/${RequestMapping}/importData --data 'updateSupport=true'
```
**Response-example:**
```
...
```
</#if>
### 导出${functionName}
**请求URL:** ${RequestMapping}/exportExcel
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 导出${functionName}
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
idList|Arrays|id数组|否|需要导出的多项
<#list columns as column>
<#if column.isQuery == 1>
${column.javaField}|${column.javaType}|${column.columnComment}|否|参数查询条件
</#if>
</#list>
**请求样例:**
```
{
idList:[1,2],
<#list columns as column>
<#if column.isQuery == 1>
<#if column.javaType=="String" ||column.javaType=="Date">
<#assign fakeValue>"${column.randomStr(column.javaType)}"</#assign>
<#else>
<#assign fakeValue>${column.randomStr(column.javaType)}</#assign>
</#if>
"${column.javaField}":${fakeValue}<#sep>,</#sep>
</#if>
</#list>
}
```
**Response-example:**
```
...
```
appbuild-manager/src/main/resources/template/doc/api.md.ftl
0 → 100644
View file @
5b6faec7
## ${functionName}服务接口
### 查询${functionName}列表
**URL:** http://localhost:8080/m/${RequestMapping}/list
**Type:** POST
**Content-Type:** application/x-www-form-urlencoded;charset=utf-8
**Description:** 查询${functionName}
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
pageInfo|object|分页对象|否|-
└─beginIndex|Integer|开始记录序号|否|-
└─prePageResult|Integer|每页条数|否|-
└─totalResult|Integer|总条数|否|-
└─totalPage|Integer|总页数|否|-
└─currPage|Integer|当前页|否|-
└─displayPageSize|Integer|显示页数量|否|-
└─hasNextPage|Boolean|是否有下一页|否|-
└─hasPrePage|Boolean|是否有前一页|否|-
└─lastRecordKey|String|最后一条|否|-
└─countPage|Boolean|是否计算总页数|否|-
query|object|查询对象|否|-
<#list columns as column>
└─${column.javaField}|${column.javaType}|${column.columnComment}|否|-
</#list>
<#list columns as column>
<#if column.javaType == "Long"||column.javaType == "Integer"||column.javaType == "BigDecimal">
└─${column.javaField}Start|${column.javaType}|大于 > ${column.columnComment}|否|-
└─${column.javaField}End|${column.javaType}|小于 < ${column.columnComment}|否|-
└─${column.javaField}List|array|${column.columnComment}列表|否|-
</#if>
<#if column.javaType == "String">
└─${column.javaField}List|array|${column.columnComment}列表|否|-
</#if>
<#if column.javaType == "Date">
└─${column.javaField}Start|${column.javaType}|大于 > ${column.columnComment}|否|-
└─${column.javaField}End|${column.javaType}|小于 < ${column.columnComment}|否|-
</#if>
</#list>
**请求样例:**
```
curl -X POST -i http://localhost:8080/m/${RequestMapping}/list --data 'query.id=1'
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─result|array|结果集列表|数组
<#list columns as column>
└─${column.javaField}|${column.javaType}|${column.columnComment}|-
</#list>
└─pageInfo|object|分页对象|-
└─beginIndex|Integer|开始记录序号|-
└─prePageResult|Integer|每页条数|-
└─totalResult|Integer|总条数|-
└─totalPage|Integer|总页数|-
└─currPage|Integer|当前页|-
└─displayPageSize|Integer|显示页数量|-
└─hasNextPage|Boolean|是否有下一页|-
└─hasPrePage|Boolean|是否有前一页|-
└─lastRecordKey|String|最后一条|-
└─countPage|Boolean|是否计算总页数|-
└─dict|object|字典对象|-
<#list columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
└─${column.javaField}|object|字典属性对象,详见附录|-
</#if>
</#list>
└─query|object|查询时候返回的查询列表参数对象|-
**响应消息样例:**
```
{
"code":1,
"data":{
"result":[
{
"appId":6,
"businessName":"device",
}
],
"pageInfo":{
"currPage":1,
"prePageResult":200,
"totalPage":1,
"totalResult":16
},
"dict":{
"dividedTableType":{
"0":"无",
"1":"日"
}
}
},
"query":{
"appId":6
}
}
```
### 编辑${functionName}
**URL:** http://localhost:8080/m/${RequestMapping}/edit
**Type:** POST
**Content-Type:** application/x-www-form-urlencoded;charset=utf-8
**Description:** 编辑${functionName},返回实例详细信息
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
${pkColumn.javaField}|array|实例主键ID,数组形式|是|-
**请求样例:**
```
curl -X POST -i http://localhost:8080/m/${RequestMapping}/edit --data 'id=[1]'
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─entity|object|对象实体|对象
<#list columns as column>
└─${column.javaField}|${column.javaType}|${column.columnComment}|-
</#list>
└─dict|object|字典对象|-
<#list columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
└─${column.javaField}|object|字典属性对象,详见附录|-
</#if>
</#list>
**响应消息样例:**
```
{
"code":1,
"data":{
"dict":{
"interimExcuteStatus":{
"0":"未启用",
"1":"立即执行并保留"
}
},
"entity":{
"createTime":1628737643000,
"createUserId":1,
"createUserName":"系统管理员",
"excuteDate":0
}
}
}
```
### 保存更新${functionName}
**URL:** http://localhost:8080/m/${RequestMapping}/save
**Type:** POST
**Content-Type:** application/x-www-form-urlencoded;charset=utf-8
**Description:** 保存或更新${functionName}:id为空时为新增保存,否则为更新提交
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
entity|object|实体对象|是|-
<#list columns as column>
<#if !column.isSuperColumn(column.javaField)>
└─${column.javaField}|${column.javaType}|${column.columnComment}|是|-
</#if>
</#list>
**请求样例:**
```
...
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─entity|object|保存实体|对象
<#list columns as column>
└─${column.javaField}|${column.javaType}|${column.columnComment}|-
</#list>
└─dict|object|字典对象|-
<#list columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
└─${column.javaField}|object|字典属性对象想,详见附录|-
</#if>
</#list>
**响应消息样例:**
```
{
"code":1,
"msg":"成功",
"data":{
"dict":{
"interimExcuteStatus":{
"0":"未启用",
"1":"立即执行并保留"
}
},
"entity":{
"createTime":1628737643000,
"createUserId":1,
"createUserName":"系统管理员",
"excuteDate":0
}
}
}
```
### 查看${functionName}
**URL:** http://localhost:8080/m/${RequestMapping}/view
**Type:** POST
**Content-Type:** application/x-www-form-urlencoded;charset=utf-8
**Description:** 查看${functionName},返回实例详细信息
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
${pkColumn.javaField}|array|实例主键ID,数组形式|是|-
**请求样例:**
```
curl -X POST -i http://localhost:8080/m/${RequestMapping}/view --data 'id=[1]'
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─entity|object|对象实体|对象
<#list columns as column>
└─${column.javaField}|${column.javaType}|${column.columnComment}|-
</#list>
└─dict|object|字典对象|-
<#list columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
└─${column.javaField}|object|字典属性对象,详见附录|-
</#if>
</#list>
**响应消息样例:**
```
{
"code":1,
"data":{
"dict":{
"interimExcuteStatus":{
"0":"未启用",
"1":"立即执行并保留"
}
},
"entity":{
"createTime":1628737643000,
"createUserId":1,
"createUserName":"系统管理员",
"excuteDate":0
}
}
}
```
### 删除${functionName}
**URL:** http://localhost:8080/m/${RequestMapping}/delete
**Type:** POST
**Content-Type:** application/x-www-form-urlencoded;charset=utf-8
**Description:** 删除${functionName}
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
${pkColumn.javaField}|array|实例主键ID,数组形式|是|-
**请求样例:**
```
curl -X POST -i http://localhost:8080/m/${RequestMapping}/delete --data 'id=[1]'
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
**响应消息样例:**
```
{
"code":1,
"msg":"成功"
}
```
### ${functionName}导入模板下载
**URL:** http://localhost:8081/m/${RequestMapping}/downloadTemplate
**Type:** POST
**Content-Type:** application/x-www-form-urlencoded;charset=utf-8
**Description:** ${functionName}导入模板下载
**Request-example:**
```
curl -X POST -i http://localhost:8081/m/${RequestMapping}/downloadTemplate
```
**Response-example:**
```
...
```
### 导入${functionName}
**URL:** http://localhost:8081/m/${RequestMapping}/importData
**Type:** POST
**Content-Type:** multipart/form-data
**Description:** 导入${functionName}
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
file|file|文件流|是|-
updateSupport|boolean|相同数据项是否更新|false|-
**Request-example:**
```
curl -X POST -H 'Content-Type: multipart/form-data' -i http://localhost:8081/m/${RequestMapping}/importData --data 'updateSupport=true'
```
**Response-example:**
```
...
```
appbuild-manager/src/main/resources/template/doc/apidict.md.ftl
0 → 100644
View file @
5b6faec7
<#list columns as column>
<#if column.dict??>
<#assign comment=column.subComment(column.columnComment) />
### ${column.javaField}
字典参数key|字典参数值|其它
---|---|---
<#list column.dict as dict>
${dict.num}|${dict.value}|-
</#list>
</#if>
</#list>
appbuild-manager/src/main/resources/template/java/entity-tree.java.ftl
View file @
5b6faec7
...
@@ -13,7 +13,7 @@ import java.util.stream.Collectors;
...
@@ -13,7 +13,7 @@ import java.util.stream.Collectors;
*
@
author
${
author
}
*
@
author
${
author
}
*
@
date
${
datetime
}
*
@
date
${
datetime
}
*/
*/
@
Data
public
class
${
ClassName
}
TreeSelect
implements
Serializable
{
public
class
${
ClassName
}
TreeSelect
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
...
...
appbuild-manager/src/main/resources/template/java/entity.java.ftl
View file @
5b6faec7
...
@@ -36,6 +36,7 @@ import com.alibaba.fastjson.annotation.JSONField;
...
@@ -36,6 +36,7 @@ import com.alibaba.fastjson.annotation.JSONField;
</#
list
>
</#
list
>
import
java
.
util
.
List
;
import
java
.
util
.
List
;
import
java
.
util
.
ArrayList
;
import
java
.
util
.
ArrayList
;
import
com
.
fasterxml
.
jackson
.
annotation
.
JsonFormat
;
import
com
.
mortals
.
framework
.
annotation
.
Excel
;
import
com
.
mortals
.
framework
.
annotation
.
Excel
;
import
com
.
mortals
.
framework
.
model
.${
Entity
};
import
com
.
mortals
.
framework
.
model
.${
Entity
};
import
${
packageName
}.
model
.
vo
.${
ClassName
}
Vo
;
import
${
packageName
}.
model
.
vo
.${
ClassName
}
Vo
;
...
@@ -58,16 +59,11 @@ public class ${ClassName}Entity extends ${ClassName}Vo {
...
@@ -58,16 +59,11 @@ public class ${ClassName}Entity extends ${ClassName}Vo {
*
${
column
.
columnComment
}
*
${
column
.
columnComment
}
*/
*/
<#
if
column
.
isExport
==
1
>
<#
if
column
.
isExport
==
1
>
<#
assign
comment
=
column
.
subComment
(
column
.
columnComment
)
/>
<#
assign
parentheseIndex
=
column
.
columnComment
?
index_of
(
"("
)>
<#
assign
parentheseIndex
=
column
.
columnComment
?
index_of
(
"("
)>
<#
if
parentheseIndex
!= -1>
<#
assign
comment
=
column
.
columnComment
[
0.
.
parentheseIndex
-
1
]>
<#
else
>
<#
assign
comment
=
column
.
columnComment
>
</#
if
>
<#
if
parentheseIndex
!= -1>
<#
if
parentheseIndex
!= -1>
@
Excel
(
name
=
"${comment}"
,
readConverterExp
=
"${column.readConverterExp()}"
)
@
Excel
(
name
=
"${comment}"
,
readConverterExp
=
"${column.readConverterExp()}"
)
<#
elseif
column
.
javaType
==
"Date"
>
<#
elseif
column
.
javaType
==
"Date"
>
@
JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@
Excel
(
name
=
"${comment}"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
@
Excel
(
name
=
"${comment}"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
<#
else
>
<#
else
>
@
Excel
(
name
=
"${comment}"
)
@
Excel
(
name
=
"${comment}"
)
...
@@ -84,7 +80,7 @@ public class ${ClassName}Entity extends ${ClassName}Vo {
...
@@ -84,7 +80,7 @@ public class ${ClassName}Entity extends ${ClassName}Vo {
/**
/**
*
${
table
.
subTable
.
functionName
}
信息
*
${
table
.
subTable
.
functionName
}
信息
*/
*/
private
List
<${
subClassName
}
Entity
>
${
subclassName
}
List
=
new
ArrayList
<>();
private
List
<${
subClassName
}
Entity
>
${
subclassName
}
List
=
new
ArrayList
<>();
;
</#
if
>
</#
if
>
<#
if
table
.
subTable
??
&&
table
.
tplCategory
==
"subone"
>
<#
if
table
.
subTable
??
&&
table
.
tplCategory
==
"subone"
>
...
@@ -170,16 +166,17 @@ public class ${ClassName}Entity extends ${ClassName}Vo {
...
@@ -170,16 +166,17 @@ public class ${ClassName}Entity extends ${ClassName}Vo {
public
void
initAttrValue
(){
public
void
initAttrValue
(){
<#
list
columns
as
column
>
<#
list
columns
as
column
>
<#
if
!column.isSuperColumn(column.javaField)>
<#
if
!column.isSuperColumn(column.javaField)>
<#
if
column
.
javaType
==
"Long"
&&
column
.
defaultValue
??>
<#
if
column
.
javaType
==
"Long"
&&
column
.
defaultValue
??&&
column
.
defaultValue
!="">
<#
assign
Default
>${
column
.
defaultValue
}
L
</#
assign
>
<#
assign
Default
>${
column
.
defaultValue
}
L
</#
assign
>
<#
elseif
column
.
javaType
==
"Integer"
&&
column
.
defaultValue
??>
<#
elseif
column
.
javaType
==
"Integer"
&&
column
.
defaultValue
??
&&
column
.
defaultValue
!=""
>
<#
assign
Default
>${
column
.
defaultValue
}</#
assign
>
<#
assign
Default
>${
column
.
defaultValue
}</#
assign
>
<#
elseif
column
.
javaType
==
"String"
&&
column
.
defaultValue
??>
<#
elseif
column
.
javaType
==
"String"
&&
column
.
defaultValue
??>
<#
assign
Default
>
"${column.defaultValue}"
</#
assign
>
<#
assign
Default
>
"${column.defaultValue}"
</#
assign
>
<#
elseif
column
.
javaType
==
"BigDecimal"
&&
column
.
defaultValue
??>
<#
elseif
column
.
javaType
==
"BigDecimal"
&&
column
.
defaultValue
??
&&
column
.
defaultValue
!=""
>
<#
assign
Default
>
BigDecimal
.
valueOf
(${
column
.
defaultValue
})</#
assign
>
<#
assign
Default
>
BigDecimal
.
valueOf
(${
column
.
defaultValue
})</#
assign
>
<#
elseif
column
.
javaType
==
"Date"
>
<#
elseif
column
.
javaType
==
"Date"
>
<#
assign
Default
>
n
ew
Date
()
</#
assign
>
<#
assign
Default
>
n
ull
</#
assign
>
<#
else
>
<#
else
>
<#
assign
Default
>
null
</#
assign
>
<#
assign
Default
>
null
</#
assign
>
</#
if
>
</#
if
>
...
...
appbuild-manager/src/main/resources/template/java/enum.java.ftl
View file @
5b6faec7
...
@@ -10,18 +10,22 @@ import java.util.Map;
...
@@ -10,18 +10,22 @@ import java.util.Map;
*/
*/
public
enum
${
EnumClassName
?
cap_first
}
Enum
{
public
enum
${
EnumClassName
?
cap_first
}
Enum
{
<#
list
enums
as
enum
>
<#
list
enums
as
enum
>
<#
if
JavaType
=
"Integer"
>
${
enum
.
value
}(${
enum
.
num
},
"${enum.value}"
)<#
sep
>,
${
enum
.
value
}(${
enum
.
num
},
"${enum.value}"
)<#
sep
>,
<#
elseif
JavaType
=
"String"
>
${
enum
.
value
}(
"${enum.num}"
,
"${enum.value}"
)<#
sep
>,
</#
if
>
</#
list
>
</#
list
>
;
;
private
int
value
;
private
${
JavaType
}
value
;
private
String
desc
;
private
String
desc
;
${
EnumClassName
?
cap_first
}
Enum
(
int
value
,
String
desc
)
{
${
EnumClassName
?
cap_first
}
Enum
(
${
JavaType
}
value
,
String
desc
)
{
this
.
value
=
value
;
this
.
value
=
value
;
this
.
desc
=
desc
;
this
.
desc
=
desc
;
}
}
public
int
getValue
()
{
public
${
JavaType
}
getValue
()
{
return
this
.
value
;
return
this
.
value
;
}
}
...
@@ -29,7 +33,7 @@ public enum ${EnumClassName?cap_first}Enum {
...
@@ -29,7 +33,7 @@ public enum ${EnumClassName?cap_first}Enum {
return
this
.
desc
;
return
this
.
desc
;
}
}
public
static
${
EnumClassName
?
cap_first
}
Enum
getByValue
(
int
value
)
{
public
static
${
EnumClassName
?
cap_first
}
Enum
getByValue
(
${
JavaType
}
value
)
{
for
(${
EnumClassName
?
cap_first
}
Enum
${
EnumClassName
?
uncap_first
}
Enum
:
${
EnumClassName
?
cap_first
}
Enum
.
values
())
{
for
(${
EnumClassName
?
cap_first
}
Enum
${
EnumClassName
?
uncap_first
}
Enum
:
${
EnumClassName
?
cap_first
}
Enum
.
values
())
{
if
(${
EnumClassName
?
uncap_first
}
Enum
.
getValue
()
==
value
)
{
if
(${
EnumClassName
?
uncap_first
}
Enum
.
getValue
()
==
value
)
{
return
${
EnumClassName
?
uncap_first
}
Enum
;
return
${
EnumClassName
?
uncap_first
}
Enum
;
...
@@ -44,12 +48,12 @@ public enum ${EnumClassName?cap_first}Enum {
...
@@ -44,12 +48,12 @@ public enum ${EnumClassName?cap_first}Enum {
*
@
param
eItem
不包含项
*
@
param
eItem
不包含项
*
@
return
*
@
return
*/
*/
public
static
Map
<
String
,
String
>
getEnumMap
(
int
...
eItem
)
{
public
static
Map
<
String
,
String
>
getEnumMap
(
${
JavaType
}
...
eItem
)
{
Map
<
String
,
String
>
resultMap
=
new
LinkedHashMap
<>();
Map
<
String
,
String
>
resultMap
=
new
LinkedHashMap
<>();
for
(${
EnumClassName
?
cap_first
}
Enum
item
:
${
EnumClassName
?
cap_first
}
Enum
.
values
())
{
for
(${
EnumClassName
?
cap_first
}
Enum
item
:
${
EnumClassName
?
cap_first
}
Enum
.
values
())
{
try
{
try
{
boolean
hasE
=
false
;
boolean
hasE
=
false
;
for
(
int
e
:
eItem
)
{
for
(
${
JavaType
}
e
:
eItem
)
{
if
(
item
.
getValue
()
==
e
)
{
if
(
item
.
getValue
()
==
e
)
{
hasE
=
true
;
hasE
=
true
;
break
;
break
;
...
...
appbuild-manager/src/main/resources/template/java/httpclient.test.ftl
0 → 100644
View file @
5b6faec7
###${functionName}列表
POST {{baseUrl}}/${RequestMapping}/list
Content-Type: application/json
{
<#list columns as column>
<#if column.isQuery == 1>
<#if column.javaType=="String" ||column.javaType=="Date">
<#assign fakeValue>"${column.randomStr(column)}"</#assign>
<#else>
<#assign fakeValue>${column.randomStr(column)}</#assign>
</#if>
"${column.javaField}":${fakeValue}<#sep>,</#sep>
</#if>
</#list>
"page":1,
"size":10
}
###${functionName}更新与保存
POST {{baseUrl}}/${RequestMapping}/save
Content-Type: application/json
{
<#list columns as column>
<#if !column.isSuperColumn(column.javaField)>
<#if column.javaType=="String" ||column.javaType=="Date">
<#assign fakeValue>"${column.randomStr(column)}"</#assign>
<#else>
<#assign fakeValue>${column.randomStr(column)}</#assign>
</#if>
"${column.javaField}":${fakeValue}<#sep>,</#sep>
</#if>
</#list>
}
> {%
client.global.set("${ClassName}_id", JSON.parse(response.body).data.id);
%}
###${functionName}查看
GET {{baseUrl}}/${RequestMapping}/info?id={{${ClassName}_id}}
Accept: application/json
###${functionName}编辑
GET {{baseUrl}}/${RequestMapping}/edit?id={{${ClassName}_id}}
Accept: application/json
###${functionName}删除
GET {{baseUrl}}/${RequestMapping}/delete?id={{${ClassName}_id}}
Accept: application/json
appbuild-manager/src/main/resources/template/java/service-tree.java.ftl
View file @
5b6faec7
...
@@ -14,7 +14,6 @@ import ${packageName}.model.${ClassName}TreeSelect;
...
@@ -14,7 +14,6 @@ import ${packageName}.model.${ClassName}TreeSelect;
import
java
.
util
.
List
;
import
java
.
util
.
List
;
import
com
.
mortals
.
framework
.
exception
.
AppException
;
import
com
.
mortals
.
framework
.
exception
.
AppException
;
import
com
.
mortals
.
framework
.
model
.
Context
;
import
com
.
mortals
.
framework
.
model
.
Context
;
/**
/**
*
${
ClassName
}
Service
*
${
ClassName
}
Service
*
*
...
@@ -51,4 +50,11 @@ public interface ${ClassName}Service extends ${Service}<${ClassName}Entity,${pkC
...
@@ -51,4 +50,11 @@ public interface ${ClassName}Service extends ${Service}<${ClassName}Entity,${pkC
*/
*/
List
<${
ClassName
}
TreeSelect
>
build
${
ClassName
}
TreeSelect
(
List
<${
ClassName
}
Entity
>
${
ClassName
?
uncap_first
}
List
);
List
<${
ClassName
}
TreeSelect
>
build
${
ClassName
}
TreeSelect
(
List
<${
ClassName
}
Entity
>
${
ClassName
?
uncap_first
}
List
);
/**
*
根据父
id
查询子节点
*
@
param
parentId
*
@
param
context
*
@
return
*/
List
<${
ClassName
}
TreeSelect
>
getListByParentId
(
String
parentId
,
Context
context
);
}
}
\ No newline at end of file
appbuild-manager/src/main/resources/template/java/service.java.ftl
View file @
5b6faec7
...
@@ -10,7 +10,6 @@ package ${packageName}.service;
...
@@ -10,7 +10,6 @@ package ${packageName}.service;
</#
if
>
</#
if
>
import
com
.
mortals
.
framework
.
service
.${
Service
};
import
com
.
mortals
.
framework
.
service
.${
Service
};
import
${
packageName
}.
model
.${
ClassName
}
Entity
;
import
${
packageName
}.
model
.${
ClassName
}
Entity
;
/**
/**
*
${
ClassName
}
Service
*
${
ClassName
}
Service
*
*
...
...
appbuild-manager/src/main/resources/template/java/serviceImpl-tree.java.ftl
View file @
5b6faec7
...
@@ -24,7 +24,6 @@ import java.util.stream.Collectors;
...
@@ -24,7 +24,6 @@ import java.util.stream.Collectors;
<#
if
pkColumn
??&&
pkColumn
.
isIncrement
==
0
>
<#
if
pkColumn
??&&
pkColumn
.
isIncrement
==
0
>
import
cn
.
hutool
.
core
.
util
.
IdUtil
;
import
cn
.
hutool
.
core
.
util
.
IdUtil
;
</#
if
>
</#
if
>
<#
if
pkColumn
??&&
pkColumn
.
isIncrement
==
0
>
<#
if
pkColumn
??&&
pkColumn
.
isIncrement
==
0
>
<#
assign
Temp
>
<#
assign
Temp
>
@
Override
@
Override
...
@@ -43,8 +42,6 @@ import cn.hutool.core.util.IdUtil;
...
@@ -43,8 +42,6 @@ import cn.hutool.core.util.IdUtil;
<#
else
>
<#
else
>
<#
assign
Temp
></#
assign
>
<#
assign
Temp
></#
assign
>
</#
if
>
</#
if
>
/**
/**
*
${
ClassName
}
Service
*
${
ClassName
}
Service
*
${
functionName
}
service
实现
*
${
functionName
}
service
实现
...
@@ -201,4 +198,19 @@ public class ${ClassName}ServiceImpl extends ${Service}<${ClassName}Dao, ${Class
...
@@ -201,4 +198,19 @@ public class ${ClassName}ServiceImpl extends ${Service}<${ClassName}Dao, ${Class
}).
filter
(
f
->
f
!=null).collect(Collectors.toList());
}).
filter
(
f
->
f
!=null).collect(Collectors.toList());
}
}
@
Override
public
List
<${
ClassName
}
TreeSelect
>
getListByParentId
(
String
parentId
,
Context
context
)
{
if
(
ObjectUtils
.
isEmpty
(
parentId
))
{
parentId
=
"0"
;
}
//
只做一层
List
<${
ClassName
}
TreeSelect
>
collect
=
this
.
find
(
new
${
ClassName
}
Query
().${
treeParentCode
?
cap_first
}(
parentId
),
context
).
stream
().
map
(
item
->
new
${
ClassName
}
TreeSelect
(
item
)
).
collect
(
Collectors
.
toList
());
if
(
"0"
.
equals
(
parentId
))
{
return
collect
;
}
return
collect
;
}
}
}
\ No newline at end of file
appbuild-manager/src/main/resources/template/java/serviceImpl.java.ftl
View file @
5b6faec7
...
@@ -26,7 +26,6 @@ import java.util.Date;
...
@@ -26,7 +26,6 @@ import java.util.Date;
<#
if
pkColumn
??&&
pkColumn
.
isIncrement
==
0
>
<#
if
pkColumn
??&&
pkColumn
.
isIncrement
==
0
>
import
cn
.
hutool
.
core
.
util
.
IdUtil
;
import
cn
.
hutool
.
core
.
util
.
IdUtil
;
</#
if
>
</#
if
>
<#
if
pkColumn
??&&
pkColumn
.
isIncrement
==
0
>
<#
if
pkColumn
??&&
pkColumn
.
isIncrement
==
0
>
<#
assign
Temp
>
<#
assign
Temp
>
@
Override
@
Override
...
@@ -45,8 +44,6 @@ import cn.hutool.core.util.IdUtil;
...
@@ -45,8 +44,6 @@ import cn.hutool.core.util.IdUtil;
<#
else
>
<#
else
>
<#
assign
Temp
></#
assign
>
<#
assign
Temp
></#
assign
>
</#
if
>
</#
if
>
/**
/**
*
${
ClassName
}
Service
*
${
ClassName
}
Service
*
${
functionName
}
service
实现
*
${
functionName
}
service
实现
...
@@ -114,8 +111,8 @@ public class ${ClassName}ServiceImpl extends ${Service}<${ClassName}Dao, ${Class
...
@@ -114,8 +111,8 @@ public class ${ClassName}ServiceImpl extends ${Service}<${ClassName}Dao, ${Class
@
Override
@
Override
protected
void
removeAfter
(
Long
[]
ids
,
Context
context
,
int
result
)
throws
AppException
{
protected
void
removeAfter
(
Long
[]
ids
,
Context
context
,
int
result
)
throws
AppException
{
for
(
int
i
=
0
;
i
<
ids
.
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
ids
.
length
;
i
++)
{
${
pkColumn
.
javaType
}[]
${
subclassName
}
Ids
=
${
subclassName
}
Service
.
find
(
new
${
subClassName
}
Query
().${
subTableFkClassName
}(
ids
[
i
]),
context
).
stream
().
map
(${
subClassName
}
Entity
::
get
${
pkColumn
.
javaField
?
cap_first
}).
toArray
(${
pkColumn
.
javaType
}[]::
new
);
${
pkColumn
.
javaType
}[]
${
subclassName
}
Ids
=
${
subclassName
}
Service
.
find
(
new
${
subClassName
}
Query
().${
subTableFkClassName
?
cap_first
}(
ids
[
i
]),
context
).
stream
().
map
(${
subClassName
}
Entity
::
get
${
pkColumn
.
javaField
?
cap_first
}).
toArray
(${
pkColumn
.
javaType
}[]::
new
);
${
subclassName
}
Service
.
remove
(${
subclassName
}
Ids
,
context
);
${
subclassName
}
Service
.
remove
(${
subclassName
}
Ids
,
context
);
}
}
super
.
removeAfter
(
ids
,
context
,
result
);
super
.
removeAfter
(
ids
,
context
,
result
);
}
}
...
@@ -126,19 +123,22 @@ public class ${ClassName}ServiceImpl extends ${Service}<${ClassName}Dao, ${Class
...
@@ -126,19 +123,22 @@ public class ${ClassName}ServiceImpl extends ${Service}<${ClassName}Dao, ${Class
@
Override
@
Override
protected
void
saveAfter
(${
ClassName
}
Entity
entity
,
Context
context
)
throws
AppException
{
protected
void
saveAfter
(${
ClassName
}
Entity
entity
,
Context
context
)
throws
AppException
{
if
(
!ObjectUtils.isEmpty(entity.get${subClassName}Entity())){
if
(
!ObjectUtils.isEmpty(entity.get${subClassName}Entity())){
${
subClassName
}
Entity
${
subclassName
}
Entity
=
new
${
subClassName
}
Entity
();
${
subclassName
}
Entity
.
initAttrValue
();
${
subClassName
}
Entity
subEntity
=
entity
.
get
${
subClassName
}
Entity
();
${
subClassName
}
Entity
subEntity
=
entity
.
get
${
subClassName
}
Entity
();
BeanUtils
.
copyProperties
(
subEntity
,${
subclassName
}
Entity
);
<#
if
subPkColumn
??&&
subPkColumn
.
isIncrement
==
0
&&
subPkColumn
.
javaType
==
"String"
>
<#
if
subPkColumn
??&&
subPkColumn
.
isIncrement
==
0
&&
subPkColumn
.
javaType
==
"String"
>
sub
Entity
.
set
${
subPkColumn
.
javaField
?
cap_first
}(
IdUtil
.
fastSimpleUUID
());
${
subclassName
}
Entity
.
set
${
subPkColumn
.
javaField
?
cap_first
}(
IdUtil
.
fastSimpleUUID
());
<#
elseif
subPkColumn
??&&
subPkColumn
.
isIncrement
==
0
&&
subPkColumn
.
javaType
==
"Integer"
>
<#
elseif
subPkColumn
??&&
subPkColumn
.
isIncrement
==
0
&&
subPkColumn
.
javaType
==
"Integer"
>
sub
Entity
.
set
${
subPkColumn
.
javaField
?
cap_first
}(((
Long
)
IdUtil
.
getSnowflake
(
1024
,
512
).
nextId
()).
intValue
());
${
subclassName
}
Entity
.
set
${
subPkColumn
.
javaField
?
cap_first
}(((
Long
)
IdUtil
.
getSnowflake
(
1024
,
512
).
nextId
()).
intValue
());
<#
elseif
subPkColumn
??&&
subPkColumn
.
isIncrement
==
0
&&
subPkColumn
.
javaType
==
"Long"
>
<#
elseif
subPkColumn
??&&
subPkColumn
.
isIncrement
==
0
&&
subPkColumn
.
javaType
==
"Long"
>
sub
Entity
.
set
${
subPkColumn
.
javaField
?
cap_first
}(
IdUtil
.
getSnowflake
(
1024
,
512
).
nextId
());
${
subclassName
}
Entity
.
set
${
subPkColumn
.
javaField
?
cap_first
}(
IdUtil
.
getSnowflake
(
1024
,
512
).
nextId
());
</#
if
>
</#
if
>
sub
Entity
.
set
${
subTableFkClassName
}(
entity
.
get
${
pkColumn
.
javaField
?
cap_first
}());
${
subclassName
}
Entity
.
set
${
subTableFkClassName
}(
entity
.
get
${
pkColumn
.
javaField
?
cap_first
}());
sub
Entity
.
setCreateUser
(
context
.
getUser
().
getLoginName
());
${
subclassName
}
Entity
.
setCreateUser
(
context
.
getUser
().
getLoginName
());
sub
Entity
.
setCreateUserId
(
context
.
getUser
().
getId
());
${
subclassName
}
Entity
.
setCreateUserId
(
context
.
getUser
().
getId
());
sub
Entity
.
setCreateTime
(
new
Date
());
${
subclassName
}
Entity
.
setCreateTime
(
new
Date
());
${
subclassName
}
Service
.
save
(
sub
Entity
,
context
);
${
subclassName
}
Service
.
save
(
${
subclassName
}
Entity
,
context
);
}
}
super
.
saveAfter
(
entity
,
context
);
super
.
saveAfter
(
entity
,
context
);
}
}
...
...
appbuild-manager/src/main/resources/template/java/vo.java.ftl
View file @
5b6faec7
...
@@ -25,7 +25,7 @@ package ${packageName}.model.vo;
...
@@ -25,7 +25,7 @@ package ${packageName}.model.vo;
<#
assign
Entity
=
"BaseEntityLong"
>
<#
assign
Entity
=
"BaseEntityLong"
>
</#
if
>
</#
if
>
import
com
.
mortals
.
framework
.
model
.${
Entity
};
import
com
.
mortals
.
framework
.
model
.${
Entity
};
import
com
.
mortals
.
xhx
.
module
.
demotree
.
model
.
Demotree
Entity
;
import
${
packageName
}.
model
.${
ClassName
}
Entity
;
import
lombok
.
Data
;
import
lombok
.
Data
;
import
java
.
util
.
ArrayList
;
import
java
.
util
.
ArrayList
;
...
...
appbuild-manager/src/main/resources/template/java/web.java.ftl
View file @
5b6faec7
package
${
packageName
}.
web
;
package
${
packageName
}.
web
;
<#
if
table
.
tplCategory
==
"crud"
>
<#
if
table
.
isShowControl
==
1
>
<#
if
table
.
isShowControl
==
1
>
import
org
.
springframework
.
web
.
bind
.
annotation
.
PostMapping
;
import
org
.
springframework
.
web
.
bind
.
annotation
.
PostMapping
;
import
org
.
springframework
.
web
.
multipart
.
MultipartFile
;
import
org
.
springframework
.
web
.
multipart
.
MultipartFile
;
import
com
.
alibaba
.
fastjson
.
JSONObject
;
import
com
.
alibaba
.
fastjson
.
JSONObject
;
<#
assign
Controller
=
"BaseCRUDJsonController"
>
<#
assign
Controller
=
"BaseCRUDJsonController"
>
<#
elseif
table
.
isShowControl
==
2
>
<#
assign
Controller
=
"BaseCRUDJsonPhpController"
>
<#
else
>
<#
else
>
<#
assign
Controller
=
"BaseCRUDJsonMappingController"
>
<#
assign
Controller
=
"BaseCRUDJsonMappingController"
>
</#
if
>
</#
if
>
<#
else
>
<#
assign
Controller
=
"BaseCRUDJsonMappingController"
>
</#
if
>
import
com
.
mortals
.
xhx
.
base
.
system
.
param
.
service
.
ParamService
;
import
com
.
mortals
.
xhx
.
base
.
system
.
param
.
service
.
ParamService
;
import
org
.
springframework
.
beans
.
factory
.
annotation
.
Autowired
;
import
org
.
springframework
.
beans
.
factory
.
annotation
.
Autowired
;
import
org
.
springframework
.
web
.
bind
.
annotation
.
RequestMapping
;
import
org
.
springframework
.
web
.
bind
.
annotation
.
RequestMapping
;
import
org
.
springframework
.
web
.
bind
.
annotation
.
RestController
;
import
org
.
springframework
.
web
.
bind
.
annotation
.
RestController
;
import
org
.
springframework
.
web
.
bind
.
annotation
.*;
import
com
.
mortals
.
framework
.
model
.
Context
;
import
com
.
mortals
.
framework
.
model
.
Context
;
import
javax
.
servlet
.
http
.
HttpServletRequest
;
import
javax
.
servlet
.
http
.
HttpServletRequest
;
import
javax
.
servlet
.
http
.
HttpServletResponse
;
import
javax
.
servlet
.
http
.
HttpServletResponse
;
import
com
.
mortals
.
framework
.
web
.${
Controller
};
import
com
.
mortals
.
framework
.
web
.${
Controller
};
import
${
packageName
}.
model
.${
ClassName
}
Entity
;
import
${
packageName
}.
model
.${
ClassName
}
Entity
;
import
${
packageName
}.
model
.${
ClassName
}
Query
;
import
${
packageName
}.
service
.${
ClassName
}
Service
;
import
${
packageName
}.
service
.${
ClassName
}
Service
;
<#
if
table
.
tplCategory
==
"tree"
>
import
${
packageName
}.
model
.${
ClassName
}
TreeSelect
;
</#
if
>
import
org
.
apache
.
commons
.
lang3
.
ArrayUtils
;
import
com
.
mortals
.
framework
.
util
.
StringUtils
;
import
java
.
util
.
HashMap
;
import
java
.
util
.
List
;
import
java
.
util
.
Map
;
import
java
.
util
.
Map
;
import
java
.
util
.
stream
.
Collectors
;
import
com
.
alibaba
.
fastjson
.
JSONObject
;
import
java
.
util
.
Arrays
;
import
org
.
springframework
.
web
.
bind
.
annotation
.*;
import
org
.
springframework
.
web
.
multipart
.
MultipartFile
;
import
static
com
.
mortals
.
framework
.
ap
.
SysConstains
.*;
/**
/**
*
${
ClassName
}
Controller
*
*
*
${
functionName
}
控制器
*
${
functionName
}
*
*
*
@
author
${
author
}
*
@
author
${
author
}
*
@
date
${
datetime
}
*
@
date
${
datetime
}
...
@@ -47,14 +59,90 @@ public class ${ClassName}Controller extends ${Controller}<${ClassName}Service,${
...
@@ -47,14 +59,90 @@ public class ${ClassName}Controller extends ${Controller}<${ClassName}Service,${
protected
void
init
(
HttpServletRequest
request
,
HttpServletResponse
response
,
${
ClassName
}
Form
form
,
Map
<
String
,
Object
>
model
,
Context
context
)
{
protected
void
init
(
HttpServletRequest
request
,
HttpServletResponse
response
,
${
ClassName
}
Form
form
,
Map
<
String
,
Object
>
model
,
Context
context
)
{
<#
list
columns
as
column
>
<#
list
columns
as
column
>
<#
if
column
.
columnType
?
contains
(
"tinyint"
)
||
column
.
htmlType
==
3
||
column
.
htmlType
==
5
>
<#
if
column
.
columnType
?
contains
(
"tinyint"
)
||
column
.
htmlType
==
3
||
column
.
htmlType
==
5
>
this
.
addDict
(
model
,
"${column.javaField}"
,
paramService
.
getParamBy
FirstOrganize
(
"${column.javaField}"
));
this
.
addDict
(
model
,
"${column.javaField}"
,
paramService
.
getParamBy
SecondOrganize
(
"${ClassName}"
,
"${column.javaField}"
));
</#
if
>
</#
if
>
</#
list
>
</#
list
>
super
.
init
(
request
,
response
,
form
,
model
,
context
);
super
.
init
(
request
,
response
,
form
,
model
,
context
);
}
}
<#
if
table
.
tplCategory
==
"tree"
>
@
PostMapping
(
"list/exclude"
)
public
String
excludeList
(${
ClassName
}
Form
form
)
{
Map
<
String
,
Object
>
model
=
new
HashMap
<>();
JSONObject
ret
=
new
JSONObject
();
String
busiDesc
=
"查询"
+
this
.
getModuleDesc
();
Long
id
=
form
.
getId
()[
0
];
int
code
=
VALUE_RESULT_SUCCESS
;
try
{
List
<${
ClassName
}
Entity
>
collect
=
this
.
service
.
find
(
new
${
ClassName
}
Query
()).
stream
().
map
(
item
->
{
if
(
item
.
getId
().
intValue
()
==
id
||
ArrayUtils
.
contains
(
StringUtils
.
split
(
item
.
getAncestors
(),
","
),
id
+
""
))
{
return
null
;
}
return
item
;
}).
filter
(
f
->
f
!= null).collect(Collectors.toList());
model
.
put
(
"result"
,
collect
);
recordSysLog
(
request
,
busiDesc
+
" 【成功】"
);
}
catch
(
Exception
e
)
{
code
=
VALUE_RESULT_FAILURE
;
this
.
doException
(
request
,
busiDesc
,
model
,
e
);
}
ret
.
put
(
KEY_RESULT_DATA
,
model
);
ret
.
put
(
KEY_RESULT_CODE
,
code
);
return
ret
.
toJSONString
();
}
/**
*
获取站点下拉树列表
*/
@
PostMapping
(
"treeselect"
)
public
String
treeselect
(${
ClassName
}
Form
form
)
{
Map
<
String
,
Object
>
model
=
new
HashMap
<>();
JSONObject
ret
=
new
JSONObject
();
String
busiDesc
=
"查询"
+
this
.
getModuleDesc
();
int
code
=
VALUE_RESULT_SUCCESS
;
try
{
List
<${
ClassName
}
Entity
>
list
=
this
.
service
.
find
(
new
${
ClassName
}
Query
());
List
<${
ClassName
}
TreeSelect
>
treeSelects
=
this
.
service
.
build
${
ClassName
}
TreeSelect
(
list
);
model
.
put
(
"result"
,
treeSelects
);
recordSysLog
(
request
,
busiDesc
+
" 【成功】"
);
}
catch
(
Exception
e
)
{
code
=
VALUE_RESULT_FAILURE
;
this
.
doException
(
request
,
busiDesc
,
model
,
e
);
}
ret
.
put
(
KEY_RESULT_DATA
,
model
);
ret
.
put
(
KEY_RESULT_CODE
,
code
);
return
ret
.
toJSONString
();
}
/**
*
根据
parentId
查询子信息
*/
@
GetMapping
(
value
=
"getListByParentId"
)
public
String
getListByParentId
(
String
parentId
)
{
JSONObject
ret
=
new
JSONObject
();
Map
<
String
,
Object
>
model
=
new
HashMap
<>();
String
busiDesc
=
"查询"
+
this
.
getModuleDesc
()+
"子节点"
;
try
{
List
<${
ClassName
}
TreeSelect
>
treeList
=
this
.
service
.
getListByParentId
(
parentId
,
getContext
());
model
.
put
(
RESULT_KEY
,
treeList
);
ret
.
put
(
KEY_RESULT_CODE
,
VALUE_RESULT_SUCCESS
);
ret
.
put
(
KEY_RESULT_DATA
,
model
);
recordSysLog
(
request
,
busiDesc
+
"【成功】"
);
}
catch
(
Exception
e
)
{
log
.
error
(
"根据parentId查询子信息错误"
,
e
);
this
.
doException
(
request
,
busiDesc
,
model
,
e
);
ret
.
put
(
KEY_RESULT_CODE
,
VALUE_RESULT_FAILURE
);
ret
.
put
(
KEY_RESULT_MSG
,
e
.
getMessage
());
}
return
ret
.
toJSONString
();
}
</#
if
>
<#
if
table
.
isShowControl
==
1
>
<#
if
table
.
isShowControl
==
1
>
/**
/**
*
查询
{
functionName
}
*
查询
$
{
functionName
}
*/
*/
@
PostMapping
(
value
=
"list"
)
@
PostMapping
(
value
=
"list"
)
public
String
list
(${
ClassName
}
Form
form
)
{
public
String
list
(${
ClassName
}
Form
form
)
{
...
@@ -136,7 +224,7 @@ public class ${ClassName}Controller extends ${Controller}<${ClassName}Service,${
...
@@ -136,7 +224,7 @@ public class ${ClassName}Controller extends ${Controller}<${ClassName}Service,${
/**
/**
*
逻辑删除
${
functionName
}
*
逻辑删除
${
functionName
}
*/
*/
@
PostMapping
(
value
=
"
view
"
)
@
PostMapping
(
value
=
"
logicDelete
"
)
public
String
logicDelete
(${
ClassName
}
Form
form
)
{
public
String
logicDelete
(${
ClassName
}
Form
form
)
{
try
{
try
{
return
super
.
logicDelete
(
form
);
return
super
.
logicDelete
(
form
);
...
@@ -176,5 +264,157 @@ public class ${ClassName}Controller extends ${Controller}<${ClassName}Service,${
...
@@ -176,5 +264,157 @@ public class ${ClassName}Controller extends ${Controller}<${ClassName}Service,${
return
ret
.
toJSONString
();
return
ret
.
toJSONString
();
}
}
}
}
<#
elseif
table
.
isShowControl
==
2
>
/**
*
查询
${
functionName
}
*/
@
PostMapping
(
value
=
"list"
)
public
String
list
(@
RequestBody
${
ClassName
}
Query
query
)
{
try
{
${
ClassName
}
Form
form
=
new
${
ClassName
}
Form
();
form
.
setQuery
(
query
);
return
super
.
list
(
form
);
}
catch
(
Exception
e
)
{
log
.
error
(
"查询${functionName}列表错误"
,
e
);
JSONObject
ret
=
new
JSONObject
();
ret
.
put
(
KEY_RESULT_CODE
,
VALUE_RESULT_FAILURE
);
ret
.
put
(
KEY_RESULT_MSG
,
super
.
convertException
(
e
));
return
ret
.
toJSONString
();
}
}
/**
*
新增
${
functionName
}
*/
@
PostMapping
(
value
=
"add"
)
public
String
add
()
{
try
{
${
ClassName
}
Form
form
=
new
${
ClassName
}
Form
();
return
super
.
add
(
form
);
}
catch
(
Exception
e
)
{
log
.
error
(
"新增${functionName}错误"
,
e
);
JSONObject
ret
=
new
JSONObject
();
ret
.
put
(
KEY_RESULT_CODE
,
VALUE_RESULT_FAILURE
);
ret
.
put
(
KEY_RESULT_MSG
,
super
.
convertException
(
e
));
return
ret
.
toJSONString
();
}
}
/**
*
编辑
${
functionName
}
*/
@
GetMapping
(
value
=
"edit"
)
public
String
edit
(
Long
id
)
{
try
{
${
ClassName
}
Form
form
=
new
${
ClassName
}
Form
();
form
.
setId
(
new
Long
[]{
id
});
return
super
.
edit
(
form
);
}
catch
(
Exception
e
)
{
log
.
error
(
"${functionName}模块错误"
,
e
);
JSONObject
ret
=
new
JSONObject
();
ret
.
put
(
KEY_RESULT_CODE
,
VALUE_RESULT_FAILURE
);
ret
.
put
(
KEY_RESULT_MSG
,
super
.
convertException
(
e
));
return
ret
.
toJSONString
();
}
}
/**
*
保存
${
functionName
}
*/
@
PostMapping
(
value
=
"save"
)
public
String
save
(@
RequestBody
${
ClassName
}
Entity
entity
)
{
try
{
${
ClassName
}
Form
form
=
new
${
ClassName
}
Form
();
form
.
set
${
ClassName
}(
entity
);
return
super
.
save
(
form
);
}
catch
(
Exception
e
)
{
log
.
error
(
"${functionName}模块错误"
,
e
);
JSONObject
ret
=
new
JSONObject
();
ret
.
put
(
KEY_RESULT_CODE
,
VALUE_RESULT_FAILURE
);
ret
.
put
(
KEY_RESULT_MSG
,
super
.
convertException
(
e
));
return
ret
.
toJSONString
();
}
}
/**
*
删除
${
functionName
}
*/
@
GetMapping
(
value
=
"delete"
)
public
String
delete
(
String
id
)
{
try
{
${
ClassName
}
Form
form
=
new
${
ClassName
}
Form
();
String
[]
split
=
id
.
split
(
","
);
Long
[]
ids
=
Arrays
.
asList
(
split
).
stream
().
map
(
Long
::
parseLong
).
toArray
(
Long
[]::
new
);
form
.
setId
(
ids
);
return
super
.
delete
(
form
);
}
catch
(
Exception
e
)
{
log
.
error
(
"删除${functionName}错误"
,
e
);
JSONObject
ret
=
new
JSONObject
();
ret
.
put
(
KEY_RESULT_CODE
,
VALUE_RESULT_FAILURE
);
ret
.
put
(
KEY_RESULT_MSG
,
super
.
convertException
(
e
));
return
ret
.
toJSONString
();
}
}
/**
*
查看
${
functionName
}
*/
@
GetMapping
(
value
=
"info"
)
public
String
info
(
Long
id
)
{
try
{
${
ClassName
}
Form
form
=
new
${
ClassName
}
Form
();
form
.
setId
(
new
Long
[]{
id
});
return
super
.
view
(
form
);
}
catch
(
Exception
e
)
{
log
.
error
(
"查看${functionName}错误"
,
e
);
JSONObject
ret
=
new
JSONObject
();
ret
.
put
(
KEY_RESULT_CODE
,
VALUE_RESULT_FAILURE
);
ret
.
put
(
KEY_RESULT_MSG
,
super
.
convertException
(
e
));
return
ret
.
toJSONString
();
}
}
/**
*
${
functionName
}
导入模板下载
*/
@
PostMapping
(
value
=
"downloadTemplate"
)
public
void
downloadTemplate
()
{
try
{
super
.
downloadTemplate
();
}
catch
(
Exception
e
)
{
log
.
error
(
"${functionName}导入模板下载错误"
,
e
);
}
}
/**
*
${
functionName
}
导出
*/
@
PostMapping
(
value
=
"importData"
)
public
String
importData
(
MultipartFile
file
,
boolean
updateSupport
)
{
try
{
return
super
.
importData
(
file
,
updateSupport
);
}
catch
(
Exception
e
)
{
log
.
error
(
"${functionName}导入错误"
,
e
);
JSONObject
ret
=
new
JSONObject
();
ret
.
put
(
KEY_RESULT_CODE
,
VALUE_RESULT_FAILURE
);
ret
.
put
(
KEY_RESULT_MSG
,
super
.
convertException
(
e
));
return
ret
.
toJSONString
();
}
}
/**
*
${
functionName
}
导出
*/
@
PostMapping
(
"exportExcel"
)
public
void
exportExcel
(@
RequestBody
${
ClassName
}
Query
query
)
{
try
{
${
ClassName
}
Form
form
=
new
${
ClassName
}
Form
();
form
.
setQuery
(
query
);
super
.
exportExcel
(
form
);
}
catch
(
Exception
e
)
{
log
.
error
(
"${functionName}导出错误"
,
e
);
}
}
</#
if
>
</#
if
>
}
}
\ No newline at end of file
appbuild-manager/src/main/resources/template/sql/menu.sql.ftl
View file @
5b6faec7
-- ----------------------------
-- ----------------------------
-- ${functionName}菜单 SQL
-- ${functionName}菜单 SQL
-- ----------------------------
-- ----------------------------
INSERT INTO `mortals_xhx_menu` VALUES (null, '${tableComment}', '/${RequestMapping}/list', 0, 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0,
3
, NULL, NULL, NULL);
INSERT INTO `mortals_xhx_menu` VALUES (null, '${tableComment}', '/${RequestMapping}/list', 0, 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0,
1
, NULL, NULL, NULL);
-- ----------------------------
-- ----------------------------
-- ${functionName}资源路径 SQL
-- ${functionName}资源路径 SQL
-- ----------------------------
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '${functionName}-菜单管理-查看', '/${RequestMapping}/list,/${RequestMapping}/view', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '${functionName}-菜单管理-查看', '/${RequestMapping}/list,/${RequestMapping}/view,/${RequestMapping}/info,/${RequestMapping}/export,/${RequestMapping}/exportExcel,/${RequestMapping}/downloadTemplate,/${RequestMapping}/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '${functionName}-菜单管理-维护', '/${RequestMapping}/add,/${RequestMapping}/edit,/${RequestMapping}/delete,/${RequestMapping}/save', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '${functionName}-菜单管理-维护', '/${RequestMapping}/add,/${RequestMapping}/edit,/${RequestMapping}/delete,/${RequestMapping}/logicDelete,/${RequestMapping}/save,/${RequestMapping}/importData', 3, 0, NULL, NULL, NULL, 0);
-- ----------------------------
-- ${functionName}参数 SQL
-- ----------------------------
<#list columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
<#list column.dict as dict>
INSERT INTO `mortals_xhx_param` VALUES (null, '${column.subComment(column.columnComment)}', '${column.javaField}', NULL, '${dict.num}', '${dict.value}', 1, 4, 0, NULL, NULL, NULL, NULL);
</#list>
</#if>
</#list>
\ No newline at end of file
appbuild-manager/src/main/resources/template/sql/params.sql.ftl
0 → 100644
View file @
5b6faec7
-- ----------------------------
-- ${functionName}参数 SQL
-- ----------------------------
<#list columns as column>
<#if column.dict??>
<#list column.dict as dict>
INSERT INTO `mortals_xhx_param` VALUES (null, '${column.subComment(column.columnComment)}', '${ClassName}', '${column.javaField}', '${dict.num}', '${dict.value}', 1, 4, 0, '${column.javaField}', NULL, NULL, NULL);
</#list>
</#if>
</#list>
\ No newline at end of file
appbuild-manager/src/main/resources/template/vue/VueDialogShow.vue.ftl
View file @
5b6faec7
<template>
<template>
<!-- 弹出框表单 -->
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="
8
0%" append-to-body>
<el-dialog :title="title" :visible.sync="open" width="
9
0%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="
8
0px">
<el-form ref="form" :model="form" :rules="rules" label-width="
12
0px">
<el-row>
<el-row>
<#list columns as column>
<#list columns as column>
<#if column.isPrimaryKey != 1 && !column.isSuperColumn(column.javaField)>
<#if column.isPrimaryKey != 1 && !column.isSuperColumn(column.javaField)
&& column.isEdit==1
>
<#assign javaField=column.javaField />
<#assign javaField=column.javaField />
<#assign comment=column.subComment(column.columnComment) />
<#assign comment=column.subComment(column.columnComment) />
<#if column.htmlType == 1 && !column.columnType?contains("tinyint")>
<#if column.htmlType == 1 && !column.columnType?contains("tinyint")>
...
@@ -20,23 +20,11 @@
...
@@ -20,23 +20,11 @@
<#elseif column.htmlType == 6>
<#elseif column.htmlType == 6>
<Field label="${comment}" prop="${column.javaField}" v-model="form.${column.javaField}" type="date" />
<Field label="${comment}" prop="${column.javaField}" v-model="form.${column.javaField}" type="date" />
<#elseif column.htmlType == 7>
<#elseif column.htmlType == 7>
<el-col span="12">
<Field label="${comment}"><imageUpload v-model="form.${column.javaField}" prePath="/file/preview"/></Field>
<el-form-item label="${comment}">
<imageUpload v-model="form.${column.javaField}" prePath="/uploadimage"/>
</el-form-item>
</el-col>
<#elseif column.htmlType == 8>
<#elseif column.htmlType == 8>
<el-col span="12">
<Field label="${comment}"><fileUpload v-model="form.${column.javaField}" prePath="/file/uploadfile"/></Field>
<el-form-item label="${comment}">
<fileUpload v-model="form.${column.javaField}" prePath="/uploadfile" />
</el-form-item>
</el-col>
<#elseif column.htmlType == 9>
<#elseif column.htmlType == 9>
<el-col span="12">
<Field label="${comment}"><editor v-model="form.${column.javaField}" :min-height="256"/></Field>
<el-form-item label="${comment}">
<editor v-model="form.${column.javaField}" :min-height="192"/>
</el-form-item>
</el-col>
<#else >
<#else >
<Field label="${comment}" prop="${column.javaField}" v-model="form.${column.javaField}" placeholder="请输入${comment}"/>
<Field label="${comment}" prop="${column.javaField}" v-model="form.${column.javaField}" placeholder="请输入${comment}"/>
</#if>
</#if>
...
@@ -44,16 +32,79 @@
...
@@ -44,16 +32,79 @@
</#list>
</#list>
</el-row>
</el-row>
<#if table.tplCategory=="sub">
<el-divider content-position="center">${subTable.functionName}信息</el-divider>
<br/>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd${subClassName}">添加</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDelete${subClassName}">删除</el-button>
</el-col>
</el-row>
<el-table :data="${subclassName}List" :row-class-name="row${subClassName}Index" @selection-change="handle${subClassName}SelectionChange" ref="${subclassName}">
<el-table-column type="selection" width="50" align="center" />
<el-table-column label="序号" align="center" prop="index" width="50"/>
<#list subTable.columns as column >
<#assign javaField=column.javaField />
<#assign comment=column.subComment(column.columnComment) />
<#if column.isPrimaryKey==1 || javaField == subTableFkclassName>
<#elseif "" != javaField>
<el-table-column label="${comment}" prop="${javaField}">
<template slot-scope="scope">
<el-input v-model="scope.row.${javaField}" placeholder="请输入${comment}" />
</template>
</el-table-column>
</#if>
</#list>
</el-table>
</#if>
<#if table.tplCategory=="subone">
<el-divider content-position="center">${subTable.functionName}信息</el-divider>
<br/>
<el-row>
<#list subTable.columns as column >
<#if column.isPrimaryKey != 1 && !column.isSuperColumn(column.javaField)&& column.isEdit==1>
<#assign javaField=column.javaField />
<#assign comment=column.subComment(column.columnComment) />
<#if column.htmlType == 1 && !column.columnType?contains("tinyint")>
<Field label="${comment}" prop="${column.javaField}" v-model="form.${subclassName}Entity.${column.javaField}" placeholder="请输入${comment}"/>
<#elseif column.htmlType == 2>
<Field label="${comment}" prop="${column.javaField}" v-model="form.${subclassName}Entity.${column.javaField}" type="textarea" placeholder="请输入${comment}"/>
<#elseif column.htmlType == 3 ||column.columnType?contains("tinyint")>
<Field label="${comment}" prop="${column.javaField}" v-model="form.${subclassName}Entity.${column.javaField}" type="select" :enumData="dict.${column.javaField}" placeholder="请选择${comment}"/>
<#elseif column.htmlType == 4>
<Field label="${comment}" prop="${column.javaField}" v-model="form.${subclassName}Entity.${column.javaField}" type="checkbox" :enumData="dict.${column.javaField}" />
<#elseif column.htmlType == 5>
<Field label="${comment}" prop="${column.javaField}" v-model="form.${subclassName}Entity.${column.javaField}" type="radio" :enumData="dict.${column.javaField}" />
<#elseif column.htmlType == 6>
<Field label="${comment}" prop="${column.javaField}" v-model="form.${subclassName}Entity.${column.javaField}" type="date" />
<#elseif column.htmlType == 7>
<Field label="${comment}"><imageUpload v-model="form.${subclassName}Entity.${column.javaField}" prePath="/file/preview"/></Field>
<#elseif column.htmlType == 8>
<Field label="${comment}"><fileUpload v-model="form.${subclassName}Entity.${column.javaField}" prePath="/file/uploadfile"/></Field>
<#elseif column.htmlType == 9>
<Field label="${comment}"><editor v-model="form.${subclassName}Entity.${column.javaField}" :min-height="256"/></Field>
<#else >
<Field label="${comment}" prop="${column.javaField}" v-model="form.${subclassName}Entity.${column.javaField}" placeholder="请输入${comment}"/>
</#if>
</#if>
</#list>
</el-row>
</#if>
</el-form>
</el-form>
<div slot="footer" class="dialog-footer">
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button type="primary"
v-if="pageInfo.type !== 'view'"
@click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</div>
</el-dialog>
</el-dialog>
</template>
</template>
<script>
<script>
import form from "@/assets/mixins/form";
import form from "@/assets/mixins/form
dialog
";
import dialogShow from "./dialogshow";
import dialogShow from "./dialogshow";
<#list columns as column>
<#list columns as column>
<#if column.isInsert==1 && !column.isSuperColumn(column.javaField) && column.isPrimaryKey!=1 && column.htmlType == 7>
<#if column.isInsert==1 && !column.isSuperColumn(column.javaField) && column.isPrimaryKey!=1 && column.htmlType == 7>
...
@@ -98,6 +149,12 @@
...
@@ -98,6 +149,12 @@
},
},
data() {
data() {
return {
return {
<#if table.tplCategory=="sub">
// 子表选中数据
checked${subClassName}: [],
// ${subTable.functionName}表格数据
${subclassName}List: [],
</#if>
// 遮罩层
// 遮罩层
loading: true,
loading: true,
// 弹出层标题
// 弹出层标题
...
@@ -114,24 +171,27 @@
...
@@ -114,24 +171,27 @@
// 表单校验
// 表单校验
rules: {
rules: {
<#list columns as column>
<#list columns as column>
<#if column.javaType == "String" && column.isEdit==1>
<#assign comment=column.subComment(column.columnComment) />
<#if column.javaType == "String" && column.isRequired==1>
${column.javaField}: [
${column.javaField}: [
{<#if column.isRequired==1>required: true,</#if> trigger: "blur" },
{<#if column.isRequired==1>required: true,message: "请输入${comment}",</#if> trigger: "blur" },
<#assign max=column.subBetween(column.columnType) />
{max: ${max},message: "最多只能录入${max}个字符",trigger: "blur",},
],
],
</#if>
</#if>
<#if column.javaType == "Integer" && column.is
Edit
==1>
<#if column.javaType == "Integer" && column.is
Required
==1>
${column.javaField}: [
${column.javaField}: [
{<#if column.isRequired==1>required: true,
</#if> type: 'integer',
trigger: "blur" },
{<#if column.isRequired==1>required: true,
message: "请输入${comment}",</#if>
trigger: "blur" },
],
],
</#if>
</#if>
<#if column.javaType == "BigDecimal" && column.is
Edit
==1>
<#if column.javaType == "BigDecimal" && column.is
Required
==1>
${column.javaField}: [
${column.javaField}: [
{<#if column.isRequired==1>required: true,
</#if> type: 'number',
trigger: "blur" },
{<#if column.isRequired==1>required: true,
message: "请输入${comment}",</#if>
trigger: "blur" },
],
],
</#if>
</#if>
<#if column.javaType == "Date" &&column.htmlType ==6 && column.is
Edit
==1>
<#if column.javaType == "Date" &&column.htmlType ==6 && column.is
Required
==1>
${column.javaField}: [
${column.javaField}: [
{<#if column.isRequired==1>required: true,</#if> },
{<#if column.isRequired==1>required: true,
message: "请选择${comment}"
</#if> },
],
],
</#if>
</#if>
</#list>
</#list>
...
@@ -140,13 +200,55 @@
...
@@ -140,13 +200,55 @@
},
},
methods: {
methods: {
<#if table.tplCategory=="sub">
/** ${subTable.functionName}序号 */
row${subClassName}Index({ row, rowIndex }) {
row.index = rowIndex + 1;
},
/** ${subTable.functionName}添加按钮操作 */
handleAdd${subClassName}() {
let obj = {};
<#list subTable.columns as column>
<#if column.isPrimaryKey==1 || column.javaField == subTableFkclassName>
<#elseif "" != javaField>
obj.${column.javaField} = "";
</#if>
</#list>
this.${subclassName}List.push(obj);
},
/** ${subTable.functionName}删除按钮操作 */
handleDelete${subClassName}() {
if (this.checked${subClassName}.length == 0) {
this.$alert("请先选择要删除的${subTable.functionName}数据", "提示", { confirmButtonText: "确定", });
} else {
this.${subclassName}List.splice(this.checked${subClassName}[0].index - 1, 1);
}
},
/** 单选框选中数据 */
handle${subClassName}SelectionChange(selection) {
if (selection.length > 1) {
this.$refs.${subclassName}.clearSelection();
this.$refs.${subclassName}.toggleRowSelection(selection.pop());
} else {
this.checked${subClassName} = selection;
}
},
// 渲染前置处理
beforeRender(data) {
if(data.entity.${subclassName}List) {
this.${subclassName}List = data.entity.${subclassName}List;
}
return data
},
<#elseif table.tplCategory=="subone" >
</#if>
/** 编辑 */
/** 编辑 */
edit(row
, ${className}Options
) {
edit(row) {
this.reset()
this.reset()
this.query = { ${pkColumn.javaField}: row.${pkColumn.javaField} };
this.query = { ${pkColumn.javaField}: row.${pkColumn.javaField} };
this.urls.currUrl =this.pageInfo.editUrl;;
this.urls.currUrl =this.pageInfo.editUrl;;
this.getData();
this.getData();
this.
open = true;
this.
pageInfo.type="edit"
this.title = "修改${functionName}";
this.title = "修改${functionName}";
},
},
/** 新增 */
/** 新增 */
...
@@ -155,7 +257,7 @@
...
@@ -155,7 +257,7 @@
this.query = { ${pkColumn.javaField}: row.${pkColumn.javaField} };
this.query = { ${pkColumn.javaField}: row.${pkColumn.javaField} };
this.urls.currUrl = this.pageInfo.addUrl;
this.urls.currUrl = this.pageInfo.addUrl;
this.getData();
this.getData();
this.
open = true;
this.
pageInfo.type="add"
this.title = "新增${functionName}";
this.title = "新增${functionName}";
},
},
/** 查看*/
/** 查看*/
...
@@ -164,13 +266,17 @@
...
@@ -164,13 +266,17 @@
this.query = { ${pkColumn.javaField}: row.${pkColumn.javaField} };
this.query = { ${pkColumn.javaField}: row.${pkColumn.javaField} };
this.urls.currUrl =this.pageInfo.viewUrl;;
this.urls.currUrl =this.pageInfo.viewUrl;;
this.getData();
this.getData();
this.
open = true;
this.
pageInfo.type="view"
this.title = "${functionName}详细";
this.title = "${functionName}详细";
},
},
/**取消按钮 */
/**取消按钮 */
cancel() {
cancel() {
this.open = false;
this.open = false;
},
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
afterSubmit(data) {
this.open = false;
this.open = false;
...
@@ -182,13 +288,13 @@
...
@@ -182,13 +288,13 @@
this.form = {
this.form = {
<#list columns as column>
<#list columns as column>
<#if !column.isSuperColumn(column.javaField)>
<#if !column.isSuperColumn(column.javaField)>
<#if column.javaType=="Long" && column.defaultValue??>
<#if column.javaType=="Long" && column.defaultValue??
&& column.defaultValue!=""
>
<#assign Default>${column.defaultValue}
L
</#assign>
<#assign Default>${column.defaultValue}</#assign>
<#elseif column.javaType=="Integer" && column.defaultValue??>
<#elseif column.javaType=="Integer" && column.defaultValue??
&& column.defaultValue!=""
>
<#assign Default>${column.defaultValue}</#assign>
<#assign Default>${column.defaultValue}</#assign>
<#elseif column.javaType=="String" && column.defaultValue??>
<#elseif column.javaType=="String" && column.defaultValue??>
<#assign Default>"${column.defaultValue}"</#assign>
<#assign Default>"${column.defaultValue}"</#assign>
<#elseif column.javaType=="BigDecimal" && column.defaultValue??>
<#elseif column.javaType=="BigDecimal" && column.defaultValue??
&& column.defaultValue!=""
>
<#assign Default>BigDecimal.valueOf(${column.defaultValue})</#assign>
<#assign Default>BigDecimal.valueOf(${column.defaultValue})</#assign>
<#else>
<#else>
<#assign Default>null</#assign>
<#assign Default>null</#assign>
...
...
appbuild-manager/src/main/resources/template/vue/VueTreeDialogShow.vue.ftl
View file @
5b6faec7
<template>
<template>
<!-- 弹出框表单 -->
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="
8
0%" append-to-body>
<el-dialog :title="title" :visible.sync="open" width="
9
0%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="1
0
0px">
<el-form ref="form" :model="form" :rules="rules" label-width="1
2
0px">
<el-row>
<el-row>
<el-col :span="24" v-if="form.${treeParentCode} !== 0">
<el-col :span="24" v-if="form.${treeParentCode} !== 0">
<el-form-item label="上级
站
点" prop="${treeParentCode}">
<el-form-item label="上级
节
点" prop="${treeParentCode}">
<treeselect
<treeselect
v-model="form.${treeParentCode}"
v-model="form.${treeParentCode}"
:options="${className}Options"
:options="${className}Options"
...
@@ -13,12 +13,10 @@
...
@@ -13,12 +13,10 @@
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<#list columns as column>
<#list columns as column>
<#if column.isPrimaryKey != 1 && !column.isSuperColumn(column.javaField)>
<#if column.isPrimaryKey != 1 && !column.isSuperColumn(column.javaField)
&& column.isEdit==1
>
<#assign javaField=column.javaField />
<#assign javaField=column.javaField />
<#assign comment=column.subComment(column.columnComment) />
<#assign comment=column.subComment(column.columnComment) />
<#if column.htmlType == 1 && !column.columnType?contains("tinyint")>
<#if column.htmlType == 1 && !column.columnType?contains("tinyint")>
<Field label="${comment}" prop="${column.javaField}" v-model="form.${column.javaField}" placeholder="请输入${comment}"/>
<Field label="${comment}" prop="${column.javaField}" v-model="form.${column.javaField}" placeholder="请输入${comment}"/>
<#elseif column.htmlType == 2>
<#elseif column.htmlType == 2>
...
@@ -65,7 +63,7 @@
...
@@ -65,7 +63,7 @@
</template>
</template>
<script>
<script>
import form from "@/assets/mixins/form";
import form from "@/assets/mixins/form
dialog
";
import Treeselect from "@riophae/vue-treeselect";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
<#list columns as column>
<#list columns as column>
...
@@ -128,24 +126,27 @@
...
@@ -128,24 +126,27 @@
// 表单校验
// 表单校验
rules: {
rules: {
<#list columns as column>
<#list columns as column>
<#if column.javaType == "String" && column.isEdit==1>
<#assign comment=column.subComment(column.columnComment) />
<#if column.javaType == "String" && column.isRequired==1>
${column.javaField}: [
${column.javaField}: [
{<#if column.isRequired==1>required: true,</#if> trigger: "blur" },
{<#if column.isRequired==1>required: true,message: "请输入${comment}",</#if> trigger: "blur" },
<#assign max=column.subBetween(column.columnType) />
{max: ${max},message: "最多只能录入${max}个字符",trigger: "blur",},
],
],
</#if>
</#if>
<#if column.javaType == "Integer" && column.is
Edit
==1>
<#if column.javaType == "Integer" && column.is
Required
==1>
${column.javaField}: [
${column.javaField}: [
{<#if column.isRequired==1>required: true,
</#if> type: 'integer',
trigger: "blur" },
{<#if column.isRequired==1>required: true,
message: "请输入${comment}",</#if>
trigger: "blur" },
],
],
</#if>
</#if>
<#if column.javaType == "BigDecimal" && column.is
Edit
==1>
<#if column.javaType == "BigDecimal" && column.is
Required
==1>
${column.javaField}: [
${column.javaField}: [
{<#if column.isRequired==1>required: true,
</#if> type: 'number',
trigger: "blur" },
{<#if column.isRequired==1>required: true,
message: "请输入${comment}",</#if>
trigger: "blur" },
],
],
</#if>
</#if>
<#if column.javaType == "Date" &&column.htmlType ==6 && column.is
Edit
==1>
<#if column.javaType == "Date" &&column.htmlType ==6 && column.is
Required
==1>
${column.javaField}: [
${column.javaField}: [
{<#if column.isRequired==1>required: true,</#if> },
{<#if column.isRequired==1>required: true,
message: "请选择${comment}"
</#if> },
],
],
</#if>
</#if>
</#list>
</#list>
...
@@ -161,7 +162,6 @@
...
@@ -161,7 +162,6 @@
this.urls.currUrl =this.pageInfo.editUrl;;
this.urls.currUrl =this.pageInfo.editUrl;;
this.getData();
this.getData();
this.${className}Options = ${className}Options;
this.${className}Options = ${className}Options;
this.open = true;
this.title = "修改${functionName}";
this.title = "修改${functionName}";
},
},
/** 新增 */
/** 新增 */
...
@@ -170,25 +170,28 @@
...
@@ -170,25 +170,28 @@
this.query = { ${pkColumn.javaField}: row.${pkColumn.javaField} };
this.query = { ${pkColumn.javaField}: row.${pkColumn.javaField} };
this.urls.currUrl = this.pageInfo.addUrl;
this.urls.currUrl = this.pageInfo.addUrl;
this.getData();
this.getData();
if(row.id){
this.form.parentId=row.id
}
this.${className}Options = ${className}Options;
this.${className}Options = ${className}Options;
this.open = true;
this.title = "新增${functionName}";
this.title = "新增${functionName}";
},
},
/** 查看*/
/** 查看*/
view(row, ${className}Options) {
view(row, ${className}Options) {
this.reset()
this.query = { ${pkColumn.javaField}: row.${pkColumn.javaField} };
this.query = { ${pkColumn.javaField}: row.${pkColumn.javaField} };
this.urls.currUrl =this.pageInfo.viewUrl;;
this.urls.currUrl =this.pageInfo.viewUrl;;
this.getData();
this.getData();
this.${className}Options = ${className}Options;
this.${className}Options = ${className}Options;
this.open = true;
this.title = "${functionName}详细";
this.title = "${functionName}详细";
},
},
/**取消按钮 */
/**取消按钮 */
cancel() {
cancel() {
this.open = false;
this.open = false;
},
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
afterSubmit(data) {
this.open = false;
this.open = false;
this.$emit("ok");
this.$emit("ok");
...
@@ -210,13 +213,13 @@
...
@@ -210,13 +213,13 @@
this.form = {
this.form = {
<#list columns as column>
<#list columns as column>
<#if !column.isSuperColumn(column.javaField)>
<#if !column.isSuperColumn(column.javaField)>
<#if column.javaType=="Long" && column.defaultValue??>
<#if column.javaType=="Long" && column.defaultValue??
&& column.defaultValue!=""
>
<#assign Default>${column.defaultValue}
L
</#assign>
<#assign Default>${column.defaultValue}</#assign>
<#elseif column.javaType=="Integer" && column.defaultValue??>
<#elseif column.javaType=="Integer" && column.defaultValue??
&& column.defaultValue!=""
>
<#assign Default>${column.defaultValue}</#assign>
<#assign Default>${column.defaultValue}</#assign>
<#elseif column.javaType=="String" && column.defaultValue??>
<#elseif column.javaType=="String" && column.defaultValue??>
<#assign Default>"${column.defaultValue}"</#assign>
<#assign Default>"${column.defaultValue}"</#assign>
<#elseif column.javaType=="BigDecimal" && column.defaultValue??>
<#elseif column.javaType=="BigDecimal" && column.defaultValue??
&& column.defaultValue!=""
>
<#assign Default>BigDecimal.valueOf(${column.defaultValue})</#assign>
<#assign Default>BigDecimal.valueOf(${column.defaultValue})</#assign>
<#else>
<#else>
<#assign Default>null</#assign>
<#assign Default>null</#assign>
...
...
appbuild-manager/src/main/resources/template/vue/webVueList.vue.ftl
View file @
5b6faec7
...
@@ -143,30 +143,11 @@
...
@@ -143,30 +143,11 @@
</el-table-column>
</el-table-column>
);
);
},
},
<#elseif table.tplCategory=="subone">
renderTable(obj) {
let tableData = [];
tableData.push(obj);
return (
<el-table stripe data={tableData} class="total-table">
{this.columnSet.map((item) => this.renderTableColumn(item))}
</el-table>
);
},
renderTableColumn(options) {
return (
<el-table-column
prop={options.prop}
label={options.label}
width={options.width}
></el-table-column>
);
},
</#if>
</#if>
/** 重写新增方法 */
/** 重写新增方法 */
toAdd(row) {
toAdd(row) {
this.$refs.dialogform.add(row
, this.${className}Options
);
this.$refs.dialogform.add(row);
},
},
/** 重写编辑方法 */
/** 重写编辑方法 */
toEdit(row) {
toEdit(row) {
...
@@ -174,9 +155,9 @@
...
@@ -174,9 +155,9 @@
},
},
/** 重写查看方法 */
/** 重写查看方法 */
toView(row) {
//
toView(row) {
this.$refs.dialogform.view(row);
//
this.$refs.dialogform.view(row);
},
//
},
},
},
data() {
data() {
...
@@ -197,7 +178,7 @@
...
@@ -197,7 +178,7 @@
},
},
isExport: false,
isExport: false,
</#if>
</#if>
<#if table.tplCategory=="sub"
||table.tplCategory=="subone"
>
<#if table.tplCategory=="sub">
/** 子表列元素 */
/** 子表列元素 */
columnSet:[
columnSet:[
<#list subColumns as column>
<#list subColumns as column>
...
@@ -229,7 +210,7 @@
...
@@ -229,7 +210,7 @@
},
},
<#elseif column.isQuery == 1 &&column.htmlType==4>
<#elseif column.isQuery == 1 &&column.htmlType==4>
{
{
name: "${column.javaField}",
name: "${column.javaField}
List
",
type: "checkbox",
type: "checkbox",
label: "${comment}",
label: "${comment}",
fuzzy: true
fuzzy: true
...
@@ -248,13 +229,17 @@
...
@@ -248,13 +229,17 @@
{type: "selection", width: 60},
{type: "selection", width: 60},
<#list columns as column>
<#list columns as column>
<#assign comment=column.subComment(column.columnComment) />
<#assign comment=column.subComment(column.columnComment) />
<#if column.columnName != pkColumn.columnName && !column.isSuperColumn(column.javaField)>
<#if column.columnName != pkColumn.columnName && !column.isSuperColumn(column.javaField)&& column.isList==1>
<#if column.javaType == "Long">
<#if column.javaType == "Long">
{label: "${comment}", prop: "${column.javaField}", formatter: this.formatterString},
{label: "${comment}", prop: "${column.javaField}", formatter: this.formatterString},
</#if>
</#if>
<#if column.javaType == "String"
||column.javaType == "Integer"
>
<#if column.javaType == "String">
{label: "${comment}", prop: "${column.javaField}"},
{label: "${comment}", prop: "${column.javaField}"},
</#if>
</#if>
<#if column.javaType == "Integer">
{label: "${comment}", prop: "${column.javaField}",formatter: this.formatter},
</#if>
<#if column.javaType == "Date">
<#if column.javaType == "Date">
{label: "${comment}", prop: "${column.javaField}", formatter: this.formatterDate},
{label: "${comment}", prop: "${column.javaField}", formatter: this.formatterDate},
</#if>
</#if>
...
@@ -280,20 +265,18 @@
...
@@ -280,20 +265,18 @@
},
},
},
},
<#elseif table.tplCategory=="subone">
<#elseif table.tplCategory=="subone">
{label: "${subFunctionName}",
{
width: 120,
prop: "${subclassName}Entity",
prop: "subColumns",
label: "${subFunctionName}",
formatter: (row) => {
align: "center",
let widthsize = this.columnSet.reduce((pre, cur) => {
subColumns: [
return pre + Number(cur.width);
<#list subColumns as column>
}, 50);
<#if column.columnName != subPkColumn.columnName && !column.isSuperColumn(column.javaField)>
return (
<#assign comment=column.subComment(column.columnComment) />
<el-popover placement="right" width={widthsize} trigger="click">
{prop:"${column.javaField}",label:"${comment}",width:100}<#sep>,
{this.renderTable(row.${subclassName}Entity)}
</#if>
<el-button type="text" slot="reference">详细</el-button>
</#list>
</el-popover>
],
);
},
},
},
</#if>
</#if>
{
{
...
...
appbuild-manager/src/main/resources/template/vue/webVueShow.vue.ftl
View file @
5b6faec7
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
<el-form :model="form" :loading="loading" :rules="rules" size='small' style="width:100%" label-width='120px' ref="form">
<el-form :model="form" :loading="loading" :rules="rules" size='small' style="width:100%" label-width='120px' ref="form">
<el-row>
<el-row>
<#list columns as column>
<#list columns as column>
<#if column.isPrimaryKey != 1 && !column.isSuperColumn(column.javaField)>
<#if column.isPrimaryKey != 1 && !column.isSuperColumn(column.javaField)
&& column.isEdit==1
>
<#assign javaField=column.javaField />
<#assign javaField=column.javaField />
<#assign comment=column.subComment(column.columnComment) />
<#assign comment=column.subComment(column.columnComment) />
<#if column.htmlType == 1 && !column.columnType?contains("tinyint")>
<#if column.htmlType == 1 && !column.columnType?contains("tinyint")>
...
@@ -19,23 +19,11 @@
...
@@ -19,23 +19,11 @@
<#elseif column.htmlType == 6>
<#elseif column.htmlType == 6>
<Field label="${comment}" prop="${column.javaField}" v-model="form.${column.javaField}" type="date" />
<Field label="${comment}" prop="${column.javaField}" v-model="form.${column.javaField}" type="date" />
<#elseif column.htmlType == 7>
<#elseif column.htmlType == 7>
<el-col span="12">
<Field label="${comment}"><imageUpload v-model="form.${column.javaField}" prePath="/file/preview"/></Field>
<el-form-item label="${comment}">
<imageUpload v-model="form.${column.javaField}" prePath="/uploadimage"/>
</el-form-item>
</el-col>
<#elseif column.htmlType == 8>
<#elseif column.htmlType == 8>
<el-col span="12">
<Field label="${comment}"><fileUpload v-model="form.${column.javaField}" prePath="/file/uploadfile"/></Field>
<el-form-item label="${comment}">
<fileUpload v-model="form.${column.javaField}" prePath="/uploadfile" />
</el-form-item>
</el-col>
<#elseif column.htmlType == 9>
<#elseif column.htmlType == 9>
<el-col span="12">
<Field label="${comment}"><editor v-model="form.${column.javaField}" :min-height="256"/></Field>
<el-form-item label="${comment}">
<editor v-model="form.${column.javaField}" :min-height="192"/>
</el-form-item>
</el-col>
<#else >
<#else >
<Field label="${comment}" prop="${column.javaField}" v-model="form.${column.javaField}" placeholder="请输入${comment}"/>
<Field label="${comment}" prop="${column.javaField}" v-model="form.${column.javaField}" placeholder="请输入${comment}"/>
</#if>
</#if>
...
@@ -58,14 +46,11 @@
...
@@ -58,14 +46,11 @@
<el-table-column type="selection" width="50" align="center" />
<el-table-column type="selection" width="50" align="center" />
<el-table-column label="序号" align="center" prop="index" width="50"/>
<el-table-column label="序号" align="center" prop="index" width="50"/>
<#list subTable.columns as column >
<#list subTable.columns as column >
<#assign javaField=column.javaField />
<#if column.isPrimaryKey != 1 &&column.javaField!= subTableFkclassName && !column.isSuperColumn(column.javaField)&& column.isEdit==1>
<#assign comment=column.subComment(column.columnComment) />
<el-table-column label="${comment}" prop="${column.javaField}">
<#if column.isPrimaryKey==1 || javaField == subTableFkclassName>
<#elseif "" != javaField>
<el-table-column label="${comment}" prop="${javaField}">
<template slot-scope="scope">
<template slot-scope="scope">
<el-input v-model="scope.row.${javaField}" placeholder="请输入${comment}" />
<el-input v-model="scope.row.${column.javaField}" placeholder="请输入${comment}" />
</template>
</template>
</el-table-column>
</el-table-column>
</#if>
</#if>
...
@@ -78,79 +63,35 @@
...
@@ -78,79 +63,35 @@
<br/>
<br/>
<el-row>
<el-row>
<#list subTable.columns as column >
<#list subTable.columns as column >
<#assign javaField=column.javaField />
<#if column.isPrimaryKey != 1 && !column.isSuperColumn(column.javaField)&& column.isEdit==1>
<#assign comment=column.subComment(column.columnComment) />
<#assign javaField=column.javaField />
<#if column.isPrimaryKey==1 || javaField == subTableFkclassName>
<#assign comment=column.subComment(column.columnComment) />
<#elseif "" != javaField>
<#if column.htmlType == 1 && !column.columnType?contains("tinyint")>
<el-col :span="12">
<Field label="${comment}" prop="${column.javaField}" v-model="form.${subclassName}Entity.${column.javaField}" placeholder="请输入${comment}"/>
<el-form-item label="${comment}" placeholder="请输入${comment}">
<#elseif column.htmlType == 2>
<el-input v-model="form.${subclassName}Entity.${javaField}"></el-input>
<Field label="${comment}" prop="${column.javaField}" v-model="form.${subclassName}Entity.${column.javaField}" type="textarea" placeholder="请输入${comment}"/>
</el-form-item>
<#elseif column.htmlType == 3 ||column.columnType?contains("tinyint")>
</el-col>
<Field label="${comment}" prop="${column.javaField}" v-model="form.${subclassName}Entity.${column.javaField}" type="select" :enumData="dict.${column.javaField}" placeholder="请选择${comment}"/>
<#elseif column.htmlType == 4>
<#if column.htmlType == 1 && !column.columnType?contains("tinyint")>
<Field label="${comment}" prop="${column.javaField}" v-model="form.${subclassName}Entity.${column.javaField}" type="checkbox" :enumData="dict.${column.javaField}" />
<el-form-item label="${comment}" placeholder="请输入${comment}">
<#elseif column.htmlType == 5>
<el-input v-model="form.${subclassName}Entity.${javaField}"></el-input>
<Field label="${comment}" prop="${column.javaField}" v-model="form.${subclassName}Entity.${column.javaField}" type="radio" :enumData="dict.${column.javaField}" />
</el-form-item>
<#elseif column.htmlType == 6>
<#elseif column.htmlType == 2>
<Field label="${comment}" prop="${column.javaField}" v-model="form.${subclassName}Entity.${column.javaField}" type="date" />
<el-form-item label="${comment}" placeholder="请输入${comment}">
<#elseif column.htmlType == 7>
<el-input v-model="form.${subclassName}Entity.${javaField}" type="textarea" :rows="2"></el-input>
<Field label="${comment}"><imageUpload v-model="form.${subclassName}Entity.${column.javaField}" prePath="/file/preview"/></Field>
</el-form-item>
<#elseif column.htmlType == 8>
<#elseif column.htmlType == 3 ||column.columnType?contains("tinyint")>
<Field label="${comment}"><fileUpload v-model="form.${subclassName}Entity.${column.javaField}" prePath="/file/uploadfile"/></Field>
<el-form-item label="${comment}" prop="${column.javaField}" placeholder="请选择${comment}>
<#elseif column.htmlType == 9>
<el-select v-model="form.${subclassName}Entity.${javaField}" placeholder="请选择${comment}" clearable size="small">
<Field label="${comment}"><editor v-model="form.${subclassName}Entity.${column.javaField}" :min-height="256"/></Field>
<el-option
<#else >
v-for="(label, value) in dict.${column.javaField}"
<Field label="${comment}" prop="${column.javaField}" v-model="form.${subclassName}Entity.${column.javaField}" placeholder="请输入${comment}"/>
:key="value"
</#if>
:label="label"
:value="value"
></el-option>
</el-select>
</el-form-item>
<#elseif column.htmlType == 4>
<el-form-item label="${comment}" >
<el-checkbox-group v-model="form.${subclassName}Entity.${javaField}">
<el-checkbox
v-for='(label, value) in dict.${column.javaField}'
:key='value'
:label="value"
>{{label}}</el-checkbox>
</el-checkbox-group>
</el-form-item>
<#elseif column.htmlType == 5>
<el-form-item label="${comment}" >
<el-radio-group v-model="form.${subclassName}Entity.${javaField}">
<el-radio
v-for='(label, value) in dict.${column.javaField}'
:key='value'
:label="value"
>{{label}}</el-radio>
</el-radio-group>
</el-form-item>
<#elseif column.htmlType == 6>
<el-form-item label="${comment}" >
<el-date-picker type="date" value-format="yyyy-MM-dd HH:mm:ss" v-model="form.${subclassName}Entity.${javaField}" placeholder="选择日期" ></el-date-picker>
</el-form-item>
<#elseif column.htmlType == 7>
<el-form-item label="${comment}">
<imageUpload v-model="form.${subclassName}Entity.${javaField}" prePath="/uploadimage"/>
</el-form-item>
<#elseif column.htmlType == 8>
<el-form-item label="${comment}">
<fileUpload v-model="form.${subclassName}Entity.${javaField}" prePath="/uploadfile" />
</el-form-item>
<#elseif column.htmlType == 9>
<el-form-item label="${comment}">
<editor v-model="form.${subclassName}Entity.${javaField}" :min-height="192"/>
</el-form-item>
<#else >
<Field label="${comment}" prop="${column.javaField}" v-model="form.${column.javaField}" placeholder="请输入${comment}"/>
</#if>
</#if>
</#if>
</#list>
</#list>
</el-row>
</el-row>
</#if>
</#if>
<form-buttons @submit='submitForm'/>
<form-buttons @submit='submitForm'
:noSaveBtn="pageInfo.type === 'view'"
/>
</el-form>
</el-form>
</layout-form>
</layout-form>
</template>
</template>
...
@@ -197,14 +138,8 @@
...
@@ -197,14 +138,8 @@
</#if>
</#if>
</#list>
</#list>
},
},
toString:[
<#list columns as column>
<#if column.columnType?contains("tinyint")>
"${column.javaField}",
</#if>
</#list>
],
methods: {
methods: {
<#if table.tplCategory=="sub">
<#if table.tplCategory=="sub">
/** ${subTable.functionName}序号 */
/** ${subTable.functionName}序号 */
row${subClassName}Index({ row, rowIndex }) {
row${subClassName}Index({ row, rowIndex }) {
...
@@ -251,6 +186,13 @@
...
@@ -251,6 +186,13 @@
},
},
data() {
data() {
return {
return {
toString:[
<#list columns as column>
<#if column.columnType?contains("tinyint")>
"${column.javaField}",
</#if>
</#list>
],
<#if table.tplCategory=="sub">
<#if table.tplCategory=="sub">
// 子表选中数据
// 子表选中数据
checked${subClassName}: [],
checked${subClassName}: [],
...
@@ -259,24 +201,27 @@
...
@@ -259,24 +201,27 @@
</#if>
</#if>
rules: {
rules: {
<#list columns as column>
<#list columns as column>
<#if column.javaType == "String" && column.isEdit==1>
<#assign comment=column.subComment(column.columnComment) />
<#if column.javaType == "String" && column.isRequired==1>
${column.javaField}: [
${column.javaField}: [
{<#if column.isRequired==1>required: true,</#if> trigger: "blur" },
{<#if column.isRequired==1>required: true,message: "请输入${comment}",</#if> trigger: "blur" },
<#assign max=column.subBetween(column.columnType) />
{max: ${max},message: "最多只能录入${max}个字符",trigger: "blur",},
],
],
</#if>
</#if>
<#if column.javaType == "Integer" && column.is
Edit
==1>
<#if column.javaType == "Integer" && column.is
Required
==1>
${column.javaField}: [
${column.javaField}: [
{<#if column.isRequired==1>required: true,
</#if> type: 'integer',
trigger: "blur" },
{<#if column.isRequired==1>required: true,
message: "请输入${comment}",</#if>
trigger: "blur" },
],
],
</#if>
</#if>
<#if column.javaType == "BigDecimal" && column.is
Edit
==1>
<#if column.javaType == "BigDecimal" && column.is
Required
==1>
${column.javaField}: [
${column.javaField}: [
{<#if column.isRequired==1>required: true,
</#if> type: 'number',
trigger: "blur" },
{<#if column.isRequired==1>required: true,
message: "请输入${comment}",</#if>
trigger: "blur" },
],
],
</#if>
</#if>
<#if column.javaType == "Date" &&column.htmlType ==6 && column.is
Edit
==1>
<#if column.javaType == "Date" &&column.htmlType ==6 && column.is
Required
==1>
${column.javaField}: [
${column.javaField}: [
{<#if column.isRequired==1>required: true,</#if> },
{<#if column.isRequired==1>required: true,
message: "请选择${comment}"
</#if> },
],
],
</#if>
</#if>
</#list>
</#list>
...
...
appbuild-manager/src/main/resources/template/vue/webVueTreeList.vue.ftl
View file @
5b6faec7
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
:disabled="isExport"
:disabled="isExport"
>导出</el-button>
>导出</el-button>
</#if>
</#if>
</LayoutTable>
<#if table.isGenExport==1 >
<#if table.isGenExport==1 >
<!-- ${functionName}导入对话框 -->
<!-- ${functionName}导入对话框 -->
...
@@ -68,11 +67,11 @@
...
@@ -68,11 +67,11 @@
</template>
</template>
<script>
<script>
import dialogShow from "./dialogshow";
import { handleTree } from "@/assets/utils/table";
import { handleTree } from "@/assets/utils/table";
import Treeselect from "@riophae/vue-treeselect";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import table from "@/assets/mixins/table";
import table from "@/assets/mixins/table";
import dialogShow from "./dialogshow";
export default {
export default {
name: "${ClassName}",
name: "${ClassName}",
mixins: [table],
mixins: [table],
...
@@ -133,6 +132,14 @@
...
@@ -133,6 +132,14 @@
this.$refs.layoutTable.showType="treetable"
this.$refs.layoutTable.showType="treetable"
},
},
handleAdd(row) {
if (row.fileType == 2) {
this.$message.info("文件节点不允许添加子节点!");
return;
}
this.$refs.dialogform.add(row, this.${className}fileOptions);
},
/** 重写新增方法 */
/** 重写新增方法 */
toAdd(row) {
toAdd(row) {
this.$refs.dialogform.add(row, this.${className}Options);
this.$refs.dialogform.add(row, this.${className}Options);
...
@@ -159,8 +166,6 @@
...
@@ -159,8 +166,6 @@
},
},
data() {
data() {
return {
return {
/** 树表是否默认展开 */
expand:true,
<#if table.isGenExport==1 >
<#if table.isGenExport==1 >
// 用户导入参数
// 用户导入参数
upload: {
upload: {
...
@@ -177,8 +182,10 @@
...
@@ -177,8 +182,10 @@
},
},
isExport: false,
isExport: false,
</#if>
</#if>
config: {
config: {
/** 树表是否默认展开 */
expand:true,
showType: "treetable",
search: [
search: [
<#list columns as column>
<#list columns as column>
<#if column.isQuery == 1 &&column.htmlType==1>
<#if column.isQuery == 1 &&column.htmlType==1>
...
@@ -214,18 +221,19 @@
...
@@ -214,18 +221,19 @@
],
],
columns: [
columns: [
<#list columns as column>
<#list columns as column>
<#if column.columnName != pkColumn.columnName && !column.isSuperColumn(column.javaField)>
<#if column.columnName != pkColumn.columnName && !column.isSuperColumn(column.javaField)&& column.isList==1>
<#assign comment=column.subComment(column.columnComment) />
<#if column.javaType == "Long">
<#if column.javaType == "Long">
{label: "${co
lumn.columnCo
mment}", prop: "${column.javaField}", formatter: this.formatterString},
{label: "${comment}", prop: "${column.javaField}", formatter: this.formatterString},
</#if>
</#if>
<#if column.javaType == "String"||column.javaType == "Integer">
<#if column.javaType == "String"||column.javaType == "Integer">
{label: "${co
lumn.columnCo
mment}", prop: "${column.javaField}"},
{label: "${comment}", prop: "${column.javaField}"},
</#if>
</#if>
<#if column.javaType == "Date">
<#if column.javaType == "Date">
{label: "${co
lumn.columnCo
mment}", prop: "${column.javaField}", formatter: this.formatterDate},
{label: "${comment}", prop: "${column.javaField}", formatter: this.formatterDate},
</#if>
</#if>
<#if column.javaType == "BigDecimal">
<#if column.javaType == "BigDecimal">
{label: "${co
lumn.columnCo
mment}", prop: "${column.javaField}", formatter: this.formatterMoney},
{label: "${comment}", prop: "${column.javaField}", formatter: this.formatterMoney},
</#if>
</#if>
</#if>
</#if>
</#list>
</#list>
...
@@ -235,8 +243,27 @@
...
@@ -235,8 +243,27 @@
width: 280,
width: 280,
formatter: row => {
formatter: row => {
return (
return (
<table-buttons row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
<div>
);
<el-button
size="mini"
type="text"
icon="el-icon-edit-outline"
onClick={() => {
this.handleAdd(row);
}}
>
新增
</el-button>
<table-buttons
noAdd
noView
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
</div>
);
}
}
}
}
]
]
...
...
appbuild-manager/src/main/resources/template/vue/webVueView.vue.ftl
0 → 100644
View file @
5b6faec7
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<#list columns as column>
<#if column.isPrimaryKey != 1 && !column.isSuperColumn(column.javaField)&& column.isEdit==1>
<#assign javaField=column.javaField />
<#assign comment=column.subComment(column.columnComment) />
<#if column.htmlType == 1 ||column.htmlType == 2&& !column.columnType?contains("tinyint")>
<el-descriptions-item label="${comment}" label-class-name="labelClass" content-class-name="contentClass">
{{form.${column.javaField}}}
</el-descriptions-item>
<#elseif column.htmlType == 3||column.htmlType == 4||column.htmlType == 5>
<el-descriptions-item label="${comment}" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("${column.javaField}", form.${column.javaField}) }}
</el-descriptions-item>
<#elseif column.htmlType == 6>
<el-descriptions-item label="${comment}" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatterDate(form.${column.javaField})}}
</el-descriptions-item>
<#elseif column.htmlType == 7>
<el-descriptions-item label="${comment}" label-class-name="labelClass" content-class-name="contentClass">
<imageUpload v-model="form.${column.javaField}" prePath="/file/preview"/>
</el-descriptions-item>
<#elseif column.htmlType == 8>
<el-descriptions-item label="${comment}" label-class-name="labelClass" content-class-name="contentClass">
<fileUpload v-model="form.${column.javaField}" prePath="/file/uploadfile"/>
</el-descriptions-item>
<#elseif column.htmlType == 9>
<el-descriptions-item label="${comment}" label-class-name="labelClass" content-class-name="contentClass">
<editor v-model="form.${column.javaField}" :min-height="256"/>
</el-descriptions-item>
<#else >
<el-descriptions-item label="${comment}" label-class-name="labelClass" content-class-name="contentClass">
{{form.${column.javaField}}}
</el-descriptions-item>
</#if>
</#if>
</#list>
</el-descriptions>
<#if table.tplCategory=="subone">
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
扩展信息
</template>
<#list subTable.columns as column >
<#if column.isPrimaryKey != 1 && !column.isSuperColumn(column.javaField)&& column.isEdit==1>
<#assign javaField=column.javaField />
<#assign comment=column.subComment(column.columnComment) />
<#if column.htmlType == 1 ||column.htmlType == 2&& !column.columnType?contains("tinyint")>
<el-descriptions-item label="${comment}" label-class-name="labelClass" content-class-name="contentClass">
{{form.${column.javaField}}}
</el-descriptions-item>
<#elseif column.htmlType == 3||column.htmlType == 4||column.htmlType == 5>
<el-descriptions-item label="${comment}" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("${column.javaField}", form.${subclassName}Entity.${column.javaField}) }}
</el-descriptions-item>
<#elseif column.htmlType == 6>
<el-descriptions-item label="${comment}" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatterDate(form.${subclassName}Entity.${column.javaField})}}
</el-descriptions-item>
<#elseif column.htmlType == 7>
<el-descriptions-item label="${comment}" label-class-name="labelClass" content-class-name="contentClass">
<imageUpload v-model="form.${subclassName}Entity.${column.javaField}" prePath="/file/preview"/>
</el-descriptions-item>
<#elseif column.htmlType == 8>
<el-descriptions-item label="${comment}" label-class-name="labelClass" content-class-name="contentClass">
<fileUpload v-model="form.${subclassName}Entity.${column.javaField}" prePath="/file/uploadfile"/>
</el-descriptions-item>
<#elseif column.htmlType == 9>
<el-descriptions-item label="${comment}" label-class-name="labelClass" content-class-name="contentClass">
<editor v-model="form.${subclassName}Entity.${column.javaField}" :min-height="256"/>
</el-descriptions-item>
<#else >
<el-descriptions-item label="${comment}" label-class-name="labelClass" content-class-name="contentClass">
{{form.${subclassName}Entity.${column.javaField}}}
</el-descriptions-item>
</#if>
</#if>
</#list>
</el-descriptions>
</#if>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
<#list columns as column>
<#if column.isInsert==1 && !column.isSuperColumn(column.javaField) && column.isPrimaryKey!=1 && column.htmlType == 7>
import ImageUpload from '@/components/ImageUpload';
<#break>
</#if>
</#list>
<#list columns as column>
<#if column.isInsert==1 && !column.isSuperColumn(column.javaField) && column.isPrimaryKey!=1 && column.htmlType == 8>
import FileUpload from '@/components/FileUpload';
<#break>
</#if>
</#list>
<#list columns as column>
<#if column.isInsert==1 && !column.isSuperColumn(column.javaField) && column.isPrimaryKey!=1 && column.htmlType == 9>
import Editor from '@/components/Editor';
<#break>
</#if>
</#list>
export default {
mixins: [view],
components: {
<#list columns as column>
<#if column.isInsert==1 && !column.isSuperColumn(column.javaField) && column.isPrimaryKey!=1 && column.htmlType == 7>
ImageUpload,
<#break>
</#if>
</#list>
<#list columns as column>
<#if column.isInsert==1 && !column.isSuperColumn(column.javaField) && column.isPrimaryKey!=1 && column.htmlType == 8>
FileUpload,
<#break>
</#if>
</#list>
<#list columns as column>
<#if column.isInsert==1 && !column.isSuperColumn(column.javaField) && column.isPrimaryKey!=1 && column.htmlType == 9>
Editor,
<#break>
</#if>
</#list>
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
<#list columns as column>
<#if column.columnType?contains("tinyint")>
"${column.javaField}",
</#if>
</#list>
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
appbuild-manager/src/main/resources/template/xml/sqlMap.xml.ftl
View file @
5b6faec7
...
@@ -237,12 +237,8 @@
...
@@ -237,12 +237,8 @@
<
#if table.tplCategory=="tree" >
<
#if table.tplCategory=="tree" >
<!-- 获取子节点 -->
<!-- 获取子节点 -->
<select
id=
"selectChildrenSiteById"
parameterType=
"String"
resultMap=
"${ClassName}Entity-Map"
>
<select
id=
"selectChildren${ClassName}ById"
parameterType=
"String"
resultMap=
"${ClassName}Entity-Map"
>
select
<include
refid=
"_columns"
/>
select * from ${TempTable} as a where find_in_set(
<
#noparse>#
<
/#noparse>{${ClassName?uncap_first}Id}, ancestors)
from ${TempTable} as a
<trim
suffixOverrides=
"where"
suffix=
""
>
where find_in_set(
<
#noparse>#
<
/#noparse>${ClassName?uncap_first}Id, ancestors)
</trim>
</select>
</select>
<
/#if>
<
/#if>
...
...
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