From a946f2a17d784e7107eb6fd310d4a6ebc62f70ef Mon Sep 17 00:00:00 2001 From: o2sword <171715986@qq.com> Date: Tue, 23 Mar 2021 16:38:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=87=AA=E5=BB=BA=E8=A1=A8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=A1=A8=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E5=85=81=E8=AE=B8=E6=8E=92=E5=BA=8F=E5=92=8C=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E9=9B=86=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jaxrs/table/ActionListRowSelect.java | 90 +++++++++++++++++++ .../surface/jaxrs/table/TableAction.java | 19 ++++ 2 files changed, 109 insertions(+) create mode 100644 o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/table/ActionListRowSelect.java diff --git a/o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/table/ActionListRowSelect.java b/o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/table/ActionListRowSelect.java new file mode 100644 index 0000000000..c28a6ec440 --- /dev/null +++ b/o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/table/ActionListRowSelect.java @@ -0,0 +1,90 @@ +package com.x.query.assemble.surface.jaxrs.table; + +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.entity.dynamic.DynamicEntity; +import com.x.base.core.project.annotation.FieldDescribe; +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; +import com.x.query.core.entity.schema.Table; +import org.apache.commons.lang3.StringUtils; + +import javax.persistence.EntityManager; +import java.util.List; + +class ActionListRowSelect extends BaseAction { + + ActionResult> execute(EffectivePerson effectivePerson, String tableFlag, JsonElement jsonElement) throws Exception { + try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { + ActionResult> result = new ActionResult<>(); + Wi wi = this.convertToWrapIn(jsonElement, Wi.class); + Table table = emc.flag(tableFlag, Table.class); + Business business = new Business(emc); + if (null == table) { + throw new ExceptionEntityNotExist(tableFlag, Table.class); + } + if (!business.editable(effectivePerson, table)) { + throw new ExceptionAccessDenied(effectivePerson, table); + } + DynamicEntity dynamicEntity = new DynamicEntity(table.getName()); + @SuppressWarnings("unchecked") + Class clz = (Class) Class.forName(dynamicEntity.className()); + EntityManager em = emc.get(clz); + String sql = "SELECT o FROM " + clz.getName() + " o"; + if (StringUtils.isNotBlank(wi.getWhere())) { + sql += " where " + wi.getWhere(); + } + if (StringUtils.isNotBlank(wi.getOrderBy())) { + sql += " order by " + wi.getOrderBy(); + } + List list; + if(wi.getSize()!=null && wi.getSize()>0){ + list = em.createQuery(sql).setMaxResults(wi.getSize()).getResultList(); + }else { + list = em.createQuery(sql).getResultList(); + } + result.setData(list); + return result; + } + } + + public static class Wi extends GsonPropertyObject { + @FieldDescribe("查询条件,格式为jpql语法,o.name='zhangsan',允许为空") + private String where; + @FieldDescribe("排序条件,格式为:o.updateTime desc,允许为空") + private String orderBy; + @FieldDescribe("返回结果集数量,允许为空") + private Integer size; + + public String getWhere() { + return where; + } + + public void setWhere(String where) { + this.where = where; + } + + public String getOrderBy() { + return orderBy; + } + + public void setOrderBy(String orderBy) { + this.orderBy = orderBy; + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + } + +} diff --git a/o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/table/TableAction.java b/o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/table/TableAction.java index 8712b89fbf..01b74eaf57 100644 --- a/o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/table/TableAction.java +++ b/o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/table/TableAction.java @@ -111,6 +111,25 @@ public class TableAction extends StandardJaxrsAction { asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result)); } + @JaxrsMethodDescribe(value = "根据条件获取表中的数据", action = ActionListRowSelect.class) + @POST + @Path("list/{tableFlag}/row/select") + @Produces(HttpMediaType.APPLICATION_JSON_UTF_8) + @Consumes(MediaType.APPLICATION_JSON) + public void listRowSelect(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, + @JaxrsParameterDescribe("表标识") @PathParam("tableFlag") String tableFlag, + JsonElement jsonElement) { + ActionResult> result = new ActionResult<>(); + EffectivePerson effectivePerson = this.effectivePerson(request); + try { + result = new ActionListRowSelect().execute(effectivePerson, tableFlag, jsonElement); + } catch (Exception e) { + logger.error(e, effectivePerson, request, jsonElement); + result.error(e); + } + asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result)); + } + @JaxrsMethodDescribe(value = "通过where 统计数量", action = ActionRowCountWhere.class) @GET @Path("{tableFlag}/row/count/where/{where}") -- GitLab