소스 검색

Merge branch 'feature/prevTask' into 'develop'

增加上一处理人意见

See merge request o2oa/o2oa!972
o2null 5 년 전
부모
커밋
dc8435415c

+ 49 - 12
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionProcessing.java

@@ -1,6 +1,7 @@
 package com.x.processplatform.assemble.surface.jaxrs.task;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -9,7 +10,6 @@ import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
 import com.x.base.core.entity.JpaObject;
 import com.x.base.core.project.Applications;
-import com.x.base.core.project.logger.Audit;
 import com.x.base.core.project.x_processplatform_service_processing;
 import com.x.base.core.project.annotation.FieldDescribe;
 import com.x.base.core.project.bean.WrapCopier;
@@ -23,6 +23,7 @@ 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.jaxrs.WrapStringList;
+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;
@@ -34,6 +35,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.entity.element.Manual;
 import com.x.processplatform.core.entity.element.Route;
@@ -41,6 +43,7 @@ import com.x.processplatform.core.express.ProcessingAttributes;
 import com.x.processplatform.core.express.service.processing.jaxrs.task.WrapAppend;
 import com.x.processplatform.core.express.service.processing.jaxrs.task.WrapProcessing;
 import com.x.processplatform.core.express.service.processing.jaxrs.task.WrapUpdatePrevTaskIdentity;
+import com.x.processplatform.core.express.service.processing.jaxrs.task.WrapUpdatePrevTaskIdentity.PrevTask;
 import com.x.processplatform.core.express.service.processing.jaxrs.taskcompleted.WrapUpdateNextTaskIdentity;
 
 import org.apache.commons.lang3.StringUtils;
