This commit is contained in:
Vinjor 2025-02-10 09:34:10 +08:00
commit 928a6d7f47
5 changed files with 81 additions and 13 deletions

View File

@ -28,9 +28,20 @@ public interface DlDriveSchoolCoachCourseService extends IService<DlDriveSchoolC
/**
* 通过课程id删除课程与教练关联关系
*
* @param courseId 课程id
* @author PQZ
* @date 17:35 2025/2/7
* @param courseId 课程id
**/
**/
void removeByCourseId(String courseId);
/**
* 通过课程id查询课程与教练关联关系
*
* @param courseId 课程id
* @return java.util.List<cn.iocoder.yudao.module.base.entity.DlDriveSchoolCoachCourse>
* @author PQZ
* @date 14:17 2025/2/8
**/
List<DlDriveSchoolCoachCourse> queryByCourseId(String courseId);
}

View File

@ -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<DlDriveScho
lambdaQueryWrapper.eq(DlDriveSchoolCoachCourse::getCourseId,courseId);
remove(lambdaQueryWrapper);
}
/**
* 通过课程id查询课程与教练关联关系
*
* @param courseId 课程id
* @return java.util.List<cn.iocoder.yudao.module.base.entity.DlDriveSchoolCoachCourse>
* @author PQZ
* @date 14:17 2025/2/8
**/
@Override
public List<DlDriveSchoolCoachCourse> queryByCourseId(String courseId) {
LambdaQueryWrapper<DlDriveSchoolCoachCourse> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(DlDriveSchoolCoachCourse::getCourseId,courseId).eq(BaseDO::getDeleted,0).orderByDesc(BaseDO::getCreateTime);
return list(lambdaQueryWrapper);
}
}

View File

@ -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<DlDriveSchoolCou
**/
@Override
public IPage<DlDriveSchoolCourseVO> queryListPage(DlDriveSchoolCourseVO pageReqVO, Page<DlDriveSchoolCourseVO> page) {
return courseMapper.queryListPage(pageReqVO,page);
return courseMapper.queryListPage(pageReqVO, page);
}
/**
@ -73,9 +78,9 @@ public class DlDriveSchoolCourseServiceImpl extends ServiceImpl<DlDriveSchoolCou
**/
@Override
public void saveDriveSchoolCourse(DlDriveSchoolCourseVO courseVO) {
DlDriveSchoolCourse course = BeanUtils.toBean(courseVO,DlDriveSchoolCourse.class);
DlDriveSchoolCourse course = BeanUtils.toBean(courseVO, DlDriveSchoolCourse.class);
saveOrUpdate(course);
coachCourseService.saveCoachCourse(course.getId(),courseVO.getName(),courseVO.getType(),courseVO.getCoachList());
coachCourseService.saveCoachCourse(course.getId(), courseVO.getName(), courseVO.getType(), courseVO.getCoachList());
}
/**
@ -101,9 +106,47 @@ public class DlDriveSchoolCourseServiceImpl extends ServiceImpl<DlDriveSchoolCou
@Override
public DlDriveSchoolCourseVO queryDetailById(String id) {
DlDriveSchoolCourse course = getById(id);
//查询课程信息
DlDriveSchoolCourseVO result = BeanUtils.toBean(course, DlDriveSchoolCourseVO.class);
//课程关联教练
List<DlDriveSchoolCoachVO> coachList = transCoachList(coachCourseService.queryByCourseId(id));
result.setCoachList(coachList);
// 使用 Stream API coachId 分组
Map<String, List<String>> 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<cn.iocoder.yudao.module.base.vo.DlDriveSchoolCoachVO>
**/
private List<DlDriveSchoolCoachVO> transCoachList(List<DlDriveSchoolCoachCourse> coachList) {
List<DlDriveSchoolCoachVO> 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;
}
}

View File

@ -14,7 +14,6 @@ import java.util.List;
@Schema(description = "驾校课程管理VO")
@Data
public class DlDriveSchoolCourseVO extends DlDriveSchoolCourse {
List<DlDriveSchoolCoachVO> coachList;
private List<DlDriveSchoolCoachVO> coachList;
private String coachListText;
}

View File

@ -17,8 +17,7 @@
<where>
main.deleted = 0
<if test="entity.type != null and entity.type != '' ">and main.type = #{entity.type}</if>
<if test="entity.name != null and entity.name != ''">and main.name like concat('%', #{entity.name}, '%')
</if>
<if test="entity.name != null and entity.name != ''">and main.name like concat('%', #{entity.name}, '%')</if>
<if test="entity.phone != null and entity.phone != ''">and main.phone like concat('%', #{entity.phone},'%')
</if>
</where>
@ -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
<where>
main.deleted = 0
<if test="entity.type != null and entity.type != ''">
@ -43,7 +42,7 @@
</if>
</where>
GROUP BY
main.id,dscc.course_type
main.id
order by main.create_time desc
</select>
</mapper>