diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/BusinessRecordVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/BusinessRecordVO.java index 9470ab51..0aee075d 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/BusinessRecordVO.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/BusinessRecordVO.java @@ -18,6 +18,7 @@ public class BusinessRecordVO extends TenantBaseDO { private String channel; private String courseId; private String courseName; + private String courseType; private String coachUserName; private BigDecimal reserveMoney; private BigDecimal restMoney; @@ -30,5 +31,6 @@ public class BusinessRecordVO extends TenantBaseDO { private BigDecimal subsidy; private String scheme; private String ifEnd; + private String image; } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/jx/domain/DriveSchoolCar.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/jx/domain/DriveSchoolCar.java index 23f9cbd3..701781bf 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/jx/domain/DriveSchoolCar.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/jx/domain/DriveSchoolCar.java @@ -2,12 +2,14 @@ package cn.iocoder.yudao.module.jx.domain; import cn.iocoder.yudao.annotation.Excel; import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; +import cn.iocoder.yudao.module.train.entity.Train; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 车辆信息对象 drive_school_car @@ -118,4 +120,36 @@ public class DriveSchoolCar extends TenantBaseDO /** 车龄 */ @TableField(exist = false) private Long carOld; + + private String userNum; + + /** + * 训练开始时间 + */ + private Date earliestStartTime; + + /** + * 训练结束时间 + */ + private Date latestEndTime; + + /** + * 累计训练时间 + */ + private String totalTrainTime; + + /** + * 科目二训练时间 + */ + private String subject2TrainTime; + + /** + * 科目三训练时间 + */ + private String subject3TrainTime; + + /** + * 学员姓名及科目 + */ + private List studentList; } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/jx/mapper/DriveSchoolCarMapper.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/jx/mapper/DriveSchoolCarMapper.java index af6f3fef..19219785 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/jx/mapper/DriveSchoolCarMapper.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/jx/mapper/DriveSchoolCarMapper.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.jx.mapper; import cn.iocoder.yudao.module.jx.domain.DriveSchoolCar; +import cn.iocoder.yudao.module.train.entity.Train; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -54,7 +55,15 @@ public interface DriveSchoolCarMapper extends BaseMapper * @param endTime 截止时间 * @return java.util.List **/ - IPage selectTrainCar(@Param("coachId")Long coachId, @Param("startTime") String startTime, + IPage selectTrainCar(@Param("coachId")Long coachId, @Param("subject") Integer subject, @Param("startTime") String startTime, @Param("endTime")String endTime,@Param("searchValue")String searchValue, @Param("courseType")String courseType, Page page); + + List selectTrainStudentList(@Param("coachId")Long coachId, @Param("subject") Integer subject, @Param("startTime") String startTime, + @Param("endTime")String endTime, @Param("searchValue")String searchValue, + @Param("courseType")String courseType); + + String selectTrainStudent(@Param("coachId")Long coachId, @Param("subject") Integer subject, @Param("startTime") String startTime, + @Param("endTime")String endTime,@Param("searchValue")String searchValue, + @Param("courseType")String courseType); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/controller/admin/TrainController.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/controller/admin/TrainController.java index b77c2a24..83dd2bd5 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/controller/admin/TrainController.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/controller/admin/TrainController.java @@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.base.vo.DlDriveSchoolStudentVO; import cn.iocoder.yudao.module.course.service.ProcessService; import cn.iocoder.yudao.module.jx.domain.DriveSchoolCar; import cn.iocoder.yudao.module.jx.mapper.DriveSchoolCarMapper; +import cn.iocoder.yudao.module.train.entity.Train; import cn.iocoder.yudao.module.train.service.TrainService; import cn.iocoder.yudao.module.train.vo.TrainVO; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -22,6 +23,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; + import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - 练车记录") @@ -129,7 +132,52 @@ public class TrainController { }else{ //训练车辆 Page page = new Page<>(pageNo,pageSize); - return success(carMapper.selectTrainCar(coachId,startTimeStr,endTimeStr,searchValue,courseType,page)); + IPage driveSchoolCarIPage = carMapper.selectTrainCar(coachId, subject, startTimeStr, endTimeStr, searchValue, courseType, page); + for (DriveSchoolCar record : driveSchoolCarIPage.getRecords()) { + List trainList = carMapper.selectTrainStudentList(Long.parseLong(record.getUserId()), subject, startTimeStr, endTimeStr, searchValue, courseType); + record.setStudentList(trainList); + } + + return success(driveSchoolCarIPage); } } -} \ No newline at end of file + + @GetMapping("/indexGetTrainStudentNum") + @Operation(summary = "首页数据统计查询接口") + public CommonResult indexGetTrainStudentNum(@RequestParam(value = "type") String type, + @RequestParam(value = "timeType") String timeType, + @RequestParam(value = "coachId",required = false) Long coachId, + @RequestParam(value = "sourceCoachId",required = false) Long sourceCoachId, + @RequestParam(value = "searchValue",required = false) String searchValue, + @RequestParam(value = "courseType",required = false) String courseType, + @RequestParam(value = "subject",required = false) Integer subject, + @RequestParam(value = "sort",required = false) String sort, + @RequestParam(value = "startTime",required = false) String startTime, + @RequestParam(value = "endTime",required = false) String endTime, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + //默认查全部数据 + 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 success(carMapper.selectTrainStudent(coachId,subject, startTimeStr,endTimeStr,searchValue,courseType)); + + } +} diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/controller/app/AppTrainController.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/controller/app/AppTrainController.java index 7bc0eff7..20ed1e69 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/controller/app/AppTrainController.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/controller/app/AppTrainController.java @@ -130,7 +130,7 @@ public class AppTrainController { }else{ //训练车辆 Page page = new Page<>(pageNo,pageSize); - return success(carMapper.selectTrainCar(coachId,startTimeStr,endTimeStr,searchValue,courseType,page)); + return success(carMapper.selectTrainCar(coachId,subject,startTimeStr,endTimeStr,searchValue,courseType,page)); } } -} \ No newline at end of file +} 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 4843dc34..25d62ccc 100644 --- a/dl-module-jx/src/main/resources/mapper/base/DlDriveSchoolCoachMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/base/DlDriveSchoolCoachMapper.xml @@ -147,7 +147,8 @@ dsco.create_time, dsco.sign_time, dsco.course_id, - dsco.scheme_id AS scheme + dsco.scheme_id AS scheme, + dsco.course_type from drive_school_course_order dsco LEFT JOIN drive_school_student dss ON dss.user_id = dsco.user_id AND dss.deleted = 0 LEFT JOIN drive_school_coach dsc ON dss.source_user_id = dsc.user_id AND dsc.deleted = 0 @@ -172,6 +173,9 @@ AND dsco.payment_status = #{entity.paymentStatus} + + AND dsco.course_type = #{entity.courseType} + AND dsco.create_time >= #{entity.startTimeStr} @@ -217,7 +221,8 @@ dsco.is_sign, dsc.name AS businessName, dsc.phone AS businessPhone, - dsco.create_time + dsco.create_time, + dsc.image from drive_school_student dss LEFT JOIN drive_school_course_order dsco ON dss.user_id = dsco.user_id diff --git a/dl-module-jx/src/main/resources/mapper/jx/DriveSchoolCarMapper.xml b/dl-module-jx/src/main/resources/mapper/jx/DriveSchoolCarMapper.xml index 8d4a4245..93d7b1f2 100644 --- a/dl-module-jx/src/main/resources/mapper/jx/DriveSchoolCarMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/jx/DriveSchoolCarMapper.xml @@ -102,7 +102,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + +