提交 4c6a968b 编写于 作者: O o2null

修复在删除work的过程中同时删除了record的错误.

上级 2e4f1342
package com.x.processplatform.assemble.designer; package com.x.processplatform.assemble.designer;
import com.x.processplatform.assemble.designer.element.factory.*;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import com.x.base.core.container.EntityManagerContainer; import com.x.base.core.container.EntityManagerContainer;
...@@ -12,6 +11,7 @@ import com.x.processplatform.assemble.designer.content.factory.DraftFactory; ...@@ -12,6 +11,7 @@ import com.x.processplatform.assemble.designer.content.factory.DraftFactory;
import com.x.processplatform.assemble.designer.content.factory.ItemFactory; 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.ReadCompletedFactory;
import com.x.processplatform.assemble.designer.content.factory.ReadFactory; import com.x.processplatform.assemble.designer.content.factory.ReadFactory;
import com.x.processplatform.assemble.designer.content.factory.RecordFactory;
import com.x.processplatform.assemble.designer.content.factory.ReviewFactory; 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.SerialNumberFactory;
import com.x.processplatform.assemble.designer.content.factory.TaskCompletedFactory; import com.x.processplatform.assemble.designer.content.factory.TaskCompletedFactory;
...@@ -19,6 +19,30 @@ import com.x.processplatform.assemble.designer.content.factory.TaskFactory; ...@@ -19,6 +19,30 @@ 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.WorkCompletedFactory;
import com.x.processplatform.assemble.designer.content.factory.WorkFactory; import com.x.processplatform.assemble.designer.content.factory.WorkFactory;
import com.x.processplatform.assemble.designer.content.factory.WorkLogFactory; 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;
import com.x.processplatform.assemble.designer.element.factory.ApplicationFactory;
import com.x.processplatform.assemble.designer.element.factory.BeginFactory;
import com.x.processplatform.assemble.designer.element.factory.CancelFactory;
import com.x.processplatform.assemble.designer.element.factory.ChoiceFactory;
import com.x.processplatform.assemble.designer.element.factory.DelayFactory;
import com.x.processplatform.assemble.designer.element.factory.EmbedFactory;
import com.x.processplatform.assemble.designer.element.factory.EndFactory;
import com.x.processplatform.assemble.designer.element.factory.FileFactory;
import com.x.processplatform.assemble.designer.element.factory.FormFactory;
import com.x.processplatform.assemble.designer.element.factory.FormFieldFactory;
import com.x.processplatform.assemble.designer.element.factory.InvokeFactory;
import com.x.processplatform.assemble.designer.element.factory.ManualFactory;
import com.x.processplatform.assemble.designer.element.factory.MergeFactory;
import com.x.processplatform.assemble.designer.element.factory.ParallelFactory;
import com.x.processplatform.assemble.designer.element.factory.ProcessFactory;
import com.x.processplatform.assemble.designer.element.factory.PublishFactory;
import com.x.processplatform.assemble.designer.element.factory.RouteFactory;
import com.x.processplatform.assemble.designer.element.factory.ScriptFactory;
import com.x.processplatform.assemble.designer.element.factory.ServiceFactory;
import com.x.processplatform.assemble.designer.element.factory.SplitFactory;
import com.x.processplatform.assemble.designer.element.factory.TemplateFormFactory;
import com.x.processplatform.core.entity.element.Application; import com.x.processplatform.core.entity.element.Application;
public class Business { public class Business {
...@@ -366,6 +390,15 @@ public class Business { ...@@ -366,6 +390,15 @@ public class Business {
return draft; return draft;
} }
private RecordFactory record;
public RecordFactory record() throws Exception {
if (null == this.record) {
this.record = new RecordFactory(this);
}
return record;
}
public boolean editable(EffectivePerson effectivePerson, Application application) throws Exception { public boolean editable(EffectivePerson effectivePerson, Application application) throws Exception {
boolean result = false; boolean result = false;
if (effectivePerson.isManager() || organization().person().hasRole(effectivePerson, if (effectivePerson.isManager() || organization().person().hasRole(effectivePerson,
......
package com.x.processplatform.assemble.designer.content.factory;
import java.util.List;
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 com.x.processplatform.assemble.designer.AbstractFactory;
import com.x.processplatform.assemble.designer.Business;
import com.x.processplatform.core.entity.content.Record;
import com.x.processplatform.core.entity.content.Record_;
public class RecordFactory extends AbstractFactory {
public RecordFactory(Business business) throws Exception {
super(business);
}
public List<String> listWithApplication(String id) throws Exception {
EntityManager em = this.entityManagerContainer().get(Record.class);
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<Record> root = cq.from(Record.class);
Predicate p = cb.equal(root.get(Record_.application), id);
cq.select(root.get(Record_.id)).where(p);
return em.createQuery(cq).getResultList();
}
public List<String> listWithApplicationWithCompleted(String id, Boolean completed) throws Exception {
EntityManager em = this.entityManagerContainer().get(Record.class);
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<Record> root = cq.from(Record.class);
Predicate p = cb.equal(root.get(Record_.application), id);
p = cb.and(p, cb.equal(root.get(Record_.completed), completed));
cq.select(root.get(Record_.id)).where(p);
return em.createQuery(cq).getResultList();
}
public List<String> listWithProcessWithCompleted(String id, Boolean completed) throws Exception {
EntityManager em = this.entityManagerContainer().get(Record.class);
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<Record> root = cq.from(Record.class);
Predicate p = cb.equal(root.get(Record_.process), id);
p = cb.and(p, cb.equal(root.get(Record_.completed), completed));
cq.select(root.get(Record_.id)).where(p);
return em.createQuery(cq).getResultList();
}
public List<String> listWithProcess(String id) throws Exception {
EntityManager em = this.entityManagerContainer().get(Record.class);
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<Record> root = cq.from(Record.class);
Predicate p = cb.equal(root.get(Record_.process), id);
cq.select(root.get(Record_.id)).where(p);
return em.createQuery(cq).getResultList();
}
}
\ No newline at end of file
...@@ -10,6 +10,8 @@ import javax.persistence.criteria.Root; ...@@ -10,6 +10,8 @@ import javax.persistence.criteria.Root;
import com.x.processplatform.assemble.designer.AbstractFactory; import com.x.processplatform.assemble.designer.AbstractFactory;
import com.x.processplatform.assemble.designer.Business; import com.x.processplatform.assemble.designer.Business;
import com.x.processplatform.core.entity.content.Record;
import com.x.processplatform.core.entity.content.Record_;
import com.x.processplatform.core.entity.content.WorkLog; import com.x.processplatform.core.entity.content.WorkLog;
import com.x.processplatform.core.entity.content.WorkLog_; import com.x.processplatform.core.entity.content.WorkLog_;
...@@ -60,4 +62,5 @@ public class WorkLogFactory extends AbstractFactory { ...@@ -60,4 +62,5 @@ public class WorkLogFactory extends AbstractFactory {
cq.select(root.get(WorkLog_.id)).where(p); cq.select(root.get(WorkLog_.id)).where(p);
return em.createQuery(cq).getResultList(); return em.createQuery(cq).getResultList();
} }
} }
\ No newline at end of file
...@@ -85,7 +85,7 @@ class ActionDelete extends BaseAction { ...@@ -85,7 +85,7 @@ class ActionDelete extends BaseAction {
this.deleteAttachment(business, application, onlyRemoveNotCompleted); this.deleteAttachment(business, application, onlyRemoveNotCompleted);
this.deleteDataItem(business, application, onlyRemoveNotCompleted); this.deleteDataItem(business, application, onlyRemoveNotCompleted);
this.deleteSerialNumber(business, application); this.deleteSerialNumber(business, application);
this.deleteRecord(business, application); this.deleteRecord(business, application, onlyRemoveNotCompleted);
this.deleteDocumentVersion(business, application); this.deleteDocumentVersion(business, application);
this.deleteWork(business, application); this.deleteWork(business, application);
if (!onlyRemoveNotCompleted) { if (!onlyRemoveNotCompleted) {
...@@ -404,9 +404,11 @@ class ActionDelete extends BaseAction { ...@@ -404,9 +404,11 @@ class ActionDelete extends BaseAction {
this.deleteBatch(business.entityManagerContainer(), Work.class, ids); this.deleteBatch(business.entityManagerContainer(), Work.class, ids);
} }
private void deleteRecord(Business business, Application application) throws Exception { private void deleteRecord(Business business, Application application, boolean onlyRemoveNotCompleted)
List<String> ids = business.entityManagerContainer().idsEqual(Record.class, Record.application_FIELDNAME, throws Exception {
application.getId()); List<String> ids = onlyRemoveNotCompleted
? business.record().listWithApplicationWithCompleted(application.getId(), false)
: business.record().listWithApplication(application.getId());
this.deleteBatch(business.entityManagerContainer(), Record.class, ids); this.deleteBatch(business.entityManagerContainer(), Record.class, ids);
} }
......
...@@ -56,7 +56,7 @@ class ActionDelete extends BaseAction { ...@@ -56,7 +56,7 @@ class ActionDelete extends BaseAction {
this.deleteAttachment(business, process, onlyRemoveNotCompleted); this.deleteAttachment(business, process, onlyRemoveNotCompleted);
this.deleteItem(business, process, onlyRemoveNotCompleted); this.deleteItem(business, process, onlyRemoveNotCompleted);
this.deleteSerialNumber(business, process); this.deleteSerialNumber(business, process);
this.deleteRecord(business, process); this.deleteRecord(business, process, onlyRemoveNotCompleted);
this.deleteDocumentVersion(business, process); this.deleteDocumentVersion(business, process);
this.deleteWork(business, process); this.deleteWork(business, process);
if (!onlyRemoveNotCompleted) { if (!onlyRemoveNotCompleted) {
......
...@@ -35,12 +35,13 @@ class ActionDeleteEdition extends BaseAction { ...@@ -35,12 +35,13 @@ class ActionDeleteEdition extends BaseAction {
application.getName(), application.getId()); application.getName(), application.getId());
} }
List<Process> list = new ArrayList<>(); List<Process> list = new ArrayList<>();
if(StringUtils.isNotEmpty(editionProcess.getEdition())){ if (StringUtils.isNotEmpty(editionProcess.getEdition())) {
list.addAll(business.process().listProcessEditionObject(editionProcess.getApplication(), editionProcess.getEdition())); list.addAll(business.process().listProcessEditionObject(editionProcess.getApplication(),
}else{ editionProcess.getEdition()));
} else {
list.add(editionProcess); list.add(editionProcess);
} }
for(Process process : list) { for (Process process : list) {
/* 先删除content内容 */ /* 先删除content内容 */
this.deleteDraft(business, process); this.deleteDraft(business, process);
this.deleteTask(business, process); this.deleteTask(business, process);
...@@ -51,7 +52,7 @@ class ActionDeleteEdition extends BaseAction { ...@@ -51,7 +52,7 @@ class ActionDeleteEdition extends BaseAction {
this.deleteAttachment(business, process, onlyRemoveNotCompleted); this.deleteAttachment(business, process, onlyRemoveNotCompleted);
this.deleteItem(business, process, onlyRemoveNotCompleted); this.deleteItem(business, process, onlyRemoveNotCompleted);
this.deleteSerialNumber(business, process); this.deleteSerialNumber(business, process);
this.deleteRecord(business, process); this.deleteRecord(business, process, onlyRemoveNotCompleted);
this.deleteDocumentVersion(business, process); this.deleteDocumentVersion(business, process);
this.deleteWork(business, process); this.deleteWork(business, process);
if (!onlyRemoveNotCompleted) { if (!onlyRemoveNotCompleted) {
...@@ -76,7 +77,7 @@ class ActionDeleteEdition extends BaseAction { ...@@ -76,7 +77,7 @@ class ActionDeleteEdition extends BaseAction {
emc.beginTransaction(Service.class); emc.beginTransaction(Service.class);
emc.beginTransaction(Split.class); emc.beginTransaction(Split.class);
emc.beginTransaction(Route.class); emc.beginTransaction(Route.class);
for(Process process : list) { for (Process process : list) {
this.deleteAgent(business, process); this.deleteAgent(business, process);
this.deleteBegin(business, process); this.deleteBegin(business, process);
this.deleteCancel(business, process); this.deleteCancel(business, process);
......
...@@ -136,9 +136,10 @@ abstract class BaseAction extends StandardJaxrsAction { ...@@ -136,9 +136,10 @@ abstract class BaseAction extends StandardJaxrsAction {
this.deleteBatch(business.entityManagerContainer(), Work.class, ids); this.deleteBatch(business.entityManagerContainer(), Work.class, ids);
} }
void deleteRecord(Business business, Process process) throws Exception { void deleteRecord(Business business, Process process, boolean onlyRemoveNotCompleted) throws Exception {
List<String> ids = business.entityManagerContainer().idsEqual(Record.class, Record.process_FIELDNAME, List<String> ids = onlyRemoveNotCompleted
process.getId()); ? business.record().listWithProcessWithCompleted(process.getId(), false)
: business.record().listWithProcess(process.getId());
this.deleteBatch(business.entityManagerContainer(), Record.class, ids); this.deleteBatch(business.entityManagerContainer(), Record.class, ids);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册