update 修改 代码生成 适配所有新功能

2.X
yueye 3 years ago committed by 疯狂的狮子li
parent 4827f9217b
commit 1e22d7ce70

@ -68,31 +68,38 @@ public interface GenConstants {
"bigint", "float", "double", "decimal"}; "bigint", "float", "double", "decimal"};
/** /**
* * BO
*/ */
String[] COLUMNNAME_NOT_EDIT = {"id", "create_by", "create_time", "del_flag"}; String[] COLUMNNAME_NOT_ADD = {"create_by", "create_time", "del_flag", "update_by",
"update_time", "version"};
/** /**
* * BO
*/ */
String[] COLUMNNAME_NOT_LIST = {"id", "create_by", "create_time", "del_flag", "update_by", String[] COLUMNNAME_NOT_EDIT = {"create_by", "create_time", "del_flag", "update_by",
"update_time"}; "update_time", "version"};
/** /**
* * VO
*/
String[] COLUMNNAME_NOT_LIST = {"create_by", "create_time", "del_flag", "update_by",
"update_time", "version"};
/**
* BO
*/ */
String[] COLUMNNAME_NOT_QUERY = {"id", "create_by", "create_time", "del_flag", "update_by", String[] COLUMNNAME_NOT_QUERY = {"id", "create_by", "create_time", "del_flag", "update_by",
"update_time", "remark"}; "update_time", "remark", "version"};
/** /**
* Entity * Entity
*/ */
String[] BASE_ENTITY = {"createBy", "createTime", "updateBy", "updateTime", "remark"}; String[] BASE_ENTITY = {"createBy", "createTime", "updateBy", "updateTime"};
/** /**
* Tree * Tree
*/ */
String[] TREE_ENTITY = {"parentName", "parentId", "orderNum", "ancestors"}; String[] TREE_ENTITY = {"parentName", "parentId", "children"};
/** /**
* *

@ -1,221 +1,231 @@
package com.ruoyi.gen.util; package com.ruoyi.gen.util;
import com.ruoyi.common.core.constant.GenConstants; import com.ruoyi.common.core.constant.GenConstants;
import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.gen.config.GenConfig; import com.ruoyi.gen.config.GenConfig;
import com.ruoyi.gen.domain.GenTable; import com.ruoyi.gen.domain.GenTable;
import com.ruoyi.gen.domain.GenTableColumn; import com.ruoyi.gen.domain.GenTableColumn;
import org.apache.commons.lang3.RegExUtils; import org.apache.commons.lang3.RegExUtils;
import java.util.Arrays; import java.util.Arrays;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class GenUtils { public class GenUtils {
/** /**
* *
*/ */
public static void initTable(GenTable genTable, String operName) { public static void initTable(GenTable genTable, String operName) {
genTable.setClassName(convertClassName(genTable.getTableName())); genTable.setClassName(convertClassName(genTable.getTableName()));
genTable.setPackageName(GenConfig.getPackageName()); genTable.setPackageName(GenConfig.getPackageName());
genTable.setModuleName(getModuleName(GenConfig.getPackageName())); genTable.setModuleName(getModuleName(GenConfig.getPackageName()));
genTable.setBusinessName(getBusinessName(genTable.getTableName())); genTable.setBusinessName(getBusinessName(genTable.getTableName()));
genTable.setFunctionName(replaceText(genTable.getTableComment())); genTable.setFunctionName(replaceText(genTable.getTableComment()));
genTable.setFunctionAuthor(GenConfig.getAuthor()); genTable.setFunctionAuthor(GenConfig.getAuthor());
genTable.setCreateBy(operName); genTable.setCreateBy(operName);
} }
/** /**
* *
*/ */
public static void initColumnField(GenTableColumn column, GenTable table) { public static void initColumnField(GenTableColumn column, GenTable table) {
String dataType = getDbType(column.getColumnType()); String dataType = getDbType(column.getColumnType());
String columnName = column.getColumnName(); String columnName = column.getColumnName();
column.setTableId(table.getTableId()); column.setTableId(table.getTableId());
column.setCreateBy(table.getCreateBy()); column.setCreateBy(table.getCreateBy());
// 设置java字段名 // 设置java字段名
column.setJavaField(StringUtils.toCamelCase(columnName)); column.setJavaField(StringUtils.toCamelCase(columnName));
// 设置默认类型 // 设置默认类型
column.setJavaType(GenConstants.TYPE_STRING); column.setJavaType(GenConstants.TYPE_STRING);
column.setQueryType(GenConstants.QUERY_EQ); column.setQueryType(GenConstants.QUERY_EQ);
if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) { if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) {
// 字符串长度超过500设置为文本域 // 字符串长度超过500设置为文本域
Integer columnLength = getColumnLength(column.getColumnType()); Integer columnLength = getColumnLength(column.getColumnType());
String htmlType = columnLength >= 500 || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType) ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT; String htmlType = columnLength >= 500 || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType) ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT;
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);
column.setHtmlType(GenConstants.HTML_DATETIME); column.setHtmlType(GenConstants.HTML_DATETIME);
} else if (arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType)) { } else if (arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType)) {
column.setHtmlType(GenConstants.HTML_INPUT); column.setHtmlType(GenConstants.HTML_INPUT);
// 如果是浮点型 统一用BigDecimal // 如果是浮点型 统一用BigDecimal
String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ","); String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ",");
if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0) { if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0) {
column.setJavaType(GenConstants.TYPE_BIGDECIMAL); column.setJavaType(GenConstants.TYPE_BIGDECIMAL);
} }
// 如果是整形 // 如果是整形
else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10) { else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10) {
column.setJavaType(GenConstants.TYPE_INTEGER); column.setJavaType(GenConstants.TYPE_INTEGER);
} }
// 长整形 // 长整形
else { else {
column.setJavaType(GenConstants.TYPE_LONG); column.setJavaType(GenConstants.TYPE_LONG);
} }
} }
// 插入字段(默认所有字段都需要插入) // BO对象 默认插入勾选
column.setIsInsert(GenConstants.REQUIRE); if (!arraysContains(GenConstants.COLUMNNAME_NOT_ADD, columnName) && !column.isPk()) {
column.setIsInsert(GenConstants.REQUIRE);
// 编辑字段 }
if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName) && !column.isPk()) { // BO对象 默认编辑勾选
column.setIsEdit(GenConstants.REQUIRE); if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName)) {
} column.setIsEdit(GenConstants.REQUIRE);
// 列表字段 }
if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName) && !column.isPk()) { // BO对象 默认是否必填勾选
column.setIsList(GenConstants.REQUIRE); if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName)) {
} column.setIsRequired(GenConstants.REQUIRE);
// 查询字段 }
if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk()) { // VO对象 默认返回勾选
column.setIsQuery(GenConstants.REQUIRE); if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName)) {
} column.setIsList(GenConstants.REQUIRE);
}
// 查询字段类型 // BO对象 默认查询勾选
if (StringUtils.endsWithIgnoreCase(columnName, "name")) { if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk()) {
column.setQueryType(GenConstants.QUERY_LIKE); column.setIsQuery(GenConstants.REQUIRE);
} }
// 状态字段设置单选框
if (StringUtils.endsWithIgnoreCase(columnName, "status")) { // 查询字段
column.setHtmlType(GenConstants.HTML_RADIO); if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk()) {
} column.setIsQuery(GenConstants.REQUIRE);
// 类型&性别字段设置下拉框 }
else if (StringUtils.endsWithIgnoreCase(columnName, "type")
|| StringUtils.endsWithIgnoreCase(columnName, "sex")) { // 查询字段类型
column.setHtmlType(GenConstants.HTML_SELECT); if (StringUtils.endsWithIgnoreCase(columnName, "name")) {
} column.setQueryType(GenConstants.QUERY_LIKE);
// 图片字段设置图片上传控件 }
else if (StringUtils.endsWithIgnoreCase(columnName, "image")) { // 状态字段设置单选框
column.setHtmlType(GenConstants.HTML_IMAGE_UPLOAD); if (StringUtils.endsWithIgnoreCase(columnName, "status")) {
} column.setHtmlType(GenConstants.HTML_RADIO);
// 文件字段设置文件上传控件 }
else if (StringUtils.endsWithIgnoreCase(columnName, "file")) { // 类型&性别字段设置下拉框
column.setHtmlType(GenConstants.HTML_FILE_UPLOAD); else if (StringUtils.endsWithIgnoreCase(columnName, "type")
} || StringUtils.endsWithIgnoreCase(columnName, "sex")) {
// 内容字段设置富文本控件 column.setHtmlType(GenConstants.HTML_SELECT);
else if (StringUtils.endsWithIgnoreCase(columnName, "content")) { }
column.setHtmlType(GenConstants.HTML_EDITOR); // 图片字段设置图片上传控件
} else if (StringUtils.endsWithIgnoreCase(columnName, "image")) {
} column.setHtmlType(GenConstants.HTML_IMAGE_UPLOAD);
}
/** // 文件字段设置文件上传控件
* else if (StringUtils.endsWithIgnoreCase(columnName, "file")) {
* column.setHtmlType(GenConstants.HTML_FILE_UPLOAD);
* @param arr }
* @param targetValue // 内容字段设置富文本控件
* @return else if (StringUtils.endsWithIgnoreCase(columnName, "content")) {
*/ column.setHtmlType(GenConstants.HTML_EDITOR);
public static boolean arraysContains(String[] arr, String targetValue) { }
return Arrays.asList(arr).contains(targetValue); }
}
/**
/** *
* *
* * @param arr
* @param packageName * @param targetValue
* @return * @return
*/ */
public static String getModuleName(String packageName) { public static boolean arraysContains(String[] arr, String targetValue) {
int lastIndex = packageName.lastIndexOf("."); return Arrays.asList(arr).contains(targetValue);
int nameLength = packageName.length(); }
return StringUtils.substring(packageName, lastIndex + 1, nameLength);
} /**
*
/** *
* * @param packageName
* * @return
* @param tableName */
* @return public static String getModuleName(String packageName) {
*/ int lastIndex = packageName.lastIndexOf(".");
public static String getBusinessName(String tableName) { int nameLength = packageName.length();
int lastIndex = tableName.lastIndexOf("_"); return StringUtils.substring(packageName, lastIndex + 1, nameLength);
int nameLength = tableName.length(); }
return StringUtils.substring(tableName, lastIndex + 1, nameLength);
} /**
*
/** *
* Java * @param tableName
* * @return
* @param tableName */
* @return public static String getBusinessName(String tableName) {
*/ int lastIndex = tableName.lastIndexOf("_");
public static String convertClassName(String tableName) { int nameLength = tableName.length();
boolean autoRemovePre = GenConfig.getAutoRemovePre(); return StringUtils.substring(tableName, lastIndex + 1, nameLength);
String tablePrefix = GenConfig.getTablePrefix(); }
if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix)) {
String[] searchList = StringUtils.split(tablePrefix, ","); /**
tableName = replaceFirst(tableName, searchList); * Java
} *
return StringUtils.convertToCamelCase(tableName); * @param tableName
} * @return
*/
/** public static String convertClassName(String tableName) {
* boolean autoRemovePre = GenConfig.getAutoRemovePre();
* String tablePrefix = GenConfig.getTablePrefix();
* @param replacementm if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix)) {
* @param searchList String[] searchList = StringUtils.split(tablePrefix, ",");
* @return tableName = replaceFirst(tableName, searchList);
*/ }
public static String replaceFirst(String replacementm, String[] searchList) { return StringUtils.convertToCamelCase(tableName);
String text = replacementm; }
for (String searchString : searchList) {
if (replacementm.startsWith(searchString)) { /**
text = replacementm.replaceFirst(searchString, ""); *
break; *
} * @param replacementm
} * @param searchList
return text; * @return
} */
public static String replaceFirst(String replacementm, String[] searchList) {
/** String text = replacementm;
* for (String searchString : searchList) {
* if (replacementm.startsWith(searchString)) {
* @param text text = replacementm.replaceFirst(searchString, "");
* @return break;
*/ }
public static String replaceText(String text) { }
return RegExUtils.replaceAll(text, "(?:表|若依)", ""); return text;
} }
/** /**
* *
* *
* @param columnType * @param text
* @return * @return
*/ */
public static String getDbType(String columnType) { public static String replaceText(String text) {
if (StringUtils.indexOf(columnType, "(") > 0) { return RegExUtils.replaceAll(text, "(?:表|若依)", "");
return StringUtils.substringBefore(columnType, "("); }
} else {
return columnType; /**
} *
} *
* @param columnType
/** * @return
* */
* public static String getDbType(String columnType) {
* @param columnType if (StringUtils.indexOf(columnType, "(") > 0) {
* @return return StringUtils.substringBefore(columnType, "(");
*/ } else {
public static Integer getColumnLength(String columnType) { return columnType;
if (StringUtils.indexOf(columnType, "(") > 0) { }
String length = StringUtils.substringBetween(columnType, "(", ")"); }
return Integer.valueOf(length);
} else { /**
return 0; *
} *
} * @param columnType
} * @return
*/
public static Integer getColumnLength(String columnType) {
if (StringUtils.indexOf(columnType, "(") > 0) {
String length = StringUtils.substringBetween(columnType, "(", ")");
return Integer.valueOf(length);
} else {
return 0;
}
}
}

@ -125,6 +125,8 @@ public class VelocityUtils {
public static List<String> getTemplateList(String tplCategory) { public static List<String> getTemplateList(String tplCategory) {
List<String> templates = new ArrayList<String>(); List<String> templates = new ArrayList<String>();
templates.add("vm/java/domain.java.vm"); templates.add("vm/java/domain.java.vm");
templates.add("vm/java/bo.java.vm");
templates.add("vm/java/vo.java.vm");
templates.add("vm/java/mapper.java.vm"); templates.add("vm/java/mapper.java.vm");
templates.add("vm/java/service.java.vm"); templates.add("vm/java/service.java.vm");
templates.add("vm/java/serviceImpl.java.vm"); templates.add("vm/java/serviceImpl.java.vm");
@ -165,6 +167,12 @@ public class VelocityUtils {
if (template.contains("domain.java.vm")) { if (template.contains("domain.java.vm")) {
fileName = StringUtils.format("{}/domain/{}.java", javaPath, className); fileName = StringUtils.format("{}/domain/{}.java", javaPath, className);
} }
if (template.contains("vo.java.vm")) {
fileName = StringUtils.format("{}/domain/vo/{}Vo.java", javaPath, className);
}
if (template.contains("bo.java.vm")) {
fileName = StringUtils.format("{}/domain/bo/{}Bo.java", javaPath, className);
}
if (template.contains("sub-domain.java.vm") && StringUtils.equals(GenConstants.TPL_SUB, genTable.getTplCategory())) { if (template.contains("sub-domain.java.vm") && StringUtils.equals(GenConstants.TPL_SUB, genTable.getTplCategory())) {
fileName = StringUtils.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName()); fileName = StringUtils.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName());
} else if (template.contains("mapper.java.vm")) { } else if (template.contains("mapper.java.vm")) {

@ -0,0 +1,66 @@
package ${packageName}.domain.bo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.util.Date;
#foreach ($import in $importList)
import ${import};
#end
#if($table.crud || $table.sub)
import com.ruoyi.common.core.web.domain.BaseEntity;
#elseif($table.tree)
import com.ruoyi.common.core.web.domain.TreeEntity;
#end
/**
* ${functionName}业务对象 ${tableName}
*
* @author ${author}
* @date ${datetime}
*/
#if($table.crud || $table.sub)
#set($Entity="BaseEntity")
#elseif($table.tree)
#set($Entity="TreeEntity")
#end
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("${functionName}业务对象")
public class ${ClassName}Bo extends ${Entity} {
#foreach ($column in $columns)
#if(!$table.isSuperColumn($column.javaField) && ($column.query || $column.isInsert || $column.isEdit))
/**
* $column.columnComment
*/
#if($column.isInsert && $column.isEdit)
#set($Group="AddGroup.class, EditGroup.class")
#elseif($column.isInsert)
#set($Group="AddGroup.class")
#elseif($column.isEdit)
#set($Group="EditGroup.class")
#end
#if($column.isRequired == 1)
@ApiModelProperty(value = "$column.columnComment", required = true)
#if($column.javaType == 'String')
@NotBlank(message = "$column.columnComment不能为空", groups = { $Group })
#else
@NotNull(message = "$column.columnComment不能为空", groups = { $Group })
#end
#else
@ApiModelProperty(value = "$column.columnComment")
#end
private $column.javaType $column.javaField;
#end
#end
}

@ -1,58 +1,64 @@
package ${packageName}.controller; package ${packageName}.controller;
import java.util.List; import cn.dev33.satoken.annotation.SaCheckPermission;
import javax.servlet.http.HttpServletResponse; import com.ruoyi.common.core.domain.R;
import org.springframework.beans.factory.annotation.Autowired; import com.ruoyi.common.core.validate.AddGroup;
import org.springframework.web.bind.annotation.GetMapping; import com.ruoyi.common.core.validate.EditGroup;
import org.springframework.web.bind.annotation.PostMapping; import com.ruoyi.common.core.validate.QueryGroup;
import org.springframework.web.bind.annotation.PutMapping; import com.ruoyi.common.core.web.controller.BaseController;
import org.springframework.web.bind.annotation.DeleteMapping; import com.ruoyi.common.excel.utils.ExcelUtil;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.mybatis.core.page.PageQuery;
import ${packageName}.domain.${ClassName}; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import ${packageName}.domain.vo.${ClassName}Vo;
import ${packageName}.domain.bo.${ClassName}Bo;
import ${packageName}.service.I${ClassName}Service; import ${packageName}.service.I${ClassName}Service;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
#if($table.crud || $table.sub) #if($table.crud || $table.sub)
import com.ruoyi.common.core.web.page.TableDataInfo; import com.ruoyi.common.mybatis.core.page.TableDataInfo;
#elseif($table.tree) #elseif($table.tree)
#end #end
import java.util.List;
import java.util.Arrays;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.servlet.http.HttpServletResponse;
/** /**
* ${functionName}Controller * ${functionName}Controller
* * 前端访问路由地址为:/${moduleName}/${businessName}
* @author ${author} * @author ${author}
* @date ${datetime} * @date ${datetime}
*/ */
@Validated
@Api(value = "${functionName}控制器", tags = {"${functionName}管理"})
@RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/${businessName}") @RequestMapping("/${businessName}")
public class ${ClassName}Controller extends BaseController public class ${ClassName}Controller extends BaseController {
{
@Autowired private final I${ClassName}Service i${ClassName}Service;
private I${ClassName}Service ${className}Service;
/** /**
* 查询${functionName}列表 * 查询${functionName}列表
*/ */
@ApiOperation("查询${functionName}列表")
@SaCheckPermission("${permissionPrefix}:list") @SaCheckPermission("${permissionPrefix}:list")
@GetMapping("/list") @GetMapping("/list")
#if($table.crud || $table.sub) #if($table.crud || $table.sub)
public TableDataInfo list(${ClassName} ${className}) public TableDataInfo<${ClassName}Vo> list(@Validated(QueryGroup.class) ${ClassName}Bo bo, PageQuery pageQuery) {
{ return i${ClassName}Service.queryPageList(bo, pageQuery);
startPage();
List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
return getDataTable(list);
} }
#elseif($table.tree) #elseif($table.tree)
public R<List<${ClassName}>> list(${ClassName} ${className}) public R<List<${ClassName}Vo>> list(@Validated(QueryGroup.class) ${ClassName}Bo bo) {
{ List<${ClassName}Vo> list = i${ClassName}Service.queryList(bo);
List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
return R.ok(list); return R.ok(list);
} }
#end #end
@ -60,56 +66,59 @@ public class ${ClassName}Controller extends BaseController
/** /**
* 导出${functionName}列表 * 导出${functionName}列表
*/ */
@ApiOperation("导出${functionName}列表")
@SaCheckPermission("${permissionPrefix}:export") @SaCheckPermission("${permissionPrefix}:export")
@Log(title = "${functionName}", businessType = BusinessType.EXPORT) @Log(title = "${functionName}", businessType = BusinessType.EXPORT)
@PostMapping("/export") @PostMapping("/export")
public void export(HttpServletResponse response, ${ClassName} ${className}) public void export(@Validated ${ClassName}Bo bo, HttpServletResponse response) {
{ List<${ClassName}Vo> list = i${ClassName}Service.queryList(bo);
List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); ExcelUtil.exportExcel(list, "${functionName}", ${ClassName}Vo.class, response);
ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class);
util.exportExcel(response, list, "${functionName}数据");
} }
/** /**
* 获取${functionName}详细信息 * 获取${functionName}详细信息
*/ */
@ApiOperation("获取${functionName}详细信息")
@SaCheckPermission("${permissionPrefix}:query") @SaCheckPermission("${permissionPrefix}:query")
@GetMapping(value = "/{${pkColumn.javaField}}") @GetMapping("/{${pkColumn.javaField}}")
public R<${ClassName}> getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) public R<${ClassName}Vo> getInfo(@ApiParam("主键")
{ @NotNull(message = "主键不能为空")
return R.ok(${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField})); @PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) {
return R.ok(i${ClassName}Service.queryById(${pkColumn.javaField}));
} }
/** /**
* 新增${functionName} * 新增${functionName}
*/ */
@ApiOperation("新增${functionName}")
@SaCheckPermission("${permissionPrefix}:add") @SaCheckPermission("${permissionPrefix}:add")
@Log(title = "${functionName}", businessType = BusinessType.INSERT) @Log(title = "${functionName}", businessType = BusinessType.INSERT)
@PostMapping @PostMapping()
public R<Void> add(@RequestBody ${ClassName} ${className}) public R<Void> add(@Validated(AddGroup.class) @RequestBody ${ClassName}Bo bo) {
{ return toAjax(i${ClassName}Service.insertByBo(bo) ? 1 : 0);
return toAjax(${className}Service.insert${ClassName}(${className}));
} }
/** /**
* 修改${functionName} * 修改${functionName}
*/ */
@ApiOperation("修改${functionName}")
@SaCheckPermission("${permissionPrefix}:edit") @SaCheckPermission("${permissionPrefix}:edit")
@Log(title = "${functionName}", businessType = BusinessType.UPDATE) @Log(title = "${functionName}", businessType = BusinessType.UPDATE)
@PutMapping @PutMapping()
public R<Void> edit(@RequestBody ${ClassName} ${className}) public R<Void> edit(@Validated(EditGroup.class) @RequestBody ${ClassName}Bo bo) {
{ return toAjax(i${ClassName}Service.updateByBo(bo) ? 1 : 0);
return toAjax(${className}Service.update${ClassName}(${className}));
} }
/** /**
* 删除${functionName} * 删除${functionName}
*/ */
@ApiOperation("删除${functionName}")
@SaCheckPermission("${permissionPrefix}:remove") @SaCheckPermission("${permissionPrefix}:remove")
@Log(title = "${functionName}", businessType = BusinessType.DELETE) @Log(title = "${functionName}", businessType = BusinessType.DELETE)
@DeleteMapping("/{${pkColumn.javaField}s}") @DeleteMapping("/{${pkColumn.javaField}s}")
public R<Void> remove(@PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) public R<Void> remove(@ApiParam("主键串")
{ @NotEmpty(message = "主键不能为空")
return toAjax(${className}Service.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s)); @PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) {
return toAjax(i${ClassName}Service.deleteWithValidByIds(Arrays.asList(${pkColumn.javaField}s), true) ? 1 : 0);
} }
} }

@ -1,104 +1,56 @@
package ${packageName}.domain; package ${packageName}.domain;
#foreach ($import in $importList) import com.baomidou.mybatisplus.annotation.*;
import ${import}; import lombok.Data;
#end import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder; import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringStyle; import java.io.Serializable;
import com.ruoyi.common.core.annotation.Excel; import java.util.Date;
#if($table.crud || $table.sub) import java.math.BigDecimal;
import com.ruoyi.common.core.web.domain.BaseEntity;
#elseif($table.tree) #foreach ($import in $importList)
import com.ruoyi.common.core.web.domain.TreeEntity; import ${import};
#end #end
#if($table.crud || $table.sub)
/** import com.ruoyi.common.core.web.domain.BaseEntity;
* ${functionName}对象 ${tableName} #elseif($table.tree)
* import com.ruoyi.common.core.web.domain.TreeEntity;
* @author ${author} #end
* @date ${datetime}
*/ /**
#if($table.crud || $table.sub) * ${functionName}对象 ${tableName}
#set($Entity="BaseEntity") *
#elseif($table.tree) * @author ${author}
#set($Entity="TreeEntity") * @date ${datetime}
#end */
public class ${ClassName} extends ${Entity} #if($table.crud || $table.sub)
{ #set($Entity="BaseEntity")
private static final long serialVersionUID = 1L; #elseif($table.tree)
#set($Entity="TreeEntity")
#foreach ($column in $columns) #end
#if(!$table.isSuperColumn($column.javaField)) @Data
/** $column.columnComment */ @EqualsAndHashCode(callSuper = true)
#if($column.list) @TableName("${tableName}")
#set($parentheseIndex=$column.columnComment.indexOf("")) public class ${ClassName} extends ${Entity} {
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex)) private static final long serialVersionUID=1L;
#else
#set($comment=$column.columnComment) #foreach ($column in $columns)
#end #if(!$table.isSuperColumn($column.javaField))
#if($parentheseIndex != -1) /**
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") * $column.columnComment
#elseif($column.javaType == 'Date') */
@Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd") #if($column.javaField=='delFlag')
#else @TableLogic
@Excel(name = "${comment}") #end
#end #if($column.javaField=='version')
#end @Version
private $column.javaType $column.javaField; #end
#if($column.isPk==1)
#end @TableId(value = "$column.columnName")
#end #end
#if($table.sub) private $column.javaType $column.javaField;
/** $table.subTable.functionName信息 */ #end
private List<${subClassName}> ${subclassName}List; #end
#end }
#foreach ($column in $columns)
#if(!$table.isSuperColumn($column.javaField))
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
#set($AttrName=$column.javaField)
#else
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#end
public void set${AttrName}($column.javaType $column.javaField)
{
this.$column.javaField = $column.javaField;
}
public $column.javaType get${AttrName}()
{
return $column.javaField;
}
#end
#end
#if($table.sub)
public List<${subClassName}> get${subClassName}List()
{
return ${subclassName}List;
}
public void set${subClassName}List(List<${subClassName}> ${subclassName}List)
{
this.${subclassName}List = ${subclassName}List;
}
#end
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
#foreach ($column in $columns)
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
#set($AttrName=$column.javaField)
#else
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#end
.append("${column.javaField}", get${AttrName}())
#end
#if($table.sub)
.append("${subclassName}List", get${subClassName}List())
#end
.toString();
}
}

