From 35dd8e7844eedd84baee6dd7a71287b5e1fc0986 Mon Sep 17 00:00:00 2001 From: roo00 Date: Thu, 16 May 2019 01:18:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=8A=A8=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E8=8D=89=E7=A8=BF=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../surface/jaxrs/work/ActionCloseCheck.java | 138 ++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionCloseCheck.java diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionCloseCheck.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionCloseCheck.java new file mode 100644 index 0000000000..c4cd8f28c3 --- /dev/null +++ b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionCloseCheck.java @@ -0,0 +1,138 @@ +package com.x.processplatform.assemble.surface.jaxrs.work; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +import org.apache.commons.lang3.BooleanUtils; + +import com.x.base.core.container.EntityManagerContainer; +import com.x.base.core.container.factory.EntityManagerContainerFactory; +import com.x.base.core.project.Applications; +import com.x.base.core.project.x_processplatform_service_processing; +import com.x.base.core.project.annotation.FieldDescribe; +import com.x.base.core.project.gson.GsonPropertyObject; +import com.x.base.core.project.http.ActionResult; +import com.x.base.core.project.http.EffectivePerson; +import com.x.base.core.project.jaxrs.WrapBoolean; +import com.x.base.core.project.tools.ListTools; +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.content.Work; +import com.x.processplatform.core.entity.element.ActivityType; +import com.x.processplatform.core.entity.element.Manual; +import com.x.processplatform.core.entity.element.ManualMode; +import com.x.processplatform.core.entity.element.Process; + +class ActionCloseCheck extends BaseAction { + + ActionResult execute(EffectivePerson effectivePerson, String id) throws Exception { + try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { + ActionResult result = new ActionResult<>(); + Business business = new Business(emc); + Work work = emc.find(id, Work.class); + Wo wo = new Wo(); + wo.setDraft(this.draft(business, effectivePerson, work)); + if (BooleanUtils.isFalse(wo.getDraft().getValue())) { + wo.setGrabRelease(this.grabRelease(business, effectivePerson, work)); + } + result.setData(wo); + return result; + } + } + + private WoDraft draft(Business business, EffectivePerson effectivePerson, Work work) throws Exception { + WoDraft wo = new WoDraft(); + wo.setValue(false); + if ((null != work) && (BooleanUtils.isFalse(work.getDataChanged())) + && (Objects.equals(ActivityType.manual, work.getActivityType()))) { + Process process = business.process().pick(work.getProcess()); + if ((null != process) && (BooleanUtils.isTrue(process.getCheckDraft()))) { + if (effectivePerson.isPerson(work.getCreatorPerson())) { + ThisApplication.context().applications().deleteQuery(x_processplatform_service_processing.class, + Applications.joinQueryUri("work", work.getId())).getData(Wo.class); + wo.setValue(true); + } + } + } + return wo; + } + + private WoGrabRelease grabRelease(Business business, EffectivePerson effectivePerson, Work work) throws Exception { + WoGrabRelease wo = new WoGrabRelease(); + if ((null != work) && (Objects.equals(work.getActivityType(), ActivityType.manual))) { + Manual manual = business.manual().pick(work.getActivity()); + if ((null != manual) && Objects.equals(ManualMode.grab, manual.getManualMode())) { + if (ListTools.isEmpty(work.getManualTaskIdentityList()) + || (work.getManualTaskIdentityList().size() == 1)) { + business.entityManagerContainer().beginTransaction(Work.class); + work.getManualTaskIdentityList().clear(); + business.entityManagerContainer().commit(); + ThisApplication.context().applications().putQuery(effectivePerson.getDebugger(), + x_processplatform_service_processing.class, + Applications.joinQueryUri("work", work.getId(), "processing"), null); + List tasks = business.entityManagerContainer().fetchEqual(Task.class, + ListTools.toList(Task.identity_FIELDNAME), Task.work_FIELDNAME, work.getId()); + wo.setRelease(true); + wo.setTaskList(tasks); + } + } + } + return wo; + } + + public static class Wo extends GsonPropertyObject { + + @FieldDescribe("检查删除草稿结果") + private WoDraft draft; + @FieldDescribe("检查抢办释放结果") + private WoGrabRelease grabRelease; + + public WoDraft getDraft() { + return draft; + } + + public void setDraft(WoDraft draft) { + this.draft = draft; + } + + public WoGrabRelease getGrabRelease() { + return grabRelease; + } + + public void setGrabRelease(WoGrabRelease grabRelease) { + this.grabRelease = grabRelease; + } + + } + + public static class WoDraft extends WrapBoolean { + + } + + public static class WoGrabRelease extends GsonPropertyObject { + + private List taskList = new ArrayList<>(); + + private Boolean release = false; + + public List getTaskList() { + return taskList; + } + + public void setTaskList(List taskList) { + this.taskList = taskList; + } + + public Boolean getRelease() { + return release; + } + + public void setRelease(Boolean release) { + this.release = release; + } + + } + +} \ No newline at end of file -- GitLab