修改 出差申请,追加随行人字段
已办流程和抄送流程 追加部门和用户的筛选条件
This commit is contained in:
parent
6d71acad04
commit
cb76ab88c3
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
}
|
||||
|
@ -47,6 +47,11 @@ public class BpmOAEvectionDO extends BaseDO {
|
||||
*/
|
||||
private String reason;
|
||||
|
||||
/**
|
||||
* 随行人用户编号
|
||||
*/
|
||||
private Long togetherUserId;
|
||||
|
||||
/**
|
||||
* 出差地点 起点
|
||||
*/
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
@ -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())));
|
||||
|
Loading…
Reference in New Issue
Block a user