feat(bpm): 优化薪资付款申请列表展示

- 在 BpmOASalaryService 中新增 getListByProcessInstanceIds 方法
- 在 BpmOASalaryServiceImpl 中实现 getListByProcessInstanceIds 方法
- 修改 BpmTaskExtMapper 中的查询条件,排除自动审批的流程- 在 BpmTaskServiceImpl 中,为待办和已办任务列表添加公司名称展示
This commit is contained in:
furongxin 2025-01-05 10:52:24 +08:00
parent c2af2a8374
commit 44a86b1bac
4 changed files with 76 additions and 6 deletions

View File

@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*;
import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmTaskExtDO;
import cn.iocoder.yudao.module.bpm.enums.task.BpmConstants;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -100,6 +101,7 @@ public interface BpmTaskExtMapper extends BaseMapperX<BpmTaskExtDO> {
.eq(StringUtils.isNotEmpty(pageVO.getName()), BpmProcessInstanceExtDO::getName, pageVO.getName()));
queryWrapperX.likeRight(BpmProcessInstanceExtDO::getProcessDefinitionId, "oa_");
queryWrapperX.eq(BpmTaskExtDO::getAssigneeUserId, userId);
queryWrapperX.ne(BpmTaskExtDO::getReason, BpmConstants.AUTO_APPRAVAL);
queryWrapperX.betweenIfPresent(BpmTaskExtDO::getCreateTime, pageVO.getCreateTime());
queryWrapperX.orderByDesc(BpmTaskExtDO::getEndTime);

View File

@ -4,6 +4,7 @@ import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.salary.BpmOASalaryCrea
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASalaryDO;
import javax.validation.Valid;
import java.util.List;
/**
* 薪资付款申请 Service 接口
@ -13,7 +14,7 @@ import javax.validation.Valid;
public interface BpmOASalaryService {
/**
* 创建用章申请
* 创建薪资付款申请
*
* @param userId 用户编号
* @param createReqVO 创建信息
@ -22,7 +23,7 @@ public interface BpmOASalaryService {
Long createSalary(Long userId, @Valid BpmOASalaryCreateReqVO createReqVO);
/**
* 更新用章申请的状态
* 更新薪资付款申请的状态
*
* @param id 编号
* @param result 结果
@ -30,17 +31,24 @@ public interface BpmOASalaryService {
void updateSalaryResult(Long id, Integer result);
/**
* 获得用章申请
* 获得薪资付款申请
*
* @param id 编号
* @return 用章申请
* @return 薪资付款申请
*/
BpmOASalaryDO getSalary(Long id);
/**
* 获得指定的用章申请
* 获得指定的薪资付款申请
* @param processInstanceId 流程实例编号
* @return 用章申请
* @return 薪资付款申请
*/
BpmOASalaryDO getByProcessInstanceId(String processInstanceId);
/**
* 获得指定的薪资付款申请
* @param processInstanceIds 流程实例编号
* @return 薪资付款申请
*/
List<BpmOASalaryDO> getListByProcessInstanceIds(List<String> processInstanceIds);
}

View File

@ -107,4 +107,10 @@ public class BpmOASalaryServiceImpl extends BpmOABaseService implements BpmOASal
return salaryMapper.selectOne(BpmOASalaryDO::getProcessInstanceId, processInstanceId);
}
@Override
public List<BpmOASalaryDO> getListByProcessInstanceIds(List<String> processInstanceIds) {
return salaryMapper.selectList(BpmOASalaryDO::getProcessInstanceId, processInstanceIds);
}
}

View File

