0619
This commit is contained in:
parent
f20e476027
commit
79fcb13cc7
@ -150,4 +150,14 @@ public interface SchoolBaseConstants {
|
||||
*/
|
||||
public static final String SCHOOL_NOTIFY_MESSAGE_TEMPLATE_MEMBER_PAY_TO_MEMBER = "学员 %s 订单已支付!";
|
||||
|
||||
/**
|
||||
* 审核不通过
|
||||
*/
|
||||
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_WAIT = "驾校学员 %s ,身份证号:%s,科目 %s 的考试已通过,提成待审核,请查看!";
|
||||
|
||||
}
|
||||
|
||||
@ -142,15 +142,15 @@ public class ProcessController {
|
||||
/**
|
||||
* 财务审核
|
||||
*
|
||||
* @param process {@link Process}
|
||||
* @param processVO {@link Process}
|
||||
* @return cn.iocoder.yudao.framework.common.pojo.CommonResult<java.lang.Boolean>
|
||||
* @author PQZ
|
||||
* @date 15:23 2025/2/18
|
||||
**/
|
||||
@PostMapping("/check")
|
||||
@Operation(summary = "财务审核")
|
||||
public CommonResult<Boolean> saveSchoolCoach(@Valid @RequestBody Process process) {
|
||||
processService.checkProcess(process);
|
||||
public CommonResult<Boolean> saveSchoolCoach(@Valid @RequestBody ProcessVO processVO) {
|
||||
processService.checkProcess(processVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
|
||||
@ -48,6 +48,10 @@ public class SchoolCommission extends TenantBaseDO {
|
||||
* 学生姓名
|
||||
*/
|
||||
private String studentName;
|
||||
/**
|
||||
* 学院身份证号
|
||||
*/
|
||||
private String studentIdCard;
|
||||
/**
|
||||
* 提成金额
|
||||
*/
|
||||
@ -76,5 +80,9 @@ public class SchoolCommission extends TenantBaseDO {
|
||||
* 支付时间
|
||||
*/
|
||||
private Date payTime;
|
||||
/**
|
||||
* 审核备注
|
||||
*/
|
||||
private String checkRemark;
|
||||
|
||||
}
|
||||
|
||||
@ -99,11 +99,11 @@ public interface ProcessService extends IService<Process> {
|
||||
/**
|
||||
* 财务审核
|
||||
*
|
||||
* @param process {@link Process}
|
||||
* @param processVO {@link Process}
|
||||
* @author PQZ
|
||||
* @date 15:24 2025/2/18
|
||||
**/
|
||||
void checkProcess(Process process);
|
||||
void checkProcess(ProcessVO processVO);
|
||||
|
||||
/**
|
||||
* 保存学员课程进度
|
||||
|
||||
@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
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.DlDriveSchoolStudent;
|
||||
import cn.iocoder.yudao.module.base.mapper.DlDriveSchoolCourseMapper;
|
||||
@ -33,8 +34,10 @@ import cn.iocoder.yudao.module.exam.mapper.ExamBatchItemMapper;
|
||||
import cn.iocoder.yudao.module.exam.vo.ExamBatchItemNewVO;
|
||||
import cn.iocoder.yudao.module.jx.domain.DriveSchoolDeduct;
|
||||
import cn.iocoder.yudao.module.jx.service.IDriveSchoolDeductService;
|
||||
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.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
@ -97,6 +100,9 @@ public class ProcessServiceImpl extends ServiceImpl<ProcessMapper, Process> impl
|
||||
@Resource
|
||||
private SchoolCourseSchemeService schemeService;
|
||||
|
||||
@Resource
|
||||
private RoleApi roleApi;
|
||||
|
||||
|
||||
/**
|
||||
* 教练查自己带教的课程和科目
|
||||
@ -343,7 +349,7 @@ public class ProcessServiceImpl extends ServiceImpl<ProcessMapper, Process> impl
|
||||
}*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void checkProcess(Process process) {
|
||||
public void checkProcess(ProcessVO process) {
|
||||
// 查询原始数据和当前用户信息
|
||||
Process oldProcess = getById(process.getId());
|
||||
Long userId = SecurityFrameworkUtils.getLoginUserId();
|
||||
@ -355,6 +361,20 @@ public class ProcessServiceImpl extends ServiceImpl<ProcessMapper, Process> impl
|
||||
return;
|
||||
}
|
||||
|
||||
if(!process.getFinancePass()){
|
||||
// 审核不通过需要发送站内信通知(姓名、科目、原因、时间、审核人)
|
||||
Long tenantId = TenantContextHolder.getTenantId();
|
||||
List<UserDTO> 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());
|
||||
|
||||
for (UserDTO staff : officeStaffList) {
|
||||
schoolNotifyMessageSendService.sendMessage(staff.getId(), officeMessage, SchoolBaseConstants.SCHOOL_NOTIFY_MESSAGE_TYPE_ADMIN, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 查询提成规则
|
||||
DriveSchoolCourseDeduct deduct = deductService.getOne(
|
||||
Wrappers.<DriveSchoolCourseDeduct>lambdaQuery()
|
||||
@ -375,6 +395,7 @@ public class ProcessServiceImpl extends ServiceImpl<ProcessMapper, Process> impl
|
||||
schoolCommission.setSubject(String.valueOf(oldProcess.getSubject()));
|
||||
schoolCommission.setCheckId(sysUser.getId());
|
||||
schoolCommission.setCheckName(sysUser.getNickname());
|
||||
schoolCommission.setCheckRemark(process.getFinanceRemark());
|
||||
|
||||
// 检查是否已存在记录
|
||||
SchoolCommission existing = schoolCommissionService.getOne(
|
||||
@ -397,6 +418,7 @@ public class ProcessServiceImpl extends ServiceImpl<ProcessMapper, Process> impl
|
||||
schoolCommission.setId(existing.getId());
|
||||
schoolCommission.setDeleted(!process.getFinancePass());
|
||||
schoolCommissionService.removeById(existing.getId());
|
||||
|
||||
}
|
||||
|
||||
} else if (process.getFinancePass()) {
|
||||
@ -788,15 +810,27 @@ public class ProcessServiceImpl extends ServiceImpl<ProcessMapper, Process> impl
|
||||
List<SchoolCourseOrderVO> courseByInfo = schoolCourseOrderService.getCourseByInfo(userId, courseId);
|
||||
BigDecimal studentPay = BigDecimal.ZERO;
|
||||
BigDecimal studentRemainingPay = BigDecimal.ZERO;
|
||||
String studentIdCard = null;
|
||||
if (!courseByInfo.isEmpty()) {
|
||||
studentPay = courseByInfo.get(0).getReserveMoney() != null ?
|
||||
courseByInfo.get(0).getReserveMoney() : BigDecimal.ZERO;
|
||||
studentRemainingPay = courseByInfo.get(0).getRestMoney() != null ?
|
||||
courseByInfo.get(0).getRestMoney() : BigDecimal.ZERO;
|
||||
studentIdCard = courseByInfo.get(0).getUserNo() != null ?
|
||||
courseByInfo.get(0).getUserNo() : null;
|
||||
}
|
||||
processVO.setCoachCommission(deduct);
|
||||
processVO.setStudentPay(studentPay);
|
||||
processVO.setStudentRemainingPay(studentRemainingPay);
|
||||
processVO.setStudentIdCard(studentIdCard);
|
||||
List<Process> list = this.lambdaQuery()
|
||||
.eq(Process::getCoachId, processVO.getCoachId())
|
||||
.eq(Process::getCourseId, processVO.getCourseId())
|
||||
.eq(Process::getUserId, processVO.getUserId())
|
||||
.eq(Process::getDeleted, false)
|
||||
.orderByAsc(Process::getSubject)
|
||||
.list();
|
||||
processVO.setProcessList(list);
|
||||
return processVO;
|
||||
}
|
||||
|
||||
|
||||
@ -232,13 +232,81 @@ public class SchoolCourseOrderServiceImpl extends ServiceImpl<SchoolCourseOrderM
|
||||
throw new RuntimeException("订单不存在");
|
||||
}
|
||||
|
||||
//判断新订单课程与旧订单课程是否一致
|
||||
if (!oldOrder.getCourseId().equals(createReqVO.getCourseId())) {
|
||||
// 删除学习记录表中的课程记录
|
||||
processService.remove(Wrappers.lambdaQuery(Process.class)
|
||||
// 检查是否需要更新进度记录
|
||||
boolean isCourseChanged = !oldOrder.getCourseId().equals(createReqVO.getCourseId());
|
||||
boolean isCoachChanged = !oldOrder.getCoachUserId().equals(createReqVO.getCoachUserId());
|
||||
if (isCourseChanged || isCoachChanged) {
|
||||
// 查询所有进度记录
|
||||
List<Process> processList = processService.lambdaQuery()
|
||||
.eq(Process::getUserId, oldOrder.getUserId())
|
||||
.eq(Process::getCourseId, oldOrder.getCourseId()));
|
||||
.eq(Process::getCourseId, oldOrder.getCourseId())
|
||||
.list();
|
||||
|
||||
if (!processList.isEmpty()) {
|
||||
for (Process process : processList) {
|
||||
// 如果课程变化,更新课程信息
|
||||
if (isCourseChanged) {
|
||||
process.setCourseId(createReqVO.getCourseId());
|
||||
process.setCourseName(createReqVO.getCourseName());
|
||||
}
|
||||
// 如果教练变化,更新教练信息
|
||||
if (isCoachChanged) {
|
||||
if (createReqVO.getCoachUserId() != null) {
|
||||
process.setCoachId(Long.valueOf(createReqVO.getCoachUserId()));
|
||||
}
|
||||
process.setCoachName(createReqVO.getCoachUserName());
|
||||
}
|
||||
processService.updateById(process);
|
||||
}
|
||||
}
|
||||
}
|
||||
/*//判断新订单课程与旧订单课程是否一致
|
||||
if (!oldOrder.getCourseId().equals(createReqVO.getCourseId())) {
|
||||
// 查询所有进度
|
||||
List<Process> processList = processService.lambdaQuery()
|
||||
.eq(Process::getUserId, oldOrder.getUserId())
|
||||
.eq(Process::getCourseId, oldOrder.getCourseId())
|
||||
.list();
|
||||
|
||||
if (!processList.isEmpty()) {
|
||||
for (Process process : processList) {
|
||||
// 更新课程ID
|
||||
process.setCourseId(createReqVO.getCourseId());
|
||||
// 更新课程名称
|
||||
process.setCourseName(createReqVO.getCourseName());
|
||||
// 更新教练ID
|
||||
process.setCoachId(Long.valueOf(createReqVO.getCoachUserId()));
|
||||
// 更新教练名称
|
||||
process.setCoachName(createReqVO.getCoachUserName());
|
||||
processService.updateById(process);
|
||||
}
|
||||
}
|
||||
}
|
||||
// 如果课程一直,判断教练是否一致
|
||||
if (!oldOrder.getCoachUserId().equals(createReqVO.getCoachUserId())) {
|
||||
// 查询所有进度
|
||||
List<Process> processList = processService.lambdaQuery()
|
||||
.eq(Process::getUserId, oldOrder.getUserId())
|
||||
.eq(Process::getCourseId, oldOrder.getCourseId())
|
||||
.list();
|
||||
|
||||
if (!processList.isEmpty()) {
|
||||
for (Process process : processList) {
|
||||
// 更新教练ID
|
||||
process.setCoachId(Long.valueOf(createReqVO.getCoachUserId()));
|
||||
// 更新教练名称
|
||||
process.setCoachName(createReqVO.getCoachUserName());
|
||||
processService.updateById(process);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
//判断新订单课程与旧订单课程是否一致
|
||||
// if (!oldOrder.getCourseId().equals(createReqVO.getCourseId())) {
|
||||
// // 删除学习记录表中的课程记录
|
||||
// processService.remove(Wrappers.lambdaQuery(Process.class)
|
||||
// .eq(Process::getUserId, oldOrder.getUserId())
|
||||
// .eq(Process::getCourseId, oldOrder.getCourseId()));
|
||||
// }
|
||||
|
||||
SchoolCourseOrder schoolCourseOrder = BeanUtil.copyProperties(oldOrder, SchoolCourseOrder.class);
|
||||
schoolCourseOrder.setOldOrderId(oldOrder.getId());
|
||||
@ -254,7 +322,7 @@ public class SchoolCourseOrderServiceImpl extends ServiceImpl<SchoolCourseOrderM
|
||||
schoolCourseOrder.setCreateTime(null);
|
||||
schoolCourseOrder.setUpdateTime(null);
|
||||
schoolCourseOrder.setDeleted(SchoolBaseConstants.COMMON_NO);
|
||||
schoolCourseOrder.setIfAssignmentCoach(SchoolBaseConstants.SCHOOL_COURSE_ORDER_IS_NOT_ASSIGN_COACH);
|
||||
schoolCourseOrder.setIfAssignmentCoach(SchoolBaseConstants.SCHOOL_COURSE_ORDER_IS_ASSIGN_COACH);
|
||||
schoolCourseOrder.setIfEnd(SchoolBaseConstants.COMMON_NO);
|
||||
schoolCourseOrder.setEndReason(null);
|
||||
schoolCourseOrder.setEndTime(null);
|
||||
|
||||
@ -5,6 +5,7 @@ import lombok.Data;
|
||||
import org.apache.poi.hpsf.Decimal;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 驾校-学员课程进度 DO
|
||||
@ -33,4 +34,9 @@ public class ProcessVO extends Process {
|
||||
private String name;
|
||||
/** 学员头像 */
|
||||
private String avatar;
|
||||
|
||||
/**
|
||||
* 学习进度
|
||||
*/
|
||||
private List<Process> processList;
|
||||
}
|
||||
|
||||
@ -4,7 +4,10 @@ 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.DlDriveSchoolStudent;
|
||||
import cn.iocoder.yudao.module.base.service.DlDriveSchoolStudentService;
|
||||
import cn.iocoder.yudao.module.base.service.SchoolNotifyMessageSendService;
|
||||
import cn.iocoder.yudao.module.course.entity.Process;
|
||||
import cn.iocoder.yudao.module.course.entity.SchoolCourseOrder;
|
||||
import cn.iocoder.yudao.module.course.service.ProcessService;
|
||||
@ -19,12 +22,17 @@ import cn.iocoder.yudao.module.exam.vo.ExamBatchItemNewVO;
|
||||
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.dto.UserDTO;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Service
|
||||
@ -50,6 +58,12 @@ public class StudentScoreInputServiceImpl implements StudentScoreInputService {
|
||||
@Autowired
|
||||
private SchoolCourseOrderService schoolCourseOrderService;
|
||||
|
||||
@Resource
|
||||
private RoleApi roleApi;
|
||||
|
||||
@Autowired
|
||||
private SchoolNotifyMessageSendService schoolNotifyMessageSendService;
|
||||
|
||||
/**
|
||||
* 录入学员成绩
|
||||
*/
|
||||
@ -69,6 +83,28 @@ public class StudentScoreInputServiceImpl implements StudentScoreInputService {
|
||||
|
||||
// 如果是科2和科3 需要创建批次信息
|
||||
if(studentScoreInput.getSubject() == 2 || studentScoreInput.getSubject() == 3){
|
||||
|
||||
if("1".equals(studentScoreInput.getExamStatus())){
|
||||
// 向会计和出纳发送信息
|
||||
Long tenantId = TenantContextHolder.getTenantId();
|
||||
List<UserDTO> kjStaffList = roleApi.selectUserListByRoleCode(tenantId, "kj");
|
||||
List<UserDTO> cnStaffList = roleApi.selectUserListByRoleCode(tenantId, "cn");
|
||||
List<UserDTO> allStaffList = new ArrayList<>();
|
||||
allStaffList.addAll(kjStaffList);
|
||||
allStaffList.addAll(cnStaffList);
|
||||
DlDriveSchoolStudent studentByUserId = dlDriveSchoolStudentService.getStudentByUserId(studentScoreInput.getUserId());
|
||||
String studentIdCard = null;
|
||||
if(studentByUserId != null){
|
||||
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());
|
||||
for (UserDTO staff : allStaffList) {
|
||||
schoolNotifyMessageSendService.sendMessage(staff.getId(), officeMessage, SchoolBaseConstants.SCHOOL_NOTIFY_MESSAGE_TYPE_ADMIN, null);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// 生成批次信息
|
||||
ExamBatch examBatch = new ExamBatch();
|
||||
String timestamp = DateUtil.format(DateUtil.date(), "yyyyMMddHHmmss");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user