diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/DlDriveSchoolCoachCourseService.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/DlDriveSchoolCoachCourseService.java index 50b090fb..22a08e84 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/DlDriveSchoolCoachCourseService.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/DlDriveSchoolCoachCourseService.java @@ -28,9 +28,20 @@ public interface DlDriveSchoolCoachCourseService extends IService + * @author PQZ + * @date 14:17 2025/2/8 + **/ + List queryByCourseId(String courseId); } \ No newline at end of file diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCoachCourseServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCoachCourseServiceImpl.java index bdb951be..d4038387 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCoachCourseServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCoachCourseServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.base.service.impl; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.module.base.entity.DlDriveSchoolCoach; import cn.iocoder.yudao.module.base.entity.DlDriveSchoolCoachCourse; import cn.iocoder.yudao.module.base.mapper.DlDriveSchoolCoachCourseMapper; @@ -71,4 +72,19 @@ public class DlDriveSchoolCoachCourseServiceImpl extends ServiceImpl + * @author PQZ + * @date 14:17 2025/2/8 + **/ + @Override + public List queryByCourseId(String courseId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(DlDriveSchoolCoachCourse::getCourseId,courseId).eq(BaseDO::getDeleted,0).orderByDesc(BaseDO::getCreateTime); + return list(lambdaQueryWrapper); + } } \ No newline at end of file diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCourseServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCourseServiceImpl.java index 13a220ee..db49fc11 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCourseServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCourseServiceImpl.java @@ -2,10 +2,12 @@ package cn.iocoder.yudao.module.base.service.impl; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.module.base.entity.DlDriveSchoolCoachCourse; import cn.iocoder.yudao.module.base.entity.DlDriveSchoolCourse; import cn.iocoder.yudao.module.base.mapper.DlDriveSchoolCourseMapper; import cn.iocoder.yudao.module.base.service.DlDriveSchoolCoachCourseService; import cn.iocoder.yudao.module.base.service.DlDriveSchoolCourseService; +import cn.iocoder.yudao.module.base.vo.DlDriveSchoolCoachVO; import cn.iocoder.yudao.module.base.vo.DlDriveSchoolCourseVO; import cn.iocoder.yudao.module.jx.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -16,7 +18,10 @@ import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 驾校教练 Service 实现类 @@ -43,7 +48,7 @@ public class DlDriveSchoolCourseServiceImpl extends ServiceImpl queryListPage(DlDriveSchoolCourseVO pageReqVO, Page page) { - return courseMapper.queryListPage(pageReqVO,page); + return courseMapper.queryListPage(pageReqVO, page); } /** @@ -73,9 +78,9 @@ public class DlDriveSchoolCourseServiceImpl extends ServiceImpl coachList = transCoachList(coachCourseService.queryByCourseId(id)); + result.setCoachList(coachList); + // 使用 Stream API 按 coachId 分组 + Map> groupedCoachMap = coachList.stream() + .collect(Collectors.groupingBy( + DlDriveSchoolCoachVO::getCoachName, + Collectors.mapping(coach -> "科目" + coach.getSubject() , Collectors.toList()) + )); + // 将 groupedCoachMap 转换为字符串格式 + String resultString = groupedCoachMap.entrySet().stream() + .map(entry -> entry.getKey() + "[" + String.join(" ", entry.getValue()) + "]") + .collect(Collectors.joining(", ")); + result.setCoachListText(resultString); return result; } + /** + * 数据类型转换 + * @author PQZ + * @date 14:25 2025/2/8 + * @param coachList TODO + * @return java.util.List + **/ + private List transCoachList(List coachList) { + List transList = new ArrayList<>(); + if (!coachList.isEmpty()) { + coachList.forEach(item -> { + DlDriveSchoolCoachVO vo = new DlDriveSchoolCoachVO(); + vo.setCoachId(item.getCoachId()); + vo.setCoachName(item.getCoachName()); + vo.setSubject(item.getSubject()); + vo.setCoachPhone(item.getCoachPhone()); + transList.add(vo); + }); + } + return transList; + } + + } \ No newline at end of file diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/DlDriveSchoolCourseVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/DlDriveSchoolCourseVO.java index ab0d26bf..a8ca0f3a 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/DlDriveSchoolCourseVO.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/DlDriveSchoolCourseVO.java @@ -14,7 +14,6 @@ import java.util.List; @Schema(description = "驾校课程管理VO") @Data public class DlDriveSchoolCourseVO extends DlDriveSchoolCourse { - - List coachList; - + private List coachList; + private String coachListText; } diff --git a/dl-module-jx/src/main/resources/mapper/base/DlDriveSchoolCoachMapper.xml b/dl-module-jx/src/main/resources/mapper/base/DlDriveSchoolCoachMapper.xml index c3056cc2..0e4aca04 100644 --- a/dl-module-jx/src/main/resources/mapper/base/DlDriveSchoolCoachMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/base/DlDriveSchoolCoachMapper.xml @@ -17,8 +17,7 @@ main.deleted = 0 and main.type = #{entity.type} - and main.name like concat('%', #{entity.name}, '%') - + and main.name like concat('%', #{entity.name}, '%') and main.phone like concat('%', #{entity.phone},'%') @@ -32,10 +31,10 @@ main.seniority AS seniority, main.car_id AS carId, main.phone AS phone, - GROUP_CONCAT(dscc.course_type SEPARATOR ',') AS courseTypes + GROUP_CONCAT(DISTINCT dscc.course_type SEPARATOR ',') AS courseTypes FROM drive_school_coach main - LEFT JOIN drive_school_coach_course dscc ON main.id = dscc.coach_id + LEFT JOIN drive_school_coach_course dscc ON main.id = dscc.coach_id AND dscc.deleted = 0 main.deleted = 0 @@ -43,7 +42,7 @@ GROUP BY - main.id,dscc.course_type + main.id order by main.create_time desc \ No newline at end of file