@@ -58,6 +61,7 @@ class ActionProcessing extends BaseAction {
 	private String taskCompletedId;
 	private String type;
 	private EffectivePerson effectivePerson;
+	private List<TaskCompleted> taskCompleteds = new ArrayList<>();
 	private List<Task> newTasks = new ArrayList<>();
 
 	private Record record;
@@ -76,6 +80,9 @@ class ActionProcessing extends BaseAction {
 			if (null == this.task) {
 				throw new ExceptionEntityNotExist(id, Task.class);
 			}
+			// 获取当前环节已经完成的待办
+			this.taskCompleteds = emc.listEqual(TaskCompleted.class, TaskCompleted.activityToken_FIELDNAME,
+					task.getActivityToken());
 			this.workLog = emc.firstEqualAndEqual(WorkLog.class, WorkLog.job_FIELDNAME, task.getJob(),
 					WorkLog.fromActivityToken_FIELDNAME, task.getActivityToken());
 
@@ -207,6 +214,13 @@ class ActionProcessing extends BaseAction {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			final List<String> nextTaskIdentities = new ArrayList<>();
 			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.getProperties().setElapsed(
 					Config.workTime().betweenMinutes(record.getProperties().getStartTime(), record.getRecordTime()));
 			record.setType(type);
@@ -218,13 +232,12 @@ class ActionProcessing extends BaseAction {
 					Task.job_FIELDNAME, task.getJob(), Task.series_FIELDNAME, this.series);
 			list.stream().collect(Collectors.groupingBy(Task::getActivity, Collectors.toList())).entrySet().stream()
 					.forEach(o -> {
-						Task task = 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(o.getValue().get(0).getActivity());
+						nextManual.setActivityAlias(o.getValue().get(0).getActivityAlias());
+						nextManual.setActivityName(o.getValue().get(0).getActivityName());
+						nextManual.setActivityToken(o.getValue().get(0).getActivityToken());
+						nextManual.setActivityType(o.getValue().get(0).getActivityType());
 						for (Task t : o.getValue()) {
 							nextManual.getTaskIdentityList().add(t.getIdentity());
 							this.newTasks.add(t);
@@ -232,11 +245,11 @@ class ActionProcessing extends BaseAction {
 						}
 						record.getProperties().getNextManualList().add(nextManual);
 					});
-			/* 去重 */
+			// 去重
 			record.getProperties().setNextManualTaskIdentityList(ListTools.trim(nextTaskIdentities, true, true));
 			TaskCompleted taskCompleted = emc.find(taskCompletedId, TaskCompleted.class);
 			if (null != taskCompleted) {
-				/* 处理完成后在重新写入待办信息 */
+				// 处理完成后在重新写入待办信息
 				record.getProperties().setOpinion(taskCompleted.getOpinion());
 				record.getProperties().setRouteName(taskCompleted.getRouteName());
 				record.getProperties().setMediaOpinion(taskCompleted.getMediaOpinion());
@@ -252,7 +265,7 @@ class ActionProcessing extends BaseAction {
 	}
 
 	private void processing_updateTaskCompleted() throws Exception {
-		/* 记录下一处理人信息 */
+		// 记录下一处理人信息
 		WrapUpdateNextTaskIdentity req = new WrapUpdateNextTaskIdentity();
 		req.getTaskCompletedList().add(taskCompletedId);
 		req.setNextTaskIdentityList(record.getProperties().getNextManualTaskIdentityList());
@@ -263,11 +276,35 @@ class ActionProcessing extends BaseAction {
 	}
 
 	private void processing_updateTask() throws Exception {
-		/* 记录上一处理人信息 */
+		// 记录上一处理人信息
 		if (ListTools.isNotEmpty(newTasks)) {
 			WrapUpdatePrevTaskIdentity req = new WrapUpdatePrevTaskIdentity();
 			req.setTaskList(ListTools.extractProperty(newTasks, JpaObject.id_FIELDNAME, String.class, true, true));
-			req.getPrevTaskIdentityList().add(task.getIdentity());
+			this.taskCompleteds.stream().forEach(o -> {
+				PrevTask prevTask = new PrevTask();
+				prevTask.setCompletedTime(o.getCompletedTime());
+				prevTask.setStartTime(o.getStartTime());
+				prevTask.setOpinion(o.getOpinion());
+				prevTask.setPerson(o.getPerson());
+				prevTask.setIdentity(o.getIdentity());
+				prevTask.setUnit(o.getUnit());
+				prevTask.setRouteName(o.getRouteName());
+				req.getPrevTaskIdentityList().add(prevTask.getIdentity());
+				req.getPrevTaskList().add(prevTask);
+			});
+			PrevTask prevTask = new PrevTask();
+			prevTask.setCompletedTime(new Date());
+			prevTask.setStartTime(task.getStartTime());
+			prevTask.setOpinion(task.getOpinion());
+			prevTask.setPerson(task.getPerson());
+			prevTask.setIdentity(task.getIdentity());
+			prevTask.setUnit(task.getUnit());
+			prevTask.setRouteName(task.getRouteName());
+			req.getPrevTaskIdentityList().add(prevTask.getIdentity());
+			req.getPrevTaskList().add(prevTask);
+			req.setPrevTask(prevTask);
+			// 去重
+			req.setPrevTaskIdentityList(ListTools.trim(req.getPrevTaskIdentityList(), true, true));
 			ThisApplication.context().applications()
 					.putQuery(effectivePerson.getDebugger(), x_processplatform_service_processing.class,
 							Applications.joinQueryUri("task", "prev", "task", "identity"), req, task.getJob())

+ 28 - 3
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/TaskCompleted.java

@@ -28,6 +28,7 @@ import com.x.base.core.project.annotation.FieldDescribe;
 import com.x.base.core.project.tools.DateTools;
 import com.x.base.core.project.tools.StringTools;
 import com.x.processplatform.core.entity.PersistenceProperties;
+import com.x.processplatform.core.entity.content.TaskCompletedProperties.PrevTask;
 import com.x.processplatform.core.entity.element.ActivityType;
 import com.x.processplatform.core.entity.element.Route;
 
@@ -212,14 +213,13 @@ public class TaskCompleted extends SliceJpaObject implements ProjectionInterface
 		this.opinion = "";
 		this.task = "";
 		this.duration = 0L;
-		// this.manualMode = manual.getManualMode();
 		this.processingType = PROCESSINGTYPE_SAMETARGET;
 		this.retractTime = null;
 		this.latest = true;
 		this.copyProjectionFields(work);
 	}
 
-	/* 用于相同处理人流转时使用的创建TaskCompleted */
+	// 用于相同处理人流转时使用的创建TaskCompleted
 	public TaskCompleted(Work work) {
 		this();
 		Date now = new Date();
@@ -252,7 +252,6 @@ public class TaskCompleted extends SliceJpaObject implements ProjectionInterface
 		this.opinion = "";
 		this.task = "";
 		this.duration = 0L;
-		// this.processingType = ProcessingType.sameTarget;
 		this.retractTime = null;
 		this.latest = true;
 		this.copyProjectionFields(work);
@@ -290,6 +289,32 @@ public class TaskCompleted extends SliceJpaObject implements ProjectionInterface
 		this.mediaOpinion = task.getMediaOpinion();
 		this.task = task.getId();
 		this.getProperties().setPrevTaskIdentityList(task.getProperties().getPrevTaskIdentityList());
+		if (null != task.getProperties().getPrevTask()) {
+			PrevTask prevTask = new PrevTask();
+			prevTask.setCompletedTime(task.getProperties().getPrevTask().getCompletedTime());
+			prevTask.setStartTime(task.getProperties().getPrevTask().getStartTime());
+			prevTask.setOpinion(task.getProperties().getPrevTask().getOpinion());
+			prevTask.setPerson(task.getProperties().getPrevTask().getPerson());
+			prevTask.setIdentity(task.getProperties().getPrevTask().getIdentity());
+			prevTask.setUnit(task.getProperties().getPrevTask().getUnit());
+			prevTask.setRouteName(task.getProperties().getPrevTask().getRouteName());
+			this.getProperties().setPrevTask(prevTask);
+		}
+		if (null != task.getProperties().getPrevTaskList()) {
+			for (com.x.processplatform.core.entity.content.TaskProperties.PrevTask p : task.getProperties()
+					.getPrevTaskList()) {
+				PrevTask prevTask = new PrevTask();
+				prevTask.setCompletedTime(p.getCompletedTime());
+				prevTask.setStartTime(p.getStartTime());
+				prevTask.setOpinion(p.getOpinion());
+				prevTask.setPerson(p.getPerson());
+				prevTask.setIdentity(p.getIdentity());
+				prevTask.setUnit(p.getUnit());
+				prevTask.setRouteName(p.getRouteName());
+				this.getProperties().getPrevTaskList().add(prevTask);
+			}
+		}
+		this.getProperties().setPrevTaskIdentityList(task.getProperties().getPrevTaskIdentityList());
 		if ((null != this.expireTime) && (expireTime.before(completedTime))) {
 			this.expired = true;
 		} else {

+ 95 - 0
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/TaskCompletedProperties.java

@@ -1,10 +1,12 @@
 package com.x.processplatform.core.entity.content;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import com.x.base.core.entity.JsonProperties;
 import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.gson.GsonPropertyObject;
 
 public class TaskCompletedProperties extends JsonProperties {
 
@@ -14,12 +16,25 @@ public class TaskCompletedProperties extends JsonProperties {
 	@FieldDescribe("后续处理人")
 	private List<String> nextTaskIdentityList = new ArrayList<>();
 
+	@FieldDescribe("上一人工环节待办对象列表")
+	private List<PrevTask> prevTaskList;
+
+	@FieldDescribe("上一人工环节最近待办对象")
+	private PrevTask prevTask;
+
 	@FieldDescribe("标题")
 	private String title;
 
 	@FieldDescribe("意见")
 	private String opinion;
 
+	public List<PrevTask> getPrevTaskList() {
+		if (null == this.prevTaskList) {
+			this.prevTaskList = new ArrayList<>();
+		}
+		return prevTaskList;
+	}
+
 	public String getTitle() {
 		return title;
 	}
@@ -58,4 +73,84 @@ public class TaskCompletedProperties extends JsonProperties {
 		this.opinion = opinion;
 	}
 
+	public static class PrevTask extends GsonPropertyObject {
+
+		private String routeName;
+		private String unit;
+		private String identity;
+		private String person;
+		private String opinion;
+		private Date startTime;
+		private Date completedTime;
+
+		public String getIdentity() {
+			return identity;
+		}
+
+		public void setIdentity(String identity) {
+			this.identity = identity;
+		}
+
+		public String getOpinion() {
+			return opinion;
+		}
+
+		public void setOpinion(String opinion) {
+			this.opinion = opinion;
+		}
+
+		public String getPerson() {
+			return person;
+		}
+
+		public void setPerson(String person) {
+			this.person = person;
+		}
+
+		public Date getStartTime() {
+			return startTime;
+		}
+
+		public void setStartTime(Date startTime) {
+			this.startTime = startTime;
+		}
+
+		public Date getCompletedTime() {
+			return completedTime;
+		}
+
+		public void setCompletedTime(Date completedTime) {
+			this.completedTime = completedTime;
+		}
+
+		public String getRouteName() {
+			return routeName;
+		}
+
+		public void setRouteName(String routeName) {
+			this.routeName = routeName;
+		}
+
+		public String getUnit() {
+			return unit;
+		}
+
+		public void setUnit(String unit) {
+			this.unit = unit;
+		}
+
+	}
+
+	public void setPrevTaskList(List<PrevTask> prevTaskList) {
+		this.prevTaskList = prevTaskList;
+	}
+
+	public PrevTask getPrevTask() {
+		return prevTask;
+	}
+
+	public void setPrevTask(PrevTask prevTask) {
+		this.prevTask = prevTask;
+	}
+
 }

+ 97 - 1
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/TaskProperties.java

@@ -1,13 +1,16 @@
 package com.x.processplatform.core.entity.content;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import com.x.base.core.entity.JsonProperties;
 import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.gson.GsonPropertyObject;
 
 public class TaskProperties extends JsonProperties {
 
+	@FieldDescribe("上一人工环节处理人")
 	private List<String> prevTaskIdentityList;
 
 	@FieldDescribe("标题")
@@ -16,13 +19,26 @@ public class TaskProperties extends JsonProperties {
 	@FieldDescribe("意见")
 	private String opinion;
 
+	@FieldDescribe("上一人工环节待办对象列表")
+	private List<PrevTask> prevTaskList;
+
+	@FieldDescribe("上一人工环节最近待办对象")
+	private PrevTask prevTask;
+
 	public List<String> getPrevTaskIdentityList() {
 		if (null == prevTaskIdentityList) {
-			this.prevTaskIdentityList = new ArrayList<String>();
+			this.prevTaskIdentityList = new ArrayList<>();
 		}
 		return prevTaskIdentityList;
 	}
 
+	public List<PrevTask> getPrevTaskList() {
+		if (null == prevTaskList) {
+			this.prevTaskList = new ArrayList<>();
+		}
+		return prevTaskList;
+	}
+
 	public void setPrevTaskIdentityList(List<String> prevTaskIdentityList) {
 		this.prevTaskIdentityList = prevTaskIdentityList;
 	}
@@ -43,4 +59,84 @@ public class TaskProperties extends JsonProperties {
 		this.opinion = opinion;
 	}
 
+	public static class PrevTask extends GsonPropertyObject {
+
+		private String routeName;
+		private String unit;
+		private String identity;
+		private String person;
+		private String opinion;
+		private Date startTime;
+		private Date completedTime;
+
+		public String getIdentity() {
+			return identity;
+		}
+
+		public void setIdentity(String identity) {
+			this.identity = identity;
+		}
+
+		public String getOpinion() {
+			return opinion;
+		}
+
+		public void setOpinion(String opinion) {
+			this.opinion = opinion;
+		}
+
+		public String getPerson() {
+			return person;
+		}
+
+		public void setPerson(String person) {
+			this.person = person;
+		}
+
+		public Date getStartTime() {
+			return startTime;
+		}
+
+		public void setStartTime(Date startTime) {
+			this.startTime = startTime;
+		}
+
+		public Date getCompletedTime() {
+			return completedTime;
+		}
+
+		public void setCompletedTime(Date completedTime) {
+			this.completedTime = completedTime;
+		}
+
+		public String getRouteName() {
+			return routeName;
+		}
+
+		public void setRouteName(String routeName) {
+			this.routeName = routeName;
+		}
+
+		public String getUnit() {
+			return unit;
+		}
+
+		public void setUnit(String unit) {
+			this.unit = unit;
+		}
+
+	}
+
+	public void setPrevTaskList(List<PrevTask> prevTaskList) {
+		this.prevTaskList = prevTaskList;
+	}
+
+	public PrevTask getPrevTask() {
+		return prevTask;
+	}
+
+	public void setPrevTask(PrevTask prevTask) {
+		this.prevTask = prevTask;
+	}
+
 }

+ 99 - 2
o2server/x_processplatform_core_express/src/main/java/com/x/processplatform/core/express/service/processing/jaxrs/task/WrapUpdatePrevTaskIdentity.java

@@ -1,16 +1,26 @@
 package com.x.processplatform.core.express.service.processing.jaxrs.task;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
+import com.x.base.core.project.annotation.FieldDescribe;
 import com.x.base.core.project.gson.GsonPropertyObject;
 
 public class WrapUpdatePrevTaskIdentity extends GsonPropertyObject {
 
+	@FieldDescribe("上一人工环节处理人列表")
 	private List<String> prevTaskIdentityList = new ArrayList<>();
 
+	@FieldDescribe("要更新的待办对象")
 	private List<String> taskList;
 
+	@FieldDescribe("上一人工环节处理的待办列表")
+	private List<PrevTask> prevTaskList;
+
+	@FieldDescribe("上一人工环节处理的最近一个待办")
+	private PrevTask prevTask;
+
 	public List<String> getPrevTaskIdentityList() {
 		if (null == this.prevTaskIdentityList) {
 			this.prevTaskIdentityList = new ArrayList<String>();
@@ -18,8 +28,11 @@ public class WrapUpdatePrevTaskIdentity extends GsonPropertyObject {
 		return prevTaskIdentityList;
 	}
 
-	public void setPrevTaskIdentityList(List<String> prevTaskIdentityList) {
-		this.prevTaskIdentityList = prevTaskIdentityList;
+	public List<PrevTask> getPrevTaskList() {
+		if (null == this.prevTaskList) {
+			this.prevTaskList = new ArrayList<PrevTask>();
+		}
+		return prevTaskList;
 	}
 
 	public List<String> getTaskList() {
@@ -33,4 +46,88 @@ public class WrapUpdatePrevTaskIdentity extends GsonPropertyObject {
 		this.taskList = taskList;
 	}
 
+	public void setPrevTaskIdentityList(List<String> prevTaskIdentityList) {
+		this.prevTaskIdentityList = prevTaskIdentityList;
+	}
+
+	public void setPrevTaskList(List<PrevTask> prevTaskList) {
+		this.prevTaskList = prevTaskList;
+	}
+
+	public PrevTask getPrevTask() {
+		return prevTask;
+	}
+
+	public void setPrevTask(PrevTask prevTask) {
+		this.prevTask = prevTask;
+	}
+
+	public static class PrevTask extends GsonPropertyObject {
+
+		private String identity;
+		private String person;
+		private String unit;
+		private String routeName;
+		private String opinion;
+		private Date startTime;
+		private Date completedTime;
+
+		public String getIdentity() {
+			return identity;
+		}
+
+		public void setIdentity(String identity) {
+			this.identity = identity;
+		}
+
+		public String getOpinion() {
+			return opinion;
+		}
+
+		public void setOpinion(String opinion) {
+			this.opinion = opinion;
+		}
+
+		public Date getStartTime() {
+			return startTime;
+		}
+
+		public void setStartTime(Date startTime) {
+			this.startTime = startTime;
+		}
+
+		public Date getCompletedTime() {
+			return completedTime;
+		}
+
+		public void setCompletedTime(Date completedTime) {
+			this.completedTime = completedTime;
+		}
+
+		public String getPerson() {
+			return person;
+		}
+
+		public void setPerson(String person) {
+			this.person = person;
+		}
+
+		public String getUnit() {
+			return unit;
+		}
+
+		public void setUnit(String unit) {
+			this.unit = unit;
+		}
+
+		public String getRouteName() {
+			return routeName;
+		}
+
+		public void setRouteName(String routeName) {
+			this.routeName = routeName;
+		}
+
+	}
+
 }

+ 37 - 16
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/task/ActionUpdatePrevTaskIdentity.java

@@ -17,6 +17,7 @@ import com.x.base.core.project.logger.Logger;
 import com.x.base.core.project.logger.LoggerFactory;
 import com.x.base.core.project.tools.ListTools;
 import com.x.processplatform.core.entity.content.Task;
+import com.x.processplatform.core.entity.content.TaskProperties.PrevTask;
 import com.x.processplatform.core.express.service.processing.jaxrs.task.WrapUpdatePrevTaskIdentity;
 
 import org.apache.commons.collections4.ListUtils;
@@ -42,25 +43,45 @@ class ActionUpdatePrevTaskIdentity extends BaseAction {
 			}
 		}
 
-		Callable<ActionResult<Wo>> callable = new Callable<ActionResult<Wo>>() {
-			public ActionResult<Wo> call() throws Exception {
-				Wo wo = new Wo();
-				try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-					List<Task> os = emc.listIn(Task.class, JpaObject.id_FIELDNAME, bag.wi.getTaskList());
-					emc.beginTransaction(Task.class);
-					for (Task o : os) {
-						o.getProperties().setPrevTaskIdentityList(
-								ListTools.trim(ListUtils.sum(o.getProperties().getPrevTaskIdentityList(),
-										bag.wi.getPrevTaskIdentityList()), true, true));
-						emc.check(o, CheckPersistType.all);
-						wo.getValueList().add(o.getId());
+		Callable<ActionResult<Wo>> callable = () -> {
+			Wo wo = new Wo();
+			try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+				List<Task> os = emc.listIn(Task.class, JpaObject.id_FIELDNAME, bag.wi.getTaskList());
+				emc.beginTransaction(Task.class);
+				for (Task o : os) {
+					o.getProperties().setPrevTaskIdentityList(
+							ListTools.trim(ListUtils.sum(o.getProperties().getPrevTaskIdentityList(),
+									bag.wi.getPrevTaskIdentityList()), true, true));
+					bag.wi.getPrevTaskList().stream().forEach(p -> {
+						PrevTask prevTask = new PrevTask();
+						prevTask.setCompletedTime(p.getCompletedTime());
+						prevTask.setStartTime(p.getStartTime());
+						prevTask.setPerson(p.getPerson());
+						prevTask.setOpinion(p.getOpinion());
+						prevTask.setIdentity(p.getIdentity());
+						prevTask.setUnit(p.getUnit());
+						prevTask.setRouteName(p.getRouteName());
+						o.getProperties().getPrevTaskList().add(prevTask);
+					});
+					if (null != bag.wi.getPrevTask()) {
+						PrevTask prevTask = new PrevTask();
+						prevTask.setCompletedTime(bag.wi.getPrevTask().getCompletedTime());
+						prevTask.setStartTime(bag.wi.getPrevTask().getStartTime());
+						prevTask.setPerson(bag.wi.getPrevTask().getPerson());
+						prevTask.setOpinion(bag.wi.getPrevTask().getOpinion());
+						prevTask.setIdentity(bag.wi.getPrevTask().getIdentity());
+						prevTask.setUnit(bag.wi.getPrevTask().getUnit());
+						prevTask.setRouteName(bag.wi.getPrevTask().getRouteName());
+						o.getProperties().setPrevTask(prevTask);
 					}
-					emc.commit();
+					emc.check(o, CheckPersistType.all);
+					wo.getValueList().add(o.getId());
 				}
-				ActionResult<Wo> result = new ActionResult<>();
-				result.setData(wo);
-				return result;
+				emc.commit();
 			}
+			ActionResult<Wo> result = new ActionResult<>();
+			result.setData(wo);
+			return result;
 		};
 
 		return ProcessPlatformExecutorFactory.get(bag.job).submit(callable).get();

+ 2 - 5
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/work/ActionAssignCreate.java

@@ -15,8 +15,6 @@ import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
 import com.x.base.core.entity.JpaObject;
 import com.x.base.core.entity.annotation.CheckPersistType;
-import com.x.base.core.project.Applications;
-import com.x.base.core.project.x_processplatform_service_processing;
 import com.x.base.core.project.annotation.ActionLogger;
 import com.x.base.core.project.annotation.FieldDescribe;
 import com.x.base.core.project.bean.WrapCopier;
@@ -132,7 +130,7 @@ class ActionAssignCreate extends BaseAction {
 			Processing p = new Processing(processingAttributes);
 			p.processing(work.getId());
 		}
- 
+
 		wo.setId(work.getId());
 		result.setData(wo);
 		return result;
@@ -250,8 +248,7 @@ class ActionAssignCreate extends BaseAction {
 		p = cb.or(p, cb.equal(root.get(Process_.alias), processFlag));
 		p = cb.or(p, cb.equal(root.get(Process_.id), processFlag));
 		p = cb.and(p, root.get(Process_.application).in(applicationIds));
-		p = cb.and(p, cb.or(cb.isTrue(root.get(Process_.editionEnable)),
-				cb.isNull(root.get(Process_.editionEnable))));
+		p = cb.and(p, cb.or(cb.isTrue(root.get(Process_.editionEnable)), cb.isNull(root.get(Process_.editionEnable))));
 		cq.select(root).where(p).orderBy(cb.desc(root.get(Process_.editionNumber)));
 		List<Process> list = em.createQuery(cq).getResultList();
 		if (list.isEmpty()) {