238 lines
9.7 KiB
Java
238 lines
9.7 KiB
Java
package org.dromara.zsjy.service.impl;
|
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import lombok.RequiredArgsConstructor;
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
import org.dromara.common.satoken.utils.LoginHelper;
|
|
import org.dromara.zsjy.domain.ZsjyEnrollmentProcess;
|
|
import org.dromara.zsjy.domain.bo.ZsjyEnrollmentProcessBo;
|
|
import org.dromara.zsjy.domain.vo.ZsjyEnrollmentProcessVo;
|
|
import org.dromara.zsjy.mapper.ZsjyEnrollmentProcessMapper;
|
|
import org.dromara.zsjy.service.IZsjyEnrollmentProcessService;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.util.Collection;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 招生录取流程状态Service实现类
|
|
* 修复版本 - 添加了基于用户角色的数据过滤逻辑
|
|
*
|
|
* @author Cursor AI
|
|
* @date 2025-07-21
|
|
*/
|
|
@Service
|
|
@RequiredArgsConstructor
|
|
public class ZsjyEnrollmentProcessServiceImpl implements IZsjyEnrollmentProcessService {
|
|
|
|
private final ZsjyEnrollmentProcessMapper baseMapper;
|
|
|
|
/**
|
|
* 查询招生录取流程状态
|
|
*
|
|
* @param id 招生录取流程状态主键
|
|
* @return 招生录取流程状态
|
|
*/
|
|
@Override
|
|
public ZsjyEnrollmentProcessVo queryById(Long id) {
|
|
return baseMapper.selectVoById(id);
|
|
}
|
|
|
|
/**
|
|
* 构建查询条件
|
|
*/
|
|
private LambdaQueryWrapper<ZsjyEnrollmentProcess> buildQueryWrapper(ZsjyEnrollmentProcessBo bo) {
|
|
LambdaQueryWrapper<ZsjyEnrollmentProcess> lqw = new LambdaQueryWrapper<>();
|
|
lqw.eq(bo.getEnrollmentId() != null, ZsjyEnrollmentProcess::getEnrollmentId, bo.getEnrollmentId());
|
|
lqw.like(StringUtils.isNotBlank(bo.getStudentName()), ZsjyEnrollmentProcess::getStudentName, bo.getStudentName());
|
|
lqw.like(StringUtils.isNotBlank(bo.getIdCard()), ZsjyEnrollmentProcess::getIdCard, bo.getIdCard());
|
|
lqw.eq(StringUtils.isNotBlank(bo.getCurrentStatus()), ZsjyEnrollmentProcess::getCurrentStatus, bo.getCurrentStatus());
|
|
lqw.eq(bo.getCurrentHandler() != null, ZsjyEnrollmentProcess::getCurrentHandler, bo.getCurrentHandler());
|
|
lqw.eq(StringUtils.isNotBlank(bo.getInfoAuditStatus()), ZsjyEnrollmentProcess::getInfoAuditStatus, bo.getInfoAuditStatus());
|
|
lqw.eq(StringUtils.isNotBlank(bo.getAdmissionStatus()), ZsjyEnrollmentProcess::getAdmissionStatus, bo.getAdmissionStatus());
|
|
lqw.eq(StringUtils.isNotBlank(bo.getFinalAuditStatus()), ZsjyEnrollmentProcess::getFinalAuditStatus, bo.getFinalAuditStatus());
|
|
lqw.eq(bo.getIsCompleted() != null, ZsjyEnrollmentProcess::getIsCompleted, bo.getIsCompleted());
|
|
return lqw;
|
|
}
|
|
|
|
/**
|
|
* 分页查询招生录取流程状态列表
|
|
* 修复:添加基于用户角色的数据过滤逻辑
|
|
*
|
|
* @param bo 招生录取流程状态查询条件
|
|
* @param pageQuery 分页查询参数
|
|
* @return 招生录取流程状态分页列表
|
|
*/
|
|
@Override
|
|
public TableDataInfo<ZsjyEnrollmentProcessVo> queryPageList(ZsjyEnrollmentProcessBo bo, PageQuery pageQuery) {
|
|
LambdaQueryWrapper<ZsjyEnrollmentProcess> lqw = buildQueryWrapper(bo);
|
|
|
|
// 获取当前用户ID和角色
|
|
Long userId = LoginHelper.getUserId();
|
|
List<String> roles = LoginHelper.getRolePermission();
|
|
|
|
// 根据角色过滤数据
|
|
if (roles.contains("zsjy_info_auditor")) {
|
|
// 信息审核员只能看到状态为0和1的数据
|
|
lqw.in(ZsjyEnrollmentProcess::getCurrentStatus, "0", "1");
|
|
} else if (roles.contains("zsjy_admission_processor")) {
|
|
// 录取处理员只能看到状态为2的数据
|
|
lqw.eq(ZsjyEnrollmentProcess::getCurrentStatus, "2");
|
|
} else if (!roles.contains("admin") && !roles.contains("superadmin")) {
|
|
// 非管理员且非特定角色,只能看到自己处理的数据
|
|
lqw.eq(ZsjyEnrollmentProcess::getCurrentHandler, userId);
|
|
}
|
|
|
|
Page<ZsjyEnrollmentProcessVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
|
return TableDataInfo.build(result);
|
|
}
|
|
|
|
/**
|
|
* 查询符合条件的招生录取流程状态列表
|
|
*
|
|
* @param bo 招生录取流程状态查询条件
|
|
* @return 招生录取流程状态列表
|
|
*/
|
|
@Override
|
|
public List<ZsjyEnrollmentProcessVo> queryList(ZsjyEnrollmentProcessBo bo) {
|
|
LambdaQueryWrapper<ZsjyEnrollmentProcess> lqw = buildQueryWrapper(bo);
|
|
return baseMapper.selectVoList(lqw);
|
|
}
|
|
|
|
/**
|
|
* 查询当前用户的待处理流程列表
|
|
* 修复:添加基于用户角色的数据过滤逻辑
|
|
*
|
|
* @param bo 招生录取流程状态查询条件
|
|
* @param pageQuery 分页查询参数
|
|
* @return 待处理的招生录取流程状态分页列表
|
|
*/
|
|
@Override
|
|
public TableDataInfo<ZsjyEnrollmentProcessVo> queryPendingList(ZsjyEnrollmentProcessBo bo, PageQuery pageQuery) {
|
|
LambdaQueryWrapper<ZsjyEnrollmentProcess> lqw = buildQueryWrapper(bo);
|
|
|
|
// 获取当前用户ID和角色
|
|
Long userId = LoginHelper.getUserId();
|
|
List<String> roles = LoginHelper.getRolePermission();
|
|
|
|
// 根据角色过滤待处理数据
|
|
if (roles.contains("zsjy_info_auditor")) {
|
|
// 信息审核员只能看到状态为0和1的待处理数据
|
|
lqw.and(wrapper -> wrapper
|
|
.eq(ZsjyEnrollmentProcess::getCurrentHandler, userId)
|
|
.or(subWrapper -> subWrapper
|
|
.isNull(ZsjyEnrollmentProcess::getCurrentHandler)
|
|
.in(ZsjyEnrollmentProcess::getCurrentStatus, "0", "1")
|
|
)
|
|
);
|
|
} else if (roles.contains("zsjy_admission_processor")) {
|
|
// 录取处理员只能看到状态为2的待处理数据
|
|
lqw.and(wrapper -> wrapper
|
|
.eq(ZsjyEnrollmentProcess::getCurrentHandler, userId)
|
|
.or(subWrapper -> subWrapper
|
|
.isNull(ZsjyEnrollmentProcess::getCurrentHandler)
|
|
.eq(ZsjyEnrollmentProcess::getCurrentStatus, "2")
|
|
)
|
|
);
|
|
} else if (roles.contains("admin") || roles.contains("superadmin")) {
|
|
// 管理员可以看到所有待处理数据
|
|
// 不添加额外过滤条件
|
|
} else {
|
|
// 其他用户只能看到分配给自己的数据
|
|
lqw.eq(ZsjyEnrollmentProcess::getCurrentHandler, userId);
|
|
}
|
|
|
|
// 排除已完成和已驳回的流程
|
|
lqw.notIn(ZsjyEnrollmentProcess::getCurrentStatus, "4", "9");
|
|
|
|
Page<ZsjyEnrollmentProcessVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
|
return TableDataInfo.build(result);
|
|
}
|
|
|
|
/**
|
|
* 根据报名信息ID查询流程状态
|
|
*
|
|
* @param enrollmentId 报名信息ID
|
|
* @return 招生录取流程状态
|
|
*/
|
|
@Override
|
|
public ZsjyEnrollmentProcessVo queryByEnrollmentId(Long enrollmentId) {
|
|
LambdaQueryWrapper<ZsjyEnrollmentProcess> lqw = new LambdaQueryWrapper<>();
|
|
lqw.eq(ZsjyEnrollmentProcess::getEnrollmentId, enrollmentId);
|
|
return baseMapper.selectVoOne(lqw);
|
|
}
|
|
|
|
/**
|
|
* 新增招生录取流程状态
|
|
*
|
|
* @param bo 招生录取流程状态
|
|
* @return 结果
|
|
*/
|
|
@Override
|
|
public Boolean insertByBo(ZsjyEnrollmentProcessBo bo) {
|
|
ZsjyEnrollmentProcess add = MapstructUtils.convert(bo, ZsjyEnrollmentProcess.class);
|
|
// 设置初始状态为待审核
|
|
if (StringUtils.isEmpty(add.getCurrentStatus())) {
|
|
add.setCurrentStatus("0");
|
|
}
|
|
// 设置信息审核状态为待审核
|
|
if (StringUtils.isEmpty(add.getInfoAuditStatus())) {
|
|
add.setInfoAuditStatus("0");
|
|
}
|
|
// 设置录取处理状态为待处理
|
|
if (StringUtils.isEmpty(add.getAdmissionStatus())) {
|
|
add.setAdmissionStatus("0");
|
|
}
|
|
// 设置最终审核状态为待确认
|
|
if (StringUtils.isEmpty(add.getFinalAuditStatus())) {
|
|
add.setFinalAuditStatus("0");
|
|
}
|
|
// 设置缴费状态为未缴费
|
|
if (StringUtils.isEmpty(add.getPaymentStatus())) {
|
|
add.setPaymentStatus("0");
|
|
}
|
|
// 设置完成状态为未完成
|
|
if (add.getIsCompleted() == null) {
|
|
add.setIsCompleted(0);
|
|
}
|
|
// 分配处理人(根据角色分配)
|
|
if (add.getCurrentHandler() == null) {
|
|
// 这里应该根据实际业务逻辑分配处理人
|
|
// 例如:从信息审核员角色中选择一个用户作为处理人
|
|
}
|
|
|
|
return baseMapper.insert(add) > 0;
|
|
}
|
|
|
|
/**
|
|
* 修改招生录取流程状态
|
|
*
|
|
* @param bo 招生录取流程状态
|
|
* @return 结果
|
|
*/
|
|
@Override
|
|
public Boolean updateByBo(ZsjyEnrollmentProcessBo bo) {
|
|
ZsjyEnrollmentProcess update = MapstructUtils.convert(bo, ZsjyEnrollmentProcess.class);
|
|
return baseMapper.updateById(update) > 0;
|
|
}
|
|
|
|
/**
|
|
* 校验并批量删除招生录取流程状态信息
|
|
*
|
|
* @param ids 需要删除的招生录取流程状态主键集合
|
|
* @param isValid 是否校验,true-删除前校验,false-不校验
|
|
* @return 结果
|
|
*/
|
|
@Override
|
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
|
if (isValid) {
|
|
// 进行校验,例如检查是否有已完成的流程不允许删除等
|
|
}
|
|
return baseMapper.deleteBatchIds(ids) > 0;
|
|
}
|
|
} |