Kaynağa Gözat

Merge branch 'fix/流程多版本的查询问题' into 'develop'

【流程平台】修复流程多版本的查询问题

See merge request o2oa/o2oa!1279
o2null 5 yıl önce
ebeveyn
işleme
1abc85067e
16 değiştirilmiş dosya ile 347 ekleme ve 84 silme
  1. 24 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/read/ActionListNextFilter.java
  2. 24 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/read/ActionListPrevFilter.java
  3. 24 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/readcompleted/ActionListNextFilter.java
  4. 24 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/readcompleted/ActionListPrevFilter.java
  5. 24 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionListNextFilter.java
  6. 24 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionListPrevFilter.java
  7. 24 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/taskcompleted/ActionListNextFilter.java
  8. 24 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/taskcompleted/ActionListPrevFilter.java
  9. 29 20
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionListCountWithProcess.java
  10. 17 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionListNextWithFilter.java
  11. 17 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionListPrevWithFilter.java
  12. 24 50
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionManageListCountWithProcess.java
  13. 17 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionManageListNextWithFilter.java
  14. 17 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionManageListPrevWithFilter.java
  15. 17 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/workcompleted/ActionListNextWithFilter.java
  16. 17 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/workcompleted/ActionListPrevWithFilter.java

+ 24 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/read/ActionListNextFilter.java

@@ -2,6 +2,10 @@ package com.x.processplatform.assemble.surface.jaxrs.read;
 
 import java.util.List;
 
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.processplatform.assemble.surface.Business;
+import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -23,6 +27,10 @@ class ActionListNextFilter extends BaseAction {
 	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String id, Integer count, JsonElement jsonElement)
 			throws Exception {
 		ActionResult<List<Wo>> result = new ActionResult<>();
+		Business business = null;
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			business = new Business(emc);
+		}
 		Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
 		EqualsTerms equals = new EqualsTerms();
 		InTerms ins = new InTerms();
