feat();代码生成器更改

boot3.0
dongzeliang 2025-03-17 22:11:43 +08:00
parent 5c4e7c8f1b
commit 3ab7f9fec8
13 changed files with 442 additions and 419 deletions

View File

@ -1,5 +1,7 @@
package com.muyu.gen.config;
import lombok.Data;
import lombok.Getter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@ -8,17 +10,20 @@ import org.springframework.stereotype.Component;
*
* @author muyu
*/
@Data
@Component
@ConfigurationProperties(prefix = "gen")
public class GenConfig {
/**
*
*/
@Getter
public static String author;
/**
*
*/
@Getter
public static String packageName;
/**
@ -29,37 +34,10 @@ public class GenConfig {
/**
* ()
*/
@Getter
public static String tablePrefix;
public static String getAuthor () {
return author;
}
public void setAuthor (String author) {
GenConfig.author = author;
}
public static String getPackageName () {
return packageName;
}
public void setPackageName (String packageName) {
GenConfig.packageName = packageName;
}
public static boolean getAutoRemovePre () {
return autoRemovePre;
}
public void setAutoRemovePre (boolean autoRemovePre) {
GenConfig.autoRemovePre = autoRemovePre;
}
public static String getTablePrefix () {
return tablePrefix;
}
public void setTablePrefix (String tablePrefix) {
GenConfig.tablePrefix = tablePrefix;
}
}

View File

@ -1,7 +1,8 @@
package com.muyu.gen.service;
package com.muyu.gen.service.impl;
import com.muyu.gen.domain.GenTableColumn;
import com.muyu.gen.mapper.GenTableColumnMapper;
import com.muyu.gen.service.IGenTableColumnService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

View File

@ -1,4 +1,4 @@
package com.muyu.gen.service;
package com.muyu.gen.service.impl;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
@ -12,6 +12,7 @@ import com.muyu.gen.domain.GenTable;
import com.muyu.gen.domain.GenTableColumn;
import com.muyu.gen.mapper.GenTableColumnMapper;
import com.muyu.gen.mapper.GenTableMapper;
import com.muyu.gen.service.IGenTableService;
import com.muyu.gen.util.GenUtils;
import com.muyu.gen.util.VelocityInitializer;
import com.muyu.gen.util.VelocityUtils;

View File

