0707
This commit is contained in:
parent
26fbc39043
commit
0062df3660
@ -18,6 +18,7 @@ public class BusinessRecordVO extends TenantBaseDO {
|
|||||||
private String channel;
|
private String channel;
|
||||||
private String courseId;
|
private String courseId;
|
||||||
private String courseName;
|
private String courseName;
|
||||||
|
private String courseType;
|
||||||
private String coachUserName;
|
private String coachUserName;
|
||||||
private BigDecimal reserveMoney;
|
private BigDecimal reserveMoney;
|
||||||
private BigDecimal restMoney;
|
private BigDecimal restMoney;
|
||||||
@ -30,5 +31,6 @@ public class BusinessRecordVO extends TenantBaseDO {
|
|||||||
private BigDecimal subsidy;
|
private BigDecimal subsidy;
|
||||||
private String scheme;
|
private String scheme;
|
||||||
private String ifEnd;
|
private String ifEnd;
|
||||||
|
private String image;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,12 +2,14 @@ package cn.iocoder.yudao.module.jx.domain;
|
|||||||
|
|
||||||
import cn.iocoder.yudao.annotation.Excel;
|
import cn.iocoder.yudao.annotation.Excel;
|
||||||
import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
|
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.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 车辆信息对象 drive_school_car
|
* 车辆信息对象 drive_school_car
|
||||||
@ -118,4 +120,36 @@ public class DriveSchoolCar extends TenantBaseDO
|
|||||||
/** 车龄 */
|
/** 车龄 */
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private Long carOld;
|
private Long carOld;
|
||||||
|
|
||||||
|
private String userNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 训练开始时间
|
||||||
|
*/
|
||||||
|
private Date earliestStartTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 训练结束时间
|
||||||
|
*/
|
||||||
|
private Date latestEndTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 累计训练时间
|
||||||
|
*/
|
||||||
|
private String totalTrainTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 科目二训练时间
|
||||||
|
*/
|
||||||
|
private String subject2TrainTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 科目三训练时间
|
||||||
|
*/
|
||||||
|
private String subject3TrainTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 学员姓名及科目
|
||||||
|
*/
|
||||||
|
private List<Train> studentList;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package cn.iocoder.yudao.module.jx.mapper;
|
package cn.iocoder.yudao.module.jx.mapper;
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.jx.domain.DriveSchoolCar;
|
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.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
@ -54,7 +55,15 @@ public interface DriveSchoolCarMapper extends BaseMapper<DriveSchoolCar>
|
|||||||
* @param endTime 截止时间
|
* @param endTime 截止时间
|
||||||
* @return java.util.List<cn.iocoder.yudao.module.base.vo.DriveSchoolCar>
|
* @return java.util.List<cn.iocoder.yudao.module.base.vo.DriveSchoolCar>
|
||||||
**/
|
**/
|
||||||
IPage<DriveSchoolCar> selectTrainCar(@Param("coachId")Long coachId, @Param("startTime") String startTime,
|
IPage<DriveSchoolCar> selectTrainCar(@Param("coachId")Long coachId, @Param("subject") Integer subject, @Param("startTime") String startTime,
|
||||||
@Param("endTime")String endTime,@Param("searchValue")String searchValue,
|
@Param("endTime")String endTime,@Param("searchValue")String searchValue,
|
||||||
@Param("courseType")String courseType, Page<DriveSchoolCar> page);
|
@Param("courseType")String courseType, Page<DriveSchoolCar> page);
|
||||||
|
|
||||||
|
List<Train> 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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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.course.service.ProcessService;
|
||||||
import cn.iocoder.yudao.module.jx.domain.DriveSchoolCar;
|
import cn.iocoder.yudao.module.jx.domain.DriveSchoolCar;
|
||||||
import cn.iocoder.yudao.module.jx.mapper.DriveSchoolCarMapper;
|
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.service.TrainService;
|
||||||
import cn.iocoder.yudao.module.train.vo.TrainVO;
|
import cn.iocoder.yudao.module.train.vo.TrainVO;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
@ -22,6 +23,8 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
@Tag(name = "管理后台 - 练车记录")
|
@Tag(name = "管理后台 - 练车记录")
|
||||||
@ -129,7 +132,52 @@ public class TrainController {
|
|||||||
}else{
|
}else{
|
||||||
//训练车辆
|
//训练车辆
|
||||||
Page<DriveSchoolCar> page = new Page<>(pageNo,pageSize);
|
Page<DriveSchoolCar> page = new Page<>(pageNo,pageSize);
|
||||||
return success(carMapper.selectTrainCar(coachId,startTimeStr,endTimeStr,searchValue,courseType,page));
|
IPage<DriveSchoolCar> driveSchoolCarIPage = carMapper.selectTrainCar(coachId, subject, startTimeStr, endTimeStr, searchValue, courseType, page);
|
||||||
|
for (DriveSchoolCar record : driveSchoolCarIPage.getRecords()) {
|
||||||
|
List<Train> trainList = carMapper.selectTrainStudentList(Long.parseLong(record.getUserId()), subject, startTimeStr, endTimeStr, searchValue, courseType);
|
||||||
|
record.setStudentList(trainList);
|
||||||
|
}
|
||||||
|
|
||||||
|
return success(driveSchoolCarIPage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@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));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -130,7 +130,7 @@ public class AppTrainController {
|
|||||||
}else{
|
}else{
|
||||||
//训练车辆
|
//训练车辆
|
||||||
Page<DriveSchoolCar> page = new Page<>(pageNo,pageSize);
|
Page<DriveSchoolCar> 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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -147,7 +147,8 @@
|
|||||||
dsco.create_time,
|
dsco.create_time,
|
||||||
dsco.sign_time,
|
dsco.sign_time,
|
||||||
dsco.course_id,
|
dsco.course_id,
|
||||||
dsco.scheme_id AS scheme
|
dsco.scheme_id AS scheme,
|
||||||
|
dsco.course_type
|
||||||
from drive_school_course_order dsco
|
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_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
|
LEFT JOIN drive_school_coach dsc ON dss.source_user_id = dsc.user_id AND dsc.deleted = 0
|
||||||
@ -172,6 +173,9 @@
|
|||||||
<if test="entity.paymentStatus != null and entity.paymentStatus != ''">
|
<if test="entity.paymentStatus != null and entity.paymentStatus != ''">
|
||||||
AND dsco.payment_status = #{entity.paymentStatus}
|
AND dsco.payment_status = #{entity.paymentStatus}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="entity.courseType != null and entity.courseType != ''">
|
||||||
|
AND dsco.course_type = #{entity.courseType}
|
||||||
|
</if>
|
||||||
<if test="entity.startTimeStr != null and entity.startTimeStr != ''">
|
<if test="entity.startTimeStr != null and entity.startTimeStr != ''">
|
||||||
AND dsco.create_time >= #{entity.startTimeStr}
|
AND dsco.create_time >= #{entity.startTimeStr}
|
||||||
</if>
|
</if>
|
||||||
@ -217,7 +221,8 @@
|
|||||||
dsco.is_sign,
|
dsco.is_sign,
|
||||||
dsc.name AS businessName,
|
dsc.name AS businessName,
|
||||||
dsc.phone AS businessPhone,
|
dsc.phone AS businessPhone,
|
||||||
dsco.create_time
|
dsco.create_time,
|
||||||
|
dsc.image
|
||||||
from drive_school_student dss
|
from drive_school_student dss
|
||||||
LEFT JOIN drive_school_course_order dsco ON dss.user_id = dsco.user_id
|
LEFT JOIN drive_school_course_order dsco ON dss.user_id = dsco.user_id
|
||||||
<if test="entity.startTimeStr != null and entity.startTimeStr != ''">
|
<if test="entity.startTimeStr != null and entity.startTimeStr != ''">
|
||||||
|
|||||||
@ -102,7 +102,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
</select>
|
</select>
|
||||||
<select id="selectTrainCar" resultType="cn.iocoder.yudao.module.jx.domain.DriveSchoolCar">
|
<select id="selectTrainCar" resultType="cn.iocoder.yudao.module.jx.domain.DriveSchoolCar">
|
||||||
SELECT
|
SELECT
|
||||||
dscc.*
|
dscc.*,
|
||||||
|
COUNT(DISTINCT dst.user_id) AS userNum,
|
||||||
|
MIN(dst.start_time) AS earliestStartTime,
|
||||||
|
MAX(dst.end_time) AS latestEndTime,
|
||||||
|
SUM(dst.train_time) AS totalTrainTime,
|
||||||
|
SUM(CASE WHEN dst.subject = 2 THEN dst.train_time ELSE 0 END) AS subject2TrainTime,
|
||||||
|
SUM(CASE WHEN dst.subject = 3 THEN dst.train_time ELSE 0 END) AS subject3TrainTime
|
||||||
FROM
|
FROM
|
||||||
drive_school_train dst
|
drive_school_train dst
|
||||||
LEFT JOIN drive_school_coach dsc ON dst.coach_id = dsc.user_id AND dst.deleted = 0
|
LEFT JOIN drive_school_coach dsc ON dst.coach_id = dsc.user_id AND dst.deleted = 0
|
||||||
@ -125,9 +131,74 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="endTime!=null and endTime!=''">
|
<if test="endTime!=null and endTime!=''">
|
||||||
AND dst.create_time <= #{endTime}
|
AND dst.create_time <= #{endTime}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="subject!=null and subject!=''">
|
||||||
|
AND dst.subject = #{subject}
|
||||||
|
</if>
|
||||||
GROUP BY
|
GROUP BY
|
||||||
dscc.id
|
dscc.id
|
||||||
</select>
|
</select>
|
||||||
|
<select id="selectTrainStudentList" resultType="cn.iocoder.yudao.module.train.entity.Train">
|
||||||
|
SELECT
|
||||||
|
dst.*
|
||||||
|
FROM
|
||||||
|
drive_school_train dst
|
||||||
|
LEFT JOIN drive_school_coach dsc ON dst.coach_id = dsc.user_id AND dst.deleted = 0
|
||||||
|
LEFT JOIN drive_school_car dscc ON dsc.car_id = dscc.car_no
|
||||||
|
WHERE
|
||||||
|
dst.id IS NOT NULL
|
||||||
|
AND dsc.deleted = 0
|
||||||
|
<if test="coachId != null and coachId != ''">
|
||||||
|
AND dst.coach_id = #{coachId}
|
||||||
|
</if>
|
||||||
|
<if test="searchValue != null and searchValue != ''">
|
||||||
|
AND dsc.car_no LIKE CONCAT('%',#{searchValue},'%')
|
||||||
|
</if>
|
||||||
|
<if test="courseType != null and courseType != ''">
|
||||||
|
AND dscc.course_type =#{courseType}
|
||||||
|
</if>
|
||||||
|
<if test="startTime!=null and startTime!=''">
|
||||||
|
AND dst.create_time >= #{startTime}
|
||||||
|
</if>
|
||||||
|
<if test="endTime!=null and endTime!=''">
|
||||||
|
AND dst.create_time <= #{endTime}
|
||||||
|
</if>
|
||||||
|
<if test="subject!=null and subject!=''">
|
||||||
|
AND dst.subject = #{subject}
|
||||||
|
</if>
|
||||||
|
GROUP BY
|
||||||
|
dst.user_id
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectTrainStudent" resultType="string">
|
||||||
|
SELECT
|
||||||
|
COUNT(DISTINCT dst.user_id)
|
||||||
|
FROM
|
||||||
|
drive_school_train dst
|
||||||
|
LEFT JOIN drive_school_coach dsc ON dst.coach_id = dsc.user_id AND dst.deleted = 0
|
||||||
|
LEFT JOIN drive_school_car dscc ON dsc.car_id = dscc.car_no
|
||||||
|
WHERE
|
||||||
|
dst.user_id IS NOT NULL
|
||||||
|
AND dsc.deleted = 0
|
||||||
|
<if test="coachId != null and coachId != ''">
|
||||||
|
AND dst.coach_id = #{coachId}
|
||||||
|
</if>
|
||||||
|
<if test="searchValue != null and searchValue != ''">
|
||||||
|
AND dsc.car_no LIKE CONCAT('%',#{searchValue},'%')
|
||||||
|
</if>
|
||||||
|
<if test="courseType != null and courseType != ''">
|
||||||
|
AND dscc.course_type =#{courseType}
|
||||||
|
</if>
|
||||||
|
<if test="startTime!=null and startTime!=''">
|
||||||
|
AND dst.create_time >= #{startTime}
|
||||||
|
</if>
|
||||||
|
<if test="endTime!=null and endTime!=''">
|
||||||
|
AND dst.create_time <= #{endTime}
|
||||||
|
</if>
|
||||||
|
<if test="subject!=null and subject!=''">
|
||||||
|
AND dst.subject = #{subject}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user