@ -1,91 +1,15 @@
package ${packageName}.mapper; package ${packageName}.mapper;
import java.util.List; import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import ${packageName}.domain.${ClassName}; import ${packageName}.domain.${ClassName};
#if($table.sub) import ${packageName}.domain.vo.${ClassName}Vo;
import ${packageName}.domain.${subClassName};
#end /**
* ${functionName}Mapper接口
/** *
* ${functionName}Mapper接口 * @author ${author}
* * @date ${datetime}
* @author ${author} */
* @date ${datetime} public interface ${ClassName}Mapper extends BaseMapperPlus<${ClassName}Mapper, ${ClassName}, ${ClassName}Vo> {
*/
public interface ${ClassName}Mapper }
{
/**
* 查询${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}
*/
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
/**
* 查询${functionName}列表
*
* @param ${className} ${functionName}
* @return ${functionName}集合
*/
public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
/**
* 新增${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
public int insert${ClassName}(${ClassName} ${className});
/**
* 修改${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
public int update${ClassName}(${ClassName} ${className});
/**
* 删除${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return 结果
*/
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
/**
* 批量删除${functionName}
*
* @param ${pkColumn.javaField}s 需要删除的数据主键集合
* @return 结果
*/
public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
#if($table.sub)
/**
* 批量删除${subTable.functionName}
*
* @param ${pkColumn.javaField}s 需要删除的数据主键集合
* @return 结果
*/
public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
/**
* 批量新增${subTable.functionName}
*
* @param ${subclassName}List ${subTable.functionName}列表
* @return 结果
*/
public int batch${subClassName}(List<${subClassName}> ${subclassName}List);
/**
* 通过${functionName}主键删除${subTable.functionName}信息
*
* @param ${pkColumn.javaField} ${functionName}ID
* @return 结果
*/
public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});
#end
}

@ -1,61 +1,72 @@
package ${packageName}.service; package ${packageName}.service;
import java.util.List; import com.ruoyi.common.mybatis.core.page.PageQuery;
import ${packageName}.domain.${ClassName}; import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import ${packageName}.domain.${ClassName};
/** import ${packageName}.domain.vo.${ClassName}Vo;
* ${functionName}Service接口 import ${packageName}.domain.bo.${ClassName}Bo;
* #if($table.crud || $table.sub)
* @author ${author} #end
* @date ${datetime}
*/ import java.util.Collection;
public interface I${ClassName}Service import java.util.List;
{
/** /**
* 查询${functionName} * ${functionName}Service接口
* *
* @param ${pkColumn.javaField} ${functionName}主键 * @author ${author}
* @return ${functionName} * @date ${datetime}
*/ */
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); public interface I${ClassName}Service {
/** /**
* 查询${functionName}列表 * 查询${functionName}
* *
* @param ${className} ${functionName} * @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}集合 * @return ${functionName}
*/ */
public List<${ClassName}> select${ClassName}List(${ClassName} ${className}); ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField});
/** #if($table.crud || $table.sub)
* 新增${functionName} /**
* * 查询${functionName}列表
* @param ${className} ${functionName} *
* @return 结果 * @param ${className} ${functionName}
*/ * @return ${functionName}集合
public int insert${ClassName}(${ClassName} ${className}); */
TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery);
/** #end
* 修改${functionName}
* /**
* @param ${className} ${functionName} * 查询${functionName}列表
* @return 结果 *
*/ * @param ${className} ${functionName}
public int update${ClassName}(${ClassName} ${className}); * @return ${functionName}集合
*/
/** List<${ClassName}Vo> queryList(${ClassName}Bo bo);
* 批量删除${functionName}
* /**
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合 * 修改${functionName}
* @return 结果 *
*/ * @param ${className} ${functionName}
public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); * @return 结果
*/
/** Boolean insertByBo(${ClassName}Bo bo);
* 删除${functionName}信息
* /**
* @param ${pkColumn.javaField} ${functionName}主键 * 修改${functionName}
* @return 结果 *
*/ * @param ${className} ${functionName}
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); * @return 结果
} */
Boolean updateByBo(${ClassName}Bo bo);
/**
* 校验并批量删除${functionName}信息
*
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合
* @param isValid 是否校验,true-删除前校验,false-不校验
* @return 结果
*/
Boolean deleteWithValidByIds(Collection<${pkColumn.javaType}> ids, Boolean isValid);
}

