浏览代码

卡管理查询慢优化

jinxia.mo 1 天之前
父节点
当前提交
6877350cdb

+ 0 - 31
ie-admin/src/main/java/com/ruoyi/web/controller/dz/DzCardsController.java

@@ -77,37 +77,6 @@ public class DzCardsController extends BaseController
         prepare(dzCards);
         startPage();
         List<DzCards> list = dzCardsService.selectDzCardsList2(dzCards);
-
-        // 根据cardIds查询用户,并将用户的directedStudy设置给DzCard
-        if (!CollectionUtils.isEmpty(list)) {
-            List<Long> cardIds = list.stream()
-                    .map(DzCards::getCardId)
-                    .filter(cardId -> cardId != null)
-                    .collect(Collectors.toList());
-
-            if (!CollectionUtils.isEmpty(cardIds)) {
-                List<SysUser> users = sysUserService.selectUserByCardIds(cardIds);
-                // 创建cardId到user的映射
-                Map<Long, SysUser> userMap = users.stream()
-                        .filter(user -> user.getCardId() != null)
-                        .collect(Collectors.toMap(SysUser::getCardId, user -> user, (existing, replacement) -> existing));
-
-                // 遍历list,设置directedStudy
-                for (DzCards card : list) {
-                    if (card.getCardId() != null) {
-                        SysUser user = userMap.get(card.getCardId());
-                        if (user != null ) {
-                            if (user.getDirectedStudy() != null){
-                                card.setDirectedStudy(user.getDirectedStudy());
-                            }
-                            card.setExamMajor(user.getExamMajor());
-                            card.setExamMajorName(user.getExamMajorName());
-                        }
-                    }
-                }
-            }
-        }
-
         return getDataTable(list);
     }
 

+ 17 - 5
ie-system/src/main/java/com/ruoyi/dz/service/impl/DzCardsServiceImpl.java

@@ -89,6 +89,7 @@ public class DzCardsServiceImpl implements IDzCardsService
     }
 
     private List<DzCards> fillNames(List<DzCards> list) {
+        Long start = System.currentTimeMillis();
         Set<Long> classIdSet = Sets.newHashSet();
         Set<Long> schoolIdSet = Sets.newHashSet();
         Set<Long> deptIdSet = Sets.newHashSet();
@@ -142,13 +143,21 @@ public class DzCardsServiceImpl implements IDzCardsService
             }
             if (userMap.containsKey(c.getCardId())) {
                 SysUser user = userMap.get(c.getCardId());
-                c.setPhonenumber(user.getPhonenumber());
-                c.setNickName(user.getNickName());
-                c.setExamType(user.getExamType().name());
-                c.setLocation(user.getLocation());
+                if (user != null ) {
+                    c.setPhonenumber(user.getPhonenumber());
+                    c.setNickName(user.getNickName());
+                    c.setExamType(user.getExamType().name());
+                    c.setLocation(user.getLocation());
+                    c.setExamMajor(user.getExamMajor());
+                    c.setExamMajorName(user.getExamMajorName());
+                    if (user.getDirectedStudy() != null){
+                        c.setDirectedStudy(user.getDirectedStudy());
+                    }
+                }
             }
             c.setType(CardType.getNewVal(c.getType()));
         }
+        System.out.println( "查询学习卡耗时2:{}"+( System.currentTimeMillis() - start));
         return list;
     }
 
@@ -167,7 +176,10 @@ public class DzCardsServiceImpl implements IDzCardsService
     @Override
     public List<DzCards> selectDzCardsList2(DzCards dzCards)
     {
-        return fillNames(dzCardsMapper.selectDzCardsList2(dzCards));
+        long start = System.currentTimeMillis();
+        List<DzCards> cards=dzCardsMapper.selectDzCardsList2(dzCards);
+        System.out.println( "查询学习卡耗时1:{}"+( System.currentTimeMillis() - start));
+        return fillNames(cards);
     }
 
     /**

+ 1 - 1
ie-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -282,7 +282,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	</select>
 
 	<select id="selectUserByCardIds" resultMap="SysUserResult">
-		<include refid="selectUserVo"/>
+		select * from sys_user u
 		where u.card_id in <foreach collection="ids" item="id" open="(" separator="," close=")">#{id}</foreach>
 	</select>