From acfb4a1af5b573bd6db481d264e5c7e862c97f0d Mon Sep 17 00:00:00 2001 From: zhenggm Date: Thu, 1 Sep 2022 10:29:49 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=BC=95=E6=93=8E-?= =?UTF-8?q?=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/bpm/web/engine/flow/FlowInstance.java | 2 ++ .../flow/listcard/single/FlowSingleLoadHandler.java | 2 +- .../flow/listcard/single/FlowSingleSaveHandler.java | 19 +++++++++++++++++-- 3 files changed, 20 insertions(+), 3 deletions(-) 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 22dd392..5e61dfb 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 @@ -135,6 +135,7 @@ public class FlowInstance { actInst.setId(procInst.getEntityId()); actInst.setPrcId(procDef.getEntityId()); actInst.setActId(start.getId()); + actInst.setActName(start.getLabel()); actInst.setHandler(us.getUserId()); actInst.setStartTime(DateUtil.nowDateTimeLong()); actInst.setStatu(FlowConst.ActivityStatu.HANDLE.value); @@ -643,6 +644,7 @@ public class FlowInstance { task.setPriId(procInst.getId()); task.setPriId(procDef.getId()); task.setActId(act.getId()); + task.setActName(act.getLabel()); task.setStartTime(DateUtil.nowDateTimeLong()); task.setStatu(FlowConst.ActivityStatu.WAIT.value); task.setMake(false); diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java index 589e7b7..d19cb26 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java @@ -57,7 +57,7 @@ public class FlowSingleLoadHandler extends LCSingleLoadHandler implements FlowLi ret.put(cardDataset.name, data); //加载流程信息 - FlowInstance flowInstance = new FlowInstance(this, us); + flowInstance = new FlowInstance(this, us); flowInstance.load(id, taskId); ret.put(FlowHelper.DATASET_NAME_FLOW, DynRetBean.createBean(flowInstance.getProcInst())); 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 5e616ac..f1ce123 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 @@ -35,14 +35,14 @@ public class FlowSingleSaveHandler extends LCSingleSave data = data.readMap("form"); if (data == null) throw new BizException("没有找到待保存的流程数据!"); - FlowInstance flowInstance = new FlowInstance(this, us); + flowInstance = new FlowInstance(this, us); if (bean.isNew()) { flowInstance.create(form.getBillType()); } else { flowInstance.load(id, taskId); } flowInstance.readFromPage(data); - + flowInstance.setBillInfo(getBillCode(), getBillInfo(), getBillUrl()); return bean; } @@ -51,4 +51,19 @@ public class FlowSingleSaveHandler extends LCSingleSave super.saveBean(bean); flowInstance.save(); } + + //单据编号 + protected String getBillCode() { + return ""; + } + + //单据信息,在待办中显示 + protected String getBillInfo() { + return ""; + } + + //单据url,待办中跳链 + protected String getBillUrl() { + return ""; + } } From 0901fb476b113ba53b9fadfa63f0fbc28f09ee65 Mon Sep 17 00:00:00 2001 From: zhenggm Date: Thu, 1 Sep 2022 16:07:37 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=BC=95=E6=93=8E-?= =?UTF-8?q?=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/bpm/web/engine/flow/FlowInstance.java | 15 ++++++++++++++- .../model/flow/listcard/single/FlowDelHandler.java | 22 ++++++++++++++++++++++ .../listcard/single/FlowSingleLoadHandler.java | 8 +++----- .../listcard/single/FlowSingleSaveHandler.java | 5 ++--- .../flow/listcard/single/FlowSingleService.java | 2 +- .../model/listcard/normal/LCNormalDelHandler.java | 4 ++-- .../model/listcard/single/LCSingleDelHandler.java | 15 ++++++++++++--- 7 files changed, 56 insertions(+), 15 deletions(-) create mode 100644 smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowDelHandler.java 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 5e61dfb..c6bedcd 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 @@ -59,7 +59,20 @@ public class FlowInstance { private FlowListener listener; - public FlowInstance(@NonNull FlowListener listener, UserSession us) { + public static FlowInstance createById(UserSession us, FlowListener listener, long billId, long taskId) { + FlowInstance flowInstance = new FlowInstance(listener, us); + flowInstance.load(billId, taskId); + return flowInstance; + } + + public static FlowInstance createByBillType(UserSession us, FlowListener listener, long billType) { + FlowInstance flowInstance = new FlowInstance(listener, us); + flowInstance.create(billType); + return flowInstance; + } + + + private FlowInstance(@NonNull FlowListener listener, UserSession us) { this.listener = listener; this.us = us; } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowDelHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowDelHandler.java new file mode 100644 index 0000000..2e6989e --- /dev/null +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowDelHandler.java @@ -0,0 +1,22 @@ +package cc.smtweb.system.bpm.web.engine.model.flow.listcard.single; + +import cc.smtweb.framework.core.db.vo.ModelTable; +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.LCSingleDelHandler; + +/** + * Created by Akmm at 2022-09-01 15:03 + * 流程删除 + */ +public class FlowDelHandler extends LCSingleDelHandler implements FlowListener { + protected FlowInstance flowInstance; + @Override + protected void localDel(long id, ModelTable table) { + long taskId = params.readLong("taskId"); + flowInstance = FlowInstance.createById(us, this, id, taskId); + flowInstance.delete(); + super.localDel(id, table); + + } +} diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java index d19cb26..a6ab893 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java @@ -30,9 +30,8 @@ public class FlowSingleLoadHandler extends LCSingleLoadHandler implements FlowLi @Override protected void afterAdd(SwMap ret, SwMap bean) { - FlowInstance flowInstance = new FlowInstance(this, us); - flowInstance.create(form.getBillType()); - + flowInstance = FlowInstance.createByBillType(us, this, form.getBillType()); + PageDataset cardDataset = LCSingleHelper.findCardDataset(datasets); ModelTable table = cardDataset.getModelTable(); bean.put(table.getIdField(), flowInstance.getProcInst().getId()); @@ -57,8 +56,7 @@ public class FlowSingleLoadHandler extends LCSingleLoadHandler implements FlowLi ret.put(cardDataset.name, data); //加载流程信息 - flowInstance = new FlowInstance(this, us); - flowInstance.load(id, taskId); + flowInstance = FlowInstance.createById(us,this, id, taskId); ret.put(FlowHelper.DATASET_NAME_FLOW, DynRetBean.createBean(flowInstance.getProcInst())); ret.put(FlowHelper.DATASET_NAME_COMMENT, DynRetBean.createList(SwListData.create(flowInstance.loadComment(), 0))); 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 f1ce123..7645739 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 @@ -35,11 +35,10 @@ public class FlowSingleSaveHandler extends LCSingleSave data = data.readMap("form"); if (data == null) throw new BizException("没有找到待保存的流程数据!"); - flowInstance = new FlowInstance(this, us); if (bean.isNew()) { - flowInstance.create(form.getBillType()); + flowInstance = FlowInstance.createByBillType(us, this, form.getBillType()); } else { - flowInstance.load(id, taskId); + flowInstance = FlowInstance.createById(us,this, id, taskId); } flowInstance.readFromPage(data); flowInstance.setBillInfo(getBillCode(), getBillInfo(), getBillUrl()); diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleService.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleService.java index b3775d1..999b452 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleService.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleService.java @@ -25,6 +25,6 @@ public class FlowSingleService extends LCSingleService { @Override protected LCSingleDelHandler getDelHandler() { - return super.getDelHandler(); + return new FlowDelHandler(); } } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/normal/LCNormalDelHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/normal/LCNormalDelHandler.java index fb2bb21..8bf25ad 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/normal/LCNormalDelHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/normal/LCNormalDelHandler.java @@ -29,7 +29,7 @@ public class LCNormalDelHandler extends LCSingleDelHandler { //数据集 String dataSet = params.readString("dataset"); PageDataset delDataSet = this.datasets.findByName(dataSet); - Assert.notNull(delDataSet,"未获取到数据集:"+dataSet); + Assert.notNull(delDataSet, "未获取到数据集:" + dataSet); // checkBean(delDataSet, id); // @@ -50,7 +50,7 @@ public class LCNormalDelHandler extends LCSingleDelHandler { AbstractCache cache = CacheManager.getIntance().getCache(table.getName()); cache.remove(id); } - localDelSuccess(id, table); + afterCommit(id, table); } }); return R.success(); diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleDelHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleDelHandler.java index d1f976c..90ab129 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleDelHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleDelHandler.java @@ -57,17 +57,26 @@ public class LCSingleDelHandler extends AbstractDynPageHandler { AbstractCache cache = CacheManager.getIntance().getCache(table.getName()); cache.remove(id); } - localDelSuccess(id, table); + afterCommit(id, table); + } + + @Override + public void doAfterDbRollback() { + afterRollback(id); } }); return R.success(); } - protected void localDel(long id, ModelTable table) { + //回调:::删除之后 + protected void localDel(long id, ModelTable table) {} + //回调:::提交成功后 + protected void afterCommit(long id, ModelTable table) { } - protected void localDelSuccess(long id, ModelTable table) { + //回调:::提交失败,事务回滚后 + protected void afterRollback(long id) { } From a852cbe539601bf59fd56997f0099061fc6bd38d Mon Sep 17 00:00:00 2001 From: zhenggm Date: Thu, 1 Sep 2022 20:21:15 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= =?UTF-8?q?=EF=BC=9Aadd=E5=8D=B3=E8=BF=94=E5=9B=9Eid=EF=BC=8C=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=5Fstatus=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6=E6=96=B0?= =?UTF-8?q?=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bpm/web/design/flow/ModelProcLoadHandler.java | 8 +-- .../bpm/web/design/flow/ModelProcSaveHandler.java | 2 +- .../bpm/web/design/form/ModelFormSaveHandler.java | 4 +- .../bpm/web/engine/dynPage/DynPageSaveHandler.java | 21 +++---- .../system/bpm/web/engine/dynPage/DynRetBean.java | 4 +- .../system/bpm/web/engine/flow/FlowInstance.java | 17 +++--- .../system/bpm/web/engine/flow/FlowListener.java | 10 ++-- .../bpm/web/engine/flow/FlowLoadHandler.java | 15 ----- .../system/bpm/web/engine/flow/FlowProvider.java | 6 +- .../listcard/single/FlowSingleLoadHandler.java | 2 +- .../listcard/single/FlowSingleSaveHandler.java | 6 -- .../flow/listcard/single/FlowSingleService.java | 29 +++++++++ .../flow/listcard/single/FlowTransHandler.java | 38 ++++++++++++ .../model/listcard/mastersub/LCMsSaveHandler.java | 1 - .../model/listcard/single/LCSingleLoadHandler.java | 13 ++-- .../model/listcard/single/LCSingleSaveHandler.java | 13 ++-- .../web/sys/base/billType/BillTypeSaveHandler.java | 4 +- .../system/bpm/web/sys/base/dict/DictHandler.java | 4 +- .../system/bpm/web/sys/user/area/AreaHandler.java | 5 +- .../framework/core/db/dao/AbstractEntityDao.java | 22 ++++++- .../framework/core/db/impl/DefaultEntity.java | 4 +- .../core/mvc/service/AbstractCompService.java | 7 ++- .../core/mvc/service/AbstractLoadHandler.java | 1 + .../core/mvc/service/AbstractSaveHandler.java | 3 +- .../core/mvc/service/DefaultLoadHandler.java | 31 +++++----- .../core/mvc/service/DefaultSaveHandler.java | 69 +++++++++++----------- .../smtweb/framework/core/mvc/service/IWorker.java | 4 +- 27 files changed, 197 insertions(+), 146 deletions(-) delete mode 100644 smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowLoadHandler.java create mode 100644 smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowTransHandler.java diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcLoadHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcLoadHandler.java index 821af90..eefe9c6 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcLoadHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcLoadHandler.java @@ -1,6 +1,8 @@ package cc.smtweb.system.bpm.web.design.flow; import cc.smtweb.framework.core.common.R; +import cc.smtweb.framework.core.db.DbEngine; +import cc.smtweb.framework.core.db.EntityDao; import cc.smtweb.framework.core.exception.BizException; import cc.smtweb.framework.core.mvc.service.DefaultLoadHandler; @@ -13,17 +15,15 @@ public class ModelProcLoadHandler extends DefaultLoadHandler { } @Override - protected ModelProc loadComp(long id) { - ModelProc bean = super.loadComp(id); + protected void afterLoad(ModelProc bean) { bean.getData().remove("prc_content"); - return bean; } //页面设计 - 加载页面model定义 public R loadModel() { long id = params.readLong("id"); - ModelProc bean = super.loadComp(id); + ModelProc bean = ModelProcCache.getInstance().get(id); if (bean == null) throw new BizException("没有找到指定定义信息!id=" + id); return R.success(bean.getContent()); } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcSaveHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcSaveHandler.java index 4c61453..a13c81d 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcSaveHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcSaveHandler.java @@ -60,7 +60,7 @@ public class ModelProcSaveHandler extends DefaultSaveHandler { public R saveModel() { long id = params.readLong("id"); String data = params.readString("data"); - bean = loadComp(id); + bean = ModelProcCache.getInstance().get(id); if (StringUtils.isEmpty(data)) { throw new BizException("没有待保存的数据!"); } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormSaveHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormSaveHandler.java index 15916e0..6e7614d 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormSaveHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormSaveHandler.java @@ -75,7 +75,7 @@ public class ModelFormSaveHandler extends DefaultSaveHandler { public R saveDataset() { long id = params.readLong("id"); String data = params.readString("data"); - bean = loadComp(id); + bean = ModelFormCache.getInstance().get(id); if (StringUtils.isEmpty(data)) { throw new BizException("没有待保存的数据!"); } @@ -107,7 +107,7 @@ public class ModelFormSaveHandler extends DefaultSaveHandler { public R saveModel() { long id = params.readLong("id"); String data = params.readString("data"); - bean = loadComp(id); + bean = ModelFormCache.getInstance().get(id); if (StringUtils.isEmpty(data)) { throw new BizException("没有待保存的数据!"); } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageSaveHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageSaveHandler.java index 9948e8f..cd6dbc1 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageSaveHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageSaveHandler.java @@ -14,6 +14,7 @@ import cc.smtweb.framework.core.db.vo.ModelField; import cc.smtweb.framework.core.db.vo.ModelIndex; import cc.smtweb.framework.core.db.vo.ModelTable; import cc.smtweb.framework.core.exception.BizException; +import cc.smtweb.framework.core.mvc.service.DefaultSaveHandler; import cc.smtweb.framework.core.mvc.service.TreeHelper; import cc.smtweb.framework.core.util.StringUtil; import cc.smtweb.system.bpm.web.design.form.define.PageDataset; @@ -33,10 +34,6 @@ import java.util.Map; public class DynPageSaveHandler extends AbstractDynPageHandler { private Map> mapTreeBean = new HashMap<>(); - protected void setNewId(DefaultEntity bean) { - bean.setEntityId(DbEngine.getInstance().nextId()); - } - /** * 保存指定数据集操作,入参:{pageId,dataset:"", data:{form:{},list: {total:0,rows:[]}}, filter:{}} */ @@ -50,6 +47,8 @@ public class DynPageSaveHandler extends AbstractDynPageHandler { //对应的数据集定义 PageDataset pageDataSet = findDataset(dbName); if (pageDataSet == null) throw new BizException("没有找到指定的的数据集定义:" + dbName + "!"); + ModelTable table = ModelTableCache.getInstance().get(pageDataSet.masterTable); + //读取待保存的bean DefaultEntity bean = readBeanFromPage(pageDataSet, data.readMap("form")); if (filter != null && bean.isNew()) {//有过滤条件,将关联的值设上 @@ -73,6 +72,7 @@ public class DynPageSaveHandler extends AbstractDynPageHandler { afterRollback(bean); } }); + bean.removeStatus(); return R.success(DynRetBean.createBean(bean.getData())); } @@ -133,6 +133,7 @@ public class DynPageSaveHandler extends AbstractDynPageHandler { }); Map mapRet = new HashMap<>(map.size()); for (Map.Entry entry : map.entrySet()) { + entry.getValue().getData().remove(DefaultEntity.statusKey); mapRet.put(entry.getKey(), DynRetBean.createBean(entry.getValue().getData())); } return R.success(mapRet); @@ -148,16 +149,17 @@ public class DynPageSaveHandler extends AbstractDynPageHandler { protected DefaultEntity readBeanFromPage(PageDataset pageDataSet, SwMap data) { ModelTable table = ModelTableCache.getInstance().get(pageDataSet.masterTable); if (table == null) throw new BizException("没有找到待保存的表定义:" + pageDataSet.name); - long id = data.readLong(table.getIdField()); + + long id = params.readLong(table.getIdField()); + boolean isNew = params.readBool(DefaultEntity.statusKey) || id <= 0L; EntityDao dao = DbEngine.getInstance().findDao(table.getName()); DefaultEntity bean; - if (id <= 0L) { - bean = dao.createBean(); - bean.setIsNew(true); + if (isNew) { + bean = dao.createBean(us.getUserId()); //暂时不考虑list保存的情况 bean.getData().putAll(data); - setNewId(bean); + if (bean.getEntityId() <= 0L) bean.setEntityId(DbEngine.getInstance().nextId()); } else { bean = dao.queryEntity(id); if (bean == null) { @@ -165,7 +167,6 @@ public class DynPageSaveHandler extends AbstractDynPageHandler { } //暂时不考虑list保存的情况 bean.getData().putAll(data); - bean.setIsNew(false); } return bean; diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynRetBean.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynRetBean.java index aaaf7b3..ed08934 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynRetBean.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynRetBean.java @@ -23,8 +23,8 @@ public class DynRetBean { SwMap form = (SwMap) swMap.clone(); DynRetBean bean = new DynRetBean(); bean.form = form; - bean.form.remove("_def_table_name"); - bean.form.remove("_status"); + bean.form.remove(DefaultEntity.tableNameKey); + //bean.form.remove(DefaultEntity.statusKey); return bean; } 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 c6bedcd..6c19aa9 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 @@ -15,14 +15,11 @@ import cc.smtweb.system.bpm.web.design.flow.ModelProc; import cc.smtweb.system.bpm.web.design.flow.ModelProcHelper; import cc.smtweb.system.bpm.web.design.flow.define.Activity; import cc.smtweb.system.bpm.web.design.flow.define.ProcInfo; -import cc.smtweb.system.bpm.web.design.form.ModelForm; -import cc.smtweb.system.bpm.web.design.form.ModelFormHelper; import cc.smtweb.system.bpm.web.engine.flow.entity.*; import cc.smtweb.system.bpm.web.sys.user.dept.Dept; import cc.smtweb.system.bpm.web.sys.user.dept.DeptCache; import cc.smtweb.system.bpm.web.sys.user.party.Party; import cc.smtweb.system.bpm.web.sys.user.party.PartyCache; -import cc.smtweb.system.bpm.web.sys.user.user.UserCache; import cc.smtweb.system.bpm.web.sys.user.userGroup.UserGroupHelper; import lombok.Data; import org.apache.commons.lang3.StringUtils; @@ -184,7 +181,7 @@ public class FlowInstance { getProcInstDao().updateEntity(procInst); buildBillLog(FlowConst.Button.HANDLE.value, "-", actInst, null); - listener.handle(actInst); + listener.afterHandle(actInst); } //从页面参数加载流程实例 @@ -593,7 +590,7 @@ public class FlowInstance { getProcInstDao().updateEntity(procInst); buildBillLog(FlowConst.Button.SUBMIT.value, "TODO", actInst, listInsertTask); - listener.submit(actInst, listInsertTask); + listener.afterSubmit(actInst, listInsertTask); } @@ -637,7 +634,7 @@ public class FlowInstance { getProcInstDao().updateEntity(procInst); buildBillLog(FlowConst.Button.DISUSE.value, "TODO", actInst, null); - listener.disuse(actInst); + listener.afterDisuse(actInst); } /** @@ -739,7 +736,7 @@ public class FlowInstance { new_acts.clear(); new_acts.add(old_act); buildBillLog(FlowConst.Button.RETAKE.value, "TODO", actInst, new_acts); - listener.retake(actInst, new_acts); + listener.afterRetake(actInst, new_acts); // comp.transCallback(FlowConst.Button.RETAKE.value, actInst, new_acts); } else { List new_acts = provider.findAfterTasks(actInst.getId()); @@ -765,7 +762,7 @@ public class FlowInstance { getProcInstDao().updateEntity(procInst); buildBillLog(FlowConst.Button.RETAKE.value, "TODO", actInst, new_acts); - listener.retake(actInst, new_acts); + listener.afterRetake(actInst, new_acts); } } @@ -814,7 +811,7 @@ public class FlowInstance { getProcInstDao().updateEntity(procInst); buildBillLog(FlowConst.Button.REJECT.value, "TODO", actInst, new_acts); - listener.reject(actInst, new_acts); + listener.afterReject(actInst, new_acts); // comp.transCallback(FlowConst.FlowOptType.REJECT.value, actInst, new_acts); } @@ -858,7 +855,7 @@ public class FlowInstance { make_acts.add(make_act); buildBillLog(FlowConst.Button.REJECT.value, "TODO", actInst, make_acts); - listener.reject(actInst, make_acts); + listener.afterReject(actInst, make_acts); } /** diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowListener.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowListener.java index a68b72e..1a06e1b 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowListener.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowListener.java @@ -13,14 +13,14 @@ public interface FlowListener { //设置条件计算参数 default void setExprParam(SwMap param) {} //提交 - default void submit(Task srcTask, List dstTasks) {} + default void afterSubmit(Task srcTask, List dstTasks) {} //取回 - default void retake(Task srcTask, List dstTasks) {} + default void afterRetake(Task srcTask, List dstTasks) {} //驳回 - default void reject(Task srcTask, List dstTasks) {} + default void afterReject(Task srcTask, List dstTasks) {} //办理,签收 - default void handle(Task srcTask) {} + default void afterHandle(Task srcTask) {} //作废 - default void disuse(Task srcTask) {} + default void afterDisuse(Task srcTask) {} } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowLoadHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowLoadHandler.java deleted file mode 100644 index f13499e..0000000 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowLoadHandler.java +++ /dev/null @@ -1,15 +0,0 @@ -package cc.smtweb.system.bpm.web.engine.flow; - -import cc.smtweb.framework.core.common.R; -import cc.smtweb.system.bpm.web.engine.dynPage.AbstractDynPageHandler; -import cc.smtweb.system.bpm.web.engine.dynPage.DynPageLoadHandler; - -/** - * Created by Akmm at 2022/4/21 17:53 - * 保存指定数据集操作 - * 入参:{pageId, data:} - */ -public class FlowLoadHandler extends DynPageLoadHandler { - - -} diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowProvider.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowProvider.java index af1b4c6..72c5888 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowProvider.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowProvider.java @@ -40,7 +40,7 @@ public class FlowProvider extends AbstractCompProvider { return doGetData("a_" + taskId, () -> { EntityDao bdao = DbEngine.getInstance().findDao(Task.class); Task bean = bdao.queryEntity(taskId); - if (bean == null) throw new BizException("没有找到指定流程任务(id=" + taskId + ")!"); + if (bean == null) return null; EntityHelper.loadBeanText(bean.getTableName(), bean.getData(), null); return bean; }); @@ -98,10 +98,10 @@ public class FlowProvider extends AbstractCompProvider { //寻找流程的制单任务 public Task findMakeTask(long bill_id) { - return DbEngine.getInstance().findDao(Task.class).queryEntityWhere("where tsk_pri_id = ? and is_make = 1 ", bill_id); + return DbEngine.getInstance().findDao(Task.class).queryEntityWhere(" tsk_pri_id = ? and is_make = 1 ", bill_id); } public List findComment(long bill_id) { - return DbEngine.getInstance().findDao(Comment.class).queryWhere("where cmt_pri_id=? order by cmt_end_time"); + return DbEngine.getInstance().findDao(Comment.class).queryWhere(" cmt_pri_id=? order by cmt_end_time", bill_id); } } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java index a6ab893..6e3fba8 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java @@ -53,7 +53,7 @@ public class FlowSingleLoadHandler extends LCSingleLoadHandler implements FlowLi PageDataset cardDataset = LCSingleHelper.findCardDataset(datasets); SwMap data = provider.loadData(filter, cardDataset); - ret.put(cardDataset.name, data); + ret.put(cardDataset.name, DynRetBean.createBean(data)); //加载流程信息 flowInstance = FlowInstance.createById(us,this, id, taskId); 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 7645739..316ca92 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 @@ -18,12 +18,6 @@ public class FlowSingleSaveHandler extends LCSingleSave protected FlowInstance flowInstance; @Override - public R save() { - - return super.save(); - } - - @Override protected T readBeanFromPage(PageDataset pageDataSet, SwMap pageData) { T bean = super.readBeanFromPage(pageDataSet, pageData); diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleService.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleService.java index 999b452..8f84175 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleService.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleService.java @@ -1,7 +1,13 @@ package cc.smtweb.system.bpm.web.engine.model.flow.listcard.single; +import cc.smtweb.framework.core.annotation.SwBody; import cc.smtweb.framework.core.annotation.SwService; +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.mvc.service.AbstractHandler; +import cc.smtweb.framework.core.mvc.service.IWorker; +import cc.smtweb.framework.core.session.UserSession; import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleDelHandler; import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleLoadHandler; import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleSaveHandler; @@ -13,6 +19,13 @@ import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleService; */ @SwService public class FlowSingleService extends LCSingleService { + public static final String TYPE_FLOW = "flow"; + @Override + protected AbstractHandler createHandler(String type) { + if (TYPE_FLOW.equals(type)) return new FlowTransHandler(); + return super.createHandler(type); + } + @Override protected LCSingleSaveHandler getSaveHandler() { return new FlowSingleSaveHandler(); @@ -27,4 +40,20 @@ public class FlowSingleService extends LCSingleService { protected LCSingleDelHandler getDelHandler() { return new FlowDelHandler(); } + + protected R flowHandler(SwMap params, UserSession us, IWorker worker) { + try { + FlowTransHandler handler = (FlowTransHandler)getHandler(params, us, TYPE_FLOW); + return worker.doWork(handler); + } catch (Exception e) { + return R.error("操作失败!", e); + } + } + public R submit(@SwBody SwMap params, UserSession us) { + return flowHandler(params, us, FlowTransHandler::submit); + } + + public R retake(@SwBody SwMap params, UserSession us) { + return flowHandler(params, us, FlowTransHandler::submit); + } } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowTransHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowTransHandler.java new file mode 100644 index 0000000..602f91a --- /dev/null +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowTransHandler.java @@ -0,0 +1,38 @@ +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.system.bpm.web.engine.dynPage.AbstractDynPageHandler; +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.flow.entity.Task; + +import java.util.List; + +/** + * Created by Akmm at 2022-09-01 15:03 + * 流程流转 + */ +public class FlowTransHandler extends AbstractDynPageHandler implements FlowListener{ + //流程id + protected long billId; + //任务id + protected long taskId; + protected FlowInstance flowInstance; + + private void loadFlowInstance() { + if (flowInstance == null) { + billId = params.readLong("id"); + taskId = params.readLong("taskId"); + flowInstance = FlowInstance.createById(us, this, billId, taskId); + } + } + + public R submit() { + loadFlowInstance(); + flowInstance.submit(); + return R.success(); + } + + +} diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/mastersub/LCMsSaveHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/mastersub/LCMsSaveHandler.java index 1038359..b30d7c7 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/mastersub/LCMsSaveHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/mastersub/LCMsSaveHandler.java @@ -122,7 +122,6 @@ public class LCMsSaveHandler extends LCSingleSaveHandler { bean.setIsNew(true); //暂时不考虑list保存的情况 bean.getData().putAll(data); - setNewId(bean); } else { bean = dao.queryEntity(id); if (bean == null) { diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleLoadHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleLoadHandler.java index f82d142..89abb83 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleLoadHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleLoadHandler.java @@ -19,14 +19,9 @@ public class LCSingleLoadHandler extends AbstractDynPageHandler { SwMap ret = new SwMap(); //返回的数据,以dataset.name为key,查出的结果(bean或list)为value PageDataset cardDataset = LCSingleHelper.findCardDataset(datasets); - SwMap data; - //懒加载,给个空对象 - if (cardDataset.lazy) { - data = new SwMap(); - } else { - data = DynPageHelper.createBean(cardDataset); - } - ret.put(cardDataset.name, data); + SwMap data = DynPageHelper.createBean(cardDataset); + + ret.put(cardDataset.name, DynRetBean.createBean(data)); afterAdd(ret, data); return R.success(ret); @@ -49,7 +44,7 @@ public class LCSingleLoadHandler extends AbstractDynPageHandler { PageDataset cardDataset = LCSingleHelper.findCardDataset(datasets); SwMap data = provider.loadData(filter, cardDataset); - ret.put(cardDataset.name, data); + ret.put(cardDataset.name, DynRetBean.createBean(data)); afterLoad(ret, data); return R.success(ret); diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleSaveHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleSaveHandler.java index 77b9838..194a986 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleSaveHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleSaveHandler.java @@ -35,10 +35,6 @@ import java.util.Map; public class LCSingleSaveHandler extends AbstractDynPageHandler { private Map> mapTreeBean = new HashMap<>(); - protected void setNewId(T bean) { - bean.setEntityId(DbEngine.getInstance().nextId()); - } - /** * 保存指定数据集操作,入参:{pageId,dataset:"", data:{form:{},list: {total:0,rows:[]}}, filter:{}} */ @@ -74,6 +70,7 @@ public class LCSingleSaveHandler extends AbstractDynPag afterRollback(bean); } }); + bean.removeStatus(); return R.success(LCSingleHelper.buildRetData(pageDataSet.name, bean.getData())); } @@ -93,17 +90,15 @@ public class LCSingleSaveHandler extends AbstractDynPag data = data.readMap("form"); if (data == null) throw new BizException("没有找到待保存的表数据:" + pageDataSet.name); - long id = data.readLong(table.getIdField()); - + boolean isNew = data.readBool(DefaultEntity.statusKey); EntityDao dao = DbEngine.getInstance().findDao(table.getName()); T bean; - if (id <= 0L) { + if (isNew) { bean = dao.createBean(); - bean.setIsNew(true); //暂时不考虑list保存的情况 bean.getData().putAll(data); - setNewId(bean); } else { + long id = data.readLong(table.getIdField()); bean = dao.queryEntity(id); if (bean == null) { throw new BizException("没有找到待保存的记录:" + table.getName() + "." + id); diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillTypeSaveHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillTypeSaveHandler.java index dedf6b4..89a5a68 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillTypeSaveHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillTypeSaveHandler.java @@ -9,9 +9,9 @@ import org.apache.commons.lang3.StringUtils; * Created by Akmm at 2022-08-25 19:11 */ public class BillTypeSaveHandler extends LCSingleSaveHandler { - //id=code @Override - protected void setNewId(BillType bean) { + protected void checkBean(BillType bean) { + super.checkBean(bean); if (StringUtils.isEmpty(bean.getCode())) { throw new BizException("编码不能为空!"); } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/dict/DictHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/dict/DictHandler.java index 631bed3..4d2aa3f 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/dict/DictHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/dict/DictHandler.java @@ -13,7 +13,8 @@ public class DictHandler { static class DictSaveHandler extends DynPageSaveHandler { @Override - protected void setNewId(DefaultEntity bean) { + protected void checkBean(DefaultEntity bean) { + super.checkBean(bean); //字典 id用 类型id+编码 if (bean instanceof Dict) { Dict dict = (Dict) bean; @@ -26,7 +27,6 @@ public class DictHandler { dictType.setEntityId(NumberUtil.getLongIgnoreErr(dictType.getCode())); return; } - super.setNewId(bean); } } } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/area/AreaHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/area/AreaHandler.java index bffec82..9d04c01 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/area/AreaHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/area/AreaHandler.java @@ -14,12 +14,11 @@ import cc.smtweb.system.bpm.web.engine.dynPage.DynPageSaveHandler; public class AreaHandler { static class AreaSaveHandler extends DynPageSaveHandler { @Override - protected void setNewId(DefaultEntity bean) { + protected void checkBean(DefaultEntity bean) { + super.checkBean(bean); if (bean instanceof Area) { Area area = (Area) bean; area.setEntityId(NumberUtil.getLongIgnoreErr(area.getCode())); - } else { - super.setNewId(bean); } } } diff --git a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/db/dao/AbstractEntityDao.java b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/db/dao/AbstractEntityDao.java index 07d2043..4bbb8aa 100644 --- a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/db/dao/AbstractEntityDao.java +++ b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/db/dao/AbstractEntityDao.java @@ -5,6 +5,7 @@ import cc.smtweb.framework.core.annotation.SwColumnForeign; import cc.smtweb.framework.core.annotation.SwTable; import cc.smtweb.framework.core.cache.CacheManager; import cc.smtweb.framework.core.common.SwEnum; +import cc.smtweb.framework.core.db.DbEngine; import cc.smtweb.framework.core.exception.SwException; import cc.smtweb.framework.core.db.cache.ModelTableCache; import cc.smtweb.framework.core.db.impl.DefaultEntity; @@ -66,8 +67,8 @@ public abstract class AbstractEntityDao { tableName = table.value(); modelTable = ModelTableCache.getInstance().getByName(tableName); - if(null == modelTable){ - log.error("未找到缓存表结构:"+tableName); + if (null == modelTable) { + log.error("未找到缓存表结构:" + tableName); } if (DefaultEntity.class.isAssignableFrom(type)) { for (ModelField field : modelTable.getFields()) { @@ -292,7 +293,7 @@ public abstract class AbstractEntityDao { private EntityColumn findIdColumn() { ModelField field = modelTable.findIdField(); - EntityColumn idColumn = field != null ? columns.get(field.getName()) : null; + EntityColumn idColumn = field != null ? columns.get(field.getName()): null; if (idColumn == null) { throw new DbException(tableName + " not define id column"); } @@ -402,11 +403,26 @@ public abstract class AbstractEntityDao { DefaultEntity b = (DefaultEntity) bean; b.init(); b.setTableName(this.tableName); + b.setIsNew(true); } return bean; } catch (Exception e) { throw new SwException(e); } } + + public T createBean(long userId) { + T b = createBean(); + if (b instanceof DefaultEntity) { + DefaultEntity bean = (DefaultEntity) b; + ModelTable table = ModelTableCache.getInstance().getByName(tableName); + ModelField field = table.findFieldByType(SwEnum.FieldType.CREATE_USER.value); + if (field != null) bean.put(field.getName(), userId); + field = table.findFieldByType(SwEnum.FieldType.UPDATE_USER.value); + if (field != null) bean.put(field.getName(), userId); + } + return b; + + } } diff --git a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/db/impl/DefaultEntity.java b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/db/impl/DefaultEntity.java index c3cbdf4..cd1d8ca 100644 --- a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/db/impl/DefaultEntity.java +++ b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/db/impl/DefaultEntity.java @@ -16,8 +16,8 @@ import java.io.Serializable; */ public class DefaultEntity extends BaseBean implements Serializable, Cloneable { //表名 - private final static String tableNameKey = "_def_table_name"; - private final static String statusKey = "_status"; + public final static String tableNameKey = "_def_table_name"; + public final static String statusKey = "_status"; public DefaultEntity() { } diff --git a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/AbstractCompService.java b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/AbstractCompService.java index 1352112..4f1d5fe 100644 --- a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/AbstractCompService.java +++ b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/AbstractCompService.java @@ -2,6 +2,7 @@ package cc.smtweb.framework.core.mvc.service; import cc.smtweb.framework.core.annotation.SwBody; import cc.smtweb.framework.core.common.R; +import cc.smtweb.framework.core.db.impl.DefaultEntity; import cc.smtweb.framework.core.exception.BizException; import cc.smtweb.framework.core.exception.SwException; import cc.smtweb.framework.core.common.SwMap; @@ -41,17 +42,17 @@ public abstract class AbstractCompService { //保存 public R save(@SwBody SwMap params, UserSession us) { - return pageHandler(params, us, TYPE_SAVE, handler -> ((AbstractSaveHandler)handler).save()); + return pageHandler(params, us, TYPE_SAVE, handler -> ((DefaultSaveHandler)handler).save()); } //树,换爹 public R trcp(@SwBody SwMap params, UserSession us) { - return pageHandler(params, us, TYPE_SAVE, handler -> ((AbstractSaveHandler)handler).changeParent()); + return pageHandler(params, us, TYPE_SAVE, handler -> ((DefaultSaveHandler)handler).changeParent()); } //读取 public R load(@SwBody SwMap params, UserSession us) { - return pageHandler(params, us, TYPE_LOAD, handler -> ((AbstractLoadHandler)handler).load()); + return pageHandler(params, us, TYPE_LOAD, handler -> ((DefaultLoadHandler)handler).load()); } //删除 diff --git a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/AbstractLoadHandler.java b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/AbstractLoadHandler.java index 8f36e81..9fe0974 100644 --- a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/AbstractLoadHandler.java +++ b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/AbstractLoadHandler.java @@ -5,6 +5,7 @@ import cc.smtweb.framework.core.common.R; /** * Created by Akmm at 2022/3/2 19:44 */ +@Deprecated public abstract class AbstractLoadHandler extends AbstractHandler { public R load() { diff --git a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/AbstractSaveHandler.java b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/AbstractSaveHandler.java index 26b4b16..8624ac7 100644 --- a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/AbstractSaveHandler.java +++ b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/AbstractSaveHandler.java @@ -10,12 +10,11 @@ import lombok.extern.slf4j.Slf4j; * 保存 */ @Slf4j +@Deprecated public abstract class AbstractSaveHandler extends AbstractHandler { protected T bean; protected boolean isNew; - - public R save() { long id = readId(); diff --git a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/DefaultLoadHandler.java b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/DefaultLoadHandler.java index a42639f..d19e590 100644 --- a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/DefaultLoadHandler.java +++ b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/DefaultLoadHandler.java @@ -1,5 +1,6 @@ package cc.smtweb.framework.core.mvc.service; +import cc.smtweb.framework.core.common.R; import cc.smtweb.framework.core.common.SwEnum; import cc.smtweb.framework.core.db.DbEngine; import cc.smtweb.framework.core.db.EntityDao; @@ -12,25 +13,27 @@ import cc.smtweb.framework.core.db.vo.ModelTable; * Created by Akmm at 2022/3/2 19:52 * 默认实体实现 */ -public class DefaultLoadHandler extends AbstractLoadHandler { +public class DefaultLoadHandler extends AbstractHandler { protected String tableName; - public DefaultLoadHandler(String tableName) { - this.tableName = tableName; + public R load() { + long id = params.readLong("id", 0L); + T bean; + final EntityDao dao = DbEngine.getInstance().findDao(tableName); + if (id <= 0L) { + bean = dao.createBean(us.getUserId()); + bean.setEntityId(DbEngine.getInstance().nextId()); + } else { + bean = dao.queryEntity(id); + } + afterLoad(bean); + return R.success(bean); } - @Override - protected T createComp() { - final EntityDao dao = DbEngine.getInstance().findDao(tableName); - T bean = dao.createBean(); - ModelTable table = ModelTableCache.getInstance().getByName(tableName); - ModelField field = table.findFieldByType(SwEnum.FieldType.CREATE_USER.value); - if (field != null) bean.put(field.getName(), us.getUserId()); - return bean; + public DefaultLoadHandler(String tableName) { + this.tableName = tableName; } - @Override - protected T loadComp(long id) { - return new DefaultProvider(tableName).getBean(id); + protected void afterLoad(T bean) { } } diff --git a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/DefaultSaveHandler.java b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/DefaultSaveHandler.java index 59b8ef3..a1283fa 100644 --- a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/DefaultSaveHandler.java +++ b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/DefaultSaveHandler.java @@ -22,8 +22,9 @@ import java.util.List; * Created by Akmm at 2022/3/2 19:52 * 默认实体实现 */ -public class DefaultSaveHandler extends AbstractSaveHandler { +public class DefaultSaveHandler extends AbstractHandler{ protected String tableName; + protected T bean; private List listTreeBean = null; @@ -31,41 +32,44 @@ public class DefaultSaveHandler extends AbstractSaveHan this.tableName = tableName; } - @Override - protected T createComp() { - final EntityDao dao = DbEngine.getInstance().findDao(tableName); - T bean = dao.createBean(); - ModelTable table = ModelTableCache.getInstance().getByName(tableName); - ModelField field = table.findFieldByType(SwEnum.FieldType.CREATE_USER.value); - if (field != null) bean.put(field.getName(), us.getUserId()); - field = table.findFieldByType(SwEnum.FieldType.UPDATE_USER.value); - if (field != null) bean.put(field.getName(), us.getUserId()); - return bean; - } - - @Override - protected long readId() { + public R save() { ModelTable table = ModelTableCache.getInstance().getByName(tableName); - return params.readLong(table.getIdField()); - } + long id = params.readLong(table.getIdField()); + boolean isNew = params.readBool(DefaultEntity.statusKey) || id <= 0L; + + final EntityDao dao = DbEngine.getInstance().findDao(tableName); + if (isNew) { + bean = dao.createBean(us.getUserId()); + } else { + bean = dao.queryEntity(id); + } + readFromPage(); + if (bean.getEntityId() <= 0L) bean.setEntityId(DbEngine.getInstance().nextId()); + checkValid(); + DbEngine.getInstance().doTrans(new AbsDbWorker() { + @Override + public void work(){ + saveDb(); + } - @Override - protected void setNewId() { - bean.setEntityId(DbEngine.getInstance().nextId()); - } + @Override + public void doAfterDbCommit(){ + saveSuccess(); + } - @Override - protected T loadComp(long id) { - return new DefaultProvider(tableName).getBean(id); + @Override + public void doAfterDbRollback(){ + saveFailed(); + } + }); + bean.removeStatus(); + return R.success(bean); } - @Override protected void readFromPage() { bean.readFromMap(params); - bean.setIsNew(isNew); } - @Override protected void checkValid() { ModelTable table = ModelTableCache.getInstance().getByName(tableName); for (ModelField field : table.getFields()) { @@ -85,10 +89,9 @@ public class DefaultSaveHandler extends AbstractSaveHan } } - @Override protected void saveDb() { EntityDao dao = DbEngine.getInstance().findDao(tableName); - if (isNew) { + if (bean.isNew()) { insertBean(dao); } else { ModelTable table = ModelTableCache.getInstance().getByName(tableName); @@ -113,9 +116,7 @@ public class DefaultSaveHandler extends AbstractSaveHan } - @Override protected void saveSuccess() { - super.saveSuccess(); ModelTable table = ModelTableCache.getInstance().getByName(tableName); if (table.isNeedCache()) { AbstractCache cache = CacheManager.getIntance().getCache(tableName); @@ -130,9 +131,7 @@ public class DefaultSaveHandler extends AbstractSaveHan } } - @Override protected void saveFailed() { - super.saveFailed(); ModelTable table = ModelTableCache.getInstance().getByName(tableName); if (table.isNeedCache()) { AbstractCache cache = CacheManager.getIntance().getCache(tableName); @@ -148,11 +147,12 @@ public class DefaultSaveHandler extends AbstractSaveHan long id = params.readLong("id"); long parentId = params.readLong("parent_id"); + final EntityDao dao = DbEngine.getInstance().findDao(tableName); AbstractCache cache = CacheManager.getIntance().getCache(tableName); if (table.isNeedCache()) { bean = cache.get(id); } else { - bean = loadComp(id); + bean = dao.queryEntity(id); } TreeHelper.getTreeHelper(tableName).checkParent(bean); //不考虑没有级次码等情况,这个在表设计时校验 @@ -162,7 +162,6 @@ public class DefaultSaveHandler extends AbstractSaveHan DbEngine.getInstance().doTrans(new AbsDbWorker() { @Override public void work() { - EntityDao dao = DbEngine.getInstance().findDao(tableName); listTreeBean = TreeHelper.getTreeHelper(tableName).resetTreeLevel(bean); dao.updateEntity(bean, fieldParentId.getName()); } diff --git a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/IWorker.java b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/IWorker.java index a37939e..027a28c 100644 --- a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/IWorker.java +++ b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/mvc/service/IWorker.java @@ -6,6 +6,6 @@ import cc.smtweb.framework.core.common.R; * Created by Akmm at 2022/3/2 19:01 * 所有handler的接口 */ -public interface IWorker { - R doWork(AbstractHandler handler); +public interface IWorker { + R doWork(T handler); } From 2c6741804bcb0d3a29cfd1ee68393d2e92bd0c82 Mon Sep 17 00:00:00 2001 From: zhenggm Date: Thu, 1 Sep 2022 20:27:00 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= =?UTF-8?q?=EF=BC=9Aadd=E5=8D=B3=E8=BF=94=E5=9B=9Eid=EF=BC=8C=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=5Fstatus=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6=E6=96=B0?= =?UTF-8?q?=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageHelper.java | 1 + 1 file changed, 1 insertion(+) diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageHelper.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageHelper.java index 4aa406b..634a62b 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageHelper.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageHelper.java @@ -45,6 +45,7 @@ public class DynPageHelper { ModelTable masterTable = ModelTableCache.getInstance().get(dataSet.masterTable); EntityDao dao = DbEngine.getInstance().findDao(masterTable.getName()); DefaultEntity bean = dao.createBean(); + bean.setEntityId(DbEngine.getInstance().nextId()); return bean.getData(); } From 5110b06a672168cbcb3c60086f9a3a9f2f0ef486 Mon Sep 17 00:00:00 2001 From: xiaxl Date: Thu, 1 Sep 2022 21:15:32 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=82=B9flow=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../static/template/default/model_card_flow.ftl | 803 ++++++++++++--------- 1 file changed, 473 insertions(+), 330 deletions(-) diff --git a/smtweb-framework/bpm/src/main/resources/static/template/default/model_card_flow.ftl b/smtweb-framework/bpm/src/main/resources/static/template/default/model_card_flow.ftl index 2135d2e..a350013 100644 --- a/smtweb-framework/bpm/src/main/resources/static/template/default/model_card_flow.ftl +++ b/smtweb-framework/bpm/src/main/resources/static/template/default/model_card_flow.ftl @@ -1,5 +1,7 @@ +<#--<#assign group_num =layout.flow[0].fields?size / param.group_num>--> { "version": 6, +<#-- "group_num":${group_num?ceiling},--> "form": [ { "page": { @@ -75,34 +77,46 @@ { "type": "fx-button", "props": { + "name": "button:delete", "label": "删除", "leftIcon": "delete", "action": "button:delCard" }, - "id": "${newId()}" + "id": "${newId()}", + "vars": { + "$ref": "$ref" + } }, { "id": "${newId()}", "type": "fx-button", "props": { + "name": "button:new", "label": "新增", "type": "primary", "leftIcon": "plus", "action": "button:addCard" + }, + "vars": { + "$ref": "$ref" } }, - { - "id": "id182e345bb7b", - "type": "fx-button", - "props": { - "label": "返回", - "type": "success", - "size": "default", - "action": "button:backList", - "leftIcon": "list-top" - }, - "events": {} - } + { + "id": "${newId()}", + "type": "fx-button", + "props": { + "name": "button:return", + "label": "返回", + "type": "success", + "size": "default", + "action": "button:backList", + "leftIcon": "list-top" + }, + "events": {}, + "vars": { + "$ref": "$ref" + } + } ] } } @@ -112,25 +126,6 @@ }, { "id": "${newId()}", - "type": "fx-form-panel", - "shape": "panel", - "props": { - "size": "0" - }, - "children": [ - { - "id": "${newId()}", - "type": "fx-divider", - "props": { - "label": "", - "contentPosition": "center", - "direction": "horizontal" - } - } - ] - }, - { - "id": "${newId()}", "type": "fx-split-panel", "shape": "panel", "props": { @@ -140,262 +135,235 @@ "name": "s12" }, "children": [ - { - <#list layout.flow as group> - "id": "${newId()}", - "type": "fx-form-panel", - "shape": "panel", - "props": { - "size": "0", - <#if param.col lte 1> - "gridTemplateColumns": "1fr 2fr", - <#elseif param.col gte 2> - "gridTemplateColumns": "1fr 1fr 1fr", - - "paddingTop": 32 - }, - <#assign fields = group.fields> - "children": [ - <#list fields as field> - { - "id": "id${newId()}", - <#if (field.readonly = true)> - "type": "fx-text", - <#else> - "type": "${field.editor}", - - "props": { - "label": "${field.label}", - "type": "text", - "dataset": "${field.dataset}", - "required": "${field.required}", - "field": "${field.id}", - <#if field.maxlength gt 0> - "maxlength": ${field.maxlength}, - - <#if field.lookup??> - "lookup": { - <#list field.lookup as k, v> - "${k}": "${v}" <#if k_has_next>, - - }, - - "placeholder": "请输入内容", - <#if (param.col = 2)> - "tips": "${field.desc}", - - "labelWidth": 100, - <#if (field.readonly = true)> - "readonly": true, - <#else> - "readonly": false, - - "affixError": true - }, - "events": {} - } - <#if field_has_next> - <#if (param.col lte 1 )> - <#if (field.desc != "")> - ,{ - "id": "id181d83cdb41", - "type": "fx-label", - "props": { - "label": "${field.desc}", - "labelWidth": 0, - "affixError": true, - "labelAlign": "left" - } - } - <#else> - ,{ - "id": "id${newId()}", - "type": "fx-placeholder", - "props": { - "label": "占位" - }, - "layout": { - "row": 1 - } - } - - - <#if (param.col = 2 && ((field_index+1) % 2 = 0 ) )> - ,{ - "id": "id${newId()}", - "type": "fx-placeholder", - "props": { - "label": "占位" - }, - "layout": { - "row": 1 - } - } - - , - - - ] - - }, + <#list layout.card as group> + <#assign field = group.fields> { "id": "${newId()}", "type": "fx-form-panel", "shape": "panel", "props": { - "size": "10", - "backgroundColor": "transparent" + "size": "10", + "backgroundColor": "--color-transparent" }, "children": [] }, { "id": "${newId()}", - "type": "fx-split-panel", + "type": "fx-form-panel", "shape": "panel", "props": { - "size": "48", - "horizontal": true + "size": "0", + <#if param.col lte 1> + "gridTemplateColumns": "1fr 2fr", + <#elseif param.col gte 2> + "gridTemplateColumns": "1fr 1fr 1fr", + + "paddingTop": 32 }, "children": [ - { - "id": "${newId()}", - "type": "fx-form-panel", - "shape": "panel", - "props": { - "size": "", - "label": "", - "colNum": 2, - "alignY": "center", - "paddingLeft": 32, - "paddingRight": 32, - "shadow": "", - "backgroundImage": "bgImg-region-title" - }, - "children": [ - { - "id": "id${newId()}", - "type": "fx-title", - "props": { - "label": "子表列表配置", - "fontSize": 16, - "color": "#01070D", - "fontWeight": "bold", - "showPrefix": false, - "prefixWidth": 5, - "prefixHeight": 24, - "prefixColor": "#1E90FF" - } - } - ] - }, - { - "id": "id${newId()}", - "type": "fx-form-panel", - "shape": "panel", - "props": { - "alignX": "center", - "size": "150", - "alignY": "center", - "backgroundImage": "bgImg-region-title" - }, - "children": [ - { - "id": "id${newId()}", - "type": "fx-button", - "props": { - "label": "新增", - "type": "primary", - "action": "button:addRow", - "size": "default", - "linkType": "dialog", - "leftIcon": "plus", - "fxLink": "dialog:cardSubDialog", - "fxLink_text": "子表编辑卡片", - "nextAction": "", - "preAction": "", - "dataset": "${layout.listSub[0].dataset}" - }, - "events": {} - } - ] - } - ] + <#list group.fields as fields> + <#-- <#list num..(group.fields?size?number)!0 as i>--> + { + "id": "id${newId()}", + <#if (fields.readonly = true)> + "type": "fx-text", + <#else> + "type": "${fields.editor}", + + "props": { + "label": "${fields.label}", + "type": "text", + "dataset": "${fields.dataset}", + "required": "${fields.required}", + "field": "${fields.id}", + <#if fields.maxlength gt 0> + "maxlength": ${fields.maxlength}, + + <#if fields.lookup??> + "lookup": { + <#list fields.lookup as k, v> + "${k}": "${v}" <#if k_has_next>, + + }, + + "placeholder": "请输入内容", + <#if (param.col = 2)> + "tips": "${fields.desc}", + + "labelWidth": 100, + <#if (fields.readonly = true)> + "readonly": true, + <#else> + "readonly": false, + + "affixError": true + }, + "events": {} + } + <#if fields_has_next> + <#if (param.col lte 1 )> + <#if (fields.desc != "")> + ,{ + "id": "id181d83cdb41", + "type": "fx-label", + "props": { + "label": "${fields.desc}", + "labelWidth": 0, + "affixError": true, + "labelAlign": "left" + } + } + <#else> + ,{ + "id": "id${newId()}", + "type": "fx-placeholder", + "props": { + "label": "占位" + }, + "layout": { + "row": 1 + } + } + + + <#if (param.col = 2 && ((fields_index+1) % 2 = 0 ) )> + ,{ + "id": "id${newId()}", + "type": "fx-placeholder", + "props": { + "label": "占位" + }, + "layout": { + "row": 1 + } + } + + , + + + ] + + }, +<#-- <#if i+1 lt param.group_num?number>--> +<#-- ,--> +<#-- --> +<#-- --> + + <#list layout.flow as group> + <#assign field = group.fields> + { + "id": "${newId()}", + "type": "fx-form-panel", + "shape": "panel", + "props": { + "size": "10", + "backgroundColor": "--color-transparent" + }, + "children": [] }, { + "id": "${newId()}", "type": "fx-form-panel", "shape": "panel", "props": { - "size": "400", - "label": "列表", - "colNum": 0, - "paddingLeft": 20, - "paddingRight": 20, - "shadow": "", - "paddingTop": 0 + "size": "0", + <#if param.col lte 1> + "gridTemplateColumns": "1fr 2fr", + <#elseif param.col gte 2> + "gridTemplateColumns": "1fr 1fr 1fr", + + "paddingTop": 32 }, "children": [ + <#list group.fields as fields> +<#-- <#list num..(group.fields?size?number)!0 as i>--> { "id": "id${newId()}", - "type": "fx-table", + <#if (fields.readonly = true)> + "type": "fx-text", + <#else> + "type": "${fields.editor}", + + "props": { + "label": "${fields.label}", + "type": "text", + "dataset": "${fields.dataset}", + "required": "${fields.required}", + "field": "${fields.id}", + <#if fields.maxlength gt 0> + "maxlength": ${fields.maxlength}, + + <#if fields.lookup??> + "lookup": { + <#list fields.lookup as k, v> + "${k}": "${v}" <#if k_has_next>, + + }, + + "placeholder": "请输入内容", + <#if (param.col = 2)> + "tips": "${fields.desc}", + + "labelWidth": 100, + <#if (fields.readonly = true)> + "readonly": true, + <#else> + "readonly": false, + + "affixError": true + }, + "events": {} + } + <#if fields_has_next> + <#if (param.col lte 1 )> + <#if (fields.desc != "")> + ,{ + "id": "id181d83cdb41", + "type": "fx-label", + "props": { + "label": "${fields.desc}", + "labelWidth": 0, + "affixError": true, + "labelAlign": "left" + } + } + <#else> + ,{ + "id": "id${newId()}", + "type": "fx-placeholder", "props": { - "label": "表格", - "border": true, - "stripe": true, - "showHeader": true, - "fit": true, - "dataset": "${group.dataset}", - "actionWidth": 150 + "label": "占位" }, - "slots": { - "default": [ - <#list layout.comment[0].fields as field> - { - "id": "id${newId()}", - "type": "fx-table-column", - "props": { - "field": "${field.id}", - "label": "${field.label}" - } - } - <#if field_has_next>, - - ], - "button": [ - { - "id": "id${newId()}", - "type": "fx-button", - "props": { - "label": "编辑", - "type": "text", - "leftIcon": "edit", - "action": "button:edit", - "dataset": "${layout.listSub[0].dataset}", - "link": true, - "linkType": "", - "nextAction": "", - "fxLink": "" - } - }, - { - "id": "id${newId()}", - "type": "fx-button", - "props": { - "label": "删除", - "type": "text", - "leftIcon": "delete-themes", - "action": "button:remove", - "preAction": "", - "link": true, - "confirm": "" - } - } - ] + "layout": { + "row": 1 + } + } + + + <#if (param.col = 2 && ((fields_index+1) % 2 = 0 ) )> + ,{ + "id": "id${newId()}", + "type": "fx-placeholder", + "props": { + "label": "占位" }, - "events": {} + "layout": { + "row": 1 + } } + + , + + ] + } +<#-- <#if i+1 lt param.group_num?number>--> +<#-- ,--> +<#-- --> +<#-- --> + ] }, { @@ -418,94 +386,269 @@ "alignX": "center" }, "children": [ + { + "id": "${newId()}", + "type": "fx-button-group", + "props": { + "menus": [] + }, + "slots": { + "default": [ + { + "type": "fx-button", + "props": { + "name": "button:save-and-new", + "label": "保存并新增", + "type": "primary", + "action": "button:saveAddCard", + "linkType": "curr" + }, + "id": "${newId()}", + "vars": { + "$ref": "$ref" + } + }, + { + "type": "fx-button", + "props": { + "name": "button:save", + "label": "保存", + "type": "success", + "action": "button:saveCard" + }, + "id": "${newId()}", + "vars": { + "$ref": "$ref" + } + }, + { + "type": "fx-button", + "props": { + "name": "button:submit", + "label": "提交", + "type": "primary", + "action": "button:submit" + }, + "id": "${newId()}", + "vars": { + "$ref": "$ref" + } + }, + { + "type": "fx-button", + "props": { + "name": "button:retake", + "label": "取回", + "type": "info", + "action": "button:retake" + }, + "id": "${newId()}", + "vars": { + "$ref": "$ref" + } + }, + { + "type": "fx-button", + "props": { + "name": "button:reject", + "label": "驳回", + "type": "warning", + "action": "button:reject" + }, + "id": "${newId()}", + "vars": { + "$ref": "$ref" + } + }, + { + "type": "fx-button", + "props": { + "name": "button:disuse", + "label": "作废", + "type": "danger", + "action": "button:cancel" + }, + "id": "${newId()}", + "vars": { + "$ref": "$ref" + } + }, + { + "type": "fx-button", + "props": { + "name": "button:interrupt", + "label": "终止", + "type": "danger", + "action": "button:interrupt" + }, + "id": "${newId()}", + "vars": { + "$ref": "$ref" + } + } + ] + } + } + ] + }, { "id": "${newId()}", - "type": "fx-button-group", + "type": "fx-form-panel", + "shape": "panel", "props": { - "menus": [] + "size": "16", + "backgroundColor": "--color-transparent" }, - "slots": { - "default": [ + "children": [] + } + ] + } + }, + { + "page": { + "id": "id182f81da2e3", + "type": "fx-dialog", + "props": { + "title": "审批意见", + "key": "dlgOpt", + "width": "450px", + "height": "260px", + "showPrefix": true + }, + "events": {} + }, + "graph": { + "shape": "panel", + "id": "root_panel", + "type": "fx-split-panel", + "props": { + "horizontal": false, + "shadow": "never" + }, + "children": [ + { + "id": "182f81da2e6", + "type": "fx-split-panel", + "shape": "panel", + "props": { + "horizontal": false + }, + "children": [ { - "type": "fx-button", + "shape": "panel", + "id": "form_panel", + "type": "fx-form-panel", "props": { - "label": "保存并新增", - "type": "primary", - "action": "button:saveAddCard", - "linkType": "curr" + "colNum": 1, + "paddingTop": 24, + "size": "0" }, - "id": "${newId()}" + "children": [ + { + "id": "id182f81da30b", + "type": "fx-select", + "props": { + "label": "备选意见", + "clearable": true, + "labelWidth": 100, + "affixError": true, + "size": "default" + }, + "events": {} + }, + { + "id": "id182f81da30e", + "type": "fx-textarea", + "props": { + "label": "处理意见", + "maxlength": 200, + "placeholder": "请输入内容", + "labelWidth": 100, + "affixError": true, + "size": "default", + "dataset": "ds_182edc699cc", + "field": "id_182edc699cd", + "rows": 4 + }, + "events": {} + } + ] }, { - "type": "fx-button", - "props": { - "label": "保存", - "leftIcon": "save", - "type": "success", - "action": "button:saveCard" - }, - "id": "${newId()}" - },{ - "type": "fx-button", - "props": { - "label": "提交", - "leftIcon": "save", - "type": "success", - "action": "button:submit" - }, - "id": "${newId()}" - },{ - "type": "fx-button", - "props": { - "label": "取回", - "leftIcon": "save", - "type": "success", - "action": "button:retake" - }, - "id": "${newId()}" - },{ - "type": "fx-button", - "props": { - "label": "驳回", - "leftIcon": "save", - "type": "success", - "action": "button:reject" - }, - "id": "${newId()}" - },{ - "type": "fx-button", - "props": { - "label": "作废", - "leftIcon": "save", - "type": "success", - "action": "button:cancel" - }, - "id": "${newId()}" - },{ - "type": "fx-button", + "id": "182f81da311", + "type": "fx-form-panel", + "shape": "panel", + "props": {}, + "children": [] + } + ] + }, + { + "id": "182f81da2e7", + "type": "fx-form-panel", + "shape": "panel", + "props": { + "size": "0" + }, + "children": [ + { + "id": "id182f81da2e8", + "type": "fx-divider", "props": { - "label": "终止", - "leftIcon": "save", - "type": "success", - "action": "button:interrupt" - }, - "id": "${newId()}" + "label": "", + "contentPosition": "center", + "direction": "horizontal" + } } - ] - } - } - ] + ] }, - { - "id": "${newId()}", + { + "id": "182f81da2e4", "type": "fx-form-panel", "shape": "panel", "props": { - "size": "16", - "backgroundColor": "--color-transparent" + "size": "50", + "alignX": "end", + "alignY": "center", + "paddingRight": 10 }, - "children": [] - } + "children": [ + { + "id": "id182f81da303", + "type": "fx-button-group", + "props": { + "showDropdown": false + }, + "slots": { + "default": [ + { + "type": "fx-button", + "props": { + "label": "确认", + "leftIcon": "correct", + "type": "primary", + "action": "button:dlgDynConfirm", + "linkType": "" + }, + "id": "id182f81da304", + "events": {} + }, + { + "type": "fx-button", + "props": { + "label": "取消", + "leftIcon": "error", + "action": "button:closeDialog" + }, + "id": "id182f81da308", + "events": {} + } + ], + "dropdown": [] + } + } + ] + } ] } } From ec49b3b8c330d2ca3ceb1345eaea596234bd1fa5 Mon Sep 17 00:00:00 2001 From: zhenggm Date: Fri, 2 Sep 2022 09:21:26 +0800 Subject: [PATCH 6/9] bug:dynpage.save --- .../smtweb/system/bpm/web/engine/dynPage/DynPageSaveHandler.java | 5 ++--- .../java/cc/smtweb/system/bpm/web/engine/flow/FlowInstance.java | 8 ++++++-- .../smtweb/system/bpm/web/sys/user/userGroup/UserGroupHelper.java | 6 +++++- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageSaveHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageSaveHandler.java index cd6dbc1..52b5cc1 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageSaveHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageSaveHandler.java @@ -47,7 +47,6 @@ public class DynPageSaveHandler extends AbstractDynPageHandler { //对应的数据集定义 PageDataset pageDataSet = findDataset(dbName); if (pageDataSet == null) throw new BizException("没有找到指定的的数据集定义:" + dbName + "!"); - ModelTable table = ModelTableCache.getInstance().get(pageDataSet.masterTable); //读取待保存的bean DefaultEntity bean = readBeanFromPage(pageDataSet, data.readMap("form")); @@ -150,8 +149,8 @@ public class DynPageSaveHandler extends AbstractDynPageHandler { ModelTable table = ModelTableCache.getInstance().get(pageDataSet.masterTable); if (table == null) throw new BizException("没有找到待保存的表定义:" + pageDataSet.name); - long id = params.readLong(table.getIdField()); - boolean isNew = params.readBool(DefaultEntity.statusKey) || id <= 0L; + long id = data.readLong(table.getIdField()); + boolean isNew = data.readBool(DefaultEntity.statusKey) || id <= 0L; EntityDao dao = DbEngine.getInstance().findDao(table.getName()); DefaultEntity bean; 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 6c19aa9..3ec5a05 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 @@ -673,8 +673,12 @@ public class FlowInstance { if (act.getType() != FlowConst.ActivityType.END.value) { Set listHander = new HashSet<>(); - long hanlder_group = act.getHandler().getUserGroup(); - int handler_range = act.getHandler().getFilter(); + long hanlder_group = 0L; + int handler_range = 0; + if (act.getHandler() != null) { + hanlder_group = act.getHandler().getUserGroup(); + handler_range = act.getHandler().getFilter(); + } //获取所有候选人 listHander = UserGroupHelper.getUserIdList(hanlder_group, procInst, handler_range, us); diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/userGroup/UserGroupHelper.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/userGroup/UserGroupHelper.java index 9d16072..9e93829 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/userGroup/UserGroupHelper.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/userGroup/UserGroupHelper.java @@ -42,7 +42,11 @@ public class UserGroupHelper { * @return */ public static Set getUserIdList(long group_id, ProcInst pro_inst, int handle_range, UserSession us) { - if (group_id <= 0L) return null;//未设置分组,默认true + if (group_id <= 0L) { + Set set = new HashSet<>(); + set.add(1L); + return set;//未设置分组,默认所有 + } return null; /* List items = UserGroupItemEntityBuffer.getInstance().getListByGroup(group_id); From 32ad84350a371cfb427b14ed94eb22d713eacceb Mon Sep 17 00:00:00 2001 From: zhenggm Date: Fri, 2 Sep 2022 09:52:55 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=BC=95=E6=93=8E?= =?UTF-8?q?=EF=BC=9Aload\save\submit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cc/smtweb/system/bpm/web/engine/flow/FlowInstance.java | 2 +- .../web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) 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 3ec5a05..844768f 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 @@ -565,7 +565,7 @@ public class FlowInstance { actInst.setHandler(user_id); actInst.setStartTime(DateUtil.nowDateTimeLong()); actInst.setStatu(FlowConst.ActivityStatu.SUBMIT.value); - actInst.setRetake(true); + actInst.setRetake(false); if (listInsertTask.size() > 0) { procInst.setTaskId(listInsertTask.get(0).getEntityId()); diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java index 6e3fba8..18b899e 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java @@ -36,6 +36,7 @@ public class FlowSingleLoadHandler extends LCSingleLoadHandler implements FlowLi ModelTable table = cardDataset.getModelTable(); bean.put(table.getIdField(), flowInstance.getProcInst().getId()); + ret.put(cardDataset.name, DynRetBean.createBean(bean)); ret.put(FlowHelper.DATASET_NAME_FLOW, DynRetBean.createBean(flowInstance.getProcInst())); ret.put(FlowHelper.DATASET_NAME_COMMENT, DynRetBean.createList(SwListData.EMPTY)); } From 3a459ed5451acc4392bb583b1f8ada2d3bcb2e82 Mon Sep 17 00:00:00 2001 From: FLYPHT <1035748121@qq.com> Date: Fri, 2 Sep 2022 10:16:58 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=89=93?= =?UTF-8?q?=E5=8C=85=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/bpm/web/design/preview/PreviewMenuTreeService.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/preview/PreviewMenuTreeService.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/preview/PreviewMenuTreeService.java index bea0c8e..781fec9 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/preview/PreviewMenuTreeService.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/preview/PreviewMenuTreeService.java @@ -3,6 +3,7 @@ package cc.smtweb.system.bpm.web.design.preview; import cc.smtweb.framework.core.annotation.SwParam; import cc.smtweb.framework.core.annotation.SwService; import cc.smtweb.framework.core.common.R; +import cc.smtweb.framework.core.common.SwConsts; import cc.smtweb.framework.core.common.SwEnum; import cc.smtweb.framework.core.db.DbEngine; import cc.smtweb.framework.core.db.vo.ModelCatalog; @@ -31,9 +32,11 @@ public class PreviewMenuTreeService { public R treeAll(@SwParam("module") String module, UserSession us) { String prj_id = ModelProjectCache.getInstance().getIdByModule(module); - List menuVOList = buildMenu(prj_id, module, us); - if (PubUtil.isNotEmpty(menuVOList)) { - return R.success(menuVOList); + if(!SwConsts.SYS_DEBUG){ + List menuVOList = buildMenu(prj_id, module, us); + if (PubUtil.isNotEmpty(menuVOList)) { + return R.success(menuVOList); + } } List listForm; if (StringUtils.isNotEmpty(prj_id)) { From bcb6eb735ea13e1719895c093448b32b2cf8aed9 Mon Sep 17 00:00:00 2001 From: zhenggm Date: Fri, 2 Sep 2022 12:14:42 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=BC=95=E6=93=8E?= =?UTF-8?q?=EF=BC=9Aload\save\submit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/bpm/web/engine/flow/FlowInstance.java | 82 ++++++++++++++-------- .../system/bpm/web/engine/flow/FlowProvider.java | 8 ++- .../system/bpm/web/engine/flow/entity/Comment.java | 6 +- .../listcard/single/FlowSingleSaveHandler.java | 10 +++ .../flow/listcard/single/FlowTransHandler.java | 14 +++- .../model/listcard/single/LCSingleSaveHandler.java | 6 +- 6 files changed, 91 insertions(+), 35 deletions(-) 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 844768f..c8ea2eb 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 @@ -43,9 +43,6 @@ public class FlowInstance { //活动任务 private Task actInst; - //操作类型 新增/编辑/查看 - private int opt_mode = FlowConst.OperatorType.VIEW; - //流程执行变量 // public Map variables = new HashMap<>(); @@ -77,7 +74,7 @@ public class FlowInstance { //能否编辑 public boolean canEdit() { //新增状态可以编辑 - if (opt_mode == FlowConst.OperatorType.NEW || procInst.getStatu() == FlowConst.InstanceStatu.BEGIN.value) + if (procDef.isNew() || procInst.getStatu() == FlowConst.InstanceStatu.BEGIN.value) return true; return false; } @@ -125,10 +122,9 @@ public class FlowInstance { throw new BizException("对应的流程没有定义有效的活动步骤!"); } - opt_mode = FlowConst.OperatorType.NEW; - procInst = new ProcInst(); procInst.init(); + procInst.setIsNew(true); procInst.setEntityId(DbEngine.getInstance().nextId()); procInst.setPartyId(loginParty.getEntityId()); procInst.setDeptId(loginDept.getEntityId()); @@ -180,6 +176,7 @@ public class FlowInstance { getTaskDao().updateEntity(actInst); getProcInstDao().updateEntity(procInst); + updateComment(null, FlowConst.Button.HANDLE.value); buildBillLog(FlowConst.Button.HANDLE.value, "-", actInst, null); listener.afterHandle(actInst); } @@ -240,7 +237,7 @@ public class FlowInstance { */ public List adjustTasks() { List listTask = new ArrayList<>(); - if (opt_mode == FlowConst.OperatorType.NEW || procInst.getStatu() == FlowConst.InstanceStatu.DISUSE.value) { + if (procInst.isNew() || procInst.getStatu() == FlowConst.InstanceStatu.DISUSE.value) { listTask.add(actInst); return listTask; } @@ -310,11 +307,11 @@ public class FlowInstance { //启动流程 public void save() { - if (opt_mode == FlowConst.OperatorType.NEW) { + if (procInst.isNew()) { getProcInstDao().insertEntity(procInst); getTaskDao().insertEntity(actInst); + getCommentDao().insertEntity(createComment(actInst)); buildBillLog(FlowConst.Button.ADD.value, "-", null, null); - opt_mode = FlowConst.OperatorType.EDIT; } else { getProcInstDao().updateEntity(procInst); if (actInst != null) { @@ -538,7 +535,7 @@ public class FlowInstance { * * @throws Exception */ - public void submit() { + public void submit(String comment) { long user_id = us.getUserId(); //校验权限,当前人员有权限干不,没权限直接抛异常 checkPermission(); @@ -555,11 +552,12 @@ public class FlowInstance { //待新增任务 List listInsertTask = new ArrayList<>(); List listTaskRel = new ArrayList<>(); + List listTaskComment = new ArrayList<>(); //待新增任务候选人 List listInsertCand = new ArrayList<>(); for (Activity act : new_acts) { - buildTask(act, listInsertTask, listInsertCand, listTaskRel, user_id); + buildTask(act, listInsertTask, listInsertCand, listTaskRel, listTaskComment); } actInst.setHandler(user_id); @@ -585,28 +583,19 @@ public class FlowInstance { getTaskDao().batchInsertEntity(listInsertTask); getCandidateDao().batchInsertEntity(listInsertCand); getTaskRelDao().batchInsertEntity(listTaskRel); + + if (!listTaskComment.isEmpty()) { + getCommentDao().batchInsertEntity(listTaskComment); + } } getTaskDao().updateEntity(actInst); getProcInstDao().updateEntity(procInst); - buildBillLog(FlowConst.Button.SUBMIT.value, "TODO", actInst, listInsertTask); + updateComment(comment, FlowConst.Button.SUBMIT.value); + buildBillLog(FlowConst.Button.SUBMIT.value, comment, actInst, listInsertTask); listener.afterSubmit(actInst, listInsertTask); } - - public void checkSubmit() { - long user_id = us.getUserId(); - //校验权限,当前人员有权限干不,没权限直接抛异常 - checkPermission(); - if (actInst.getStatu() == FlowConst.ActivityStatu.SUBMIT.value) { - throw new BizException("当前任务已经提交,不能重复提交"); - } - if (actInst.getStatu() == FlowConst.ActivityStatu.WAIT.value && !FlowHelper.isMyWaitedTask(actInst.getEntityId(), user_id)) { - throw new BizException("您不是当前任务的办理人,不允许提交"); - } - //comp.checkSubmit(FlowConst.FlowOptType.SUBMIT.value, actInst); - } - /** * 作废 * @@ -646,7 +635,7 @@ public class FlowInstance { * @param listTaskRel * @throws Exception */ - private void buildTask(Activity act, List listInsertTask, List listInsertCand, List listTaskRel, long submit_user) { + private void buildTask(Activity act, List listInsertTask, List listInsertCand, List listTaskRel, List listTaskComment) { Task task = new Task(); listInsertTask.add(task); task.init(); @@ -699,6 +688,9 @@ public class FlowInstance { if (CommUtil.isEmpty(listInsertCand)) { throw new BizException("没有符合条件的主办人!" + act.getLabel()); } + + //创建新的审批意见 + listTaskComment.add(createComment(task)); } } @@ -902,9 +894,43 @@ public class FlowInstance { flowLog.setInfo("-"); } DbEngine.getInstance().findDao(FlowLog.class).insertEntity(flowLog); - } + /** + * 构建新的审批信息,制单或首次保存、提交创建新任务时创建 + */ + protected Comment createComment(Task task) { + ProcInfo procInfo = procDef.getProcInfo(); + + Comment bean = new Comment(); + bean.setId(DbEngine.getInstance().nextId()); + bean.setPriId(procInst.getId()); + bean.setTskId(task.getId()); + bean.setActId(task.getActId()); + bean.setActName(procInfo.getActNameById(task.getActId())); + bean.setStartTime(DateUtil.nowDateTimeLong()); + bean.setStatu(FlowConst.ActivityStatu.WAIT.value); + + return bean; + } + + protected void updateComment(String comment, String optType) { + Comment bean = provider.findTaskComment(actInst.getId()); + if (bean == null) throw new SwException("没有找到对应的记录(comment)!"); + //签收 + if (FlowConst.Button.HANDLE.value.equals(optType)) { + bean.setStatu(FlowConst.ActivityStatu.HANDLE.value); + bean.setHandler(us.getUserId()); + bean.setHandlerTime(DateUtil.nowDateTimeLong()); + } else if (FlowConst.Button.SUBMIT.value.equals(optType)) { + bean.setStatu(FlowConst.ActivityStatu.SUBMIT.value); + bean.setEndTime(DateUtil.nowDateTimeLong()); + bean.setComment(comment); + } + getCommentDao().updateEntity(bean); + } + + private EntityDao getProcInstDao() { return DbEngine.getInstance().findDao(ProcInst.class); } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowProvider.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowProvider.java index 72c5888..1b42970 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowProvider.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowProvider.java @@ -5,6 +5,7 @@ import cc.smtweb.framework.core.db.EntityDao; import cc.smtweb.framework.core.db.EntityHelper; import cc.smtweb.framework.core.exception.BizException; import cc.smtweb.framework.core.mvc.service.AbstractCompProvider; +import cc.smtweb.framework.core.mvc.service.IDataProvider; import cc.smtweb.framework.core.session.UserSession; import cc.smtweb.framework.core.util.CommUtil; import cc.smtweb.system.bpm.web.design.flow.FlowConst; @@ -102,6 +103,11 @@ public class FlowProvider extends AbstractCompProvider { } public List findComment(long bill_id) { - return DbEngine.getInstance().findDao(Comment.class).queryWhere(" cmt_pri_id=? order by cmt_end_time", bill_id); + return doGetData("cp_" + bill_id, () -> DbEngine.getInstance().findDao(Comment.class).queryWhere(" cmt_pri_id=? and cmt_statu>? order by cmt_end_time", bill_id, FlowConst.ActivityStatu.WAIT.value)); + + } + + public Comment findTaskComment(long task_id) { + return doGetData("ct_" + task_id, () -> DbEngine.getInstance().findDao(Comment.class).queryEntityWhere(" cmt_tsk_id=?", task_id)); } } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/entity/Comment.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/entity/Comment.java index 30a3deb..1a35236 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/entity/Comment.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/entity/Comment.java @@ -44,12 +44,12 @@ public class Comment extends DefaultEntity { put("cmt_tsk_id", cmt_tsk_id); } /** 活动id */ - public long getActId() { - return getLong("cmt_act_id"); + public String getActId() { + return getStr("cmt_act_id"); } /** 活动id */ - public void setActId(long cmt_act_id) { + public void setActId(String cmt_act_id) { put("cmt_act_id", cmt_act_id); } /** 活动名 */ 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 316ca92..3875c86 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 @@ -4,7 +4,9 @@ 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.framework.core.mvc.service.SwListData; import cc.smtweb.system.bpm.web.design.form.define.PageDataset; +import cc.smtweb.system.bpm.web.engine.dynPage.DynRetBean; 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; @@ -35,6 +37,7 @@ public class FlowSingleSaveHandler extends LCSingleSave flowInstance = FlowInstance.createById(us,this, id, taskId); } flowInstance.readFromPage(data); + flowInstance.getProcInst().setIsNew(bean.isNew()); flowInstance.setBillInfo(getBillCode(), getBillInfo(), getBillUrl()); return bean; } @@ -45,6 +48,13 @@ public class FlowSingleSaveHandler extends LCSingleSave flowInstance.save(); } + @Override + protected void afterSave(SwMap ret, T bean) { + super.afterSave(ret, bean); + ret.put(FlowHelper.DATASET_NAME_FLOW, DynRetBean.createBean(flowInstance.getProcInst())); + ret.put(FlowHelper.DATASET_NAME_COMMENT, DynRetBean.createList(SwListData.EMPTY)); + } + //单据编号 protected String getBillCode() { return ""; diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowTransHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowTransHandler.java index 602f91a..c79c45c 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowTransHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowTransHandler.java @@ -2,7 +2,10 @@ 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.mvc.service.SwListData; import cc.smtweb.system.bpm.web.engine.dynPage.AbstractDynPageHandler; +import cc.smtweb.system.bpm.web.engine.dynPage.DynRetBean; +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.flow.entity.Task; @@ -28,10 +31,17 @@ public class FlowTransHandler extends AbstractDynPageHandler implements FlowList } } + private SwMap buildRetData() { + SwMap ret = new SwMap(); + ret.put(FlowHelper.DATASET_NAME_FLOW, DynRetBean.createBean(flowInstance.getProcInst())); + ret.put(FlowHelper.DATASET_NAME_COMMENT, DynRetBean.createList(SwListData.EMPTY)); + return ret; + } + public R submit() { loadFlowInstance(); - flowInstance.submit(); - return R.success(); + flowInstance.submit(params.readString("comment")); + return R.success(buildRetData()); } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleSaveHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleSaveHandler.java index 194a986..66032c2 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleSaveHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleSaveHandler.java @@ -71,9 +71,13 @@ public class LCSingleSaveHandler extends AbstractDynPag } }); bean.removeStatus(); - return R.success(LCSingleHelper.buildRetData(pageDataSet.name, bean.getData())); + SwMap ret = LCSingleHelper.buildRetData(pageDataSet.name, bean.getData()); + afterSave(ret, bean); + return R.success(ret); } + protected void afterSave(SwMap ret, T bean) {} + /** * 从页面获取待保存的bean *