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 b19ad58e..0715cac7 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 @@ -160,4 +160,9 @@ public interface SchoolBaseConstants { */ public static final String SCHOOL_NOTIFY_MESSAGE_TEMPLATE_MEMBER_AUDIT_WAIT = "驾校学员 %s ,身份证号:%s,科目 %s 的考试已通过,提成待审核,请查看!"; + /** + * 审核通过 + */ + public static final String SCHOOL_NOTIFY_MESSAGE_TEMPLATE_MEMBER_AUDIT_PASS = "驾校教练 %s 的学员 %s ,身份证号:%s,科目 %s 的提成审核已通过,请查看!"; + } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/admin/DlDriveSchoolCourseDeductController.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/admin/DlDriveSchoolCourseDeductController.java index f9066cf1..18c0d949 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/admin/DlDriveSchoolCourseDeductController.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/admin/DlDriveSchoolCourseDeductController.java @@ -44,4 +44,5 @@ public class DlDriveSchoolCourseDeductController { driveSchoolCourseDeductService.add(list); return CommonResult.ok(); } + } 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 57f1f24a..09ae84b0 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 @@ -255,17 +255,28 @@ public class DataViewServiceImpl implements DataViewService { /*4.财务情况--*/ //应收 Double showedReceive = courseOrderMapper.selectByCoachUserId(coachId, startTimeStr, endTimeStr); + // 已确认收款 + Double showedIsConfirmedReceive = courseOrderMapper.selectByCoachUserIdIsConfirmed(coachId, startTimeStr, endTimeStr); //应付 List schoolCommissionList = commissionMapper.selectByCoachId(coachId, startTimeStr, endTimeStr); double showedPay = 0.0; + double showedPayIsPaid = 0.0; for (SchoolCommission item : schoolCommissionList) { if (null != item.getCommissionAmount()) { - showedPay = showedPay + item.getCommissionAmount().doubleValue(); +// showedPay = showedPay + item.getCommissionAmount().doubleValue(); + double amount = item.getCommissionAmount().doubleValue(); + showedPay += amount; + + if (Boolean.TRUE.equals(item.getIfPay())) { + showedPayIsPaid += amount; + } } } Map moneyInfoMap = new HashMap<>(); moneyInfoMap.put("inAmount", null == showedReceive ? 0 : showedReceive); moneyInfoMap.put("outAmount", showedPay); + moneyInfoMap.put("confirmedReceive", null == showedIsConfirmedReceive ? 0 : showedIsConfirmedReceive); + moneyInfoMap.put("showedPayIsPaid", showedPayIsPaid); rtnObj.setMoneyInfo(moneyInfoMap); } else if ("coach".equals(type)) { //教练查询 @@ -323,8 +334,11 @@ public class DataViewServiceImpl implements DataViewService { rtnObj.setMoneyInfo(moneyInfoMap); } /*2.训练情况*/ - List allTrainList = trainMapper.selectTrainByCondition(coachId, startTimeStr, endTimeStr); +// List allTrainList = trainMapper.selectTrainByCondition(coachId, startTimeStr, endTimeStr); //所有车辆set,目的是去重 + List allTrainList = Optional.ofNullable( + trainMapper.selectTrainByCondition(coachId, startTimeStr, endTimeStr) + ).orElse(Collections.emptyList()); Set allCarSet = new HashSet<>(); Set subject2CarSet = new HashSet<>(); Set subject3CarSet = new HashSet<>(); @@ -332,6 +346,13 @@ public class DataViewServiceImpl implements DataViewService { Set subject2UserSet = new HashSet<>(); Set subject3UserSet = new HashSet<>(); for (TrainVO trainVO : allTrainList) { + if (trainVO == null + || trainVO.getSubject() == null + || trainVO.getCarNo() == null + || trainVO.getUserId() == null + || trainVO.getCourseId() == null) { + continue; + } if (2 == trainVO.getSubject()) { subject2CarSet.add(trainVO.getCarNo()); allCarSet.add(trainVO.getCarNo()); 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 87043605..62379c39 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 @@ -457,7 +457,6 @@ public class DlDriveSchoolStudentServiceImpl extends ServiceImpl getSchoolCommission(@RequestParam("id") String id) { -//// SchoolCommissionDO schoolCommission = schoolCommissionService.getSchoolCommission(id); -// return success(BeanUtils.toBean(schoolCommission, SchoolCommissionRespVO.class)); -// } -// + @GetMapping("/get") + @Operation(summary = "获得提成记录") + public CommonResult getSchoolCommission(@RequestParam("id") String id) { + return success(schoolCommissionService.getSchoolCommissionById(id)); + } + /** + * 出纳审核提成记录 + * @param schoolCommissionVO + * @return + */ + @PutMapping("/cashierConfirm") + public CommonResult cashierConfirm(@RequestBody SchoolCommissionVO schoolCommissionVO) { + boolean b = schoolCommissionService.cashierConfirm(schoolCommissionVO); + return success(b); + } + + + /** + * 教练提成合计列表 + */ + @GetMapping("/getCoachTotalCommission") + public CommonResult> getCoachTotalCommission(SchoolCommissionVO schoolCommissionVO){ + return success(schoolCommissionService.getCoachTotalCommission(schoolCommissionVO)); + } + + /** + * 教练提成信息列表 + */ + @GetMapping("/getCommissionListByCoachId") + public CommonResult> getCommissionListByCoachId(SchoolCommissionVO schoolCommissionVO, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize){ + Page page = new Page<>(pageNo, pageSize); + return success(schoolCommissionService.getCommissionListByCoachId(schoolCommissionVO, page)); + } } 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 703aa23b..d011c202 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 @@ -159,6 +159,39 @@ public class SchoolCourseOrderController { return success(schoolCourseOrderService.getOrderCountBySchemeId(schemeId)); } + /** + * 根据教练id获取对应招生 + */ + @GetMapping("getOrderByCoachId") + public CommonResult> getOrderByCoachId(SchoolCourseOrderVO pageReqVO, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize){ + Page page = new Page<>(pageNo, pageSize); + return success(schoolCourseOrderService.getOrderByCoachId(pageReqVO, page)); + } + + /** + * 获取教练的订单总金额 + * @param pageReqVO + * @return + */ + @GetMapping("getCoachMoney") + public CommonResult> getCoachMoney(SchoolCourseOrderVO pageReqVO){ + return success(schoolCourseOrderService.getCoachMoney(pageReqVO)); + } + + /** + * 获取教练的订单明细 + * @param pageReqVO + * @return + */ + @GetMapping("getOrderMoneyByCoachId") + public CommonResult> getOrderMoneyByCoachId(SchoolCourseOrderVO pageReqVO, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize){ + Page page = new Page<>(pageNo, pageSize); + return success(schoolCourseOrderService.getOrderMoneyByCoachId(pageReqVO, page)); + } } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/entity/Process.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/entity/Process.java index d3d20724..62a483fc 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/entity/Process.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/entity/Process.java @@ -104,4 +104,13 @@ public class Process extends TenantBaseDO { */ private String courseType; -} \ No newline at end of file + /** + * 成绩录入人 + */ + private String inputName; + /** + * 成绩录入人id + */ + private Long inputUserId; + +} 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 568c084d..f964cf1d 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 @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.Date; /** @@ -85,4 +86,29 @@ public class SchoolCommission extends TenantBaseDO { */ private String checkRemark; + /** + * 出纳确认日期 + */ + private LocalDateTime cashierConfirmTime; + + /** + * 出纳确认备注 + */ + private String cashierConfirmRemark; + + /** + * 证明材料 + */ + private String images; + + /** + * 确认人姓名 + */ + private String cashierName; + + /** + * 确认人id + */ + private Long cashierUserId; + } 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 ee9f7611..5760f5ec 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 @@ -146,5 +146,18 @@ public class SchoolCourseOrder extends TenantBaseDO { */ private String schemeId; + /** + * 出纳确认是否到账 + */ + private String cashierConfirm; + + /** + * 出纳确认备注 + */ + private String cashierConfirmRemark; + + /** 订单备注 */ + private String orderRemark; + } 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 d56b2f4a..3bad0436 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 @@ -31,5 +31,14 @@ public interface SchoolCommissionMapper extends BaseMapper { List selectByCoachId(@Param("coachId")Long coachId,@Param("startTime")String startTime,@Param("endTime")String endTime); + SchoolCommissionVO getSchoolCommissionById(@Param("id") String id); -} \ No newline at end of file + /** + * 教练提成合计列表 + */ + List getCoachTotalCommission(@Param("entity") SchoolCommissionVO entity); + + IPage getCommissionListByCoachId(@Param("entity") SchoolCommissionVO 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 c4e65d3b..d6fcd1c5 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 @@ -11,6 +11,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 驾照报名订单 Mapper * @@ -41,6 +43,7 @@ public interface SchoolCourseOrderMapper extends BaseMapper { * @return java.util.List **/ Double selectByCoachUserId(@Param("coachId")Long coachId,@Param("startTime")String startTime,@Param("endTime")String endTime); + Double selectByCoachUserIdIsConfirmed(@Param("coachId")Long coachId,@Param("startTime")String startTime,@Param("endTime")String endTime); /** 学员订单信息 */ @@ -59,4 +62,12 @@ public interface SchoolCourseOrderMapper extends BaseMapper { * 查询是否有订单使用该提成方案 */ Integer getOrderCountBySchemeId(@Param("schemeId") String schemeId); + + /** + * 根据教练id获取对应招生 + */ + IPage getOrderByCoachId(@Param("entity")SchoolCourseOrderVO entity, Page page); + + List getCoachMoney(@Param("entity")SchoolCourseOrderVO entity); + IPage getOrderMoneyByCoachId(@Param("entity")SchoolCourseOrderVO entity, Page page); } 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 23d33afb..432b4e90 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 @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * 提成记录 Service 接口 * @@ -35,4 +37,24 @@ public interface SchoolCommissionService extends IService { */ boolean exists(SchoolCommission entity); + /** + * 根据id获取提成记录详细信息 + */ + SchoolCommissionVO getSchoolCommissionById(String id); + + /** + * 出纳审核提成记录 + */ + boolean cashierConfirm(SchoolCommissionVO schoolCommissionVO); + + /** + * 教练提成合计列表 + */ + List getCoachTotalCommission(SchoolCommissionVO schoolCommissionVO); + + /** + * 教练提成列表 + */ + IPage getCommissionListByCoachId(SchoolCommissionVO schoolCommissionVO, Page page); + } 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 a60e02cd..6ddff0af 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 @@ -125,4 +125,22 @@ public interface SchoolCourseOrderService extends IService { */ Integer getOrderCountBySchemeId(String schemeId); + /** + * 根据教练id获取对应招生 + */ + IPage getOrderByCoachId(SchoolCourseOrderVO pageReqVO, Page page); + + /** + * 获取教练的订单总金额 + * @param pageReqVO + * @return + */ + List getCoachMoney(SchoolCourseOrderVO pageReqVO); + /** + * 获取教练的订单明细 + * @param pageReqVO + * @return + */ + IPage getOrderMoneyByCoachId(SchoolCourseOrderVO pageReqVO, Page page); + } 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 e3c3c8e0..c96c3fc6 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 @@ -376,26 +376,27 @@ public class ProcessServiceImpl extends ServiceImpl impl } // 查询提成规则 - DriveSchoolCourseDeduct deduct = deductService.getOne( + /*DriveSchoolCourseDeduct deduct = deductService.getOne( Wrappers.lambdaQuery() .eq(DriveSchoolCourseDeduct::getCourseId, process.getCourseId()) .eq(DriveSchoolCourseDeduct::getCourseSubject, process.getSubject()) - ); + );*/ // 如果存在提成规则 - if (deduct != null) { + if (process.getCoachCommission() != null) { // 构建提成记录对象 SchoolCommission schoolCommission = new SchoolCommission(); schoolCommission.setCoachUserId(oldProcess.getCoachId()); schoolCommission.setCoachName(oldProcess.getCoachName()); schoolCommission.setStudentId(oldProcess.getUserId()); schoolCommission.setStudentName(oldProcess.getUserName()); - schoolCommission.setCommissionAmount(deduct.getDeduct()); + schoolCommission.setCommissionAmount(process.getCoachCommission()); schoolCommission.setCourseId(oldProcess.getCourseId()); schoolCommission.setSubject(String.valueOf(oldProcess.getSubject())); schoolCommission.setCheckId(sysUser.getId()); schoolCommission.setCheckName(sysUser.getNickname()); schoolCommission.setCheckRemark(process.getFinanceRemark()); + schoolCommission.setStudentIdCard(process.getStudentIdCard()); // 检查是否已存在记录 SchoolCommission existing = schoolCommissionService.getOne( @@ -422,6 +423,18 @@ public class ProcessServiceImpl extends ServiceImpl impl } } else if (process.getFinancePass()) { + + Long tenantId = TenantContextHolder.getTenantId(); + 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()); + + for (UserDTO staff : officeStaffList) { + schoolNotifyMessageSendService.sendMessage(staff.getId(), officeMessage, SchoolBaseConstants.SCHOOL_NOTIFY_MESSAGE_TYPE_ADMIN, null); + } + } + // 仅审核通过时新增记录 schoolCommission.setDeleted(false); schoolCommissionService.save(schoolCommission); @@ -811,6 +824,7 @@ public class ProcessServiceImpl extends ServiceImpl impl BigDecimal studentPay = BigDecimal.ZERO; BigDecimal studentRemainingPay = BigDecimal.ZERO; String studentIdCard = null; + String cashierConfirm = null; if (!courseByInfo.isEmpty()) { studentPay = courseByInfo.get(0).getReserveMoney() != null ? courseByInfo.get(0).getReserveMoney() : BigDecimal.ZERO; @@ -818,11 +832,15 @@ public class ProcessServiceImpl extends ServiceImpl impl courseByInfo.get(0).getRestMoney() : BigDecimal.ZERO; studentIdCard = courseByInfo.get(0).getUserNo() != null ? courseByInfo.get(0).getUserNo() : null; + cashierConfirm = courseByInfo.get(0).getCashierConfirm()!= null? + courseByInfo.get(0).getCashierConfirm() : null; + } processVO.setCoachCommission(deduct); processVO.setStudentPay(studentPay); processVO.setStudentRemainingPay(studentRemainingPay); processVO.setStudentIdCard(studentIdCard); + processVO.setCashierConfirm(cashierConfirm); List list = this.lambdaQuery() .eq(Process::getCoachId, processVO.getCoachId()) .eq(Process::getCourseId, processVO.getCourseId()) 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 e66092ac..bcf2ea7a 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 @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.course.service.impl; +import cn.hutool.core.date.DateUtil; 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; @@ -10,6 +11,7 @@ import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; 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.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -17,6 +19,8 @@ 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.Collections; +import java.util.List; /** * 提成记录 Service 实现类 @@ -81,4 +85,80 @@ public class SchoolCommissionServiceImpl extends ServiceImpl getCoachTotalCommission(SchoolCommissionVO schoolCommissionVO) { + String startTime = ""; + String endTime = ""; + if ("more".equals(schoolCommissionVO.getTimeType())) { + if (StringUtils.isNotEmpty(schoolCommissionVO.getStartTimeStr())) { + startTime = schoolCommissionVO.getStartTimeStr() + " 00:00:01"; + } + if (StringUtils.isNotEmpty(schoolCommissionVO.getEndTimeStr())) { + endTime = schoolCommissionVO.getEndTimeStr() + " 23:59:59"; + } + } else if ("month".equals(schoolCommissionVO.getTimeType())) { + //当月 + startTime = DateUtil.format(DateUtil.beginOfMonth(DateUtil.date()), "yyyy-MM-dd") + " 00:00:01"; + endTime = DateUtil.format(DateUtil.endOfMonth(DateUtil.date()), "yyyy-MM-dd") + " 23:59:59"; + } else if ("day".equals(schoolCommissionVO.getTimeType())) { + //当天 + startTime = DateUtil.formatDate(DateUtil.date()) + " 00:00:01"; + endTime = DateUtil.formatDate(DateUtil.date()) + " 23:59:59"; + } + schoolCommissionVO.setStartTimeStr(startTime); + schoolCommissionVO.setEndTimeStr(endTime); + return schoolCommissionMapper.getCoachTotalCommission(schoolCommissionVO); + } + + /** + * 教练提成列表 + */ + @Override + public IPage getCommissionListByCoachId(SchoolCommissionVO schoolCommissionVO, Page page) { + String startTime = ""; + String endTime = ""; + if ("more".equals(schoolCommissionVO.getTimeType())) { + if (StringUtils.isNotEmpty(schoolCommissionVO.getStartTimeStr())) { + startTime = schoolCommissionVO.getStartTimeStr() + " 00:00:01"; + } + if (StringUtils.isNotEmpty(schoolCommissionVO.getEndTimeStr())) { + endTime = schoolCommissionVO.getEndTimeStr() + " 23:59:59"; + } + } else if ("month".equals(schoolCommissionVO.getTimeType())) { + //当月 + startTime = DateUtil.format(DateUtil.beginOfMonth(DateUtil.date()), "yyyy-MM-dd") + " 00:00:01"; + endTime = DateUtil.format(DateUtil.endOfMonth(DateUtil.date()), "yyyy-MM-dd") + " 23:59:59"; + } else if ("day".equals(schoolCommissionVO.getTimeType())) { + //当天 + startTime = DateUtil.formatDate(DateUtil.date()) + " 00:00:01"; + endTime = DateUtil.formatDate(DateUtil.date()) + " 23:59:59"; + } + schoolCommissionVO.setStartTimeStr(startTime); + schoolCommissionVO.setEndTimeStr(endTime); + return schoolCommissionMapper.getCommissionListByCoachId(schoolCommissionVO, page); + } } 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 6f9b7e48..36ec46b6 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 @@ -1,10 +1,12 @@ package cn.iocoder.yudao.module.course.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; import cn.iocoder.yudao.module.base.constant.SchoolBaseConstants; +import cn.iocoder.yudao.module.base.entity.DlDriveSchoolCourse; import cn.iocoder.yudao.module.base.entity.DlDriveSchoolStudent; import cn.iocoder.yudao.module.base.service.DlDriveSchoolCourseService; import cn.iocoder.yudao.module.base.service.DlDriveSchoolStudentService; @@ -12,9 +14,11 @@ import cn.iocoder.yudao.module.base.service.SchoolNotifyMessageSendService; import cn.iocoder.yudao.module.base.vo.DlDriveSchoolStudentVO; 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.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; @@ -30,6 +34,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -37,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDateTime; @@ -72,6 +78,9 @@ public class SchoolCourseOrderServiceImpl extends ServiceImpl getOrderByCoachId(SchoolCourseOrderVO pageReqVO, Page page) { + String startTime = ""; + String endTime = ""; + if ("more".equals(pageReqVO.getTimeType())) { + if (StringUtils.isNotEmpty(pageReqVO.getStartTimeStr())) { + startTime = pageReqVO.getStartTimeStr() + " 00:00:01"; + } + if (StringUtils.isNotEmpty(pageReqVO.getEndTimeStr())) { + endTime = pageReqVO.getEndTimeStr() + " 23:59:59"; + } + } else if ("month".equals(pageReqVO.getTimeType())) { + //当月 + startTime = DateUtil.format(DateUtil.beginOfMonth(DateUtil.date()), "yyyy-MM-dd") + " 00:00:01"; + endTime = DateUtil.format(DateUtil.endOfMonth(DateUtil.date()), "yyyy-MM-dd") + " 23:59:59"; + } else if ("day".equals(pageReqVO.getTimeType())) { + //当天 + startTime = DateUtil.formatDate(DateUtil.date()) + " 00:00:01"; + endTime = DateUtil.formatDate(DateUtil.date()) + " 23:59:59"; + } + pageReqVO.setStartTimeStr(startTime); + pageReqVO.setEndTimeStr(endTime); + return schoolCourseOrderMapper.getOrderByCoachId(pageReqVO, page); + } + + /** + * 获取教练的订单总金额 + * @param pageReqVO + * @return + */ + @Override + public List getCoachMoney(SchoolCourseOrderVO pageReqVO) { + String startTime = ""; + String endTime = ""; + if ("more".equals(pageReqVO.getTimeType())) { + if (StringUtils.isNotEmpty(pageReqVO.getStartTimeStr())) { + startTime = pageReqVO.getStartTimeStr() + " 00:00:01"; + } + if (StringUtils.isNotEmpty(pageReqVO.getEndTimeStr())) { + endTime = pageReqVO.getEndTimeStr() + " 23:59:59"; + } + } else if ("month".equals(pageReqVO.getTimeType())) { + //当月 + startTime = DateUtil.format(DateUtil.beginOfMonth(DateUtil.date()), "yyyy-MM-dd") + " 00:00:01"; + endTime = DateUtil.format(DateUtil.endOfMonth(DateUtil.date()), "yyyy-MM-dd") + " 23:59:59"; + } else if ("day".equals(pageReqVO.getTimeType())) { + //当天 + startTime = DateUtil.formatDate(DateUtil.date()) + " 00:00:01"; + endTime = DateUtil.formatDate(DateUtil.date()) + " 23:59:59"; + } + pageReqVO.setStartTimeStr(startTime); + pageReqVO.setEndTimeStr(endTime); + return schoolCourseOrderMapper.getCoachMoney(pageReqVO); + } + + /** + * 获取教练的订单明细 + * @param pageReqVO + * @return + */ + @Override + public IPage getOrderMoneyByCoachId(SchoolCourseOrderVO pageReqVO, Page page) { + String startTime = ""; + String endTime = ""; + if ("more".equals(pageReqVO.getTimeType())) { + if (StringUtils.isNotEmpty(pageReqVO.getStartTimeStr())) { + startTime = pageReqVO.getStartTimeStr() + " 00:00:01"; + } + if (StringUtils.isNotEmpty(pageReqVO.getEndTimeStr())) { + endTime = pageReqVO.getEndTimeStr() + " 23:59:59"; + } + } else if ("month".equals(pageReqVO.getTimeType())) { + //当月 + startTime = DateUtil.format(DateUtil.beginOfMonth(DateUtil.date()), "yyyy-MM-dd") + " 00:00:01"; + endTime = DateUtil.format(DateUtil.endOfMonth(DateUtil.date()), "yyyy-MM-dd") + " 23:59:59"; + } else if ("day".equals(pageReqVO.getTimeType())) { + //当天 + startTime = DateUtil.formatDate(DateUtil.date()) + " 00:00:01"; + endTime = DateUtil.formatDate(DateUtil.date()) + " 23:59:59"; + } + pageReqVO.setStartTimeStr(startTime); + pageReqVO.setEndTimeStr(endTime); + return schoolCourseOrderMapper.getOrderMoneyByCoachId(pageReqVO, page); + } + } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/ProcessVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/ProcessVO.java index 9dfe62cb..3ccfcb51 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/ProcessVO.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/ProcessVO.java @@ -39,4 +39,9 @@ public class ProcessVO extends Process { * 学习进度 */ private List processList; + + /** + * 出纳确认情况 + */ + private String cashierConfirm; } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/SchoolCommissionVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/SchoolCommissionVO.java index a9b54e17..8d2ecdec 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/SchoolCommissionVO.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/SchoolCommissionVO.java @@ -16,4 +16,12 @@ public class SchoolCommissionVO extends SchoolCommission { /**课程类型*/ private String courseType; -} \ No newline at end of file + /**开始时间 */ + private String startTimeStr; + /**结束时间 */ + private String endTimeStr; + + /**时间类型 */ + private String timeType; + +} diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/SchoolCourseOrderVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/SchoolCourseOrderVO.java index 1aff2584..3c8c9f6c 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/SchoolCourseOrderVO.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/SchoolCourseOrderVO.java @@ -5,6 +5,8 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.util.Date; + @Schema(description = "管理后台 - 驾照报名订单 Response VO") @Data @ExcelIgnoreUnannotated @@ -21,4 +23,22 @@ public class SchoolCourseOrderVO extends SchoolCourseOrder { * 课程类型 */ private String type; + + /** 渠道 */ + private String source; + + /** 开始时间*/ + private String startTimeStr; + + /** 结束时间*/ + private String endTimeStr; + + /**时间类型*/ + private String timeType; + + /**排序方式*/ + private String sort; + + /** 总金额 */ + private Double totalPrice; } 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 ce15d2c4..add4c6c9 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 @@ -23,6 +23,8 @@ import cn.iocoder.yudao.module.jx.domain.StudentScoreInput; import cn.iocoder.yudao.module.jx.mapper.StudentScoreInputMapper; import cn.iocoder.yudao.module.jx.service.StudentScoreInputService; 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; import cn.iocoder.yudao.module.system.api.user.dto.UserDTO; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springframework.beans.factory.annotation.Autowired; @@ -64,12 +66,17 @@ public class StudentScoreInputServiceImpl implements StudentScoreInputService { @Autowired private SchoolNotifyMessageSendService schoolNotifyMessageSendService; + @Resource + private AdminUserApi userApi; + /** * 录入学员成绩 */ @Override @Transactional(rollbackFor = Exception.class) public void scoreInput(StudentScoreInput studentScoreInput) { + Long userId = SecurityFrameworkUtils.getLoginUserId(); + AdminUserRespDTO sysUser = userApi.getUser(userId); // 获取当前进度信息,设置考试成绩等信息 ProcessVO processVO = BeanUtils.toBean(processService.getById(studentScoreInput.getProcessId()), ProcessVO.class); processVO.setExamStatus(studentScoreInput.getExamStatus()); @@ -79,6 +86,8 @@ public class StudentScoreInputServiceImpl implements StudentScoreInputService { processVO.setStatus(studentScoreInput.getStatus()); processVO.setImages(studentScoreInput.getImages()); processVO.setRemark(studentScoreInput.getRemark()); + processVO.setInputName(sysUser.getNickname()); + processVO.setInputUserId(sysUser.getId()); processService.updateById(processVO); // 如果是科2和科3 需要创建批次信息 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 6e3e2c10..8690dd11 100644 --- a/dl-module-jx/src/main/resources/mapper/base/DlDriveSchoolStudentMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/base/DlDriveSchoolStudentMapper.xml @@ -58,7 +58,18 @@ main.phone AS phone, main.user_id AS userId, dsco.course_type, - dsp.`subject` + dsp.`subject`, + dsco.course_name, + dsco.payment_status, + dsco.cashier_confirm, + dsco.pay_type, + dsco.pay_channel, + dsco.cashier_confirm_remark, + dsco.reserve_money, + dsco.rest_money, + dsco.if_end, + dsco.create_time AS enrollTime, + dsco.user_no AS studentIdCard FROM drive_school_student main LEFT JOIN drive_school_course_order dsco ON main.user_id = dsco.user_id @@ -463,6 +474,7 @@ + + + + + + + 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 aa758f60..ca57b523 100644 --- a/dl-module-jx/src/main/resources/mapper/course/SchoolCourseOrderMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/course/SchoolCourseOrderMapper.xml @@ -58,6 +58,7 @@ order by main.create_time desc + + + - + INSERT INTO system_users (username, password, @@ -139,4 +164,126 @@ WHERE scheme_id=#{schemeId} AND deleted = 0 + + + + + + + +