修改 出差申请,追加随行人字段
已办流程和抄送流程 追加部门和用户的筛选条件
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.convert.oa.BpmOAEvectionConvert;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAEvectionDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAEvectionDO;
|
||||||
import cn.iocoder.yudao.module.bpm.service.oa.BpmOAEvectionService;
|
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.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
@ -33,6 +35,9 @@ public class BpmOAEvectionController {
|
|||||||
@Resource
|
@Resource
|
||||||
private BpmOAEvectionService evectionService;
|
private BpmOAEvectionService evectionService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AdminUserApi userApi;
|
||||||
|
|
||||||
@PostMapping("/create")
|
@PostMapping("/create")
|
||||||
@Operation(summary = "创建请求申请")
|
@Operation(summary = "创建请求申请")
|
||||||
public CommonResult<Long> createEvection(@Valid @RequestBody BpmOAEvectionCreateReqVO createReqVO) {
|
public CommonResult<Long> createEvection(@Valid @RequestBody BpmOAEvectionCreateReqVO createReqVO) {
|
||||||
@ -47,7 +52,14 @@ public class BpmOAEvectionController {
|
|||||||
|
|
||||||
BpmOAEvectionDO evection = evectionService.getEvection(id);
|
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")
|
@GetMapping("/getByProcessInstanceId")
|
||||||
@ -57,6 +69,13 @@ public class BpmOAEvectionController {
|
|||||||
|
|
||||||
BpmOAEvectionDO evection = evectionService.getByProcessInstanceId(processInstanceId);
|
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 = "出差事由不能为空")
|
@NotNull(message = "出差事由不能为空")
|
||||||
private String reason;
|
private String reason;
|
||||||
|
|
||||||
|
@Schema(description = "随行人用户编号")
|
||||||
|
private Long togetherUserId;
|
||||||
|
|
||||||
@Schema(description = "出差起点", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "出差起点", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@NotNull(message = "出差起点不能为空")
|
@NotNull(message = "出差起点不能为空")
|
||||||
private String startLocation;
|
private String startLocation;
|
||||||
|
@ -28,6 +28,12 @@ public class BpmOAEvectionRespVO extends BpmOABaseRespVO {
|
|||||||
@NotNull(message = "出差事由不能为空")
|
@NotNull(message = "出差事由不能为空")
|
||||||
private String reason;
|
private String reason;
|
||||||
|
|
||||||
|
@Schema(description = "随行人用户编号")
|
||||||
|
private Long togetherUserId;
|
||||||
|
|
||||||
|
@Schema(description = "随行人用户名称")
|
||||||
|
private String togetherUserName;
|
||||||
|
|
||||||
@Schema(description = "出差起点", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "出差起点", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@NotNull(message = "出差起点不能为空")
|
@NotNull(message = "出差起点不能为空")
|
||||||
private String startLocation;
|
private String startLocation;
|
||||||
|
@ -33,4 +33,10 @@ public class BpmTaskDonePageReqVO extends PageParam {
|
|||||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
private LocalDateTime endCreateTime;
|
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 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 cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
@ -24,6 +25,7 @@ public interface BpmProcessInstanceExtMapper extends BaseMapperX<BpmProcessInsta
|
|||||||
.eqIfPresent(BpmProcessInstanceExtDO::getResult, reqVO.getResult())
|
.eqIfPresent(BpmProcessInstanceExtDO::getResult, reqVO.getResult())
|
||||||
.betweenIfPresent(BpmProcessInstanceExtDO::getCreateTime, reqVO.getCreateTime())
|
.betweenIfPresent(BpmProcessInstanceExtDO::getCreateTime, reqVO.getCreateTime())
|
||||||
.eqIfPresent(BpmProcessInstanceExtDO::getName, reqVO.getName())
|
.eqIfPresent(BpmProcessInstanceExtDO::getName, reqVO.getName())
|
||||||
|
.inIfPresent(BpmProcessInstanceExtDO::getStartUserId, reqVO.getUserIds() == null ? null : Arrays.asList(reqVO.getUserIds()))
|
||||||
.orderByDesc(BpmProcessInstanceExtDO::getId));
|
.orderByDesc(BpmProcessInstanceExtDO::getId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -118,6 +118,20 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
BpmProcessInstanceMyPageReqVO reqVO = BeanUtils.toBean(pageVO, BpmProcessInstanceMyPageReqVO.class);
|
BpmProcessInstanceMyPageReqVO reqVO = BeanUtils.toBean(pageVO, BpmProcessInstanceMyPageReqVO.class);
|
||||||
// reqVO.setName(pageVO.getName());
|
// reqVO.setName(pageVO.getName());
|
||||||
// reqVO.setCreateTime(pageVO.getCreateTime());
|
// 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 表,先查询到对应的分页
|
// 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页
|
||||||
PageResult<BpmProcessInstanceExtDO> pageResult = processInstanceExtMapper.selectCCPage(userId, reqVO);
|
PageResult<BpmProcessInstanceExtDO> pageResult = processInstanceExtMapper.selectCCPage(userId, reqVO);
|
||||||
if (CollUtil.isEmpty(pageResult.getList())) {
|
if (CollUtil.isEmpty(pageResult.getList())) {
|
||||||
@ -239,10 +253,42 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
List<BpmTaskExtDO> bpmTaskExtDOs =
|
List<BpmTaskExtDO> bpmTaskExtDOs =
|
||||||
taskExtMapper.selectListByTaskIds(convertSet(tasks, HistoricTaskInstance::getId));
|
taskExtMapper.selectListByTaskIds(convertSet(tasks, HistoricTaskInstance::getId));
|
||||||
Map<String, BpmTaskExtDO> bpmTaskExtDOMap = convertMap(bpmTaskExtDOs, BpmTaskExtDO::getTaskId);
|
Map<String, BpmTaskExtDO> bpmTaskExtDOMap = convertMap(bpmTaskExtDOs, BpmTaskExtDO::getTaskId);
|
||||||
// 获得 ProcessInstance Map
|
// // 获得 ProcessInstance Map
|
||||||
Map<String, HistoricProcessInstance> historicProcessInstanceMap =
|
// Map<String, HistoricProcessInstance> historicProcessInstanceMap =
|
||||||
processInstanceService.getHistoricProcessInstanceMap(
|
// processInstanceService.getHistoricProcessInstanceMap(
|
||||||
|
// convertSet(tasks, HistoricTaskInstance::getProcessInstanceId));
|
||||||
|
|
||||||
|
// 获得 ProcessInstance
|
||||||
|
List<HistoricProcessInstance> historicProcessInstances = processInstanceService.getHistoricProcessInstances(
|
||||||
convertSet(tasks, HistoricTaskInstance::getProcessInstanceId));
|
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
|
// 获得 User Map
|
||||||
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
|
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
|
||||||
convertSet(historicProcessInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId())));
|
convertSet(historicProcessInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId())));
|
||||||
|
Loading…
Reference in New Issue
Block a user