diff --git a/pom.xml b/pom.xml
index 89fa6e3..deec93e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,6 @@
5.3.3
2.0.41
6.4.6
-
3.2.2
5.2.3
3.3.2
diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java b/ruoyi-modules/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java
index 2616ce6..bfddef5 100644
--- a/ruoyi-modules/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java
+++ b/ruoyi-modules/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java
@@ -116,8 +116,10 @@ public class VelocityUtils
context.put("subTableName", subTableName);
context.put("subTableFkName", subTableFkName);
context.put("subTableFkClassName", subTableFkClassName);
+ context.put("CapitalUnderScoreSubTableFkClassName", StringUtils.upperCase(StringUtils.toUnderScoreCase(subTableFkClassName)));//带下划线的字段大写
context.put("subTableFkclassName", StringUtils.uncapitalize(subTableFkClassName));
context.put("subClassName", subClassName);
+ context.put("CapitalUnderScoreSubClassName", StringUtils.upperCase(StringUtils.toUnderScoreCase(subClassName)));//大写的子类类名下划线:SYS_USER
context.put("subclassName", StringUtils.uncapitalize(subClassName));
context.put("subImportList", getImportList(genTable.getSubTable()));
}
@@ -152,6 +154,8 @@ public class VelocityUtils
{
templates.add("vm/vue/index.vue.vm");
templates.add("vm/java/sub-domain.java.vm");
+ templates.add("vm/java/sub-mapper.java.vm");
+ templates.add("vm/xml/sub-mapper.xml.vm");
}
return templates;
}
@@ -176,56 +180,26 @@ public class VelocityUtils
String mybatisPath = MYBATIS_PATH + "/" + moduleName;
String vuePath = "vue";
- if (template.contains("domain.java.vm"))
+ switch (template)
{
- fileName = StringUtils.format("{}/domain/{}.java", javaPath, className);
- }
- else 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("vo.java.vm")) {
- fileName = StringUtils.format("{}/domain/vo/{}Vo.java", javaPath, className);
- }
- else if (template.contains("bo.java.vm")) {
- fileName = StringUtils.format("{}/domain/bo/{}Bo.java", javaPath, className);
- }
- else 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);
- }
- else if (template.contains("serviceImpl.java.vm"))
- {
- fileName = StringUtils.format("{}/service/impl/{}ServiceImpl.java", javaPath, className);
- }
- else if (template.contains("controller.java.vm"))
- {
- fileName = StringUtils.format("{}/controller/{}Controller.java", javaPath, className);
- }
- else if (template.contains("mapper.xml.vm"))
- {
- fileName = StringUtils.format("{}/{}Mapper.xml", mybatisPath, className);
- }
- else if (template.contains("sql.vm"))
- {
- fileName = businessName + "Menu.sql";
- }
- else if (template.contains("api.js.vm"))
- {
- fileName = StringUtils.format("{}/api/{}/{}.js", vuePath, moduleName, businessName);
- }
- else if (template.contains("index.vue.vm"))
- {
- fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName);
- }
- else if (template.contains("index-tree.vue.vm"))
- {
- fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName);
+ case "vm/java/domain.java.vm" -> fileName = StringUtils.format("{}/domain/{}.java", javaPath, className);
+ case "vm/java/sub-domain.java.vm" -> fileName = StringUtils.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName());
+ case "vm/java/vo.java.vm" -> fileName = StringUtils.format("{}/domain/vo/{}Vo.java", javaPath, className);
+ case "vm/java/bo.java.vm" -> fileName = StringUtils.format("{}/domain/bo/{}Bo.java", javaPath, className);
+ case "vm/java/mapper.java.vm" -> fileName = StringUtils.format("{}/mapper/{}Mapper.java", javaPath, className);
+ case "vm/java/sub-mapper.java.vm" -> fileName = StringUtils.format("{}/mapper/{}Mapper.java", javaPath, genTable.getSubTable().getClassName());
+ case "vm/java/service.java.vm" -> fileName = StringUtils.format("{}/service/I{}Service.java", javaPath, className);
+ case "vm/java/serviceImpl.java.vm" -> fileName = StringUtils.format("{}/service/impl/{}ServiceImpl.java", javaPath, className);
+ case "vm/java/controller.java.vm" -> fileName = StringUtils.format("{}/controller/{}Controller.java", javaPath, className);
+ case "vm/xml/mapper.xml.vm" -> fileName = StringUtils.format("{}/{}Mapper.xml", mybatisPath, className);
+ case "vm/xml/sub-mapper.xml.vm" -> fileName = StringUtils.format("{}/{}Mapper.xml", mybatisPath, genTable.getSubTable().getClassName());
+ case "vm/sql/sql.vm" -> fileName = businessName + "Menu.sql";
+ case "vm/js/api.js.vm" -> fileName = StringUtils.format("{}/api/{}/{}.js", vuePath, moduleName, businessName);
+ case "vm/vue/index.vue.vm" -> fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName);
+ case "vm/vue/index-tree.vue.vm" -> fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName);
+ default -> fileName = "default.xml";
}
+
return fileName;
}
diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/domain.java.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/domain.java.vm
index 6ccb7eb..cdb3a2e 100644
--- a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/domain.java.vm
+++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/domain.java.vm
@@ -3,6 +3,9 @@ package ${packageName}.domain;
#foreach ($import in $importList)
import ${import};
#end
+#if($table.sub)
+import ${packageName}.domain.${subClassName};
+#end
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import lombok.Data;
@@ -46,8 +49,8 @@ public class ${ClassName} extends ${Entity}
#end
#end
#if($table.sub)
-/** $table.subTable.functionName信息 */
-private List<${subClassName}> ${subclassName}List;
-
+ /** $table.subTable.functionName信息 */
+ private List<${subClassName}> ${subclassName}List;
#end
+
}
diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm
index 7fe2d6e..73c8b3a 100644
--- a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm
+++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm
@@ -22,14 +22,16 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
#if($table.sub)
import java.util.ArrayList;
+import java.util.Arrays;
import ${packageName}.domain.${subClassName};
+import ${packageName}.mapper.${subClassName}Mapper;
+import static ${packageName}.domain.table.${subClassName}TableDef.${CapitalUnderScoreSubClassName};
#end
import ${packageName}.mapper.${ClassName}Mapper;
import ${packageName}.domain.${ClassName};
import ${packageName}.domain.bo.${ClassName}Bo;
import ${packageName}.domain.vo.${ClassName}Vo;
import ${packageName}.service.I${ClassName}Service;
-
import static ${packageName}.domain.table.${ClassName}TableDef.${CapitalUnderScoreClassName};
/**
@@ -43,6 +45,10 @@ public class ${ClassName}ServiceImpl extends BaseServiceImpl<${ClassName}Mapper,
{
@Resource
private ${ClassName}Mapper ${className}Mapper;
+ #if($table.sub)
+ @Resource
+ private ${subClassName}Mapper ${subclassName}Mapper;
+ #end
@Override
public QueryWrapper query() {
@@ -92,7 +98,12 @@ public class ${ClassName}ServiceImpl extends BaseServiceImpl<${ClassName}Mapper,
public ${ClassName}Vo selectById(${pkColumn.javaType} ${pkColumn.javaField})
{
#set($CapitalPkColumn=${pkColumn.columnName.toUpperCase()})
+ #if($table.sub)
+ return ${className}Mapper.selectOneWithRelationsByQueryAs(query().where(${CapitalUnderScoreClassName}.${CapitalPkColumn}.eq(${pkColumn.javaField})), ${ClassName}Vo.class);
+ #else
return this.getOneAs(query().where(${CapitalUnderScoreClassName}.${CapitalPkColumn}.eq(${pkColumn.javaField})), ${ClassName}Vo.class);
+ #end
+
}
/**
@@ -105,7 +116,11 @@ public class ${ClassName}ServiceImpl extends BaseServiceImpl<${ClassName}Mapper,
public List<${ClassName}Vo> selectList(${ClassName}Bo ${className}Bo)
{
QueryWrapper queryWrapper = buildQueryWrapper(${className}Bo);
+ #if($table.sub)
+ return ${className}Mapper.selectListWithRelationsByQueryAs(queryWrapper, ${ClassName}Vo.class);
+ #else
return this.listAs(queryWrapper, ${ClassName}Vo.class);
+ #end
}
#if($table.crud || $table.sub)
@@ -119,7 +134,11 @@ public class ${ClassName}ServiceImpl extends BaseServiceImpl<${ClassName}Mapper,
public TableDataInfo<${ClassName}Vo> selectPage(${ClassName}Bo ${className}Bo)
{
QueryWrapper queryWrapper = buildQueryWrapper(${className}Bo);
+ #if($table.sub)
+ Page<${ClassName}Vo> page = ${className}Mapper.paginateWithRelationsAs(PageQuery.build(), queryWrapper, ${ClassName}Vo.class);
+ #else
Page<${ClassName}Vo> page = this.pageAs(PageQuery.build(), queryWrapper, ${ClassName}Vo.class);
+ #end
return TableDataInfo.build(page);
}
#end
@@ -140,7 +159,7 @@ public class ${ClassName}ServiceImpl extends BaseServiceImpl<${ClassName}Mapper,
#if($table.sub)
boolean inserted = this.save(${className});//使用全局配置的雪花算法主键生成器生成ID值
- if (inserted) {
+ if (inserted && ObjectUtil.isNotNull(${className})) {
return insert${subClassName}(${className});
}
return false;
@@ -162,15 +181,17 @@ public class ${ClassName}ServiceImpl extends BaseServiceImpl<${ClassName}Mapper,
public boolean update(${ClassName}Bo ${className}Bo)
{
${ClassName} ${className} = MapstructUtils.convert(${className}Bo, ${ClassName}.class);
- boolean updated = this.updateById(${className});
-
- #if($table.sub)
- if (updated) {
- ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());
- return insert${subClassName}(${className});
+ if(ObjectUtil.isNotNull(${className}) && ObjectUtil.isNotNull(${className}.get${pkColumn.capJavaField}())) {
+ boolean updated = this.updateById(${className});
+ #if($table.sub)
+ if (updated) {
+ QueryWrapper queryWrapper = QueryWrapper.create().from(${CapitalUnderScoreSubClassName}).where(${CapitalUnderScoreSubClassName}.${CapitalUnderScoreSubTableFkClassName}.eq(${className}.get${pkColumn.capJavaField}()));
+ ${subclassName}Mapper.deleteByQuery(queryWrapper);
+ return insert${subClassName}(${className});
+ }
+ #end
}
- #end
- return updated;
+ return false;
}
/**
@@ -183,9 +204,10 @@ public class ${ClassName}ServiceImpl extends BaseServiceImpl<${ClassName}Mapper,
@Override
public boolean deleteByIds(${pkColumn.javaType}[] ${pkColumn.javaField}s)
{
-#if($table.sub)
- ${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s);
-#end
+ #if($table.sub)
+ QueryWrapper queryWrapper = QueryWrapper.create().from(${CapitalUnderScoreSubClassName}).where(${CapitalUnderScoreSubClassName}.${CapitalUnderScoreSubTableFkClassName}.in(Arrays.asList(${pkColumn.javaField}s)));
+ ${subclassName}Mapper.deleteByQuery(queryWrapper);
+ #end
return this.removeByIds(Arrays.asList(${pkColumn.javaField}s));
}
@@ -195,7 +217,7 @@ public class ${ClassName}ServiceImpl extends BaseServiceImpl<${ClassName}Mapper,
*
* @param ${className} ${functionName}对象
*/
- public boolean insert${subClassName}(${ClassName} ${className})
+ private boolean insert${subClassName}(${ClassName} ${className})
{
List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List();
${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}();
@@ -209,7 +231,7 @@ public class ${ClassName}ServiceImpl extends BaseServiceImpl<${ClassName}Mapper,
}
if (list.size() > 0)
{
- ${className}Mapper.batch${subClassName}(list);
+ return ${subclassName}Mapper.insertBatch(list)>0;
}
}
return true;
diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm
index 8de9459..78034d5 100644
--- a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm
+++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm
@@ -3,7 +3,17 @@ package ${packageName}.domain;
#foreach ($import in $subImportList)
import ${import};
#end
-import com.ruoyi.common.core.core.annotation.Excel;
+import com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.Table;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+import java.io.Serializable;
+#if($table.crud || $table.sub)
+import com.ruoyi.common.orm.core.domain.BaseEntity;
+#elseif($table.tree)
+import com.ruoyi.common.orm.core.domain.TreeEntity;
+#end
/**
* ${subTable.functionName}对象 ${subTableName}
@@ -11,63 +21,37 @@ import com.ruoyi.common.core.core.annotation.Excel;
* @author ${author}
* ${datetime}
*/
-public class ${subClassName} extends BaseEntity
+#if($table.crud || $table.sub)
+ #set($Entity="BaseEntity")
+#elseif($table.tree)
+ #set($Entity="TreeEntity")
+#end
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Table(value = "${subTableName}")
+public class ${subClassName} extends ${Entity}
{
+ @Serial
private static final long serialVersionUID = 1L;
#foreach ($column in $subTable.columns)
-#if(!$table.isSuperColumn($column.javaField))
+#if(!$subTable.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')
+ #if($column.javaField=='delFlag')
+ @Column(isLogicDelete = true)
+ #end
+ #if($column.javaField=='version')
+ @Column(version = true)
+ #end
+ #if($column.isPk==1)
+ @Id
+ #end
+ #if($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd")
- @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
-#else
- @Excel(name = "${comment}")
-#end
-#end
+ #end
private $column.javaType $column.javaField;
#end
#end
-#foreach ($column in $subTable.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
-
- @Override
- public String toString() {
- return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-#foreach ($column in $subTable.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
- .toString();
- }
}
diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/sub-mapper.java.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/sub-mapper.java.vm
new file mode 100644
index 0000000..aaf3186
--- /dev/null
+++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/sub-mapper.java.vm
@@ -0,0 +1,21 @@
+package ${packageName}.mapper;
+
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+#if($table.sub)
+import ${packageName}.domain.${subClassName};
+#else
+import ${packageName}.domain.${ClassName};
+#end
+
+/**
+ * ${subTable.functionName}Mapper接口
+ *
+ * @author ${author}
+ * ${datetime}
+ */
+@Mapper
+public interface ${subClassName}Mapper extends BaseMapper<${subClassName}>
+{
+
+}
diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/vo.java.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/vo.java.vm
index fa8d058..0d0871d 100644
--- a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/vo.java.vm
+++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/vo.java.vm
@@ -11,7 +11,10 @@ import com.ruoyi.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
-
+#if($table.sub)
+import com.mybatisflex.annotation.RelationOneToMany;
+import ${packageName}.domain.${subClassName};
+#end
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
@@ -70,4 +73,11 @@ public class ${ClassName}Vo extends ${Entity} implements Serializable
#end
#end
#end
+
+#if($table.sub)
+ /** $table.subTable.functionName信息 */
+ @RelationOneToMany(selfField = "${pkColumn.javaField}", targetField = "${pkColumn.javaField}")
+ private List<${subClassName}> ${subclassName}List;
+#end
+
}
diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/xml/sub-mapper.xml.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/xml/sub-mapper.xml.vm
new file mode 100644
index 0000000..fd00ff5
--- /dev/null
+++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/xml/sub-mapper.xml.vm
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java
index 4b57516..fc32970 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java
@@ -130,7 +130,6 @@ public class SysDataScopeServiceImpl implements ISysDataScopeService {
}
queryWrapper.and(bracket(queryCondition));//所有新增的插叙条件外边用圆括号包括起来
- //System.out.println("*******************:SysDataScopeServiceImpl.filter:queryWrapper.tosql="+queryWrapper.toSQL());
return queryWrapper;
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java
index 4a78484..0a655cc 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java
@@ -45,7 +45,7 @@ public class SysNoticeServiceImpl extends BaseServiceImpl
if (StringUtils.isNotEmpty(userBo.getPhonenumber())) {
queryWrapper.and(SYS_USER.PHONENUMBER.like(userBo.getPhonenumber()));
}
- //TODO:数据范围过滤
Page page = this.pageAs(PageQuery.build(), queryWrapper, SysUserVo.class);
return TableDataInfo.build(page);