|
|
@@ -33,6 +33,7 @@ import org.dromara.order.service.IOrderCustomerFlowService;
|
|
|
import org.dromara.order.service.IOrderCustomerFlowNodeService;
|
|
|
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
@@ -205,7 +206,11 @@ public class OrderCustomerFlowServiceImpl extends ServiceImpl<OrderCustomerFlowM
|
|
|
deleteWrapper.eq(OrderCustomerFlowNode::getFlowId, flowId);
|
|
|
nodeService.remove(deleteWrapper);
|
|
|
}
|
|
|
-
|
|
|
+ //关闭其它流程
|
|
|
+ baseMapper.update(Wrappers.lambdaUpdate(OrderCustomerFlow.class)
|
|
|
+ .set(OrderCustomerFlow::getStatus, "1")
|
|
|
+ .ne(OrderCustomerFlow::getId, flowId)
|
|
|
+ );
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@@ -231,7 +236,8 @@ public class OrderCustomerFlowServiceImpl extends ServiceImpl<OrderCustomerFlowM
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public Boolean initOrderFlow(Long orderId) {
|
|
|
+ public Boolean initOrderFlow(Long orderId, Long contactId) {
|
|
|
+
|
|
|
//查询默认开启的流程
|
|
|
OrderCustomerFlow flow = baseMapper.selectOne(
|
|
|
new LambdaQueryWrapper<OrderCustomerFlow>()
|
|
|
@@ -250,10 +256,22 @@ public class OrderCustomerFlowServiceImpl extends ServiceImpl<OrderCustomerFlowM
|
|
|
if (ObjectUtil.isEmpty(orderCustomerFlowNodes)) {
|
|
|
return false;
|
|
|
}
|
|
|
- //
|
|
|
+ //过滤出开始节点
|
|
|
+ OrderCustomerFlowNode startNode = orderCustomerFlowNodes.stream().filter(node -> node.getNodeType() == 0).findFirst().orElse(null);
|
|
|
+ if (ObjectUtil.isEmpty(startNode) ) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!startNode.getHandlerId().contains(String.valueOf(contactId))){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isEmpty(startNode.getHandlerId()) || Objects.equals(startNode.getHandlerId(), "0")){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ //过滤出中间节点
|
|
|
+ List<OrderCustomerFlowNode> middleNodes = orderCustomerFlowNodes.stream().filter(node -> node.getNodeType() == 1).collect(Collectors.toList());
|
|
|
List<OrderCustomerFlowNodeLink> orderCustomerFlowNodeLinks = new ArrayList<>();
|
|
|
//先初始化流程节点
|
|
|
- for (OrderCustomerFlowNode orderCustomerFlowNode : orderCustomerFlowNodes) {
|
|
|
+ for (OrderCustomerFlowNode orderCustomerFlowNode : middleNodes) {
|
|
|
OrderCustomerFlowNodeLink nodeLink = BeanUtil.toBean(orderCustomerFlowNode, OrderCustomerFlowNodeLink.class);
|
|
|
nodeLink.setId(null);
|
|
|
nodeLink.setOrderId(orderId);
|