@ -171,16 +171,16 @@ public class GenUtils {
/**
*
*
* @param replacementm
* @param replaceMentm
* @param searchList
*
* @return
*/
public static String replaceFirst (String replacementm, String[] searchList) {
String text = replacementm;
public static String replaceFirst (String replaceMentm, String[] searchList) {
String text = replaceMentm;
for (String searchString : searchList) {
if (replacementm.startsWith(searchString)) {
text = replacementm.replaceFirst(searchString, "");
if (replaceMentm.startsWith(searchString)) {
text = replaceMentm.replaceFirst(searchString, "");
break;
}
}

View File

@ -65,7 +65,7 @@ public class VelocityUtils {
velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName));
velocityContext.put("columns", genTable.getColumns());
velocityContext.put("table", genTable);
velocityContext.put("dicts", getDicts(genTable));
velocityContext.put("dicts", getDictList(genTable));
setMenuVelocityContext(velocityContext, genTable);
if (GenConstants.TPL_TREE.equals(tplCategory)) {
setTreeVelocityContext(velocityContext, genTable);
@ -86,7 +86,7 @@ public class VelocityUtils {
public static void setTreeVelocityContext (VelocityContext context, GenTable genTable) {
String options = genTable.getOptions();
JSONObject paramsObj = JSON.parseObject(options);
String treeCode = getTreecode(paramsObj);
String treeCode = getTreeCode(paramsObj);
String treeParentCode = getTreeParentCode(paramsObj);
String treeName = getTreeName(paramsObj);
@ -125,12 +125,15 @@ public class VelocityUtils {
* @return
*/
public static List<String> getTemplateList (String tplCategory) {
List<String> templates = new ArrayList<>();
List<String> templates = new ArrayList<String>();
templates.add("vm/java/domain.java.vm");
templates.add("vm/java/mapper.java.vm");
templates.add("vm/java/query.java.vm");
templates.add("vm/java/save.java.vm");
templates.add("vm/java/edit.java.vm");
templates.add("vm/java/controller.java.vm");
templates.add("vm/java/service.java.vm");
templates.add("vm/java/serviceImpl.java.vm");
templates.add("vm/java/controller.java.vm");
templates.add("vm/java/mapper.java.vm");
templates.add("vm/xml/mapper.xml.vm");
templates.add("vm/sql/sql.vm");
templates.add("vm/js/api.js.vm");
@ -167,12 +170,19 @@ public class VelocityUtils {
if (template.contains("domain.java.vm")) {
fileName = StringUtils.format("{}/domain/{}.java", javaPath, className);
}
if (template.contains("sub-domain.java.vm") && StringUtils.equals(GenConstants.TPL_SUB, genTable.getTplCategory())) {
fileName = StringUtils.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName());
} else if (template.contains("mapper.java.vm")) {
if (template.contains("query.java.vm")) {
fileName = StringUtils.format("{}/domain/req/{}QueryReq.java", javaPath, className);
}
if (template.contains("save.java.vm")) {
fileName = StringUtils.format("{}/domain/req/{}SaveReq.java", javaPath, className);
}
if (template.contains("edit.java.vm")) {
fileName = StringUtils.format("{}/domain/req/{}EditReq.java", javaPath, className);
}
if (template.contains("mapper.java.vm")) {
fileName = StringUtils.format("{}/mapper/{}Mapper.java", javaPath, className);
} else if (template.contains("service.java.vm")) {
fileName = StringUtils.format("{}/service/I{}Service.java", javaPath, className);
fileName = StringUtils.format("{}/service/{}Service.java", javaPath, className);
} else if (template.contains("serviceImpl.java.vm")) {
fileName = StringUtils.format("{}/service/impl/{}ServiceImpl.java", javaPath, className);
} else if (template.contains("controller.java.vm")) {
@ -235,29 +245,29 @@ public class VelocityUtils {
*
* @return
*/
public static String getDicts (GenTable genTable) {
public static String getDictList(GenTable genTable) {
List<GenTableColumn> columns = genTable.getColumns();
Set<String> dicts = new HashSet<>();
addDicts(dicts, columns);
Set<String> dictSet = new HashSet<>();
addDictList(dictSet, columns);
if (StringUtils.isNotNull(genTable.getSubTable())) {
List<GenTableColumn> subColumns = genTable.getSubTable().getColumns();
addDicts(dicts, subColumns);
addDictList(dictSet, subColumns);
}
return StringUtils.join(dicts, ", ");
return StringUtils.join(dictSet, ", ");
}
/**
*
*
* @param dicts
* @param dictList
* @param columns
*/
public static void addDicts (Set<String> dicts, List<GenTableColumn> columns) {
public static void addDictList(Set<String> dictList, List<GenTableColumn> columns) {
for (GenTableColumn column : columns) {
if (!column.isSuperColumn() && StringUtils.isNotEmpty(column.getDictType()) && StringUtils.equalsAny(
column.getHtmlType(),
new String[]{GenConstants.HTML_SELECT, GenConstants.HTML_RADIO, GenConstants.HTML_CHECKBOX})) {
dicts.add("'" + column.getDictType() + "'");
dictList.add("'" + column.getDictType() + "'");
}
}
}
@ -296,7 +306,7 @@ public class VelocityUtils {
*
* @return
*/
public static String getTreecode (JSONObject paramsObj) {
public static String getTreeCode(JSONObject paramsObj) {
if (paramsObj.containsKey(GenConstants.TREE_CODE)) {
return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_CODE));
}

View File

@ -1,8 +1,10 @@
package ${packageName}.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletResponse;
import io.swagger.annotations.*;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@ -12,16 +14,18 @@ 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.muyu.common.log.annotation.Log;
import com.muyu.common.log.enums.BusinessType;
import com.muyu.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.enums.BusinessType;
import ${packageName}.domain.${ClassName};
import ${packageName}.service.I${ClassName}Service;
import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.poi.ExcelUtil;
#if($table.crud || $table.sub)
import com.muyu.common.core.web.page.DataPageResp;
import ${packageName}.domain.req.${ClassName}QueryReq;
import ${packageName}.domain.req.${ClassName}SaveReq;
import ${packageName}.domain.req.${ClassName}EditReq;
import ${packageName}.service.${ClassName}Service;
import com.ruoyi.common.utils.poi.ExcelUtil;
#if($table.crud)
import com.ruoyi.common.core.page.TableDataInfo;
#elseif($table.tree)
#end
@ -31,41 +35,41 @@ import com.muyu.common.core.web.page.DataPageResp;
* @author ${author}
* @date ${datetime}
*/
@Api(tags = "${functionName}")
@RestController
@RequestMapping("/${businessName}")
public class ${ClassName}Controller extends BaseController
{
@RequestMapping("/${moduleName}/${businessName}")
public class ${ClassName}Controller extends BaseController {
@Autowired
private I${ClassName}Service ${className}Service;
private ${ClassName}Service ${className}Service;
/**
* 查询${functionName}列表
*/
@RequiresPermissions("${permissionPrefix}:list")
@PostMapping("/list")
#if($table.crud || $table.sub)
public Result<DataPageResp> list(${ClassName} ${className})
{
List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
return Result.success(new DataPageResp<>(0,list));
@ApiOperation("获取${functionName}列表")
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')")
@GetMapping("/list")
#if($table.crud)
public Result<TableDataInfo<${ClassName}>> list(${ClassName}QueryReq ${className}QueryReq) {
startPage();
List<${ClassName}> list = ${className}Service.list(${ClassName}.queryBuild(${className}QueryReq));
return getDataTable(list);
}
#elseif($table.tree)
public Result list(${ClassName} ${className})
{
List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
return success(list);
public Result<List<${ClassName}>> list(${ClassName} ${className}) {
List<${ClassName}> list = ${className}Service.list(${className});
return Result.success(list);
}
#end
/**
* 导出${functionName}列表
*/
@RequiresPermissions("${permissionPrefix}:export")
@ApiOperation("导出${functionName}列表")
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:export')")
@Log(title = "${functionName}", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, ${ClassName} ${className})
{
List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
public void export(HttpServletResponse response, ${ClassName} ${className}) {
List<${ClassName}> list = ${className}Service.list(${className});
ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class);
util.exportExcel(response, list, "${functionName}数据");
}
@ -73,43 +77,45 @@ public class ${ClassName}Controller extends BaseController
/**
* 获取${functionName}详细信息
*/
@RequiresPermissions("${permissionPrefix}:query")
@ApiOperation("获取${functionName}详细信息")
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:query')")
@GetMapping(value = "/{${pkColumn.javaField}}")
public Result getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField})
{
return success(${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}));
@ApiImplicitParam(name = "${pkColumn.javaField}", value = "${pkColumn.javaField}", required = true, dataType = "${pkColumn.javaType}", paramType = "path", dataTypeClass = ${pkColumn.javaType}.class)
public Result<${ClassName}> getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) {
return Result.success(${className}Service.getById(${pkColumn.javaField}));
}
/**
* 新增${functionName}
*/
@RequiresPermissions("${permissionPrefix}:add")
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:add')")
@Log(title = "${functionName}", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@RequestBody ${ClassName} ${className})
{
return toAjax(${className}Service.insert${ClassName}(${className}));
@ApiOperation("新增${functionName}")
public Result<String> add(@RequestBody ${ClassName}SaveReq ${className}SaveReq) {
return toAjax(${className}Service.save(${ClassName}.saveBuild(${className}SaveReq)));
}
/**
* 修改${functionName}
*/
@RequiresPermissions("${permissionPrefix}:edit")
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:edit')")
@Log(title = "${functionName}", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@RequestBody ${ClassName} ${className})
{
return toAjax(${className}Service.update${ClassName}(${className}));
@PutMapping("/{${pkColumn.javaField}}")
@ApiOperation("修改${functionName}")
public Result<String> edit(@PathVariable ${pkColumn.javaType} ${pkColumn.javaField}, @RequestBody ${ClassName}EditReq ${className}EditReq) {
return toAjax(${className}Service.updateById(${ClassName}.editBuild(${pkColumn.javaField},${className}EditReq)));
}
/**
* 删除${functionName}
*/
@RequiresPermissions("${permissionPrefix}:remove")
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:remove')")
@Log(title = "${functionName}", businessType = BusinessType.DELETE)
@DeleteMapping("/{${pkColumn.javaField}s}")
public Result remove(@PathVariable("${pkColumn.javaField}s") ${pkColumn.javaType}[] ${pkColumn.javaField}s)
{
return toAjax(${className}Service.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s));
@ApiOperation("删除${functionName}")
@ApiImplicitParam(name = "${pkColumn.javaField}", value = "${pkColumn.javaField}", required = true, dataType = "${pkColumn.javaType}", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4")
public Result<String> remove(@PathVariable List<${pkColumn.javaType}> ${pkColumn.javaField}s) {
return toAjax(${className}Service.removeBatchByIds(${pkColumn.javaField}s));
}
}

View File

@ -3,11 +3,23 @@ package ${packageName}.domain;
#foreach ($import in $importList)
import ${import};
#end
import com.muyu.common.core.annotation.Excel;
#if($table.crud || $table.sub)
import com.muyu.common.core.web.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.experimental.SuperBuilder;
import io.swagger.annotations.*;
import com.ruoyi.common.annotation.Excel;
import ${packageName}.domain.req.${ClassName}QueryReq;
import ${packageName}.domain.req.${ClassName}SaveReq;
import ${packageName}.domain.req.${ClassName}EditReq;
#if($table.crud)
import com.ruoyi.common.core.domain.BaseEntity;
#elseif($table.tree)
import com.muyu.common.core.web.domain.TreeEntity;
import com.ruoyi.common.core.domain.TreeEntity;
#end
/**
@ -16,13 +28,20 @@ import com.muyu.common.core.web.domain.TreeEntity;
* @author ${author}
* @date ${datetime}
*/
#if($table.crud || $table.sub)
#if($table.crud)
#set($Entity="BaseEntity")
#elseif($table.tree)
#set($Entity="TreeEntity")
#end
public class ${ClassName} extends ${Entity}
{
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("${tableName}")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "${ClassName}", description = "${functionName}")
public class ${ClassName} extends ${Entity} {
private static final long serialVersionUID = 1L;
#foreach ($column in $columns)
@ -44,60 +63,77 @@ public class ${ClassName} extends ${Entity}
@Excel(name = "${comment}")
#end
#end
#if($column.javaField == $pkColumn.javaField)
@TableId(value = "${pkColumn.columnName}",type = IdType.AUTO)
#end
#set($comment='')
#if($column.isRequired == '1')
#set($comment=', required = true')
#end
@ApiModelProperty(name = "${column.columnComment}", value = "${column.columnComment}"$comment)
private $column.javaType $column.javaField;
#end
#end
#if($table.sub)
/** $table.subTable.functionName信息 */
private List<${subClassName}> ${subclassName}List;
/**
* 查询构造器
*/
public static ${ClassName} queryBuild( ${ClassName}QueryReq ${className}QueryReq){
return ${ClassName}.builder()
#foreach ($column in $columns)
#if($column.isQuery == '1')
#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
.${column.javaField}(${className}QueryReq.get${AttrName}())
#end
#end
#end
.build();
}
#end
/**
* 添加构造器
*/
public static ${ClassName} saveBuild(${ClassName}SaveReq ${className}SaveReq){
return ${ClassName}.builder()
#foreach ($column in $columns)
#if($column.isEdit == '1')
#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
.${column.javaField}(${className}SaveReq.get${AttrName}())
#end
#end
#end
.build();
}
/**
* 修改构造器
*/
public static ${ClassName} editBuild(${pkColumn.javaType} ${pkColumn.javaField}, ${ClassName}EditReq ${className}EditReq){
return ${ClassName}.builder()
.${pkColumn.javaField}(${pkColumn.javaField})
#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)})
#if($column.isEdit == '1')
#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
.${column.javaField}(${className}EditReq.get${AttrName}())
#end
#end
#end
public void set${AttrName}($column.javaType $column.javaField)
{
this.$column.javaField = $column.javaField;
.build();
}
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();
}
}

View File

@ -0,0 +1,66 @@
package ${packageName}.domain.req;
#foreach ($import in $importList)
import ${import};
#end
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.experimental.SuperBuilder;
import io.swagger.annotations.*;
import com.ruoyi.common.annotation.Excel;
#if($table.crud)
import com.ruoyi.common.core.domain.BaseEntity;
#elseif($table.tree)
import com.ruoyi.common.core.domain.TreeEntity;
#end
/**
* ${functionName}对象 ${tableName}
*
* @author ${author}
* @date ${datetime}
*/
#if($table.crud)
#set($Entity="BaseEntity")
#elseif($table.tree)
#set($Entity="TreeEntity")
#end
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "${ClassName}EditReq", description = "${functionName}")
public class ${ClassName}EditReq extends ${Entity} {
private static final long serialVersionUID = 1L;
#foreach ($column in $columns)
#if(!$table.isSuperColumn($column.javaField))
#if($column.isEdit == '1')
/** $column.columnComment */
#if($column.list)
#set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd")
#end
#end
#set($isRequired='')
#if($column.isRequired == '1')
#set($isRequired=', required = true')
#end
@ApiModelProperty(name = "${column.columnComment}", value = "${column.columnComment}"$isRequired)
private $column.javaType $column.javaField;
#end
#end
#end
}

View File

@ -1,10 +1,8 @@
package ${packageName}.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import ${packageName}.domain.${ClassName};
#if($table.sub)
import ${packageName}.domain.${subClassName};
#end
/**
* ${functionName}Mapper接口
@ -12,80 +10,6 @@ import ${packageName}.domain.${subClassName};
* @author ${author}
* @date ${datetime}
*/
public interface ${ClassName}Mapper
{
/**
* 查询${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}
*/
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
public interface ${ClassName}Mapper extends BaseMapper<${ClassName}> {
/**
* 查询${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
}

View File

@ -0,0 +1,65 @@
package ${packageName}.domain.req;
#foreach ($import in $importList)
import ${import};
#end
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.experimental.SuperBuilder;
import io.swagger.annotations.*;
import com.ruoyi.common.annotation.Excel;
#if($table.crud)
import com.ruoyi.common.core.domain.BaseEntity;
#elseif($table.tree)
import com.ruoyi.common.core.domain.TreeEntity;
#end
/**
* ${functionName}对象 ${tableName}
*
* @author ${author}
* @date ${datetime}
*/
#if($table.crud)
#set($Entity="BaseEntity")
#elseif($table.tree)
#set($Entity="TreeEntity")
#end
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "${ClassName}QueryReq", description = "${functionName}")
public class ${ClassName}QueryReq extends ${Entity} {
private static final long serialVersionUID = 1L;
#foreach ($column in $columns)
#if(!$table.isSuperColumn($column.javaField))
#if($column.isQuery == '1')
/** $column.columnComment */
#if($column.list)
#set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd")
#end
#end
#if($column.javaField == $pkColumn.javaField)
@TableId(value = "${pkColumn.javaField}",type = IdType.AUTO)
#end
@ApiModelProperty(name = "${column.columnComment}", value = "${column.columnComment}")
private $column.javaType $column.javaField;
#end
#end
#end
}

View File

@ -0,0 +1,67 @@
package ${packageName}.domain.req;
#foreach ($import in $importList)
import ${import};
#end
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.experimental.SuperBuilder;
import io.swagger.annotations.*;
import com.ruoyi.common.annotation.Excel;
#if($table.crud)
import com.ruoyi.common.core.domain.BaseEntity;
#elseif($table.tree)
import com.ruoyi.common.core.domain.TreeEntity;
#end
/**
* ${functionName}对象 ${tableName}
*
* @author ${author}
* @date ${datetime}
*/
#if($table.crud)
#set($Entity="BaseEntity")
#elseif($table.tree)
#set($Entity="TreeEntity")
#end
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "${ClassName}SaveReq", description = "${functionName}")
public class ${ClassName}SaveReq extends ${Entity} {
private static final long serialVersionUID = 1L;
#foreach ($column in $columns)
#if(!$table.isSuperColumn($column.javaField))
#if($column.isInsert == '1')
/** $column.columnComment */
#if($column.list)
#set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd")
#end
#end
#set($isRequired='')
#if($column.isRequired == '1')
#set($isRequired=', required = true')
#end
@ApiModelProperty(name = "${column.columnComment}", value = "${column.columnComment}"$isRequired)
private $column.javaType $column.javaField;
#end
#end
#end
}

View File

@ -2,6 +2,7 @@ package ${packageName}.service;
import java.util.List;
import ${packageName}.domain.${ClassName};
import com.baomidou.mybatisplus.extension.service.IService;
/**
* ${functionName}Service接口
@ -9,53 +10,13 @@ import ${packageName}.domain.${ClassName};
* @author ${author}
* @date ${datetime}
*/
public interface I${ClassName}Service
{
/**
* 查询${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}
*/
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
public interface ${ClassName}Service extends IService<${ClassName}> {
/**
* 查询${functionName}列表
*
* @param ${className} ${functionName}
* @return ${functionName}集合
*/
public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
public List<${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}s 需要删除的${functionName}主键集合
* @return 结果
*/
public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
/**
* 删除${functionName}信息
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return 结果
*/
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
}

View File

@ -1,23 +1,16 @@
package ${packageName}.service.impl;
import java.util.List;
#foreach ($column in $columns)
#if($column.javaField == 'createTime' || $column.javaField == 'updateTime')
import com.muyu.common.core.utils.DateUtils;
#break
#end
#end
import org.springframework.beans.factory.annotation.Autowired;
import com.ruoyi.common.utils.ObjUtils;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
#if($table.sub)
import java.util.ArrayList;
import com.muyu.common.core.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import ${packageName}.domain.${subClassName};
#end
import ${packageName}.mapper.${ClassName}Mapper;
import ${packageName}.domain.${ClassName};
import ${packageName}.service.I${ClassName}Service;
import ${packageName}.service.${ClassName}Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
/**
* ${functionName}Service业务层处理
@ -25,23 +18,9 @@ import ${packageName}.service.I${ClassName}Service;
* @author ${author}
* @date ${datetime}
*/
@Slf4j
@Service
public class ${ClassName}ServiceImpl implements I${ClassName}Service
{
@Autowired
private ${ClassName}Mapper ${className}Mapper;
/**
* 查询${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}
*/
@Override
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
{
return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
}
public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}> implements ${ClassName}Service {
/**
* 查询${functionName}列表
@ -50,120 +29,49 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
* @return ${functionName}
*/
@Override
public List<${ClassName}> select${ClassName}List(${ClassName} ${className})
{
return ${className}Mapper.select${ClassName}List(${className});
}
public List<${ClassName}> list(${ClassName} ${className}) {
LambdaQueryWrapper<${ClassName}> queryWrapper = new LambdaQueryWrapper<>();
#foreach($column in $columns)
#set($queryType=$column.queryType)
#set($javaField=$column.javaField)
#set($JavaField=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
/**
* 新增${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override
public int insert${ClassName}(${ClassName} ${className})
{
#foreach ($column in $columns)
#if($column.javaField == 'createTime')
${className}.setCreateTime(DateUtils.getNowDate());
#end
#end
#if($table.sub)
int rows = ${className}Mapper.insert${ClassName}(${className});
insert${subClassName}(${className});
return rows;
#else
return ${className}Mapper.insert${ClassName}(${className});
#end
#if($column.query)
#if($queryType == "EQ")
if (ObjUtils.notNull(${className}.get$JavaField())){
queryWrapper.eq(${ClassName}::get$JavaField, ${className}.get$JavaField());
}
/**
* 修改${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override
public int update${ClassName}(${ClassName} ${className})
{
#foreach ($column in $columns)
#if($column.javaField == 'updateTime')
${className}.setUpdateTime(DateUtils.getNowDate());
#end
#end
#if($table.sub)
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());
insert${subClassName}(${className});
#end
return ${className}Mapper.update${ClassName}(${className});
#elseif($queryType == "NE")
if (ObjUtils.notNull(${className}.get$JavaField())){
queryWrapper.ne(${ClassName}::get$JavaField, ${className}.get$JavaField());
}
/**
* 批量删除${functionName}
*
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键
* @return 结果
*/
#if($table.sub)
@Transactional
#elseif($queryType == "GT")
if (ObjUtils.notNull(${className}.get$JavaField())){
queryWrapper.gt(${ClassName}::get$JavaField, ${className}.get$JavaField());
}
#elseif($queryType == "GTE")
if (ObjUtils.notNull(${className}.get$JavaField())){
queryWrapper.ge(${ClassName}::get$JavaField, ${className}.get$JavaField());
}
#elseif($queryType == "LT")
if (ObjUtils.notNull(${className}.get$JavaField())){
queryWrapper.lt()${ClassName}::get$JavaField, ${className}.get$JavaField());
}
#elseif($queryType == "LTE")
if (ObjUtils.notNull(${className}.get$JavaField())){
queryWrapper.le()${ClassName}::get$JavaField, ${className}.get$JavaField());
}
#elseif($queryType == "LIKE")
if (ObjUtils.notNull(${className}.get$JavaField())){
queryWrapper.like(${ClassName}::get$JavaField, ${className}.get$JavaField());
}
#elseif($queryType == "BETWEEN")
if (ObjUtils.notChildNull(${className}.getBetween("$JavaField"))){
queryWrapper.between(${ClassName}::get$JavaField, ${className}.getBeginParam("$JavaField"),${className}.getEndParam("$JavaField"));
}
#end
#end
#end
@Override
public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s)
{
#if($table.sub)
${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s);
#end
return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s);
return list(queryWrapper);
}
/**
* 删除${functionName}信息
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
{
#if($table.sub)
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField});
#end
return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
}
#if($table.sub)
/**
* 新增${subTable.functionName}信息
*
* @param ${className} ${functionName}对象
*/
public void insert${subClassName}(${ClassName} ${className})
{
List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List();
${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
}