diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/ListTools.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/ListTools.java index 0292bd4ec500bad36febb0ccf67ba9307a796c8b..47b023bf124b264ba58a87719ff92e9d116240f9 100644 --- a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/ListTools.java +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/ListTools.java @@ -598,4 +598,12 @@ public class ListTools { return list.subList(start, end); } + public static void set(List list, int index, E element) { + if (index < 0) { + list.set(list.size() + index, element); + } else { + list.set(index, element); + } + } + } \ No newline at end of file diff --git a/o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Work.java b/o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Work.java index 4e0d56b168a0b16f3574a330a751cdeecdd23e0c..6be6ac40ca7fe1419cf8b261c52b8fa1cd3fa6ee 100644 --- a/o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Work.java +++ b/o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Work.java @@ -19,8 +19,18 @@ import javax.persistence.PostLoad; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; +import javax.persistence.Transient; import javax.persistence.UniqueConstraint; +import org.apache.commons.lang3.StringUtils; +import org.apache.openjpa.persistence.Persistent; +import org.apache.openjpa.persistence.PersistentCollection; +import org.apache.openjpa.persistence.jdbc.ContainerTable; +import org.apache.openjpa.persistence.jdbc.ElementColumn; +import org.apache.openjpa.persistence.jdbc.ElementIndex; +import org.apache.openjpa.persistence.jdbc.Index; +import org.apache.openjpa.persistence.jdbc.Strategy; + import com.x.base.core.entity.JpaObject; import com.x.base.core.entity.SliceJpaObject; import com.x.base.core.entity.annotation.CheckPersist; @@ -34,15 +44,6 @@ import com.x.base.core.project.tools.StringTools; import com.x.processplatform.core.entity.PersistenceProperties; import com.x.processplatform.core.entity.element.ActivityType; -import org.apache.commons.lang3.StringUtils; -import org.apache.openjpa.persistence.Persistent; -import org.apache.openjpa.persistence.PersistentCollection; -import org.apache.openjpa.persistence.jdbc.ContainerTable; -import org.apache.openjpa.persistence.jdbc.ElementColumn; -import org.apache.openjpa.persistence.jdbc.ElementIndex; -import org.apache.openjpa.persistence.jdbc.Index; -import org.apache.openjpa.persistence.jdbc.Strategy; - @Entity @ContainerEntity(dumpSize = 1000, type = ContainerEntity.Type.content, reference = ContainerEntity.Reference.strong) @Table(name = PersistenceProperties.Content.Work.table, uniqueConstraints = { @@ -96,6 +97,7 @@ public class Work extends SliceJpaObject implements ProjectionInterface { public void postLoad() { if ((null != this.properties) && StringUtils.isNotEmpty(this.getProperties().getTitle())) { this.title = this.getProperties().getTitle(); + this.splitValueList = this.getProperties().getSplitValueList(); } } @@ -145,8 +147,20 @@ public class Work extends SliceJpaObject implements ProjectionInterface { : WORKCREATETYPE_SURFACE; } + public List getSplitValueList() { + return this.splitValueList; + } + + public void setSplitValueList(List splitValueList) { + this.splitValueList = splitValueList; + this.getProperties().setSplitValueList(splitValueList); + } + /* 修改过的Set Get 方法 */ + @Transient + private List splitValueList; + public static final String job_FIELDNAME = "job"; @FieldDescribe("工作") @Column(length = JpaObject.length_id, name = ColumnNamePrefix + job_FIELDNAME) @@ -161,14 +175,6 @@ public class Work extends SliceJpaObject implements ProjectionInterface { @CheckPersist(allowEmpty = true) private String title; - // public static final String titleLob_FIELDNAME = "titleLob"; - // @FieldDescribe("标题,长文本") - // @Lob - // @Basic(fetch = FetchType.EAGER) - // @Column(length = JpaObject.length_1M, name = ColumnNamePrefix + - // titleLob_FIELDNAME) - // private String titleLob; - public static final String startTime_FIELDNAME = "startTime"; @FieldDescribe("工作开始时间") @Temporal(TemporalType.TIMESTAMP) diff --git a/o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/WorkLogProperties.java b/o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/WorkLogProperties.java index b34f4947629b7d07d47fa7fd80fab20bfafb92ae..34b986e2c4fdbaac0df99653b6b7f5eaa99abd95 100644 --- a/o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/WorkLogProperties.java +++ b/o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/WorkLogProperties.java @@ -7,9 +7,11 @@ import com.x.base.core.entity.JsonProperties; public class WorkLogProperties extends JsonProperties { + private static final long serialVersionUID = -4149341123576111783L; + private List splitTokenList; - private List splitValueList; + private List splitValueList = new ArrayList<>(); private String splitToken; @@ -17,14 +19,14 @@ public class WorkLogProperties extends JsonProperties { public List getSplitTokenList() { if (null == splitTokenList) { - this.splitTokenList = new ArrayList(); + this.splitTokenList = new ArrayList<>(); } return splitTokenList; } public List getSplitValueList() { if (null == splitValueList) { - this.splitValueList = new ArrayList(); + this.splitValueList = new ArrayList<>(); } return splitValueList; } diff --git a/o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/WorkProperties.java b/o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/WorkProperties.java index 2de603ba08ff0ac92259706c378d44d0629141f7..c9e917cf4e5694a37b837a89f176bc14faab9e46 100644 --- a/o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/WorkProperties.java +++ b/o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/WorkProperties.java @@ -3,27 +3,33 @@ package com.x.processplatform.core.entity.content; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import com.x.base.core.entity.JsonProperties; import com.x.base.core.project.annotation.FieldDescribe; public class WorkProperties extends JsonProperties { + private static final long serialVersionUID = -62236689373222398L; + @FieldDescribe("强制待办处理人") private List manualForceTaskIdentityList = new ArrayList<>(); @FieldDescribe("授权对象") - private LinkedHashMap manualEmpowerMap = new LinkedHashMap<>(); + private Map manualEmpowerMap = new LinkedHashMap<>(); @FieldDescribe("服务回调值") - private LinkedHashMap serviceValue = new LinkedHashMap<>(); + private Map serviceValue = new LinkedHashMap<>(); @FieldDescribe("标题") private String title; + @FieldDescribe("拆分值列表") + private List splitValueList = new ArrayList<>(); + public List getManualForceTaskIdentityList() { if (this.manualForceTaskIdentityList == null) { - this.manualForceTaskIdentityList = new ArrayList(); + this.manualForceTaskIdentityList = new ArrayList<>(); } return this.manualForceTaskIdentityList; } @@ -32,25 +38,25 @@ public class WorkProperties extends JsonProperties { this.manualForceTaskIdentityList = manualForceTaskIdentityList; } - public LinkedHashMap getManualEmpowerMap() { + public Map getManualEmpowerMap() { if (this.manualEmpowerMap == null) { - this.manualEmpowerMap = new LinkedHashMap(); + this.manualEmpowerMap = new LinkedHashMap<>(); } return this.manualEmpowerMap; } - public void setManualEmpowerMap(LinkedHashMap manualEmpowerMap) { + public void setManualEmpowerMap(Map manualEmpowerMap) { this.manualEmpowerMap = manualEmpowerMap; } - public LinkedHashMap getServiceValue() { + public Map getServiceValue() { if (this.serviceValue == null) { - this.serviceValue = new LinkedHashMap(); + this.serviceValue = new LinkedHashMap<>(); } return this.serviceValue; } - public void setServiceValue(LinkedHashMap serviceValue) { + public void setServiceValue(Map serviceValue) { this.serviceValue = serviceValue; } @@ -62,4 +68,15 @@ public class WorkProperties extends JsonProperties { this.title = title; } + public List getSplitValueList() { + if (null == this.splitValueList) { + this.splitValueList = new ArrayList<>(); + } + return this.splitValueList; + } + + public void setSplitValueList(List splitValueList) { + this.splitValueList = splitValueList; + } + } diff --git a/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/merge/MergeProcessor.java b/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/merge/MergeProcessor.java index d1c2a42c509fe55d40d02a3eca8c06e46a1ffcf3..e56b85e848efb685f4891b73b511a5bb04034684 100644 --- a/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/merge/MergeProcessor.java +++ b/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/merge/MergeProcessor.java @@ -58,7 +58,6 @@ public class MergeProcessor extends AbstractMergeProcessor { aeiObjects.getDeleteWorkLogs().add(obj); }); } else { - /* 完全找不到合并的文档,唯一一份 */ Work branch = this.findWorkBranch(aeiObjects); if (null != branch) { aeiObjects.getWork().setSplitting(true); @@ -69,10 +68,12 @@ public class MergeProcessor extends AbstractMergeProcessor { aeiObjects.getWork().setSplitValue(""); results.add(aeiObjects.getWork()); } else { + // 完全找不到合并的文档,唯一一份 aeiObjects.getWork().setSplitting(false); - aeiObjects.getWork().setSplitTokenList(new ArrayList()); aeiObjects.getWork().setSplitToken(""); + aeiObjects.getWork().setSplitTokenList(new ArrayList<>()); aeiObjects.getWork().setSplitValue(""); + aeiObjects.getWork().setSplitValueList(new ArrayList<>()); results.add(aeiObjects.getWork()); } } diff --git a/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/split/SplitProcessor.java b/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/split/SplitProcessor.java index e945a41e01c683d8101071d608b3198eef30dfc4..2aa11ce531aa2d0d4c0c8f3f7c1dd80b289c24a6 100644 --- a/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/split/SplitProcessor.java +++ b/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/split/SplitProcessor.java @@ -2,6 +2,7 @@ package com.x.processplatform.service.processing.processor.split; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import org.apache.commons.lang3.StringUtils; @@ -43,35 +44,43 @@ public class SplitProcessor extends AbstractSplitProcessor { aeiObjects.getWork().setSplitting(true); aeiObjects.getWork().setSplitToken(StringTools.uniqueToken()); aeiObjects.getWork().getSplitTokenList().add(aeiObjects.getWork().getSplitToken()); - aeiObjects.getWork().setSplitValue(""); List splitValues = this.splitWithPath(aeiObjects, split); if (splitValues.isEmpty()) { throw new ExceptionSplitEmptySplitValue(split.getName(), aeiObjects.getWork().getTitle(), aeiObjects.getWork().getId(), aeiObjects.getWork().getJob()); } - /* 先将当前文档标志拆分值 */ + // 先将当前文档标志拆分值 aeiObjects.getWork().setSplitValue(splitValues.get(0)); + aeiObjects.getWork().getSplitValueList().add(splitValues.get(0)); results.add(aeiObjects.getWork()); - WorkLog mainWorkLog = aeiObjects.getWorkLogs().stream() + Optional optionalWorkLog = aeiObjects.getWorkLogs().stream() .filter(o -> StringUtils.equals(aeiObjects.getWork().getActivityToken(), o.getFromActivityToken())) - .findFirst().orElse(null); - mainWorkLog.setSplitting(true); - mainWorkLog.setSplitToken(aeiObjects.getWork().getSplitToken()); - mainWorkLog.getProperties().getSplitTokenList().add(aeiObjects.getWork().getSplitToken()); - mainWorkLog.setSplitValue(splitValues.get(0)); - aeiObjects.getUpdateWorkLogs().add(mainWorkLog); - /* 产生后续的拆分文档并标记拆分值 */ - for (int i = 1; i < splitValues.size(); i++) { - Work splitWork = new Work(aeiObjects.getWork()); - /* 将文档存放在一起 */ - splitWork.setSplitValue(splitValues.get(i)); - aeiObjects.getCreateWorks().add(splitWork); - WorkLog splitWorkLog = new WorkLog(mainWorkLog); - splitWorkLog.setSplitWork(aeiObjects.getWork().getId()); - splitWorkLog.setWork(splitWork.getId()); - splitWorkLog.setSplitValue(splitValues.get(i)); - aeiObjects.getCreateWorkLogs().add(splitWorkLog); - results.add(splitWork); + .findFirst(); + if (optionalWorkLog.isPresent()) { + WorkLog mainWorkLog = optionalWorkLog.get(); + mainWorkLog.setSplitting(true); + mainWorkLog.setSplitToken(aeiObjects.getWork().getSplitToken()); + mainWorkLog.getProperties().getSplitTokenList().add(aeiObjects.getWork().getSplitToken()); + mainWorkLog.setSplitValue(splitValues.get(0)); + mainWorkLog.getProperties().getSplitValueList().add(aeiObjects.getWork().getSplitValue()); + aeiObjects.getUpdateWorkLogs().add(mainWorkLog); + // 产生后续的拆分文档并标记拆分值 + for (int i = 1; i < splitValues.size(); i++) { + // 将文档存放在一起 + Work splitWork = new Work(aeiObjects.getWork()); + // 替work换拆分值 + splitWork.setSplitValue(splitValues.get(i)); + ListTools.set(splitWork.getSplitValueList(), -1, splitValues.get(i)); + aeiObjects.getCreateWorks().add(splitWork); + WorkLog splitWorkLog = new WorkLog(mainWorkLog); + splitWorkLog.setSplitWork(aeiObjects.getWork().getId()); + splitWorkLog.setWork(splitWork.getId()); + // 替workLog换拆分值 + splitWorkLog.setSplitValue(splitValues.get(i)); + ListTools.set(splitWorkLog.getProperties().getSplitValueList(), -1, splitValues.get(i)); + aeiObjects.getCreateWorkLogs().add(splitWorkLog); + results.add(splitWork); + } } return results; }