From f20e47602775ec4c594c83bf92517df952a7a80d Mon Sep 17 00:00:00 2001 From: Lx <935448346@qq.com> Date: Wed, 18 Jun 2025 17:24:30 +0800 Subject: [PATCH] 0618 --- .../admin/DlDriveSchoolStudentController.java | 33 ++++++ .../mapper/DlDriveSchoolStudentMapper.java | 9 ++ .../service/DlDriveSchoolStudentService.java | 10 ++ .../service/impl/DataViewServiceImpl.java | 4 +- .../impl/DlDriveSchoolCoachServiceImpl.java | 12 +- .../impl/DlDriveSchoolStudentServiceImpl.java | 16 +++ .../controller/admin/ProcessController.java | 32 +++++ .../course/entity/SchoolCourseOrder.java | 4 + .../module/course/mapper/ProcessMapper.java | 14 +++ .../module/course/service/ProcessService.java | 17 +++ .../service/impl/ProcessServiceImpl.java | 110 ++++++++++++++++++ .../impl/SchoolCourseOrderServiceImpl.java | 18 +++ .../yudao/module/course/vo/ProcessVO.java | 5 + .../controller/admin/ExamBatchController.java | 19 +++ .../module/exam/mapper/ExamBatchMapper.java | 5 +- .../module/exam/service/ExamBatchService.java | 6 + .../service/impl/ExamBatchServiceImpl.java | 29 ++++- .../yudao/module/exam/vo/ExamBatchNewVO.java | 34 ++++++ .../yudao/module/exam/vo/ExamBatchVO.java | 7 ++ .../base/DlDriveSchoolStudentMapper.xml | 63 ++++++++++ .../resources/mapper/course/ProcessMapper.xml | 92 +++++++++++++++ .../mapper/course/SchoolCourseOrderMapper.xml | 1 + .../mapper/exam/ExamBatchItemMapper.xml | 7 +- .../resources/mapper/exam/ExamBatchMapper.xml | 46 ++++++++ 24 files changed, 585 insertions(+), 8 deletions(-) create mode 100644 dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchNewVO.java diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/admin/DlDriveSchoolStudentController.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/admin/DlDriveSchoolStudentController.java index de9028d1..42aa8d49 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/admin/DlDriveSchoolStudentController.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/admin/DlDriveSchoolStudentController.java @@ -265,4 +265,37 @@ public class DlDriveSchoolStudentController { return success(schoolStudentService.updateChannel(student)); } + /** + * 获取教练已经毕业的学员列表 + * @param coachId + * @param courseType + * @return + */ + @GetMapping("/getGradStudentByCoachId") + public CommonResult> getGradStudentByCourseType(@RequestParam("coachId") String coachId, + @RequestParam(name = "courseType", required = false) String courseType, + @RequestParam(name = "name", required = false) String name, + @RequestParam(name = "sort", required = false) String sort, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + Page page = new Page<>(pageNo, pageSize); + return success(schoolStudentService.getGradStudentByCourseType(coachId, courseType, name, sort, page)); + } + + /** + * 获取教练未毕业的学员列表 + * @param coachId + * @param courseType + * @return + */ + @GetMapping("/getNoGradStudentByCoachId") + public CommonResult> getNoGradStudentByCourseType(@RequestParam("coachId") String coachId, + @RequestParam(name = "courseType", required = false) String courseType, + @RequestParam(name = "name", required = false) String name, + @RequestParam(name = "sort", required = false) String sort, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + Page page = new Page<>(pageNo, pageSize); + return success(schoolStudentService.getNoGradStudentByCourseType(coachId, courseType, name, sort, page)); + } } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/mapper/DlDriveSchoolStudentMapper.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/mapper/DlDriveSchoolStudentMapper.java index 62d048ad..57c34541 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/mapper/DlDriveSchoolStudentMapper.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/mapper/DlDriveSchoolStudentMapper.java @@ -152,4 +152,13 @@ public interface DlDriveSchoolStudentMapper extends BaseMapper indexCusStudentList(String startTime, String endTime); List getAll(@Param("entity") DlDriveSchoolStudent query); + + /** + * 获取教练已经毕业的学员列表 + */ + IPage getGradStudentByCourseType(@Param("coachId") String coachId, @Param("courseType") String courseType, @Param("name") String name, @Param("sort") String sort,Page page); + /** + * 获取教练已经毕业的学员列表 + */ + IPage getNoGradStudentByCourseType(@Param("coachId") String coachId, @Param("courseType") String courseType, @Param("name") String name, @Param("sort") String sort,Page page); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/DlDriveSchoolStudentService.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/DlDriveSchoolStudentService.java index ff56fa28..aa593cff 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/DlDriveSchoolStudentService.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/DlDriveSchoolStudentService.java @@ -194,4 +194,14 @@ public interface DlDriveSchoolStudentService extends IService getGradStudentByCourseType(String coachId, String courseType, String name, String sort, Page page); + + /** + * 获取教练未毕业的学员列表 + */ + IPage getNoGradStudentByCourseType(String coachId, String courseType, String name, String sort, Page page); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DataViewServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DataViewServiceImpl.java index fb4af103..57f1f24a 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DataViewServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DataViewServiceImpl.java @@ -250,8 +250,7 @@ public class DataViewServiceImpl implements DataViewService { studentInfoMap.put("schoolRate", 0 != schoolRate ? (Double.parseDouble(df.format(schoolRate)) * 100) : 0); studentInfoMap.put("businessNum", businessNum); studentInfoMap.put("businessAmount", businessAmount); -// studentInfoMap.put("businessRate", 0 != businessRate ? (Double.parseDouble(df.format(businessRate)) * 100) : 0); - studentInfoMap.put("businessRate", businessRate != 0 ? formatRate(businessRate) : 0); + studentInfoMap.put("businessRate", 0 != businessRate ? (Double.parseDouble(df.format(businessRate)) * 100) : 0); rtnObj.setStudentInfo(studentInfoMap); /*4.财务情况--*/ //应收 @@ -538,6 +537,7 @@ public class DataViewServiceImpl implements DataViewService { courseTypeGraduatedCount.forEach((key, count) -> rtnMap.put(key, count)); return rtnMap; + //TODO 需要修改为查询订单表的grad_time 和 pass_time } /*public Map getStudentCount() { List list = studentMapper.selectStudentListCount(); diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCoachServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCoachServiceImpl.java index 319ba0e0..00faf0de 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCoachServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCoachServiceImpl.java @@ -21,6 +21,8 @@ import cn.iocoder.yudao.module.base.vo.*; import cn.iocoder.yudao.module.constant.InspectionConstants; import cn.iocoder.yudao.module.course.entity.SchoolCommission; import cn.iocoder.yudao.module.course.mapper.SchoolCommissionMapper; +import cn.iocoder.yudao.module.course.service.ProcessService; +import cn.iocoder.yudao.module.course.vo.ProcessVO; import cn.iocoder.yudao.module.exam.mapper.ExamBatchItemMapper; import cn.iocoder.yudao.module.exam.vo.ExamBatchItemVO; import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileDO; @@ -112,6 +114,9 @@ public class DlDriveSchoolCoachServiceImpl extends ServiceImpl studentVOList = studentMapper.selectStudentListCoach(coach.getUserId(),startTimeStr,endTimeStr); - int overNum = (int) studentVOList.stream().filter(item -> null != item.getGradTime()).count(); + int overNum = (int) studentVOList.stream().filter(item -> null != item.getOrderGradTime()).count(); int noOverNum = studentVOList.size()-overNum; Map studentInfoMap = new HashMap<>(); studentInfoMap.put("overNum",overNum); studentInfoMap.put("noOverNum",noOverNum); + List subject2Over = processService.getPassStudentList(coach.getUserId(), 2, startTimeStr, endTimeStr); + List subject3Over = processService.getPassStudentList(coach.getUserId(), 3, startTimeStr, endTimeStr); + //考试情况 List examBatchItemVOList = examBatchItemMapper.selectByCoachId(coach.getUserId(),startTimeStr,endTimeStr); Double subject2Num = 0.0; @@ -562,6 +570,8 @@ public class DlDriveSchoolCoachServiceImpl extends ServiceImpl studentList = studentMapper.selectStudentList(coach.getUserId(), startTimeStr, endTimeStr); int coachNum=0; diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolStudentServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolStudentServiceImpl.java index bbe1ffc2..87043605 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolStudentServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolStudentServiceImpl.java @@ -697,4 +697,20 @@ public class DlDriveSchoolStudentServiceImpl extends ServiceImpl getGradStudentByCourseType(String coachId, String courseType, String name, String sort, Page page) { + return dlDriveSchoolStudentMapper.getGradStudentByCourseType(coachId, courseType, name, sort, page); + } + + /** + * 获取教练未毕业的学员列表 + */ + @Override + public IPage getNoGradStudentByCourseType(String coachId, String courseType, String name, String sort, Page page) { + return dlDriveSchoolStudentMapper.getNoGradStudentByCourseType(coachId, courseType, name, sort, page); + } + } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/ProcessController.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/ProcessController.java index eeaacc3e..06ce88c7 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/ProcessController.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/ProcessController.java @@ -31,6 +31,7 @@ import javax.validation.Valid; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; +import java.util.Map; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -198,4 +199,35 @@ public class ProcessController { public CommonResult updateCoachForScoreInput(String id, Long coachId, String coachName){ return success(processService.updateCoachForScoreInput(id, coachId, coachName)); } + + /** + * 已毕业学员统计 + */ + @GetMapping("/getGraduateStudent") + public CommonResult getGraduateStudent(String courseType){ + return success(processService.getGraduateStudent(courseType)); + } + + /** + * 未毕业学员统计 + */ + @GetMapping("/getNoGraduateStudent") + public CommonResult getNoGraduateStudent(String courseType){ + return success(processService.getNoGraduateStudent(courseType)); + } + + /** + * 获取 科目二/三 通过学员 + */ + @GetMapping("/getPassStudent") + public CommonResult> getPassStudent(@RequestParam("subject") int subject, + @RequestParam("coachId") Long coachId, + @RequestParam(name = "courseType", required = false) String courseType, + @RequestParam(name = "name", required = false) String name, + @RequestParam(name = "sort", required = false) String sort, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize){ + Page page = new Page<>(pageNo, pageSize); + return success(processService.getPassStudent(coachId, subject, courseType, name, sort, page)); + } } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/entity/SchoolCourseOrder.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/entity/SchoolCourseOrder.java index 744bfca0..ee9f7611 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/entity/SchoolCourseOrder.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/entity/SchoolCourseOrder.java @@ -97,6 +97,10 @@ public class SchoolCourseOrder extends TenantBaseDO { * 是否已面签 0:否 1: 是 */ private Integer isSign; + /** + * 面签时间 + */ + private LocalDateTime signTime; /** * 尾款 */ diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/mapper/ProcessMapper.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/mapper/ProcessMapper.java index 7dd40200..c3030f67 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/mapper/ProcessMapper.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/mapper/ProcessMapper.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.course.mapper; +import cn.iocoder.yudao.module.base.entity.DlDriveSchoolStudent; import cn.iocoder.yudao.module.base.vo.DlDriveSchoolCoachPageReqVO; import cn.iocoder.yudao.module.base.vo.DlDriveSchoolCoachRespVO; import cn.iocoder.yudao.module.course.entity.Process; @@ -92,4 +93,17 @@ public interface ProcessMapper extends BaseMapper { ExamBatch getBatchForProcess(@Param("entity") Process entity); + /** + * 已毕业学员统计 + */ + List getGraduateStudent(String courseType); + List getNoGraduateStudent(String courseType); + + /** + * + */ + IPage getPassStudent(@Param("coachId")Long coachId, @Param("subject")int subject, @Param("courseType") String courseType, @Param("name") String name, @Param("sort") String sort,Page page); + List getPassStudentList(@Param("coachId")Long coachId, @Param("subject")int subject, @Param("startTime") String startTime, @Param("endTime")String endTime); + + } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/ProcessService.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/ProcessService.java index 0db8c05f..77088e2a 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/ProcessService.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/ProcessService.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.course.service; +import cn.iocoder.yudao.module.base.entity.DlDriveSchoolStudent; import cn.iocoder.yudao.module.course.entity.Process; import cn.iocoder.yudao.module.course.vo.ProcessAndExamBatchVO; import cn.iocoder.yudao.module.course.vo.ProcessNewVO; @@ -153,4 +154,20 @@ public interface ProcessService extends IService { * 在录入成绩出修改教练 */ Boolean updateCoachForScoreInput(String id, Long coachId, String coachName); + + /** + * 已毕业学员统计 + */ + List> getGraduateStudent(String courseType); + + /** + * 未毕业学员统计 + */ + List> getNoGraduateStudent(String courseType); + + /** + * 获取 科目二/三 通过学员 + */ + IPage getPassStudent(Long coachId, int subject, String courseType, String name, String sort, Page page); + List getPassStudentList(Long coachId, int subject, String startTime, String endTime); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/ProcessServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/ProcessServiceImpl.java index 4d3ae6f9..bd7a64f3 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/ProcessServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/ProcessServiceImpl.java @@ -858,6 +858,114 @@ public class ProcessServiceImpl extends ServiceImpl impl return false; } } + + /** + * 已毕业学员统计 + */ + @Override + public List> getGraduateStudent(String courseType) { + List rawList = processMapper.getGraduateStudent(courseType); + + Map> resultMap = new HashMap<>(); + + for (Process row : rawList) { + Long coachId = row.getCoachId(); + String coachName = row.getCoachName(); + String courseTypeVal = row.getCourseType(); + String images = row.getImages(); + Long userId = row.getUserId(); + + // 先确保教练一定加入 map + Map coachMap = resultMap.computeIfAbsent(coachId, k -> { + Map m = new HashMap<>(); + m.put("coachId", coachId); + m.put("coachName", coachName); + m.put("studentCount", 0); + m.put("images", images); + return m; + }); + + // 有学员才进行统计 + if (userId != null) { + // 统计总数 + int count = (int) coachMap.get("studentCount"); + coachMap.put("studentCount", count + 1); + + // 统计各课程类型数量 + if (courseTypeVal != null) { + String key = courseTypeVal + "Num"; + int typeCount = (int) coachMap.getOrDefault(key, 0); + coachMap.put(key, typeCount + 1); + } + } + } + + // 按照总数倒序排序 + return resultMap.values().stream() + .sorted((a, b) -> ((Integer) b.get("studentCount")).compareTo((Integer) a.get("studentCount"))) + .collect(Collectors.toList()); + } + + /** + * 未毕业学员统计 + */ + @Override + public List> getNoGraduateStudent(String courseType) { + List rawList = processMapper.getNoGraduateStudent(courseType); + + Map> resultMap = new HashMap<>(); + + for (Process row : rawList) { + Long coachId = row.getCoachId(); + String coachName = row.getCoachName(); + String courseTypeVal = row.getCourseType(); + String images = row.getImages(); + Long userId = row.getUserId(); + + // 先确保教练一定加入 map + Map coachMap = resultMap.computeIfAbsent(coachId, k -> { + Map m = new HashMap<>(); + m.put("coachId", coachId); + m.put("coachName", coachName); + m.put("studentCount", 0); + m.put("images", images); + return m; + }); + + // 有学员才进行统计 + if (userId != null) { + // 统计总数 + int count = (int) coachMap.get("studentCount"); + coachMap.put("studentCount", count + 1); + + // 统计各课程类型数量 + if (courseTypeVal != null) { + String key = courseTypeVal + "Num"; + int typeCount = (int) coachMap.getOrDefault(key, 0); + coachMap.put(key, typeCount + 1); + } + } + } + + // 按照总数倒序排序 + return resultMap.values().stream() + .sorted((a, b) -> ((Integer) b.get("studentCount")).compareTo((Integer) a.get("studentCount"))) + .collect(Collectors.toList()); + } + + /** + * 获取 科目二/三 通过学员 + */ + @Override + public IPage getPassStudent(Long coachId, int subject, String courseType, String name, String sort, Page page) { + return processMapper.getPassStudent(coachId, subject, courseType, name, sort, page); + } + + @Override + public List getPassStudentList(Long coachId, int subject, String startTime, String endTime) { + return processMapper.getPassStudentList(coachId, subject, startTime, endTime); + } + /** * 生成32位uuid */ @@ -866,4 +974,6 @@ public class ProcessServiceImpl extends ServiceImpl impl return uuid.toString().replace("-", ""); } + + } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolCourseOrderServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolCourseOrderServiceImpl.java index 8bec23be..ddc24c13 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolCourseOrderServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolCourseOrderServiceImpl.java @@ -88,6 +88,7 @@ public class SchoolCourseOrderServiceImpl extends ServiceImpl getStudentByCoachId(@RequestParam("subject") int subject, + @RequestParam(name ="coachId", required = false) Long coachId, + @RequestParam(name = "ifPass", required = false) String ifPass, + @RequestParam(name = "name", required = false) String name, + @RequestParam(name = "sort", required = false) String sort, + @RequestParam(name = "timeType", required = false) String timeType, + @RequestParam(name = "startTime", required = false) String startTime, + @RequestParam(name = "endTime", required = false) String endTime, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + Page page = new Page<>(pageNo,pageSize); + return success(examBatchService.getStudentByCoachId(subject, coachId, ifPass, name, sort, timeType, startTime, endTime, page)); + } + } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/mapper/ExamBatchMapper.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/mapper/ExamBatchMapper.java index 1e194219..11145f83 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/mapper/ExamBatchMapper.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/mapper/ExamBatchMapper.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.exam.mapper; import cn.iocoder.yudao.module.exam.entity.ExamBatch; +import cn.iocoder.yudao.module.exam.vo.ExamBatchNewVO; import cn.iocoder.yudao.module.exam.vo.ExamBatchVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -18,4 +19,6 @@ public interface ExamBatchMapper extends BaseMapper { IPage queryListPage(@Param("entity") ExamBatchVO entity, Page page); -} \ No newline at end of file + IPage getStudentByCoachId(@Param("subject") int subject, @Param("coachId")Long coachId, @Param("ifPass")String ifPass, @Param("name")String name, @Param("sort")String sort, @Param("startTime") String startTime, @Param("endTime") String endTime, Page page); + +} diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/ExamBatchService.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/ExamBatchService.java index 332d2404..799a455d 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/ExamBatchService.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/ExamBatchService.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.exam.service; import cn.iocoder.yudao.module.exam.entity.ExamBatch; +import cn.iocoder.yudao.module.exam.vo.ExamBatchNewVO; import cn.iocoder.yudao.module.exam.vo.ExamBatchVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -38,4 +39,9 @@ public interface ExamBatchService extends IService { * @return cn.iocoder.yudao.module.exam.vo.ExamBatchVO **/ ExamBatchVO selectOneById(String id); + + /** + * 某一教练学员通过和未通过列表 + */ + IPage getStudentByCoachId(int subject, Long coachId, String ifPass, String name, String sort, String timeType, String startTime, String endTime, Page page); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/impl/ExamBatchServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/impl/ExamBatchServiceImpl.java index 056e0600..b0f30ad9 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/impl/ExamBatchServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/impl/ExamBatchServiceImpl.java @@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.exam.mapper.ExamBatchMapper; import cn.iocoder.yudao.module.exam.service.ExamBatchItemService; import cn.iocoder.yudao.module.exam.service.ExamBatchService; import cn.iocoder.yudao.module.exam.vo.ExamBatchItemVO; +import cn.iocoder.yudao.module.exam.vo.ExamBatchNewVO; import cn.iocoder.yudao.module.exam.vo.ExamBatchVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -146,4 +147,30 @@ public class ExamBatchServiceImpl extends ServiceImpl getStudentByCoachId(int subject, Long coachId, String ifPass, String name, String sort, String timeType, String startTime, String endTime, Page page) { + String startTimeStr = ""; + String endTimeStr = ""; + if("more".equals(timeType)){ + if(StringUtils.isNotEmpty(startTime)){ + startTimeStr = startTime+" 00:00:01"; + } + if(StringUtils.isNotEmpty(endTime)) { + endTimeStr = endTime + " 23:59:59"; + } + }else if("month".equals(timeType)){ + //当月 + startTimeStr = DateUtil.format(DateUtil.beginOfMonth(DateUtil.date()),"yyyy-MM-dd")+" 00:00:01"; + endTimeStr = DateUtil.format(DateUtil.endOfMonth(DateUtil.date()),"yyyy-MM-dd")+" 23:59:59"; + }else if("day".equals(timeType)){ + //当天 + startTimeStr = DateUtil.formatDate(DateUtil.date())+" 00:00:01"; + endTimeStr = DateUtil.formatDate(DateUtil.date())+" 23:59:59"; + } + return examBatchMapper.getStudentByCoachId(subject,coachId,ifPass,name,sort,startTimeStr,endTimeStr,page); + } + +} diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchNewVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchNewVO.java new file mode 100644 index 00000000..f3ceb2b5 --- /dev/null +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchNewVO.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.exam.vo; + +import cn.iocoder.yudao.module.exam.entity.ExamBatch; +import lombok.Data; + +import java.util.Date; + +@Data +public class ExamBatchNewVO extends ExamBatch { + + /** + * 学员姓名 + */ + private String name; + + /** + * 学员头像 + */ + private String avatar; + + /** + * 学员id + */ + private Long userId; + /** + * 学员手机号 + */ + private String phone; + + /** + * 考试时间 + */ + private Date startTime; +} diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchVO.java index bc99855d..f98ce3fc 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchVO.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchVO.java @@ -38,4 +38,11 @@ public class ExamBatchVO extends ExamBatch { */ private Integer studentCount; + /** + * 教练头像 + */ + private String image; + + + } diff --git a/dl-module-jx/src/main/resources/mapper/base/DlDriveSchoolStudentMapper.xml b/dl-module-jx/src/main/resources/mapper/base/DlDriveSchoolStudentMapper.xml index 7deafeca..6e3e2c10 100644 --- a/dl-module-jx/src/main/resources/mapper/base/DlDriveSchoolStudentMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/base/DlDriveSchoolStudentMapper.xml @@ -529,6 +529,7 @@ AND dsco.create_time <= #{endTime} + + + + + + + + + diff --git a/dl-module-jx/src/main/resources/mapper/course/ProcessMapper.xml b/dl-module-jx/src/main/resources/mapper/course/ProcessMapper.xml index 8c4f85b5..a116b575 100644 --- a/dl-module-jx/src/main/resources/mapper/course/ProcessMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/course/ProcessMapper.xml @@ -200,4 +200,96 @@ + + + + + + + + diff --git a/dl-module-jx/src/main/resources/mapper/course/SchoolCourseOrderMapper.xml b/dl-module-jx/src/main/resources/mapper/course/SchoolCourseOrderMapper.xml index b9168b0a..aa758f60 100644 --- a/dl-module-jx/src/main/resources/mapper/course/SchoolCourseOrderMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/course/SchoolCourseOrderMapper.xml @@ -28,6 +28,7 @@ and main.user_id = #{entity.userId} and main.payment_status = #{entity.paymentStatus} and main.if_end = #{entity.ifEnd} + and main.coach_user_name = #{entity.coachUserName} order by main.create_time desc diff --git a/dl-module-jx/src/main/resources/mapper/exam/ExamBatchItemMapper.xml b/dl-module-jx/src/main/resources/mapper/exam/ExamBatchItemMapper.xml index 6c16ba7e..34100309 100644 --- a/dl-module-jx/src/main/resources/mapper/exam/ExamBatchItemMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/exam/ExamBatchItemMapper.xml @@ -163,6 +163,7 @@ SELECT c.user_id AS coach_id, c.name AS coach_name, + c.image, COUNT(i.id) AS student_count, SUM(CASE WHEN i.if_pass = 1 THEN 1 ELSE 0 END) AS pass_count, ROUND( @@ -179,15 +180,15 @@ LEFT JOIN drive_school_exam_batch_item i ON i.batch_id = b.id AND i.deleted = 0 - AND i.create_time >= #{entity.startTimeSearch} + AND b.start_time >= #{entity.startTimeSearch} - AND i.create_time <= #{entity.endTimeSearch} + AND b.start_time <= #{entity.endTimeSearch} WHERE c.deleted = 0 - AND c.id = #{entity.coachId} + AND c.user_id = #{entity.coachId} GROUP BY c.id, c.name diff --git a/dl-module-jx/src/main/resources/mapper/exam/ExamBatchMapper.xml b/dl-module-jx/src/main/resources/mapper/exam/ExamBatchMapper.xml index a9046d13..11e64dca 100644 --- a/dl-module-jx/src/main/resources/mapper/exam/ExamBatchMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/exam/ExamBatchMapper.xml @@ -27,4 +27,50 @@ ORDER BY dseb.create_time DESC + +