Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
finance-manage
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
finance-oa
finance-manage
Commits
6e7d7aba
Commit
6e7d7aba
authored
Jul 24, 2020
by
RuoYi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
代码生成支持自定义路径
parent
388e36ed
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
200 additions
and
26 deletions
+200
-26
ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
.../src/main/java/com/ruoyi/common/utils/file/FileUtils.java
+1
-1
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
...n/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
+0
-2
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
...in/java/com/ruoyi/generator/controller/GenController.java
+18
-6
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java
...or/src/main/java/com/ruoyi/generator/domain/GenTable.java
+26
-0
ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
...java/com/ruoyi/generator/service/GenTableServiceImpl.java
+66
-4
ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
...in/java/com/ruoyi/generator/service/IGenTableService.java
+12
-4
ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
...or/src/main/resources/mapper/generator/GenTableMapper.xml
+11
-3
ruoyi-ui/src/api/tool/gen.js
ruoyi-ui/src/api/tool/gen.js
+10
-0
ruoyi-ui/src/views/tool/gen/genInfoForm.vue
ruoyi-ui/src/views/tool/gen/genInfoForm.vue
+46
-4
ruoyi-ui/src/views/tool/gen/index.vue
ruoyi-ui/src/views/tool/gen/index.vue
+8
-2
sql/ry_20200724.sql
sql/ry_20200724.sql
+2
-0
No files found.
ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
View file @
6e7d7aba
...
...
@@ -14,7 +14,7 @@ import javax.servlet.http.HttpServletRequest;
*
* @author ruoyi
*/
public
class
FileUtils
public
class
FileUtils
extends
org
.
apache
.
commons
.
io
.
FileUtils
{
public
static
String
FILENAME_PATTERN
=
"[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+"
;
...
...
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
View file @
6e7d7aba
...
...
@@ -17,7 +17,6 @@ import java.util.List;
import
java.util.Map
;
import
java.util.UUID
;
import
java.util.stream.Collectors
;
import
org.apache.poi.hssf.usermodel.HSSFDateUtil
;
import
org.apache.poi.ss.usermodel.BorderStyle
;
import
org.apache.poi.ss.usermodel.Cell
;
...
...
@@ -41,7 +40,6 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import
org.apache.poi.xssf.usermodel.XSSFDataValidation
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.ruoyi.common.annotation.Excel
;
import
com.ruoyi.common.annotation.Excel.ColumnType
;
import
com.ruoyi.common.annotation.Excel.Type
;
...
...
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
View file @
6e7d7aba
...
...
@@ -148,17 +148,29 @@ public class GenController extends BaseController
}
/**
* 生成代码
* 生成代码
(下载方式)
*/
@PreAuthorize
(
"@ss.hasPermi('tool:gen:code')"
)
@Log
(
title
=
"代码生成"
,
businessType
=
BusinessType
.
GENCODE
)
@GetMapping
(
"/
genCode
/{tableName}"
)
public
void
genCode
(
HttpServletResponse
response
,
@PathVariable
(
"tableName"
)
String
tableName
)
throws
IOException
@GetMapping
(
"/
download
/{tableName}"
)
public
void
download
(
HttpServletResponse
response
,
@PathVariable
(
"tableName"
)
String
tableName
)
throws
IOException
{
byte
[]
data
=
genTableService
.
generator
Code
(
tableName
);
byte
[]
data
=
genTableService
.
download
Code
(
tableName
);
genCode
(
response
,
data
);
}
/**
* 生成代码(自定义路径)
*/
@PreAuthorize
(
"@ss.hasPermi('tool:gen:code')"
)
@Log
(
title
=
"代码生成"
,
businessType
=
BusinessType
.
GENCODE
)
@GetMapping
(
"/genCode/{tableName}"
)
public
AjaxResult
genCode
(
HttpServletResponse
response
,
@PathVariable
(
"tableName"
)
String
tableName
)
{
genTableService
.
generatorCode
(
tableName
);
return
AjaxResult
.
success
();
}
/**
* 批量生成代码
*/
...
...
@@ -168,7 +180,7 @@ public class GenController extends BaseController
public
void
batchGenCode
(
HttpServletResponse
response
,
String
tables
)
throws
IOException
{
String
[]
tableNames
=
Convert
.
toStrArray
(
tables
);
byte
[]
data
=
genTableService
.
generator
Code
(
tableNames
);
byte
[]
data
=
genTableService
.
download
Code
(
tableNames
);
genCode
(
response
,
data
);
}
...
...
@@ -185,4 +197,4 @@ public class GenController extends BaseController
response
.
setContentType
(
"application/octet-stream; charset=UTF-8"
);
IOUtils
.
write
(
data
,
response
.
getOutputStream
());
}
}
}
\ No newline at end of file
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java
View file @
6e7d7aba
...
...
@@ -55,6 +55,12 @@ public class GenTable extends BaseEntity
@NotBlank
(
message
=
"作者不能为空"
)
private
String
functionAuthor
;
/** 生成代码方式(0zip压缩包 1自定义路径) */
private
String
genType
;
/** 生成路径(不填默认项目路径) */
private
String
genPath
;
/** 主键信息 */
private
GenTableColumn
pkColumn
;
...
...
@@ -180,6 +186,26 @@ public class GenTable extends BaseEntity
this
.
functionAuthor
=
functionAuthor
;
}
public
String
getGenType
()
{
return
genType
;
}
public
void
setGenType
(
String
genType
)
{
this
.
genType
=
genType
;
}
public
String
getGenPath
()
{
return
genPath
;
}
public
void
setGenPath
(
String
genPath
)
{
this
.
genPath
=
genPath
;
}
public
GenTableColumn
getPkColumn
()
{
return
pkColumn
;
...
...
ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
View file @
6e7d7aba
package
com.ruoyi.generator.service
;
import
java.io.ByteArrayOutputStream
;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.StringWriter
;
import
java.util.LinkedHashMap
;
...
...
@@ -21,9 +22,11 @@ import com.alibaba.fastjson.JSON;
import
com.alibaba.fastjson.JSONObject
;
import
com.ruoyi.common.constant.Constants
;
import
com.ruoyi.common.constant.GenConstants
;
import
com.ruoyi.common.core.text.CharsetKit
;
import
com.ruoyi.common.exception.CustomException
;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.common.utils.file.FileUtils
;
import
com.ruoyi.generator.domain.GenTable
;
import
com.ruoyi.generator.domain.GenTableColumn
;
import
com.ruoyi.generator.mapper.GenTableColumnMapper
;
...
...
@@ -202,13 +205,13 @@ public class GenTableServiceImpl implements IGenTableService
}
/**
* 生成代码
* 生成代码
(下载方式)
*
* @param tableName 表名称
* @return 数据
*/
@Override
public
byte
[]
generator
Code
(
String
tableName
)
public
byte
[]
download
Code
(
String
tableName
)
{
ByteArrayOutputStream
outputStream
=
new
ByteArrayOutputStream
();
ZipOutputStream
zip
=
new
ZipOutputStream
(
outputStream
);
...
...
@@ -218,13 +221,55 @@ public class GenTableServiceImpl implements IGenTableService
}
/**
* 批量生成代码
* 生成代码(自定义路径)
*
* @param tableName 表名称
* @return 数据
*/
@Override
public
void
generatorCode
(
String
tableName
)
{
// 查询表信息
GenTable
table
=
genTableMapper
.
selectGenTableByName
(
tableName
);
// 查询列信息
List
<
GenTableColumn
>
columns
=
table
.
getColumns
();
setPkColumn
(
table
,
columns
);
VelocityInitializer
.
initVelocity
();
VelocityContext
context
=
VelocityUtils
.
prepareContext
(
table
);
// 获取模板列表
List
<
String
>
templates
=
VelocityUtils
.
getTemplateList
(
table
.
getTplCategory
());
for
(
String
template
:
templates
)
{
if
(!
StringUtils
.
containsAny
(
template
,
"sql.vm"
,
"api.js.vm"
,
"index.vue.vm"
,
"index-tree.vue.vm"
))
{
// 渲染模板
StringWriter
sw
=
new
StringWriter
();
Template
tpl
=
Velocity
.
getTemplate
(
template
,
Constants
.
UTF8
);
tpl
.
merge
(
context
,
sw
);
try
{
String
path
=
getGenPath
(
table
,
template
);
FileUtils
.
writeStringToFile
(
new
File
(
path
),
sw
.
toString
(),
CharsetKit
.
UTF_8
);
}
catch
(
IOException
e
)
{
throw
new
CustomException
(
"渲染模板失败,表名:"
+
table
.
getTableName
());
}
}
}
}
/**
* 批量生成代码(下载方式)
*
* @param tableNames 表数组
* @return 数据
*/
@Override
public
byte
[]
generator
Code
(
String
[]
tableNames
)
public
byte
[]
download
Code
(
String
[]
tableNames
)
{
ByteArrayOutputStream
outputStream
=
new
ByteArrayOutputStream
();
ZipOutputStream
zip
=
new
ZipOutputStream
(
outputStream
);
...
...
@@ -347,4 +392,21 @@ public class GenTableServiceImpl implements IGenTableService
genTable
.
setParentMenuName
(
parentMenuName
);
}
}
/**
* 获取代码生成地址
*
* @param table 业务表信息
* @param template 模板文件路径
* @return 生成地址
*/
public
static
String
getGenPath
(
GenTable
table
,
String
template
)
{
String
genPath
=
table
.
getGenPath
();
if
(
StringUtils
.
equals
(
genPath
,
"/"
))
{
return
System
.
getProperty
(
"user.dir"
)
+
File
.
separator
+
"src"
+
File
.
separator
+
VelocityUtils
.
getFileName
(
template
,
table
);
}
return
genPath
+
File
.
separator
+
VelocityUtils
.
getFileName
(
template
,
table
);
}
}
\ No newline at end of file
ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
View file @
6e7d7aba
...
...
@@ -75,20 +75,28 @@ public interface IGenTableService
public
Map
<
String
,
String
>
previewCode
(
Long
tableId
);
/**
* 生成代码
* 生成代码
(下载方式)
*
* @param tableName 表名称
* @return 数据
*/
public
byte
[]
generator
Code
(
String
tableName
);
public
byte
[]
download
Code
(
String
tableName
);
/**
* 批量生成代码
* 生成代码(自定义路径)
*
* @param tableName 表名称
* @return 数据
*/
public
void
generatorCode
(
String
tableName
);
/**
* 批量生成代码(下载方式)
*
* @param tableNames 表数组
* @return 数据
*/
public
byte
[]
generator
Code
(
String
[]
tableNames
);
public
byte
[]
download
Code
(
String
[]
tableNames
);
/**
* 修改保存参数校验
...
...
ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
View file @
6e7d7aba
...
...
@@ -15,6 +15,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result
property=
"businessName"
column=
"business_name"
/>
<result
property=
"functionName"
column=
"function_name"
/>
<result
property=
"functionAuthor"
column=
"function_author"
/>
<result
property=
"genType"
column=
"gen_type"
/>
<result
property=
"genPath"
column=
"gen_path"
/>
<result
property=
"options"
column=
"options"
/>
<result
property=
"createBy"
column=
"create_by"
/>
<result
property=
"createTime"
column=
"create_time"
/>
...
...
@@ -50,7 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql
id=
"selectGenTableVo"
>
select table_id, table_name, table_comment, class_name, tpl_category, package_name, module_name, business_name, function_name, function_author, options, create_by, create_time, update_by, update_time, remark from gen_table
select table_id, table_name, table_comment, class_name, tpl_category, package_name, module_name, business_name, function_name, function_author,
gen_type, gen_path,
options, create_by, create_time, update_by, update_time, remark from gen_table
</sql>
<select
id=
"selectGenTableList"
parameterType=
"GenTable"
resultMap=
"GenTableResult"
>
...
...
@@ -106,7 +108,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select
id=
"selectGenTableById"
parameterType=
"Long"
resultMap=
"GenTableResult"
>
SELECT t.table_id, t.table_name, t.table_comment, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.options, t.remark,
SELECT t.table_id, t.table_name, t.table_comment, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.
gen_type, t.gen_path, t.
options, t.remark,
c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort
FROM gen_table t
LEFT JOIN gen_table_column c ON t.table_id = c.table_id
...
...
@@ -114,7 +116,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select
id=
"selectGenTableByName"
parameterType=
"String"
resultMap=
"GenTableResult"
>
SELECT t.table_id, t.table_name, t.table_comment, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.options, t.remark,
SELECT t.table_id, t.table_name, t.table_comment, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.
gen_type, t.gen_path, t.
options, t.remark,
c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort
FROM gen_table t
LEFT JOIN gen_table_column c ON t.table_id = c.table_id
...
...
@@ -132,6 +134,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if
test=
"businessName != null and businessName != ''"
>
business_name,
</if>
<if
test=
"functionName != null and functionName != ''"
>
function_name,
</if>
<if
test=
"functionAuthor != null and functionAuthor != ''"
>
function_author,
</if>
<if
test=
"genType != null and genType != ''"
>
gen_type,
</if>
<if
test=
"genPath != null and genPath != ''"
>
gen_path,
</if>
<if
test=
"remark != null and remark != ''"
>
remark,
</if>
<if
test=
"createBy != null and createBy != ''"
>
create_by,
</if>
create_time
...
...
@@ -145,6 +149,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if
test=
"businessName != null and businessName != ''"
>
#{businessName},
</if>
<if
test=
"functionName != null and functionName != ''"
>
#{functionName},
</if>
<if
test=
"functionAuthor != null and functionAuthor != ''"
>
#{functionAuthor},
</if>
<if
test=
"genType != null and genType != ''"
>
#{genType},
</if>
<if
test=
"genPath != null and genPath != ''"
>
#{genPath},
</if>
<if
test=
"remark != null and remark != ''"
>
#{remark},
</if>
<if
test=
"createBy != null and createBy != ''"
>
#{createBy},
</if>
sysdate()
...
...
@@ -158,6 +164,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if
test=
"tableComment != null and tableComment != ''"
>
table_comment = #{tableComment},
</if>
<if
test=
"className != null and className != ''"
>
class_name = #{className},
</if>
<if
test=
"functionAuthor != null and functionAuthor != ''"
>
function_author = #{functionAuthor},
</if>
<if
test=
"genType != null and genType != ''"
>
gen_type = #{genType},
</if>
<if
test=
"genPath != null and genPath != ''"
>
gen_path = #{genPath},
</if>
<if
test=
"tplCategory != null and tplCategory != ''"
>
tpl_category = #{tplCategory},
</if>
<if
test=
"packageName != null and packageName != ''"
>
package_name = #{packageName},
</if>
<if
test=
"moduleName != null and moduleName != ''"
>
module_name = #{moduleName},
</if>
...
...
ruoyi-ui/src/api/tool/gen.js
View file @
6e7d7aba
...
...
@@ -42,6 +42,7 @@ export function importTable(data) {
params
:
data
})
}
// 预览生成代码
export
function
previewTable
(
tableId
)
{
return
request
({
...
...
@@ -49,6 +50,7 @@ export function previewTable(tableId) {
method
:
'
get
'
})
}
// 删除表数据
export
function
delTable
(
tableId
)
{
return
request
({
...
...
@@ -57,3 +59,11 @@ export function delTable(tableId) {
})
}
// 生成代码(自定义路径)
export
function
genCode
(
tableName
)
{
return
request
({
url
:
'
/tool/gen/genCode/
'
+
tableName
,
method
:
'
get
'
})
}
ruoyi-ui/src/views/tool/gen/genInfoForm.vue
View file @
6e7d7aba
...
...
@@ -6,7 +6,7 @@
<span
slot=
"label"
>
生成模板
</span>
<el-select
v-model=
"info.tplCategory"
>
<el-option
label=
"单表(增删改查)"
value=
"crud"
/>
<el-option
label=
"树表(增删改查)"
value=
"tree"
/>
<el-option
label=
"树表(增删改查)"
value=
"tree"
/>
</el-select>
</el-form-item>
</el-col>
...
...
@@ -60,14 +60,56 @@
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
"functionName"
>
<el-form-item>
<span
slot=
"label"
>
上级菜单
<el-tooltip
content=
"分配到指定菜单下,例如 系统管理"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
</span>
<treeselect
:append-to-body=
"true"
v-model=
"info.parentMenuId"
:options=
"menus"
:normalizer=
"normalizer"
:show-count=
"true"
placeholder=
"请选择系统菜单"
/>
<treeselect
:append-to-body=
"true"
v-model=
"info.parentMenuId"
:options=
"menus"
:normalizer=
"normalizer"
:show-count=
"true"
placeholder=
"请选择系统菜单"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
"genType"
>
<span
slot=
"label"
>
生成代码方式
<el-tooltip
content=
"默认为zip压缩包下载,也可以自定义生成路径"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
</span>
<el-radio
v-model=
"info.genType"
label=
"0"
>
zip压缩包
</el-radio>
<el-radio
v-model=
"info.genType"
label=
"1"
>
自定义路径
</el-radio>
</el-form-item>
</el-col>
<el-col
:span=
"24"
v-if=
"info.genType == '1'"
>
<el-form-item
prop=
"genPath"
>
<span
slot=
"label"
>
自定义路径
<el-tooltip
content=
"填写磁盘绝对路径,若不填写,则生成到当前Web项目下"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
</span>
<el-input
v-model=
"info.genPath"
>
<el-dropdown
slot=
"append"
>
<el-button
type=
"primary"
>
最近路径快速选择
<i
class=
"el-icon-arrow-down el-icon--right"
></i>
</el-button>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
@
click.native=
"info.genPath = '/'"
>
恢复默认的生成基础路径
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-input>
</el-form-item>
</el-col>
</el-row>
...
...
@@ -165,7 +207,7 @@ export default {
],
functionName
:
[
{
required
:
true
,
message
:
"
请输入生成功能名
"
,
trigger
:
"
blur
"
}
]
]
,
}
};
},
...
...
ruoyi-ui/src/views/tool/gen/index.vue
View file @
6e7d7aba
...
...
@@ -166,7 +166,7 @@
</template>
<
script
>
import
{
listTable
,
previewTable
,
delTable
}
from
"
@/api/tool/gen
"
;
import
{
listTable
,
previewTable
,
delTable
,
genCode
}
from
"
@/api/tool/gen
"
;
import
importTable
from
"
./importTable
"
;
import
{
downLoadZip
}
from
"
@/utils/zipdownload
"
;
export
default
{
...
...
@@ -241,7 +241,13 @@ export default {
this
.
msgError
(
"
请选择要生成的数据
"
);
return
;
}
downLoadZip
(
"
/tool/gen/batchGenCode?tables=
"
+
tableNames
,
"
ruoyi
"
);
if
(
row
.
genType
===
"
1
"
)
{
genCode
(
row
.
tableName
).
then
(
response
=>
{
this
.
msgSuccess
(
"
成功生成到自定义路径:
"
+
row
.
genPath
);
});
}
else
{
downLoadZip
(
"
/tool/gen/batchGenCode?tables=
"
+
tableNames
,
"
ruoyi
"
);
}
},
/** 打开导入表弹窗 */
openImportTable
()
{
...
...
sql/ry_2020072
3
.sql
→
sql/ry_2020072
4
.sql
View file @
6e7d7aba
...
...
@@ -635,6 +635,8 @@ create table gen_table (
business_name
varchar
(
30
)
comment
'生成业务名'
,
function_name
varchar
(
50
)
comment
'生成功能名'
,
function_author
varchar
(
50
)
comment
'生成功能作者'
,
gen_type
char
(
1
)
default
'0'
comment
'生成代码方式(0zip压缩包 1自定义路径)'
,
gen_path
varchar
(
200
)
default
'/'
comment
'生成路径(不填默认项目路径)'
,
options
varchar
(
1000
)
comment
'其它生成选项'
,
create_by
varchar
(
64
)
default
''
comment
'创建者'
,
create_time
datetime
comment
'创建时间'
,
...
...
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