Administrator
yesterday e0df047509b4afed457c54f8cef7ff3ee9623cd8
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java
@@ -241,8 +241,6 @@
        String companyId = LoginUserUtil.getLoginUser().getCompanyId();
        String memberUuid = dto.getMemberUuid();
        // 创建分页对象,传入当前页和每页大小
        Page<AiMemberPoint> page = new Page<>(dto.getPageNow(), dto.getPageSize());
        LambdaQueryWrapper<AiMemberPoint> queryWrapper = Wrappers.lambdaQuery(AiMemberPoint.class);
@@ -251,45 +249,37 @@
        Page<AiMemberPoint> pageListByQuery = aiMemberPointService.getBaseMapper().selectPage(page, queryWrapper);
        List<AiMemberPoint> aiMemberPoints = pageListByQuery.getRecords();
//        List<AiMemberPoint> aiMemberPoints = aiMemberPointService.getListByCompanyIdAndMemberUuid(companyId, memberUuid);
        if (CollUtil.isEmpty(aiMemberPoints)){
            return new FebsResponse().success().data(vos);
        }
        Map<String, List<AiMemberPoint>> aiMemberPointMap = new HashMap<>();
        if (CollUtil.isNotEmpty(aiMemberPoints)){
            //stream操作aiMemberPoints,返回一个Map<productPointId,List<AiMemberPoint>>
            aiMemberPointMap = aiMemberPoints.stream().collect(Collectors.groupingBy(AiMemberPoint::getProductPointId));
        }
        //stream流操作aiMemberPoints,返回一个productPointId的set集合
        Set<String> productPointIdSet = aiMemberPoints.stream().map(AiMemberPoint::getProductPointId).collect(Collectors.toSet());
        // stream流操作aiMemberPoints,返回一个productPointId的set集合
        Set<String> productPointIdSet = aiMemberPoints.stream()
                .map(AiMemberPoint::getProductPointId)
                .collect(Collectors.toSet());
        List<AiProductPoint> aiProductPoints = aiProductPointService.getBaseMapper().selectList(
                Wrappers.lambdaQuery(AiProductPoint.class)
                        .select(AiProductPoint::getId,AiProductPoint::getTitle)
                        .select(AiProductPoint::getId, AiProductPoint::getTitle)
                        .in(AiProductPoint::getId, productPointIdSet)
        );
        //stream操作aiProductPoints,返回一个根据Map<id,AiProductPoint>
        Map<String, AiProductPoint> productPointMap = aiProductPoints.stream().collect(Collectors.toMap(AiProductPoint::getId, aiProductPoint -> aiProductPoint));
        if (CollUtil.isEmpty(aiProductPoints)){
            return new FebsResponse().success().data(vos);
        }
        for (AiProductPoint aiProductPoint : aiProductPoints){
        for (AiMemberPoint aiMemberPoint : aiMemberPoints){
            ApiMemberTeamStudyVo vo = new ApiMemberTeamStudyVo();
            vo.setTitle(aiProductPoint.getTitle());
            Integer totalTime = 0;
            if (aiMemberPointMap.containsKey(aiProductPoint.getId())){
                List<AiMemberPoint> memberPoints = aiMemberPointMap.get(aiProductPoint.getId());
                for (AiMemberPoint memberPoint : memberPoints){
                    totalTime += memberPoint.getTotalTime();
                }
            }
            vo.setTotalTime(DateUtil.secondToTime(totalTime));
            vo.setTitle(productPointMap.get(aiMemberPoint.getProductPointId()).getTitle());
            vo.setTotalTime(DateUtil.secondToTime(aiMemberPoint.getTotalTime()));
            vos.add(vo);
        }
        return new FebsResponse().success().data(vos);
    }
    @Override
    public FebsResponse talkPage(ApiMemberTalkPageDto dto) {
@@ -392,23 +382,51 @@
        // 创建分页对象,传入当前页和每页大小
        Page<ApiCompanyStudyVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
        IPage<ApiCompanyStudyVo> result = aiMemberAnswerService.selectListPage(dto, page);
//        List<ApiCompanyStudyVo> records = result.getRecords();
//        if (CollUtil.isNotEmpty(records)){
//            //stream流获取re cords集合中的元素productId的set集合
//            Set<String> collect = records.stream().map(ApiCompanyStudyVo::getProductId).collect(Collectors.toSet());
//            List<AiMemberAnswer>  list = aiMemberAnswerService.getIdListByCompanyIdAndProductId(companyId,  collect);
//            if (CollUtil.isNotEmpty(list)){
//                //利用stream流,操作集合list,返回一个map对象,key为productId,value为按照productId分组的集合的大小,默认值为0
//                Map<String, Long> memberAnswerItemCountMap =
//                        list.stream().collect(Collectors.groupingBy(
//                                        AiMemberAnswer::getProductId,
//                                        Collectors.counting()
//                                ));
//                for ( ApiCompanyStudyVo record : records){
//                     record.setPracticeCnt(memberAnswerItemCountMap.getOrDefault(record.getProductId(), 0L).intValue());
//                }
//            }
//        }
        List<ApiCompanyStudyVo> records = result.getRecords();
        if (CollUtil.isNotEmpty(records)){
            //stream流获取re cords集合中的元素productId的set集合
            Set<String> collect = records.stream().map(ApiCompanyStudyVo::getProductId).collect(Collectors.toSet());
            List<AiMemberAnswer>  list = aiMemberAnswerService.getIdListByCompanyIdAndProductId(companyId,  collect);
            if (CollUtil.isNotEmpty(list)){
                //利用stream流,操作集合list,返回一个map对象,key为productId,value为按照productId分组的集合的大小,默认值为0
                Map<String, Long> memberAnswerItemCountMap =
                        list.stream().collect(Collectors.groupingBy(
                                        AiMemberAnswer::getProductId,
                                        Collectors.counting()
                                ));
                for ( ApiCompanyStudyVo record : records){
                     record.setPracticeCnt(memberAnswerItemCountMap.getOrDefault(record.getProductId(), 0L).intValue());
            // 安全地获取 productId 集合,过滤掉 null 值
            Set<String> collect = records.stream()
                    .filter(Objects::nonNull)
                    .map(ApiCompanyStudyVo::getProductId)
                    .filter(Objects::nonNull)
                    .collect(Collectors.toSet());
            if (CollUtil.isNotEmpty(collect)) {  // 确保 collect 不为空
                List<AiMemberAnswer> list = aiMemberAnswerService.getIdListByCompanyIdAndProductId(companyId, collect);
                if (CollUtil.isNotEmpty(list)){
                    Map<String, Long> memberAnswerItemCountMap = list.stream()
                            .collect(Collectors.groupingBy(
                                    AiMemberAnswer::getProductId,
                                    Collectors.counting()
                            ));
                    for (ApiCompanyStudyVo record : records){
                        if (record != null && record.getProductId() != null) {
                            record.setPracticeCnt(memberAnswerItemCountMap.getOrDefault(record.getProductId(), 0L).intValue());
                        }
                    }
                }
            }
        }
        return new FebsResponse().success().data(result);
    }
@@ -448,6 +466,7 @@
        LambdaQueryWrapper<AiMemberAnswerItem> memberAnswerItemLambdaQueryWrapper = Wrappers.lambdaQuery(AiMemberAnswerItem.class);
        memberAnswerItemLambdaQueryWrapper.in(AiMemberAnswerItem::getMemberAnswerQuestionId,questionItemIdSet);
        memberAnswerItemLambdaQueryWrapper.eq(AiMemberAnswerItem::getCompanyId,companyId);
        memberAnswerItemLambdaQueryWrapper.isNotNull(AiMemberAnswerItem::getAnswer);
        List<AiMemberAnswerItem> memberAnswerItemList = aiMemberAnswerItemService.getListByQuery(memberAnswerItemLambdaQueryWrapper);
        //利用stream流,操作集合memberAnswerItemList,返回一个map对象,key为memberAnswerQuestionId,value为按照memberAnswerQuestionId分组的集合的大小,默认值为0
        Map<String, Long> memberAnswerItemCountMap =
@@ -495,6 +514,7 @@
        LambdaQueryWrapper<AiMemberAnswerItem> memberAnswerItemLambdaQueryWrapper = Wrappers.lambdaQuery(AiMemberAnswerItem.class);
        memberAnswerItemLambdaQueryWrapper.eq(AiMemberAnswerItem::getProductQuestionId,productQuestionId);
        memberAnswerItemLambdaQueryWrapper.eq(AiMemberAnswerItem::getCompanyId,companyId);
        memberAnswerItemLambdaQueryWrapper.isNotNull(AiMemberAnswerItem::getAnswer);
        List<AiMemberAnswerItem> memberAnswerItemList = aiMemberAnswerItemService.getListByQuery(memberAnswerItemLambdaQueryWrapper);
        if ( CollUtil.isEmpty(memberAnswerItemList)){
            return  new FebsResponse().success().data(objects);
@@ -517,11 +537,11 @@
        Map<String, MallMember> mallMemberMap = mallMembers.stream().collect(Collectors.toMap(MallMember::getMemberUuid, mallMember -> mallMember));
        for (AiMemberAnswerItem memberAnswerItem : memberAnswerItemList){
            ApiCompanyStudyInfoVo vo = new ApiCompanyStudyInfoVo();
            vo.setMemberName(mallMemberMap.get(memberAnswerItem.getMemberId()).getName());
            vo.setNickName(mallMemberMap.get(memberAnswerItem.getMemberId()).getRealName());
            vo.setMemberName(mallMemberMap.get(memberAnswerItem.getMemberId()).getRealName());
            vo.setNickName(mallMemberMap.get(memberAnswerItem.getMemberId()).getName());
            vo.setMemberAnswerState(memberAnswerItem.getMemberAnswerState());
            vo.setAnswer(answerMap.get(memberAnswerItem.getAnswer()).getAnswer());
            vo.setAnswer(answerMap.get(memberAnswerItem.getMemberAnswerQuestionId()).getAnswer());
            objects.add(vo);
        }
        return  new FebsResponse().success().data(objects);