提交 be5c173e 编写于 作者: Z zhourui

splitValueList

上级 951e6104
...@@ -598,4 +598,12 @@ public class ListTools { ...@@ -598,4 +598,12 @@ public class ListTools {
return list.subList(start, end); return list.subList(start, end);
} }
public static <E> void set(List<E> 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
...@@ -19,8 +19,18 @@ import javax.persistence.PostLoad; ...@@ -19,8 +19,18 @@ import javax.persistence.PostLoad;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Temporal; import javax.persistence.Temporal;
import javax.persistence.TemporalType; import javax.persistence.TemporalType;
import javax.persistence.Transient;
import javax.persistence.UniqueConstraint; 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.JpaObject;
import com.x.base.core.entity.SliceJpaObject; import com.x.base.core.entity.SliceJpaObject;
import com.x.base.core.entity.annotation.CheckPersist; import com.x.base.core.entity.annotation.CheckPersist;
...@@ -34,15 +44,6 @@ import com.x.base.core.project.tools.StringTools; ...@@ -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.PersistenceProperties;
import com.x.processplatform.core.entity.element.ActivityType; 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 @Entity
@ContainerEntity(dumpSize = 1000, type = ContainerEntity.Type.content, reference = ContainerEntity.Reference.strong) @ContainerEntity(dumpSize = 1000, type = ContainerEntity.Type.content, reference = ContainerEntity.Reference.strong)
@Table(name = PersistenceProperties.Content.Work.table, uniqueConstraints = { @Table(name = PersistenceProperties.Content.Work.table, uniqueConstraints = {
...@@ -96,6 +97,7 @@ public class Work extends SliceJpaObject implements ProjectionInterface { ...@@ -96,6 +97,7 @@ public class Work extends SliceJpaObject implements ProjectionInterface {
public void postLoad() { public void postLoad() {
if ((null != this.properties) && StringUtils.isNotEmpty(this.getProperties().getTitle())) { if ((null != this.properties) && StringUtils.isNotEmpty(this.getProperties().getTitle())) {
this.title = this.getProperties().getTitle(); this.title = this.getProperties().getTitle();
this.splitValueList = this.getProperties().getSplitValueList();
} }
} }
...@@ -145,8 +147,20 @@ public class Work extends SliceJpaObject implements ProjectionInterface { ...@@ -145,8 +147,20 @@ public class Work extends SliceJpaObject implements ProjectionInterface {
: WORKCREATETYPE_SURFACE; : WORKCREATETYPE_SURFACE;
} }
public List<String> getSplitValueList() {
return this.splitValueList;
}
public void setSplitValueList(List<String> splitValueList) {
this.splitValueList = splitValueList;
this.getProperties().setSplitValueList(splitValueList);
}
/* 修改过的Set Get 方法 */ /* 修改过的Set Get 方法 */
@Transient
private List<String> splitValueList;
public static final String job_FIELDNAME = "job"; public static final String job_FIELDNAME = "job";
@FieldDescribe("工作") @FieldDescribe("工作")
@Column(length = JpaObject.length_id, name = ColumnNamePrefix + job_FIELDNAME) @Column(length = JpaObject.length_id, name = ColumnNamePrefix + job_FIELDNAME)
...@@ -161,14 +175,6 @@ public class Work extends SliceJpaObject implements ProjectionInterface { ...@@ -161,14 +175,6 @@ public class Work extends SliceJpaObject implements ProjectionInterface {
@CheckPersist(allowEmpty = true) @CheckPersist(allowEmpty = true)
private String title; 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"; public static final String startTime_FIELDNAME = "startTime";
@FieldDescribe("工作开始时间") @FieldDescribe("工作开始时间")
@Temporal(TemporalType.TIMESTAMP) @Temporal(TemporalType.TIMESTAMP)
......
...@@ -7,9 +7,11 @@ import com.x.base.core.entity.JsonProperties; ...@@ -7,9 +7,11 @@ import com.x.base.core.entity.JsonProperties;
public class WorkLogProperties extends JsonProperties { public class WorkLogProperties extends JsonProperties {
private static final long serialVersionUID = -4149341123576111783L;
private List<String> splitTokenList; private List<String> splitTokenList;
private List<String> splitValueList; private List<String> splitValueList = new ArrayList<>();
private String splitToken; private String splitToken;
...@@ -17,14 +19,14 @@ public class WorkLogProperties extends JsonProperties { ...@@ -17,14 +19,14 @@ public class WorkLogProperties extends JsonProperties {
public List<String> getSplitTokenList() { public List<String> getSplitTokenList() {
if (null == splitTokenList) { if (null == splitTokenList) {
this.splitTokenList = new ArrayList<String>(); this.splitTokenList = new ArrayList<>();
} }
return splitTokenList; return splitTokenList;
} }
public List<String> getSplitValueList() { public List<String> getSplitValueList() {
if (null == splitValueList) { if (null == splitValueList) {
this.splitValueList = new ArrayList<String>(); this.splitValueList = new ArrayList<>();
} }
return splitValueList; return splitValueList;
} }
......
...@@ -3,27 +3,33 @@ package com.x.processplatform.core.entity.content; ...@@ -3,27 +3,33 @@ package com.x.processplatform.core.entity.content;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import com.x.base.core.entity.JsonProperties; import com.x.base.core.entity.JsonProperties;
import com.x.base.core.project.annotation.FieldDescribe; import com.x.base.core.project.annotation.FieldDescribe;
public class WorkProperties extends JsonProperties { public class WorkProperties extends JsonProperties {
private static final long serialVersionUID = -62236689373222398L;
@FieldDescribe("强制待办处理人") @FieldDescribe("强制待办处理人")
private List<String> manualForceTaskIdentityList = new ArrayList<>(); private List<String> manualForceTaskIdentityList = new ArrayList<>();
@FieldDescribe("授权对象") @FieldDescribe("授权对象")
private LinkedHashMap<String, String> manualEmpowerMap = new LinkedHashMap<>(); private Map<String, String> manualEmpowerMap = new LinkedHashMap<>();
@FieldDescribe("服务回调值") @FieldDescribe("服务回调值")
private LinkedHashMap<String, Object> serviceValue = new LinkedHashMap<>(); private Map<String, Object> serviceValue = new LinkedHashMap<>();
@FieldDescribe("标题") @FieldDescribe("标题")
private String title; private String title;
@FieldDescribe("拆分值列表")
private List<String> splitValueList = new ArrayList<>();
public List<String> getManualForceTaskIdentityList() { public List<String> getManualForceTaskIdentityList() {
if (this.manualForceTaskIdentityList == null) { if (this.manualForceTaskIdentityList == null) {
this.manualForceTaskIdentityList = new ArrayList<String>(); this.manualForceTaskIdentityList = new ArrayList<>();
} }
return this.manualForceTaskIdentityList; return this.manualForceTaskIdentityList;
} }
...@@ -32,25 +38,25 @@ public class WorkProperties extends JsonProperties { ...@@ -32,25 +38,25 @@ public class WorkProperties extends JsonProperties {
this.manualForceTaskIdentityList = manualForceTaskIdentityList; this.manualForceTaskIdentityList = manualForceTaskIdentityList;
} }
public LinkedHashMap<String, String> getManualEmpowerMap() { public Map<String, String> getManualEmpowerMap() {
if (this.manualEmpowerMap == null) { if (this.manualEmpowerMap == null) {
this.manualEmpowerMap = new LinkedHashMap<String, String>(); this.manualEmpowerMap = new LinkedHashMap<>();
} }
return this.manualEmpowerMap; return this.manualEmpowerMap;
} }
public void setManualEmpowerMap(LinkedHashMap<String, String> manualEmpowerMap) { public void setManualEmpowerMap(Map<String, String> manualEmpowerMap) {
this.manualEmpowerMap = manualEmpowerMap; this.manualEmpowerMap = manualEmpowerMap;
} }
public LinkedHashMap<String, Object> getServiceValue() { public Map<String, Object> getServiceValue() {
if (this.serviceValue == null) { if (this.serviceValue == null) {
this.serviceValue = new LinkedHashMap<String, Object>(); this.serviceValue = new LinkedHashMap<>();
} }
return this.serviceValue; return this.serviceValue;
} }
public void setServiceValue(LinkedHashMap<String, Object> serviceValue) { public void setServiceValue(Map<String, Object> serviceValue) {
this.serviceValue = serviceValue; this.serviceValue = serviceValue;
} }
...@@ -62,4 +68,15 @@ public class WorkProperties extends JsonProperties { ...@@ -62,4 +68,15 @@ public class WorkProperties extends JsonProperties {
this.title = title; this.title = title;
} }
public List<String> getSplitValueList() {
if (null == this.splitValueList) {
this.splitValueList = new ArrayList<>();
}
return this.splitValueList;
}
public void setSplitValueList(List<String> splitValueList) {
this.splitValueList = splitValueList;
}
} }
...@@ -58,7 +58,6 @@ public class MergeProcessor extends AbstractMergeProcessor { ...@@ -58,7 +58,6 @@ public class MergeProcessor extends AbstractMergeProcessor {
aeiObjects.getDeleteWorkLogs().add(obj); aeiObjects.getDeleteWorkLogs().add(obj);
}); });
} else { } else {
/* 完全找不到合并的文档,唯一一份 */
Work branch = this.findWorkBranch(aeiObjects); Work branch = this.findWorkBranch(aeiObjects);
if (null != branch) { if (null != branch) {
aeiObjects.getWork().setSplitting(true); aeiObjects.getWork().setSplitting(true);
...@@ -69,10 +68,12 @@ public class MergeProcessor extends AbstractMergeProcessor { ...@@ -69,10 +68,12 @@ public class MergeProcessor extends AbstractMergeProcessor {
aeiObjects.getWork().setSplitValue(""); aeiObjects.getWork().setSplitValue("");
results.add(aeiObjects.getWork()); results.add(aeiObjects.getWork());
} else { } else {
// 完全找不到合并的文档,唯一一份
aeiObjects.getWork().setSplitting(false); aeiObjects.getWork().setSplitting(false);
aeiObjects.getWork().setSplitTokenList(new ArrayList<String>());
aeiObjects.getWork().setSplitToken(""); aeiObjects.getWork().setSplitToken("");
aeiObjects.getWork().setSplitTokenList(new ArrayList<>());
aeiObjects.getWork().setSplitValue(""); aeiObjects.getWork().setSplitValue("");
aeiObjects.getWork().setSplitValueList(new ArrayList<>());
results.add(aeiObjects.getWork()); results.add(aeiObjects.getWork());
} }
} }
......
...@@ -2,6 +2,7 @@ package com.x.processplatform.service.processing.processor.split; ...@@ -2,6 +2,7 @@ package com.x.processplatform.service.processing.processor.split;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -43,35 +44,43 @@ public class SplitProcessor extends AbstractSplitProcessor { ...@@ -43,35 +44,43 @@ public class SplitProcessor extends AbstractSplitProcessor {
aeiObjects.getWork().setSplitting(true); aeiObjects.getWork().setSplitting(true);
aeiObjects.getWork().setSplitToken(StringTools.uniqueToken()); aeiObjects.getWork().setSplitToken(StringTools.uniqueToken());
aeiObjects.getWork().getSplitTokenList().add(aeiObjects.getWork().getSplitToken()); aeiObjects.getWork().getSplitTokenList().add(aeiObjects.getWork().getSplitToken());
aeiObjects.getWork().setSplitValue("");
List<String> splitValues = this.splitWithPath(aeiObjects, split); List<String> splitValues = this.splitWithPath(aeiObjects, split);
if (splitValues.isEmpty()) { if (splitValues.isEmpty()) {
throw new ExceptionSplitEmptySplitValue(split.getName(), aeiObjects.getWork().getTitle(), throw new ExceptionSplitEmptySplitValue(split.getName(), aeiObjects.getWork().getTitle(),
aeiObjects.getWork().getId(), aeiObjects.getWork().getJob()); aeiObjects.getWork().getId(), aeiObjects.getWork().getJob());
} }
/* 先将当前文档标志拆分值 */ // 先将当前文档标志拆分值
aeiObjects.getWork().setSplitValue(splitValues.get(0)); aeiObjects.getWork().setSplitValue(splitValues.get(0));
aeiObjects.getWork().getSplitValueList().add(splitValues.get(0));
results.add(aeiObjects.getWork()); results.add(aeiObjects.getWork());
WorkLog mainWorkLog = aeiObjects.getWorkLogs().stream() Optional<WorkLog> optionalWorkLog = aeiObjects.getWorkLogs().stream()
.filter(o -> StringUtils.equals(aeiObjects.getWork().getActivityToken(), o.getFromActivityToken())) .filter(o -> StringUtils.equals(aeiObjects.getWork().getActivityToken(), o.getFromActivityToken()))
.findFirst().orElse(null); .findFirst();
mainWorkLog.setSplitting(true); if (optionalWorkLog.isPresent()) {
mainWorkLog.setSplitToken(aeiObjects.getWork().getSplitToken()); WorkLog mainWorkLog = optionalWorkLog.get();
mainWorkLog.getProperties().getSplitTokenList().add(aeiObjects.getWork().getSplitToken()); mainWorkLog.setSplitting(true);
mainWorkLog.setSplitValue(splitValues.get(0)); mainWorkLog.setSplitToken(aeiObjects.getWork().getSplitToken());
aeiObjects.getUpdateWorkLogs().add(mainWorkLog); mainWorkLog.getProperties().getSplitTokenList().add(aeiObjects.getWork().getSplitToken());
/* 产生后续的拆分文档并标记拆分值 */ mainWorkLog.setSplitValue(splitValues.get(0));
for (int i = 1; i < splitValues.size(); i++) { mainWorkLog.getProperties().getSplitValueList().add(aeiObjects.getWork().getSplitValue());
Work splitWork = new Work(aeiObjects.getWork()); aeiObjects.getUpdateWorkLogs().add(mainWorkLog);
/* 将文档存放在一起 */ // 产生后续的拆分文档并标记拆分值
splitWork.setSplitValue(splitValues.get(i)); for (int i = 1; i < splitValues.size(); i++) {
aeiObjects.getCreateWorks().add(splitWork); // 将文档存放在一起
WorkLog splitWorkLog = new WorkLog(mainWorkLog); Work splitWork = new Work(aeiObjects.getWork());
splitWorkLog.setSplitWork(aeiObjects.getWork().getId()); // 替work换拆分值
splitWorkLog.setWork(splitWork.getId()); splitWork.setSplitValue(splitValues.get(i));
splitWorkLog.setSplitValue(splitValues.get(i)); ListTools.set(splitWork.getSplitValueList(), -1, splitValues.get(i));
aeiObjects.getCreateWorkLogs().add(splitWorkLog); aeiObjects.getCreateWorks().add(splitWork);
results.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; return results;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册