@ -1,169 +1,154 @@
package ${packageName}.service.impl; package ${packageName}.service.impl;
import java.util.List; import cn.hutool.core.bean.BeanUtil;
#foreach ($column in $columns) import com.ruoyi.common.core.utils.StringUtils;
#if($column.javaField == 'createTime' || $column.javaField == 'updateTime') #if($table.crud || $table.sub)
import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.mybatis.core.page.PageQuery;
#break import com.ruoyi.common.mybatis.core.page.TableDataInfo;
#end #end
#end import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;
import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
#if($table.sub) import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import java.util.ArrayList; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.core.utils.StringUtils; import ${packageName}.domain.bo.${ClassName}Bo;
import org.springframework.transaction.annotation.Transactional; import ${packageName}.domain.vo.${ClassName}Vo;
import ${packageName}.domain.${subClassName}; import ${packageName}.domain.${ClassName};
#end import ${packageName}.mapper.${ClassName}Mapper;
import ${packageName}.mapper.${ClassName}Mapper; import ${packageName}.service.I${ClassName}Service;
import ${packageName}.domain.${ClassName};
import ${packageName}.service.I${ClassName}Service; import java.util.List;
import java.util.Map;
/** import java.util.Collection;
* ${functionName}Service业务层处理
* /**
* @author ${author} * ${functionName}Service业务层处理
* @date ${datetime} *
*/ * @author ${author}
@Service * @date ${datetime}
public class ${ClassName}ServiceImpl implements I${ClassName}Service */
{ @RequiredArgsConstructor
@Autowired @Service
private ${ClassName}Mapper ${className}Mapper; public class ${ClassName}ServiceImpl implements I${ClassName}Service {
/** private final ${ClassName}Mapper baseMapper;
* 查询${functionName}
* /**
* @param ${pkColumn.javaField} ${functionName}主键 * 查询${functionName}
* @return ${functionName} *
*/ * @param ${pkColumn.javaField} ${functionName}主键
@Override * @return ${functionName}
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) */
{ @Override
return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}); public ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}){
} return baseMapper.selectVoById(${pkColumn.javaField});
}
/**
* 查询${functionName}列表 #if($table.crud || $table.sub)
* /**
* @param ${className} ${functionName} * 查询${functionName}列表
* @return ${functionName} *
*/ * @param ${className} ${functionName}
@Override * @return ${functionName}
public List<${ClassName}> select${ClassName}List(${ClassName} ${className}) */
{ @Override
return ${className}Mapper.select${ClassName}List(${className}); public TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery) {
} LambdaQueryWrapper<${ClassName}> lqw = buildQueryWrapper(bo);
Page<${ClassName}Vo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
/** return TableDataInfo.build(result);
* 新增${functionName} }
* #end
* @param ${className} ${functionName}
* @return 结果 /**
*/ * 查询${functionName}列表
#if($table.sub) *
@Transactional * @param ${className} ${functionName}
#end * @return ${functionName}
@Override */
public int insert${ClassName}(${ClassName} ${className}) @Override
{ public List<${ClassName}Vo> queryList(${ClassName}Bo bo) {
#foreach ($column in $columns) LambdaQueryWrapper<${ClassName}> lqw = buildQueryWrapper(bo);
#if($column.javaField == 'createTime') return baseMapper.selectVoList(lqw);
${className}.setCreateTime(DateUtils.getNowDate()); }
#end
#end private LambdaQueryWrapper<${ClassName}> buildQueryWrapper(${ClassName}Bo bo) {
#if($table.sub) Map<String, Object> params = bo.getParams();
int rows = ${className}Mapper.insert${ClassName}(${className}); LambdaQueryWrapper<${ClassName}> lqw = Wrappers.lambdaQuery();
insert${subClassName}(${className}); #foreach($column in $columns)
return rows; #if($column.query)
#else #set($queryType=$column.queryType)
return ${className}Mapper.insert${ClassName}(${className}); #set($javaField=$column.javaField)
#end #set($javaType=$column.javaType)
} #set($columnName=$column.columnName)
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
/** #set($mpMethod=$column.queryType.toLowerCase())
* 修改${functionName} #if($queryType != 'BETWEEN')
* #if($javaType == 'String')
* @param ${className} ${functionName} #set($condition='StringUtils.isNotBlank(bo.get'+$AttrName+'())')
* @return 结果 #else
*/ #set($condition='bo.get'+$AttrName+'() != null')
#if($table.sub) #end
@Transactional lqw.$mpMethod($condition, ${ClassName}::get$AttrName, bo.get$AttrName());
#end #else
@Override lqw.between(params.get("begin$AttrName") != null && params.get("end$AttrName") != null,
public int update${ClassName}(${ClassName} ${className}) ${ClassName}::get$AttrName ,params.get("begin$AttrName"), params.get("end$AttrName"));
{ #end
#foreach ($column in $columns) #end
#if($column.javaField == 'updateTime') #end
${className}.setUpdateTime(DateUtils.getNowDate()); return lqw;
#end }
#end
#if($table.sub) /**
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}()); * 新增${functionName}
insert${subClassName}(${className}); *
#end * @param ${className} ${functionName}
return ${className}Mapper.update${ClassName}(${className}); * @return 结果
} */
@Override
/** public Boolean insertByBo(${ClassName}Bo bo) {
* 批量删除${functionName} ${ClassName} add = BeanUtil.toBean(bo, ${ClassName}.class);
* validEntityBeforeSave(add);
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键 boolean flag = baseMapper.insert(add) > 0;
* @return 结果 #set($pk=$pkColumn.javaField.substring(0,1).toUpperCase() + ${pkColumn.javaField.substring(1)})
*/ if (flag) {
#if($table.sub) bo.set$pk(add.get$pk());
@Transactional }
#end return flag;
@Override }
public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s)
{ /**
#if($table.sub) * 修改${functionName}
${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s); *
#end * @param ${className} ${functionName}
return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s); * @return 结果
} */
@Override
/** public Boolean updateByBo(${ClassName}Bo bo) {
* 删除${functionName}信息 ${ClassName} update = BeanUtil.toBean(bo, ${ClassName}.class);
* validEntityBeforeSave(update);
* @param ${pkColumn.javaField} ${functionName}主键 return baseMapper.updateById(update) > 0;
* @return 结果 }
*/
#if($table.sub) /**
@Transactional * 保存前的数据校验
#end *
@Override * @param entity 实体类数据
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) */
{ private void validEntityBeforeSave(${ClassName} entity){
#if($table.sub) //TODO 做一些数据校验,如唯一约束
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField}); }
#end
return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}); /**
} * 批量删除${functionName}
#if($table.sub) *
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键
/** * @return 结果
* 新增${subTable.functionName}信息 */
* @Override
* @param ${className} ${functionName}对象 public Boolean deleteWithValidByIds(Collection<${pkColumn.javaType}> ids, Boolean isValid) {
*/ if(isValid){
public void insert${subClassName}(${ClassName} ${className}) //TODO 做一些业务上的校验,判断是否需要校验
{ }
List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List(); return baseMapper.deleteBatchIds(ids) > 0;
${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}(); }
if (StringUtils.isNotNull(${subclassName}List)) }
{
List<${subClassName}> list = new ArrayList<${subClassName}>();
for (${subClassName} ${subclassName} : ${subclassName}List)
{
${subclassName}.set${subTableFkClassName}(${pkColumn.javaField});
list.add(${subclassName});
}
if (list.size() > 0)
{
${className}Mapper.batch${subClassName}(list);
}
}
}
#end
}

@ -0,0 +1,56 @@
package ${packageName}.domain.vo;
#foreach ($import in $importList)
import ${import};
#end
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.excel.annotation.ExcelDictFormat;
import com.ruoyi.common.excel.convert.ExcelDictConvert;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* ${functionName}视图对象 ${tableName}
*
* @author ${author}
* @date ${datetime}
*/
@Data
@ApiModel("${functionName}视图对象")
@ExcelIgnoreUnannotated
public class ${ClassName}Vo {
private static final long serialVersionUID = 1L;
#foreach ($column in $columns)
#if($column.isList)
/**
* $column.columnComment
*/
#set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if(${column.dictType} && ${column.dictType} != '')
@ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "${column.dictType}")
#elseif($parentheseIndex != -1)
@ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "$column.readConverterExp()")
#else
@ExcelProperty(value = "${comment}")
#end
@ApiModelProperty("$column.columnComment")
private $column.javaType $column.javaField;
#end
#end
}

