ActionDelete.java 2.2 KB
Newer Older
R
roo00 已提交
1
package com.x.processplatform.service.processing.jaxrs.task;
caixiangyi's avatar
caixiangyi 已提交
2

R
update  
roo00 已提交
3
import java.util.concurrent.Callable;
O
o2null 已提交
4
import java.util.concurrent.TimeUnit;
R
update  
roo00 已提交
5

caixiangyi's avatar
caixiangyi 已提交
6 7 8
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.entity.annotation.CheckRemoveType;
R
roo00 已提交
9
import com.x.base.core.project.exception.ExceptionEntityNotExist;
R
roo00 已提交
10
import com.x.base.core.project.executor.ProcessPlatformExecutorFactory;
caixiangyi's avatar
caixiangyi 已提交
11 12 13
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.WoId;
R
roo00 已提交
14
import com.x.base.core.project.tools.ListTools;
R
roo00 已提交
15
import com.x.processplatform.core.entity.content.Task;
O
o2null 已提交
16
import com.x.processplatform.core.entity.content.Work;
R
roo00 已提交
17
import com.x.processplatform.service.processing.MessageFactory;
caixiangyi's avatar
caixiangyi 已提交
18 19 20

class ActionDelete extends BaseAction {

R
roo00 已提交
21
	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
R
roo00 已提交
22 23

		String executorSeed = null;
caixiangyi's avatar
caixiangyi 已提交
24
		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
R
roo00 已提交
25 26 27

			Task task = emc.fetch(id, Task.class, ListTools.toList(Task.job_FIELDNAME));

R
roo00 已提交
28
			if (null == task) {
R
roo00 已提交
29
				throw new ExceptionEntityNotExist(id, Task.class);
caixiangyi's avatar
caixiangyi 已提交
30
			}
R
update  
roo00 已提交
31

R
roo00 已提交
32 33
			executorSeed = task.getJob();
		}
O
o2null 已提交
34 35 36 37 38 39 40
		Callable<ActionResult<Wo>> callable = () -> {
			ActionResult<Wo> result = new ActionResult<>();
			Wo wo = new Wo();
			try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
				Task task = emc.find(id, Task.class);
				if (null == task) {
					throw new ExceptionEntityNotExist(id, Task.class);
R
update  
roo00 已提交
41
				}
O
o2null 已提交
42 43 44 45 46 47 48 49 50 51 52 53 54
				Work work = emc.find(task.getWork(), Work.class);
				if (null == work) {
					throw new ExceptionEntityNotExist(task.getWork(), Work.class);
				}
				emc.beginTransaction(Task.class);
				emc.beginTransaction(Work.class);
				emc.remove(task, CheckRemoveType.all);
				work.getManualTaskIdentityList().remove(task.getIdentity());
				emc.commit();
				MessageFactory.task_delete(task);
				wo.setId(task.getId());
				result.setData(wo);
				return result;
R
roo00 已提交
55 56
			}
		};
R
update  
roo00 已提交
57

O
o2null 已提交
58
		return ProcessPlatformExecutorFactory.get(executorSeed).submit(callable).get(300, TimeUnit.SECONDS);
R
update  
roo00 已提交
59

caixiangyi's avatar
caixiangyi 已提交
60 61 62 63
	}

	public static class Wo extends WoId {
	}
R
roo00 已提交
64

caixiangyi's avatar
caixiangyi 已提交
65
}