feat(oa): 增加任务时间筛选功能并优化项目节点排序
- 在 ISysOaTaskService 接口及其实现类中增加 startTime 和 endTime 参数, 用于筛选指定时间范围内的任务 - 在 OaProjectScheduleStepServiceImpl 中增加创建时间字段设置 - 优化个人报表查询逻辑,根据奖金池时间范围筛选项目步骤和任务 - 更新 TableDataConstantUtil 中多个项目节点的排序编号,确保节点顺序正确 - 调整部分项目阶段描述内容,使信息更加完整准确
This commit is contained in:
@@ -9,6 +9,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -120,6 +121,6 @@ public interface ISysOaTaskService {
|
||||
* @param projectIds 项目ID列表
|
||||
* @return 符合条件的任务列表
|
||||
*/
|
||||
List<SysOaTask> getTasksByNicknameAndProjectIds(String nickName, List<Long> projectIds);
|
||||
List<SysOaTask> getTasksByNicknameAndProjectIds(String nickName, List<Long> projectIds, Date startTime,Date endTime);
|
||||
|
||||
}
|
||||
|
||||
@@ -17,9 +17,7 @@ import com.ruoyi.oa.domain.*;
|
||||
import com.ruoyi.oa.domain.bo.BatchBo;
|
||||
import com.ruoyi.oa.domain.dto.NodeDTO;
|
||||
import com.ruoyi.oa.domain.dto.PersonalReportDTO;
|
||||
import com.ruoyi.oa.mapper.OaBonusProjectRelMapper;
|
||||
import com.ruoyi.oa.mapper.OaProjectScheduleMapper;
|
||||
import com.ruoyi.oa.mapper.SysOaProjectMapper;
|
||||
import com.ruoyi.oa.mapper.*;
|
||||
import com.ruoyi.oa.service.ISysOaTaskService;
|
||||
import com.ruoyi.system.mapper.SysUserMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -27,7 +25,6 @@ import org.flowable.job.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.oa.domain.bo.OaProjectScheduleStepBo;
|
||||
import com.ruoyi.oa.domain.vo.OaProjectScheduleStepVo;
|
||||
import com.ruoyi.oa.mapper.OaProjectScheduleStepMapper;
|
||||
import com.ruoyi.oa.service.IOaProjectScheduleStepService;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -47,6 +44,8 @@ public class OaProjectScheduleStepServiceImpl implements IOaProjectScheduleStepS
|
||||
|
||||
private final OaProjectScheduleStepMapper baseMapper;
|
||||
|
||||
private final OaBonusPoolMapper bonusPoolMapper;
|
||||
|
||||
private final OaProjectScheduleMapper scheduleMapper;
|
||||
|
||||
private final SysUserMapper sysUserMapper;
|
||||
@@ -277,6 +276,7 @@ public class OaProjectScheduleStepServiceImpl implements IOaProjectScheduleStepS
|
||||
step.setStepOrder((long) stepOrder.getAndIncrement()); // 步骤序号(非空,递增生成)
|
||||
step.setStepName(node.getStepName());// 步骤名称(非空,从NodeDTO获取,建议用二级节点名)
|
||||
step.setSortNum(node.getSortNum());
|
||||
step.setCreateTime(new Date());
|
||||
return step;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
@@ -342,6 +342,13 @@ public class OaProjectScheduleStepServiceImpl implements IOaProjectScheduleStepS
|
||||
*/
|
||||
@Override
|
||||
public PersonalReportDTO personalReport(Long poolId, String nickName) {
|
||||
// 查询奖金池信息(获取开始时间和结束时间)
|
||||
OaBonusPool bonusPool = bonusPoolMapper.selectById(poolId);
|
||||
if (bonusPool == null) {
|
||||
throw new RuntimeException("未找到奖金池:" + poolId);
|
||||
}
|
||||
Date startTime = bonusPool.getStartDate();
|
||||
Date endTime = bonusPool.getEndDate();
|
||||
// 查询用户基本信息
|
||||
SysUser user = sysUserMapper.selectOne(
|
||||
Wrappers.<SysUser>lambdaQuery()
|
||||
@@ -401,6 +408,7 @@ public class OaProjectScheduleStepServiceImpl implements IOaProjectScheduleStepS
|
||||
.eq(OaProjectScheduleStep::getNodeHeader, nickName)
|
||||
.eq(OaProjectScheduleStep::getDelFlag, "0")
|
||||
.eq(OaProjectScheduleStep::getUseFlag, 1)
|
||||
.between(OaProjectScheduleStep::getUpdateTime, startTime, endTime) // 时间范围筛选
|
||||
);
|
||||
|
||||
// 为每个步骤设置对应的项目ID
|
||||
@@ -428,7 +436,7 @@ public class OaProjectScheduleStepServiceImpl implements IOaProjectScheduleStepS
|
||||
.filter(step -> step.getEndTime().isAfter(step.getOriginalEndTime()))
|
||||
.count());
|
||||
// 查询用户相关任务
|
||||
List<SysOaTask> tasks = sysOaTaskService.getTasksByNicknameAndProjectIds(nickName, projectIds);
|
||||
List<SysOaTask> tasks = sysOaTaskService.getTasksByNicknameAndProjectIds(nickName, projectIds,startTime, endTime);
|
||||
// 封装返回DTO
|
||||
PersonalReportDTO result = new PersonalReportDTO();
|
||||
result.setUserInfo(user);
|
||||
|
||||
@@ -314,8 +314,7 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService {
|
||||
|
||||
|
||||
@Override
|
||||
public List<SysOaTask> getTasksByNicknameAndProjectIds(String nickName, List<Long> projectIds) {
|
||||
// 假设已有用户Mapper可以查询ID
|
||||
public List<SysOaTask> getTasksByNicknameAndProjectIds(String nickName, List<Long> projectIds, Date startTime, Date endTime) {
|
||||
SysUser user = userMapper.selectOne(Wrappers.<SysUser>lambdaQuery()
|
||||
.eq(SysUser::getNickName, nickName)
|
||||
.eq(SysUser::getDelFlag, "0"));
|
||||
@@ -324,12 +323,10 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// 查询条件:
|
||||
// 1. 任务执行人ID = 当前用户ID
|
||||
// 2. 任务所属项目ID在奖金池关联的项目列表中
|
||||
// 3. 未删除
|
||||
// 增加任务开始时间在奖金池时间范围内的筛选
|
||||
return baseMapper.selectList(Wrappers.<SysOaTask>lambdaQuery()
|
||||
.eq(SysOaTask::getWorkerId, user.getUserId()) // 执行人ID匹配
|
||||
.in(projectIds != null && !projectIds.isEmpty(), SysOaTask::getProjectId, projectIds)); // 项目ID在列表中
|
||||
.eq(SysOaTask::getWorkerId, user.getUserId())
|
||||
.in(projectIds != null && !projectIds.isEmpty(), SysOaTask::getProjectId, projectIds)
|
||||
.between(SysOaTask::getBeginTime, startTime, endTime)); // 任务开始时间筛选
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user