1. 代码生成器在生成的时候可以手动选择是否是业务数据类代码(会自动继承基础业务类,合并字段,实现业务接口标记,这个标记会将右上角选择公司作为当前业务数据数据权限进行过滤,办理业务时,如果操作人归属同一个公司的多个部门,会前置校验后弹窗选择归属部门后才能正常办理业务)

2. 文件上传的地方做了一个改动,如果上传文件的 hash 和已存在的附件相同,不会重复上传,会复用相同hash 的附件(要加一个字段,加字段脚本提供两个版本的 patch 脚本 mysql:根目录/sql/mysql/patch.sql dm:根目录/sql/dm/patch.sql  )
This commit is contained in:
chenbowen
2025-07-16 17:19:08 +08:00
parent eaea76e955
commit 619c12bbba
20 changed files with 236 additions and 51 deletions

View File

@@ -4,6 +4,9 @@ import org.springframework.web.bind.annotation.*;
import ${jakartaPackage}.annotation.Resource;
import org.springframework.validation.annotation.Validated;
#if ($sceneEnum.scene == 1)import org.springframework.security.access.prepost.PreAuthorize;#end
#if($isBusiness && $isBusiness == true)
import ${basePackage}.framework.business.interceptor.BusinessControllerMarker;
#end
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
@@ -39,7 +42,12 @@ import ${basePackage}.module.${table.moduleName}.service.${table.businessName}.$
##二级的 businessName 暂时不算在 HTTP 路径上,可以根据需要写
@RequestMapping("/${table.moduleName}/${simpleClassName_strikeCase}")
@Validated
## 支持业务基类标记isBusiness=true 时继承 BusinessControllerMarker
#if($isBusiness && $isBusiness == true)
public class ${sceneEnum.prefixClass}${table.className}Controller implements BusinessControllerMarker {
#else
public class ${sceneEnum.prefixClass}${table.className}Controller {
#end
@Resource
private ${table.className}Service ${classNameVar}Service;
@@ -129,7 +137,7 @@ public class ${sceneEnum.prefixClass}${table.className}Controller {
#if ($voType == 10)
return success(BeanUtils.toBean(list, ${respVOClass}.class));
#else
return success(list);
return success(list);
#end
}
@@ -256,15 +264,15 @@ public class ${sceneEnum.prefixClass}${table.className}Controller {
}
#end
@GetMapping("/${subSimpleClassName_strikeCase}/get")
@Operation(summary = "获得${subTable.classComment}")
@Parameter(name = "id", description = "编号", required = true)
@GetMapping("/${subSimpleClassName_strikeCase}/get")
@Operation(summary = "获得${subTable.classComment}")
@Parameter(name = "id", description = "编号", required = true)
#if ($sceneEnum.scene == 1)
@PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
#end
public CommonResult<${subTable.className}DO> get${subSimpleClassName}(@RequestParam("id") ${subPrimaryColumn.javaType} id) {
return success(${classNameVar}Service.get${subSimpleClassName}(id));
}
public CommonResult<${subTable.className}DO> get${subSimpleClassName}(@RequestParam("id") ${subPrimaryColumn.javaType} id) {
return success(${classNameVar}Service.get${subSimpleClassName}(id));
}
#end
#end

View File

@@ -11,20 +11,24 @@ import java.time.LocalDateTime;
#end
#end
import com.baomidou.mybatisplus.annotation.*;
## 导入基类
#if($isBusiness && $isBusiness == true)
import ${basePackage}.framework.mybatis.core.dataobject.BusinessBaseDO;
#else
import ${BaseDOClassName};
#end
## 处理 Excel 导出 + Schema 注解(仅 DO 模式)
#if ($voType == 20)
import io.swagger.v3.oas.annotations.media.Schema;
import com.alibaba.excel.annotation.*;
#foreach ($column in $columns)
#if ("$!column.dictType" != "")## 有设置数据字典
import ${DictFormatClassName};
import ${DictConvertClassName};
import ${DictFormatClassName};
import ${DictConvertClassName};
#break
#end
#end
#end
/**
* ${table.classComment} DO
*
@@ -43,15 +47,25 @@ import com.alibaba.excel.annotation.*;
@Schema(description = "${sceneEnum.name} - ${table.classComment} Response VO")
@ExcelIgnoreUnannotated
#end
/**
* 支持业务基类继承isBusiness=true 时继承 BusinessBaseDO否则继承 BaseDO
*/
#if($isBusiness && $isBusiness == true)
public class ${table.className}DO extends BusinessBaseDO {
#else
public class ${table.className}DO extends BaseDO {
#end
## 特殊:树表专属逻辑
#if ( $table.templateType == 2 )
public static final Long ${treeParentColumn_javaField_underlineCase.toUpperCase()}_ROOT = 0L;
#end
## 字段定义,分支避免嵌套,保证 Velocity 兼容性
#if($isBusiness == true)
#foreach ($column in $columns)
#if (!${baseDOFields.contains(${column.javaField})})##排除 BaseDO 的字段
#if (!${businessBaseDOFields.contains(${column.javaField})})
/**
* ${column.columnComment}
#if ("$!column.dictType" != "")##处理枚举值
@@ -75,6 +89,35 @@ public class ${table.className}DO extends BaseDO {
#end
## 3. 处理字段定义
private ${column.javaType} ${column.javaField};
#end
#end
#else
#foreach ($column in $columns)
#if (!${baseDOFields.contains(${column.javaField})})
/**
* ${column.columnComment}
#if ("$!column.dictType" != "")##处理枚举值
*
* 枚举 {@link TODO ${column.dictType} 对应的类}
#end
*/
#if (${column.primaryKey})##处理主键
@TableId#if (${column.javaType} == 'String')(type = IdType.INPUT)#else(type = IdType.ASSIGN_ID)#end
#end
#if ($voType == 20)
## 1. 处理 Swagger 注解
@Schema(description = "${column.columnComment}"#if (!${column.nullable}), requiredMode = Schema.RequiredMode.REQUIRED#end#if ("$!column.example" != ""), example = "${column.example}"#end)
## 2. 处理 Excel 导出
#if ("$!column.dictType" != "")##处理枚举值
@ExcelProperty(value = "${column.columnComment}", converter = DictConvert.class)
@DictFormat("${column.dictType}") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
#else
@ExcelProperty("${column.columnComment}")
#end
#end
## 3. 处理字段定义
private ${column.javaType} ${column.javaField};
#end
#end
#end
@@ -94,7 +137,7 @@ public class ${table.className}DO extends BaseDO {
* ${subTable.classComment}
*/
@Schema(description = "${subTable.classComment}")
@TableField(exist = false)
@TableField(exist = false)
private ${subTable.className}DO ${subClassNameVars.get($index)};
#end
#end