|
@@ -87,12 +87,24 @@ public class FlwProcessServiceImpl extends ServiceImpl<FlwProcessMapper, FlwProc
|
|
} else {
|
|
} else {
|
|
flwProcessVOList = flowlongMapper.selectFlwProcessList();
|
|
flwProcessVOList = flowlongMapper.selectFlwProcessList();
|
|
}
|
|
}
|
|
|
|
+
|
|
boolean voIsNotEmpty = CollectionUtils.isNotEmpty(flwProcessVOList);
|
|
boolean voIsNotEmpty = CollectionUtils.isNotEmpty(flwProcessVOList);
|
|
|
|
+ if (voIsNotEmpty) {
|
|
|
|
+ // 过滤不存在角色权限的流程
|
|
|
|
+ UserSession userSession = UserSession.getLoginInfo();
|
|
|
|
+ List<Long> notExistProcessIds = flowlongMapper.selectNotExistProcessIds(userSession.getId());
|
|
|
|
+ if (CollectionUtils.isNotEmpty(notExistProcessIds)) {
|
|
|
|
+ flwProcessVOList = flwProcessVOList.stream().sorted(Comparator.comparing(FlwProcessVO::getProcessSort))
|
|
|
|
+ .filter(t -> !notExistProcessIds.contains(t.getProcessId())).toList();
|
|
|
|
+ } else {
|
|
|
|
+ flwProcessVOList.sort(Comparator.comparing(FlwProcessVO::getProcessSort));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
if (null == keyword) {
|
|
if (null == keyword) {
|
|
// 不存在关键词查询
|
|
// 不存在关键词查询
|
|
for (FlwProcessCategory fpc : categoryList) {
|
|
for (FlwProcessCategory fpc : categoryList) {
|
|
if (voIsNotEmpty) {
|
|
if (voIsNotEmpty) {
|
|
- flwProcessVOList.sort(Comparator.comparing(FlwProcessVO::getProcessSort));
|
|
|
|
List<FlwProcessVO> processList = flwProcessVOList.stream().filter(f -> Objects.equals(fpc.getId(), f.getCategoryId())).toList();
|
|
List<FlwProcessVO> processList = flwProcessVOList.stream().filter(f -> Objects.equals(fpc.getId(), f.getCategoryId())).toList();
|
|
boolean isEmpty = CollectionUtils.isEmpty(processList);
|
|
boolean isEmpty = CollectionUtils.isEmpty(processList);
|
|
if (isEmpty && launch) {
|
|
if (isEmpty && launch) {
|
|
@@ -110,7 +122,6 @@ public class FlwProcessServiceImpl extends ServiceImpl<FlwProcessMapper, FlwProc
|
|
// 关键词查询
|
|
// 关键词查询
|
|
for (FlwProcessCategory fpc : categoryList) {
|
|
for (FlwProcessCategory fpc : categoryList) {
|
|
if (voIsNotEmpty) {
|
|
if (voIsNotEmpty) {
|
|
- flwProcessVOList.sort(Comparator.comparing(FlwProcessVO::getProcessSort));
|
|
|
|
List<FlwProcessVO> processList = flwProcessVOList.stream().filter(t -> Objects.equals(t.getCategoryId(), fpc.getId())
|
|
List<FlwProcessVO> processList = flwProcessVOList.stream().filter(t -> Objects.equals(t.getCategoryId(), fpc.getId())
|
|
&& t.getProcessName().contains(keyword)).toList();
|
|
&& t.getProcessName().contains(keyword)).toList();
|
|
if (fpc.getName().contains(keyword)) {
|
|
if (fpc.getName().contains(keyword)) {
|
|
@@ -277,6 +288,19 @@ public class FlwProcessServiceImpl extends ServiceImpl<FlwProcessMapper, FlwProc
|
|
"流程定义管理权限保存失败");
|
|
"流程定义管理权限保存失败");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 设置流程定义参与者,限制发起人角色
|
|
|
|
+ List<NodeAssignee> nodeAssigneeList = rootNode.getNodeAssigneeList();
|
|
|
|
+ if (CollectionUtils.isNotEmpty(nodeAssigneeList)) {
|
|
|
|
+ ApiAssert.fail(!flwProcessActorService.saveProcessActors(processId, nodeAssigneeList.stream().map(t -> {
|
|
|
|
+ FlwProcessActor fpa = new FlwProcessActor();
|
|
|
|
+ fpa.setProcessId(processId);
|
|
|
|
+ fpa.setActorType(null == rootNode.getSetType() ? 3 : rootNode.getSetType());
|
|
|
|
+ fpa.setActorId(Long.valueOf(t.getId()));
|
|
|
|
+ fpa.setActorName(t.getName());
|
|
|
|
+ return fpa;
|
|
|
|
+ }).toList()), "流程发起人参与者信息保持失败");
|
|
|
|
+ }
|
|
|
|
+
|
|
// 保存流程定义配置
|
|
// 保存流程定义配置
|
|
if (null != dto.getCategoryId()) {
|
|
if (null != dto.getCategoryId()) {
|
|
ApiAssert.fail(!flwProcessConfigureService.saveByDto(processId, dto), "流程定义配置保存失败");
|
|
ApiAssert.fail(!flwProcessConfigureService.saveByDto(processId, dto), "流程定义配置保存失败");
|
|
@@ -399,39 +423,6 @@ public class FlwProcessServiceImpl extends ServiceImpl<FlwProcessMapper, FlwProc
|
|
return null != this.saveDto(dto);
|
|
return null != this.saveDto(dto);
|
|
}
|
|
}
|
|
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
- @Override
|
|
|
|
- public boolean releaseById(Long id) {
|
|
|
|
- FlwProcess flwProcess = super.getById(id);
|
|
|
|
- ApiAssert.isEmpty(flwProcess, "指定ID流程实例不存在");
|
|
|
|
- if (1 == flwProcess.getProcessState()) {
|
|
|
|
- // 可用状态直接返回结果
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 读取流程发起权限
|
|
|
|
- ProcessModel processModel = flwProcess.model();
|
|
|
|
- NodeModel nodeModel = processModel.getNodeConfig();
|
|
|
|
- ApiAssert.isEmpty(nodeModel, "流程定义配置有误");
|
|
|
|
- List<NodeAssignee> nodeAssigneeList = nodeModel.getNodeAssigneeList();
|
|
|
|
- if (CollectionUtils.isNotEmpty(nodeAssigneeList)) {
|
|
|
|
- flwProcessActorService.saveProcessActors(id, nodeAssigneeList.stream().map(t -> {
|
|
|
|
- FlwProcessActor fpa = new FlwProcessActor();
|
|
|
|
- fpa.setProcessId(id);
|
|
|
|
- fpa.setActorType(0);
|
|
|
|
- fpa.setActorId(Long.valueOf(t.getId()));
|
|
|
|
- fpa.setActorName(t.getName());
|
|
|
|
- return fpa;
|
|
|
|
- }).toList());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 设置流程为可用状态
|
|
|
|
- FlwProcess temp = new FlwProcess();
|
|
|
|
- temp.setId(id);
|
|
|
|
- temp.setProcessState(1);
|
|
|
|
- return super.updateById(temp);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Override
|
|
@Override
|
|
public boolean checkoutById(Long id) {
|
|
public boolean checkoutById(Long id) {
|