Jelajahi Sumber

Merge branch 'fix/数据中心优化修改' into 'wrdp'

[数据中心]查询优化修改

See merge request o2oa/o2oa!1954
o2null 5 tahun lalu
induk
melakukan
cd0b68dfc3

+ 1 - 1
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/StatementAction.java

@@ -145,7 +145,7 @@ public class StatementAction extends StandardJaxrsAction {
 
 	@JaxrsMethodDescribe(value = "执行语句V2,可以同时执行查询结果及查询总数.", action = ActionExecuteV2.class)
 	@POST
-	@Path("{flag}/execute/mode/{mode}page/{page}/size/{size}")
+	@Path("{flag}/execute/mode/{mode}/page/{page}/size/{size}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
 	public void executeV2(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,

+ 31 - 3
o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/statement/ActionListWithQuery.java

@@ -1,12 +1,15 @@
 package com.x.query.assemble.surface.jaxrs.statement;
 
+import com.google.gson.JsonElement;
 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.annotation.FieldDescribe;
 import com.x.base.core.project.bean.WrapCopier;
 import com.x.base.core.project.bean.WrapCopierFactory;
 import com.x.base.core.project.exception.ExceptionAccessDenied;
 import com.x.base.core.project.exception.ExceptionEntityNotExist;
+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.query.assemble.surface.Business;
@@ -19,10 +22,11 @@ import java.util.ArrayList;
 import java.util.List;
 
 class ActionListWithQuery extends BaseAction {
-	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String queryFlag, Boolean justSelect, Boolean hasView) throws Exception {
+	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String queryFlag, JsonElement jsonElement) throws Exception {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			ActionResult<List<Wo>> result = new ActionResult<>();
 			Business business = new Business(emc);
+			Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
 			Query query = emc.flag(queryFlag, Query.class);
 			if (null == query) {
 				throw new ExceptionEntityNotExist(queryFlag);
@@ -34,10 +38,10 @@ class ActionListWithQuery extends BaseAction {
 			for (String id : emc.idsEqual(Statement.class, Statement.query_FIELDNAME, query.getId())) {
 				Statement o = business.pick(id, Statement.class);
 				if (null != o) {
-					if(BooleanUtils.isTrue(hasView) && StringUtils.isBlank(o.getView())){
+					if(BooleanUtils.isTrue(wi.getHasView()) && StringUtils.isBlank(o.getView())){
 						continue;
 					}
-					if(BooleanUtils.isTrue(justSelect) && !Statement.TYPE_SELECT.equals(o.getType())){
+					if(BooleanUtils.isTrue(wi.getJustSelect()) && !Statement.TYPE_SELECT.equals(o.getType())){
 						continue;
 					}
 					if (business.readable(effectivePerson, o)) {
@@ -50,6 +54,30 @@ class ActionListWithQuery extends BaseAction {
 		}
 	}
 
+	public static class Wi extends GsonPropertyObject{
+
+		@FieldDescribe("是否只查询select语句.")
+		private Boolean justSelect;
+		@FieldDescribe("是否只查询含有视图的语句.")
+		private Boolean hasView;
+
+		public Boolean getJustSelect() {
+			return justSelect;
+		}
+
+		public void setJustSelect(Boolean justSelect) {
+			this.justSelect = justSelect;
+		}
+
+		public Boolean getHasView() {
+			return hasView;
+		}
+
+		public void setHasView(Boolean hasView) {
+			this.hasView = hasView;
+		}
+	}
+
 	public static class Wo extends Statement {
 
 		private static final long serialVersionUID = -5755898083219447939L;

+ 5 - 7
o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/statement/StatementAction.java

@@ -48,20 +48,18 @@ public class StatementAction extends StandardJaxrsAction {
 	}
 
 	@JaxrsMethodDescribe(value = "根据查询列示语句对象.", action = ActionListWithQuery.class)
-	@GET
+	@POST
 	@Path("list/query/{queryFlag}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
 	public void listWithQuery(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-							  @JaxrsParameterDescribe("查询标识") @PathParam("queryFlag") String queryFlag,
-							  @JaxrsParameterDescribe("是否只查询select语句") @QueryParam("justSelect") Boolean justSelect,
-							  @JaxrsParameterDescribe("是否只查询含有视图的语句") @QueryParam("hasView") Boolean hasView) {
+							  @JaxrsParameterDescribe("查询标识") @PathParam("queryFlag") String queryFlag, JsonElement jsonElement) {
 		ActionResult<List<ActionListWithQuery.Wo>> result = new ActionResult<>();
 		EffectivePerson effectivePerson = this.effectivePerson(request);
 		try {
-			result = new ActionListWithQuery().execute(effectivePerson, queryFlag, justSelect, hasView);
+			result = new ActionListWithQuery().execute(effectivePerson, queryFlag, jsonElement);
 		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
+			logger.error(e, effectivePerson, request, jsonElement);
 			result.error(e);
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
@@ -87,7 +85,7 @@ public class StatementAction extends StandardJaxrsAction {
 
 	@JaxrsMethodDescribe(value = "执行语句V2,可以同时执行查询结果及查询总数.", action = ActionExecuteV2.class)
 	@POST
-	@Path("{flag}/execute/mode/{mode}page/{page}/size/{size}")
+	@Path("{flag}/execute/mode/{mode}/page/{page}/size/{size}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
 	public void executeV2(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,