Răsfoiți Sursa

Merge branch 'fix/删除流程未删除草稿' into 'develop'

Merge of fix/[流程平台]删除流程未删除草稿 to develop

See merge request o2oa/o2oa!930
o2null 5 ani în urmă
părinte
comite
ddaa103ff7

+ 11 - 11
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/Business.java

@@ -1,22 +1,13 @@
 package com.x.processplatform.assemble.designer;
 
+import com.x.processplatform.assemble.designer.content.factory.*;
+import com.x.processplatform.core.entity.content.Draft;
 import org.apache.commons.lang3.StringUtils;
 
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.organization.OrganizationDefinition;
 import com.x.organization.core.express.Organization;
-import com.x.processplatform.assemble.designer.content.factory.AttachmentFactory;
-import com.x.processplatform.assemble.designer.content.factory.ItemFactory;
-import com.x.processplatform.assemble.designer.content.factory.ReadCompletedFactory;
-import com.x.processplatform.assemble.designer.content.factory.ReadFactory;
-import com.x.processplatform.assemble.designer.content.factory.ReviewFactory;
-import com.x.processplatform.assemble.designer.content.factory.SerialNumberFactory;
-import com.x.processplatform.assemble.designer.content.factory.TaskCompletedFactory;
-import com.x.processplatform.assemble.designer.content.factory.TaskFactory;
-import com.x.processplatform.assemble.designer.content.factory.WorkCompletedFactory;
-import com.x.processplatform.assemble.designer.content.factory.WorkFactory;
-import com.x.processplatform.assemble.designer.content.factory.WorkLogFactory;
 import com.x.processplatform.assemble.designer.element.factory.AgentFactory;
 import com.x.processplatform.assemble.designer.element.factory.ApplicationDictFactory;
 import com.x.processplatform.assemble.designer.element.factory.ApplicationDictItemFactory;
@@ -399,6 +390,15 @@ public class Business {
 		return file;
 	}
 
+	private DraftFactory draft;
+
+	public DraftFactory draft() throws Exception {
+		if (null == this.draft) {
+			this.draft = new DraftFactory(this);
+		}
+		return draft;
+	}
+
 	public boolean editable(EffectivePerson effectivePerson, Application application) throws Exception {
 		boolean result = false;
 		if (effectivePerson.isManager() || organization().person().hasRole(effectivePerson,

+ 40 - 0
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/content/factory/DraftFactory.java

@@ -0,0 +1,40 @@
+package com.x.processplatform.assemble.designer.content.factory;
+
+import com.x.processplatform.assemble.designer.AbstractFactory;
+import com.x.processplatform.assemble.designer.Business;
+import com.x.processplatform.core.entity.content.Draft;
+import com.x.processplatform.core.entity.content.Draft_;
+
+import javax.persistence.EntityManager;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.List;
+
+public class DraftFactory extends AbstractFactory {
+
+	public DraftFactory(Business business) throws Exception {
+		super(business);
+	}
+
+	public List<String> listWithApplication(String id) throws Exception {
+		EntityManager em = this.entityManagerContainer().get(Draft.class);
+		CriteriaBuilder cb = em.getCriteriaBuilder();
+		CriteriaQuery<String> cq = cb.createQuery(String.class);
+		Root<Draft> root = cq.from(Draft.class);
+		Predicate p = cb.equal(root.get(Draft_.application), id);
+		cq.select(root.get(Draft_.id)).where(p);
+		return em.createQuery(cq).getResultList();
+	}
+
+	public List<String> listWithProcess(String id) throws Exception {
+		EntityManager em = this.entityManagerContainer().get(Draft.class);
+		CriteriaBuilder cb = em.getCriteriaBuilder();
+		CriteriaQuery<String> cq = cb.createQuery(String.class);
+		Root<Draft> root = cq.from(Draft.class);
+		Predicate p = cb.equal(root.get(Draft_.process), id);
+		cq.select(root.get(Draft_.id)).where(p);
+		return em.createQuery(cq).getResultList();
+	}
+}

+ 1 - 0
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/jaxrs/process/ActionDelete.java

@@ -55,6 +55,7 @@ class ActionDelete extends BaseAction {
 				}
 			}
 			/* 先删除content内容 */
+			this.delete_draft(business, process);
 			this.delete_task(business, process);
 			this.delete_taskCompleted(business, process, onlyRemoveNotCompleted);
 			this.delete_read(business, process);

+ 1 - 0
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/jaxrs/process/ActionDeleteEdition.java

@@ -41,6 +41,7 @@ class ActionDeleteEdition extends BaseAction {
 			}
 			for(Process process : list) {
 				/* 先删除content内容 */
+				this.delete_draft(business, process);
 				this.delete_task(business, process);
 				this.delete_taskCompleted(business, process, onlyRemoveNotCompleted);
 				this.delete_read(business, process);

+ 6 - 12
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/jaxrs/process/BaseAction.java

@@ -5,6 +5,7 @@ import java.util.List;
 
 import javax.persistence.EntityManager;
 
+import com.x.processplatform.core.entity.content.*;
 import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.commons.collections4.ListUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -18,18 +19,6 @@ import com.x.base.core.project.jaxrs.StandardJaxrsAction;
 import com.x.base.core.project.tools.ListTools;
 import com.x.processplatform.assemble.designer.Business;
 import com.x.processplatform.assemble.designer.ThisApplication;
-import com.x.processplatform.core.entity.content.Attachment;
-import com.x.processplatform.core.entity.content.DocumentVersion;
-import com.x.processplatform.core.entity.content.Read;
-import com.x.processplatform.core.entity.content.ReadCompleted;
-import com.x.processplatform.core.entity.content.Record;
-import com.x.processplatform.core.entity.content.Review;
-import com.x.processplatform.core.entity.content.SerialNumber;
-import com.x.processplatform.core.entity.content.Task;
-import com.x.processplatform.core.entity.content.TaskCompleted;
-import com.x.processplatform.core.entity.content.Work;
-import com.x.processplatform.core.entity.content.WorkCompleted;
-import com.x.processplatform.core.entity.content.WorkLog;
 import com.x.processplatform.core.entity.element.Agent;
 import com.x.processplatform.core.entity.element.Begin;
 import com.x.processplatform.core.entity.element.Cancel;
@@ -80,6 +69,11 @@ abstract class BaseAction extends StandardJaxrsAction {
 		}
 	}
 
+	void delete_draft(Business business, Process process) throws Exception {
+		List<String> ids = business.draft().listWithProcess(process.getId());
+		this.delete_batch(business.entityManagerContainer(), Draft.class, ids);
+	}
+
 	void delete_task(Business business, Process process) throws Exception {
 		List<String> ids = business.task().listWithProcess(process.getId());
 		this.delete_batch(business.entityManagerContainer(), Task.class, ids);