|
|
@@ -80,17 +80,35 @@ public class WorkflowWorkNodeServiceImpl extends ServiceImpl<WorkflowWorkNodeMap
|
|
|
public void updateWorkflowWorkNode(WorkflowWorkNodeSaveReqVO updateReqVO) {
|
|
|
Assert.notNull(updateReqVO.getNodeId(), "nodeId不能为空!");
|
|
|
WorkflowWorkNodeDO byId = getById(updateReqVO.getNodeId());
|
|
|
- // 更新
|
|
|
- WorkflowWorkNodeDO updateObj = BeanUtils.toBean(updateReqVO, WorkflowWorkNodeDO.class);
|
|
|
- updateObj.setId(updateReqVO.getNodeId());
|
|
|
- workflowWorkNodeMapper.updateById(updateObj);
|
|
|
- // 开始新建isc_workflow_work_node_user关联关系
|
|
|
- if (updateReqVO.getNodeUserDOList() != null && !updateReqVO.getNodeUserDOList().isEmpty()) {
|
|
|
+
|
|
|
+ // 开始新建isc_workflow_work_node_user关联关系,如果是上锁和共锁才有意义
|
|
|
+ if (byId != null
|
|
|
+ && (byId.getType().equals(WorkTypeEnum.LOCK.getValue()) || byId.getType().equals(WorkTypeEnum.COLOCK.getValue()))
|
|
|
+ && updateReqVO.getNodeUserDOList() != null
|
|
|
+ && !updateReqVO.getNodeUserDOList().isEmpty()) {
|
|
|
// 无论有没有 先删除再生成
|
|
|
workflowWorkNodeUserService.remove(Wrappers.<WorkflowWorkNodeUserDO>lambdaQuery().eq(WorkflowWorkNodeUserDO::getNodeId, updateReqVO.getNodeId()));
|
|
|
// 开始生成
|
|
|
updateReqVO.getNodeUserDOList().forEach(o -> o.setNodeId(updateReqVO.getNodeId()));
|
|
|
workflowWorkNodeUserService.saveBatch(updateReqVO.getNodeUserDOList());
|
|
|
+
|
|
|
+ if (byId.getType().equals(WorkTypeEnum.LOCK.getValue())) {
|
|
|
+ // 如果是上锁,修改一下上锁人字段
|
|
|
+ updateReqVO.setLockPerson(String.valueOf(updateReqVO.getNodeUserDOList().get(0).getUserId()));
|
|
|
+ }
|
|
|
+ if (byId.getType().equals(WorkTypeEnum.COLOCK.getValue())) {
|
|
|
+ // 如果是共锁,修改一下共锁人字段
|
|
|
+ String colockPersons = updateReqVO.getNodeUserDOList().stream().map(WorkflowWorkNodeUserDO::getUserId).map(String::valueOf).collect(Collectors.joining(",", "[", "]"));
|
|
|
+ updateReqVO.setColockPersons(colockPersons);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 同时需要修改解锁/解除共锁字段
|
|
|
+ update(Wrappers.<WorkflowWorkNodeDO>lambdaUpdate()
|
|
|
+ .eq(WorkflowWorkNodeDO::getWorkId, byId.getWorkId())
|
|
|
+ .eq(WorkflowWorkNodeDO::getIsolationNodeUuid, byId.getUuid())
|
|
|
+ .set(byId.getType().equals(WorkTypeEnum.LOCK.getValue()), WorkflowWorkNodeDO::getLockPerson, updateReqVO.getLockPerson())
|
|
|
+ .set(byId.getType().equals(WorkTypeEnum.COLOCK.getValue()), WorkflowWorkNodeDO::getColockPersons, updateReqVO.getColockPersons())
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -105,22 +123,19 @@ public class WorkflowWorkNodeServiceImpl extends ServiceImpl<WorkflowWorkNodeMap
|
|
|
}
|
|
|
|
|
|
// 检测,如果这个点位是隔离节点,并且他的有对应的解除隔离,需要更新解除隔离
|
|
|
- if (byId.getType().equals(WorkTypeEnum.LOCK.getValue())) {
|
|
|
- List<WorkflowWorkNodeDO> list = list(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
|
|
|
+ if (byId != null && byId.getType().equals(WorkTypeEnum.LOCK.getValue())) {
|
|
|
+ update(Wrappers.<WorkflowWorkNodeDO>lambdaUpdate()
|
|
|
.eq(WorkflowWorkNodeDO::getWorkId, byId.getWorkId())
|
|
|
- .eq(WorkflowWorkNodeDO::getIsolationNodeUuid, byId.getUuid()));
|
|
|
- if (!list.isEmpty()) {
|
|
|
- List<Long> ids = list.stream().map(WorkflowWorkNodeDO::getId).toList();
|
|
|
- update(Wrappers.<WorkflowWorkNodeDO>lambdaUpdate()
|
|
|
- .in(WorkflowWorkNodeDO::getId, ids)
|
|
|
- .set(WorkflowWorkNodeDO::getIsolationPoints, updateReqVO.getIsolationPoints())
|
|
|
- .set(WorkflowWorkNodeDO::getLockPerson, byId.getLockPerson())
|
|
|
- .set(WorkflowWorkNodeDO::getColockPersons, byId.getColockPersons()));
|
|
|
- }
|
|
|
+ .eq(WorkflowWorkNodeDO::getIsolationNodeUuid, byId.getUuid())
|
|
|
+ .set(WorkflowWorkNodeDO::getIsolationPoints, updateReqVO.getIsolationPoints()));
|
|
|
}
|
|
|
|
|
|
- }
|
|
|
+ // 更新
|
|
|
+ WorkflowWorkNodeDO updateObj = BeanUtils.toBean(updateReqVO, WorkflowWorkNodeDO.class);
|
|
|
+ updateObj.setId(updateReqVO.getNodeId());
|
|
|
+ workflowWorkNodeMapper.updateById(updateObj);
|
|
|
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public WorkflowWorkNodeDO getWorkflowWorkNode(Long id) {
|