@@ -32,7 +40,11 @@ class ActionListNextFilter extends BaseAction {
 			ins.put(Read.application_FIELDNAME, wi.getApplicationList());
 		}
 		if (ListTools.isNotEmpty(wi.getProcessList())) {
-			ins.put(Read.process_FIELDNAME, wi.getProcessList());
+			if(BooleanUtils.isFalse(wi.getRelateEditionProcess())) {
+				ins.put(Read.process_FIELDNAME, wi.getProcessList());
+			}else{
+				ins.put(Read.process_FIELDNAME, business.process().listEditionProcess(wi.getProcessList()));
+			}
 		}
 		if (ListTools.isNotEmpty(wi.getCreatorUnitList())) {
 			ins.put(Read.creatorUnit_FIELDNAME, wi.getCreatorUnitList());
@@ -66,6 +78,9 @@ class ActionListNextFilter extends BaseAction {
 		@FieldDescribe("流程")
 		private List<String> processList;
 
+		@FieldDescribe("是否查找同版本流程数据:true(默认查找)|false")
+		private Boolean relateEditionProcess = true;
+
 		@FieldDescribe("创建组织")
 		private List<String> creatorUnitList;
 
@@ -94,6 +109,14 @@ class ActionListNextFilter extends BaseAction {
 			this.processList = processList;
 		}
 
+		public Boolean getRelateEditionProcess() {
+			return relateEditionProcess;
+		}
+
+		public void setRelateEditionProcess(Boolean relateEditionProcess) {
+			this.relateEditionProcess = relateEditionProcess;
+		}
+
 		public List<String> getActivityNameList() {
 			return activityNameList;
 		}

+ 24 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/read/ActionListPrevFilter.java

@@ -2,6 +2,10 @@ package com.x.processplatform.assemble.surface.jaxrs.read;
 
 import java.util.List;
 
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.processplatform.assemble.surface.Business;
+import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -23,6 +27,10 @@ class ActionListPrevFilter extends BaseAction {
 	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String id, Integer count, JsonElement jsonElement)
 			throws Exception {
 		ActionResult<List<Wo>> result = new ActionResult<>();
+		Business business = null;
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			business = new Business(emc);
+		}
 		Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
 		EqualsTerms equals = new EqualsTerms();
 		InTerms ins = new InTerms();
@@ -32,7 +40,11 @@ class ActionListPrevFilter extends BaseAction {
 			ins.put(Read.application_FIELDNAME, wi.getApplicationList());
 		}
 		if (ListTools.isNotEmpty(wi.getProcessList())) {
-			ins.put(Read.process_FIELDNAME, wi.getProcessList());
+			if(BooleanUtils.isFalse(wi.getRelateEditionProcess())) {
+				ins.put(Read.process_FIELDNAME, wi.getProcessList());
+			}else{
+				ins.put(Read.process_FIELDNAME, business.process().listEditionProcess(wi.getProcessList()));
+			}
 		}
 		if (ListTools.isNotEmpty(wi.getCreatorUnitList())) {
 			ins.put(Read.creatorUnit_FIELDNAME, wi.getCreatorUnitList());
@@ -66,6 +78,9 @@ class ActionListPrevFilter extends BaseAction {
 		@FieldDescribe("流程")
 		private List<String> processList;
 
+		@FieldDescribe("是否查找同版本流程数据:true(默认查找)|false")
+		private Boolean relateEditionProcess = true;
+
 		@FieldDescribe("创建组织")
 		private List<String> creatorUnitList;
 
@@ -94,6 +109,14 @@ class ActionListPrevFilter extends BaseAction {
 			this.processList = processList;
 		}
 
+		public Boolean getRelateEditionProcess() {
+			return relateEditionProcess;
+		}
+
+		public void setRelateEditionProcess(Boolean relateEditionProcess) {
+			this.relateEditionProcess = relateEditionProcess;
+		}
+
 		public List<String> getActivityNameList() {
 			return activityNameList;
 		}

+ 24 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/readcompleted/ActionListNextFilter.java

@@ -2,6 +2,10 @@ package com.x.processplatform.assemble.surface.jaxrs.readcompleted;
 
 import java.util.List;
 
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.processplatform.assemble.surface.Business;
+import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -23,6 +27,10 @@ class ActionListNextFilter extends BaseAction {
 	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String id, Integer count, JsonElement jsonElement)
 			throws Exception {
 		ActionResult<List<Wo>> result = new ActionResult<>();
+		Business business = null;
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			business = new Business(emc);
+		}
 		Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
 		EqualsTerms equals = new EqualsTerms();
 		InTerms ins = new InTerms();
@@ -32,7 +40,11 @@ class ActionListNextFilter extends BaseAction {
 			ins.put(ReadCompleted.application_FIELDNAME, wi.getApplicationList());
 		}
 		if (ListTools.isNotEmpty(wi.getProcessList())) {
-			ins.put(ReadCompleted.process_FIELDNAME, wi.getProcessList());
+			if(BooleanUtils.isFalse(wi.getRelateEditionProcess())) {
+				ins.put(ReadCompleted.process_FIELDNAME, wi.getProcessList());
+			}else{
+				ins.put(ReadCompleted.process_FIELDNAME, business.process().listEditionProcess(wi.getProcessList()));
+			}
 		}
 		if (ListTools.isNotEmpty(wi.getCreatorUnitList())) {
 			ins.put(ReadCompleted.creatorUnit_FIELDNAME, wi.getCreatorUnitList());
@@ -69,6 +81,9 @@ class ActionListNextFilter extends BaseAction {
 		@FieldDescribe("流程")
 		private List<String> processList;
 
+		@FieldDescribe("是否查找同版本流程数据:true(默认查找)|false")
+		private Boolean relateEditionProcess = true;
+
 		@FieldDescribe("创建人所在组织")
 		private List<String> creatorUnitList;
 
@@ -100,6 +115,14 @@ class ActionListNextFilter extends BaseAction {
 			this.processList = processList;
 		}
 
+		public Boolean getRelateEditionProcess() {
+			return relateEditionProcess;
+		}
+
+		public void setRelateEditionProcess(Boolean relateEditionProcess) {
+			this.relateEditionProcess = relateEditionProcess;
+		}
+
 		public List<String> getActivityNameList() {
 			return activityNameList;
 		}

+ 24 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/readcompleted/ActionListPrevFilter.java

@@ -2,6 +2,10 @@ package com.x.processplatform.assemble.surface.jaxrs.readcompleted;
 
 import java.util.List;
 
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.processplatform.assemble.surface.Business;
+import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -23,6 +27,10 @@ class ActionListPrevFilter extends BaseAction {
 	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String id, Integer count, JsonElement jsonElement)
 			throws Exception {
 		ActionResult<List<Wo>> result = new ActionResult<>();
+		Business business = null;
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			business = new Business(emc);
+		}
 		Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
 		EqualsTerms equals = new EqualsTerms();
 		InTerms ins = new InTerms();
@@ -32,7 +40,11 @@ class ActionListPrevFilter extends BaseAction {
 			ins.put(ReadCompleted.application_FIELDNAME, wi.getApplicationList());
 		}
 		if (ListTools.isNotEmpty(wi.getProcessList())) {
-			ins.put(ReadCompleted.process_FIELDNAME, wi.getProcessList());
+			if(BooleanUtils.isFalse(wi.getRelateEditionProcess())) {
+				ins.put(ReadCompleted.process_FIELDNAME, wi.getProcessList());
+			}else{
+				ins.put(ReadCompleted.process_FIELDNAME, business.process().listEditionProcess(wi.getProcessList()));
+			}
 		}
 		if (ListTools.isNotEmpty(wi.getCreatorUnitList())) {
 			ins.put(ReadCompleted.creatorUnit_FIELDNAME, wi.getCreatorUnitList());
@@ -69,6 +81,9 @@ class ActionListPrevFilter extends BaseAction {
 		@FieldDescribe("流程")
 		private List<String> processList;
 
+		@FieldDescribe("是否查找同版本流程数据:true(默认查找)|false")
+		private Boolean relateEditionProcess = true;
+
 		@FieldDescribe("创建人所在组织")
 		private List<String> creatorUnitList;
 
@@ -100,6 +115,14 @@ class ActionListPrevFilter extends BaseAction {
 			this.processList = processList;
 		}
 
+		public Boolean getRelateEditionProcess() {
+			return relateEditionProcess;
+		}
+
+		public void setRelateEditionProcess(Boolean relateEditionProcess) {
+			this.relateEditionProcess = relateEditionProcess;
+		}
+
 		public List<String> getActivityNameList() {
 			return activityNameList;
 		}

+ 24 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionListNextFilter.java

@@ -2,6 +2,10 @@ package com.x.processplatform.assemble.surface.jaxrs.task;
 
 import java.util.List;
 
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.processplatform.assemble.surface.Business;
+import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -24,6 +28,10 @@ class ActionListNextFilter extends BaseAction {
 	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String id, Integer count, JsonElement jsonElement)
 			throws Exception {
 		ActionResult<List<Wo>> result = new ActionResult<>();
+		Business business = null;
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			business = new Business(emc);
+		}
 		Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
 		EqualsTerms equals = new EqualsTerms();
 		InTerms ins = new InTerms();
@@ -33,7 +41,11 @@ class ActionListNextFilter extends BaseAction {
 			ins.put(Task.application_FIELDNAME, wi.getApplicationList());
 		}
 		if (ListTools.isNotEmpty(wi.getProcessList())) {
-			ins.put(Task.process_FIELDNAME, wi.getProcessList());
+			if(BooleanUtils.isFalse(wi.getRelateEditionProcess())) {
+				ins.put(Task.process_FIELDNAME, wi.getProcessList());
+			}else{
+				ins.put(Task.process_FIELDNAME, business.process().listEditionProcess(wi.getProcessList()));
+			}
 		}
 		if (ListTools.isNotEmpty(wi.getCreatorUnitList())) {
 			ins.put(Task.creatorUnit_FIELDNAME, wi.getCreatorUnitList());
@@ -67,6 +79,9 @@ class ActionListNextFilter extends BaseAction {
 		@FieldDescribe("流程")
 		private List<String> processList;
 
+		@FieldDescribe("是否查找同版本流程数据:true(默认查找)|false")
+		private Boolean relateEditionProcess = true;
+
 		@FieldDescribe("活动名称")
 		private List<String> activityNameList;
 
@@ -95,6 +110,14 @@ class ActionListNextFilter extends BaseAction {
 			this.processList = processList;
 		}
 
+		public Boolean getRelateEditionProcess() {
+			return relateEditionProcess;
+		}
+
+		public void setRelateEditionProcess(Boolean relateEditionProcess) {
+			this.relateEditionProcess = relateEditionProcess;
+		}
+
 		public List<String> getStartTimeMonthList() {
 			return startTimeMonthList;
 		}

+ 24 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionListPrevFilter.java

@@ -2,6 +2,10 @@ package com.x.processplatform.assemble.surface.jaxrs.task;
 
 import java.util.List;
 
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.processplatform.assemble.surface.Business;
+import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -25,6 +29,10 @@ class ActionListPrevFilter extends BaseAction {
 	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String id, Integer count, JsonElement jsonElement)
 			throws Exception {
 		ActionResult<List<Wo>> result = new ActionResult<>();
+		Business business = null;
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			business = new Business(emc);
+		}
 		Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
 		EqualsTerms equals = new EqualsTerms();
 		InTerms ins = new InTerms();
@@ -34,7 +42,11 @@ class ActionListPrevFilter extends BaseAction {
 			ins.put(Task.application_FIELDNAME, wi.getApplicationList());
 		}
 		if (ListTools.isNotEmpty(wi.getProcessList())) {
-			ins.put(Task.process_FIELDNAME, wi.getProcessList());
+			if(BooleanUtils.isFalse(wi.getRelateEditionProcess())) {
+				ins.put(Task.process_FIELDNAME, wi.getProcessList());
+			}else{
+				ins.put(Task.process_FIELDNAME, business.process().listEditionProcess(wi.getProcessList()));
+			}
 		}
 		if (ListTools.isNotEmpty(wi.getCreatorUnitList())) {
 			ins.put(Task.creatorUnit_FIELDNAME, wi.getCreatorUnitList());
@@ -68,6 +80,9 @@ class ActionListPrevFilter extends BaseAction {
 		@FieldDescribe("流程")
 		private List<String> processList;
 
+		@FieldDescribe("是否查找同版本流程数据:true(默认查找)|false")
+		private Boolean relateEditionProcess = true;
+
 		@FieldDescribe("活动名称")
 		private List<String> activityNameList;
 
@@ -96,6 +111,14 @@ class ActionListPrevFilter extends BaseAction {
 			this.processList = processList;
 		}
 
+		public Boolean getRelateEditionProcess() {
+			return relateEditionProcess;
+		}
+
+		public void setRelateEditionProcess(Boolean relateEditionProcess) {
+			this.relateEditionProcess = relateEditionProcess;
+		}
+
 		public List<String> getStartTimeMonthList() {
 			return startTimeMonthList;
 		}

+ 24 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/taskcompleted/ActionListNextFilter.java

@@ -2,6 +2,10 @@ package com.x.processplatform.assemble.surface.jaxrs.taskcompleted;
 
 import java.util.List;
 
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.processplatform.assemble.surface.Business;
+import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -24,6 +28,10 @@ class ActionListNextFilter extends BaseAction {
 	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String id, Integer count, JsonElement jsonElement)
 			throws Exception {
 		ActionResult<List<Wo>> result = new ActionResult<>();
+		Business business = null;
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			business = new Business(emc);
+		}
 		Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
 		EqualsTerms equals = new EqualsTerms();
 		NotEqualsTerms notEquals = new NotEqualsTerms();
@@ -35,7 +43,11 @@ class ActionListNextFilter extends BaseAction {
 			ins.put(TaskCompleted.application_FIELDNAME, wi.getApplicationList());
 		}
 		if (ListTools.isNotEmpty(wi.getProcessList())) {
-			ins.put(TaskCompleted.process_FIELDNAME, wi.getProcessList());
+			if(BooleanUtils.isFalse(wi.getRelateEditionProcess())) {
+				ins.put(TaskCompleted.process_FIELDNAME, wi.getProcessList());
+			}else{
+				ins.put(TaskCompleted.process_FIELDNAME, business.process().listEditionProcess(wi.getProcessList()));
+			}
 		}
 		if (ListTools.isNotEmpty(wi.getCreatorUnitList())) {
 			ins.put(TaskCompleted.creatorUnit_FIELDNAME, wi.getCreatorUnitList());
@@ -76,6 +88,9 @@ class ActionListNextFilter extends BaseAction {
 		@FieldDescribe("流程")
 		private List<String> processList;
 
+		@FieldDescribe("是否查找同版本流程数据:true(默认查找)|false")
+		private Boolean relateEditionProcess = true;
+
 		@FieldDescribe("活动名称")
 		private List<String> activityNameList;
 
@@ -118,6 +133,14 @@ class ActionListNextFilter extends BaseAction {
 			this.processList = processList;
 		}
 
+		public Boolean getRelateEditionProcess() {
+			return relateEditionProcess;
+		}
+
+		public void setRelateEditionProcess(Boolean relateEditionProcess) {
+			this.relateEditionProcess = relateEditionProcess;
+		}
+
 		public List<String> getActivityNameList() {
 			return activityNameList;
 		}

+ 24 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/taskcompleted/ActionListPrevFilter.java

@@ -2,6 +2,10 @@ package com.x.processplatform.assemble.surface.jaxrs.taskcompleted;
 
 import java.util.List;
 
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.processplatform.assemble.surface.Business;
+import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -24,6 +28,10 @@ class ActionListPrevFilter extends BaseAction {
 	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String id, Integer count, JsonElement jsonElement)
 			throws Exception {
 		ActionResult<List<Wo>> result = new ActionResult<>();
+		Business business = null;
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			business = new Business(emc);
+		}
 		Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
 		EqualsTerms equals = new EqualsTerms();
 		NotEqualsTerms notEquals = new NotEqualsTerms();
@@ -35,7 +43,11 @@ class ActionListPrevFilter extends BaseAction {
 			ins.put(TaskCompleted.application_FIELDNAME, wi.getApplicationList());
 		}
 		if (ListTools.isNotEmpty(wi.getProcessList())) {
-			ins.put(TaskCompleted.process_FIELDNAME, wi.getProcessList());
+			if(BooleanUtils.isFalse(wi.getRelateEditionProcess())) {
+				ins.put(TaskCompleted.process_FIELDNAME, wi.getProcessList());
+			}else{
+				ins.put(TaskCompleted.process_FIELDNAME, business.process().listEditionProcess(wi.getProcessList()));
+			}
 		}
 		if (ListTools.isNotEmpty(wi.getCreatorUnitList())) {
 			ins.put(TaskCompleted.creatorUnit_FIELDNAME, wi.getCreatorUnitList());
@@ -75,6 +87,9 @@ class ActionListPrevFilter extends BaseAction {
 		@FieldDescribe("流程")
 		private List<String> processList;
 
+		@FieldDescribe("是否查找同版本流程数据:true(默认查找)|false")
+		private Boolean relateEditionProcess = true;
+
 		@FieldDescribe("活动名称")
 		private List<String> activityNameList;
 
@@ -108,6 +123,14 @@ class ActionListPrevFilter extends BaseAction {
 			this.processList = processList;
 		}
 
+		public Boolean getRelateEditionProcess() {
+			return relateEditionProcess;
+		}
+
+		public void setRelateEditionProcess(Boolean relateEditionProcess) {
+			this.relateEditionProcess = relateEditionProcess;
+		}
+
 		public List<String> getActivityNameList() {
 			return activityNameList;
 		}

+ 29 - 20
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionListCountWithProcess.java

@@ -1,14 +1,13 @@
 package com.x.processplatform.assemble.surface.jaxrs.work;
 
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Tuple;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
+import javax.persistence.criteria.*;
 
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
@@ -16,10 +15,13 @@ 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.tools.SortTools;
 import com.x.processplatform.assemble.surface.Business;
 import com.x.processplatform.core.entity.content.Work;
 import com.x.processplatform.core.entity.content.Work_;
 import com.x.processplatform.core.entity.element.Application;
+import com.x.processplatform.core.entity.element.Process;
+import org.apache.commons.lang3.BooleanUtils;
 
 class ActionListCountWithProcess extends BaseAction {
 
@@ -27,30 +29,32 @@ class ActionListCountWithProcess extends BaseAction {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			ActionResult<List<Wo>> result = new ActionResult<>();
 			Business business = new Business(emc);
-			List<Wo> wos = new ArrayList<>();
 			Application application = business.application().pick(applicationFlag);
 			if (null == application) {
 				throw new ExceptionApplicationNotExist(applicationFlag);
 			}
 			EntityManager em = business.entityManagerContainer().get(Work.class);
 			CriteriaBuilder cb = em.getCriteriaBuilder();
-			CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class);
+			CriteriaQuery<Wo> cq = cb.createQuery(Wo.class);
 			Root<Work> root = cq.from(Work.class);
 			Predicate p = cb.equal(root.get(Work_.creatorPerson), effectivePerson.getDistinguishedName());
 			p = cb.and(p, cb.equal(root.get(Work_.application), application.getId()));
-			javax.persistence.criteria.Path<String> processPath = root.get(Work_.process);
-			javax.persistence.criteria.Path<String> processNamePath = root.get(Work_.processName);
-			/* count group by 的值只会返回首行,看上去是个BUG 只能分成多个语句执行 */
-			cq.multiselect(processPath, processNamePath).where(p).groupBy(processPath, processNamePath);
-			for (Tuple o : em.createQuery(cq).getResultList()) {
-				Wo wo = new Wo();
-				String process = o.get(processPath);
-				String processName = o.get(processNamePath);
-				wo.setName(processName);
-				wo.setValue(process);
-				wo.setCount(this.countWithProcess(business, effectivePerson, process, processName));
-				wos.add(wo);
+			Path<String> value = root.get(Work_.process);
+			cq.multiselect(value, cb.count(root).as(Long.class)).where(p).groupBy(value);
+			List<Wo> list = em.createQuery(cq).getResultList();
+			List<Wo> wos = new ArrayList<>();
+			for (Wo wo : list) {
+				Process process = business.process().pick(wo.getValue());
+				if (process != null){
+					String name = process.getName();
+					if (process.getEditionNumber() != null) {
+						name = name + "V" + process.getEditionNumber();
+					}
+					wo.setName(name);
+					wos.add(wo);
+				}
 			}
+			SortTools.asc(wos, "name");
 			result.setData(wos);
 			return result;
 		}
@@ -58,15 +62,20 @@ class ActionListCountWithProcess extends BaseAction {
 
 	public static class Wo extends GsonPropertyObject {
 
-		@FieldDescribe("流程名称")
+		@FieldDescribe("流程标志")
 		private String value;
 
-		@FieldDescribe("流程标识")
+		@FieldDescribe("流程名称")
 		private String name;
 
 		@FieldDescribe("数量")
 		private Long count;
 
+		public Wo(String value, Long count){
+			this.value = value;
+			this.count = count;
+		}
+
 		public String getValue() {
 			return value;
 		}

+ 17 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionListNextWithFilter.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.work;
 
 import java.util.List;
 
+import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -43,7 +44,11 @@ class ActionListNextWithFilter extends BaseAction {
 			equals.put("application", application.getId());
 			equals.put("creatorPerson", effectivePerson.getDistinguishedName());
 			if (ListTools.isNotEmpty(wi.getProcessList())) {
-				ins.put("process", wi.getProcessList());
+				if(BooleanUtils.isTrue(wi.getRelateEditionProcess())) {
+					ins.put("process", business.process().listEditionProcess(wi.getProcessList()));
+				}else{
+					ins.put("process", wi.getProcessList());
+				}
 			}
 			if (ListTools.isNotEmpty(wi.getCreatorUnitList())) {
 				ins.put("creatorUnit", wi.getCreatorUnitList());
@@ -86,6 +91,9 @@ class ActionListNextWithFilter extends BaseAction {
 		@FieldDescribe("流程")
 		private List<String> processList;
 
+		@FieldDescribe("是否查找同版本流程数据:true|false(默认不查找)")
+		private Boolean relateEditionProcess = false;
+
 		@FieldDescribe("创建组织")
 		private List<String> creatorUnitList;
 
@@ -111,6 +119,14 @@ class ActionListNextWithFilter extends BaseAction {
 			this.processList = processList;
 		}
 
+		public Boolean getRelateEditionProcess() {
+			return relateEditionProcess;
+		}
+
+		public void setRelateEditionProcess(Boolean relateEditionProcess) {
+			this.relateEditionProcess = relateEditionProcess;
+		}
+
 		public List<String> getStartTimeMonthList() {
 			return startTimeMonthList;
 		}

+ 17 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionListPrevWithFilter.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.work;
 
 import java.util.List;
 
+import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -43,7 +44,11 @@ class ActionListPrevWithFilter extends BaseAction {
 			equals.put("application", application.getId());
 			equals.put("creatorPerson", effectivePerson.getDistinguishedName());
 			if (ListTools.isNotEmpty(wi.getProcessList())) {
-				ins.put("process", wi.getProcessList());
+				if(BooleanUtils.isTrue(wi.getRelateEditionProcess())) {
+					ins.put("process", business.process().listEditionProcess(wi.getProcessList()));
+				}else{
+					ins.put("process", wi.getProcessList());
+				}
 			}
 			if (ListTools.isNotEmpty(wi.getCreatorUnitList())) {
 				ins.put("creatorUnit", wi.getCreatorUnitList());
@@ -86,6 +91,9 @@ class ActionListPrevWithFilter extends BaseAction {
 		@FieldDescribe("流程")
 		private List<String> processList;
 
+		@FieldDescribe("是否查找同版本流程数据:true|false(默认不查找)")
+		private Boolean relateEditionProcess = false;
+
 		@FieldDescribe("创建组织")
 		private List<String> creatorUnitList;
 
@@ -111,6 +119,14 @@ class ActionListPrevWithFilter extends BaseAction {
 			this.processList = processList;
 		}
 
+		public Boolean getRelateEditionProcess() {
+			return relateEditionProcess;
+		}
+
+		public void setRelateEditionProcess(Boolean relateEditionProcess) {
+			this.relateEditionProcess = relateEditionProcess;
+		}
+
 		public List<String> getStartTimeMonthList() {
 			return startTimeMonthList;
 		}

+ 24 - 50
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionManageListCountWithProcess.java

@@ -4,10 +4,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
+import javax.persistence.criteria.*;
 
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
@@ -21,6 +18,8 @@ import com.x.processplatform.core.entity.content.Work;
 import com.x.processplatform.core.entity.content.Work_;
 import com.x.processplatform.core.entity.element.Application;
 import com.x.processplatform.core.entity.element.Process;
+import org.apache.commons.lang3.BooleanUtils;
+import org.apache.commons.lang3.StringUtils;
 
 class ActionManageListCountWithProcess extends BaseAction {
 
@@ -28,28 +27,28 @@ class ActionManageListCountWithProcess extends BaseAction {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			ActionResult<List<Wo>> result = new ActionResult<>();
 			Business business = new Business(emc);
-			List<Wo> wos = new ArrayList<>();
 			Application application = business.application().pick(applicationFlag);
 			if (null == application) {
 				throw new ExceptionApplicationNotExist(applicationFlag);
 			}
 			EntityManager em = business.entityManagerContainer().get(Work.class);
 			CriteriaBuilder cb = em.getCriteriaBuilder();
-			CriteriaQuery<String> cq = cb.createQuery(String.class);
+			CriteriaQuery<Wo> cq = cb.createQuery(Wo.class);
 			Root<Work> root = cq.from(Work.class);
-			Predicate p = cb.equal(root.get(Work_.application), application.getId());
-			cq.select(root.get(Work_.process)).where(p).distinct(true);
-			List<String> list = em.createQuery(cq).getResultList();
-			for (String str : list) {
-				Wo wo = new Wo();
-				Process process = business.process().pick(str);
-				if (null != process) {
-					if (business.canManageApplicationOrProcess(effectivePerson, application, process)) {
-						wo.setValue(process.getId());
-						wo.setName(process.getName());
-						wo.setCount(this.countWithProcess(business, process));
-						wos.add(wo);
+			Predicate p = cb.equal(root.get(Work_.application),  application.getId());
+			Path<String> value = root.get(Work_.process);
+			cq.multiselect(value, cb.count(root).as(Long.class)).where(p).groupBy(value);
+			List<Wo> list = em.createQuery(cq).getResultList();
+			List<Wo> wos = new ArrayList<>();
+			for (Wo wo : list) {
+				Process process = business.process().pick(wo.getValue());
+				if (process != null && business.canManageApplicationOrProcess(effectivePerson, application, process)){
+					String name = process.getName();
+					if (process.getEditionNumber() != null) {
+						name = name + "V" + process.getEditionNumber();
 					}
+					wo.setName(name);
+					wos.add(wo);
 				}
 			}
 			SortTools.asc(wos, "name");
@@ -60,15 +59,20 @@ class ActionManageListCountWithProcess extends BaseAction {
 
 	public static class Wo extends GsonPropertyObject {
 
-		@FieldDescribe("流程名称")
+		@FieldDescribe("流程标识")
 		private String value;
 
-		@FieldDescribe("流程标识")
+		@FieldDescribe("流程名称")
 		private String name;
 
 		@FieldDescribe("数量")
 		private Long count;
 
+		public Wo(String value, Long count){
+			this.value = value;
+			this.count = count;
+		}
+
 		public String getValue() {
 			return value;
 		}
@@ -94,35 +98,5 @@ class ActionManageListCountWithProcess extends BaseAction {
 		}
 
 	}
-	//
-	// private String getProcessName(Business business, String id) throws
-	// Exception {
-	// Process o = business.process().pick(id);
-	// if (null != o) {
-	// return o.getName();
-	// }
-	// EntityManagerContainer emc = business.entityManagerContainer();
-	// EntityManager em = emc.get(Work.class);
-	// CriteriaBuilder cb = em.getCriteriaBuilder();
-	// CriteriaQuery<String> cq = cb.createQuery(String.class);
-	// Root<Work> root = cq.from(Work.class);
-	// Predicate p = cb.equal(root.get(Work_.process), id);
-	// cq.select(root.get(Work_.processName)).where(p);
-	// List<String> list = em.createQuery(cq).setMaxResults(1).getResultList();
-	// if (!list.isEmpty()) {
-	// return list.get(0);
-	// }
-	// return null;
-	// }
-
-	private Long countWithProcess(Business business, Process process) throws Exception {
-		EntityManager em = business.entityManagerContainer().get(Work.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Work> root = cq.from(Work.class);
-		Predicate p = cb.equal(root.get(Work_.process), process.getId());
-		cq.select(cb.count(root)).where(p);
-		return em.createQuery(cq).getSingleResult();
-	}
 
 }

+ 17 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionManageListNextWithFilter.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.work;
 
 import java.util.List;
 
+import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -42,7 +43,11 @@ class ActionManageListNextWithFilter extends BaseAction {
 			}
 			equals.put("application", application.getId());
 			if (ListTools.isNotEmpty(wi.getProcessList())) {
-				ins.put("process", wi.getProcessList());
+				if(BooleanUtils.isTrue(wi.getRelateEditionProcess())) {
+					ins.put("process", business.process().listEditionProcess(wi.getProcessList()));
+				}else{
+					ins.put("process", wi.getProcessList());
+				}
 			}
 			if (ListTools.isNotEmpty(wi.getCreatorUnitList())) {
 				ins.put("creatorUnit", wi.getCreatorUnitList());
@@ -85,6 +90,9 @@ class ActionManageListNextWithFilter extends BaseAction {
 		@FieldDescribe("流程")
 		private List<String> processList;
 
+		@FieldDescribe("是否查找同版本流程数据:true|false(默认不查找)")
+		private Boolean relateEditionProcess = false;
+
 		@FieldDescribe("创建组织")
 		private List<String> creatorUnitList;
 
@@ -110,6 +118,14 @@ class ActionManageListNextWithFilter extends BaseAction {
 			this.processList = processList;
 		}
 
+		public Boolean getRelateEditionProcess() {
+			return relateEditionProcess;
+		}
+
+		public void setRelateEditionProcess(Boolean relateEditionProcess) {
+			this.relateEditionProcess = relateEditionProcess;
+		}
+
 		public List<String> getStartTimeMonthList() {
 			return startTimeMonthList;
 		}

+ 17 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionManageListPrevWithFilter.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.work;
 
 import java.util.List;
 
+import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -42,7 +43,11 @@ class ActionManageListPrevWithFilter extends BaseAction {
 			}
 			equals.put("application", application.getId());
 			if (ListTools.isNotEmpty(wi.getProcessList())) {
-				ins.put("process", wi.getProcessList());
+				if(BooleanUtils.isTrue(wi.getRelateEditionProcess())) {
+					ins.put("process", business.process().listEditionProcess(wi.getProcessList()));
+				}else{
+					ins.put("process", wi.getProcessList());
+				}
 			}
 			if (ListTools.isNotEmpty(wi.getCreatorUnitList())) {
 				ins.put("creatorUnit", wi.getCreatorUnitList());
@@ -84,6 +89,9 @@ class ActionManageListPrevWithFilter extends BaseAction {
 		@FieldDescribe("流程")
 		private List<String> processList;
 
+		@FieldDescribe("是否查找同版本流程数据:true|false(默认不查找)")
+		private Boolean relateEditionProcess = false;
+
 		@FieldDescribe("创建组织")
 		private List<String> creatorUnitList;
 
@@ -109,6 +117,14 @@ class ActionManageListPrevWithFilter extends BaseAction {
 			this.processList = processList;
 		}
 
+		public Boolean getRelateEditionProcess() {
+			return relateEditionProcess;
+		}
+
+		public void setRelateEditionProcess(Boolean relateEditionProcess) {
+			this.relateEditionProcess = relateEditionProcess;
+		}
+
 		public List<String> getStartTimeMonthList() {
 			return startTimeMonthList;
 		}

+ 17 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/workcompleted/ActionListNextWithFilter.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.workcompleted;
 
 import java.util.List;
 
+import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -40,7 +41,11 @@ class ActionListNextWithFilter extends BaseAction {
 			equals.put("creatorPerson", effectivePerson.getDistinguishedName());
 			equals.put("application", applicationId);
 			if (ListTools.isNotEmpty(wi.getProcessList())) {
-				ins.put("process", wi.getProcessList());
+				if(BooleanUtils.isFalse(wi.getRelateEditionProcess())) {
+					ins.put("process", wi.getProcessList());
+				}else{
+					ins.put("process", business.process().listEditionProcess(wi.getProcessList()));
+				}
 			}
 			if (ListTools.isNotEmpty(wi.getStartTimeMonthList())) {
 				ins.put("startTimeMonth", wi.getStartTimeMonthList());
@@ -76,6 +81,9 @@ class ActionListNextWithFilter extends BaseAction {
 		@FieldDescribe("流程")
 		private List<String> processList;
 
+		@FieldDescribe("是否查找同版本流程数据:true(默认查找)|false")
+		private Boolean relateEditionProcess = true;
+
 		@FieldDescribe("结束年月")
 		private List<String> completedTimeMonthList;
 
@@ -93,6 +101,14 @@ class ActionListNextWithFilter extends BaseAction {
 			this.processList = processList;
 		}
 
+		public Boolean getRelateEditionProcess() {
+			return relateEditionProcess;
+		}
+
+		public void setRelateEditionProcess(Boolean relateEditionProcess) {
+			this.relateEditionProcess = relateEditionProcess;
+		}
+
 		public List<String> getCompletedTimeMonthList() {
 			return completedTimeMonthList;
 		}

+ 17 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/workcompleted/ActionListPrevWithFilter.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.workcompleted;
 
 import java.util.List;
 
+import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -40,7 +41,11 @@ class ActionListPrevWithFilter extends BaseAction {
 			equals.put("creatorPerson", effectivePerson.getDistinguishedName());
 			equals.put("application", applicationId);
 			if (ListTools.isNotEmpty(wi.getProcessList())) {
-				ins.put("process", wi.getProcessList());
+				if(BooleanUtils.isFalse(wi.getRelateEditionProcess())) {
+					ins.put("process", wi.getProcessList());
+				}else{
+					ins.put("process", business.process().listEditionProcess(wi.getProcessList()));
+				}
 			}
 			if (ListTools.isNotEmpty(wi.getStartTimeMonthList())) {
 				ins.put("startTimeMonth", wi.getStartTimeMonthList());
@@ -76,6 +81,9 @@ class ActionListPrevWithFilter extends BaseAction {
 		@FieldDescribe("流程")
 		private List<String> processList;
 
+		@FieldDescribe("是否查找同版本流程数据:true(默认查找)|false")
+		private Boolean relateEditionProcess = true;
+
 		@FieldDescribe("结束年月")
 		private List<String> completedTimeMonthList;
 
@@ -93,6 +101,14 @@ class ActionListPrevWithFilter extends BaseAction {
 			this.processList = processList;
 		}
 
+		public Boolean getRelateEditionProcess() {
+			return relateEditionProcess;
+		}
+
+		public void setRelateEditionProcess(Boolean relateEditionProcess) {
+			this.relateEditionProcess = relateEditionProcess;
+		}
+
 		public List<String> getCompletedTimeMonthList() {
 			return completedTimeMonthList;
 		}