@ -17,6 +17,7 @@ import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceMyPageReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*;
import cn.iocoder.yudao.module.bpm.convert.task.BpmTaskConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASalaryDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmTaskExtDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmProcessInstanceExtMapper;
@ -25,6 +26,7 @@ import cn.iocoder.yudao.module.bpm.enums.task.*;
import cn.iocoder.yudao.module.bpm.service.definition.BpmModelService;
import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService;
import cn.iocoder.yudao.module.bpm.service.message.BpmMessageService;
import cn.iocoder.yudao.module.bpm.service.oa.BpmOASalaryService;
import cn.iocoder.yudao.module.bpm.service.task.dto.ProcessInstanceVariablesDTO;
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
@ -106,6 +108,9 @@ public class BpmTaskServiceImpl implements BpmTaskService {
@Resource
private BpmProcessInstanceExtMapper processInstanceExtMapper;
@Resource
private BpmOASalaryService salaryService;
@Override
public PageResult<BpmTaskCCPageItemRespVO> getCCTaskPage(Long userId, BpmTaskDonePageReqVO pageVO) {
// 查询被抄送的Task
@ -194,6 +199,32 @@ public class BpmTaskServiceImpl implements BpmTaskService {
Page<BpmTaskTodoPageRespVO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
IPage<BpmTaskTodoPageRespVO> pageResp = taskExtMapper.selectTodoTaskPage(page, pageReqVO, userId);
/*
临时处理列表中薪资付款 展示具体公司名称问题
begin
*/
// 获取所有薪资付款的流程实例
List<String> processInstanceIds = pageResp.getRecords().stream()
.filter(item -> item.getProcessDefinitionId().contains("oa_salary"))
.map(BpmTaskTodoPageRespVO::getProcessInstanceId)
.collect(Collectors.toList());
// 获取薪资付款列表
List<BpmOASalaryDO> salaryDOS = salaryService.getListByProcessInstanceIds(processInstanceIds);
Map<String, Long> salaryDeptMap = salaryDOS.stream()
.collect(Collectors.toMap(BpmOASalaryDO::getProcessInstanceId, BpmOASalaryDO::getCompanyDeptId));
// 获取付款部门信息
Map<Long, DeptRespDTO> dtoMap = deptApi.getDeptMap(convertSet(salaryDOS, BpmOASalaryDO::getCompanyDeptId));
pageResp.getRecords().forEach(item -> {
if (salaryDeptMap.containsKey(item.getProcessInstanceId())) {
item.setStartUserNickname(item.getStartUserNickname() +
"(" +
dtoMap.get(salaryDeptMap.get(item.getProcessInstanceId())).getName() +
")");
}
});
return new PageResult<>(pageResp.getRecords(), pageResp.getTotal());
}
@ -217,8 +248,31 @@ public class BpmTaskServiceImpl implements BpmTaskService {
// 获得 User Map
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(startUserIds);
/*
临时处理列表中薪资付款 展示具体公司名称问题
begin
*/
// 获取所有薪资付款的流程实例
List<String> processInstanceIds = pageResult.getList().stream()
.filter(item -> item.getProcessDefinitionId().contains("oa_salary"))
.map(BpmTaskDonePageRespVO::getProcessInstanceId)
.collect(Collectors.toList());
// 获取薪资付款列表
List<BpmOASalaryDO> salaryDOS = salaryService.getListByProcessInstanceIds(processInstanceIds);
Map<String, Long> salaryDeptMap = salaryDOS.stream()
.collect(Collectors.toMap(BpmOASalaryDO::getProcessInstanceId, BpmOASalaryDO::getCompanyDeptId));
// 获取付款部门信息
Map<Long, DeptRespDTO> dtoMap = deptApi.getDeptMap(convertSet(salaryDOS, BpmOASalaryDO::getCompanyDeptId));
pageResult.getList().forEach(item -> {
item.setStartUserNickname(userMap.get(item.getStartUserId()).getNickname());
if (salaryDeptMap.containsKey(item.getProcessInstanceId())) {
item.setStartUserNickname(item.getStartUserNickname() +
"(" +
dtoMap.get(salaryDeptMap.get(item.getProcessInstanceId())).getName() +
")");
}
});
}