@ -1,482 +1,493 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
#foreach($column in $columns) #foreach($column in $columns)
#if($column.query) #if($column.query)
#set($dictType=$column.dictType) #set($dictType=$column.dictType)
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#set($parentheseIndex=$column.columnComment.indexOf("")) #set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1) #if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex)) #set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else #else
#set($comment=$column.columnComment) #set($comment=$column.columnComment)
#end #end
#if($column.htmlType == "input") #if($column.htmlType == "input" || $column.htmlType == "textarea")
<el-form-item label="${comment}" prop="${column.javaField}"> <el-form-item label="${comment}" prop="${column.javaField}">
<el-input <el-input
v-model="queryParams.${column.javaField}" v-model="queryParams.${column.javaField}"
placeholder="请输入${comment}" placeholder="请输入${comment}"
clearable clearable
size="small" size="small"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType) #elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType)
<el-form-item label="${comment}" prop="${column.javaField}"> <el-form-item label="${comment}" prop="${column.javaField}">
<el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable size="small"> <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable size="small">
<el-option <el-option
v-for="dict in dict.type.${dictType}" v-for="dict in dict.type.${dictType}"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="dict.value" :value="dict.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && $dictType) #elseif(($column.htmlType == "select" || $column.htmlType == "radio") && $dictType)
<el-form-item label="${comment}" prop="${column.javaField}"> <el-form-item label="${comment}" prop="${column.javaField}">
<el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable size="small"> <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable size="small">
<el-option label="请选择字典生成" value="" /> <el-option label="请选择字典生成" value="" />
</el-select> </el-select>
</el-form-item> </el-form-item>
#elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN") #elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN")
<el-form-item label="${comment}" prop="${column.javaField}"> <el-form-item label="${comment}" prop="${column.javaField}">
<el-date-picker clearable size="small" <el-date-picker clearable size="small"
v-model="queryParams.${column.javaField}" v-model="queryParams.${column.javaField}"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="选择${comment}"> placeholder="选择${comment}">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
#elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN") #elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
<el-form-item label="${comment}"> <el-form-item label="${comment}">
<el-date-picker <el-date-picker
v-model="daterange${AttrName}" v-model="daterange${AttrName}"
size="small" size="small"
style="width: 240px" style="width: 240px"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
type="daterange" type="daterange"
range-separator="-" range-separator="-"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
></el-date-picker> ></el-date-picker>
</el-form-item> </el-form-item>
#end #end
#end #end
#end #end
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="primary" type="primary"
plain plain
icon="el-icon-plus" icon="el-icon-plus"
size="mini" size="mini"
@click="handleAdd" @click="handleAdd"
v-hasPermi="['${moduleName}:${businessName}:add']" v-hasPermi="['${moduleName}:${businessName}:add']"
>新增</el-button> >新增</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table <el-table
v-loading="loading" v-loading="loading"
:data="${businessName}List" :data="${businessName}List"
row-key="${treeCode}" row-key="${treeCode}"
default-expand-all default-expand-all
:tree-props="{children: 'children', hasChildren: 'hasChildren'}" :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
> >
#foreach($column in $columns) #foreach($column in $columns)
#set($javaField=$column.javaField) #set($javaField=$column.javaField)
#set($parentheseIndex=$column.columnComment.indexOf("")) #set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1) #if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex)) #set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else #else
#set($comment=$column.columnComment) #set($comment=$column.columnComment)
#end #end
#if($column.pk) #if($column.pk)
#elseif($column.list && $column.htmlType == "datetime") #elseif($column.list && $column.htmlType == "datetime")
<el-table-column label="${comment}" align="center" prop="${javaField}" width="180"> <el-table-column label="${comment}" align="center" prop="${javaField}" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.${javaField}, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.${javaField}, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
#elseif($column.list && $column.htmlType == "imageUpload") #elseif($column.list && $column.htmlType == "imageUpload")
<el-table-column label="${comment}" align="center" prop="${javaField}" width="100"> <el-table-column label="${comment}" align="center" prop="${javaField}" width="100">
<template slot-scope="scope"> <template #default="scope">
<image-preview :src="scope.row.${javaField}" :width="50" :height="50"/> <image-preview :src="scope.row.${javaField}" :width="50" :height="50"/>
</template> </template>
</el-table-column> </el-table-column>
#elseif($column.list && "" != $column.dictType) #elseif($column.list && $column.dictType && "" != $column.dictType)
<el-table-column label="${comment}" align="center" prop="${javaField}"> <el-table-column label="${comment}" align="center" prop="${javaField}">
<template slot-scope="scope"> <template slot-scope="scope">
#if($column.htmlType == "checkbox") #if($column.htmlType == "checkbox")
<dict-tag :options="dict.type.${column.dictType}" :value="scope.row.${javaField} ? scope.row.${javaField}.split(',') : []"/> <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.${javaField} ? scope.row.${javaField}.split(',') : []"/>
#else #else
<dict-tag :options="dict.type.${column.dictType}" :value="scope.row.${javaField}"/> <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.${javaField}"/>
#end #end
</template> </template>
</el-table-column> </el-table-column>
#elseif($column.list && "" != $javaField) #elseif($column.list && "" != $javaField)
#if(${foreach.index} == 1) #if(${foreach.index} == 1)
<el-table-column label="${comment}" prop="${javaField}" /> <el-table-column label="${comment}" prop="${javaField}" />
#else #else
<el-table-column label="${comment}" align="center" prop="${javaField}" /> <el-table-column label="${comment}" align="center" prop="${javaField}" />
#end #end
#end #end
#end #end
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['${moduleName}:${businessName}:edit']" v-hasPermi="['${moduleName}:${businessName}:edit']"
>修改</el-button> >修改</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-plus" icon="el-icon-plus"
@click="handleAdd(scope.row)" @click="handleAdd(scope.row)"
v-hasPermi="['${moduleName}:${businessName}:add']" v-hasPermi="['${moduleName}:${businessName}:add']"
>新增</el-button> >新增</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-delete" icon="el-icon-delete"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['${moduleName}:${businessName}:remove']" v-hasPermi="['${moduleName}:${businessName}:remove']"
>删除</el-button> >删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 添加或修改${functionName}对话框 --> <!-- 添加或修改${functionName}对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
#foreach($column in $columns) #foreach($column in $columns)
#set($field=$column.javaField) #set($field=$column.javaField)
#if($column.insert && !$column.pk) #if($column.insert && !$column.pk)
#if(($column.usableColumn) || (!$column.superColumn)) #set($parentheseIndex=$column.columnComment.indexOf(""))
#set($parentheseIndex=$column.columnComment.indexOf("")) #if($parentheseIndex != -1)
#if($parentheseIndex != -1) #set($comment=$column.columnComment.substring(0, $parentheseIndex))
#set($comment=$column.columnComment.substring(0, $parentheseIndex)) #else
#else #set($comment=$column.columnComment)
#set($comment=$column.columnComment) #end
#end #set($dictType=$column.dictType)
#set($dictType=$column.dictType) #if("" != $treeParentCode && $column.javaField == $treeParentCode)
#if("" != $treeParentCode && $column.javaField == $treeParentCode) <el-form-item label="${comment}" prop="${treeParentCode}">
<el-form-item label="${comment}" prop="${treeParentCode}"> <treeselect v-model="form.${treeParentCode}" :options="${businessName}Options" :normalizer="normalizer" placeholder="请选择${comment}" />
<treeselect v-model="form.${treeParentCode}" :options="${businessName}Options" :normalizer="normalizer" placeholder="请选择${comment}" /> </el-form-item>
</el-form-item> #elseif($column.htmlType == "input")
#elseif($column.htmlType == "input") <el-form-item label="${comment}" prop="${field}">
<el-form-item label="${comment}" prop="${field}"> <el-input v-model="form.${field}" placeholder="请输入${comment}" />
<el-input v-model="form.${field}" placeholder="请输入${comment}" /> </el-form-item>
</el-form-item> #elseif($column.htmlType == "imageUpload")
#elseif($column.htmlType == "imageUpload") <el-form-item label="${comment}">
<el-form-item label="${comment}"> <image-upload v-model="form.${field}"/>
<image-upload v-model="form.${field}"/> </el-form-item>
</el-form-item> #elseif($column.htmlType == "fileUpload")
#elseif($column.htmlType == "fileUpload") <el-form-item label="${comment}">
<el-form-item label="${comment}"> <file-upload v-model="form.${field}"/>
<file-upload v-model="form.${field}"/> </el-form-item>
</el-form-item> #elseif($column.htmlType == "editor")
#elseif($column.htmlType == "editor") <el-form-item label="${comment}">
<el-form-item label="${comment}"> <editor v-model="form.${field}" :min-height="192"/>
<editor v-model="form.${field}" :min-height="192"/> </el-form-item>
</el-form-item> #elseif($column.htmlType == "select" && "" != $dictType)
#elseif($column.htmlType == "select" && "" != $dictType) <el-form-item label="${comment}" prop="${field}">
<el-form-item label="${comment}" prop="${field}"> <el-select v-model="form.${field}" placeholder="请选择${comment}">
<el-select v-model="form.${field}" placeholder="请选择${comment}"> <el-option
<el-option v-for="dict in dict.type.${dictType}"
v-for="dict in dict.type.${dictType}" :key="dict.value"
:key="dict.value" :label="dict.label"
:label="dict.label" #if($column.javaType == "Integer" || $column.javaType == "Long"):value="parseInt(dict.value)"#else:value="dict.value"#end
#if($column.javaType == "Integer" || $column.javaType == "Long"):value="parseInt(dict.value)"#else:value="dict.value"#end
></el-option>
></el-option> </el-select>
</el-select> </el-form-item>
</el-form-item> #elseif($column.htmlType == "select" && $dictType)
#elseif($column.htmlType == "select" && $dictType) <el-form-item label="${comment}" prop="${field}">
<el-form-item label="${comment}" prop="${field}"> <el-select v-model="form.${field}" placeholder="请选择${comment}">
<el-select v-model="form.${field}" placeholder="请选择${comment}"> <el-option label="请选择字典生成" value="" />
<el-option label="请选择字典生成" value="" /> </el-select>
</el-select> </el-form-item>
</el-form-item> #elseif($column.htmlType == "checkbox" && "" != $dictType)
#elseif($column.htmlType == "checkbox" && "" != $dictType) <el-form-item label="${comment}">
<el-form-item label="${comment}"> <el-checkbox-group v-model="form.${field}">
<el-checkbox-group v-model="form.${field}"> <el-checkbox
<el-checkbox v-for="dict in dict.type.${dictType}"
v-for="dict in dict.type.${dictType}" :key="dict.value"
:key="dict.value" :label="dict.value">
:label="dict.value"> {{dict.label}}
{{dict.label}} </el-checkbox>
</el-checkbox> </el-checkbox-group>
</el-checkbox-group> </el-form-item>
</el-form-item> #elseif($column.htmlType == "checkbox" && $dictType)
#elseif($column.htmlType == "checkbox" && $dictType) <el-form-item label="${comment}">
<el-form-item label="${comment}"> <el-checkbox-group v-model="form.${field}">
<el-checkbox-group v-model="form.${field}"> <el-checkbox>请选择字典生成</el-checkbox>
<el-checkbox>请选择字典生成</el-checkbox> </el-checkbox-group>
</el-checkbox-group> </el-form-item>
</el-form-item> #elseif($column.htmlType == "radio" && "" != $dictType)
#elseif($column.htmlType == "radio" && "" != $dictType) <el-form-item label="${comment}">
<el-form-item label="${comment}"> <el-radio-group v-model="form.${field}">
<el-radio-group v-model="form.${field}"> <el-radio
<el-radio v-for="dict in dict.type.${dictType}"
v-for="dict in dict.type.${dictType}" :key="dict.value"
:key="dict.value" #if($column.javaType == "Integer" || $column.javaType == "Long"):label="parseInt(dict.value)"#else:label="dict.value"#end
#if($column.javaType == "Integer" || $column.javaType == "Long"):label="parseInt(dict.value)"#else:label="dict.value"#end
>{{dict.label}}</el-radio>
>{{dict.label}}</el-radio> </el-radio-group>
</el-radio-group> </el-form-item>
</el-form-item> #elseif($column.htmlType == "radio" && $dictType)
#elseif($column.htmlType == "radio" && $dictType) <el-form-item label="${comment}">
<el-form-item label="${comment}"> <el-radio-group v-model="form.${field}">
<el-radio-group v-model="form.${field}"> <el-radio label="1">请选择字典生成</el-radio>
<el-radio label="1">请选择字典生成</el-radio> </el-radio-group>
</el-radio-group> </el-form-item>
</el-form-item> #elseif($column.htmlType == "datetime")
#elseif($column.htmlType == "datetime") <el-form-item label="${comment}" prop="${field}">
<el-form-item label="${comment}" prop="${field}"> <el-date-picker clearable size="small"
<el-date-picker clearable size="small" v-model="form.${field}"
v-model="form.${field}" type="datetime"
type="date" value-format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd" placeholder="选择${comment}">
placeholder="选择${comment}"> </el-date-picker>
</el-date-picker> </el-form-item>
</el-form-item> #elseif($column.htmlType == "textarea")
#elseif($column.htmlType == "textarea") <el-form-item label="${comment}" prop="${field}">
<el-form-item label="${comment}" prop="${field}"> <el-input v-model="form.${field}" type="textarea" placeholder="请输入内容" />
<el-input v-model="form.${field}" type="textarea" placeholder="请输入内容" /> </el-form-item>
</el-form-item> #end
#end #end
#end #end
#end </el-form>
#end <div slot="footer" class="dialog-footer">
</el-form> <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
<div slot="footer" class="dialog-footer"> <el-button @click="cancel">取 消</el-button>
<el-button type="primary" @click="submitForm">确 定</el-button> </div>
<el-button @click="cancel">取 消</el-button> </el-dialog>
</div> </div>
</el-dialog> </template>
</div>
</template> <script>
import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName} } from "@/api/${moduleName}/${businessName}";
<script> import Treeselect from "@riophae/vue-treeselect";
import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName} } from "@/api/${moduleName}/${businessName}"; import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css"; export default {
name: "${BusinessName}",
export default { #if(${dicts} != '')
name: "${BusinessName}", dicts: [${dicts}],
#if(${dicts} != '') #end
dicts: [${dicts}], components: {
#end Treeselect
components: { },
Treeselect data() {
}, return {
data() { // 按钮loading
return { buttonLoading: false,
// 遮罩层 // 遮罩层
loading: true, loading: true,
// 显示搜索条件 // 显示搜索条件
showSearch: true, showSearch: true,
// ${functionName}表格数据 // ${functionName}表格数据
${businessName}List: [], ${businessName}List: [],
// ${functionName}树选项 // ${functionName}树选项
${businessName}Options: [], ${businessName}Options: [],
// 弹出层标题 // 弹出层标题
title: "", title: "",
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") #if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
// $comment时间范围 // $comment时间范围
daterange${AttrName}: [], daterange${AttrName}: [],
#end #end
#end #end
// 查询参数 // 查询参数
queryParams: { queryParams: {
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.query) #if($column.query)
$column.javaField: null#if($foreach.count != $columns.size()),#end $column.javaField: null#if($foreach.count != $columns.size()),#end
#end #end
#end #end
}, },
// 表单参数 // 表单参数
form: {}, form: {},
// 表单校验 // 表单校验
rules: { rules: {
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.required) #if($column.required)
#set($parentheseIndex=$column.columnComment.indexOf("")) #set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1) #if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex)) #set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else #else
#set($comment=$column.columnComment) #set($comment=$column.columnComment)
#end #end
$column.javaField: [ $column.javaField: [
{ required: true, message: "$comment不能为空", trigger: #if($column.htmlType == "select")"change"#else"blur"#end } { required: true, message: "$comment不能为空", trigger: #if($column.htmlType == "select")"change"#else"blur"#end }
]#if($foreach.count != $columns.size()),#end ]#if($foreach.count != $columns.size()),#end
#end #end
#end #end
} }
}; };
}, },
created() { created() {
this.getList(); this.getList();
}, },
methods: { methods: {
/** 查询${functionName}列表 */ /** 查询${functionName}列表 */
getList() { getList() {
this.loading = true; this.loading = true;
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") #if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
this.queryParams.params = {}; this.queryParams.params = {};
#break #break
#end #end
#end #end
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") #if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
if (null != this.daterange${AttrName} && '' != this.daterange${AttrName}) { if (null != this.daterange${AttrName} && '' != this.daterange${AttrName}) {
this.queryParams.params["begin${AttrName}"] = this.daterange${AttrName}[0]; this.queryParams.params["begin${AttrName}"] = this.daterange${AttrName}[0];
this.queryParams.params["end${AttrName}"] = this.daterange${AttrName}[1]; this.queryParams.params["end${AttrName}"] = this.daterange${AttrName}[1];
} }
#end #end
#end #end
list${BusinessName}(this.queryParams).then(response => { list${BusinessName}(this.queryParams).then(response => {
this.${businessName}List = this.handleTree(response.data, "${treeCode}", "${treeParentCode}"); this.${businessName}List = this.handleTree(response.data, "${treeCode}", "${treeParentCode}");
this.loading = false; this.loading = false;
}); });
}, },
/** 转换${functionName}数据结构 */ /** 转换${functionName}数据结构 */
normalizer(node) { normalizer(node) {
if (node.children && !node.children.length) { if (node.children && !node.children.length) {
delete node.children; delete node.children;
} }
return { return {
id: node.${treeCode}, id: node.${treeCode},
label: node.${treeName}, label: node.${treeName},
children: node.children children: node.children
}; };
}, },
/** 查询${functionName}下拉树结构 */ /** 查询${functionName}下拉树结构 */
getTreeselect() { getTreeselect() {
list${BusinessName}().then(response => { list${BusinessName}().then(response => {
this.${businessName}Options = []; this.${businessName}Options = [];
const data = { ${treeCode}: 0, ${treeName}: '顶级节点', children: [] }; const data = { ${treeCode}: 0, ${treeName}: '顶级节点', children: [] };
data.children = this.handleTree(response.data, "${treeCode}", "${treeParentCode}"); data.children = this.handleTree(response.data, "${treeCode}", "${treeParentCode}");
this.${businessName}Options.push(data); this.${businessName}Options.push(data);
}); });
}, },
// 取消按钮 // 取消按钮
cancel() { cancel() {
this.open = false; this.open = false;
this.reset(); this.reset();
}, },
// 表单重置 // 表单重置
reset() { reset() {
this.form = { this.form = {
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.htmlType == "radio") #if($column.htmlType == "radio")
$column.javaField: #if($column.javaType == "Integer" || $column.javaType == "Long")0#else"0"#end#if($foreach.count != $columns.size()),#end $column.javaField: #if($column.javaType == "Integer" || $column.javaType == "Long")0#else"0"#end#if($foreach.count != $columns.size()),#end
#elseif($column.htmlType == "checkbox") #elseif($column.htmlType == "checkbox")
$column.javaField: []#if($foreach.count != $columns.size()),#end $column.javaField: []#if($foreach.count != $columns.size()),#end
#else #else
$column.javaField: null#if($foreach.count != $columns.size()),#end $column.javaField: null#if($foreach.count != $columns.size()),#end
#end #end
#end #end
}; };
this.resetForm("form"); this.resetForm("form");
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.getList(); this.getList();
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") #if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
this.daterange${AttrName} = []; this.daterange${AttrName} = [];
#end #end
#end #end
this.resetForm("queryForm"); this.resetForm("queryForm");
this.handleQuery(); this.handleQuery();
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd(row) { handleAdd(row) {
this.reset(); this.reset();
this.getTreeselect(); this.getTreeselect();
if (row != null && row.${treeCode}) { if (row != null && row.${treeCode}) {
this.form.${treeParentCode} = row.${treeCode}; this.form.${treeParentCode} = row.${treeCode};
} else { } else {
this.form.${treeParentCode} = 0; this.form.${treeParentCode} = 0;
} }
this.open = true; this.open = true;
this.title = "添加${functionName}"; this.title = "添加${functionName}";
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.loading = true;
this.getTreeselect(); this.reset();
if (row != null) { this.getTreeselect();
this.form.${treeParentCode} = row.${treeCode}; if (row != null) {
} this.form.${treeParentCode} = row.${treeCode};
get${BusinessName}(row.${pkColumn.javaField}).then(response => { }
this.form = response.data; get${BusinessName}(row.${pkColumn.javaField}).then(response => {
#foreach ($column in $columns) this.loading = false;
#if($column.htmlType == "checkbox") this.form = response.data;
this.form.$column.javaField = this.form.${column.javaField}.split(","); #foreach ($column in $columns)
#end #if($column.htmlType == "checkbox")
#end this.form.$column.javaField = this.form.${column.javaField}.split(",");
this.open = true; #end
this.title = "修改${functionName}"; #end
}); this.open = true;
}, this.title = "修改${functionName}";
/** 提交按钮 */ });
submitForm() { },
this.#[[$]]#refs["form"].validate(valid => { /** 提交按钮 */
if (valid) { submitForm() {
#foreach ($column in $columns) this.#[[$]]#refs["form"].validate(valid => {
#if($column.htmlType == "checkbox") if (valid) {
this.form.$column.javaField = this.form.${column.javaField}.join(","); this.buttonLoading = true;
#end #foreach ($column in $columns)
#end #if($column.htmlType == "checkbox")
if (this.form.${pkColumn.javaField} != null) { this.form.$column.javaField = this.form.${column.javaField}.join(",");
update${BusinessName}(this.form).then(response => { #end
this.#[[$modal]]#.msgSuccess("修改成功"); #end
this.open = false; if (this.form.${pkColumn.javaField} != null) {
this.getList(); update${BusinessName}(this.form).then(response => {
}); this.#[[$modal]]#.msgSuccess("修改成功");
} else { this.open = false;
add${BusinessName}(this.form).then(response => { this.getList();
this.#[[$modal]]#.msgSuccess("新增成功"); }).finally(() => {
this.open = false; this.buttonLoading = false;
this.getList(); });
}); } else {
} add${BusinessName}(this.form).then(response => {
} this.#[[$modal]]#.msgSuccess("新增成功");
}); this.open = false;
}, this.getList();
/** 删除按钮操作 */ }).finally(() => {
handleDelete(row) { this.buttonLoading = false;
this.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + row.${pkColumn.javaField} + '"的数据项?').then(function() { });
return del${BusinessName}(row.${pkColumn.javaField}); }
}).then(() => { }
this.getList(); });
this.#[[$modal]]#.msgSuccess("删除成功"); },
}).catch(() => {}); /** 删除按钮操作 */
} handleDelete(row) {
} this.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + row.${pkColumn.javaField} + '"的数据项?').then(() => {
}; this.loading = true;
</script> return del${BusinessName}(row.${pkColumn.javaField});
}).then(() => {
this.loading = false;
this.getList();
this.#[[$modal]]#.msgSuccess("删除成功");
}).finally(() => {
this.loading = false;
});
}
}
};
</script>

