diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionChangeOrderNumber.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionChangeOrderNumber.java index d811a5ca566af59da157965edb8bdbb5c203d14a..1085efd8f99c962baf40456911dfec8f2292cb71 100644 --- a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionChangeOrderNumber.java +++ b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionChangeOrderNumber.java @@ -35,7 +35,7 @@ class ActionChangeOrderNumber extends BaseAction { if (null == attachment) { throw new ExceptionEntityNotExist(id, Attachment.class); } - if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workId)) { + if (!business.editable(effectivePerson, attachment.getJob())) { throw new ExceptionAccessDenied(effectivePerson); } List identities = business.organization().identity().listWithPerson(effectivePerson); diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionUploadWithUrl.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionUploadWithUrl.java index 29e6ffeece3e5f150965fff00833728298ba3256..98371181ecd85215fec96b495cf46a6803420329 100644 --- a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionUploadWithUrl.java +++ b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionUploadWithUrl.java @@ -56,9 +56,6 @@ class ActionUploadWithUrl extends BaseAction { if (StringUtils.isEmpty(wi.getSite())) { throw new ExceptionEntityFieldEmpty(Attachment.class, wi.getSite()); } - if (!business.readableWithWorkOrWorkCompleted(effectivePerson, wi.getWorkId())) { - throw new ExceptionAccessDenied(effectivePerson, wi.getWorkId()); - } String person = effectivePerson.getDistinguishedName(); if (StringUtils.isNotEmpty(wi.getPerson()) && business.canManageApplication(effectivePerson, null)) { Person p = business.organization().person().getObject(wi.getPerson()); @@ -89,6 +86,9 @@ class ActionUploadWithUrl extends BaseAction { if (attachment == null) { throw new ExceptionEntityNotExist(wi.getWorkId()); } + if (!business.editable(effectivePerson, attachment.getJob())) { + throw new ExceptionAccessDenied(effectivePerson, wi.getWorkId()); + } byte[] bytes = CipherConnectionAction.getBinary(false, wi.getFileUrl()); if (bytes == null || bytes.length == 0) { throw new IllegalStateException("can not down file from url."); diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionUploadWithWorkCompleted.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionUploadWithWorkCompleted.java index dc45d6514aff4aa9796ea213e7ca491cfcef5fb9..38a03e3b41ecfd0863a0b8bcf8348b1b27d48dbe 100644 --- a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionUploadWithWorkCompleted.java +++ b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionUploadWithWorkCompleted.java @@ -51,10 +51,7 @@ class ActionUploadWithWorkCompleted extends BaseAction { if (ends.isEmpty()) { throw new ExceptionEndNotExist(process.getId()); } - if ((effectivePerson.isNotManager()) - && (!business.organization().person().hasRole(effectivePerson, - OrganizationDefinition.ProcessPlatformManager, OrganizationDefinition.Manager)) - && effectivePerson.isNotPerson(application.getControllerList())) { + if (!business.canManageApplicationOrProcess(effectivePerson, application, process)) { throw new ExceptionAccessDenied(effectivePerson); } if (StringUtils.isEmpty(fileName)) { diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionUploadWorkInfo.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionUploadWorkInfo.java index 3a0b9543800ffaf39e0b47ace1d62e7c30145ae6..3c3492f92b8b65d85d9919c50cb9fd0159cd0592 100644 --- a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionUploadWorkInfo.java +++ b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionUploadWorkInfo.java @@ -75,7 +75,7 @@ class ActionUploadWorkInfo extends BaseAction { workHtml = "" + workHtml + ""; } } - String id = saveHtml(workId, flag, workHtml, effectivePerson.getDistinguishedName(), title, + String id = saveHtml(flag, workHtml, effectivePerson.getDistinguishedName(), title, wi.getPageWidth(), business); Wo wo = new Wo(); wo.setId(id); @@ -87,7 +87,7 @@ class ActionUploadWorkInfo extends BaseAction { public static class Wo extends WoId { } - private String saveHtml(String workId, String flag, String workHtml, String person, String title, Float pageWidth, + private String saveHtml(String flag, String workHtml, String person, String title, Float pageWidth, Business business) { try { String name = ""; diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/BaseAction.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/BaseAction.java index 89bb6192bb5be9d148788da3acd8ffb2376b3b00..d347ede91081f7aaeba56bf119d5208a41107cd5 100644 --- a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/BaseAction.java +++ b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/BaseAction.java @@ -10,6 +10,8 @@ import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; +import com.x.processplatform.core.entity.element.Application; +import com.x.processplatform.core.entity.element.Process; import org.apache.commons.collections4.ListUtils; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.BooleanUtils; @@ -258,18 +260,16 @@ abstract class BaseAction extends StandardJaxrsAction { public boolean control(Attachment attachment, EffectivePerson effectivePerson, List identities, List units, Business business) throws Exception { boolean value = false; - if (BooleanUtils.isTrue(business.canManageApplication(effectivePerson, null))) { - value = true; - } else if (effectivePerson.isPerson(attachment.getPerson())) { + if (effectivePerson.isPerson(attachment.getPerson())) { value = true; } else if (ListTools.isEmpty(attachment.getControllerUnitList()) && ListTools.isEmpty(attachment.getControllerIdentityList())) { value = true; - } else { - if (ListTools.containsAny(identities, attachment.getControllerIdentityList()) + } else if (ListTools.containsAny(identities, attachment.getControllerIdentityList()) || ListTools.containsAny(units, attachment.getControllerUnitList())) { value = true; - } + } else if (BooleanUtils.isTrue(business.canManageApplicationOrProcess(effectivePerson, attachment.getApplication(), attachment.getProcess()))) { + value = true; } return value; } @@ -302,7 +302,7 @@ abstract class BaseAction extends StandardJaxrsAction { /** * 判断附件是否符合大小、文件类型的约束 - * + * * @param size * @param fileName * @param callback diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/serialnumber/ActionCreate.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/serialnumber/ActionCreate.java new file mode 100644 index 0000000000000000000000000000000000000000..aae52d7233db374d7d5c7c76e6bb053edf99f249 --- /dev/null +++ b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/serialnumber/ActionCreate.java @@ -0,0 +1,66 @@ +package com.x.processplatform.assemble.surface.jaxrs.serialnumber; + +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.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.exception.ExceptionFieldEmpty; +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.processplatform.assemble.surface.Business; +import com.x.processplatform.core.entity.content.SerialNumber; +import com.x.processplatform.core.entity.element.Application; +import com.x.processplatform.core.entity.element.Process; +import io.swagger.v3.oas.annotations.media.Schema; +import org.eclipse.jetty.util.StringUtil; + +class ActionCreate extends BaseAction { + ActionResult execute(EffectivePerson effectivePerson, JsonElement jsonElement) throws Exception { + ActionResult result = new ActionResult<>(); + Wi wi = this.convertToWrapIn(jsonElement, Wi.class); + try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { + Business business = new Business(emc); + if(StringUtil.isBlank(wi.getProcess())){ + throw new ExceptionFieldEmpty(SerialNumber.process_FIELDNAME); + } + if(wi.getSerial() == null){ + throw new ExceptionFieldEmpty(SerialNumber.serial_FIELDNAME); + } + Process process = business.process().pick(wi.getProcess()); + if (null == process) { + throw new ExceptionEntityNotExist(wi.getProcess()); + } + Application application = business.application().pick(process.getApplication()); + if (!business.canManageApplicationOrProcess(effectivePerson, application, process)) { + throw new ExceptionAccessDenied(effectivePerson); + } + SerialNumber serialNumber = Wi.copier.copy(wi); + serialNumber.setApplication(process.getApplication()); + emc.beginTransaction(SerialNumber.class); + emc.persist(serialNumber, CheckPersistType.all); + emc.commit(); + Wo wo = new Wo(); + wo.setId(serialNumber.getId()); + result.setData(wo); + } + return result; + } + + @Schema(name = "com.x.processplatform.assemble.surface.jaxrs.serialnumber.ActionCreate$Wi") + public static class Wi extends SerialNumber { + + private static final long serialVersionUID = 4466662676168979509L; + static WrapCopier copier = WrapCopierFactory.wi(Wi.class, SerialNumber.class, null, + JpaObject.FieldsUnmodify); + } + + @Schema(name = "com.x.processplatform.assemble.surface.jaxrs.serialnumber.ActionCreate$Wo") + public static class Wo extends WoId { + } +} diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/serialnumber/SerialNumberAction.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/serialnumber/SerialNumberAction.java index cf1c09f1938d04a96b683a8e5dbb4e89690405f2..cbb79cba49448f7381554cc620bd1f15c4e800a5 100644 --- a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/serialnumber/SerialNumberAction.java +++ b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/serialnumber/SerialNumberAction.java @@ -72,6 +72,23 @@ public class SerialNumberAction extends StandardJaxrsAction { asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result)); } + @JaxrsMethodDescribe(value = "创建SerialNumber内容.", action = ActionCreate.class) + @POST + @Produces(HttpMediaType.APPLICATION_JSON_UTF_8) + @Consumes(MediaType.APPLICATION_JSON) + public void create(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, + JsonElement jsonElement) { + ActionResult result = new ActionResult<>(); + EffectivePerson effectivePerson = this.effectivePerson(request); + try { + result = new ActionCreate().execute(effectivePerson, jsonElement); + } catch (Exception e) { + logger.error(e, effectivePerson, request, null); + result.error(e); + } + asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result, jsonElement)); + } + @JaxrsMethodDescribe(value = "更新SerialNumber内容.", action = ActionUpdate.class) @PUT @Path("{id}")