diff --git a/o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/table/ActionRowInsertOne.java b/o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/table/ActionRowInsertOne.java new file mode 100644 index 0000000000000000000000000000000000000000..02d7b4bc64def1cd83505ae01a6f586556132b76 --- /dev/null +++ b/o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/table/ActionRowInsertOne.java @@ -0,0 +1,49 @@ +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.annotation.CheckPersistType; +import com.x.base.core.entity.dynamic.DynamicEntity; +import com.x.base.core.project.exception.ExceptionAccessDenied; +import com.x.base.core.project.exception.ExceptionEntityNotExist; +import com.x.base.core.project.http.ActionResult; +import com.x.base.core.project.http.EffectivePerson; +import com.x.base.core.project.jaxrs.WoId; +import com.x.query.assemble.surface.Business; +import com.x.query.core.entity.schema.Table; + +class ActionRowInsertOne extends BaseAction { + ActionResult execute(EffectivePerson effectivePerson, String tableFlag, JsonElement jsonElement) + throws Exception { + try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { + ActionResult result = new ActionResult<>(); + 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 cls = (Class) Class.forName(dynamicEntity.className()); + + JpaObject o = gson.fromJson(jsonElement, cls); + emc.beginTransaction(cls); + emc.persist(o, CheckPersistType.all); + emc.commit(); + Wo wo = new Wo(); + wo.setId(o.getId()); + result.setData(wo); + return result; + } + } + + public static class Wo extends WoId { + + } + +} 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 01b74eaf57bb44520723897a24aa9a054aed2ad0..1d4daa498b27fbd7acc2a2787a689f9767a304df 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 @@ -167,6 +167,24 @@ public class TableAction extends StandardJaxrsAction { asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result)); } + @JaxrsMethodDescribe(value = "指定表中插入一行数据.", action = ActionRowInsertOne.class) + @POST + @Path("{tableFlag}/row/one") + @Produces(HttpMediaType.APPLICATION_JSON_UTF_8) + @Consumes(MediaType.APPLICATION_JSON) + public void rowInsertOne(@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 ActionRowInsertOne().execute(effectivePerson, tableFlag, jsonElement); + } catch (Exception e) { + logger.error(e, effectivePerson, request, jsonElement); + result.error(e); + } + asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result)); + } + @JaxrsMethodDescribe(value = "更新指定表中指定行数据.", action = ActionRowUpdate.class) @PUT @Path("{tableFlag}/row/{id}")