..
This commit is contained in:
@@ -233,4 +233,17 @@ public interface ProcessInstanceService extends BaseService<ProcessInstance> {
|
||||
* @return
|
||||
*/
|
||||
List<LabelValueVO> getAssigneeTextData(Long processInstanceId);
|
||||
|
||||
/**
|
||||
* 删除流程实例
|
||||
* @param processInstanceId
|
||||
*/
|
||||
void deleteProcessInstanceById(Long processInstanceId);
|
||||
|
||||
/**
|
||||
* 删除流程实例
|
||||
* @param businessKey
|
||||
*/
|
||||
void deleteProcessInstanceByBusinessKey(String businessKey);
|
||||
|
||||
}
|
||||
|
||||
@@ -3,17 +3,14 @@ package com.budwk.app.flow.service.impl;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.extra.pinyin.PinyinUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.budwk.app.base.enums.UpAndDownParam;
|
||||
import com.budwk.app.base.exception.BaseException;
|
||||
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||
import com.budwk.app.flow.engine.model.ProcessModel;
|
||||
import com.budwk.app.flow.engine.parser.ModelParser;
|
||||
import com.budwk.app.flow.entity.ProcessDefine;
|
||||
import com.budwk.app.flow.entity.ProcessInstance;
|
||||
import com.budwk.app.flow.service.ProcessDefineService;
|
||||
import com.budwk.app.flow.vo.ProcessDefineVO;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
@@ -23,9 +20,7 @@ import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@IocBean(args = {"refer:dao"})
|
||||
public class ProcessDefineServiceImpl extends BaseServiceImpl<ProcessDefine> implements ProcessDefineService {
|
||||
@@ -100,8 +95,6 @@ public class ProcessDefineServiceImpl extends BaseServiceImpl<ProcessDefine> imp
|
||||
// 1. json定义文件转成流程模型
|
||||
ProcessModel processModel = ModelParser.parse(defineJsonStr);
|
||||
// 2. 根据名称查询,取最新版本的流程定义记录
|
||||
List<ProcessDefine> processDefineList = query(Cnd.where(ProcessDefine::getName, "=", processModel.getName()).desc(ProcessDefine::getId));
|
||||
|
||||
ProcessDefine latestDefine = dao().fetch(ProcessDefine.class, Cnd.where(ProcessDefine::getName, "=", processModel.getName()).desc(ProcessDefine::getId));
|
||||
|
||||
ProcessDefine define = null;
|
||||
@@ -122,9 +115,8 @@ public class ProcessDefineServiceImpl extends BaseServiceImpl<ProcessDefine> imp
|
||||
define.setH5InstanceUrl(processModel.getH5InstanceUrl());
|
||||
define.setInstanceViewUrl(processModel.getInstanceViewUrl());
|
||||
define.setH5InstanceViewUrl(processModel.getH5InstanceViewUrl());
|
||||
|
||||
// define.setInstanceViewUrl(latestDefine.getInstanceViewUrl());
|
||||
// define.setH5InstanceViewUrl(latestDefine.getH5InstanceViewUrl());
|
||||
define.setIcon(processModel.getIcon());
|
||||
define.setPinyinName(PinyinUtil.getFirstLetter(define.getDisplayName().charAt(0)));
|
||||
|
||||
define.setState(1);
|
||||
define.setContent(JSONUtil.parseObj(defineJsonStr));
|
||||
|
||||
@@ -9,11 +9,9 @@ import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.extra.expression.ExpressionUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.budwk.app.base.enums.YesNoEnum;
|
||||
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||
import com.budwk.app.base.vo.LabelValueVO;
|
||||
import com.budwk.app.flow.constant.FlowConst;
|
||||
import com.budwk.app.flow.engine.Context;
|
||||
import com.budwk.app.flow.engine.DecisionHandler;
|
||||
import com.budwk.app.flow.engine.FlowEngine;
|
||||
import com.budwk.app.flow.engine.core.Execution;
|
||||
@@ -93,7 +91,13 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl<ProcessInstance>
|
||||
|
||||
ProcessInstanceVO instanceVO = new ProcessInstanceVO();
|
||||
BeanUtil.fillBeanWithMapIgnoreCase(nutMap, instanceVO, true);
|
||||
instanceVO.setJsonObject(processDefineService.getDefineJsonObject(instanceVO.getProcessDefineId()));
|
||||
|
||||
ProcessDefine define = processDefineService.fetch(instanceVO.getProcessDefineId());
|
||||
|
||||
// instanceVO.setJsonObject(processDefineService.getDefineJsonObject(instanceVO.getProcessDefineId()));
|
||||
|
||||
instanceVO.setJsonObject(JSONUtil.parseObj(define));
|
||||
|
||||
return instanceVO;
|
||||
}
|
||||
|
||||
@@ -319,24 +323,38 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl<ProcessInstance>
|
||||
|
||||
@Override
|
||||
public void withdraw(Long processInstanceId, String operator) {
|
||||
Date now = new Date();
|
||||
// Date now = new Date();
|
||||
// 1. 将该流程实例状态修改为撤回
|
||||
ProcessInstance processInstance = new ProcessInstance();
|
||||
processInstance.setId(processInstanceId);
|
||||
processInstance.setState(ProcessInstanceStateEnum.WITHDRAW.getCode());
|
||||
processInstance.setUpdatedAt(System.currentTimeMillis());
|
||||
processInstance.setUpdatedBy(operator);
|
||||
int update = dao().update(ProcessInstance.class, Chain.from(processInstance), Cnd.where(ProcessInstance::getId, "=", processInstanceId)
|
||||
.and(ProcessInstance::getState, "=", ProcessInstanceStateEnum.DOING.getCode()));
|
||||
int updated = dao().updateIgnoreNull(processInstance);
|
||||
|
||||
if (update >= 1) {
|
||||
// 2. 将该流程实例产生的任务状态修改为撤回
|
||||
ProcessTask processTask = new ProcessTask();
|
||||
processTask.setTaskState(ProcessTaskStateEnum.WITHDRAW.getCode());
|
||||
processTask.setUpdatedAt(System.currentTimeMillis());
|
||||
processTask.setUpdatedBy(operator);
|
||||
dao().update(ProcessTask.class, Chain.from(processTask), Cnd.where(ProcessTask::getProcessInstanceId, "=", processInstanceId)
|
||||
.and(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.DOING.getCode()));
|
||||
// 2. 将该流程实例产生的任务状态修改为撤回
|
||||
if (updated > 0) {
|
||||
List<ProcessTask> taskList = dao().query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", processInstanceId).and(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.DOING.getCode()));
|
||||
for (ProcessTask processTask : taskList) {
|
||||
processTask.setTaskState(ProcessTaskStateEnum.WITHDRAW.getCode());
|
||||
processTask.setUpdatedAt(System.currentTimeMillis());
|
||||
processTask.setUpdatedBy(operator);
|
||||
}
|
||||
dao().update(taskList, "taskState|updateAt|updateBy");
|
||||
}
|
||||
|
||||
// int update = dao().update(ProcessInstance.class, Chain.from(processInstance), Cnd.where(ProcessInstance::getId, "=", processInstanceId)
|
||||
// .and(ProcessInstance::getState, "=", ProcessInstanceStateEnum.DOING.getCode()));
|
||||
//
|
||||
// if (update >= 1) {
|
||||
// // 2. 将该流程实例产生的任务状态修改为撤回
|
||||
// ProcessTask processTask = new ProcessTask();
|
||||
// processTask.setTaskState(ProcessTaskStateEnum.WITHDRAW.getCode());
|
||||
// processTask.setUpdatedAt(System.currentTimeMillis());
|
||||
// processTask.setUpdatedBy(operator);
|
||||
// dao().update(ProcessTask.class, Chain.from(processTask), Cnd.where(ProcessTask::getProcessInstanceId, "=", processInstanceId)
|
||||
// .and(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.DOING.getCode()));
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -531,4 +549,22 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl<ProcessInstance>
|
||||
.collect(Collectors.toList());
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public void deleteProcessInstanceById(Long processInstanceId) {
|
||||
List<ProcessTask> taskList = dao().query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", processInstanceId));
|
||||
List<Long> taskIds = taskList.stream().map(ProcessTask::getId).toList();
|
||||
dao().clear(ProcessTask.class, Cnd.where(ProcessTask::getId, "in", taskIds));
|
||||
dao().clear(ProcessInstance.class, Cnd.where(ProcessInstance::getId, "=", processInstanceId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteProcessInstanceByBusinessKey(String businessKey) {
|
||||
ProcessInstance processInstance = fetch(Cnd.where(ProcessInstance::getBusinessNo, "=", businessKey));
|
||||
if (processInstance != null) {
|
||||
deleteProcessInstanceById(processInstance.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,7 +108,7 @@ public class ProcessTaskServiceImpl extends BaseServiceImpl<ProcessTask> impleme
|
||||
|
||||
@Override
|
||||
public List<ProcessTask> getDoneTaskList(Long processInstanceId, String[] taskNames) {
|
||||
Cnd cnd = Cnd.where(ProcessTask::getProcessInstanceId, "=", processInstanceId).and(ProcessTask::getTaskState, "!=", ProcessTaskStateEnum.DOING.getCode());
|
||||
Cnd cnd = Cnd.where(ProcessTask::getProcessInstanceId, "=", processInstanceId).and(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.FINISHED.getCode());
|
||||
cnd.andEX(ProcessTask::getTaskName, "", taskNames);
|
||||
List<ProcessTask> processTaskList = query(cnd);
|
||||
return processTaskList;
|
||||
|
||||
Reference in New Issue
Block a user