From c466f4d8c054270821ed0263f390178995621a74 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 03 三月 2025 10:27:08 +0800
Subject: [PATCH] #新增 1. 添加EXcel导入功能模板
---
rsf-server/pom.xml | 7
rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java | 79 +--------
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrGroupController.java | 16 +-
rsf-server/src/main/java/com/vincent/rsf/server/system/controller/BaseController.java | 1
rsf-admin/src/page/components/ImportModal.jsx | 38 +++-
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java | 19 ++
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java | 141 +++++++++++++++++
rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx | 8
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/annotation/ExcelAutoColumnSize.java | 20 ++
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/annotation/ExcelComment.java | 30 +++
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java | 3
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/annotation/ExcelField.java | 60 +++++++
12 files changed, 331 insertions(+), 91 deletions(-)
diff --git a/rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx b/rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx
index be006b0..5480867 100644
--- a/rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx
+++ b/rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx
@@ -43,7 +43,7 @@
import MyField from "@/page/components/MyField";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
import * as Common from '@/utils/common';
-import ImportButton from "@/page/components/ImportButton";
+import ImportButton from "../../components/ImportButton";
import MatListAside from './MatnrListAside';
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
@@ -228,7 +228,9 @@
<FilterButton />
<MyCreateButton onClick={() => { setCreateDialog(true) }} />
<SelectColumnsButton preferenceKey='matnr' />
- <ImportButton />
+ <MatnrList.Context.Provider value={'matnr'}>
+ <ImportButton />
+ </MatnrList.Context.Provider>
<MyExportButton />
</TopToolbar>
)}
@@ -251,4 +253,6 @@
)
}
+MatnrList.Context = React.createContext()
+
export default MatnrList;
\ No newline at end of file
diff --git a/rsf-admin/src/page/components/ImportModal.jsx b/rsf-admin/src/page/components/ImportModal.jsx
index 501cb22..3775169 100644
--- a/rsf-admin/src/page/components/ImportModal.jsx
+++ b/rsf-admin/src/page/components/ImportModal.jsx
@@ -18,6 +18,7 @@
import { Link } from 'react-router-dom';
import DialogCloseButton from './DialogCloseButton';
import { usePapaParse } from './usePapaParse';
+import MatnrList from '../basicInfo/matnr/MatnrList';
const ImportModal = ({ open, onClose, importTemp, useCodeImport, onceBatch = 10 }) => {
const refresh = useRefresh();
@@ -144,22 +145,30 @@
<Alert
severity="info"
action={
- <Button
- component={Link}
- label="common.action.import.download"
- color="info"
- to={importTemp}
- download={'import_template.csv'}
- />
+ <MatnrList.Context.Consumer>
+ {context => (
+ <Button
+ component={Link}
+ onClick={() => {
+ downloadTemplate(context)
+ }}
+ label="common.action.import.download"
+ color="info"
+ to={importTemp}
+ download={'import_template.csv'}
+ />
+ )}
+
+ </MatnrList.Context.Consumer>
}
>
{translate('common.action.import.msg')}
</Alert>
<FileInput
- source="csv"
- label="CSV File"
- accept={{ 'text/csv': ['.csv'] }}
+ source="xlsx"
+ label="Xlsx File"
+ accept={{ 'text/xlsx': ['.xls', '.xlsx'] }}
onChange={handleFileChange}
>
<FileField source="src" title="title" />
@@ -201,6 +210,15 @@
</Dialog>
);
}
+{/**涓嬭浇鎵撳嵃妯℃澘锛屼紶鍏ype绫诲瀷锛岃皟鐢ㄤ笅杞芥ā鏉挎帴鍙� */}
+const downloadTemplate = (type) => {
+ // 涓嬭浇鐗╂枡妯℃澘
+ if (type != undefined && type == 'matnr') {
+
+ }
+ console.log('======>');
+ console.log(type);
+}
function millisecondsToTime(ms) {
var seconds = Math.floor((ms / 1000) % 60);
diff --git a/rsf-server/pom.xml b/rsf-server/pom.xml
index eb85d00..f3cbdfa 100644
--- a/rsf-server/pom.xml
+++ b/rsf-server/pom.xml
@@ -137,7 +137,12 @@
<artifactId>easyexcel</artifactId>
<version>2.2.6</version>
</dependency>
- </dependencies>
+ <dependency>
+ <groupId>cn.afterturn</groupId>
+ <artifactId>easypoi-base</artifactId>
+ <version>4.2.0</version>
+ </dependency>
+ </dependencies>
<build>
<finalName>rsf-server</finalName>
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java
index bab11e6..b501bda 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java
@@ -1,5 +1,6 @@
package com.vincent.rsf.server.common.utils;
+import cn.afterturn.easypoi.excel.entity.ImportParams;
import com.vincent.rsf.framework.common.Cools;
import io.swagger.annotations.ApiModelProperty;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -64,7 +65,8 @@
continue;
}
- field.setAccessible(true); // 姝よ寰堥噸瑕侊紝鐗瑰埆鏄瓧娈典负private鏃�
+ // 姝よ寰堥噸瑕侊紝鐗瑰埆鏄瓧娈典负private鏃�
+ field.setAccessible(true);
Object value = null;
try {
value = field.get(t);
@@ -91,76 +93,13 @@
}
/**
- * Excel 瀵煎叆
- * @param file 鏂囦欢
- * @param keys 鏁版嵁椤哄簭
+ * 娣诲姞瀵煎叆excel閰嶇疆鍙傛暟
+ * 娉細榛樿閰嶇疆鍙弧瓒冲綋鍓嶉渶姹�
+ * @return
*/
- public static List<Map<String, Object>> importExcel(MultipartFile file, String[] keys) throws Exception{
- Workbook wb = null;
- String fileName = file.getOriginalFilename();
- if (fileName.endsWith("xls")) {
- POIFSFileSystem pois = new POIFSFileSystem(file.getInputStream());
- wb = new HSSFWorkbook(pois);
- } else if (fileName.endsWith("xlsx")) {
- wb = new XSSFWorkbook(file.getInputStream());
- }
- Sheet sheet = wb.getSheetAt(0);
- int rowCount = sheet.getPhysicalNumberOfRows();
- if (sheet.getRow( 1).getPhysicalNumberOfCells() != keys.length){
- throw new RuntimeException("瀵煎叆鐨凟xcel鍜屾ā鏉跨殑鍒椾笉鍖归厤");
- }
- List<Map<String,Object>> result = new ArrayList<>();
- for (int i = 0; i < rowCount - 1; i++) {
- Row row = sheet.getRow(i + 1);
- Map<String,Object> tmp = new HashMap<>();
- for (int j = 0;j < keys.length; j++){
- Cell cell = row.getCell(j);
- // 鎶婄被鍨嬭浆琛孲tring
-// cell.setCellType(CellType.STRING);
- tmp.put(keys[j], cell.getStringCellValue());
- }
- result.add(tmp);
- }
- return result;
- }
-
- /**
- * 琛ㄥご鏍峰紡
- */
- private static CellStyle HeaderStyle(Workbook wb){
- Font font = wb.createFont();
- font.setFontName("瀹嬩綋");
- font.setFontHeightInPoints((short) 11);
- CellStyle cellStyle = commonStyle(wb);
- cellStyle.setFont(font);
- return cellStyle;
- }
-
- /**
- * 鍐呭鏍峰紡
- */
- private static CellStyle contentStyle(Workbook wb){
- Font font = wb.createFont();
- font.setFontName("瀹嬩綋");
- font.setFontHeightInPoints((short) 10);
- CellStyle cellStyle = commonStyle(wb);
- cellStyle.setFont(font);
- return cellStyle;
- }
-
- /**
- * 鍏叡鏍峰紡
- */
- private static CellStyle commonStyle(Workbook wb){
- CellStyle style = wb.createCellStyle();
- style.setAlignment(HorizontalAlignment.CENTER);
- style.setVerticalAlignment(VerticalAlignment.CENTER);
- style.setBorderBottom(BorderStyle.THIN);
- style.setBorderLeft(BorderStyle.THIN);
- style.setBorderTop(BorderStyle.THIN);
- style.setBorderRight(BorderStyle.THIN);
- style.setWrapText(true);// 鑷姩鎹㈣
- return style;
+ public static ImportParams getDefaultImportParams() {
+ ImportParams params = new ImportParams();
+ return params;
}
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java
index 47024db..df029e2 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java
@@ -1,5 +1,9 @@
package com.vincent.rsf.server.manager.controller;
+import cn.afterturn.easypoi.excel.ExcelImportUtil;
+import cn.afterturn.easypoi.excel.entity.ImportParams;
+import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
+import cn.afterturn.easypoi.excel.imports.ExcelImportService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vincent.rsf.framework.common.Cools;
@@ -21,6 +25,8 @@
import org.springframework.http.HttpHeaders;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
import javax.servlet.http.HttpServletResponse;
import java.util.*;
@@ -134,4 +140,17 @@
ExcelUtil.build(ExcelUtil.create(matnrService.list(), Matnr.class), response);
}
+ @PreAuthorize("hasAuthority('manager:matnr:save')")
+ @ApiOperation(value = "excel琛ㄦ牸瀵煎叆鐗╂枡淇℃伅")
+ @PostMapping("/matnr/import")
+ public R listImport(MultipartFile file) {
+ try {
+ ExcelImportResult<Matnr> objectExcelImportResult = ExcelImportUtil.importExcelMore(file.getInputStream(), Matnr.class, ExcelUtil.getDefaultImportParams());
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ return R.ok();
+ }
+
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrGroupController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrGroupController.java
index 26d45fe..0775852 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrGroupController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrGroupController.java
@@ -109,14 +109,14 @@
@PostMapping("/matnrGroup/tree")
public R tree(@RequestBody Map<String, Object> map) {
List<MatnrGroup> matnrs = new ArrayList<>();
- if (Objects.isNull(map)) {
- matnrs = matnrGroupService.list(new LambdaQueryWrapper<>());
- } else {
- if (Objects.isNull(map.get("condition"))) {
- return R.ok("condition鍙傛暟涓嶈兘涓虹┖锛侊紒");
- }
- matnrs = matnrGroupService.list(new LambdaQueryWrapper<MatnrGroup>().like(MatnrGroup::getName, map.get("condition")));
- }
+ matnrs = matnrGroupService.list(new LambdaQueryWrapper<>());
+// if (Objects.isNull(map)) {
+// } else {
+// if (Objects.isNull(map.get("condition"))) {
+// return R.ok("condition鍙傛暟涓嶈兘涓虹┖锛侊紒");
+// }
+// matnrs = matnrGroupService.list(new LambdaQueryWrapper<MatnrGroup>().like(MatnrGroup::getName, map.get("condition")));
+// }
List<MatnrGroup> treeData = Utils.toTreeData(matnrs, 0L, MatnrGroup::getParentId, MatnrGroup::getId, MatnrGroup::setChildren);
return R.ok().add(treeData);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java
index 99d544c..e2bb486 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java
@@ -57,6 +57,9 @@
@ApiModelProperty(value= "璐т富ID")
private Long shipperId;
+// @ApiModelProperty(value = "璐т富缂栫爜")
+// private String shipperCode;
+
/**
* 鍒嗙粍ID(*)
*/
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java
new file mode 100644
index 0000000..7ecf8b2
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java
@@ -0,0 +1,141 @@
+package com.vincent.rsf.server.manager.entity.excel;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import cn.afterturn.easypoi.handler.inter.IExcelDataModel;
+import cn.afterturn.easypoi.handler.inter.IExcelModel;
+import com.vincent.rsf.server.manager.entity.excel.annotation.ExcelAutoColumnSize;
+import com.vincent.rsf.server.manager.entity.excel.annotation.ExcelComment;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * @author Ryan
+ * @version 1.0
+ * @title MatnrsTemplate
+ * @description
+ * @create 2025/3/3 08:40
+ */
+@Data
+@ExcelAutoColumnSize
+@Accessors(chain = true)
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = false)
+public class MatnrsTemplate implements IExcelModel, IExcelDataModel, Serializable {
+
+ @Excel(name = "鐗╂枡鍚嶇О")
+ @ExcelComment(example = "鍗庝负鎵嬫満")
+ private String name;
+
+ @Excel(name = "璐т富缂栫爜")
+ @ExcelComment(example = "PO12625")
+ private String shipperCode;
+
+ @Excel(name = "鍒嗙被鍚嶇О")
+ @ExcelComment(example = "绉诲姩璁惧")
+ private String groupName;
+
+ @Excel(name = "鐗╂枡鍔╄鐮�")
+ @ExcelComment(example = "P3528461569")
+ private String erpCode;
+
+ @Excel(name = "瑙勬牸")
+ @ExcelComment(example = "HW-148*68*10")
+ private String spec;
+
+ @Excel(name = "鍨嬪彿")
+ @ExcelComment(example = "鍗庝负涓夋姌鍙�")
+ private String model;
+
+ @Excel(name = "閲嶉噺")
+ @ExcelComment(notNull = false, example = "258g")
+ private String weight;
+
+ @Excel(name = "棰滆壊")
+ @ExcelComment(notNull = false, example = "绱孩鑹�")
+ private String color;
+
+ @Excel(name = "澶у皬")
+ @ExcelComment(notNull = false, example = "148*68*10")
+ private String size;
+
+ @Excel(name = "鎻忚堪")
+ @ExcelComment(notNull = false, example = "鏂颁笂甯備笁鎶樺彔")
+ private String describle;
+
+ @Excel(name = "鎻忚堪")
+ @ExcelComment(notNull = false, example = "鏂颁笂甯備笁鎶樺彔")
+ private String nromNum;
+
+ @Excel(name = "涓诲崟浣�")
+ @ExcelComment(example = "閮�")
+ private String unit;
+
+ @Excel(name = "閲囪喘鍗曚綅")
+ @ExcelComment(example = "閮�")
+ private String purUnit;
+
+ @Excel(name = "ABC绫�")
+ @ExcelComment(notNull = false, example = "A")
+ private String stockLevel;
+
+ @Excel(name = "瀹夊叏搴撳瓨閲�")
+ @ExcelComment(example = "50")
+ private String safeQty;
+
+ @Excel(name = "鏈�灏忓簱瀛橀噺")
+ @ExcelComment(notNull = false, example = "10")
+ private String minQty;
+
+ @Excel(name = "鏈�澶у簱瀛橀噺")
+ @ExcelComment(notNull = false, example = "150")
+ private String maxQty;
+
+ @Excel(name = "鍋滄粸澶╂暟")
+ @ExcelComment(notNull = false, example = "25")
+ private String stagn;
+
+ @Excel(name = "鏈夋晥鏈�")
+ @ExcelComment(notNull = false, example = "25")
+ private String valid;
+
+ @Excel(name = "鏉″舰鐮�")
+ @ExcelComment(notNull = false, example = "8001354")
+ private String barcode;
+
+ @Excel(name = "鏁堟湡棰勮闃堝��")
+ @ExcelComment(notNull = false, example = "2025-01-25 14:25:36")
+ private String validWarn;
+
+ @Excel(name = "鏄惁鍏嶆")
+ @ExcelComment(notNull = false, example = "鍚�")
+ private String flagCheck;
+
+ private Integer rowNum;
+
+ private String errorMsg;
+
+
+ @Override
+ public Integer getRowNum() {
+ return this.rowNum;
+ }
+
+ @Override
+ public void setRowNum(Integer rowNum) {
+ this.rowNum = rowNum;
+ }
+
+ @Override
+ public String getErrorMsg() {
+ return this.errorMsg;
+ }
+
+ @Override
+ public void setErrorMsg(String errorMsg) {
+ this.errorMsg = errorMsg;
+ }
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/annotation/ExcelAutoColumnSize.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/annotation/ExcelAutoColumnSize.java
new file mode 100644
index 0000000..8d5ce06
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/annotation/ExcelAutoColumnSize.java
@@ -0,0 +1,20 @@
+package com.vincent.rsf.server.manager.entity.excel.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @author: Ryan
+ * @create: 2025/3/01 13:29
+ * @version: 1.0
+ * @description: excel 鍒楀鑷�傚簲
+ */
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ExcelAutoColumnSize {
+
+ /** 鍚敤 */
+ boolean enable() default true;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/annotation/ExcelComment.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/annotation/ExcelComment.java
new file mode 100644
index 0000000..fac36fa
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/annotation/ExcelComment.java
@@ -0,0 +1,30 @@
+package com.vincent.rsf.server.manager.entity.excel.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @author: Ryan
+ * @create: 2025/3/01 13:29
+ * @version: 1.0
+ * @description: excel 娉ㄩ噴
+ */
+@Target({ElementType.METHOD, ElementType.FIELD, ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ExcelComment {
+
+ /** 澶囨敞淇℃伅 */
+ String value() default "";
+
+ /** 鏄惁闈炵┖銆傝嚜鍔ㄥ湪澶囨敞鍚庨潰鎷兼帴 "蹇呭~椤�"*/
+ boolean notNull() default true;
+
+
+ /** 瀛楀吀鍊硷紝濡傛灉涓嶄负绌猴紝浼氬湪 {@link #value()} 鐨勫悗闈㈠姞涓� 鍙�夊�硷細label1銆乴abel2 */
+ String dict() default "";
+
+ /** 绀轰緥鍊硷紱璋冪敤{@link ExcelUtils#mockData(Class)} 鏃� 灏嗕粠姝ゅ瓧娈靛彇鍊� */
+ String example() default "";
+}
\ No newline at end of file
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/annotation/ExcelField.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/annotation/ExcelField.java
new file mode 100644
index 0000000..a44d94f
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/annotation/ExcelField.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright © 2012-2016 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
+ */
+package com.vincent.rsf.server.manager.entity.excel.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Excel娉ㄨВ瀹氫箟
+ * @author ThinkGem
+ * @version 2013-03-10
+ */
+@Target({ElementType.METHOD, ElementType.FIELD, ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ExcelField {
+
+ /**
+ * 瀵煎嚭瀛楁鍚嶏紙榛樿璋冪敤褰撳墠瀛楁鐨勨�済et鈥濇柟娉曪紝濡傛寚瀹氬鍑哄瓧娈典负瀵硅薄锛岃濉啓鈥滃璞″悕.瀵硅薄灞炴�р�濓紝渚嬶細鈥渁rea.name鈥濄�佲�渙ffice.name鈥濓級
+ */
+ String value() default "";
+
+ /**
+ * 瀵煎嚭瀛楁鏍囬锛堥渶瑕佹坊鍔犳壒娉ㄨ鐢ㄢ��**鈥濆垎闅旓紝鏍囬**鎵规敞锛屼粎瀵瑰鍑烘ā鏉挎湁鏁堬級
+ */
+ String title();
+
+ /**
+ * 瀛楁绫诲瀷锛�0锛氬鍑哄鍏ワ紱1锛氫粎瀵煎嚭锛�2锛氫粎瀵煎叆锛�
+ */
+ int type() default 0;
+
+ /**
+ * 瀵煎嚭瀛楁瀵归綈鏂瑰紡锛�0锛氳嚜鍔紱1锛氶潬宸︼紱2锛氬眳涓紱3锛氶潬鍙筹級
+ */
+ int align() default 0;
+
+ /**
+ * 瀵煎嚭瀛楁瀛楁鎺掑簭锛堝崌搴忥級
+ */
+ int sort() default 0;
+
+ /**
+ * 濡傛灉鏄瓧鍏哥被鍨嬶紝璇疯缃瓧鍏哥殑type鍊�
+ */
+ String dictType() default "";
+
+ /**
+ * 鍙嶅皠绫诲瀷
+ */
+ Class<?> fieldType() default Class.class;
+
+ /**
+ * 瀛楁褰掑睘缁勶紙鏍规嵁鍒嗙粍瀵煎嚭瀵煎叆锛�
+ */
+ int[] groups() default {};
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/BaseController.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/BaseController.java
index bcb9262..bada2f7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/BaseController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/BaseController.java
@@ -13,6 +13,7 @@
/**
* Created by vincent on 1/30/2024
*/
+
public class BaseController {
public User getLoginUser() {
--
Gitblit v1.9.1