|
@@ -1,13 +1,16 @@
|
|
|
package com.dayou.service.workflow;
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.dayou.common.BaseEntity;
|
|
|
+import com.dayou.dto.HandlerPermissionDTO;
|
|
|
import com.dayou.dto.WorkNodeCommit;
|
|
|
import com.dayou.dto.WorkNodeDTO;
|
|
|
import com.dayou.entity.WorkFlow;
|
|
|
import com.dayou.entity.WorkFlowNodeInstance;
|
|
|
import com.dayou.entity.WorkNodeTask;
|
|
|
+import com.dayou.entity.WorkTaskRecord;
|
|
|
import com.dayou.enums.MainBusinessEnum;
|
|
|
import com.dayou.enums.workflow.NodeLogEnum;
|
|
|
import com.dayou.enums.workflow.NodeStateEnum;
|
|
@@ -21,6 +24,7 @@ import com.dayou.workflow.handler.AssetsNodeHandler;
|
|
|
import com.dayou.workflow.handler.MajorNodeHandler;
|
|
|
import com.dayou.workflow.config.WorkNodeProcessable;
|
|
|
import com.dayou.workflow.handler.PersonalNodeHandler;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
@@ -65,6 +69,9 @@ public class WorkFlowServiceImpl extends ServiceImpl<WorkFlowMapper, WorkFlow> i
|
|
|
@Autowired
|
|
|
private WorkTaskRecordMapper workTaskRecordMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private WorkNodeProcessable workNodeProcessable;
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
@SuppressWarnings("unchecked")
|
|
@@ -138,22 +145,22 @@ public class WorkFlowServiceImpl extends ServiceImpl<WorkFlowMapper, WorkFlow> i
|
|
|
*/
|
|
|
@Override
|
|
|
public WorkNodeCommit openingOrder(MainBusinessEnum mainBusinessEnum,Long businessId,String businessSubId, String remark){
|
|
|
- WorkFlow majorBusinessFlow = this.getOne(new LambdaQueryWrapper<WorkFlow>()
|
|
|
+ WorkFlow businessFlow = this.getOne(new LambdaQueryWrapper<WorkFlow>()
|
|
|
.eq(WorkFlow::getCode, mainBusinessEnum.getCode())
|
|
|
.eq(WorkFlow::getState, Boolean.FALSE)
|
|
|
.eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
|
|
|
|
- if (majorBusinessFlow == null){
|
|
|
+ if (businessFlow == null){
|
|
|
ErrorCode.throwBusinessException(ErrorCode.WORKFLOW_NOT_EXISTS,mainBusinessEnum.getMsg());
|
|
|
}
|
|
|
|
|
|
- WorkNodeDTO openingOrderNode = workNodeService.getOpeningOrderNode(majorBusinessFlow.getId());
|
|
|
+ WorkNodeDTO openingOrderNode = workNodeService.getOpeningOrderNode(businessFlow.getId());
|
|
|
if (openingOrderNode == null){
|
|
|
ErrorCode.throwBusinessException(ErrorCode.OPENING_NODE_NOT_EXISTS,mainBusinessEnum.getMsg());
|
|
|
}
|
|
|
|
|
|
WorkFlowNodeInstance instance = new WorkFlowNodeInstance();
|
|
|
- instance.setFlowId(majorBusinessFlow.getId());
|
|
|
+ instance.setFlowId(businessFlow.getId());
|
|
|
instance.setNodeId(openingOrderNode.getId());
|
|
|
instance.setBusinessId(businessId);
|
|
|
instance.setBusinessSubId(businessSubId);
|
|
@@ -167,15 +174,15 @@ public class WorkFlowServiceImpl extends ServiceImpl<WorkFlowMapper, WorkFlow> i
|
|
|
|
|
|
|
|
|
if (CollectionUtil.isNotEmpty(tasks)){
|
|
|
- if (mainBusinessEnum.equals(PERSONAL_BUSINESS)){
|
|
|
+ if (mainBusinessEnum.equals(MAJOR_BUSINESS)){
|
|
|
//业务成功下单后,将下单任务标记已完成。
|
|
|
if (workTaskRecordService.doCreateNodeTaskRecord(majorNodeHandler,tasks, instance, LoginContext.getCurrentUserId())){
|
|
|
- workTaskRecordMapper.finishOpening(instance.getId(),majorBusinessFlow.getId());
|
|
|
+ workTaskRecordMapper.finishOpening(instance.getId(),businessFlow.getId());
|
|
|
}
|
|
|
}else{
|
|
|
//业务成功下单后,将下单任务标记已完成。
|
|
|
if (workTaskRecordService.doCreateNodeTaskRecord(personalNodeHandler,tasks, instance, LoginContext.getCurrentUserId())){
|
|
|
- workTaskRecordMapper.finishOpening(instance.getId(),majorBusinessFlow.getId());
|
|
|
+ workTaskRecordMapper.finishOpening(instance.getId(),businessFlow.getId());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -191,42 +198,36 @@ public class WorkFlowServiceImpl extends ServiceImpl<WorkFlowMapper, WorkFlow> i
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public WorkNodeCommit openingDeclare(MainBusinessEnum mainBusinessEnum, Long businessId) {
|
|
|
- WorkFlow majorBusinessFlow = this.getOne(new LambdaQueryWrapper<WorkFlow>()
|
|
|
+ public Boolean openingDeclare(MainBusinessEnum mainBusinessEnum, Long businessId) {
|
|
|
+ WorkFlow businessFlow = this.getOne(new LambdaQueryWrapper<WorkFlow>()
|
|
|
.eq(WorkFlow::getCode, mainBusinessEnum.getCode())
|
|
|
.eq(WorkFlow::getState, Boolean.FALSE)
|
|
|
.eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
|
|
|
|
- if (majorBusinessFlow == null){
|
|
|
+ if (businessFlow == null){
|
|
|
ErrorCode.throwBusinessException(ErrorCode.WORKFLOW_NOT_EXISTS,mainBusinessEnum.getMsg());
|
|
|
}
|
|
|
|
|
|
- WorkNodeDTO firstNode = workNodeService.getOpeningOrderNode(majorBusinessFlow.getId());
|
|
|
+ WorkNodeDTO firstNode = workNodeService.getOpeningOrderNode(businessFlow.getId());
|
|
|
if (firstNode == null){
|
|
|
ErrorCode.throwBusinessException(ErrorCode.OPENING_NODE_NOT_EXISTS,mainBusinessEnum.getMsg());
|
|
|
}
|
|
|
|
|
|
WorkFlowNodeInstance instance = new WorkFlowNodeInstance();
|
|
|
- instance.setFlowId(majorBusinessFlow.getId());
|
|
|
+ instance.setFlowId(businessFlow.getId());
|
|
|
instance.setNodeId(firstNode.getId());
|
|
|
instance.setBusinessId(businessId);
|
|
|
instance.setBusinessType(mainBusinessEnum.getCode());
|
|
|
instance.setSequence(0);
|
|
|
- instance.setState(NodeStateEnum.FINISHED.name());
|
|
|
+ instance.setState(NodeStateEnum.PENDING.name());
|
|
|
workFlowNodeInstanceService.save(instance);
|
|
|
|
|
|
List<WorkNodeTask> tasks = firstNode.getTasks();
|
|
|
|
|
|
if (CollectionUtil.isNotEmpty(tasks)){
|
|
|
-
|
|
|
-
|
|
|
+ workTaskRecordService.doCreateNodeTaskRecord(workNodeProcessable,tasks,instance,null);
|
|
|
}
|
|
|
-
|
|
|
- //构造下单提交对象
|
|
|
- WorkNodeCommit commit = new WorkNodeCommit();
|
|
|
- commit.setInstanceNodeId(instance.getId());
|
|
|
- commit.setState(NodeLogEnum.PASS);
|
|
|
- return commit;
|
|
|
+ return Boolean.TRUE;
|
|
|
}
|
|
|
|
|
|
private Boolean handleByState(WorkNodeProcessable workNodeProcessable,WorkNodeCommit workNodeCommit){
|