From 621ec86cdcfda65a321401bbd9f2717e60b2ba57 Mon Sep 17 00:00:00 2001 From: zhenggm Date: Tue, 30 Aug 2022 18:20:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=BC=95=E6=93=8E-=E4=BF=9D?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/bpm/web/design/flow/FlowConst.java | 1 + .../system/bpm/web/engine/flow/FlowInstance.java | 2 +- .../listcard/single/FlowSingleSaveHandler.java | 40 +++++++++++++++++++++- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/FlowConst.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/FlowConst.java index 92c3202..0e51df6 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/FlowConst.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/FlowConst.java @@ -28,6 +28,7 @@ public interface FlowConst { public static StrEnumBean RETAKE = instance.addEnum("retake", "取回"); //驳回 public static StrEnumBean REJECT = instance.addEnum("reject", "驳回"); + public static StrEnumBean INTERRUPT = instance.addEnum("interrupt", "终止"); //新增 public static StrEnumBean ADD = instance.addEnum("add", "新增"); //删除 diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowInstance.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowInstance.java index 5b3312f..22dd392 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowInstance.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowInstance.java @@ -56,7 +56,7 @@ public class FlowInstance { private List> tasks = new ArrayList<>(); //数据提供者 private FlowProvider provider = new FlowProvider(); - + private FlowListener listener; public FlowInstance(@NonNull FlowListener listener, UserSession us) { diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleSaveHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleSaveHandler.java index 74a9b8c..5e616ac 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleSaveHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleSaveHandler.java @@ -1,16 +1,54 @@ package cc.smtweb.system.bpm.web.engine.model.flow.listcard.single; import cc.smtweb.framework.core.common.R; +import cc.smtweb.framework.core.common.SwMap; import cc.smtweb.framework.core.db.impl.DefaultEntity; +import cc.smtweb.framework.core.exception.BizException; +import cc.smtweb.system.bpm.web.design.form.define.PageDataset; +import cc.smtweb.system.bpm.web.engine.flow.FlowHelper; +import cc.smtweb.system.bpm.web.engine.flow.FlowInstance; +import cc.smtweb.system.bpm.web.engine.flow.FlowListener; import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleSaveHandler; /** * Created by Akmm at 2022-08-26 16:47 * 带流程的简单卡片之保存 */ -public class FlowSingleSaveHandler extends LCSingleSaveHandler { +public class FlowSingleSaveHandler extends LCSingleSaveHandler implements FlowListener { + protected FlowInstance flowInstance; + @Override public R save() { + return super.save(); } + + @Override + protected T readBeanFromPage(PageDataset pageDataSet, SwMap pageData) { + T bean = super.readBeanFromPage(pageDataSet, pageData); + + long id = params.readLong("id"); + long taskId = params.readLong("taskId"); + + SwMap data = pageData.readMap(FlowHelper.DATASET_NAME_FLOW); + if (data == null) throw new BizException("没有找到待保存的流程数据!"); + data = data.readMap("form"); + if (data == null) throw new BizException("没有找到待保存的流程数据!"); + + FlowInstance flowInstance = new FlowInstance(this, us); + if (bean.isNew()) { + flowInstance.create(form.getBillType()); + } else { + flowInstance.load(id, taskId); + } + flowInstance.readFromPage(data); + + return bean; + } + + @Override + protected void saveBean(T bean) { + super.saveBean(bean); + flowInstance.save(); + } }