diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/admin/DriveSchoolAddressController.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/admin/DriveSchoolAddressController.java index 644b8824..07eba7d9 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/admin/DriveSchoolAddressController.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/admin/DriveSchoolAddressController.java @@ -31,8 +31,8 @@ public class DriveSchoolAddressController { **/ @GetMapping("/getList") @Operation(summary = "查满足条件的所有地址") - public CommonResult getList(Integer type) { - return success(addressService.getList(type)); + public CommonResult getList(Integer type,String subject) { + return success(addressService.getList(type,subject)); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/entity/DriveSchoolAddress.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/entity/DriveSchoolAddress.java index 9244097b..a97ce44f 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/entity/DriveSchoolAddress.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/entity/DriveSchoolAddress.java @@ -36,6 +36,10 @@ public class DriveSchoolAddress extends TenantBaseDO { * 详细地址 */ private String address; + /** + * 适用科目,多选(1,2,3,4),多个英文逗号隔开 + */ + private String subjects; /** * 排序 */ 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 aa55239f..38dab635 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 @@ -54,7 +54,7 @@ public interface DlDriveSchoolStudentService extends IService * @param type 地点类型(0-训练|1-考试) * @return java.util.List **/ - List getList(Integer type); + List getList(Integer type,String subject); } 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 5d9d2c4c..b58fede6 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 @@ -68,7 +68,7 @@ public class DlDriveSchoolStudentServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper() .eq(DlDriveSchoolStudent::getUserId,userId) .orderByDesc(BaseDO::getCreateTime); diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DriveSchoolAddressServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DriveSchoolAddressServiceImpl.java index aa353fa9..1ac27faf 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DriveSchoolAddressServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DriveSchoolAddressServiceImpl.java @@ -27,11 +27,14 @@ public class DriveSchoolAddressServiceImpl extends ServiceImpl getList(Integer type) { + public List getList(Integer type,String subject) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); if(null!=type){ queryWrapper.eq(DriveSchoolAddress::getType,type); } + if(null!=subject){ + queryWrapper.like(DriveSchoolAddress::getSubjects,subject); + } queryWrapper.orderByAsc(DriveSchoolAddress::getSort); return this.list(queryWrapper); } 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 c3c9c4fd..9a15c649 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 @@ -40,5 +40,5 @@ public interface ProcessService extends IService { * @param coachId 教练id * @return cn.iocoder.yudao.module.course.entity.Process **/ - Process getByStudentAndCourse(Integer userId,String courseId,Integer subject,Long coachId); + Process getByStudentAndCourse(Long userId,String courseId,Integer subject,Long coachId,String examStatus); } 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 5293ddfa..89a61148 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 @@ -84,14 +84,17 @@ public class ProcessServiceImpl extends ServiceImpl impl * @date 18:39 2025/1/16 **/ @Override - public Process getByStudentAndCourse(Integer userId, String courseId, Integer subject, Long coachId) { + public Process getByStudentAndCourse(Long userId, String courseId, Integer subject, Long coachId,String examStatus) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(Process::getUserId,userId) .eq(Process::getCoachId,coachId) .eq(Process::getCourseId,courseId) .eq(Process::getSubject,subject) - .eq(Process::getStatus,"1") - .orderByDesc(BaseDO::getCreateTime); + .eq(Process::getStatus,"1"); + if(null!=examStatus){ + queryWrapper.eq(Process::getExamStatus,examStatus); + } + queryWrapper.orderByDesc(BaseDO::getCreateTime); List processList = this.list(queryWrapper); return processList.isEmpty()?null:processList.get(0); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/entity/ExamBatch.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/entity/ExamBatch.java index 6888343b..36409d22 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/entity/ExamBatch.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/entity/ExamBatch.java @@ -67,18 +67,6 @@ public class ExamBatch extends TenantBaseDO { */ private String addr; - /** - * 用户(学员)ID - */ - private Long userId; - /** - * 用户(学员)姓名 - */ - private String userName; - /** - * 学员手机号 - */ - private String userMobile; /** * 通过率 */ diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/entity/ExamBatchItem.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/entity/ExamBatchItem.java index 8a115d97..802b2c97 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/entity/ExamBatchItem.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/entity/ExamBatchItem.java @@ -40,6 +40,10 @@ public class ExamBatchItem extends TenantBaseDO { * 考试分数 */ private Double fraction; + /** + * 是否通过 + */ + private Boolean ifPass; /** * 图片,多个英文逗号隔开 */ diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/impl/ExamBatchItemServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/impl/ExamBatchItemServiceImpl.java index c15b1808..ae5d928d 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/impl/ExamBatchItemServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/impl/ExamBatchItemServiceImpl.java @@ -1,20 +1,30 @@ package cn.iocoder.yudao.module.exam.service.impl; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import cn.iocoder.yudao.module.course.entity.Process; import cn.iocoder.yudao.module.course.mapper.ProcessMapper; +import cn.iocoder.yudao.module.course.service.ProcessService; +import cn.iocoder.yudao.module.exam.entity.ExamBatch; import cn.iocoder.yudao.module.exam.entity.ExamBatchItem; import cn.iocoder.yudao.module.exam.mapper.ExamBatchItemMapper; 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.ExamBatchVO; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.beans.BeanUtils; +import lombok.SneakyThrows; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.List; +import java.util.stream.Collectors; /** * 考试批次明细表 Service 实现类 @@ -27,6 +37,11 @@ public class ExamBatchItemServiceImpl extends ServiceImpl queryListPage(ExamBatchVO pageReqVO, Page page) { + //教练ID + Long userId = SecurityFrameworkUtils.getLoginUserId(); + pageReqVO.setCoachId(userId); IPage rtnList = examBatchItemMapper.queryListPage(pageReqVO, page); return rtnList; } @@ -62,15 +80,88 @@ public class ExamBatchItemServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper() + .eq(ExamBatchItem::getBatchId,id); + List allList = this.list(queryWrapper); + if(!allList.isEmpty()){ + List passList = allList.stream().filter(item->null!=item.getIfPass() && item.getIfPass()).collect(Collectors.toList()); + if(!passList.isEmpty()){ + BigDecimal result = new BigDecimal(passList.size()).divide(new BigDecimal(allList.size()), 2, RoundingMode.HALF_UP); + examBatch.setPassRate(result.doubleValue()); + examBatchService.updateById(examBatch); + } + } + } } 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 2c13bea3..8c3b4aa8 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 @@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -33,6 +34,7 @@ public class ExamBatchServiceImpl extends ServiceImpl itemList = new ArrayList<>(); examBatchVO.getItemList().forEach(item->{ ExamBatchItem batchItem = new ExamBatchItem(); - batchItem.setBatchId(examBatchVO.getId()); BeanUtils.copyProperties(item,batchItem); + batchItem.setBatchId(examBatchVO.getId()); itemList.add(batchItem); }); //存子表数据 diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchItemVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchItemVO.java index 9b85e2ee..f0c2faf0 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchItemVO.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchItemVO.java @@ -21,4 +21,12 @@ public class ExamBatchItemVO extends ExamBatchItem { * 学生电话 */ private String userMobile; + /** + * 考试批次编号 + */ + private String batchName; + /** + * 本科目累计训练时长 + */ + private Double trainTime; } 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 1dffd5e0..d456a148 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 @@ -11,4 +11,8 @@ public class ExamBatchVO extends ExamBatch { * 明细子表数据 */ private List itemList; + /** + * 学员姓名 + */ + private String userName; } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/controller/admin/ReservationCourseController.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/controller/admin/ReservationCourseController.java index 1952b4a8..0572cd6f 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/controller/admin/ReservationCourseController.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/controller/admin/ReservationCourseController.java @@ -80,7 +80,7 @@ public class ReservationCourseController { @GetMapping("/getUserInfoAndReservation") @Operation(summary = "根据学生userId查询学生信息及当天的预约记录") @Parameter(name = "id", description = "学生userId", required = true, example = "1024") - public CommonResult getReservationCourse(@RequestParam("userId") Integer userId, + public CommonResult getReservationCourse(@RequestParam("userId") Long userId, @RequestParam("courseId") String courseId, @RequestParam("type") String type, @RequestParam("subject") Integer subject) { diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/ReservationCourseService.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/ReservationCourseService.java index d3841585..7e8022bd 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/ReservationCourseService.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/ReservationCourseService.java @@ -32,6 +32,6 @@ public interface ReservationCourseService extends IService { * @param userId * @return java.util.Map **/ - Map getUserInfoAndReservation(Integer userId,String courseId,Integer subject,String type); + Map getUserInfoAndReservation(Long userId,String courseId,Integer subject,String type); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/TrainService.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/TrainService.java index 9bb0e3a3..01c5135b 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/TrainService.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/TrainService.java @@ -48,5 +48,5 @@ public interface TrainService extends IService { * @param dayStr 日期 * @return cn.iocoder.yudao.module.train.entity.Train **/ - Train getUserTrainData(Integer userId,String courseId,Integer subject,String dayStr); + Train getUserTrainData(Long userId,String courseId,Integer subject,String dayStr); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/impl/ReservationCourseServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/impl/ReservationCourseServiceImpl.java index dfa08c07..6af932af 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/impl/ReservationCourseServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/impl/ReservationCourseServiceImpl.java @@ -66,7 +66,7 @@ public class ReservationCourseServiceImpl extends ServiceImpl getUserInfoAndReservation(Integer userId,String courseId,Integer subject,String type) { + public Map getUserInfoAndReservation(Long userId,String courseId,Integer subject,String type) { Map rtnMap = new HashMap<>(); //当前教练ID Long coachId = SecurityFrameworkUtils.getLoginUserId(); @@ -86,7 +86,7 @@ public class ReservationCourseServiceImpl extends ServiceImpl implements * @date 10:21 2025/1/17 **/ @Override - public Train getUserTrainData(Integer userId, String courseId, Integer subject, String dayStr) { + public Train getUserTrainData(Long userId, String courseId, Integer subject, String dayStr) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(Train::getUserId,userId) .eq(Train::getCourseId,courseId) 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 f953f83d..7ef76647 100644 --- a/dl-module-jx/src/main/resources/mapper/exam/ExamBatchItemMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/exam/ExamBatchItemMapper.xml @@ -6,17 +6,21 @@