diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/util/BeanUtil.java b/admin-core/src/main/java/com/ibeetl/admin/core/util/BeanUtil.java
index be880dac..ce40a4db 100644
--- a/admin-core/src/main/java/com/ibeetl/admin/core/util/BeanUtil.java
+++ b/admin-core/src/main/java/com/ibeetl/admin/core/util/BeanUtil.java
@@ -8,14 +8,15 @@ import cn.hutool.core.util.ReflectUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ibeetl.admin.core.entity.BaseEntity;
+import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.util.MultiValueMap;
import org.springframework.util.MultiValueMapAdapter;
import javax.validation.constraints.NotNull;
-import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
/**
*
@@ -104,23 +105,29 @@ public class BeanUtil extends cn.hutool.core.bean.BeanUtil {
* value只支持单个
* 只用到 value和 index
*
- * @param object
+ * @param clazz
+ * @return
*/
- public static void processExcelAnnotation(@NotNull Class object) {
- Map result = new TreeMap<>();
+ public static Map processExcelAnnotationToMap(@NotNull Class clazz) {
+ Map result = new ConcurrentHashMap<>(16);
- for (Field declaredField : object.getDeclaredFields()) {
- Annotation[] declaredAnnotations = declaredField.getDeclaredAnnotations();
- for (Annotation declaredAnnotation : declaredAnnotations) {
- // 判断是否是easyExcel 的注解
- if (declaredAnnotation instanceof ExcelProperty) {
- ExcelProperty excelProperty = (ExcelProperty) declaredAnnotation;
- String title = excelProperty.value()[0];
- int index = excelProperty.index();
- result.put(declaredField.getName(), title);
- ;
- }
- }
- }
+ // 过滤有指定注解的属性
+ Set filterFields = Arrays.stream(clazz.getDeclaredFields())
+ .filter(declaredField -> ObjectUtil.isNotNull(AnnotationUtils.findAnnotation(declaredField, ExcelProperty.class)))
+ .collect(Collectors.toSet());
+
+ // 根据index属性排序,并放置到Map的返回值中
+ filterFields.stream().sorted(Comparator.comparingInt(o -> AnnotationUtils.findAnnotation(o, ExcelProperty.class).index()))
+ .forEachOrdered(field -> {
+ ExcelProperty annotation = AnnotationUtils.findAnnotation(field, ExcelProperty.class);
+ String title = annotation.value()[0];
+ String name = field.getName();
+ // 防止覆盖
+ if (!result.containsKey(name)) {
+ result.put(name, title);
+ }
+ });
+
+ return result;
}
}
diff --git a/web/src/main/java/com/ibeetl/jlw/web/ResourcesQuestionSnapshotController.java b/web/src/main/java/com/ibeetl/jlw/web/ResourcesQuestionSnapshotController.java
index dcd17a96..28789bb1 100644
--- a/web/src/main/java/com/ibeetl/jlw/web/ResourcesQuestionSnapshotController.java
+++ b/web/src/main/java/com/ibeetl/jlw/web/ResourcesQuestionSnapshotController.java
@@ -146,7 +146,6 @@ public class ResourcesQuestionSnapshotController extends BaseController {
Map header = new LinkedHashMap<>(11);
header.put("studentName", "学生姓名");
header.put("studentSn", "学号");
- header.put("teacherOpenCourseIdText", "开课名称");
header.put("className", "班级名称");
header.put("finishTime", "完成时间");
header.put("correctCount", "答对数量");
@@ -154,6 +153,8 @@ public class ResourcesQuestionSnapshotController extends BaseController {
header.put("correctRate", "正确率 (100)%");
header.put("totalScore", "总得分");
+// Map header = processExcelAnnotationToMap(TeacherOpenCourseQuestionTestDetailVO.class);
+
PageQuery data = resourcesQuestionSnapshotService.questionTestResults(condition.getPageQuery());
List