diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/container/EntityManagerContainer.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/container/EntityManagerContainer.java index 22d5e7d2013c2da2970798381e6b6d1d2ffae594..fb25210e67121c282625e6e570f4229d61d40ec8 100644 --- a/o2server/x_base_core_project/src/main/java/com/x/base/core/container/EntityManagerContainer.java +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/container/EntityManagerContainer.java @@ -631,6 +631,18 @@ public class EntityManagerContainer extends EntityManagerContainerBasic { return os.isEmpty() ? null : os.get(0); } + public T firstEqualOrEqual(Class cls, String attribute, Object value, + String otherAttribute, Object otherValue) throws Exception { + EntityManager em = this.get(cls); + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(cls); + Root root = cq.from(cls); + cq.select(root) + .where(cb.or(cb.equal(root.get(attribute), value), cb.equal(root.get(otherAttribute), otherValue))); + List os = em.createQuery(cq).setMaxResults(1).getResultList(); + return os.stream().findFirst().orElse(null); + } + public Long count(Class cls) throws Exception { EntityManager em = this.get(cls); CriteriaBuilder cb = em.getCriteriaBuilder(); diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionReference.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionReference.java index 694e8507cb6ea8b4997069f07999ddfd9fc74cea..66b2c11ff9ae81f1b2a142c45814d0f6f91bc176 100644 --- a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionReference.java +++ b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionReference.java @@ -35,24 +35,23 @@ class ActionReference extends BaseAction { ActionResult result = new ActionResult<>(); Task task = emc.find(id, Task.class); if (null == task) { - throw new ExceptionEntityNotExist(id,Task.class); + throw new ExceptionEntityNotExist(id, Task.class); } if (effectivePerson.isNotPerson(effectivePerson.getDistinguishedName()) && effectivePerson.isNotManager()) { throw new ExceptionAccessDenied(effectivePerson, task); } Wo wo = new Wo(); - /** 组装 Task 信息 */ + // 组装 Task 信息 wo.setTask(WoTask.copier.copy(task)); Work work = emc.find(task.getWork(), Work.class); - /** 组装 Work */ + // 组装 Work if (null != work) { wo.setWork(WoWork.copier.copy(work)); - // wrap.put("work", workOutCopier.copy(work)); - /** 组装 Attachment */ + // 组装 Attachment wo.setAttachmentList(this.listAttachment(business, work)); } wo.setWorkCompletedList(this.listWorkCompleted(business, task)); - /** 装载WorkLog 信息 */ + // 装载WorkLog 信息 wo.setWorkLogList(this.listWorkLog(business, task)); result.setData(wo); return result; diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/V2Reset.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/V2Reset.java index de78b5b7261f4534ed72abe6d4aabb73e4fdf80e..3f8e861b78442884699c1520e941532b546eef6c 100644 --- a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/V2Reset.java +++ b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/V2Reset.java @@ -4,11 +4,6 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -import com.x.base.core.project.logger.Audit; -import org.apache.commons.collections4.ListUtils; -import org.apache.commons.lang3.BooleanUtils; -import org.apache.commons.lang3.StringUtils; - import com.google.gson.JsonElement; import com.x.base.core.container.EntityManagerContainer; import com.x.base.core.container.factory.EntityManagerContainerFactory; @@ -23,6 +18,7 @@ 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.base.core.project.jaxrs.WrapBoolean; +import com.x.base.core.project.logger.Audit; import com.x.base.core.project.logger.Logger; import com.x.base.core.project.logger.LoggerFactory; import com.x.base.core.project.tools.ListTools; @@ -35,6 +31,7 @@ import com.x.processplatform.core.entity.content.RecordProperties.NextManual; import com.x.processplatform.core.entity.content.Task; import com.x.processplatform.core.entity.content.TaskCompleted; import com.x.processplatform.core.entity.content.Work; +import com.x.processplatform.core.entity.content.WorkCompleted; import com.x.processplatform.core.entity.content.WorkLog; import com.x.processplatform.core.express.ProcessingAttributes; import com.x.processplatform.core.express.service.processing.jaxrs.task.V2ResetWi; @@ -42,6 +39,10 @@ import com.x.processplatform.core.express.service.processing.jaxrs.task.WrapProc import com.x.processplatform.core.express.service.processing.jaxrs.task.WrapUpdatePrevTaskIdentity; import com.x.processplatform.core.express.service.processing.jaxrs.taskcompleted.WrapUpdateNextTaskIdentity; +import org.apache.commons.collections4.ListUtils; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; + public class V2Reset extends BaseAction { private static Logger logger = LoggerFactory.getLogger(V2Reset.class); @@ -184,6 +185,13 @@ public class V2Reset extends BaseAction { try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { final List nextTaskIdentities = new ArrayList<>(); this.record = new Record(workLog, task); + // 校验workCompleted,如果存在,那么说明工作已经完成,标识状态为已经完成. + WorkCompleted workCompleted = emc.firstEqual(WorkCompleted.class, WorkCompleted.job_FIELDNAME, + task.getJob()); + if (null != workCompleted) { + record.setCompleted(true); + record.setWorkCompleted(workCompleted.getId()); + } record.setPerson(effectivePerson.getDistinguishedName()); record.setType(Record.TYPE_RESET); List ids = emc.idsEqual(Task.class, Task.job_FIELDNAME, work.getJob()); @@ -192,19 +200,19 @@ public class V2Reset extends BaseAction { ListTools.toList(Task.identity_FIELDNAME, Task.job_FIELDNAME, Task.work_FIELDNAME, Task.activity_FIELDNAME, Task.activityAlias_FIELDNAME, Task.activityName_FIELDNAME, Task.activityToken_FIELDNAME, Task.activityType_FIELDNAME, Task.identity_FIELDNAME)); - if (wi.getKeep()) { - /* 不排除自己,那么把自己再加进去 */ + if (BooleanUtils.isTrue(wi.getKeep())) { + // 不排除自己,那么把自己再加进去 list.add(task); } list.stream().collect(Collectors.groupingBy(Task::getActivity, Collectors.toList())).entrySet().stream() .forEach(o -> { - Task task = o.getValue().get(0); + Task next = o.getValue().get(0); NextManual nextManual = new NextManual(); - nextManual.setActivity(task.getActivity()); - nextManual.setActivityAlias(task.getActivityAlias()); - nextManual.setActivityName(task.getActivityName()); - nextManual.setActivityToken(task.getActivityToken()); - nextManual.setActivityType(task.getActivityType()); + nextManual.setActivity(next.getActivity()); + nextManual.setActivityAlias(next.getActivityAlias()); + nextManual.setActivityName(next.getActivityName()); + nextManual.setActivityToken(next.getActivityToken()); + nextManual.setActivityType(next.getActivityType()); for (Task t : o.getValue()) { nextManual.getTaskIdentityList().add(t.getIdentity()); nextTaskIdentities.add(t.getIdentity()); diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/V2AddSplit.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/V2AddSplit.java index c7e01f013d37cd1de4eb002dd9bb86d62378ad1b..767c85dd30ab08874e7997a38023631be12c5787 100644 --- a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/V2AddSplit.java +++ b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/V2AddSplit.java @@ -158,8 +158,6 @@ class V2AddSplit extends BaseAction { ProcessingAttributes processingAttributes = new ProcessingAttributes(); processingAttributes.setType(ProcessingAttributes.TYPE_ADDSPLIT); processingAttributes.setSeries(series); - // 不需要从arrived开始,已经设置好全部状态. - // processingAttributes.setForceJoinAtArrive(true); WoId processingResp = ThisApplication.context().applications() .putQuery(x_processplatform_service_processing.class, Applications.joinQueryUri("work", id, "processing"), processingAttributes, work.getJob()) diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/V2Reroute.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/V2Reroute.java index 021fbf247fc739b6a7e6098d4135da78d396f625..02b1903a5cd7e7b93cd4bef1dfcfa52bc3a2994c 100644 --- a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/V2Reroute.java +++ b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/V2Reroute.java @@ -4,11 +4,6 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -import com.x.base.core.project.logger.Audit; -import org.apache.commons.collections4.ListUtils; -import org.apache.commons.lang3.BooleanUtils; -import org.apache.commons.lang3.StringUtils; - import com.google.gson.JsonElement; import com.x.base.core.container.EntityManagerContainer; import com.x.base.core.container.factory.EntityManagerContainerFactory; @@ -23,6 +18,7 @@ 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.base.core.project.jaxrs.WrapBoolean; +import com.x.base.core.project.logger.Audit; import com.x.base.core.project.logger.Logger; import com.x.base.core.project.logger.LoggerFactory; import com.x.base.core.project.tools.ListTools; @@ -35,12 +31,17 @@ import com.x.processplatform.core.entity.content.RecordProperties.NextManual; import com.x.processplatform.core.entity.content.Task; import com.x.processplatform.core.entity.content.TaskCompleted; import com.x.processplatform.core.entity.content.Work; +import com.x.processplatform.core.entity.content.WorkCompleted; import com.x.processplatform.core.entity.content.WorkLog; import com.x.processplatform.core.entity.element.Activity; import com.x.processplatform.core.entity.element.ActivityType; import com.x.processplatform.core.express.ProcessingAttributes; import com.x.processplatform.core.express.service.processing.jaxrs.work.V2RerouteWi; +import org.apache.commons.collections4.ListUtils; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; + class V2Reroute extends BaseAction { private static Logger logger = LoggerFactory.getLogger(V2Reroute.class); @@ -127,6 +128,13 @@ class V2Reroute extends BaseAction { Business business = new Business(emc); final List nextTaskIdentities = new ArrayList<>(); record = new Record(workLog); + // 校验workCompleted,如果存在,那么说明工作已经完成,标识状态为已经完成. + WorkCompleted workCompleted = emc.firstEqual(WorkCompleted.class, WorkCompleted.job_FIELDNAME, + workLog.getJob()); + if (null != workCompleted) { + record.setCompleted(true); + record.setWorkCompleted(workCompleted.getId()); + } record.setPerson(effectivePerson.getDistinguishedName()); record.setType(Record.TYPE_REROUTE); record.setArrivedActivity(destinationActivity.getId());