@ -11,7 +11,7 @@
#else #else
#set($comment=$column.columnComment) #set($comment=$column.columnComment)
#end #end
#if($column.htmlType == "input") #if($column.htmlType == "input" || $column.htmlType == "textarea")
<el-form-item label="${comment}" prop="${column.javaField}"> <el-form-item label="${comment}" prop="${column.javaField}">
<el-input <el-input
v-model="queryParams.${column.javaField}" v-model="queryParams.${column.javaField}"
@ -103,11 +103,11 @@
</el-table-column> </el-table-column>
#elseif($column.list && $column.htmlType == "imageUpload") #elseif($column.list && $column.htmlType == "imageUpload")
<el-table-column label="${comment}" align="center" prop="${javaField}" width="100"> <el-table-column label="${comment}" align="center" prop="${javaField}" width="100">
<template #default="scope"> <template #default="scope">
<image-preview :src="scope.row.${javaField}" :width="50" :height="50"/> <image-preview :src="scope.row.${javaField}" :width="50" :height="50"/>
</template> </template>
</el-table-column> </el-table-column>
#elseif($column.list && "" != $column.dictType) #elseif($column.list && $column.dictType && "" != $column.dictType)
<el-table-column label="${comment}" align="center" prop="${javaField}"> <el-table-column label="${comment}" align="center" prop="${javaField}">
<template #default="scope"> <template #default="scope">
#if($column.htmlType == "checkbox") #if($column.htmlType == "checkbox")
@ -155,7 +155,6 @@
#foreach($column in $columns) #foreach($column in $columns)
#set($field=$column.javaField) #set($field=$column.javaField)
#if($column.insert && !$column.pk) #if($column.insert && !$column.pk)
#if(($column.usableColumn) || (!$column.superColumn))
#set($parentheseIndex=$column.columnComment.indexOf("")) #set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1) #if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex)) #set($comment=$column.columnComment.substring(0, $parentheseIndex))
@ -244,8 +243,8 @@
<el-form-item label="${comment}" prop="${field}"> <el-form-item label="${comment}" prop="${field}">
<el-date-picker clearable <el-date-picker clearable
v-model="form.${field}" v-model="form.${field}"
type="date" type="datetime"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss"
placeholder="选择${comment}"> placeholder="选择${comment}">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
@ -255,7 +254,6 @@
</el-form-item> </el-form-item>
#end #end
#end #end
#end
#end #end
</el-form> </el-form>
<template #footer> <template #footer>
@ -280,6 +278,7 @@ const { ${dictsNoSymbol} } = proxy.useDict(${dicts});
const ${businessName}List = ref([]); const ${businessName}List = ref([]);
const ${businessName}Options = ref([]); const ${businessName}Options = ref([]);
const open = ref(false); const open = ref(false);
const buttonLoading = ref(false);
const loading = ref(true); const loading = ref(true);
const showSearch = ref(true); const showSearch = ref(true);
const title = ref(""); const title = ref("");
@ -293,14 +292,14 @@ const daterange${AttrName} = ref([]);
const data = reactive({ const data = reactive({
form: {}, form: {},
queryParams: { queryParams: {
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.query) #if($column.query)
$column.javaField: null#if($foreach.count != $columns.size()),#end $column.javaField: undefined#if($foreach.count != $columns.size()),#end
#end #end
#end #end
}, },
rules: { rules: {
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.required) #if($column.required)
#set($parentheseIndex=$column.columnComment.indexOf("")) #set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1) #if($parentheseIndex != -1)
@ -351,7 +350,7 @@ async function getTreeselect() {
${businessName}Options.value.push(data); ${businessName}Options.value.push(data);
}); });
} }
// 取消按钮 // 取消按钮
function cancel() { function cancel() {
open.value = false; open.value = false;
@ -407,12 +406,14 @@ async function handleAdd(row) {
/** 修改按钮操作 */ /** 修改按钮操作 */
async function handleUpdate(row) { async function handleUpdate(row) {
loading.value = true;
reset(); reset();
await getTreeselect(); await getTreeselect();
if (row != null) { if (row != null) {
form.value.${treeParentCode} = row.${treeCode}; form.value.${treeParentCode} = row.${treeCode};
} }
get${BusinessName}(row.${pkColumn.javaField}).then(response => { get${BusinessName}(row.${pkColumn.javaField}).then(response => {
loading.value = false;
form.value = response.data; form.value = response.data;
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.htmlType == "checkbox") #if($column.htmlType == "checkbox")
@ -428,6 +429,7 @@ async function handleUpdate(row) {
function submitForm() { function submitForm() {
proxy.#[[$]]#refs["${businessName}Ref"].validate(valid => { proxy.#[[$]]#refs["${businessName}Ref"].validate(valid => {
if (valid) { if (valid) {
buttonLoading.value = true;
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.htmlType == "checkbox") #if($column.htmlType == "checkbox")
form.value.$column.javaField = form.value.${column.javaField}.join(","); form.value.$column.javaField = form.value.${column.javaField}.join(",");
@ -438,12 +440,16 @@ function submitForm() {
proxy.#[[$modal]]#.msgSuccess("修改成功"); proxy.#[[$modal]]#.msgSuccess("修改成功");
open.value = false; open.value = false;
getList(); getList();
}).finally(() => {
buttonLoading.value = false;
}); });
} else { } else {
add${BusinessName}(form.value).then(response => { add${BusinessName}(form.value).then(response => {
proxy.#[[$modal]]#.msgSuccess("新增成功"); proxy.#[[$modal]]#.msgSuccess("新增成功");
open.value = false; open.value = false;
getList(); getList();
}).finally(() => {
buttonLoading.value = false;
}); });
} }
} }
@ -453,11 +459,15 @@ function submitForm() {
/** 删除按钮操作 */ /** 删除按钮操作 */
function handleDelete(row) { function handleDelete(row) {
proxy.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + row.${pkColumn.javaField} + '"的数据项?').then(function() { proxy.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + row.${pkColumn.javaField} + '"的数据项?').then(function() {
loading.value = true;
return del${BusinessName}(row.${pkColumn.javaField}); return del${BusinessName}(row.${pkColumn.javaField});
}).then(() => { }).then(() => {
loading.value = false;
getList(); getList();
proxy.#[[$modal]]#.msgSuccess("删除成功"); proxy.#[[$modal]]#.msgSuccess("删除成功");
}).catch(() => {}); }).finally(() => {
loading.value = false;
});
} }
getList(); getList();

@ -11,7 +11,7 @@
#else #else
#set($comment=$column.columnComment) #set($comment=$column.columnComment)
#end #end
#if($column.htmlType == "input") #if($column.htmlType == "input" || $column.htmlType == "textarea")
<el-form-item label="${comment}" prop="${column.javaField}"> <el-form-item label="${comment}" prop="${column.javaField}">
<el-input <el-input
v-model="queryParams.${column.javaField}" v-model="queryParams.${column.javaField}"
@ -119,7 +119,7 @@
#set($comment=$column.columnComment) #set($comment=$column.columnComment)
#end #end
#if($column.pk) #if($column.pk)
<el-table-column label="${comment}" align="center" prop="${javaField}" /> <el-table-column label="${comment}" align="center" prop="${javaField}" v-if="${column.list}"/>
#elseif($column.list && $column.htmlType == "datetime") #elseif($column.list && $column.htmlType == "datetime")
<el-table-column label="${comment}" align="center" prop="${javaField}" width="180"> <el-table-column label="${comment}" align="center" prop="${javaField}" width="180">
<template #default="scope"> <template #default="scope">
@ -128,11 +128,11 @@
</el-table-column> </el-table-column>
#elseif($column.list && $column.htmlType == "imageUpload") #elseif($column.list && $column.htmlType == "imageUpload")
<el-table-column label="${comment}" align="center" prop="${javaField}" width="100"> <el-table-column label="${comment}" align="center" prop="${javaField}" width="100">
<template #default="scope"> <template #default="scope">
<image-preview :src="scope.row.${javaField}" :width="50" :height="50"/> <image-preview :src="scope.row.${javaField}" :width="50" :height="50"/>
</template> </template>
</el-table-column> </el-table-column>
#elseif($column.list && "" != $column.dictType) #elseif($column.list && $column.dictType && "" != $column.dictType)
<el-table-column label="${comment}" align="center" prop="${javaField}"> <el-table-column label="${comment}" align="center" prop="${javaField}">
<template #default="scope"> <template #default="scope">
#if($column.htmlType == "checkbox") #if($column.htmlType == "checkbox")
@ -163,7 +163,7 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total>0" v-show="total>0"
:total="total" :total="total"
@ -178,7 +178,6 @@
#foreach($column in $columns) #foreach($column in $columns)
#set($field=$column.javaField) #set($field=$column.javaField)
#if($column.insert && !$column.pk) #if($column.insert && !$column.pk)
#if(($column.usableColumn) || (!$column.superColumn))
#set($parentheseIndex=$column.columnComment.indexOf("")) #set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1) #if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex)) #set($comment=$column.columnComment.substring(0, $parentheseIndex))
@ -258,8 +257,8 @@
<el-form-item label="${comment}" prop="${field}"> <el-form-item label="${comment}" prop="${field}">
<el-date-picker clearable <el-date-picker clearable
v-model="form.${field}" v-model="form.${field}"
type="date" type="datetime"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss"
placeholder="选择${comment}"> placeholder="选择${comment}">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
@ -270,7 +269,6 @@
#end #end
#end #end
#end #end
#end
#if($table.sub) #if($table.sub)
<el-divider content-position="center">${subTable.functionName}信息</el-divider> <el-divider content-position="center">${subTable.functionName}信息</el-divider>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
@ -306,7 +304,7 @@
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button> <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button> <el-button @click="cancel">取 消</el-button>
</div> </div>
</template> </template>
@ -328,6 +326,7 @@ const ${businessName}List = ref([]);
const ${subclassName}List = ref([]); const ${subclassName}List = ref([]);
#end #end
const open = ref(false); const open = ref(false);
const buttonLoading = ref(false);
const loading = ref(true); const loading = ref(true);
const showSearch = ref(true); const showSearch = ref(true);
const ids = ref([]); const ids = ref([]);
@ -350,14 +349,14 @@ const data = reactive({
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.query) #if($column.query)
$column.javaField: null#if($foreach.count != $columns.size()),#end $column.javaField: undefined#if($foreach.count != $columns.size()),#end
#end #end
#end #end
}, },
rules: { rules: {
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.required) #if($column.required)
#set($parentheseIndex=$column.columnComment.indexOf("")) #set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1) #if($parentheseIndex != -1)
@ -459,9 +458,11 @@ function handleAdd() {
/** 修改按钮操作 */ /** 修改按钮操作 */
function handleUpdate(row) { function handleUpdate(row) {
loading.value = true
reset(); reset();
const ${pkColumn.javaField} = row.${pkColumn.javaField} || ids.value const ${pkColumn.javaField} = row.${pkColumn.javaField} || ids.value
get${BusinessName}(${pkColumn.javaField}).then(response => { get${BusinessName}(${pkColumn.javaField}).then(response => {
loading.value = false;
form.value = response.data; form.value = response.data;
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.htmlType == "checkbox") #if($column.htmlType == "checkbox")
@ -480,6 +481,7 @@ function handleUpdate(row) {
function submitForm() { function submitForm() {
proxy.#[[$]]#refs["${businessName}Ref"].validate(valid => { proxy.#[[$]]#refs["${businessName}Ref"].validate(valid => {
if (valid) { if (valid) {
buttonLoading.value = true;
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.htmlType == "checkbox") #if($column.htmlType == "checkbox")
form.value.$column.javaField = form.value.${column.javaField}.join(","); form.value.$column.javaField = form.value.${column.javaField}.join(",");
@ -493,12 +495,16 @@ function submitForm() {
proxy.#[[$modal]]#.msgSuccess("修改成功"); proxy.#[[$modal]]#.msgSuccess("修改成功");
open.value = false; open.value = false;
getList(); getList();
}).finally(() => {
buttonLoading.value = false;
}); });
} else { } else {
add${BusinessName}(form.value).then(response => { add${BusinessName}(form.value).then(response => {
proxy.#[[$modal]]#.msgSuccess("新增成功"); proxy.#[[$modal]]#.msgSuccess("新增成功");
open.value = false; open.value = false;
getList(); getList();
}).finally(() => {
buttonLoading.value = false;
}); });
} }
} }
@ -509,11 +515,15 @@ function submitForm() {
function handleDelete(row) { function handleDelete(row) {
const ${pkColumn.javaField}s = row.${pkColumn.javaField} || ids.value; const ${pkColumn.javaField}s = row.${pkColumn.javaField} || ids.value;
proxy.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + ${pkColumn.javaField}s + '"的数据项?').then(function() { proxy.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + ${pkColumn.javaField}s + '"的数据项?').then(function() {
loading.value = true;
return del${BusinessName}(${pkColumn.javaField}s); return del${BusinessName}(${pkColumn.javaField}s);
}).then(() => { }).then(() => {
loading.value = true;
getList(); getList();
proxy.#[[$modal]]#.msgSuccess("删除成功"); proxy.#[[$modal]]#.msgSuccess("删除成功");
}).catch(() => {}); }).finally(() => {
loading.value = false;
});
} }
#if($table.sub) #if($table.sub)

@ -1 +1 @@
如果使用的是RuoYi-Cloud-Vue3前端那么需要覆盖一下此目录的模板index.vue.vm、index-tree.vue.vm文件到上级vue目录。 如果使用的是RuoYi-Vue3前端那么需要覆盖一下此目录的模板index.vue.vm、index-tree.vue.vm文件到上级vue目录。

@ -1,135 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${packageName}.mapper.${ClassName}Mapper"> <mapper namespace="${packageName}.mapper.${ClassName}Mapper">
<resultMap type="${ClassName}" id="${ClassName}Result"> <resultMap type="${packageName}.domain.${ClassName}" id="${ClassName}Result">
#foreach ($column in $columns) #foreach ($column in $columns)
<result property="${column.javaField}" column="${column.columnName}" /> <result property="${column.javaField}" column="${column.columnName}"/>
#end #end
</resultMap> </resultMap>
#if($table.sub)
<resultMap id="${ClassName}${subClassName}Result" type="${ClassName}" extends="${ClassName}Result"> </mapper>
<collection property="${subclassName}List" notNullColumn="sub_${subTable.pkColumn.columnName}" javaType="java.util.List" resultMap="${subClassName}Result" />
</resultMap>
<resultMap type="${subClassName}" id="${subClassName}Result">
#foreach ($column in $subTable.columns)
<result property="${column.javaField}" column="sub_${column.columnName}" />
#end
</resultMap>
#end
<sql id="select${ClassName}Vo">
select#foreach($column in $columns) $column.columnName#if($foreach.count != $columns.size()),#end#end from ${tableName}
</sql>
<select id="select${ClassName}List" parameterType="${ClassName}" resultMap="${ClassName}Result">
<include refid="select${ClassName}Vo"/>
<where>
#foreach($column in $columns)
#set($queryType=$column.queryType)
#set($javaField=$column.javaField)
#set($javaType=$column.javaType)
#set($columnName=$column.columnName)
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#if($column.query)
#if($column.queryType == "EQ")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName = #{$javaField}</if>
#elseif($queryType == "NE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName != #{$javaField}</if>
#elseif($queryType == "GT")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &gt; #{$javaField}</if>
#elseif($queryType == "GTE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &gt;= #{$javaField}</if>
#elseif($queryType == "LT")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &lt; #{$javaField}</if>
#elseif($queryType == "LTE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &lt;= #{$javaField}</if>
#elseif($queryType == "LIKE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName like concat('%', #{$javaField}, '%')</if>
#elseif($queryType == "BETWEEN")
<if test="params.begin$AttrName != null and params.begin$AttrName != '' and params.end$AttrName != null and params.end$AttrName != ''"> and $columnName between #{params.begin$AttrName} and #{params.end$AttrName}</if>
#end
#end
#end
</where>
</select>
<select id="select${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}" resultMap="#if($table.sub)${ClassName}${subClassName}Result#else${ClassName}Result#end">
#if($table.crud || $table.tree)
<include refid="select${ClassName}Vo"/>
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
#elseif($table.sub)
select#foreach($column in $columns) a.$column.columnName#if($foreach.count != $columns.size()),#end#end,
#foreach($column in $subTable.columns) b.$column.columnName as sub_$column.columnName#if($foreach.count != $subTable.columns.size()),#end#end
from ${tableName} a
left join ${subTableName} b on b.${subTableFkName} = a.${pkColumn.columnName}
where a.${pkColumn.columnName} = #{${pkColumn.javaField}}
#end
</select>
<insert id="insert${ClassName}" parameterType="${ClassName}"#if($pkColumn.increment) useGeneratedKeys="true" keyProperty="$pkColumn.javaField"#end>
insert into ${tableName}
<trim prefix="(" suffix=")" suffixOverrides=",">
#foreach($column in $columns)
#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName,</if>
#end
#end
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#foreach($column in $columns)
#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">#{$column.javaField},</if>
#end
#end
</trim>
</insert>
<update id="update${ClassName}" parameterType="${ClassName}">
update ${tableName}
<trim prefix="SET" suffixOverrides=",">
#foreach($column in $columns)
#if($column.columnName != $pkColumn.columnName)
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName = #{$column.javaField},</if>
#end
#end
</trim>
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
</update>
<delete id="delete${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}">
delete from ${tableName} where ${pkColumn.columnName} = #{${pkColumn.javaField}}
</delete>
<delete id="delete${ClassName}By${pkColumn.capJavaField}s" parameterType="String">
delete from ${tableName} where ${pkColumn.columnName} in
<foreach item="${pkColumn.javaField}" collection="array" open="(" separator="," close=")">
#{${pkColumn.javaField}}
</foreach>
</delete>
#if($table.sub)
<delete id="delete${subClassName}By${subTableFkClassName}s" parameterType="String">
delete from ${subTableName} where ${subTableFkName} in
<foreach item="${subTableFkclassName}" collection="array" open="(" separator="," close=")">
#{${subTableFkclassName}}
</foreach>
</delete>
<delete id="delete${subClassName}By${subTableFkClassName}" parameterType="${pkColumn.javaType}">
delete from ${subTableName} where ${subTableFkName} = #{${subTableFkclassName}}
</delete>
<insert id="batch${subClassName}">
insert into ${subTableName}(#foreach($column in $subTable.columns) $column.columnName#if($foreach.count != $subTable.columns.size()),#end#end) values
<foreach item="item" index="index" collection="list" separator=",">
(#foreach($column in $subTable.columns) #{item.$column.javaField}#if($foreach.count != $subTable.columns.size()),#end#end)
</foreach>
</insert>
#end
</mapper>

Loading…
Cancel
Save