|
|
@@ -48,62 +48,108 @@ class V2Reroute extends BaseAction {
|
|
|
}
|
|
|
job = work.getJob();
|
|
|
}
|
|
|
- Callable<ActionResult<Wo>> callable = new Callable<ActionResult<Wo>>() {
|
|
|
- public ActionResult<Wo> call() throws Exception {
|
|
|
- ActionResult<Wo> result = new ActionResult<>();
|
|
|
- Work work;
|
|
|
- try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
|
|
|
- Business business = new Business(emc);
|
|
|
- work = emc.find(id, Work.class);
|
|
|
- if (null == work) {
|
|
|
- throw new ExceptionEntityNotExist(id, Work.class);
|
|
|
- }
|
|
|
- Activity activity = business.element().getActivity(wi.getActivity());
|
|
|
- if (!StringUtils.equals(work.getProcess(), activity.getProcess())) {
|
|
|
- throw new ExceptionProcessNotMatch();
|
|
|
- }
|
|
|
- emc.beginTransaction(Work.class);
|
|
|
- emc.beginTransaction(Task.class);
|
|
|
- emc.beginTransaction(WorkLog.class);
|
|
|
- /** 重新设置表单 */
|
|
|
- setForm(business, work, activity);
|
|
|
- work.setDestinationActivity(activity.getId());
|
|
|
- work.setDestinationActivityType(activity.getActivityType());
|
|
|
- work.setDestinationRoute("");
|
|
|
- work.setDestinationRouteName("");
|
|
|
- work.getProperties().setManualForceTaskIdentityList(new ArrayList<String>());
|
|
|
- if (ListTools.isNotEmpty(wi.getManualForceTaskIdentityList())) {
|
|
|
- work.getProperties().setManualForceTaskIdentityList(wi.getManualForceTaskIdentityList());
|
|
|
- }
|
|
|
- removeTask(business, work);
|
|
|
- if (BooleanUtils.isTrue(wi.getMergeWork())) {
|
|
|
- /* 合并工作 */
|
|
|
- work.setSplitting(false);
|
|
|
- work.setSplitToken("");
|
|
|
- work.getSplitTokenList().clear();
|
|
|
- work.setSplitValue("");
|
|
|
- removeOtherWork(business, work);
|
|
|
- removeOtherWorkLog(business, work);
|
|
|
- }
|
|
|
- emc.check(work, CheckPersistType.all);
|
|
|
- emc.commit();
|
|
|
- }
|
|
|
|
|
|
- Wo wo = new Wo();
|
|
|
- wo.setValue(true);
|
|
|
- result.setData(wo);
|
|
|
- return result;
|
|
|
+ Callable<ActionResult<Wo>> callable = () -> {
|
|
|
+ ActionResult<Wo> result = new ActionResult<>();
|
|
|
+ Work work;
|
|
|
+ try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
|
|
|
+ Business business = new Business(emc);
|
|
|
+ work = emc.find(id, Work.class);
|
|
|
+ if (null == work) {
|
|
|
+ throw new ExceptionEntityNotExist(id, Work.class);
|
|
|
+ }
|
|
|
+ Activity activity = business.element().getActivity(wi.getActivity());
|
|
|
+ if (!StringUtils.equals(work.getProcess(), activity.getProcess())) {
|
|
|
+ throw new ExceptionProcessNotMatch();
|
|
|
+ }
|
|
|
+ emc.beginTransaction(Work.class);
|
|
|
+ emc.beginTransaction(Task.class);
|
|
|
+ emc.beginTransaction(WorkLog.class);
|
|
|
+ /** 重新设置表单 */
|
|
|
+ setForm(business, work, activity);
|
|
|
+ work.setDestinationActivity(activity.getId());
|
|
|
+ work.setDestinationActivityType(activity.getActivityType());
|
|
|
+ work.setDestinationRoute("");
|
|
|
+ work.setDestinationRouteName("");
|
|
|
+ work.getProperties().setManualForceTaskIdentityList(new ArrayList<String>());
|
|
|
+ if (ListTools.isNotEmpty(wi.getManualForceTaskIdentityList())) {
|
|
|
+ work.getProperties().setManualForceTaskIdentityList(wi.getManualForceTaskIdentityList());
|
|
|
+ }
|
|
|
+ removeTask(business, work);
|
|
|
+ if (BooleanUtils.isTrue(wi.getMergeWork())) {
|
|
|
+ /* 合并工作 */
|
|
|
+ work.setSplitting(false);
|
|
|
+ work.setSplitToken("");
|
|
|
+ work.getSplitTokenList().clear();
|
|
|
+ work.setSplitValue("");
|
|
|
+ removeOtherWork(business, work);
|
|
|
+ removeOtherWorkLog(business, work);
|
|
|
+ }
|
|
|
+ emc.check(work, CheckPersistType.all);
|
|
|
+ emc.commit();
|
|
|
}
|
|
|
+ Wo wo = new Wo();
|
|
|
+ wo.setValue(true);
|
|
|
+ result.setData(wo);
|
|
|
+ return result;
|
|
|
};
|
|
|
+ // Callable<ActionResult<Wo>> callable = new Callable<ActionResult<Wo>>() {
|
|
|
+ // public ActionResult<Wo> call() throws Exception {
|
|
|
+ // ActionResult<Wo> result = new ActionResult<>();
|
|
|
+ // Work work;
|
|
|
+ // try (EntityManagerContainer emc =
|
|
|
+ // EntityManagerContainerFactory.instance().create()) {
|
|
|
+ // Business business = new Business(emc);
|
|
|
+ // work = emc.find(id, Work.class);
|
|
|
+ // if (null == work) {
|
|
|
+ // throw new ExceptionEntityNotExist(id, Work.class);
|
|
|
+ // }
|
|
|
+ // Activity activity = business.element().getActivity(wi.getActivity());
|
|
|
+ // if (!StringUtils.equals(work.getProcess(), activity.getProcess())) {
|
|
|
+ // throw new ExceptionProcessNotMatch();
|
|
|
+ // }
|
|
|
+ // emc.beginTransaction(Work.class);
|
|
|
+ // emc.beginTransaction(Task.class);
|
|
|
+ // emc.beginTransaction(WorkLog.class);
|
|
|
+ // /** 重新设置表单 */
|
|
|
+ // setForm(business, work, activity);
|
|
|
+ // work.setDestinationActivity(activity.getId());
|
|
|
+ // work.setDestinationActivityType(activity.getActivityType());
|
|
|
+ // work.setDestinationRoute("");
|
|
|
+ // work.setDestinationRouteName("");
|
|
|
+ // work.getProperties().setManualForceTaskIdentityList(new ArrayList<String>());
|
|
|
+ // if (ListTools.isNotEmpty(wi.getManualForceTaskIdentityList())) {
|
|
|
+ // work.getProperties().setManualForceTaskIdentityList(wi.getManualForceTaskIdentityList());
|
|
|
+ // }
|
|
|
+ // removeTask(business, work);
|
|
|
+ // if (BooleanUtils.isTrue(wi.getMergeWork())) {
|
|
|
+ // /* 合并工作 */
|
|
|
+ // work.setSplitting(false);
|
|
|
+ // work.setSplitToken("");
|
|
|
+ // work.getSplitTokenList().clear();
|
|
|
+ // work.setSplitValue("");
|
|
|
+ // removeOtherWork(business, work);
|
|
|
+ // removeOtherWorkLog(business, work);
|
|
|
+ // }
|
|
|
+ // emc.check(work, CheckPersistType.all);
|
|
|
+ // emc.commit();
|
|
|
+ // }
|
|
|
+
|
|
|
+ // Wo wo = new Wo();
|
|
|
+ // wo.setValue(true);
|
|
|
+ // result.setData(wo);
|
|
|
+ // return result;
|
|
|
+ // }
|
|
|
+ // };
|
|
|
return ProcessPlatformExecutorFactory.get(job).submit(callable).get();
|
|
|
|
|
|
}
|
|
|
|
|
|
private void setForm(Business business, Work work, Activity activity) throws Exception {
|
|
|
if (StringUtils.isNotEmpty(activity.getForm())) {
|
|
|
- //表单需要重新判断,如果是从模板或者复制过来的流程可能发生表单不存在的情况.
|
|
|
+ // 表单需要重新判断,如果是从模板或者复制过来的流程可能发生表单不存在的情况.
|
|
|
Form form = business.entityManagerContainer().find(activity.getForm(), Form.class);
|
|
|
- if (null!= form){
|
|
|
+ if (null != form) {
|
|
|
work.setForm(form.getId());
|
|
|
}
|
|
|
}
|