diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java index f1b0b89fc..3955a4e47 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java @@ -74,7 +74,7 @@ public class GenController extends BaseController { @ResponseBody public TableDataInfo columnList(GenTable genTable) { TableDataInfo dataInfo = new TableDataInfo(); - List list = genTableColumnService.selectGenTableColumnListByTableId(genTable); + List list = genTableService.selectGenTableById(genTable.getTableId()).getColumns(); dataInfo.setRows(list); dataInfo.setTotal(list.size()); return dataInfo; diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java index 456f9ea40..748edd962 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java @@ -35,7 +35,6 @@ public class GenTable extends BaseEntity { /** * 表描述 */ - @NotBlank(message = "表描述不能为空") private String tableComment; /** @@ -70,7 +69,6 @@ public class GenTable extends BaseEntity { /** * 生成功能名 */ - @NotBlank(message = "生成功能名不能为空") private String functionName; /** @@ -89,7 +87,10 @@ public class GenTable extends BaseEntity { * 表列信息 */ @Valid - @OneToMany(mappedBy = "table") + @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) + @JoinTable(name = "gen_table_columns", + joinColumns = @JoinColumn(name = "genTableTableId", referencedColumnName = "tableId"), + inverseJoinColumns = @JoinColumn(name = "columnsColumnId", referencedColumnName = "columnId")) private List columns; /** diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java index d6bcd489b..6fb3f1ad0 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java @@ -104,13 +104,6 @@ public class GenTableColumn extends BaseEntity { */ private Integer sort; - @ManyToOne - @JoinTable(name = "gen_table_columns", - inverseJoinColumns = @JoinColumn(name = "genTableTableId", referencedColumnName = "tableId"), - joinColumns = @JoinColumn(name = "columnsColumnId", referencedColumnName = "columnId")) - @org.hibernate.annotations.ForeignKey(name = "none") - private GenTable table; - public void setColumnId(Long columnId) { this.columnId = columnId; } @@ -341,11 +334,7 @@ public class GenTableColumn extends BaseEntity { } } - public GenTable getTable() { - return table; - } - - public void setTable(GenTable table) { - this.table = table; + public String capital(){ + return StringUtils.capitalize(this.javaField); } } \ No newline at end of file diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/repository/GenTableColumnRepository.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/repository/GenTableColumnRepository.java index f77b2a2b0..fee996c0d 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/repository/GenTableColumnRepository.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/repository/GenTableColumnRepository.java @@ -1,20 +1,10 @@ package com.ruoyi.generator.repository; import com.ruoyi.common.base.BaseRepository; -import com.ruoyi.generator.domain.GenTable; import com.ruoyi.generator.domain.GenTableColumn; -import org.springframework.data.jpa.repository.Modifying; import org.springframework.stereotype.Repository; -import java.util.Collection; -import java.util.List; - @Repository public interface GenTableColumnRepository extends BaseRepository { - List findByTable(GenTable genTable); - - @Modifying - void deleteByTableIn(Collection tables); - } diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/repository/GenTableRepository.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/repository/GenTableRepository.java index 32c1bc8e7..0ca6bc17e 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/repository/GenTableRepository.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/repository/GenTableRepository.java @@ -2,7 +2,6 @@ package com.ruoyi.generator.repository; import com.ruoyi.common.base.BaseRepository; import com.ruoyi.generator.domain.GenTable; -import org.springframework.data.jpa.repository.EntityGraph; import org.springframework.stereotype.Repository; import java.util.Optional; @@ -12,7 +11,6 @@ public interface GenTableRepository extends BaseRepository { GenTable findFirstByTableName(String tableName); - @EntityGraph(attributePaths = {"columns"}) @Override Optional findById(Long id); } diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java index eab765355..1cbbdeb5b 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java @@ -1,8 +1,5 @@ package com.ruoyi.generator.service; -import java.util.List; - -import com.ruoyi.generator.domain.GenTable; import com.ruoyi.generator.domain.GenTableColumn; /** @@ -11,13 +8,6 @@ import com.ruoyi.generator.domain.GenTableColumn; * @author ruoyi */ public interface IGenTableColumnService { - /** - * 查询业务字段列表 - * - * @param genTable 业务字段信息 - * @return 业务字段集合 - */ - public List selectGenTableColumnListByTableId(GenTable genTable); /** * 新增业务字段 diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/impl/GenTableColumnServiceImpl.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/impl/GenTableColumnServiceImpl.java index 21c94b4f7..d7c898458 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/impl/GenTableColumnServiceImpl.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/impl/GenTableColumnServiceImpl.java @@ -1,7 +1,6 @@ package com.ruoyi.generator.service.impl; import com.ruoyi.common.core.text.Convert; -import com.ruoyi.generator.domain.GenTable; import com.ruoyi.generator.domain.GenTableColumn; import com.ruoyi.generator.repository.GenTableColumnRepository; import com.ruoyi.generator.service.IGenTableColumnService; @@ -9,8 +8,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; - /** * 业务字段 服务层实现 * @@ -21,16 +18,6 @@ public class GenTableColumnServiceImpl implements IGenTableColumnService { @Autowired private GenTableColumnRepository genTableColumnRepository; - /** - * 查询业务字段列表 - * - * @param genTable 业务字段信息 - * @return 业务字段集合 - */ - @Override - public List selectGenTableColumnListByTableId(GenTable genTable) { - return genTableColumnRepository.findByTable(genTable); - } /** * 新增业务字段 diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/impl/GenTableServiceImpl.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/impl/GenTableServiceImpl.java index 849aa004e..b59ce6643 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/impl/GenTableServiceImpl.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/impl/GenTableServiceImpl.java @@ -179,12 +179,9 @@ public class GenTableServiceImpl extends BaseService implements IGenTableService @Override @Transactional public void deleteGenTableByIds(String ids) { - List tables = new ArrayList<>(); for(Long id : Convert.toLongArray(ids)){ genTableRepository.deleteById(id); - tables.add(new GenTable(id)); } - genTableColumnRepository.deleteByTableIn(tables); } /** @@ -199,15 +196,17 @@ public class GenTableServiceImpl extends BaseService implements IGenTableService for (GenTable table : tableList) { try { GenUtils.initTable(table, operName); - genTableRepository.save(table); + List columns = new ArrayList<>(); String sql = "select column_name, (case when (is_nullable = 'no' && column_key != 'PRI') then '1' else null end) as is_required, (case when column_key = 'PRI' then '1' else '0' end) as is_pk, ordinal_position as sort, column_comment, (case when extra = 'auto_increment' then '1' else '0' end) as is_increment, column_type " + " from information_schema.columns where table_schema = (select database()) and table_name = '" + table.getTableName() + "'" + " order by ordinal_position"; List genTableColumns = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(GenTableColumn.class)); for (GenTableColumn column : genTableColumns) { GenUtils.initColumnField(column, table); - genTableColumnRepository.save(column); + columns.add(column); } + table.setColumns(columns); + genTableRepository.save(table); } catch (Exception e) { log.error("表名 " + table.getTableName() + " 导入失败:", e); } diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java index 3a30afb00..192a50415 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java @@ -1,13 +1,13 @@ package com.ruoyi.generator.util; -import java.util.Arrays; - -import org.apache.commons.lang3.RegExUtils; import com.ruoyi.common.constant.GenConstants; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.generator.config.GenConfig; import com.ruoyi.generator.domain.GenTable; import com.ruoyi.generator.domain.GenTableColumn; +import org.apache.commons.lang3.RegExUtils; + +import java.util.Arrays; /** * 代码生成器 工具类 @@ -34,7 +34,6 @@ public class GenUtils { public static void initColumnField(GenTableColumn column, GenTable table) { String dataType = getDbType(column.getColumnType()); String columnName = column.getColumnName(); - column.setTable(table); column.setCreateBy(table.getCreateBy()); // 设置java字段名 column.setJavaField(StringUtils.toCamelCase(columnName)); diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityInitializer.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityInitializer.java index 5abe6ee52..f5ef3039c 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityInitializer.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityInitializer.java @@ -1,9 +1,9 @@ package com.ruoyi.generator.util; -import java.util.Properties; - -import org.apache.velocity.app.Velocity; import com.ruoyi.common.constant.Constants; +import org.apache.velocity.app.Velocity; + +import java.util.Properties; /** * VelocityEngine工厂 diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java index 543916eb9..01cbe6dde 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java @@ -1,10 +1,5 @@ package com.ruoyi.generator.util; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; - -import org.apache.velocity.VelocityContext; import com.alibaba.fastjson.JSONObject; import com.ruoyi.common.constant.GenConstants; import com.ruoyi.common.utils.DateUtils; @@ -12,6 +7,11 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.generator.config.GenConfig; import com.ruoyi.generator.domain.GenTable; import com.ruoyi.generator.domain.GenTableColumn; +import org.apache.velocity.VelocityContext; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; public class VelocityUtils { /** @@ -47,6 +47,7 @@ public class VelocityUtils { velocityContext.put("functionName", StringUtils.isNotEmpty(functionName) ? functionName : "【请填写功能名称】"); velocityContext.put("ClassName", genTable.getClassName()); velocityContext.put("className", StringUtils.uncapitalize(genTable.getClassName())); + velocityContext.put("classname", StringUtils.uncapitalize(genTable.getClassName())); velocityContext.put("moduleName", genTable.getModuleName()); velocityContext.put("businessName", genTable.getBusinessName()); velocityContext.put("basePackage", getPackagePrefix(packageName)); @@ -54,6 +55,7 @@ public class VelocityUtils { velocityContext.put("author", genTable.getFunctionAuthor()); velocityContext.put("datetime", DateUtils.getDate()); velocityContext.put("pkColumn", genTable.getPkColumn()); + velocityContext.put("primaryKeyType", genTable.getPkColumn().getJavaType()); velocityContext.put("importList", getImportList(genTable.getColumns())); velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName)); velocityContext.put("columns", genTable.getColumns()); @@ -91,9 +93,8 @@ public class VelocityUtils { public static List getTemplateList(String tplCategory) { List templates = new ArrayList(); templates.add("vm/java/domain.java.vm"); - templates.add("vm/java/mapper.java.vm"); + templates.add("vm/java/repository.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/xml/mapper.xml.vm"); if (GenConstants.TPL_CRUD.equals(tplCategory)) { @@ -128,11 +129,13 @@ public class VelocityUtils { String htmlPath = TEMPLATES_PATH + "/" + moduleName + "/" + businessName; if (template.contains("domain.java.vm")) { - fileName = StringUtils.format("{}/domain/{}.java", javaPath, className); + fileName = StringUtils.format("{}/entity/{}.java", javaPath, className); } else if (template.contains("mapper.java.vm")) { fileName = StringUtils.format("{}/mapper/{}Mapper.java", javaPath, className); + } else if (template.contains("repository.java.vm")) { + fileName = StringUtils.format("{}/repository/{}Repository.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")) { diff --git a/ruoyi-generator/src/main/resources/vm/java/controller.java.vm b/ruoyi-generator/src/main/resources/vm/java/controller.java.vm index 97eb459c0..fa0c6aceb 100644 --- a/ruoyi-generator/src/main/resources/vm/java/controller.java.vm +++ b/ruoyi-generator/src/main/resources/vm/java/controller.java.vm @@ -12,15 +12,15 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.enums.BusinessType; -import ${packageName}.domain.${ClassName}; -import ${packageName}.service.I${ClassName}Service; +import ${packageName}.entity.${ClassName}; +import ${packageName}.service.${ClassName}Service; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.utils.StringUtils; #if($table.crud) import com.ruoyi.common.core.page.TableDataInfo; #elseif($table.tree) -import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.core.domain.Ztree; #end @@ -37,7 +37,7 @@ public class ${ClassName}Controller extends BaseController private String prefix = "${moduleName}/${businessName}"; @Autowired - private I${ClassName}Service ${className}Service; + private ${ClassName}Service ${className}Service; @RequiresPermissions("${permissionPrefix}:view") @GetMapping() @@ -54,9 +54,7 @@ public class ${ClassName}Controller extends BaseController @PostMapping("/list") @ResponseBody public TableDataInfo list(${ClassName} ${className}) { - startPage(); - List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); - return getDataTable(list); + return getDataTable(${className}Service.findByPage(${className}, getPageRequest())); } #elseif($table.tree) /** @@ -67,7 +65,7 @@ public class ${ClassName}Controller extends BaseController @ResponseBody public List<${ClassName}> list(${ClassName} ${className}) { - List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); + List<${ClassName}> list = ${className}Service.findAll(${className}); return list; } #end @@ -81,7 +79,7 @@ public class ${ClassName}Controller extends BaseController @ResponseBody public AjaxResult export(${ClassName} ${className}) { - List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); + List<${ClassName}> list = ${className}Service.findAll(${className}); ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class); return util.exportExcel(list, "${businessName}"); } @@ -104,7 +102,7 @@ public class ${ClassName}Controller extends BaseController { if (StringUtils.isNotNull(${pkColumn.javaField})) { - mmap.put("${className}", ${className}Service.select${ClassName}ById(${pkColumn.javaField})); + mmap.put("${className}", ${className}Service.findById(${pkColumn.javaField})); } return prefix + "/add"; } @@ -119,7 +117,12 @@ public class ${ClassName}Controller extends BaseController @ResponseBody public AjaxResult addSave(${ClassName} ${className}) { - return toAjax(${className}Service.insert${ClassName}(${className})); + try{ + ${className}Service.insert(${className}); + return toAjax(true); + }catch (Exception e){ + return error(e.getMessage()); + } } /** @@ -128,7 +131,7 @@ public class ${ClassName}Controller extends BaseController @GetMapping("/edit/{${pkColumn.javaField}}") public String edit(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}, ModelMap mmap) { - ${ClassName} ${className} = ${className}Service.select${ClassName}ById(${pkColumn.javaField}); + ${ClassName} ${className} = ${className}Service.findById(${pkColumn.javaField}); mmap.put("${className}", ${className}); return prefix + "/edit"; } @@ -142,7 +145,12 @@ public class ${ClassName}Controller extends BaseController @ResponseBody public AjaxResult editSave(${ClassName} ${className}) { - return toAjax(${className}Service.update${ClassName}(${className})); + try{ + ${className}Service.update(${className}); + return toAjax(true); + }catch (Exception e){ + return error(e.getMessage()); + } } #if($table.crud) @@ -155,7 +163,7 @@ public class ${ClassName}Controller extends BaseController @ResponseBody public AjaxResult remove(String ids) { - return toAjax(${className}Service.delete${ClassName}ByIds(ids)); + return toAjax(${className}Service.deleteByIds(ids)); } #elseif($table.tree) /** @@ -167,7 +175,7 @@ public class ${ClassName}Controller extends BaseController @ResponseBody public AjaxResult remove(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) { - return toAjax(${className}Service.delete${ClassName}ById(${pkColumn.javaField})); + return toAjax(${className}Service.deleteById(${pkColumn.javaField})); } #end #if($table.tree) @@ -181,7 +189,7 @@ public class ${ClassName}Controller extends BaseController { if (StringUtils.isNotNull(${pkColumn.javaField})) { - mmap.put("${className}", ${className}Service.select${ClassName}ById(${pkColumn.javaField})); + mmap.put("${className}", ${className}Service.findById(${pkColumn.javaField})); } return prefix + "/tree"; } diff --git a/ruoyi-generator/src/main/resources/vm/java/domain.java.vm b/ruoyi-generator/src/main/resources/vm/java/domain.java.vm index 91180253f..4ea4f99b3 100644 --- a/ruoyi-generator/src/main/resources/vm/java/domain.java.vm +++ b/ruoyi-generator/src/main/resources/vm/java/domain.java.vm @@ -1,84 +1,86 @@ -package ${packageName}.domain; - -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -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 -#foreach ($import in $importList) -import ${import}; -#end - -/** - * ${functionName}对象 ${tableName} - * - * @author ${author} - * @date ${datetime} - */ -#if($table.crud) -#set($Entity="BaseEntity") -#elseif($table.tree) -#set($Entity="TreeEntity") -#end -public class ${ClassName} extends ${Entity} -{ - private static final long serialVersionUID = 1L; - -#foreach ($column in $columns) -#if(!$table.isSuperColumn($column.javaField)) - /** $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($parentheseIndex != -1) - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") -#elseif($column.javaType == 'Date') - @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd") -#else - @Excel(name = "${comment}") -#end -#end - private $column.javaType $column.javaField; - -#end -#end -#foreach ($column in $columns) -#if(!$table.isSuperColumn($column.javaField)) -#if($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 - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) -#foreach ($column in $columns) -#if($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 - .toString(); - } -} +package ${packageName}.entity; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import javax.persistence.Entity; +#if($table.crud) +import com.ruoyi.common.core.domain.BaseDatabaseEntity; +#elseif($table.tree) +import com.ruoyi.common.core.domain.TreeEntity; +#end +#foreach ($import in $importList) +import ${import}; +#end + +/** + * ${functionName}对象 ${tableName} + * + * @author ${author} + * @date ${datetime} + */ +#if($table.crud) +#set($Entity="BaseDatabaseEntity") +#elseif($table.tree) +#set($Entity="TreeEntity") +#end +@Entity +public class ${ClassName} extends ${Entity} +{ + private static final long serialVersionUID = 1L; + +#foreach ($column in $columns) +#if(!$table.isSuperColumn($column.javaField)) + /** $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($parentheseIndex != -1) + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") +#elseif($column.javaType == 'Date') + @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd") +#else + @Excel(name = "${comment}") +#end +#end + private $column.javaType $column.javaField; + +#end +#end +#foreach ($column in $columns) +#if(!$table.isSuperColumn($column.javaField)) +#if($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 + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) +#foreach ($column in $columns) +#if($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 + .toString(); + } +} diff --git a/ruoyi-generator/src/main/resources/vm/java/repository.java.vm b/ruoyi-generator/src/main/resources/vm/java/repository.java.vm new file mode 100644 index 000000000..ad85c028c --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/java/repository.java.vm @@ -0,0 +1,16 @@ +package ${packageName}.repository; + +import ${packageName}.entity.${ClassName}; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.stereotype.Repository; +/** + * ${functionName} dao层实现 + * + * @author ${author} + * @date ${datetime} + */ +@Repository +public interface ${ClassName}Repository extends BaseRepository<${ClassName}, ${primaryKeyType}>{ + +} \ No newline at end of file diff --git a/ruoyi-generator/src/main/resources/vm/java/service.java.vm b/ruoyi-generator/src/main/resources/vm/java/service.java.vm index 1668c2466..567b19a9e 100644 --- a/ruoyi-generator/src/main/resources/vm/java/service.java.vm +++ b/ruoyi-generator/src/main/resources/vm/java/service.java.vm @@ -1,73 +1,139 @@ -package ${packageName}.service; - -import ${packageName}.domain.${ClassName}; -import java.util.List; -#if($table.tree) -import com.ruoyi.common.core.domain.Ztree; -#end - -/** - * ${functionName}Service接口 - * - * @author ${author} - * @date ${datetime} - */ -public interface I${ClassName}Service -{ - /** - * 查询${functionName} - * - * @param ${pkColumn.javaField} ${functionName}ID - * @return ${functionName} - */ - public ${ClassName} select${ClassName}ById(${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 ids 需要删除的数据ID - * @return 结果 - */ - public int delete${ClassName}ByIds(String ids); - - /** - * 删除${functionName}信息 - * - * @param ${pkColumn.javaField} ${functionName}ID - * @return 结果 - */ - public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField}); -#if($table.tree) - - /** - * 查询${functionName}树列表 - * - * @return 所有${functionName}信息 - */ - public List select${ClassName}Tree(); -#end -} +package ${packageName}.service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Date; + +import com.ruoyi.common.utils.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.transaction.annotation.Transactional; +import ${packageName}.repository.${ClassName}Repository; +import ${packageName}.entity.${ClassName}; +import com.ruoyi.common.core.text.Convert; + +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; + +/** + * ${functionName} 服务层实现 + * + * @author ${author} + * @date ${datetime} + */ +@Service +public class ${ClassName}Service { + + @Autowired + private ${ClassName}Repository ${classname}Repository; + + /** + * 查询 ${functionName} 分页信息 + * + * @param ${classname} 查询对象 + * @param pageRequest 分页信息 + * @return ${functionName} 分页后结果 + */ + public Page<${ClassName}> findByPage(${ClassName} ${classname}, Pageable pageRequest){ + return ${classname}Repository.findAll(getSpecification(${classname}), pageRequest); + } + + /** + * 查询 ${functionName} 所有信息 + * + * @param ${classname} 查询对象 + * @return ${functionName} 结果 + */ + public List<${ClassName}> findAll(${ClassName} ${classname}){ + return ${classname}Repository.findAll(getSpecification(${classname})); + } + + /** + * 新增${functionName} + * + * @param ${classname} ${functionName}信息 + * @return 保存后的对象 + */ + @Transactional + public ${ClassName} insert(${ClassName} ${classname}){ + return ${classname}Repository.save(${classname}); + } + + /** + * 修改${functionName} + * + * @param ${classname} ${functionName}信息 + * @return 保存后的对象 + */ + @Transactional + public ${ClassName} update(${ClassName} ${classname}){ + return ${classname}Repository.save(${classname}); + } + + /** + * 查询${functionName}对象 + * + * @param ${pkColumn.javaField} 需要查询的id + * @return + */ + public ${ClassName} findById(${pkColumn.javaType} ${pkColumn.javaField}){ + return ${classname}Repository.findById(${pkColumn.javaField}).orElse(null); + } + + /** + * 删除${functionName}对象 + * + * @param ${pkColumn.javaField} 需要删除的数据ID + */ + @Transactional + public void deleteById(${pkColumn.javaType} ${pkColumn.javaField}){ + ${classname}Repository.deleteById(${pkColumn.javaField}); + } + + /** + * 删除${functionName}对象 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + @Transactional + public int deleteByIds(String ids) { + for(String id : Convert.toStrArray(ids)){ + ${classname}Repository.deleteById(${pkColumn.javaType}.valueOf(id)); + } + return 1; + } + + + private Specification<${ClassName}> getSpecification(${ClassName} ${classname}){ + return new Specification<${ClassName}>() { + @Override + public Predicate toPredicate(Root<${ClassName}> root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) { + List predicates = new ArrayList<>(); + #foreach($column in $columns) + #if($column.javaType == "String") + if(StringUtils.isNotEmpty(${classname}.get${column.capital()}())){ + predicates.add(criteriaBuilder.like(root.get("$column.javaField").as(${column.javaType}.class), "%" + ${classname}.get${column.capital()}() + "%")); + } + #else + if(${classname}.get${column.capital()}() != null){ + predicates.add(criteriaBuilder.equal(root.get("$column.javaField").as(${column.javaType}.class), ${classname}.get${column.capital()}())); + } + #end + #end + if(${classname}.getStartTime() != null){ + predicates.add(criteriaBuilder.lessThanOrEqualTo(root.get("createDate").as(Date.class), ${classname}.getStartTime())); + } + if(${classname}.getEndTime() != null){ + predicates.add(criteriaBuilder.greaterThanOrEqualTo(root.get("createDate").as(Date.class), ${classname}.getEndTime())); + } + return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()])); + } + }; + } +} \ No newline at end of file diff --git a/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm b/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm index bbeb4de89..0394a230a 100644 --- a/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm +++ b/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm @@ -1,141 +1,149 @@ -package ${packageName}.service.impl; - -import java.util.List; -#if($table.tree) -import java.util.ArrayList; -import com.ruoyi.common.core.domain.Ztree; -#end -#foreach ($column in $columns) -#if($column.javaField == 'createTime' || $column.javaField == 'updateTime') -import com.ruoyi.common.utils.DateUtils; -#break -#end -#end -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import ${packageName}.mapper.${ClassName}Mapper; -import ${packageName}.domain.${ClassName}; -import ${packageName}.service.I${ClassName}Service; -import com.ruoyi.common.core.text.Convert; - -/** - * ${functionName}Service业务层处理 - * - * @author ${author} - * @date ${datetime} - */ -@Service -public class ${ClassName}ServiceImpl implements I${ClassName}Service -{ - @Autowired - private ${ClassName}Mapper ${className}Mapper; - - /** - * 查询${functionName} - * - * @param ${pkColumn.javaField} ${functionName}ID - * @return ${functionName} - */ - @Override - public ${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField}) - { - return ${className}Mapper.select${ClassName}ById(${pkColumn.javaField}); - } - - /** - * 查询${functionName}列表 - * - * @param ${className} ${functionName} - * @return ${functionName} - */ - @Override - public List<${ClassName}> select${ClassName}List(${ClassName} ${className}) - { - return ${className}Mapper.select${ClassName}List(${className}); - } - - /** - * 新增${functionName} - * - * @param ${className} ${functionName} - * @return 结果 - */ - @Override - public int insert${ClassName}(${ClassName} ${className}) - { -#foreach ($column in $columns) -#if($column.javaField == 'createTime') - ${className}.setCreateTime(DateUtils.getNowDate()); -#end -#end - return ${className}Mapper.insert${ClassName}(${className}); - } - - /** - * 修改${functionName} - * - * @param ${className} ${functionName} - * @return 结果 - */ - @Override - public int update${ClassName}(${ClassName} ${className}) - { -#foreach ($column in $columns) -#if($column.javaField == 'updateTime') - ${className}.setUpdateTime(DateUtils.getNowDate()); -#end -#end - return ${className}Mapper.update${ClassName}(${className}); - } - - /** - * 删除${functionName}对象 - * - * @param ids 需要删除的数据ID - * @return 结果 - */ - @Override - public int delete${ClassName}ByIds(String ids) - { - return ${className}Mapper.delete${ClassName}ByIds(Convert.toStrArray(ids)); - } - - /** - * 删除${functionName}信息 - * - * @param ${pkColumn.javaField} ${functionName}ID - * @return 结果 - */ - @Override - public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField}) - { - return ${className}Mapper.delete${ClassName}ById(${pkColumn.javaField}); - } -#if($table.tree) - - /** - * 查询${functionName}树列表 - * - * @return 所有${functionName}信息 - */ - @Override - public List select${ClassName}Tree() - { - List<${ClassName}> ${className}List = ${className}Mapper.select${ClassName}List(new ${ClassName}()); - List ztrees = new ArrayList(); - for (${ClassName} ${className} : ${className}List) - { - Ztree ztree = new Ztree(); -#set($TreeCode=$treeCode.substring(0,1).toUpperCase() + ${treeCode.substring(1)}) -#set($TreeParentCode=$treeParentCode.substring(0,1).toUpperCase() + ${treeParentCode.substring(1)}) -#set($TreeName=$treeName.substring(0,1).toUpperCase() + ${treeName.substring(1)}) - ztree.setId(${className}.get${TreeCode}()); - ztree.setpId(${className}.get${TreeParentCode}()); - ztree.setName(${className}.get${TreeName}()); - ztree.setTitle(${className}.get${TreeName}()); - ztrees.add(ztree); - } - return ztrees; - } -#end -} +package ${packageName}.service.impl; + +import java.util.List; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +#if($table.tree) +import java.util.ArrayList; +import com.ruoyi.common.core.domain.Ztree; +#end +#foreach ($column in $columns) +#if($column.javaField == 'createTime' || $column.javaField == 'updateTime') +import com.ruoyi.common.utils.DateUtils; +#break +#end +#end +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import ${packageName}.mapper.${ClassName}Mapper; +import ${packageName}.domain.${ClassName}; +import ${packageName}.service.I${ClassName}Service; +import com.ruoyi.common.core.text.Convert; + +/** + * ${functionName}Service业务层处理 + * + * @author ${author} + * @date ${datetime} + */ +@Service +public class ${ClassName}ServiceImpl implements I${ClassName}Service +{ + @Autowired + private ${ClassName}Mapper ${className}Mapper; + @Autowired + private ${ClassName}Repository ${className}Repository; + + public Page<${ClassName}> findByPage(${className}, Pageable pageable){ + + } + + /** + * 查询${functionName} + * + * @param ${pkColumn.javaField} ${functionName}ID + * @return ${functionName} + */ + @Override + public ${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField}) + { + return ${className}Mapper.select${ClassName}ById(${pkColumn.javaField}); + } + + /** + * 查询${functionName}列表 + * + * @param ${className} ${functionName} + * @return ${functionName} + */ + @Override + public List<${ClassName}> select${ClassName}List(${ClassName} ${className}) + { + return ${className}Mapper.select${ClassName}List(${className}); + } + + /** + * 新增${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ + @Override + public int insert${ClassName}(${ClassName} ${className}) + { +#foreach ($column in $columns) +#if($column.javaField == 'createTime') + ${className}.setCreateTime(DateUtils.getNowDate()); +#end +#end + return ${className}Mapper.insert${ClassName}(${className}); + } + + /** + * 修改${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ + @Override + public int update${ClassName}(${ClassName} ${className}) + { +#foreach ($column in $columns) +#if($column.javaField == 'updateTime') + ${className}.setUpdateTime(DateUtils.getNowDate()); +#end +#end + return ${className}Mapper.update${ClassName}(${className}); + } + + /** + * 删除${functionName}对象 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + @Override + public int delete${ClassName}ByIds(String ids) + { + return ${className}Mapper.delete${ClassName}ByIds(Convert.toStrArray(ids)); + } + + /** + * 删除${functionName}信息 + * + * @param ${pkColumn.javaField} ${functionName}ID + * @return 结果 + */ + @Override + public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField}) + { + return ${className}Mapper.delete${ClassName}ById(${pkColumn.javaField}); + } +#if($table.tree) + + /** + * 查询${functionName}树列表 + * + * @return 所有${functionName}信息 + */ + @Override + public List select${ClassName}Tree() + { + List<${ClassName}> ${className}List = ${className}Mapper.select${ClassName}List(new ${ClassName}()); + List ztrees = new ArrayList(); + for (${ClassName} ${className} : ${className}List) + { + Ztree ztree = new Ztree(); +#set($TreeCode=$treeCode.substring(0,1).toUpperCase() + ${treeCode.substring(1)}) +#set($TreeParentCode=$treeParentCode.substring(0,1).toUpperCase() + ${treeParentCode.substring(1)}) +#set($TreeName=$treeName.substring(0,1).toUpperCase() + ${treeName.substring(1)}) + ztree.setId(${className}.get${TreeCode}()); + ztree.setpId(${className}.get${TreeParentCode}()); + ztree.setName(${className}.get${TreeName}()); + ztree.setTitle(${className}.get${TreeName}()); + ztrees.add(ztree); + } + return ztrees; + } +#end +}