修改 出差申请,追加随行人字段

已办流程和抄送流程 追加部门和用户的筛选条件
This commit is contained in:
furongxin 2024-09-07 20:09:59 +08:00
parent 6d71acad04
commit cb76ab88c3
7 changed files with 92 additions and 5 deletions

View File

@ -6,6 +6,8 @@ import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.evection.BpmOAEvection
import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAEvectionConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAEvectionDO;
import cn.iocoder.yudao.module.bpm.service.oa.BpmOAEvectionService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -33,6 +35,9 @@ public class BpmOAEvectionController {
@Resource
private BpmOAEvectionService evectionService;
@Resource
private AdminUserApi userApi;
@PostMapping("/create")
@Operation(summary = "创建请求申请")
public CommonResult<Long> createEvection(@Valid @RequestBody BpmOAEvectionCreateReqVO createReqVO) {
@ -47,7 +52,14 @@ public class BpmOAEvectionController {
BpmOAEvectionDO evection = evectionService.getEvection(id);
return success(BpmOAEvectionConvert.INSTANCE.convert(evection));
BpmOAEvectionRespVO respVO = BpmOAEvectionConvert.INSTANCE.convert(evection);
if (evection.getTogetherUserId() != null) {
AdminUserRespDTO userRespDTO = userApi.getUser(evection.getTogetherUserId()).getCheckedData();
respVO.setTogetherUserName(userRespDTO.getNickname());
}
return success(respVO);
}
@GetMapping("/getByProcessInstanceId")
@ -57,6 +69,13 @@ public class BpmOAEvectionController {
BpmOAEvectionDO evection = evectionService.getByProcessInstanceId(processInstanceId);
return success(BpmOAEvectionConvert.INSTANCE.convert(evection));
BpmOAEvectionRespVO respVO = BpmOAEvectionConvert.INSTANCE.convert(evection);
if (evection.getTogetherUserId() != null) {
AdminUserRespDTO userRespDTO = userApi.getUser(evection.getTogetherUserId()).getCheckedData();
respVO.setTogetherUserName(userRespDTO.getNickname());
}
return success(respVO);
}
}

View File

@ -29,6 +29,9 @@ public class BpmOAEvectionCreateReqVO {
@NotNull(message = "出差事由不能为空")
private String reason;
@Schema(description = "随行人用户编号")
private Long togetherUserId;
@Schema(description = "出差起点", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "出差起点不能为空")
private String startLocation;

View File

@ -28,6 +28,12 @@ public class BpmOAEvectionRespVO extends BpmOABaseRespVO {
@NotNull(message = "出差事由不能为空")
private String reason;
@Schema(description = "随行人用户编号")
private Long togetherUserId;
@Schema(description = "随行人用户名称")
private String togetherUserName;
@Schema(description = "出差起点", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "出差起点不能为空")
private String startLocation;

View File

@ -33,4 +33,10 @@ public class BpmTaskDonePageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime endCreateTime;
@Schema(description = "部门编号")
private Long deptId;
@Schema(description = "部门编号")
private Long userId;
}

View File

@ -47,6 +47,11 @@ public class BpmOAEvectionDO extends BaseDO {
*/
private String reason;
/**
* 随行人用户编号
*/
private Long togetherUserId;
/**
* 出差地点 起点
*/

View File

@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.*;
import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.Arrays;
import java.util.List;
@Mapper
@ -24,6 +25,7 @@ public interface BpmProcessInstanceExtMapper extends BaseMapperX<BpmProcessInsta
.eqIfPresent(BpmProcessInstanceExtDO::getResult, reqVO.getResult())
.betweenIfPresent(BpmProcessInstanceExtDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(BpmProcessInstanceExtDO::getName, reqVO.getName())
.inIfPresent(BpmProcessInstanceExtDO::getStartUserId, reqVO.getUserIds() == null ? null : Arrays.asList(reqVO.getUserIds()))
.orderByDesc(BpmProcessInstanceExtDO::getId));
}

View File

@ -118,6 +118,20 @@ public class BpmTaskServiceImpl implements BpmTaskService {
BpmProcessInstanceMyPageReqVO reqVO = BeanUtils.toBean(pageVO, BpmProcessInstanceMyPageReqVO.class);
// reqVO.setName(pageVO.getName());
// reqVO.setCreateTime(pageVO.getCreateTime());
// 判断搜索条件是否选择用户
if (pageVO.getUserId() != null) {
reqVO.setUserIds(new Long[]{pageVO.getUserId()});
}else if (pageVO.getDeptId() != null) {
List<AdminUserRespDTO> users = adminUserApi.getUserByDeptIdAll(pageVO.getDeptId()).getCheckedData();
List<Long> userIds = users.stream().map(AdminUserRespDTO::getId).collect(Collectors.toList());
if (CollUtil.isNotEmpty(userIds)) {
reqVO.setUserIds(userIds.toArray(new Long[0]));
}
}
// 通过 BpmProcessInstanceExtDO 先查询到对应的分页
PageResult<BpmProcessInstanceExtDO> pageResult = processInstanceExtMapper.selectCCPage(userId, reqVO);
if (CollUtil.isEmpty(pageResult.getList())) {
@ -239,10 +253,42 @@ public class BpmTaskServiceImpl implements BpmTaskService {
List<BpmTaskExtDO> bpmTaskExtDOs =
taskExtMapper.selectListByTaskIds(convertSet(tasks, HistoricTaskInstance::getId));
Map<String, BpmTaskExtDO> bpmTaskExtDOMap = convertMap(bpmTaskExtDOs, BpmTaskExtDO::getTaskId);
// 获得 ProcessInstance Map
Map<String, HistoricProcessInstance> historicProcessInstanceMap =
processInstanceService.getHistoricProcessInstanceMap(
// // 获得 ProcessInstance Map
// Map<String, HistoricProcessInstance> historicProcessInstanceMap =
// processInstanceService.getHistoricProcessInstanceMap(
// convertSet(tasks, HistoricTaskInstance::getProcessInstanceId));
// 获得 ProcessInstance
List<HistoricProcessInstance> historicProcessInstances = processInstanceService.getHistoricProcessInstances(
convertSet(tasks, HistoricTaskInstance::getProcessInstanceId));
// 判断搜索条件是否选择用户
if (pageVO.getUserId() != null) {
// 筛选出 发起人是pageVO.getUserId() 的流程实例
historicProcessInstances = historicProcessInstances.stream()
.filter(instance -> instance.getStartUserId().equals(pageVO.getUserId().toString()))
.collect(Collectors.toList());
// 同步筛选掉 task记录
List<String> processInstanceIds = convertList(historicProcessInstances, HistoricProcessInstance::getId);
tasks = tasks.stream().filter(task -> processInstanceIds.contains(task.getProcessInstanceId())).collect(Collectors.toList());
}else if (pageVO.getDeptId() != null) {
List<AdminUserRespDTO> users = adminUserApi.getUserByDeptIdAll(pageVO.getDeptId()).getCheckedData();
List<Long> userIds = users.stream().map(AdminUserRespDTO::getId).collect(Collectors.toList());
historicProcessInstances = historicProcessInstances.stream()
.filter(instance -> userIds.contains(Long.valueOf(instance.getStartUserId())))
.collect(Collectors.toList());
// 同步筛选掉 task记录
List<String> processInstanceIds = convertList(historicProcessInstances, HistoricProcessInstance::getId);
tasks = tasks.stream().filter(task -> processInstanceIds.contains(task.getProcessInstanceId())).collect(Collectors.toList());
}
// 获得 ProcessInstance Map
Map<String, HistoricProcessInstance> historicProcessInstanceMap = convertMap(historicProcessInstances, HistoricProcessInstance::getId);
// 获得 User Map
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
convertSet(historicProcessInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId())));