ActionManageDelete.java 2.1 KB
Newer Older
R
roo00 已提交
1 2
package com.x.processplatform.assemble.surface.jaxrs.task;

Z
zhourui 已提交
3 4
import org.apache.commons.lang3.BooleanUtils;

R
roo00 已提交
5 6
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
Z
zhourui 已提交
7
import com.x.base.core.project.Applications;
R
roo00 已提交
8 9 10 11 12 13 14 15 16 17
import com.x.base.core.project.x_processplatform_service_processing;
import com.x.base.core.project.exception.ExceptionAccessDenied;
import com.x.base.core.project.exception.ExceptionEntityNotExist;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.WoId;
import com.x.processplatform.assemble.surface.Business;
import com.x.processplatform.assemble.surface.ThisApplication;
import com.x.processplatform.core.entity.content.Task;
import com.x.processplatform.core.entity.element.Application;
18
import com.x.processplatform.core.entity.element.Process;
R
roo00 已提交
19

Z
zhourui 已提交
20 21
import io.swagger.v3.oas.annotations.media.Schema;

R
roo00 已提交
22 23 24
class ActionManageDelete extends BaseAction {

	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
Z
zhourui 已提交
25 26
		Task task = null;
		ActionResult<Wo> result = new ActionResult<>();
R
roo00 已提交
27 28
		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
			Business business = new Business(emc);
Z
zhourui 已提交
29
			task = emc.find(id, Task.class);
R
roo00 已提交
30
			if (null == task) {
Z
zhourui 已提交
31
				throw new ExceptionEntityNotExist(id, Task.class);
R
roo00 已提交
32 33
			}
			Application application = business.application().pick(task.getApplication());
34 35
			Process process = business.process().pick(task.getProcess());
			// 需要对这个应用的管理权限
Z
zhourui 已提交
36
			if (BooleanUtils.isFalse(business.canManageApplicationOrProcess(effectivePerson, application, process))) {
37
				throw new ExceptionAccessDenied(effectivePerson);
R
roo00 已提交
38 39
			}
		}
Z
zhourui 已提交
40 41 42 43 44 45
		ThisApplication.context().applications().deleteQuery(x_processplatform_service_processing.class,
				Applications.joinQueryUri("task", task.getId()), task.getJob());
		Wo wo = new Wo();
		wo.setId(task.getId());
		result.setData(wo);
		return result;
R
roo00 已提交
46 47
	}

Z
zhourui 已提交
48
	@Schema(name = "com.x.processplatform.assemble.surface.jaxrs.task.ActionManageDelete.Wo")
R
roo00 已提交
49 50 51
	public static class Wo extends WoId {
	}
}