加入公共录入表单(作为所有流程第一个用户任务)处理

This commit is contained in:
wangliwen 2022-05-16 16:33:36 +08:00
parent 34fd01f208
commit 396a7b5c6b
1 changed files with 67 additions and 0 deletions

View File

@ -0,0 +1,67 @@
package io.renren.common.listener;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import io.renren.common.dto.AuditingBaseDTO;
import org.activiti.engine.TaskService;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.Map;
/**
* 流程发起人录入表单
*/
@Component
public class InitiatorDataEntryListener implements TaskListener {
private static Logger logger = LoggerFactory.getLogger(InitiatorDataEntryListener.class);
@Autowired
private TaskService taskService;
@Override
public void notify(DelegateTask delegateTask) {
logger.error("----------------------流程发起人录入表单节点---------------------------");
logger.error("事件类型:" + delegateTask.getEventName());
final String eventName = delegateTask.getEventName();
switch (eventName) {
case EVENTNAME_CREATE:
create(delegateTask);
break;
}
}
private void create(DelegateTask delegateTask) {
Map<String, Object> kv = delegateTask.getVariables();
logger.error("录入表单:" + kv.toString());
if (kv.containsKey("creator")) { // 表单存在创建者
taskService.setAssignee(delegateTask.getId(), kv.get("creator").toString());
}
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Date.class, (JsonDeserializer<Date>) (json, typeOfT, context) -> new Date(json.getAsJsonPrimitive().getAsLong()));
Gson gson = builder.create();
JsonElement jsonElement = gson.toJsonTree(kv);
AuditingBaseDTO auditingBaseDTO = gson.fromJson(jsonElement, AuditingBaseDTO.class);
if (auditingBaseDTO.getBackToFirst() != null && auditingBaseDTO.getBackToFirst()) {
taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), "被驳回需修改后重新提交");
logger.error("被驳回,需修改后重新提交");
} else {
if (auditingBaseDTO.getCompleteEntry()) {
taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), "完成申请提交");
taskService.complete(delegateTask.getId(), delegateTask.getVariables());
logger.error("首次录入,自动审核通过!");
}
}
logger.error("----------完成录入表单-----------");
return;
}
}