Kaynağa Gözat

Merge branch 'fix/待办查询增加是否排除拟稿待办的条件' into 'wrdp'

[流程平台]待办查询接口增加是否排除拟稿(草稿)待办的条件

See merge request o2oa/o2oa!2755
胡起 5 yıl önce
ebeveyn
işleme
87a068276f

+ 2 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/Business.java

@@ -74,6 +74,8 @@ import com.x.processplatform.core.entity.element.Process;
 
 public class Business {
 
+	public static final String WORK_CREATE_TYPE_ASSIGN = "assign";
+
 	private EntityManagerContainer emc;
 
 	public Business(EntityManagerContainer emc) throws Exception {

+ 9 - 3
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/factory/content/TaskFactory.java

@@ -20,6 +20,7 @@ import com.x.processplatform.core.entity.content.TaskCompleted;
 import com.x.processplatform.core.entity.content.Task_;
 import com.x.processplatform.core.entity.content.Work;
 import com.x.processplatform.core.entity.content.WorkLog;
+import org.apache.commons.lang3.BooleanUtils;
 
 public class TaskFactory extends AbstractFactory {
 
@@ -122,13 +123,18 @@ public class TaskFactory extends AbstractFactory {
 		return em.createQuery(cq).getResultList();
 	}
 
-	public List<Task> listWithPersonObject(String person) throws Exception {
+	public List<Task> listWithPersonObject(String person, Boolean isExcludeDraft) throws Exception {
 		EntityManager em = this.entityManagerContainer().get(Task.class);
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<Task> cq = cb.createQuery(Task.class);
 		Root<Task> root = cq.from(Task.class);
 		Predicate p = cb.equal(root.get(Task_.person), person);
-		cq.select(root).where(p);
+		if(BooleanUtils.isTrue(isExcludeDraft)){
+			p = cb.and(p, cb.or(cb.isFalse(root.get(Task_.first)),
+					cb.isNull(root.get(Task_.first)),
+					cb.equal(root.get(Task_.workCreateType), Business.WORK_CREATE_TYPE_ASSIGN)));
+		}
+		cq.select(root).where(p).orderBy(cb.desc(root.get(Task_.createTime)));
 		return em.createQuery(cq).getResultList();
 	}
 
@@ -197,4 +203,4 @@ public class TaskFactory extends AbstractFactory {
 		return list;
 	}
 
-}
+}

+ 21 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionListMyFilterPaging.java

@@ -96,6 +96,11 @@ class ActionListMyFilterPaging extends BaseAction {
 			}
 			p = cb.and(p, cb.lessThanOrEqualTo(root.get(Task_.urgeTime), DateTools.getAdjustTimeDay(null, 0, -urgeTime, 0, 0)));
 		}
+		if(BooleanUtils.isTrue(wi.getExcludeDraft())){
+			p = cb.and(p, cb.or(cb.isFalse(root.get(Task_.first)),
+					cb.isNull(root.get(Task_.first)),
+					cb.equal(root.get(Task_.workCreateType), Business.WORK_CREATE_TYPE_ASSIGN)));
+		}
 		if (StringUtils.isNotEmpty(wi.getKey())) {
 			String key = StringUtils.trim(StringUtils.replace(wi.getKey(), "\u3000", " "));
 			if (StringUtils.isNotEmpty(key)) {
@@ -160,6 +165,11 @@ class ActionListMyFilterPaging extends BaseAction {
 			}
 			p = cb.and(p, cb.lessThanOrEqualTo(root.get(Task_.urgeTime), DateTools.getAdjustTimeDay(null, 0, -urgeTime, 0, 0)));
 		}
+		if(BooleanUtils.isTrue(wi.getExcludeDraft())){
+			p = cb.and(p, cb.or(cb.isFalse(root.get(Task_.first)),
+					cb.isNull(root.get(Task_.first)),
+					cb.equal(root.get(Task_.workCreateType), Business.WORK_CREATE_TYPE_ASSIGN)));
+		}
 		if (StringUtils.isNotEmpty(wi.getKey())) {
 			String key = StringUtils.trim(StringUtils.replace(wi.getKey(), "\u3000", " "));
 			if (StringUtils.isNotEmpty(key)) {
@@ -186,6 +196,9 @@ class ActionListMyFilterPaging extends BaseAction {
 		@FieldDescribe("是否查找同版本流程数据:true(默认查找)|false")
 		private Boolean relateEditionProcess = true;
 
+		@FieldDescribe("是否排除草稿待办:false(默认不查找)|true")
+		private Boolean isExcludeDraft;
+
 		@FieldDescribe("开始时间yyyy-MM-dd HH:mm:ss")
 		private String startTime;
 
@@ -297,6 +310,14 @@ class ActionListMyFilterPaging extends BaseAction {
 		public void setUrgeTime(String urgeTime) {
 			this.urgeTime = urgeTime;
 		}
+
+		public Boolean getExcludeDraft() {
+			return isExcludeDraft;
+		}
+
+		public void setExcludeDraft(Boolean excludeDraft) {
+			isExcludeDraft = excludeDraft;
+		}
 	}
 
 	public static class Wo extends Task {

+ 16 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionManageListFilterPaging.java

@@ -141,6 +141,11 @@ class ActionManageListFilterPaging extends BaseAction {
 			p = cb.and(p, cb.lessThanOrEqualTo(root.get(Task_.urgeTime),
 					DateTools.getAdjustTimeDay(null, 0, -urgeTime, 0, 0)));
 		}
+		if(BooleanUtils.isTrue(wi.getExcludeDraft())){
+			p = cb.and(p, cb.or(cb.isFalse(root.get(Task_.first)),
+					cb.isNull(root.get(Task_.first)),
+					cb.equal(root.get(Task_.workCreateType), Business.WORK_CREATE_TYPE_ASSIGN)));
+		}
 		if (StringUtils.isNoneBlank(wi.getKey())) {
 			String key = StringTools.escapeSqlLikeKey(wi.getKey());
 			p = cb.and(p, cb.like(root.get(Task_.title), "%" + key + "%", StringTools.SQL_ESCAPE_CHAR));
@@ -160,6 +165,9 @@ class ActionManageListFilterPaging extends BaseAction {
 		@FieldDescribe("是否查找同版本流程待办:true(默认查找)|false")
 		private Boolean relateEditionProcess = true;
 
+		@FieldDescribe("是否排除草稿待办:false(默认不排除)|true")
+		private Boolean isExcludeDraft;
+
 		@FieldDescribe("开始时间yyyy-MM-dd HH:mm:ss")
 		private String startTime;
 
@@ -415,6 +423,14 @@ class ActionManageListFilterPaging extends BaseAction {
 		public void setJobList(List<String> jobList) {
 			this.jobList = jobList;
 		}
+
+		public Boolean getExcludeDraft() {
+			return isExcludeDraft;
+		}
+
+		public void setExcludeDraft(Boolean excludeDraft) {
+			isExcludeDraft = excludeDraft;
+		}
 	}
 
 	public static class Wo extends Task {

+ 8 - 3
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionManageListWithDateHour.java

@@ -27,7 +27,7 @@ class ActionManageListWithDateHour extends BaseAction {
 
 	private static Logger logger = LoggerFactory.getLogger(ActionManageListWithDateHour.class);
 
-	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String date, Integer hour)
+	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String date, Integer hour, Boolean isExcludeDraft)
 			throws Exception {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			Business business = new Business(emc);
@@ -37,7 +37,7 @@ class ActionManageListWithDateHour extends BaseAction {
 					Date startTime = DateTools.getAdjustTimeDay(DateTools.floorDate(DateTools.parse(date), 0),
 							0, hour, 0, 0);
 					Date endTime = DateTools.getAdjustTimeDay(startTime, 0, 1, 0, 0);
-					List<Task> os = this.list(business, startTime, endTime);
+					List<Task> os = this.list(business, startTime, endTime, isExcludeDraft);
 					List<Wo> wos = Wo.copier.copy(os);
 					result.setData(wos);
 					result.setCount((long)wos.size());
@@ -47,7 +47,7 @@ class ActionManageListWithDateHour extends BaseAction {
 		}
 	}
 
-	private List<Task> list(Business business, Date startTime, Date endTime) throws Exception {
+	private List<Task> list(Business business, Date startTime, Date endTime, Boolean isExcludeDraft) throws Exception {
 		EntityManager em = business.entityManagerContainer().get(Task.class);
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<Task> cq = cb.createQuery(Task.class);
@@ -60,6 +60,11 @@ class ActionManageListWithDateHour extends BaseAction {
 		if (endTime != null) {
 			p = cb.and(p, cb.lessThan(root.get(Task_.createTime), endTime));
 		}
+		if(BooleanUtils.isTrue(isExcludeDraft)){
+			p = cb.and(p, cb.or(cb.isFalse(root.get(Task_.first)),
+					cb.isNull(root.get(Task_.first)),
+					cb.equal(root.get(Task_.workCreateType), Business.WORK_CREATE_TYPE_ASSIGN)));
+		}
 
 		cq.select(root).where(p);
 		return em.createQuery(cq).getResultList();

+ 2 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionManageListWithPerson.java

@@ -16,7 +16,7 @@ import java.util.List;
 
 class ActionManageListWithPerson extends BaseAction {
 
-	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String credential)
+	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String credential, Boolean isExcludeDraft)
 			throws Exception {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			Business business = new Business(emc);
@@ -24,7 +24,7 @@ class ActionManageListWithPerson extends BaseAction {
 			if (BooleanUtils.isTrue(business.canManageApplication(effectivePerson, null))) {
 				String person = business.organization().person().get(credential);
 				if (StringUtils.isNotEmpty(person)) {
-					List<Task> taskList = business.task().listWithPersonObject(person);
+					List<Task> taskList = business.task().listWithPersonObject(person, isExcludeDraft);
 					List<Wo> wos = Wo.copier.copy(taskList);
 					result.setData(wos);
 					result.setCount((long)wos.size());

+ 9 - 7
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/TaskAction.java

@@ -982,15 +982,16 @@ public class TaskAction extends StandardJaxrsAction {
 
 	@JaxrsMethodDescribe(value = "获取指定用户当前所有待办.", action = ActionManageListWithPerson.class)
 	@GET
-	@Path("list/person/{person}/manage")
+	@Path("list/person/{person}/exclude/draft/{isExcludeDraft}/manage")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
 	public void manageListWithPerson(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("用户") @PathParam("person") String person) {
+			@JaxrsParameterDescribe("用户") @PathParam("person") String person,
+			@JaxrsParameterDescribe("是否排除草稿待办:false(不排除)|true") @PathParam("isExcludeDraft") Boolean isExcludeDraft) {
 		ActionResult<List<ActionManageListWithPerson.Wo>> result = new ActionResult<>();
 		EffectivePerson effectivePerson = this.effectivePerson(request);
 		try {
-			result = new ActionManageListWithPerson().execute(effectivePerson, person);
+			result = new ActionManageListWithPerson().execute(effectivePerson, person, isExcludeDraft);
 		} catch (Exception e) {
 			logger.error(e, effectivePerson, request, null);
 			result.error(e);
@@ -1000,17 +1001,18 @@ public class TaskAction extends StandardJaxrsAction {
 
 	@JaxrsMethodDescribe(value = "按创建时间查询指定时间段内当前所有待办.", action = ActionManageListWithDateHour.class)
 	@GET
-	@Path("list/date/{date}/hour/{hour}/manage")
+	@Path("list/date/{date}/hour/{hour}/exclude/draft/{isExcludeDraft}/manage")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
 	public void manageListWithDateHour(@Suspended final AsyncResponse asyncResponse,
 			@Context HttpServletRequest request,
 			@JaxrsParameterDescribe("日期(如:2020-09-11)") @PathParam("date") String date,
-			@JaxrsParameterDescribe("小时(0-23)") @PathParam("hour") Integer hour) {
+			@JaxrsParameterDescribe("小时(0-23)") @PathParam("hour") Integer hour,
+			@JaxrsParameterDescribe("是否排除草稿待办:false(不排除)|true") @PathParam("isExcludeDraft") Boolean isExcludeDraft) {
 		ActionResult<List<ActionManageListWithDateHour.Wo>> result = new ActionResult<>();
 		EffectivePerson effectivePerson = this.effectivePerson(request);
 		try {
-			result = new ActionManageListWithDateHour().execute(effectivePerson, date, hour);
+			result = new ActionManageListWithDateHour().execute(effectivePerson, date, hour, isExcludeDraft);
 		} catch (Exception e) {
 			logger.error(e, effectivePerson, request, null);
 			result.error(e);
@@ -1053,4 +1055,4 @@ public class TaskAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-}
+}

+ 17 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/V2Base.java

@@ -74,6 +74,9 @@ abstract class V2Base extends StandardJaxrsAction {
 		@FieldDescribe("是否查找同版本流程待办:true(默认查找)|false")
 		private Boolean relateEditionProcess = true;
 
+		@FieldDescribe("是否排除草稿待办:false(默认不排除)|true")
+		private Boolean isExcludeDraft;
+
 		@FieldDescribe("开始时间yyyy-MM-dd HH:mm:ss")
 		private String startTime;
 
@@ -163,6 +166,14 @@ abstract class V2Base extends StandardJaxrsAction {
 		public void setCreatorPersonList(List<String> creatorPersonList) {
 			this.creatorPersonList = creatorPersonList;
 		}
+
+		public Boolean getExcludeDraft() {
+			return isExcludeDraft;
+		}
+
+		public void setExcludeDraft(Boolean excludeDraft) {
+			isExcludeDraft = excludeDraft;
+		}
 	}
 
 	public static abstract class RelateFilterWi extends FilterWi {
@@ -398,7 +409,11 @@ abstract class V2Base extends StandardJaxrsAction {
 		if (ListTools.isNotEmpty(wi.getStartTimeMonthList())) {
 			p = cb.and(p, root.get(Task_.startTimeMonth).in(wi.getStartTimeMonthList()));
 		}
-
+		if(BooleanUtils.isTrue(wi.getExcludeDraft())){
+			p = cb.and(p, cb.or(cb.isFalse(root.get(Task_.first)),
+					cb.isNull(root.get(Task_.first)),
+					cb.equal(root.get(Task_.workCreateType),  Business.WORK_CREATE_TYPE_ASSIGN)));
+		}
 		String key = StringTools.escapeSqlLikeKey(wi.getKey());
 		if (StringUtils.isNotEmpty(key)) {
 			key = "%" + key + "%";
@@ -475,4 +490,4 @@ abstract class V2Base extends StandardJaxrsAction {
 		}
 	}
 
-}
+}