diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/constant/SchoolBaseConstants.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/constant/SchoolBaseConstants.java index 0715cac7..b09a2a04 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/constant/SchoolBaseConstants.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/constant/SchoolBaseConstants.java @@ -153,16 +153,16 @@ public interface SchoolBaseConstants { /** * 审核不通过 */ - public static final String SCHOOL_NOTIFY_MESSAGE_TEMPLATE_MEMBER_AUDIT_NOT_PASS = "驾校学员 %s ,身份证号:%s,科目 %s 的提成审核未通过,原因:%s 。请查看!"; + public static final String SCHOOL_NOTIFY_MESSAGE_TEMPLATE_MEMBER_AUDIT_NOT_PASS = "驾校学员 %s ,身份证号:%s,课程:%s,科目 %s 的提成审核未通过,原因:%s 。请查看!"; /** * 待审核 */ - public static final String SCHOOL_NOTIFY_MESSAGE_TEMPLATE_MEMBER_AUDIT_WAIT = "驾校学员 %s ,身份证号:%s,科目 %s 的考试已通过,提成待审核,请查看!"; + public static final String SCHOOL_NOTIFY_MESSAGE_TEMPLATE_MEMBER_AUDIT_WAIT = "驾校学员 %s ,身份证号:%s,课程:%s,科目 %s 的考试已通过,提成待审核,请查看!"; /** * 审核通过 */ - public static final String SCHOOL_NOTIFY_MESSAGE_TEMPLATE_MEMBER_AUDIT_PASS = "驾校教练 %s 的学员 %s ,身份证号:%s,科目 %s 的提成审核已通过,请查看!"; + public static final String SCHOOL_NOTIFY_MESSAGE_TEMPLATE_MEMBER_AUDIT_PASS = "驾校教练 %s 的学员 %s ,身份证号:%s,课程:%s,科目 %s 的提成审核已通过,请查看!"; } 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 09ae84b0..851c1139 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 @@ -2,18 +2,22 @@ package cn.iocoder.yudao.module.base.service.impl; import cn.hutool.core.date.DateUtil; import cn.iocoder.yudao.module.base.entity.DlDriveSchoolStudent; +import cn.iocoder.yudao.module.base.entity.DriveSchoolCourseDeduct; import cn.iocoder.yudao.module.base.mapper.DlDriveSchoolStudentMapper; import cn.iocoder.yudao.module.base.service.DataViewService; import cn.iocoder.yudao.module.base.service.DlDriveSchoolCoachService; +import cn.iocoder.yudao.module.base.service.DlDriveSchoolCourseDeductService; import cn.iocoder.yudao.module.base.service.DlDriveSchoolStudentService; import cn.iocoder.yudao.module.base.vo.*; import cn.iocoder.yudao.module.course.entity.Process; import cn.iocoder.yudao.module.course.entity.SchoolCommission; import cn.iocoder.yudao.module.course.entity.SchoolCourseOrder; +import cn.iocoder.yudao.module.course.entity.SchoolCourseScheme; import cn.iocoder.yudao.module.course.mapper.ProcessMapper; import cn.iocoder.yudao.module.course.mapper.SchoolCommissionMapper; import cn.iocoder.yudao.module.course.mapper.SchoolCourseOrderMapper; import cn.iocoder.yudao.module.course.service.ProcessService; +import cn.iocoder.yudao.module.course.service.SchoolCourseSchemeService; import cn.iocoder.yudao.module.exam.mapper.ExamBatchItemMapper; import cn.iocoder.yudao.module.exam.service.ExamBatchItemService; import cn.iocoder.yudao.module.exam.vo.ExamBatchItemVO; @@ -27,6 +31,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; @@ -58,6 +63,10 @@ public class DataViewServiceImpl implements DataViewService { private SchoolCourseOrderMapper courseOrderMapper; @Autowired private SchoolCommissionMapper commissionMapper; + @Resource + private DlDriveSchoolCourseDeductService driveSchoolCourseDeductService; + @Resource + private SchoolCourseSchemeService schoolCourseSchemeService; /** * 查询学员详情 @@ -79,6 +88,33 @@ public class DataViewServiceImpl implements DataViewService { SchoolCourseOrder orderInfo = courseOrderMapper.getOrderInfo(id); studentInfoVO.setStudentOrderInfo(orderInfo); + // 学员提成信息 + if(orderInfo != null ){ + List deductList = new ArrayList<>(); + if(orderInfo.getSchemeId() != null){ + deductList = driveSchoolCourseDeductService.lambdaQuery() + .eq(DriveSchoolCourseDeduct::getCourseId, orderInfo.getCourseId()) + .eq(DriveSchoolCourseDeduct::getSchemeId, orderInfo.getSchemeId()) + .eq(DriveSchoolCourseDeduct::getDeleted, false) + .list(); + + }else{ + SchoolCourseScheme defaultScheme = schoolCourseSchemeService.lambdaQuery() + .eq(SchoolCourseScheme::getCourseId, orderInfo.getCourseId()) + .eq(SchoolCourseScheme::getIsDefault, true) + .eq(SchoolCourseScheme::getDeleted, false) + .one(); + if(defaultScheme != null){ + deductList = driveSchoolCourseDeductService.lambdaQuery() + .eq(DriveSchoolCourseDeduct::getCourseId, orderInfo.getCourseId()) + .eq(DriveSchoolCourseDeduct::getSchemeId, defaultScheme.getId()) + .eq(DriveSchoolCourseDeduct::getDeleted, false) + .list(); + } + } + studentInfoVO.setCourseDeductList(deductList); + } + // 当前学习进度 Process process = processService.selectByUserId(id, coachId); studentInfoVO.setProcess(process); diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/DlDriveSchoolStaffVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/DlDriveSchoolStaffVO.java index 183e832d..47ec13ac 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/DlDriveSchoolStaffVO.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/DlDriveSchoolStaffVO.java @@ -94,4 +94,6 @@ public class DlDriveSchoolStaffVO { private String cashierConfirmRemark; /**报名时间*/ private Date enrollTime; + /**工作性质 */ + private String workName; } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/StudentInfoVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/StudentInfoVO.java index 1bc58c04..10c5e252 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/StudentInfoVO.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/StudentInfoVO.java @@ -1,8 +1,10 @@ package cn.iocoder.yudao.module.base.vo; import cn.iocoder.yudao.module.base.entity.DlDriveSchoolStudent; +import cn.iocoder.yudao.module.base.entity.DriveSchoolCourseDeduct; import cn.iocoder.yudao.module.course.entity.Process; import cn.iocoder.yudao.module.course.entity.SchoolCourseOrder; +import cn.iocoder.yudao.module.course.entity.SchoolCourseScheme; import cn.iocoder.yudao.module.exam.vo.ExamBatchItemVO; import cn.iocoder.yudao.module.train.entity.Train; import lombok.Data; @@ -15,6 +17,8 @@ public class StudentInfoVO { private DlDriveSchoolStudent studentInfo; /**学员订单信息*/ private SchoolCourseOrder studentOrderInfo; + /**学员提成信息 */ + private List courseDeductList; /**学习进度*/ private Process process; /**学习进度列表*/ 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 d474b981..98adda5c 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 @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.course.controller.admin; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; import cn.iocoder.yudao.module.base.entity.DlDriveSchoolStudent; import cn.iocoder.yudao.module.base.entity.DriveSchoolCourseDeduct; @@ -26,10 +27,13 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.annotation.security.PermitAll; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.io.IOException; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -230,4 +234,43 @@ public class ProcessController { Page page = new Page<>(pageNo, pageSize); return success(processService.getPassStudent(coachId, subject, courseType, name, sort, page)); } + + @GetMapping("/getProcessExportData") + public CommonResult> getProcessExportData(ProcessExportVO exportVO, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + Page page = new Page<>(pageNo, pageSize); + return success(processService.getProcessExportData(exportVO, page)); + } + + @GetMapping("/export") + public void exportCommission(ProcessExportVO exportVO, HttpServletResponse response) throws IOException { + // 1. 校验导出类型 + if (exportVO.getExportType() == null || !Arrays.asList("current", "all", "range").contains(exportVO.getExportType())) { + throw new IllegalArgumentException("无效的导出类型: " + exportVO.getExportType()); + } + + // 2. 根据不同类型查询数据 + List exportData; + String fileName = "学员进度记录"; + + switch (exportVO.getExportType()) { + case "current": + exportData = processService.getProcessList(exportVO); + fileName += "_第" + exportVO.getPageNo() + "页"; + break; + case "all": + exportData = processService.getAllProcessList(exportVO); + fileName += "_全部数据"; + break; + case "range": + exportData = processService.getProcessListByRange(exportVO); + fileName += "_" + exportVO.getStartPage() + "-" + exportVO.getEndPage() + "页"; + break; + default: + throw new IllegalArgumentException("无效的导出类型: " + exportVO.getExportType()); + } + // 4. 导出Excel + ExcelUtils.write(response, fileName + ".xlsx", "学员进度记录", ProcessExportVO.class, exportData); + } } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/SchoolCommissionController.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/SchoolCommissionController.java index a262319f..56b810af 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/SchoolCommissionController.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/SchoolCommissionController.java @@ -2,9 +2,11 @@ package cn.iocoder.yudao.module.course.controller.admin; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.base.vo.DriveSchoolCourseDeductVO; import cn.iocoder.yudao.module.course.entity.SchoolCommission; import cn.iocoder.yudao.module.course.service.SchoolCommissionService; +import cn.iocoder.yudao.module.course.vo.CommissionExportVO; import cn.iocoder.yudao.module.course.vo.SchoolCommissionVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -15,8 +17,11 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.io.IOException; +import java.util.Arrays; import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -94,4 +99,91 @@ public class SchoolCommissionController { return success(schoolCommissionService.getCommissionListByCoachId(schoolCommissionVO, page)); } + /** + * 前端获取数据getList() + * @param commissionExportVO + * @param pageNo + * @param pageSize + * @return + */ + @GetMapping("/allCommissionPage") + public CommonResult> getAllCommissionPage(CommissionExportVO commissionExportVO, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize){ + Page page = new Page<>(pageNo, pageSize); + return success(schoolCommissionService.getAllCommissionPage(commissionExportVO, page)); + } + + /** + * 导出数据(支持三种模式) + * @param exportVO 包含导出类型(exportType)、分页参数等 + */ + /*@GetMapping("/export") + public void exportCommission(CommissionExportVO exportVO, HttpServletResponse response) throws IOException { + // 1. 根据不同类型查询数据 + List exportData; + String fileName = "提成记录"; + + switch (exportVO.getExportType()) { + case "current": // 导出当前页 + exportData = schoolCommissionService.getCommissionList(exportVO); + fileName += "_第" + exportVO.getPageNo() + "页"; + break; + case "all": // 导出全部数据 + exportData = schoolCommissionService.getAllCommissionList(exportVO); + fileName += "_全部数据"; + break; + case "range": // 导出自定义范围 + exportData = schoolCommissionService.getCommissionListByRange(exportVO); + fileName += "_" + exportVO.getStartPage() + "-" + exportVO.getEndPage() + "页"; + break; + default: + throw new IllegalArgumentException("无效的导出类型: " + exportVO.getExportType()); + } + for (int i = 0; i < exportData.size(); i++) { + exportData.get(i).setSerialNumber(i + 1); + } + ExcelUtils.write(response, fileName + ".xlsx", "提成记录", CommissionExportVO.class, exportData); + }*/ + @GetMapping("/export") + public void exportCommission(CommissionExportVO exportVO, HttpServletResponse response) throws IOException { + // 1. 校验导出类型 + if (exportVO.getExportType() == null || !Arrays.asList("current", "all", "range").contains(exportVO.getExportType())) { + throw new IllegalArgumentException("无效的导出类型: " + exportVO.getExportType()); + } + + // 2. 根据不同类型查询数据 + List exportData; + String fileName = "提成记录"; + int offset = 0; // 序号偏移量(用于分页连续) + + switch (exportVO.getExportType()) { + case "current": + exportData = schoolCommissionService.getCommissionList(exportVO); + fileName += "_第" + exportVO.getPageNo() + "页"; + offset = (exportVO.getPageNo() - 1) * exportVO.getPageSize(); // 计算分页偏移 + break; + case "all": + exportData = schoolCommissionService.getAllCommissionList(exportVO); + fileName += "_全部数据"; + break; + case "range": + exportData = schoolCommissionService.getCommissionListByRange(exportVO); + fileName += "_" + exportVO.getStartPage() + "-" + exportVO.getEndPage() + "页"; + offset = (exportVO.getStartPage() - 1) * exportVO.getPageSize(); // 自定义范围偏移 + break; + default: + throw new IllegalArgumentException("无效的导出类型: " + exportVO.getExportType()); + } + + // 3. 设置序号(考虑分页偏移) + if (exportData != null && !exportData.isEmpty()) { + for (int i = 0; i < exportData.size(); i++) { + exportData.get(i).setSerialNumber(offset + i + 1); // 确保序号连续 + } + } + + // 4. 导出Excel + ExcelUtils.write(response, fileName + ".xlsx", "提成记录", CommissionExportVO.class, exportData); + } } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/SchoolCourseOrderController.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/SchoolCourseOrderController.java index d011c202..a1a60cd8 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/SchoolCourseOrderController.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/SchoolCourseOrderController.java @@ -6,10 +6,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.course.entity.SchoolCourseOrder; import cn.iocoder.yudao.module.course.service.SchoolCourseOrderService; -import cn.iocoder.yudao.module.course.vo.SchoolCommissionVO; -import cn.iocoder.yudao.module.course.vo.SchoolCourseOrderBusinessVO; -import cn.iocoder.yudao.module.course.vo.SchoolCourseOrderExportVO; -import cn.iocoder.yudao.module.course.vo.SchoolCourseOrderVO; +import cn.iocoder.yudao.module.course.vo.*; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; @@ -23,6 +20,7 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; +import java.util.Arrays; import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -194,4 +192,58 @@ public class SchoolCourseOrderController { } + /** + * 获取导出数据列表 + */ + @GetMapping("/getOrderExportData") + public CommonResult> getOrderExportData(CourseOrderExportVO exportVO, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + Page page = new Page<>(pageNo, pageSize); + return success(schoolCourseOrderService.getOrderExportData(exportVO, page)); + } + + + @GetMapping("/export") + public void exportCommission(CourseOrderExportVO exportVO, HttpServletResponse response) throws IOException { + // 1. 校验导出类型 + if (exportVO.getExportType() == null || !Arrays.asList("current", "all", "range").contains(exportVO.getExportType())) { + throw new IllegalArgumentException("无效的导出类型: " + exportVO.getExportType()); + } + + // 2. 根据不同类型查询数据 + List exportData; + String fileName = "学员记录"; + int offset = 0; // 序号偏移量(用于分页连续) + + switch (exportVO.getExportType()) { + case "current": + exportData = schoolCourseOrderService.getOrderList(exportVO); + fileName += "_第" + exportVO.getPageNo() + "页"; + offset = (exportVO.getPageNo() - 1) * exportVO.getPageSize(); // 计算分页偏移 + break; + case "all": + exportData = schoolCourseOrderService.getAllOrderList(exportVO); + fileName += "_全部数据"; + break; + case "range": + exportData = schoolCourseOrderService.getOrderListByRange(exportVO); + fileName += "_" + exportVO.getStartPage() + "-" + exportVO.getEndPage() + "页"; + offset = (exportVO.getStartPage() - 1) * exportVO.getPageSize(); // 自定义范围偏移 + break; + default: + throw new IllegalArgumentException("无效的导出类型: " + exportVO.getExportType()); + } + + // 3. 设置序号(考虑分页偏移) + if (exportData != null && !exportData.isEmpty()) { + for (int i = 0; i < exportData.size(); i++) { + exportData.get(i).setSerialNumber(offset + i + 1); // 确保序号连续 + } + } + + // 4. 导出Excel + ExcelUtils.write(response, fileName + ".xlsx", "学员记录", CourseOrderExportVO.class, exportData); + } + } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/entity/SchoolCommission.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/entity/SchoolCommission.java index f964cf1d..3a2f66e7 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/entity/SchoolCommission.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/entity/SchoolCommission.java @@ -80,7 +80,7 @@ public class SchoolCommission extends TenantBaseDO { /** * 支付时间 */ - private Date payTime; + private LocalDateTime payTime; /** * 审核备注 */ 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 5760f5ec..01a191c1 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 @@ -159,5 +159,10 @@ public class SchoolCourseOrder extends TenantBaseDO { /** 订单备注 */ private String orderRemark; + /** + * 缴费日期 + */ + private Date payFeesTime; + } 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 c3030f67..451d33dd 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 @@ -5,6 +5,7 @@ import cn.iocoder.yudao.module.base.vo.DlDriveSchoolCoachPageReqVO; import cn.iocoder.yudao.module.base.vo.DlDriveSchoolCoachRespVO; import cn.iocoder.yudao.module.course.entity.Process; import cn.iocoder.yudao.module.course.vo.ProcessAndExamBatchVO; +import cn.iocoder.yudao.module.course.vo.ProcessExportVO; import cn.iocoder.yudao.module.course.vo.ProcessVO; import cn.iocoder.yudao.module.exam.entity.ExamBatch; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -105,5 +106,7 @@ public interface ProcessMapper extends BaseMapper { 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); + IPage getProcessExportData (@Param("entity") ProcessExportVO entity, Page page); + } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/mapper/SchoolCommissionMapper.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/mapper/SchoolCommissionMapper.java index 3bad0436..2deebc43 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/mapper/SchoolCommissionMapper.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/mapper/SchoolCommissionMapper.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.course.mapper; import cn.iocoder.yudao.module.course.entity.SchoolCommission; +import cn.iocoder.yudao.module.course.vo.CommissionExportVO; import cn.iocoder.yudao.module.course.vo.SchoolCommissionVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -40,5 +41,5 @@ public interface SchoolCommissionMapper extends BaseMapper { IPage getCommissionListByCoachId(@Param("entity") SchoolCommissionVO entity, Page page); - + IPage getCommissionListExport(@Param("entity") CommissionExportVO entity, Page page); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/mapper/SchoolCourseOrderMapper.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/mapper/SchoolCourseOrderMapper.java index d6fcd1c5..7b97e45e 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/mapper/SchoolCourseOrderMapper.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/mapper/SchoolCourseOrderMapper.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.course.mapper; import cn.iocoder.yudao.module.course.entity.SchoolCourseOrder; +import cn.iocoder.yudao.module.course.vo.CourseOrderExportVO; import cn.iocoder.yudao.module.course.vo.SchoolCommissionVO; import cn.iocoder.yudao.module.course.vo.SchoolCourseOrderBusinessVO; import cn.iocoder.yudao.module.course.vo.SchoolCourseOrderVO; @@ -70,4 +71,6 @@ public interface SchoolCourseOrderMapper extends BaseMapper { List getCoachMoney(@Param("entity")SchoolCourseOrderVO entity); IPage getOrderMoneyByCoachId(@Param("entity")SchoolCourseOrderVO entity, Page page); + + IPage getOrderExportData(@Param("entity")CourseOrderExportVO entity, Page page); } 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 a5a7b8b8..652d3980 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 @@ -2,11 +2,8 @@ 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; +import cn.iocoder.yudao.module.course.vo.*; import cn.iocoder.yudao.module.exam.vo.ExamVO; -import cn.iocoder.yudao.module.course.vo.ProcessAddVO; -import cn.iocoder.yudao.module.course.vo.ProcessVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; @@ -170,4 +167,10 @@ public interface ProcessService extends IService { */ IPage getPassStudent(Long coachId, int subject, String courseType, String name, String sort, Page page); List getPassStudentList(Long coachId, int subject, String startTime, String endTime); + + IPage getProcessExportData(ProcessExportVO exportVO, Page page); + + public List getProcessList(ProcessExportVO exportVO); + public List getAllProcessList(ProcessExportVO exportVO); + public List getProcessListByRange(ProcessExportVO exportVO); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/SchoolCommissionService.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/SchoolCommissionService.java index 432b4e90..8791366a 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/SchoolCommissionService.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/SchoolCommissionService.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.course.service; import cn.iocoder.yudao.module.course.entity.SchoolCommission; +import cn.iocoder.yudao.module.course.vo.CommissionExportVO; import cn.iocoder.yudao.module.course.vo.SchoolCommissionVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -57,4 +58,10 @@ public interface SchoolCommissionService extends IService { */ IPage getCommissionListByCoachId(SchoolCommissionVO schoolCommissionVO, Page page); + IPage getAllCommissionPage(CommissionExportVO exportVO,Page page); + + public List getCommissionList(CommissionExportVO exportVO); + public List getAllCommissionList(CommissionExportVO exportVO); + public List getCommissionListByRange(CommissionExportVO exportVO); + } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/SchoolCourseOrderService.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/SchoolCourseOrderService.java index 6ddff0af..b622f59a 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/SchoolCourseOrderService.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/SchoolCourseOrderService.java @@ -1,9 +1,7 @@ package cn.iocoder.yudao.module.course.service; import cn.iocoder.yudao.module.course.entity.SchoolCourseOrder; -import cn.iocoder.yudao.module.course.vo.SchoolCommissionVO; -import cn.iocoder.yudao.module.course.vo.SchoolCourseOrderBusinessVO; -import cn.iocoder.yudao.module.course.vo.SchoolCourseOrderVO; +import cn.iocoder.yudao.module.course.vo.*; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; @@ -143,4 +141,11 @@ public interface SchoolCourseOrderService extends IService { */ IPage getOrderMoneyByCoachId(SchoolCourseOrderVO pageReqVO, Page page); + + IPage getOrderExportData(CourseOrderExportVO exportVO, Page page); + + List getOrderList(CourseOrderExportVO exportVO); + List getAllOrderList(CourseOrderExportVO exportVO); + List getOrderListByRange(CourseOrderExportVO exportVO); + } 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 c96c3fc6..7d3a5e17 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 @@ -52,6 +52,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -138,9 +139,16 @@ public class ProcessServiceImpl extends ServiceImpl impl Long userId = SecurityFrameworkUtils.getLoginUserId(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(Process::getCoachId, userId) - .eq(Process::getCourseId, process.getCourseId()) - .eq(Process::getSubject, process.getSubject()); - if (StringUtils.isNotEmpty(process.getUserName())) { + .notIn(Process::getSubject, Arrays.asList(1, 4)); + /*.eq(Process::getCourseId, process.getCourseId()) + .eq(Process::getSubject, process.getSubject());*/ + if (process != null && process.getCourseId() != null) { + queryWrapper.eq(Process::getCourseId, process.getCourseId()); + } + if (process != null && process.getSubject() != null) { + queryWrapper.eq(Process::getSubject, process.getSubject()); + } + if (process != null && StringUtils.isNotEmpty(process.getUserName())) { queryWrapper.like(Process::getUserName, process.getUserName()); } //状态等于1-训练中的 @@ -367,7 +375,7 @@ public class ProcessServiceImpl extends ServiceImpl impl List officeStaffList = roleApi.selectUserListByRoleCode(tenantId, "school_staff"); if (officeStaffList != null && !officeStaffList.isEmpty()) { - String officeMessage = String.format(SchoolBaseConstants.SCHOOL_NOTIFY_MESSAGE_TEMPLATE_MEMBER_AUDIT_NOT_PASS, process.getUserName(), process.getStudentIdCard(), process.getSubject(), process.getFinanceRemark()); + String officeMessage = String.format(SchoolBaseConstants.SCHOOL_NOTIFY_MESSAGE_TEMPLATE_MEMBER_AUDIT_NOT_PASS, process.getUserName(), process.getStudentIdCard(), process.getCourseName(), process.getSubject(), process.getFinanceRemark()); for (UserDTO staff : officeStaffList) { schoolNotifyMessageSendService.sendMessage(staff.getId(), officeMessage, SchoolBaseConstants.SCHOOL_NOTIFY_MESSAGE_TYPE_ADMIN, null); @@ -428,13 +436,15 @@ public class ProcessServiceImpl extends ServiceImpl impl List officeStaffList = roleApi.selectUserListByRoleCode(tenantId, "cn"); if (officeStaffList != null && !officeStaffList.isEmpty()) { - String officeMessage = String.format(SchoolBaseConstants.SCHOOL_NOTIFY_MESSAGE_TEMPLATE_MEMBER_AUDIT_PASS, process.getCoachName(), process.getUserName(), process.getStudentIdCard(), process.getSubject()); + String officeMessage = String.format(SchoolBaseConstants.SCHOOL_NOTIFY_MESSAGE_TEMPLATE_MEMBER_AUDIT_PASS, process.getCoachName(), process.getUserName(), process.getStudentIdCard(), process.getCourseName(), process.getSubject()); for (UserDTO staff : officeStaffList) { schoolNotifyMessageSendService.sendMessage(staff.getId(), officeMessage, SchoolBaseConstants.SCHOOL_NOTIFY_MESSAGE_TYPE_ADMIN, null); } } - + // 将当前日期时间设置为发放时间 + schoolCommission.setPayTime(LocalDateTime.now()); + schoolCommission.setIfPay(true); // 仅审核通过时新增记录 schoolCommission.setDeleted(false); schoolCommissionService.save(schoolCommission); @@ -1018,6 +1028,45 @@ public class ProcessServiceImpl extends ServiceImpl impl return processMapper.getPassStudentList(coachId, subject, startTime, endTime); } + @Override + public IPage getProcessExportData(ProcessExportVO exportVO, Page page) { + return processMapper.getProcessExportData(exportVO, page); + } + + @Override + public List getProcessList(ProcessExportVO exportVO) { + // 分页查询当前页 + Page page = new Page<>(exportVO.getPageNo(), exportVO.getPageSize()); + IPage result = processMapper.getProcessExportData(exportVO, page); + return result.getRecords(); + } + + @Override + public List getAllProcessList(ProcessExportVO exportVO) { + // 不分页查询全部数据 + Page page = new Page<>(1, Integer.MAX_VALUE); + IPage result = processMapper.getProcessExportData(exportVO, page); + return result.getRecords(); + } + + @Override + public List getProcessListByRange(ProcessExportVO exportVO) { + List allData = new ArrayList<>(); + + // 循环查询指定范围内的数据 + for (int i = exportVO.getStartPage(); i <= exportVO.getEndPage(); i++) { + Page page = new Page<>(i, exportVO.getPageSize()); + IPage result = processMapper.getProcessExportData(exportVO, page); + allData.addAll(result.getRecords()); + + // 如果已经到达最后一页,提前结束循环 + if (i >= result.getPages()) { + break; + } + } + return allData; + } + /** * 生成32位uuid */ diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolCommissionServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolCommissionServiceImpl.java index bcf2ea7a..7fd7a509 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolCommissionServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolCommissionServiceImpl.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.course.entity.SchoolCommission; import cn.iocoder.yudao.module.course.mapper.SchoolCommissionMapper; import cn.iocoder.yudao.module.course.service.SchoolCommissionService; +import cn.iocoder.yudao.module.course.vo.CommissionExportVO; import cn.iocoder.yudao.module.course.vo.SchoolCommissionVO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; @@ -19,6 +20,7 @@ import org.springframework.validation.annotation.Validated; import cn.iocoder.yudao.framework.common.exception.ServiceException; import javax.annotation.Resource; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -161,4 +163,44 @@ public class SchoolCommissionServiceImpl extends ServiceImpl getAllCommissionPage(CommissionExportVO exportVO, Page page) { + return schoolCommissionMapper.getCommissionListExport(exportVO, page); + } + + + @Override + public List getCommissionList(CommissionExportVO exportVO) { + // 分页查询当前页 + Page page = new Page<>(exportVO.getPageNo(), exportVO.getPageSize()); + IPage result = schoolCommissionMapper.getCommissionListExport(exportVO, page); + return result.getRecords(); + } + + @Override + public List getAllCommissionList(CommissionExportVO exportVO) { + // 不分页查询全部数据 + Page page = new Page<>(1, Integer.MAX_VALUE); // 查询所有 + IPage result = schoolCommissionMapper.getCommissionListExport(exportVO, page); + return result.getRecords(); + } + + @Override + public List getCommissionListByRange(CommissionExportVO exportVO) { + List allData = new ArrayList<>(); + + // 循环查询指定范围内的数据 + for (int i = exportVO.getStartPage(); i <= exportVO.getEndPage(); i++) { + Page page = new Page<>(i, exportVO.getPageSize()); + IPage result = schoolCommissionMapper.getCommissionListExport(exportVO, page); + allData.addAll(result.getRecords()); + + // 如果已经到达最后一页,提前结束循环 + if (i >= result.getPages()) { + break; + } + } + return allData; + } } 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 36ec46b6..88c69d43 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 @@ -19,9 +19,7 @@ import cn.iocoder.yudao.module.course.mapper.SchoolCourseOrderMapper; import cn.iocoder.yudao.module.course.service.ProcessService; import cn.iocoder.yudao.module.course.service.SchoolCourseOrderService; import cn.iocoder.yudao.module.course.service.SchoolCourseSchemeService; -import cn.iocoder.yudao.module.course.vo.SchoolCommissionVO; -import cn.iocoder.yudao.module.course.vo.SchoolCourseOrderBusinessVO; -import cn.iocoder.yudao.module.course.vo.SchoolCourseOrderVO; +import cn.iocoder.yudao.module.course.vo.*; import cn.iocoder.yudao.module.system.api.permission.RoleApi; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; @@ -46,9 +44,7 @@ import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDateTime; -import java.util.Date; -import java.util.List; -import java.util.UUID; +import java.util.*; /** * 驾照报名订单 Service 实现类 @@ -200,13 +196,13 @@ public class SchoolCourseOrderServiceImpl extends ServiceImpl q.eq(Process::getStatus, SchoolBaseConstants.PROCESS_STATUS_NOT_START) - .or() + .or() .eq(Process::getStatus, SchoolBaseConstants.PROCESS_STATUS_IN_PROGRESS)) - ); + );*/ DlDriveSchoolStudent studentByUserId = schoolStudentService.getStudentByUserId(Long.valueOf(schoolCourseOrder.getUserId())); if (studentByUserId != null) { @@ -637,4 +633,43 @@ public class SchoolCourseOrderServiceImpl extends ServiceImpl getOrderExportData(CourseOrderExportVO exportVO, Page page) { + return schoolCourseOrderMapper.getOrderExportData(exportVO, page); + } + + @Override + public List getOrderList(CourseOrderExportVO exportVO) { + // 分页查询当前页 + Page page = new Page<>(exportVO.getPageNo(), exportVO.getPageSize()); + IPage result = schoolCourseOrderMapper.getOrderExportData(exportVO, page); + return result.getRecords(); + } + + @Override + public List getAllOrderList(CourseOrderExportVO exportVO) { + // 不分页查询全部数据 + Page page = new Page<>(1, Integer.MAX_VALUE); // 查询所有 + IPage result = schoolCourseOrderMapper.getOrderExportData(exportVO, page); + return result.getRecords(); + } + + @Override + public List getOrderListByRange(CourseOrderExportVO exportVO) { + List allData = new ArrayList<>(); + + // 循环查询指定范围内的数据 + for (int i = exportVO.getStartPage(); i <= exportVO.getEndPage(); i++) { + Page page = new Page<>(i, exportVO.getPageSize()); + IPage result = schoolCourseOrderMapper.getOrderExportData(exportVO, page); + allData.addAll(result.getRecords()); + + // 如果已经到达最后一页,提前结束循环 + if (i >= result.getPages()) { + break; + } + } + return allData; + } + } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/CommissionExportVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/CommissionExportVO.java new file mode 100644 index 00000000..92389732 --- /dev/null +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/CommissionExportVO.java @@ -0,0 +1,83 @@ +package cn.iocoder.yudao.module.course.vo; + +import cn.iocoder.yudao.annotation.Excel; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +import java.util.Date; + +@Data +public class CommissionExportVO { + + @ExcelProperty(value = " ", index = 0) + @ColumnWidth(8) + private Integer serialNumber; + + @ExcelIgnore + private Long coachId; + + @ExcelProperty(value = "教练", index = 1) + private String coachName; + + @ExcelProperty(value = "教练身份证号", index = 2) + private String coachIdCard; + + @ExcelIgnore + private Long studentId; + + @ExcelProperty(value = "学员", index = 3) + private String studentName; + + @ExcelProperty(value = "学员身份证号", index = 4) + private String studentIdCard; + + @ExcelIgnore + private String courseId; + + @ExcelProperty(value = "课程名称", index = 5) + private String courseName; + + @ExcelProperty(value = "课程类型", index = 6) + private String courseType; + + @ExcelProperty(value = "科目", index = 7) + private String subject; + + @ExcelProperty(value = "提成金额(元)", index = 8) + private String commissionAmount; + + @ExcelProperty(value = "审核人", index = 9) + private String checkName; + + @ExcelProperty(value = "审核时间", index = 10) + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + @ColumnWidth(20) + private Date createTime; + + @ExcelProperty(value = "备注", index = 11) + private String checkRemark; + + @ExcelIgnore + private String startTimeStr; + @ExcelIgnore + private String endTimeStr; + + // 分页参数 + @ExcelIgnore + private Integer pageNo = 1; + @ExcelIgnore + private Integer pageSize = 10; + + // 导出类型:all(全部)、current(当前页)、range(自定义范围) + @ExcelIgnore + private String exportType; + + // 自定义范围参数 + @ExcelIgnore + private Integer startPage; + @ExcelIgnore + private Integer endPage; +} diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/CourseOrderExportVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/CourseOrderExportVO.java new file mode 100644 index 00000000..86b90c30 --- /dev/null +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/CourseOrderExportVO.java @@ -0,0 +1,157 @@ +package cn.iocoder.yudao.module.course.vo; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Date; + +@Data +public class CourseOrderExportVO { + + @ExcelProperty(value = " ", index = 0) + @ColumnWidth(8) + private Integer serialNumber; + + @ExcelIgnore + private Long studentId; + + @ExcelProperty(value = "学员姓名", index = 1) + private String studentName; + + @ExcelProperty(value = "学员身份证号", index = 2) + private String studentIdCard; + + @ExcelProperty(value = "学员手机号", index = 3) + private String studentPhone; + + @ExcelProperty(value = "学员报名时间", index = 4) + @DateTimeFormat("yyyy-MM-dd") + private Date signUpTime; + + @ExcelIgnore + private Long courseId; + + @ExcelProperty(value = "课程名称", index = 5) + private String courseName; + + @ExcelProperty(value = "课程类型", index = 6) + private String courseType; + + @ExcelProperty(value = "缴费金额", index = 7) + private BigDecimal reserveMoney; + + @ExcelProperty(value = "缴费时间", index = 8) + @DateTimeFormat("yyyy-MM-dd") + private Date payFeesTime; + + @ExcelProperty(value = "订单备注", index = 9) + private String orderRemark; + +// @ExcelProperty(value = "是否已面签", index = 13) + @ExcelIgnore + private Integer isSign; + + @ExcelProperty(value = "是否已面签", index = 10) + private String isSignDisplay; + + @ExcelProperty(value = "面签时间", index = 11) + private LocalDateTime signTime; + + @ExcelIgnore + private Long coachId; + + @ExcelProperty(value = "科目二教练", index = 12) + private String subject2CoachName; + + @ExcelProperty(value = "科目二提成(预提)", index = 13) + private String subject2Deduct; + + @ExcelProperty(value = "科目三教练", index = 14) + private String subject3CoachName; + + @ExcelProperty(value = "科目三提成(预提)", index = 15) + private String subject3Deduct; + + @ExcelProperty(value = "出纳是否确认收款", index = 16) + private String cashierConfirmDisplay; + + @ExcelIgnore + private Integer cashierConfirm; + + @ExcelProperty(value = "出纳确认时间", index = 17) + private Date cashierConfirmTime; + + @ExcelProperty(value = "出纳备注", index = 18) + private String cashierConfirmRemark; + + /** + * 订单状态 0:待支付 1:已取消 :2:已支付(已报名) 3:待面签 4:已面签 5:已完成 6:申请退款 7:退款中 8:退款成功 + */ + @ExcelIgnore + private String paymentStatus; + + /** + * 支付类型 1:定金 2:全款 + */ + @ExcelIgnore + private String payType; + + @ExcelIgnore + private Integer subject; + + @ExcelIgnore + private String signUpStartTimeStr; + @ExcelIgnore + private String signUpEndTimeStr; + + @ExcelIgnore + private String payFeesStartTimeStr; + @ExcelIgnore + private String payFeesEndTimeStr; + + @ExcelIgnore + private String cashierConfirmStartTimeStr; + @ExcelIgnore + private String cashierConfirmEndTimeStr; + + // 分页参数 + @ExcelIgnore + private Integer pageNo = 1; + @ExcelIgnore + private Integer pageSize = 10; + + // 导出类型:all(全部)、current(当前页)、range(自定义范围) + @ExcelIgnore + private String exportType; + + // 自定义范围参数 + @ExcelIgnore + private Integer startPage; + @ExcelIgnore + private Integer endPage; + + + + public String getIsSignDisplay() { + return isSign != null && isSign == 1 ? "是" : "否"; + } + + public String getCashierConfirmDisplay() { + if (cashierConfirm == null) { + return "待确认"; + } + switch (cashierConfirm) { + case 0: + return "未到账"; + case 1: + return "已到账"; + default: + return "未知状态"; + } + } +} diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/ProcessExportVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/ProcessExportVO.java new file mode 100644 index 00000000..5ff17f44 --- /dev/null +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/ProcessExportVO.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.course.vo; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +@Data +public class ProcessExportVO { + + @ExcelProperty(value = "学员姓名", index = 0) + private String studentName; + + @ExcelProperty(value = "学员身份证号", index = 1) + private String studentIdCard; + + @ExcelProperty(value = "学员手机号", index = 2) + private String studentPhone; + + @ExcelIgnore + private String courseId; + + @ExcelProperty(value = "课程名称", index = 3) + private String courseName; + + @ExcelProperty(value = "课程类型", index = 4) + private String courseType; + + @ExcelIgnore + private Long coachId; + + @ExcelProperty(value = "缴费日期", index = 5) + private String payFeesTime; + + @ExcelProperty(value = "科目一状态", index = 6) + private String subject1Status; + + @ExcelProperty(value = "科目二状态", index = 7) + private String subject2Status; + + @ExcelProperty(value = "科目三状态", index = 8) + private String subject3Status; + + @ExcelProperty(value = "科目四状态", index = 9) + private String subject4Status; + + @ExcelIgnore + private String payFeesStartTimeStr; + @ExcelIgnore + private String payFeesEndTimeStr; + + + // 分页参数 + @ExcelIgnore + private Integer pageNo = 1; + @ExcelIgnore + private Integer pageSize = 10; + + // 导出类型:all(全部)、current(当前页)、range(自定义范围) + @ExcelIgnore + private String exportType; + + // 自定义范围参数 + @ExcelIgnore + private Integer startPage; + @ExcelIgnore + private Integer endPage; + + +} diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/controller/admin/ExamBatchController.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/controller/admin/ExamBatchController.java index 27693465..cd16c413 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/controller/admin/ExamBatchController.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/controller/admin/ExamBatchController.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.exam.controller.admin; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.module.exam.service.ExamBatchService; +import cn.iocoder.yudao.module.exam.vo.ExamBatchItemNewVO; import cn.iocoder.yudao.module.exam.vo.ExamBatchNewVO; import cn.iocoder.yudao.module.exam.vo.ExamBatchVO; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -34,6 +35,14 @@ public class ExamBatchController { return success(examBatchService.queryListPage(pageReqVO,page)); } + @GetMapping("/newPage") + public CommonResult> getPageNew(ExamBatchVO pageReqVO, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + Page page = new Page<>(pageNo,pageSize); + return success(examBatchService.queryListPageNew(pageReqVO,page)); + } + @PostMapping("/create") @Operation(summary = "送考") public CommonResult createObj( @RequestBody ExamBatchVO examBatchVO) { 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 11145f83..454256ee 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.ExamBatchItemNewVO; import cn.iocoder.yudao.module.exam.vo.ExamBatchNewVO; import cn.iocoder.yudao.module.exam.vo.ExamBatchVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -18,6 +19,7 @@ import org.apache.ibatis.annotations.Param; public interface ExamBatchMapper extends BaseMapper { IPage queryListPage(@Param("entity") ExamBatchVO entity, Page page); + IPage queryListPageNew(@Param("entity") ExamBatchVO entity, Page page); 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 799a455d..50eae318 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.ExamBatchItemNewVO; import cn.iocoder.yudao.module.exam.vo.ExamBatchNewVO; import cn.iocoder.yudao.module.exam.vo.ExamBatchVO; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -22,6 +23,7 @@ public interface ExamBatchService extends IService { * @param page TODO **/ IPage queryListPage(ExamBatchVO pageReqVO, Page page); + IPage queryListPageNew(ExamBatchVO pageReqVO, 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 b0f30ad9..bb24569e 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 @@ -10,6 +10,7 @@ import cn.iocoder.yudao.module.exam.entity.ExamBatchItem; 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.ExamBatchItemNewVO; import cn.iocoder.yudao.module.exam.vo.ExamBatchItemVO; import cn.iocoder.yudao.module.exam.vo.ExamBatchNewVO; import cn.iocoder.yudao.module.exam.vo.ExamBatchVO; @@ -89,6 +90,39 @@ public class ExamBatchServiceImpl extends ServiceImpl queryListPageNew(ExamBatchVO pageReqVO, Page page) { + if(StringUtils.isEmpty(pageReqVO.getTimeType())){ + //不是首页过来的,那么代表是教练自己查自己的所有考试记录 + Long userId = SecurityFrameworkUtils.getLoginUserId(); + pageReqVO.setCoachId(userId); + }else { + //首页过来的,默认查全部的数据 + String startTimeStr = ""; + String endTimeStr = ""; + if("more".equals(pageReqVO.getTimeType())){ + if(StringUtils.isNotEmpty(pageReqVO.getStartTimeSearch())){ + startTimeStr = pageReqVO.getStartTimeSearch()+" 00:00:01"; + } + if(StringUtils.isNotEmpty(pageReqVO.getEndTimeSearch())) { + endTimeStr = pageReqVO.getEndTimeSearch() + " 23:59:59"; + } + }else if("month".equals(pageReqVO.getTimeType())){ + //当月 + 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(pageReqVO.getTimeType())){ + //当天 + startTimeStr = DateUtil.formatDate(DateUtil.date())+" 00:00:01"; + endTimeStr = DateUtil.formatDate(DateUtil.date())+" 23:59:59"; + } + pageReqVO.setStartTimeSearch(startTimeStr); + pageReqVO.setEndTimeSearch(endTimeStr); + } +// IPage rtnList = ; + return examBatchMapper.queryListPageNew(pageReqVO, page); + } + /** * 送考 * diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchItemNewVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchItemNewVO.java index d8c1ad5b..4d449750 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchItemNewVO.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchItemNewVO.java @@ -75,4 +75,11 @@ public class ExamBatchItemNewVO extends ExamBatchItem { private String batchId; private String batchItemId; + + private String avatar; + + + private Long totalCount; + private Long passedCount; + private Long unpassedCount; } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/jx/service/impl/StudentScoreInputServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/jx/service/impl/StudentScoreInputServiceImpl.java index add4c6c9..e8350c81 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/jx/service/impl/StudentScoreInputServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/jx/service/impl/StudentScoreInputServiceImpl.java @@ -107,7 +107,7 @@ public class StudentScoreInputServiceImpl implements StudentScoreInputService { studentIdCard = studentByUserId.getIdCard(); } if (allStaffList != null && !allStaffList.isEmpty()) { - String officeMessage = String.format(SchoolBaseConstants.SCHOOL_NOTIFY_MESSAGE_TEMPLATE_MEMBER_AUDIT_WAIT, studentScoreInput.getUserName(), studentIdCard, studentScoreInput.getSubject()); + String officeMessage = String.format(SchoolBaseConstants.SCHOOL_NOTIFY_MESSAGE_TEMPLATE_MEMBER_AUDIT_WAIT, studentScoreInput.getUserName(), studentIdCard, studentScoreInput.getCoachName(), studentScoreInput.getSubject()); for (UserDTO staff : allStaffList) { schoolNotifyMessageSendService.sendMessage(staff.getId(), officeMessage, SchoolBaseConstants.SCHOOL_NOTIFY_MESSAGE_TYPE_ADMIN, null); } 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 8690dd11..49684e6a 100644 --- a/dl-module-jx/src/main/resources/mapper/base/DlDriveSchoolStudentMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/base/DlDriveSchoolStudentMapper.xml @@ -91,6 +91,9 @@ AND main.name LIKE CONCAT('%',#{entity.name},'%') + + AND main.work_name = #{entity.workName} + AND dsco.course_type = #{entity.courseType} 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 a116b575..d8ca04b7 100644 --- a/dl-module-jx/src/main/resources/mapper/course/ProcessMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/course/ProcessMapper.xml @@ -292,4 +292,129 @@ + + diff --git a/dl-module-jx/src/main/resources/mapper/course/SchoolCommissionMapper.xml b/dl-module-jx/src/main/resources/mapper/course/SchoolCommissionMapper.xml index 720ca67c..abe53610 100644 --- a/dl-module-jx/src/main/resources/mapper/course/SchoolCommissionMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/course/SchoolCommissionMapper.xml @@ -101,4 +101,65 @@ AND dsc.create_time <= #{entity.endTimeStr} + + 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 ca57b523..335a0972 100644 --- a/dl-module-jx/src/main/resources/mapper/course/SchoolCourseOrderMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/course/SchoolCourseOrderMapper.xml @@ -262,7 +262,7 @@ + + 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 11e64dca..ef62d5cc 100644 --- a/dl-module-jx/src/main/resources/mapper/exam/ExamBatchMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/exam/ExamBatchMapper.xml @@ -28,13 +28,50 @@ ORDER BY dseb.create_time DESC + + +