zouxuan 5 năm trước cách đây
mục cha
commit
645608f420

+ 1 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/StudentExamResultDao.java

@@ -39,5 +39,5 @@ public interface StudentExamResultDao extends BaseDAO<Long, StudentExamResult> {
      * @param tenantId
      * @return
      */
-    List<Map> countExamNum(@Param("studentIds") List<Integer> studentIds, @Param("tenantId") String tenantId);
+    List<Map<Integer, Integer>> countExamNum(@Param("studentIds") List<Integer> studentIds, @Param("tenantId") String tenantId);
 }

+ 2 - 2
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/StudentServiceImpl.java

@@ -111,9 +111,9 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         if (rows != null && rows.size() > 0) {
             List<Integer> studentIds = rows.stream().map(e -> e.getUserId()).collect(Collectors.toList());
             //获取考试次数
-            Map<Integer, Long> examNumMap = MapUtil.convertIntegerMap(studentExamResultDao.countExamNum(studentIds, queryInfo.getTenantId()));
+            Map<Integer, Integer> examNumMap = MapUtil.convertIntegerMap(studentExamResultDao.countExamNum(studentIds, queryInfo.getTenantId()),Integer.class,Integer.class);
             rows.forEach(e -> {
-                e.setExamNum(examNumMap.get(e.getUserId()).intValue());
+                e.setExamNum(examNumMap.get(e.getUserId()));
             });
         }
         return studentPageInfo;

+ 1 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/TeacherServiceImpl.java

@@ -132,7 +132,7 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher> implem
 			params.put("offset", pageInfo.getOffset());
 			dataList = this.getDAO().queryPage(params);
 			Set<Integer> teacherIds = dataList.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
-			Map<Integer,String> subjectNames = MapUtil.convertMybatisMap(teacherDao.queryTeacherSubjectNames(teacherIds));
+			Map<Integer,String> subjectNames = MapUtil.convertIntegerMap(teacherDao.queryTeacherSubjectNames(teacherIds),Integer.class,String.class);
 			dataList.forEach(e->{
 				e.setSubjectName(subjectNames.get(e.getUserId()));
 			});

+ 32 - 8
edu-util/src/main/java/com/keao/edu/util/collection/MapUtil.java

@@ -6,6 +6,7 @@ import java.beans.Introspector;
 import java.beans.PropertyDescriptor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -135,17 +136,40 @@ public class MapUtil {
 	 * @return java.util.Map
 	 * @describe mybatis返回结果转换为Map
 	 */
-	public static <K, V> Map<K, V> convertIntegerMap(List<Map<K, V>> maps) {
+	public static <K, V> Map<K, V> convertIntegerMap(List<Map<K, V>> maps,Class keyType,Class valueType) {
 		int size = 0;
-		if (maps != null) {
+		if(maps != null){
 			size = maps.size();
 		}
-		Map<K, V> result = new HashMap<K, V>(size);
-
-		for (Map<K, V> map : maps) {
-			for (Entry<K, V> entry : map.entrySet()) {
-				result.put(entry.getKey(), entry.getValue());
-			}
+		Map result=new HashMap(size);
+		try {
+			for (Map<K, V> stringIntegerMap : maps) {
+				if(Objects.isNull(stringIntegerMap)){
+					continue;
+				}
+				if(stringIntegerMap.get("value") == null){
+					continue;
+				}
+				K key;
+				V value;
+				if(keyType.isAssignableFrom(BigDecimal.class)){
+					key = (K) BigDecimal.class.getDeclaredConstructor(String.class).newInstance(stringIntegerMap.get("key").toString());
+				}else if(keyType.isAssignableFrom(String.class)){
+					key = (K) stringIntegerMap.get("key").toString();
+				}else{
+					key = (K) keyType.getMethod("valueOf", String.class).invoke(null,stringIntegerMap.get("key").toString());
+				}
+				if(valueType.isAssignableFrom(BigDecimal.class)){
+					value = (V) BigDecimal.class.getDeclaredConstructor(String.class).newInstance(stringIntegerMap.get("value").toString());
+				}else if(valueType.isAssignableFrom(String.class)){
+					value = (V) stringIntegerMap.get("value").toString();
+				}else{
+					value = (V) valueType.getMethod("valueOf", String.class).invoke(null,stringIntegerMap.get("value").toString());
+				}
+				result.put(key, value);
+			};
+		}catch (Exception e){
+			e.printStackTrace();
 		}
 		return result;
 	}