From 5008555ef6b85bbad29f21b5a50b4d519fea2804 Mon Sep 17 00:00:00 2001 From: zhenggm Date: Thu, 25 Aug 2022 17:42:38 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E9=A1=B5=E9=9D=A2+BillType=EF=BC=8C?= =?UTF-8?q?=E8=A1=A8=E5=AE=9A=E4=B9=89=E5=8A=A0buildBean?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bpm/web/design/db/ModelTableService.java | 14 ++++ .../system/bpm/web/design/flow/FlowConst.java | 1 + .../bpm/web/design/form/CodeBuildHandler.java | 45 ++++++++++- .../system/bpm/web/design/form/ModelForm.java | 2 +- .../bpm/web/design/form/ModelFormHelper.java | 1 + .../bpm/web/design/form/ModelFormLoadHandler.java | 7 ++ .../bpm/web/design/form/model/BaseModelWorker.java | 2 + .../system/bpm/web/engine/flow/entity/Comment.java | 88 ++++++++++++++++------ .../system/bpm/web/engine/flow/entity/Task.java | 16 +++- .../cc/smtweb/framework/core/common/SwConsts.java | 2 + .../cc/smtweb/framework/core/db/EntityHelper.java | 13 ++-- .../core/src/main/resources/流程定义.json | 1 + 12 files changed, 156 insertions(+), 36 deletions(-) diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelTableService.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelTableService.java index 4936a5f..e2849fa 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelTableService.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelTableService.java @@ -8,6 +8,7 @@ import cc.smtweb.framework.core.db.cache.ModelTableCache; import cc.smtweb.framework.core.db.vo.ModelTable; import cc.smtweb.framework.core.mvc.service.*; import cc.smtweb.framework.core.session.UserSession; +import cc.smtweb.system.bpm.web.design.form.CodeBuildHandler; /** * Created by Akmm at 2022/3/22 9:12 @@ -44,4 +45,17 @@ public class ModelTableService extends AbstractCompService { return R.error("操作失败!", e); } } + + //生成bean + public R buildBean(@SwBody SwMap params, UserSession us) { + CodeBuildHandler handler = new CodeBuildHandler(); + if (params == null) params = new SwMap(); + if (us == null) us = UserSession.createSys(); + handler.init(params, us); + try { + return handler.buildBeanByTable(); + } catch (Exception e) { + return R.error("操作失败!", e); + } + } } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/FlowConst.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/FlowConst.java index 5453203..92c3202 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/FlowConst.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/FlowConst.java @@ -65,6 +65,7 @@ public interface FlowConst { public static IntEnumBean WAIT = instance.addEnum(0, "待办"); public static IntEnumBean HANDLE = instance.addEnum(1, "办理中"); public static IntEnumBean SUBMIT = instance.addEnum(2, "已提交"); + public static IntEnumBean INTERRUPT = instance.addEnum(7, "已终止"); public static IntEnumBean DISUSE = instance.addEnum(8, "已作废"); public static IntEnumBean REJECT = instance.addEnum(9, "已驳回"); } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/CodeBuildHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/CodeBuildHandler.java index 0468f44..6775efa 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/CodeBuildHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/CodeBuildHandler.java @@ -60,6 +60,44 @@ public class CodeBuildHandler extends AbstractHandler { return R.success(); } + public R buildBeanByTable() { + userName = String.valueOf(us.getUserId()); + + //页面id + long tableId = params.readLong("tableId"); + ModelTable table = ModelTableCache.getInstance().get(tableId); + if (table == null) throw new BizException("未找到指定的表定义(" + table + ")!"); + + String moduleName = ModelProjectCache.getInstance().getModule(table.getPrjId()); + if (StringUtils.isEmpty(moduleName)) throw new BizException("此项目未定义Module!"); + if (moduleName.equals("bpm")) { + packageName = "cc.smtweb.system.bpm.web"; + } else { + packageName = "cc.smtweb.biz." + moduleName + ".web"; + } + BpmConfigBean bpmConfigBean = SpringUtil.getBean(BpmConfigBean.class); + Map mapIdeaModules = IdeaUtil.getModules(bpmConfigBean.getCodeJavaPath(), bpmConfigBean.getMode()); + if (mapIdeaModules == null || mapIdeaModules.isEmpty()) + throw new BizException("没有定义idea项目的路径(smtweb.bpm.codeJavaPath)!"); + codePath = mapIdeaModules.get(moduleName); + if (StringUtils.isEmpty(codePath)) { + throw new BizException("没有找到对应项目在idea中Module的路径(" + moduleName + ")!"); + } + codePath += "/src/main/java/"; + //加上目录 + String cn = ModelCatalogCache.getInstance().getFullName(table.getMcId()); + if (StringUtils.isNotEmpty(cn)) { + packageName += "." + cn; + } + + codePath += packageName.replaceAll("\\.", "/"); + new File(codePath).mkdirs(); + + buildJavaTable(tableId, true, table.isNeedCache()); + + return R.success(); + } + public R buildJsCode() { userName = String.valueOf(us.getUserId()); //页面id @@ -100,7 +138,8 @@ public class CodeBuildHandler extends AbstractHandler { } BpmConfigBean bpmConfigBean = SpringUtil.getBean(BpmConfigBean.class); Map mapIdeaModules = IdeaUtil.getModules(bpmConfigBean.getCodeJavaPath(), bpmConfigBean.getMode()); - if (mapIdeaModules == null || mapIdeaModules.isEmpty()) throw new BizException("没有定义idea项目的路径(smtweb.bpm.codeJavaPath)!"); + if (mapIdeaModules == null || mapIdeaModules.isEmpty()) + throw new BizException("没有定义idea项目的路径(smtweb.bpm.codeJavaPath)!"); codePath = mapIdeaModules.get(moduleName); if (StringUtils.isEmpty(codePath)) { throw new BizException("没有找到对应项目在idea中Module的路径(" + moduleName + ")!"); @@ -177,11 +216,11 @@ public class CodeBuildHandler extends AbstractHandler { if (StringUtils.isEmpty(sName)) { //模块名称 form = ModelFormCache.getInstance().get(form.getParent()); - if(form == null){ + if (form == null) { throw new BizException("页面设置未定义服务名!" + form.getTitle()); } sName = form.getService(); - if(StringUtils.isEmpty(sName)){ + if (StringUtils.isEmpty(sName)) { throw new BizException("模块设置未定义服务名!" + form.getTitle()); } } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelForm.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelForm.java index 8f060d0..509750a 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelForm.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelForm.java @@ -230,6 +230,6 @@ public class ModelForm extends DefaultEntity { //返回单据类型id public long getBillType() { - return getOpts().readLong("billType"); + return getOpts().readLong(ModelFormHelper.KEY_BILL_TYPE); } } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormHelper.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormHelper.java index f6493e8..4e0f3c6 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormHelper.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormHelper.java @@ -27,6 +27,7 @@ import java.util.*; */ public class ModelFormHelper { public static final String KEY_EVENT_PATH = "eventPath"; + public static final String KEY_BILL_TYPE = "billType"; //分组类别-list public static final String PAGE_TYPE_LIST = "list"; //分组类别-card diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormLoadHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormLoadHandler.java index 6ee7725..14f03a6 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormLoadHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormLoadHandler.java @@ -1,6 +1,7 @@ package cc.smtweb.system.bpm.web.design.form; import cc.smtweb.framework.core.common.R; +import cc.smtweb.framework.core.common.SwConsts; import cc.smtweb.framework.core.exception.BizException; import cc.smtweb.framework.core.exception.SwException; import cc.smtweb.framework.core.common.SwMap; @@ -32,6 +33,12 @@ public class ModelFormLoadHandler extends DefaultLoadHandler { if (StringUtils.isEmpty(id)) id = params.readString("pageName"); ModelForm bean = ModelFormHelper.getFromCache(id); if (bean == null) throw new BizException("没有找到指定的页面定义信息!id=" + id); + long billType = bean.getBillType(); + if (billType > 0L) { + SwMap opts = bean.getOpts(); +// opts.put(ModelFormHelper.KEY_BILL_TYPE + SwConsts.TEXT_SUFFIX, BillTypeCache.); + } + return bean; } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/model/BaseModelWorker.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/model/BaseModelWorker.java index 30761e3..0803ae5 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/model/BaseModelWorker.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/model/BaseModelWorker.java @@ -1,5 +1,6 @@ package cc.smtweb.system.bpm.web.design.form.model; +import cc.smtweb.framework.core.common.SwConsts; import cc.smtweb.framework.core.common.SwEnum; import cc.smtweb.framework.core.common.SwMap; import cc.smtweb.framework.core.db.DbEngine; @@ -29,6 +30,7 @@ public class BaseModelWorker { SwMap opts = bean.getOpts(); if (opts != null) { opts.remove(ModelFormHelper.KEY_EVENT_PATH); + opts.remove(ModelFormHelper.KEY_BILL_TYPE + SwConsts.TEXT_SUFFIX); bean.setOption(JsonUtil.encodeString(opts)); } if (bean.getType() == SwEnum.FormType.MODULE.value) { 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 597e11e..e5185f7 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 @@ -1,11 +1,12 @@ package cc.smtweb.system.bpm.web.engine.flow.entity; import cc.smtweb.framework.core.annotation.SwTable; +import cc.smtweb.framework.core.common.SwMap; import cc.smtweb.framework.core.db.impl.DefaultEntity; /** - * Created by Akmm at 2022/5/23 14:25 - * 审批意见 + * Created by 1 at 2022-08-25 17:35:03 + * 实体【[流程审批意见](WF_COMMENT)】的Entity类 */ @SwTable("WF_COMMENT") public class Comment extends DefaultEntity { @@ -15,51 +16,94 @@ public class Comment extends DefaultEntity { super(ENTITY_NAME); } + /** 主键 */ public long getId() { return getLong("cmt_id"); } - public void setId(long cmtId) { - put("cmt_id", cmtId); + /** 主键 */ + public void setId(long cmt_id) { + put("cmt_id", cmt_id); } - + /** 流程id */ public long getPriId() { return getLong("cmt_pri_id"); } - public void setPriId(long cmtPriId) { - put("cmt_pri_id", cmtPriId); + /** 流程id */ + public void setPriId(long cmt_pri_id) { + put("cmt_pri_id", cmt_pri_id); } - + /** 任务id */ public long getTskId() { return getLong("cmt_tsk_id"); } - public void setTskId(long cmtTskId) { - put("cmt_tsk_id", cmtTskId); + /** 任务id */ + public void setTskId(long cmt_tsk_id) { + put("cmt_tsk_id", cmt_tsk_id); + } + /** 步骤id */ + public long getActId() { + return getLong("cmt_act_id"); } - public long getUserId() { - return getLong("cmt_user_id"); + /** 步骤id */ + public void setActId(long cmt_act_id) { + put("cmt_act_id", cmt_act_id); + } + /** 主办人 */ + public long getHandler() { + return getLong("cmt_handler"); } - public void setUserId(long cmtUserId) { - put("cmt_user_id", cmtUserId); + /** 主办人 */ + public void setHandler(long cmt_handler) { + put("cmt_handler", cmt_handler); + } + /** 开始时间 */ + public long getStartTime() { + return getLong("cmt_start_time"); } - public String getContent() { - return getStr("cmt_content"); + /** 开始时间 */ + public void setStartTime(long cmt_start_time) { + put("cmt_start_time", cmt_start_time); + } + /** 签收时间 */ + public long getHandlerTime() { + return getLong("cmt_handler_time"); } - public void setContent(String cmtContent) { - put("cmt_content", cmtContent); + /** 签收时间 */ + public void setHandlerTime(long cmt_handler_time) { + put("cmt_handler_time", cmt_handler_time); + } + /** 结束时间 */ + public long getEndTime() { + return getLong("cmt_end_time"); } - public long getTime() { - return getLong("cmt_time"); + /** 结束时间 */ + public void setEndTime(long cmt_end_time) { + put("cmt_end_time", cmt_end_time); + } + /** 审批意见 */ + public String getComment() { + return getStr("cmt_comment"); + } + + /** 审批意见 */ + public void setComment(String cmt_comment) { + put("cmt_comment", cmt_comment); + } + /** 状态 */ + public int getStatu() { + return getInt("cmt_statu"); } - public void setTime(long cmtTime) { - put("cmt_time", cmtTime); + /** 状态 */ + public void setStatu(int cmt_statu) { + put("cmt_statu", cmt_statu); } } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/entity/Task.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/entity/Task.java index 4b602c8..bf103eb 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/entity/Task.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/entity/Task.java @@ -71,6 +71,14 @@ public class Task extends DefaultEntity { put("tsk_start_time", tskStartTime); } + public long getHandler_time() { + return getLong("tsk_handler_time"); + } + + public void setHandler_time(long tsk_handler_time) { + put("tsk_handler_time", tsk_handler_time); + } + public long getEndTime() { return getLong("tsk_end_time"); } @@ -87,12 +95,12 @@ public class Task extends DefaultEntity { put("tsk_statu", tskStatu); } - public String getSubmitIdea() { - return getStr("tsk_submit_idea"); + public String getComment() { + return getStr("comment"); } - public void setSubmitIdea(String tskSubmitIdea) { - put("tsk_submit_idea", tskSubmitIdea); + public void setComment(String comment) { + put("comment", comment); } public boolean isMake() { diff --git a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/common/SwConsts.java b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/common/SwConsts.java index 3301b11..a2efd9a 100644 --- a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/common/SwConsts.java +++ b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/common/SwConsts.java @@ -28,6 +28,8 @@ public interface SwConsts { String PARAM_ROWS = "rows"; String TOTAL_KEY = "total_count"; String DEF_DB_NAME = "sys"; + //id自动对应的文本的后缀 + String TEXT_SUFFIX = "_text"; String DEF_PWD = "abc@123456"; //初始密码 String LOGIN_VERIFY_CODE = "_VERIFY_CODE"; diff --git a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/db/EntityHelper.java b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/db/EntityHelper.java index 90a6e9f..742a3cc 100644 --- a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/db/EntityHelper.java +++ b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/db/EntityHelper.java @@ -2,6 +2,7 @@ package cc.smtweb.framework.core.db; import cc.smtweb.framework.core.cache.AbstractCache; import cc.smtweb.framework.core.cache.CacheManager; +import cc.smtweb.framework.core.common.SwConsts; import cc.smtweb.framework.core.common.SwEnum; import cc.smtweb.framework.core.common.SwMap; import cc.smtweb.framework.core.db.cache.ModelTableCache; @@ -129,7 +130,7 @@ public class EntityHelper { String sn = (String) dao.readValue(b, l.getLinkNameField()); if (StringUtils.isNotEmpty(sn)) names += "," + sn; } - bean.put(fieldName + "_text", names.length() > 1 ? names.substring(1) : ""); + bean.put(fieldName + SwConsts.TEXT_SUFFIX, names.length() > 1 ? names.substring(1) : ""); } else { List list = mapIds.computeIfAbsent(l.getLinkTable().getName(), k -> new ArrayList<>()); Collections.addAll(list, ids); @@ -160,7 +161,7 @@ public class EntityHelper { String sn = mapV.get(sId); if (StringUtils.isNotEmpty(sn)) names += "," + sn; } - bean.put(fieldName + "_text", names.substring(1)); + bean.put(fieldName + SwConsts.TEXT_SUFFIX, names.substring(1)); } } @@ -189,7 +190,7 @@ public class EntityHelper { final String fieldName = getFieldAlias(mapFieldAlias, field.getName()); String value = bean.readString(fieldName); if (StringUtils.isNotEmpty(value)) { - bean.put(fieldName + "_text", formatter.format(value)); + bean.put(fieldName + SwConsts.TEXT_SUFFIX, formatter.format(value)); } } } @@ -223,9 +224,9 @@ public class EntityHelper { if (StringUtils.isNotEmpty(sn)) names += "," + sn; } if (StringUtils.isNotEmpty(names)) { - row.put(fieldName + "_text", names.substring(1)); + row.put(fieldName + SwConsts.TEXT_SUFFIX, names.substring(1)); } else { - row.put(fieldName + "_text", ""); + row.put(fieldName + SwConsts.TEXT_SUFFIX, ""); } } else { List list = mapIds.computeIfAbsent(l.getLinkTable().getName(), k -> new ArrayList<>()); @@ -259,7 +260,7 @@ public class EntityHelper { String sn = mapV.get(sId); if (StringUtils.isNotEmpty(sn)) names += "," + sn; } - row.put(fieldName + "_text", names.substring(1)); + row.put(fieldName + SwConsts.TEXT_SUFFIX, names.substring(1)); } } } diff --git a/smtweb-framework/core/src/main/resources/流程定义.json b/smtweb-framework/core/src/main/resources/流程定义.json index 75c1f0e..5e92dda 100644 --- a/smtweb-framework/core/src/main/resources/流程定义.json +++ b/smtweb-framework/core/src/main/resources/流程定义.json @@ -539,6 +539,7 @@ "label": "活动名称", "page": "表单定义", "canEdit": "是否可编辑", + "canEnd": "不同意时,允许直接结束 true/false", "needSign": "是否需要会签", "buttons": [ { From 038b02e7d890a92a8b6cdf37d6fccc73b43df7d7 Mon Sep 17 00:00:00 2001 From: zhenggm Date: Thu, 25 Aug 2022 17:44:38 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E9=A1=B5=E9=9D=A2+BillType=EF=BC=8C?= =?UTF-8?q?=E8=A1=A8=E5=AE=9A=E4=B9=89=E5=8A=A0buildBean?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cc/smtweb/system/bpm/web/design/form/CodeBuildHandler.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/CodeBuildHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/CodeBuildHandler.java index 6775efa..bd42eaa 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/CodeBuildHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/CodeBuildHandler.java @@ -57,6 +57,7 @@ public class CodeBuildHandler extends AbstractHandler { buildJavaTable(tableId, needBean, needCache); } if (needBuildService) buildJavaService(pageId); + System.out.println("JAVA代码路径:" + codePath); return R.success(); } @@ -94,7 +95,7 @@ public class CodeBuildHandler extends AbstractHandler { new File(codePath).mkdirs(); buildJavaTable(tableId, true, table.isNeedCache()); - + System.out.println("JAVA代码路径:" + codePath); return R.success(); } @@ -117,6 +118,7 @@ public class CodeBuildHandler extends AbstractHandler { model.put("title", form.getTitle()); model.put("eventPath", eventPath + "." + form.getName()); CodeGenerator.getInstance().generateJsEvent(model, codePath + "/" + form.getName() + ".js"); + System.out.println("JS代码路径:" + codePath); return R.success(); } From 5d9fc400b0327167cc6c47439265e85599eeb05a Mon Sep 17 00:00:00 2001 From: zhenggm Date: Thu, 25 Aug 2022 18:50:20 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E9=A1=B5=E9=9D=A2+BillType=EF=BC=8C?= =?UTF-8?q?=E8=A1=A8=E5=AE=9A=E4=B9=89=E5=8A=A0buildBean?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cc/smtweb/system/bpm/web/design/form/ModelFormHelper.java | 1 + .../cc/smtweb/system/bpm/web/design/form/ModelFormLoadHandler.java | 3 ++- .../core/src/main/java/cc/smtweb/framework/core/db/EntityDao.java | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormHelper.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormHelper.java index 4e0f3c6..c72a48a 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormHelper.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormHelper.java @@ -517,6 +517,7 @@ public class ModelFormHelper { public static void buildFieldInfo(ModelTable table, ModelField field, SwMap col) { col.put("name", field.getName()); col.put("dataType", field.getDataType()); + col.put("fieldType", field.getFieldType()); col.put("null", field.getNotNull()); col.put("default", field.getDefaultValue()); col.put("title", field.getTitle()); diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormLoadHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormLoadHandler.java index 14f03a6..204e0c4 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormLoadHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormLoadHandler.java @@ -12,6 +12,7 @@ import cc.smtweb.framework.core.util.SpringUtil; import cc.smtweb.system.bpm.spring.BpmConfigBean; import cc.smtweb.system.bpm.util.IdeaUtil; import cc.smtweb.system.bpm.web.design.db.ModelProjectCache; +import cc.smtweb.system.bpm.web.sys.base.billType.BillTypeCache; import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; @@ -36,7 +37,7 @@ public class ModelFormLoadHandler extends DefaultLoadHandler { long billType = bean.getBillType(); if (billType > 0L) { SwMap opts = bean.getOpts(); -// opts.put(ModelFormHelper.KEY_BILL_TYPE + SwConsts.TEXT_SUFFIX, BillTypeCache.); + opts.put(ModelFormHelper.KEY_BILL_TYPE + SwConsts.TEXT_SUFFIX, BillTypeCache.getInstance().getName(billType)); } return bean; diff --git a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/db/EntityDao.java b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/db/EntityDao.java index bdadac7..6a518ef 100644 --- a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/db/EntityDao.java +++ b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/db/EntityDao.java @@ -359,6 +359,7 @@ public class EntityDao extends AbstractEntityDao { * 查询对象所有数据,返回列表 */ public List query(String fields) { + if (StringUtils.isEmpty(fields) && columns.isEmpty()) return null; StringBuilder sb = new StringBuilder(); handleSelect(sb, fields); From 2d260a594066ec1be6fd3d575bb9a6e12985a9b8 Mon Sep 17 00:00:00 2001 From: zhenggm Date: Thu, 25 Aug 2022 20:20:27 +0800 Subject: [PATCH 04/10] loadProcInstFields --- .../bpm/web/design/flow/ModelProcService.java | 23 +++++++++ .../model/listcard/single/LCSingleSaveHandler.java | 34 ++++++------- .../model/listcard/single/LCSingleService.java | 18 +++++-- .../system/bpm/web/sys/base/billType/BillType.java | 55 ++++++++++++++++++++++ .../bpm/web/sys/base/billType/BillTypeCache.java | 34 +++++++++++++ .../web/sys/base/billType/BillTypeSaveHandler.java | 21 +++++++++ .../bpm/web/sys/base/billType/BillTypeService.java | 30 ++++++++++++ 7 files changed, 195 insertions(+), 20 deletions(-) create mode 100644 smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillType.java create mode 100644 smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillTypeCache.java create mode 100644 smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillTypeSaveHandler.java create mode 100644 smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillTypeService.java diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcService.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcService.java index 0f71cce..63c033d 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcService.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcService.java @@ -4,11 +4,19 @@ 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.cache.ModelTableCache; +import cc.smtweb.framework.core.db.vo.ModelField; +import cc.smtweb.framework.core.db.vo.ModelTable; import cc.smtweb.framework.core.mvc.service.AbstractCompService; import cc.smtweb.framework.core.mvc.service.AbstractHandler; import cc.smtweb.framework.core.mvc.service.DefaultDelHandler; import cc.smtweb.framework.core.mvc.service.DefaultListHandler; import cc.smtweb.framework.core.session.UserSession; +import cc.smtweb.system.bpm.web.design.form.ModelFormHelper; +import cc.smtweb.system.bpm.web.engine.flow.entity.ProcInst; + +import java.util.ArrayList; +import java.util.List; /** * Created by Akmm at 2022/3/22 9:12 @@ -40,5 +48,20 @@ public class ModelProcService extends AbstractCompService { public R loadModel(@SwBody SwMap params, UserSession us) { return pageHandler(params, us, TYPE_LOAD, handler -> ((ModelProcLoadHandler)handler).loadModel()); } + + //加载工作流的列表字段 + public R loadProcInstFields(@SwBody SwMap params, UserSession us) { + ModelTable table = ModelTableCache.getInstance().get(ProcInst.ENTITY_NAME); + if (table == null) return R.error("没有找到表定义信息(table=" + ProcInst.ENTITY_NAME + ")!"); + + List ret = new ArrayList<>(); + for (ModelField field : table.getFields()) { + SwMap col = new SwMap(2); + ModelFormHelper.buildFieldInfo(table, field, col); + ret.add(col); + } + + 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 b06620d..8375e4f 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 @@ -32,10 +32,10 @@ import java.util.Map; * 保存操作 * 入参:{pageId, data:} */ -public class LCSingleSaveHandler extends AbstractDynPageHandler { - private Map> mapTreeBean = new HashMap<>(); +public class LCSingleSaveHandler extends AbstractDynPageHandler { + private Map> mapTreeBean = new HashMap<>(); - protected void setNewId(DefaultEntity bean) { + protected void setNewId(T bean) { bean.setEntityId(DbEngine.getInstance().nextId()); } @@ -52,7 +52,7 @@ public class LCSingleSaveHandler extends AbstractDynPageHandler { //对应的数据集定义 PageDataset pageDataSet = LCSingleHelper.findCardDataset(datasets); //读取待保存的bean - DefaultEntity bean = readBeanFromPage(pageDataSet, data); + T bean = readBeanFromPage(pageDataSet, data); if (filter != null && bean.isNew()) {//有过滤条件,将关联的值设上 setLinkValue(pageDataSet, bean, f -> filter.get(f.name)); } @@ -84,7 +84,7 @@ public class LCSingleSaveHandler extends AbstractDynPageHandler { * @param data * @return */ - protected DefaultEntity readBeanFromPage(PageDataset pageDataSet, SwMap pageData) { + protected T readBeanFromPage(PageDataset pageDataSet, SwMap pageData) { ModelTable table = ModelTableCache.getInstance().get(pageDataSet.masterTable); if (table == null) throw new BizException("没有找到待保存的表定义:" + pageDataSet.name); @@ -95,8 +95,8 @@ public class LCSingleSaveHandler extends AbstractDynPageHandler { long id = data.readLong(table.getIdField()); - EntityDao dao = DbEngine.getInstance().findDao(table.getName()); - DefaultEntity bean; + EntityDao dao = DbEngine.getInstance().findDao(table.getName()); + T bean; if (id <= 0L) { bean = dao.createBean(); bean.setIsNew(true); @@ -121,7 +121,7 @@ public class LCSingleSaveHandler extends AbstractDynPageHandler { * * @param bean */ - protected void checkBean(DefaultEntity bean) { + protected void checkBean(T bean) { ModelTable table = ModelTableCache.getInstance().getByName(bean.getTableName()); for (ModelField field : table.getFields()) { String value = bean.getStr(field.getName()); @@ -139,7 +139,7 @@ public class LCSingleSaveHandler extends AbstractDynPageHandler { } } //唯一键校验 - EntityDao dao = DbEngine.getInstance().findDao(bean.getTableName()); + EntityDao dao = DbEngine.getInstance().findDao(bean.getTableName()); for (ModelIndex mi : table.getIndexes()) { if (mi.isUnique()) { dao.checkUnique(bean, mi.getFields().split(",")); @@ -147,9 +147,9 @@ public class LCSingleSaveHandler extends AbstractDynPageHandler { } } - protected void saveBean(DefaultEntity bean) { + protected void saveBean(T bean) { final String tableName = bean.getTableName(); - EntityDao dao = DbEngine.getInstance().findDao(tableName); + EntityDao dao = DbEngine.getInstance().findDao(tableName); if (bean.isNew()) { dao.insertEntity(bean); } else { @@ -159,18 +159,18 @@ public class LCSingleSaveHandler extends AbstractDynPageHandler { dao.updateEntity(bean); if (table.getType() == SwEnum.TableType.TYPE_TREE.value) { - List listTreeBean = TreeHelper.getTreeHelper(tableName).resetTreeLevel(bean); + List listTreeBean = TreeHelper.getTreeHelper(tableName).resetTreeLevel(bean); mapTreeBean.put(tableName, listTreeBean); } } } - protected void afterCommit(DefaultEntity bean) { + protected void afterCommit(T bean) { final String tableName = bean.getTableName(); ModelTable table = ModelTableCache.getInstance().getByName(tableName); if (table.isNeedCache()) { AbstractCache cache = CacheManager.getIntance().getCache(tableName); - List listTreeBean = mapTreeBean.get(tableName); + List listTreeBean = mapTreeBean.get(tableName); //树型表,父亲改变了,要多处理下缓存;还有个东东:级次码 if (listTreeBean != null && !listTreeBean.isEmpty()) { for (DefaultEntity b : listTreeBean) { @@ -182,17 +182,17 @@ public class LCSingleSaveHandler extends AbstractDynPageHandler { } } - protected void afterRollback(DefaultEntity bean) { + protected void afterRollback(T bean) { final String tableName = bean.getTableName(); ModelTable table = ModelTableCache.getInstance().getByName(tableName); if (table.isNeedCache()) { - AbstractCache cache = CacheManager.getIntance().getCache(tableName); + AbstractCache cache = CacheManager.getIntance().getCache(tableName); cache.reset(bean); } } //将关联的值设上 - protected void setLinkValue(PageDataset pageDataSet, DefaultEntity bean, IGetValue iGetValue) { + protected void setLinkValue(PageDataset pageDataSet, T bean, IGetValue iGetValue) { ModelTable table = ModelTableCache.getInstance().getByName(bean.getTableName()); for (PageDatasetFilter f : pageDataSet.filters) { String v = bean.getStr(f.field); diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleService.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleService.java index 0dd9ce0..9d25c89 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleService.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/listcard/single/LCSingleService.java @@ -27,15 +27,27 @@ public class LCSingleService extends DynPageService { case TYPE_MODEL_LIST: case TYPE_MODEL_LOAD: case TYPE_MODEL_ADD: - return new LCSingleLoadHandler(); + return getLoadHandler(); case TYPE_MODEL_SAVE: - return new LCSingleSaveHandler(); + return getSaveHandler(); case TYPE_MODEL_DEL: - return new LCSingleDelHandler(); + return getDelHandler(); } return super.createHandler(type); } + protected LCSingleSaveHandler getSaveHandler() { + return new LCSingleSaveHandler(); + } + + protected LCSingleLoadHandler getLoadHandler() { + return new LCSingleLoadHandler(); + } + + protected LCSingleDelHandler getDelHandler() { + return new LCSingleDelHandler(); + } + //保存 public R modelSave(@SwBody SwMap params, UserSession us) { return pageHandler(params, us, TYPE_MODEL_SAVE, handler -> ((LCSingleSaveHandler)handler).save()); diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillType.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillType.java new file mode 100644 index 0000000..daf1a14 --- /dev/null +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillType.java @@ -0,0 +1,55 @@ +package cc.smtweb.system.bpm.web.sys.base.billType; + +import cc.smtweb.framework.core.annotation.SwTable; +import cc.smtweb.framework.core.common.SwMap; +import cc.smtweb.framework.core.db.impl.DefaultEntity; + +/** + * Created by 1 at 2022-08-25 18:13:32 + * 实体【[单据类型](SYS_BILL_TYPE)】的Entity类 + */ +@SwTable("SYS_BILL_TYPE") +public class BillType extends DefaultEntity { + public static final String ENTITY_NAME = "SYS_BILL_TYPE"; + + public BillType() { + super(ENTITY_NAME); + } + + /** 主键 */ + public long getId() { + return getLong("sbtp_id"); + } + + /** 主键 */ + public void setId(long sbtp_id) { + put("sbtp_id", sbtp_id); + } + /** 编码 */ + public String getCode() { + return getStr("sbtp_code"); + } + + /** 编码 */ + public void setCode(String sbtp_code) { + put("sbtp_code", sbtp_code); + } + /** 名称 */ + public String getName() { + return getStr("sbtp_name"); + } + + /** 名称 */ + public void setName(String sbtp_name) { + put("sbtp_name", sbtp_name); + } + /** 备注 */ + public String getRemark() { + return getStr("sbtp_remark"); + } + + /** 备注 */ + public void setRemark(String sbtp_remark) { + put("sbtp_remark", sbtp_remark); + } +} diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillTypeCache.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillTypeCache.java new file mode 100644 index 0000000..ff597fa --- /dev/null +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillTypeCache.java @@ -0,0 +1,34 @@ +package cc.smtweb.system.bpm.web.sys.base.billType; + +import cc.smtweb.framework.core.annotation.SwCache; +import cc.smtweb.framework.core.cache.AbstractEntityCache; +import cc.smtweb.framework.core.cache.CacheManager; + +/** + * Created by 1 at 2022-08-25 18:13:32 + * 实体【[单据类型](SYS_BILL_TYPE)】的缓存类 + */ +@SwCache(ident = "SYS_BILL_TYPE", title = "单据类型") +public class BillTypeCache extends AbstractEntityCache { + //缓存key:按编码 + public final static String mk_code = "code"; + + public static BillTypeCache getInstance() { + return CacheManager.getIntance().getCache(BillTypeCache.class); + } + + public BillTypeCache() { + //缓存key:按编码 + regMap(mk_code, "sbtp_code"); + } + + //缓存key:按编码 + public final BillType getByCode(String key) { + return getByKey(mk_code, key); + } + + public String getName(long id) { + BillType bean = get(id); + return bean != null ? bean.getName() : String.valueOf(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 new file mode 100644 index 0000000..dedf6b4 --- /dev/null +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillTypeSaveHandler.java @@ -0,0 +1,21 @@ +package cc.smtweb.system.bpm.web.sys.base.billType; + +import cc.smtweb.framework.core.db.impl.DefaultEntity; +import cc.smtweb.framework.core.exception.BizException; +import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleSaveHandler; +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) { + if (StringUtils.isEmpty(bean.getCode())) { + throw new BizException("编码不能为空!"); + } + + bean.setId(Long.parseLong(bean.getCode())); + } +} diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillTypeService.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillTypeService.java new file mode 100644 index 0000000..c08d3b0 --- /dev/null +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billType/BillTypeService.java @@ -0,0 +1,30 @@ +package cc.smtweb.system.bpm.web.sys.base.billType; + +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.mvc.service.DefaultComboHandler; +import cc.smtweb.system.bpm.web.engine.dynPage.DynPageService; +import cc.smtweb.framework.core.mvc.service.AbstractHandler; +import cc.smtweb.framework.core.session.UserSession; +import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleSaveHandler; +import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleService; + +/** + * Created by 1 at 2022-08-25 18:44:57 + * 页面【[单据类型列表]的服务类 + */ +@SwService +public class BillTypeService extends LCSingleService { + @Override + protected AbstractHandler createHandler(String type) { + if (TYPE_COMBO.equals(type)) return new DefaultComboHandler(BillType.ENTITY_NAME); + return super.createHandler(type); + } + + @Override + protected LCSingleSaveHandler getSaveHandler() { + return new BillTypeSaveHandler(); + } +} From 3364f653484f7ca381eafd183ffe383b4d719e60 Mon Sep 17 00:00:00 2001 From: zhenggm Date: Fri, 26 Aug 2022 09:50:11 +0800 Subject: [PATCH 05/10] loadProcInstFields --- .../system/bpm/web/design/flow/ModelProcService.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcService.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcService.java index 63c033d..4bf424b 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcService.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcService.java @@ -13,6 +13,7 @@ import cc.smtweb.framework.core.mvc.service.DefaultDelHandler; import cc.smtweb.framework.core.mvc.service.DefaultListHandler; import cc.smtweb.framework.core.session.UserSession; import cc.smtweb.system.bpm.web.design.form.ModelFormHelper; +import cc.smtweb.system.bpm.web.engine.flow.entity.Comment; import cc.smtweb.system.bpm.web.engine.flow.entity.ProcInst; import java.util.ArrayList; @@ -63,5 +64,19 @@ public class ModelProcService extends AbstractCompService { return R.success(ret); } - + + //加载审批意见的列表字段 + public R loadCommentFields(@SwBody SwMap params, UserSession us) { + ModelTable table = ModelTableCache.getInstance().get(Comment.ENTITY_NAME); + if (table == null) return R.error("没有找到表定义信息(table=" + Comment.ENTITY_NAME + ")!"); + + List ret = new ArrayList<>(); + for (ModelField field : table.getFields()) { + SwMap col = new SwMap(2); + ModelFormHelper.buildFieldInfo(table, field, col); + ret.add(col); + } + + return R.success(ret); + } } From 69f9d6930ce3a7c3b7019b5d3368155b9001811e Mon Sep 17 00:00:00 2001 From: zhenggm Date: Fri, 26 Aug 2022 11:31:25 +0800 Subject: [PATCH 06/10] loadProcInstFields --- .../bpm/web/design/flow/ModelProcService.java | 21 ++++++++++++++++++--- .../bpm/web/design/form/ModelFormLoadHandler.java | 1 + 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcService.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcService.java index 4bf424b..d671148 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcService.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcService.java @@ -3,6 +3,8 @@ package cc.smtweb.system.bpm.web.design.flow; 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.SwConsts; +import cc.smtweb.framework.core.common.SwEnum; import cc.smtweb.framework.core.common.SwMap; import cc.smtweb.framework.core.db.cache.ModelTableCache; import cc.smtweb.framework.core.db.vo.ModelField; @@ -12,12 +14,15 @@ import cc.smtweb.framework.core.mvc.service.AbstractHandler; import cc.smtweb.framework.core.mvc.service.DefaultDelHandler; import cc.smtweb.framework.core.mvc.service.DefaultListHandler; import cc.smtweb.framework.core.session.UserSession; +import cc.smtweb.system.bpm.web.design.form.ModelForm; +import cc.smtweb.system.bpm.web.design.form.ModelFormCache; import cc.smtweb.system.bpm.web.design.form.ModelFormHelper; import cc.smtweb.system.bpm.web.engine.flow.entity.Comment; import cc.smtweb.system.bpm.web.engine.flow.entity.ProcInst; import java.util.ArrayList; import java.util.List; +import java.util.Set; /** * Created by Akmm at 2022/3/22 9:12 @@ -52,7 +57,7 @@ public class ModelProcService extends AbstractCompService { //加载工作流的列表字段 public R loadProcInstFields(@SwBody SwMap params, UserSession us) { - ModelTable table = ModelTableCache.getInstance().get(ProcInst.ENTITY_NAME); + ModelTable table = ModelTableCache.getInstance().getByName(ProcInst.ENTITY_NAME); if (table == null) return R.error("没有找到表定义信息(table=" + ProcInst.ENTITY_NAME + ")!"); List ret = new ArrayList<>(); @@ -67,7 +72,7 @@ public class ModelProcService extends AbstractCompService { //加载审批意见的列表字段 public R loadCommentFields(@SwBody SwMap params, UserSession us) { - ModelTable table = ModelTableCache.getInstance().get(Comment.ENTITY_NAME); + ModelTable table = ModelTableCache.getInstance().getByName(Comment.ENTITY_NAME); if (table == null) return R.error("没有找到表定义信息(table=" + Comment.ENTITY_NAME + ")!"); List ret = new ArrayList<>(); @@ -76,7 +81,17 @@ public class ModelProcService extends AbstractCompService { ModelFormHelper.buildFieldInfo(table, field, col); ret.add(col); } - + ret.add(buildField("cmt_act_code", SwEnum.DataType.CODE.value, "活动编号")); + ret.add(buildField("cmt_act_text", SwEnum.DataType.NAME.value, "活动名称")); return R.success(ret); } + + private SwMap buildField(String name, String dataType, String title) { + SwMap col = new SwMap(); + col.put("name", name); + col.put("dataType", dataType); + col.put("title", title); + col.put("editor", SwEnum.EditorType.INPUT.value); + return col; + } } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormLoadHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormLoadHandler.java index 204e0c4..e47862a 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormLoadHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormLoadHandler.java @@ -38,6 +38,7 @@ public class ModelFormLoadHandler extends DefaultLoadHandler { if (billType > 0L) { SwMap opts = bean.getOpts(); opts.put(ModelFormHelper.KEY_BILL_TYPE + SwConsts.TEXT_SUFFIX, BillTypeCache.getInstance().getName(billType)); + bean.setOption(JsonUtil.encodeString(opts)); } return bean; From 575d3e4ca6ae7a102d39749bc815f96c856bc383 Mon Sep 17 00:00:00 2001 From: zhenggm Date: Fri, 26 Aug 2022 15:14:35 +0800 Subject: [PATCH 07/10] loadProcInstFields --- .../java/cc/smtweb/system/bpm/web/design/form/ModelFormDelHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormDelHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormDelHandler.java index dc22549..f5639fd 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormDelHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormDelHandler.java @@ -28,7 +28,7 @@ public class ModelFormDelHandler extends DefaultDelHandler { @Override protected void delDb() { EntityDao dao = DbEngine.getInstance().findDao(ModelForm.class); - listDeled = ModelFormCache.getInstance().getListByModule(id); + listDeled = new HashSet<>(ModelFormCache.getInstance().getListByModule(id)); if (CommUtil.isEmpty(listDeled)) { dao.deleteEntity(id); } else { From afbcf25d15c33a96f2b620b9063c6b6573fcc8e4 Mon Sep 17 00:00:00 2001 From: zhenggm Date: Fri, 26 Aug 2022 15:16:14 +0800 Subject: [PATCH 08/10] loadProcInstFields --- .../cc/smtweb/system/bpm/web/design/form/ModelFormDelHandler.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormDelHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormDelHandler.java index f5639fd..0311c6e 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormDelHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormDelHandler.java @@ -28,13 +28,15 @@ public class ModelFormDelHandler extends DefaultDelHandler { @Override protected void delDb() { EntityDao dao = DbEngine.getInstance().findDao(ModelForm.class); - listDeled = new HashSet<>(ModelFormCache.getInstance().getListByModule(id)); - if (CommUtil.isEmpty(listDeled)) { + Set list = new HashSet<>(ModelFormCache.getInstance().getListByModule(id)); + if (CommUtil.isEmpty(list)) { + listDeled = null; dao.deleteEntity(id); } else { + listDeled = new HashSet<>(list); List ids = new ArrayList<>(); ids.add(id); - for (ModelForm form: listDeled) { + for (ModelForm form: list) { ids.add(form.getId()); } dao.deleteEntity(ids); From 69d8e41b59a4ec29c6b50db31253af7821a62d79 Mon Sep 17 00:00:00 2001 From: zhenggm Date: Sat, 27 Aug 2022 17:39:58 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=BC=95=E6=93=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bpm/web/design/flow/ModelProcHelper.java | 2 +- .../bpm/web/engine/dynPage/DynPageHelper.java | 2 +- .../bpm/web/engine/dynPage/DynPageListHandler.java | 2 +- .../system/bpm/web/engine/dynPage/DynRetBean.java | 4 + .../system/bpm/web/engine/flow/FlowHelper.java | 4 + .../system/bpm/web/engine/flow/FlowInstance.java | 87 ++++++++-------- .../system/bpm/web/engine/flow/FlowListener.java | 15 ++- .../system/bpm/web/engine/flow/FlowProvider.java | 15 ++- .../system/bpm/web/engine/flow/entity/Comment.java | 13 ++- .../system/bpm/web/engine/flow/entity/FlowLog.java | 100 ++++++++++++++++++ .../bpm/web/engine/flow/entity/ProcInst.java | 114 +++++++++++++-------- .../listcard/single/FlowSingleLoadHandler.java | 69 +++++++++++++ .../listcard/single/FlowSingleSaveHandler.java | 12 +++ .../flow/listcard/single/FlowSingleService.java | 27 +++++ .../model/listcard/single/LCSingleLoadHandler.java | 18 ++-- .../bpm/web/sys/base/billFlow/BillFlowCache.java | 2 +- .../cc/smtweb/framework/core/common/SwConsts.java | 1 + 17 files changed, 372 insertions(+), 115 deletions(-) create mode 100644 smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/entity/FlowLog.java create mode 100644 smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java create mode 100644 smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleSaveHandler.java create mode 100644 smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleService.java diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcHelper.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcHelper.java index c2e2c5b..e4bb213 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcHelper.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcHelper.java @@ -34,7 +34,7 @@ public class ModelProcHelper { * @param user_id * @return */ - public static ModelProc getBillProc(int bill_type, long user_id) { + public static ModelProc getBillProc(long bill_type, long user_id) { Set list = BillFlowCache.getInstance().getByBillType(bill_type); if (CommUtil.isEmpty(list)) { 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 d078136..ca7aecd 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 @@ -37,7 +37,7 @@ public class DynPageHelper { * @return */ public static SwMap createBean(PageDataset dataSet) { - if (dataSet.masterTable <= 0) { + if (dataSet.masterTable <= 0L) { return new SwMap(); } //主表 diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageListHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageListHandler.java index a4b6047..7a5187d 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageListHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageListHandler.java @@ -57,7 +57,7 @@ public class DynPageListHandler extends AbstractListHandler { } else { list = DbEngine.getInstance().queryN(sql, sp.mapParas, SwMap.class); } - if(pageDataSet.masterTable != 0 && pageDataSet.masterTable != -1){ + if(pageDataSet.masterTable > 0L){ ModelTable masterTable = ModelTableCache.getInstance().get(pageDataSet.masterTable); EntityHelper.loadBeanText(masterTable.getName(), list, sp.mapFieldAlias); } 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 8d85fc7..aaaf7b3 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 @@ -1,6 +1,7 @@ package cc.smtweb.system.bpm.web.engine.dynPage; import cc.smtweb.framework.core.common.SwMap; +import cc.smtweb.framework.core.db.impl.DefaultEntity; import cc.smtweb.framework.core.mvc.service.SwListData; import lombok.Data; @@ -15,6 +16,9 @@ public class DynRetBean { //列表返回 private SwListData list = null; + public static DynRetBean createBean(DefaultEntity bean) { + return createBean(bean.getData()); + } public static DynRetBean createBean(SwMap swMap) { SwMap form = (SwMap) swMap.clone(); DynRetBean bean = new DynRetBean(); diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowHelper.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowHelper.java index da78927..d43b53f 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowHelper.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowHelper.java @@ -22,6 +22,10 @@ import java.util.List; * 单据 */ public class FlowHelper { + //页面定义中流程数据集名 + public final static String DATASET_NAME_FLOW = "flow"; + //页面定义中流程审批数据集名 + public final static String DATASET_NAME_COMMENT = "comment"; //获取页面单据类型 public static long getBillType(String pageId) { 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 9b7bc49..5b3312f 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 @@ -14,6 +14,9 @@ import cc.smtweb.system.bpm.web.design.flow.FlowConst; 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; @@ -53,6 +56,7 @@ public class FlowInstance { private List> tasks = new ArrayList<>(); //数据提供者 private FlowProvider provider = new FlowProvider(); + private FlowListener listener; public FlowInstance(@NonNull FlowListener listener, UserSession us) { @@ -90,7 +94,7 @@ public class FlowInstance { * @param bill_type * @throws Exception */ - public void create(int bill_type) { + public void create(long bill_type) { Party loginParty = PartyCache.getInstance().get(us.getPartyId()); if (EntityHelper.isEmpty(loginParty)) { throw new BizException("当前登录人员管理单位信息为空,请检查后保存!"); @@ -165,7 +169,7 @@ public class FlowInstance { getTaskDao().updateEntity(actInst); getProcInstDao().updateEntity(procInst); - buildBillLog(FlowConst.Button.HANDLE.value, actInst, null); + buildBillLog(FlowConst.Button.HANDLE.value, "-", actInst, null); listener.handle(actInst); } @@ -191,6 +195,11 @@ public class FlowInstance { } } + //加载审批意见 + public List loadComment() { + return provider.findComment(procInst.getId()); + } + /** * 当前任务处于待办时: * 上一步办理人进来,看上一个步骤,否则看当前步骤 @@ -204,7 +213,7 @@ public class FlowInstance { if (EntityHelper.isEmpty(curTask) || curTask.getStatu() != FlowConst.ActivityStatu.WAIT.value) return task_id; List preActs = provider.findBeforeTasks(task_id); if (CommUtil.isEmpty(preActs)) return task_id; - for (Task act: preActs) { + for (Task act : preActs) { if (act.getHandler() == us.getUserId()) { return act.getId(); } @@ -285,7 +294,7 @@ public class FlowInstance { public void setBillInfo(String bill_code, String bill_info, String bill_url) { procInst.setBillInfo(bill_info); procInst.setBillCode(bill_code); -// procInst.setBillUrl(bill_url); todo + procInst.setUrl(bill_url); } //启动流程 @@ -293,7 +302,7 @@ public class FlowInstance { if (opt_mode == FlowConst.OperatorType.NEW) { getProcInstDao().insertEntity(procInst); getTaskDao().insertEntity(actInst); - buildBillLog(FlowConst.Button.ADD.value, null, null); + buildBillLog(FlowConst.Button.ADD.value, "-", null, null); opt_mode = FlowConst.OperatorType.EDIT; } else { getProcInstDao().updateEntity(procInst); @@ -454,7 +463,7 @@ public class FlowInstance { } } - public void submitToEnd() { + /*public void submitToEnd() { long user_id = us.getUserId(); //校验权限,当前人员有权限干不,没权限直接抛异常 checkPermission(); @@ -508,9 +517,9 @@ public class FlowInstance { getTaskDao().updateEntity(actInst); getProcInstDao().updateEntity(procInst); - buildBillLog(FlowConst.Button.SUBMIT.value, actInst, listInsertTask); + buildBillLog(FlowConst.Button.SUBMIT.value, "TODO", actInst, listInsertTask); listener.submit(actInst, listInsertTask); - } + }*/ /** @@ -569,7 +578,7 @@ public class FlowInstance { getTaskDao().updateEntity(actInst); getProcInstDao().updateEntity(procInst); - buildBillLog(FlowConst.Button.SUBMIT.value, actInst, listInsertTask); + buildBillLog(FlowConst.Button.SUBMIT.value, "TODO", actInst, listInsertTask); listener.submit(actInst, listInsertTask); } @@ -613,7 +622,7 @@ public class FlowInstance { getTaskDao().updateEntity(actInst); getProcInstDao().updateEntity(procInst); - buildBillLog(FlowConst.Button.DISUSE.value, actInst, null); + buildBillLog(FlowConst.Button.DISUSE.value, "TODO", actInst, null); listener.disuse(actInst); } @@ -706,7 +715,7 @@ public class FlowInstance { } procInst.setTaskId(actInst.getEntityId()); - procInst.setStatu(actInst.isMake() ? FlowConst.InstanceStatu.BEGIN.value : FlowConst.InstanceStatu.RUNING.value); + procInst.setStatu(actInst.isMake() ? FlowConst.InstanceStatu.BEGIN.value: FlowConst.InstanceStatu.RUNING.value); taskDao.updateEntity(actInst); taskDao.deleteEntity(old_act); @@ -714,7 +723,7 @@ public class FlowInstance { getProcInstDao().updateEntity(procInst); new_acts.clear(); new_acts.add(old_act); - buildBillLog(FlowConst.Button.RETAKE.value, actInst, new_acts); + buildBillLog(FlowConst.Button.RETAKE.value, "TODO", actInst, new_acts); listener.retake(actInst, new_acts); // comp.transCallback(FlowConst.Button.RETAKE.value, actInst, new_acts); } else { @@ -740,7 +749,7 @@ public class FlowInstance { getTaskRelDao().deleteEntity("where trl_src_task_id=?", actInst.getEntityId()); getProcInstDao().updateEntity(procInst); - buildBillLog(FlowConst.Button.RETAKE.value, actInst, new_acts); + buildBillLog(FlowConst.Button.RETAKE.value, "TODO", actInst, new_acts); listener.retake(actInst, new_acts); } } @@ -789,7 +798,7 @@ public class FlowInstance { getTaskRelDao().deleteEntity("where trl_src_task_id in (" + sqlIn.substring(1) + ")"); getProcInstDao().updateEntity(procInst); - buildBillLog(FlowConst.Button.REJECT.value, actInst, new_acts); + buildBillLog(FlowConst.Button.REJECT.value, "TODO", actInst, new_acts); listener.reject(actInst, new_acts); // comp.transCallback(FlowConst.FlowOptType.REJECT.value, actInst, new_acts); } @@ -833,55 +842,51 @@ public class FlowInstance { List make_acts = new ArrayList<>(); make_acts.add(make_act); - buildBillLog(FlowConst.Button.REJECT.value, actInst, make_acts); + buildBillLog(FlowConst.Button.REJECT.value, "TODO", actInst, make_acts); listener.reject(actInst, make_acts); } /** * 状态变更,构建日志 */ - protected void buildBillLog(final String flow_opt, Task srcTask, List dstTasks) { - /*LogEntity logEntity = new LogEntity(); - logEntity.setSuggestion(context.getDfpRequest().getParams().getStrIgnoreNull("suggestion")); - logEntity.setFlowOpt(flow_opt); + protected void buildBillLog(final String flow_opt, String comment, Task srcTask, List dstTasks) { + ProcInfo procInfo = procDef.getProcInfo(); - logEntity.setBillId(proc_inst.getBillId()); - logEntity.setOptTime(UtilPub.getLastTime()); + FlowLog flowLog = new FlowLog(); + flowLog.setComment(comment); + flowLog.setOpt(flow_opt); - UserBaseEntity user = UtilLogin.getLoginUser(context.getLoginInfo()); - logEntity.setUserId(user.getEntityId()); - logEntity.setUserName(user.getName()); - logEntity.setLogId(PKGenerator.newId()); - logEntity.setSignPicture(UserBaseEntityBuffer.getInstance().getUserCardEntity(user.getUserId()).getSignPicture()); + flowLog.setPriId(procInst.getId()); + flowLog.setTime(DateUtil.nowDateTimeLong()); + + flowLog.setUsrId(us.getUserId()); + flowLog.setId(DbEngine.getInstance().nextId()); String src = null, dst = null; - String step_name = null; StringBuilder sbDst = null; if (srcTask != null) { - src = ActivityEntityBuffer.getInstance().getNameById(srcTask.getActId()); - step_name = ActivityEntityBuffer.getInstance().getStepName(srcTask.getActId()); + src = procInfo.getActNameById(srcTask.getActId()); + flowLog.setActName(src); + flowLog.setActId(srcTask.getId()); } - if (UtilPub.isNotEmpty(dstTasks)) { + if (!CommUtil.isEmpty(dstTasks)) { sbDst = new StringBuilder(); for (Task a : dstTasks) { - sbDst.append("/").append(ActivityEntityBuffer.getInstance().getNameById(a.getActId())); + sbDst.append("/").append(procInfo.getActNameById(a.getActId())); } dst = sbDst.substring(1); } - if (flow_opt == FlowConst.FlowOptType.RETAKE.value) { - logEntity.setInfo(dst + "->" + src); - logEntity.setStepName(step_name); + if (FlowConst.Button.RETAKE.value.equals(flow_opt)) { + flowLog.setInfo(dst + "->" + src); } else if (dst != null) { - logEntity.setInfo(src + "->" + dst); - logEntity.setStepName(step_name); + flowLog.setInfo(src + "->" + dst); } else if (src != null) { - logEntity.setInfo(src); - logEntity.setStepName(step_name); + flowLog.setInfo(src); } else { - logEntity.setInfo("-"); + flowLog.setInfo("-"); } - new LogDao().insert(logEntity); - */ + DbEngine.getInstance().findDao(FlowLog.class).insertEntity(flowLog); + } private EntityDao getProcInstDao() { 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 cbf1647..a68b72e 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 @@ -9,19 +9,18 @@ import java.util.List; * Created by Akmm at 2022-08-20 16:12 * 流程流转监听 */ -public class FlowListener { +public interface FlowListener { //设置条件计算参数 - public void setExprParam(SwMap param){} - + default void setExprParam(SwMap param) {} //提交 - public void submit(Task srcTask, List dstTasks) {} + default void submit(Task srcTask, List dstTasks) {} //取回 - public void retake(Task srcTask, List dstTasks) {} + default void retake(Task srcTask, List dstTasks) {} //驳回 - public void reject(Task srcTask, List dstTasks) {} + default void reject(Task srcTask, List dstTasks) {} //办理,签收 - public void handle(Task srcTask) {} + default void handle(Task srcTask) {} //作废 - public void disuse(Task srcTask) {} + default void disuse(Task srcTask) {} } 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 ae84d72..af1b4c6 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,10 +5,12 @@ 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.session.UserSession; import cc.smtweb.framework.core.util.CommUtil; import cc.smtweb.system.bpm.web.design.flow.FlowConst; 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.Comment; import cc.smtweb.system.bpm.web.engine.flow.entity.ProcInst; import cc.smtweb.system.bpm.web.engine.flow.entity.Task; import cc.smtweb.system.bpm.web.engine.flow.entity.TaskRel; @@ -22,15 +24,6 @@ import java.util.List; */ public class FlowProvider extends AbstractCompProvider { - //获取FlowInstance - public FlowInstance findFlowInstance(String pageId, long us) { - return doGetData("p_" + pageId, () -> { - ModelForm form = ModelFormHelper.getFromCache(pageId); - if (form == null || form.getBillType() <= 0L) return null; - return null; - }); - } - //根据id,获取流程实例 public ProcInst findProcInst(long billId) { return doGetData("p_" + billId, () -> { @@ -107,4 +100,8 @@ 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); } + + public List findComment(long bill_id) { + return DbEngine.getInstance().findDao(Comment.class).queryWhere("where cmt_pri_id=? order by cmt_end_time"); + } } 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 e5185f7..30a3deb 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 @@ -43,15 +43,24 @@ public class Comment extends DefaultEntity { public void setTskId(long cmt_tsk_id) { put("cmt_tsk_id", cmt_tsk_id); } - /** 步骤id */ + /** 活动id */ public long getActId() { return getLong("cmt_act_id"); } - /** 步骤id */ + /** 活动id */ public void setActId(long cmt_act_id) { put("cmt_act_id", cmt_act_id); } + /** 活动名 */ + public String getActName() { + return getStr("cmt_act_name"); + } + + /** 活动名 */ + public void setActName(String cmt_act_name) { + put("cmt_act_name", cmt_act_name); + } /** 主办人 */ public long getHandler() { return getLong("cmt_handler"); diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/entity/FlowLog.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/entity/FlowLog.java new file mode 100644 index 0000000..99e365f --- /dev/null +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/entity/FlowLog.java @@ -0,0 +1,100 @@ +package cc.smtweb.system.bpm.web.engine.flow.entity; + +import cc.smtweb.framework.core.annotation.SwTable; +import cc.smtweb.framework.core.common.SwMap; +import cc.smtweb.framework.core.db.impl.DefaultEntity; + +/** + * Created by 1 at 2022-08-26 10:02:26 + * 实体【[流程日志](WF_FLOW_LOG)】的Entity类 + */ +@SwTable("WF_FLOW_LOG") +public class FlowLog extends DefaultEntity { + public static final String ENTITY_NAME = "WF_FLOW_LOG"; + + public FlowLog() { + super(ENTITY_NAME); + } + + /** 主键 */ + public long getId() { + return getLong("wfl_id"); + } + + /** 主键 */ + public void setId(long wfl_id) { + put("wfl_id", wfl_id); + } + /** 单据id */ + public long getPriId() { + return getLong("wfl_pri_id"); + } + + /** 单据id */ + public void setPriId(long wfl_pri_id) { + put("wfl_pri_id", wfl_pri_id); + } + /** 操作人 */ + public long getUsrId() { + return getLong("wfl_usr_id"); + } + + /** 操作人 */ + public void setUsrId(long wfl_usr_id) { + put("wfl_usr_id", wfl_usr_id); + } + /** 步骤id */ + public long getActId() { + return getLong("wfl_act_id"); + } + + /** 步骤id */ + public void setActId(long wfl_act_id) { + put("wfl_act_id", wfl_act_id); + } + /** 步骤名 */ + public String getActName() { + return getStr("wfl_act_name"); + } + + /** 步骤名 */ + public void setActName(String wfl_act_name) { + put("wfl_act_name", wfl_act_name); + } + /** 操作 */ + public String getOpt() { + return getStr("wfl_opt"); + } + + /** 操作 */ + public void setOpt(String wfl_opt) { + put("wfl_opt", wfl_opt); + } + /** 提交信息 */ + public String getInfo() { + return getStr("wfl_info"); + } + + /** 提交信息 */ + public void setInfo(String wfl_info) { + put("wfl_info", wfl_info); + } + /** 意见 */ + public String getComment() { + return getStr("wfl_comment"); + } + + /** 意见 */ + public void setComment(String wfl_comment) { + put("wfl_comment", wfl_comment); + } + /** 操作时间 */ + public long getTime() { + return getLong("wfl_time"); + } + + /** 操作时间 */ + public void setTime(long wfl_time) { + put("wfl_time", wfl_time); + } +} diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/entity/ProcInst.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/entity/ProcInst.java index 97cd72c..da7d292 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/entity/ProcInst.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/entity/ProcInst.java @@ -4,8 +4,8 @@ import cc.smtweb.framework.core.annotation.SwTable; import cc.smtweb.framework.core.db.impl.DefaultEntity; /** - * Created by Akmm at 2022/5/23 14:25 - * 流程实例 + * Created by 1 at 2022-08-26 10:15:20 + * 实体【[流程实例](WF_PROCINST)】的Entity类 */ @SwTable("WF_PROCINST") public class ProcInst extends DefaultEntity { @@ -15,115 +15,139 @@ public class ProcInst extends DefaultEntity { super(ENTITY_NAME); } + /** 主键 */ public long getId() { return getLong("pri_id"); } - public void setId(long priId) { - put("pri_id", priId); + /** 主键 */ + public void setId(long pri_id) { + put("pri_id", pri_id); } - + /** 单据编号 */ public String getBillCode() { return getStr("pri_bill_code"); } - public void setBillCode(String priBillCode) { - put("pri_bill_code", priBillCode); + /** 单据编号 */ + public void setBillCode(String pri_bill_code) { + put("pri_bill_code", pri_bill_code); } - + /** 制单日期 */ public long getMakeDate() { return getLong("pri_make_date"); } - public void setMakeDate(long priMakeDate) { - put("pri_make_date", priMakeDate); + /** 制单日期 */ + public void setMakeDate(long pri_make_date) { + put("pri_make_date", pri_make_date); } - - public int getBillType() { - return getInt("pri_bill_type"); + /** 单据类别 */ + public long getBillType() { + return getLong("pri_bill_type"); } - public void setBillType(int priBillType) { - put("pri_bill_type", priBillType); + /** 单据类别 */ + public void setBillType(long pri_bill_type) { + put("pri_bill_type", pri_bill_type); } - + /** 编制单位 */ public long getPartyId() { return getLong("pri_party_id"); } - public void setPartyId(long priPartyId) { - put("pri_party_id", priPartyId); + /** 编制单位 */ + public void setPartyId(long pri_party_id) { + put("pri_party_id", pri_party_id); } - + /** 编制部门 */ public long getDeptId() { return getLong("pri_dept_id"); } - public void setDeptId(long priDeptId) { - put("pri_dept_id", priDeptId); + /** 编制部门 */ + public void setDeptId(long pri_dept_id) { + put("pri_dept_id", pri_dept_id); } - + /** 摘要 */ public String getBillDesc() { return getStr("pri_bill_desc"); } - public void setBillDesc(String priBillDesc) { - put("pri_bill_desc", priBillDesc); + /** 摘要 */ + public void setBillDesc(String pri_bill_desc) { + put("pri_bill_desc", pri_bill_desc); } - + /** 流程定义 */ public long getPrcId() { return getLong("pri_prc_id"); } - public void setPrcId(long priPrcId) { - put("pri_prc_id", priPrcId); + /** 流程定义 */ + public void setPrcId(long pri_prc_id) { + put("pri_prc_id", pri_prc_id); } - + /** 开始时间 */ public long getStartTime() { return getLong("pri_start_time"); } - public void setStartTime(long priStartTime) { - put("pri_start_time", priStartTime); + /** 开始时间 */ + public void setStartTime(long pri_start_time) { + put("pri_start_time", pri_start_time); } - + /** 结束时间 */ public long getEndTime() { return getLong("pri_end_time"); } - public void setEndTime(long priEndTime) { - put("pri_end_time", priEndTime); + /** 结束时间 */ + public void setEndTime(long pri_end_time) { + put("pri_end_time", pri_end_time); } - + /** 最后操作用户 */ public long getUserId() { return getLong("pri_user_id"); } - public void setUserId(long priUserId) { - put("pri_user_id", priUserId); + /** 最后操作用户 */ + public void setUserId(long pri_user_id) { + put("pri_user_id", pri_user_id); } - + /** 当前任务 */ public long getTaskId() { return getLong("pri_task_id"); } - public void setTaskId(long priTaskId) { - put("pri_task_id", priTaskId); + /** 当前任务 */ + public void setTaskId(long pri_task_id) { + put("pri_task_id", pri_task_id); } - + /** 单据状态 */ public int getStatu() { return getInt("pri_statu"); } - public void setStatu(int priStatu) { - put("pri_statu", priStatu); + /** 单据状态 */ + public void setStatu(int pri_statu) { + put("pri_statu", pri_statu); } - + /** 单据描述 */ public String getBillInfo() { return getStr("pri_bill_info"); } - public void setBillInfo(String priBillInfo) { - put("pri_bill_info", priBillInfo); + /** 单据描述 */ + public void setBillInfo(String pri_bill_info) { + put("pri_bill_info", pri_bill_info); + } + /** 单据链接 */ + public String getUrl() { + return getStr("pri_url"); + } + + /** 单据链接 */ + public void setUrl(String pri_url) { + put("pri_url", pri_url); } } 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 new file mode 100644 index 0000000..8490dcc --- /dev/null +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleLoadHandler.java @@ -0,0 +1,69 @@ +package cc.smtweb.system.bpm.web.engine.model.flow.listcard.single; + +import cc.smtweb.framework.core.common.R; +import cc.smtweb.framework.core.common.SwConsts; +import cc.smtweb.framework.core.common.SwMap; +import cc.smtweb.framework.core.db.impl.DefaultEntity; +import cc.smtweb.framework.core.db.vo.ModelTable; +import cc.smtweb.framework.core.exception.BizException; +import cc.smtweb.framework.core.mvc.service.SwListData; +import cc.smtweb.system.bpm.web.design.flow.FlowConst; +import cc.smtweb.system.bpm.web.design.form.ModelForm; +import cc.smtweb.system.bpm.web.design.form.ModelFormHelper; +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; +import cc.smtweb.system.bpm.web.engine.flow.FlowProvider; +import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleHelper; +import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleLoadHandler; + +import java.util.ArrayList; + +/** + * Created by Akmm at 2022-08-26 17:15 + */ +public class FlowSingleLoadHandler extends LCSingleLoadHandler implements FlowListener { + protected FlowInstance flowInstance; + + @Override + protected void afterAdd(SwMap ret, SwMap bean) { + FlowInstance flowInstance = new FlowInstance(this, us); + flowInstance.create(form.getBillType()); + + PageDataset cardDataset = LCSingleHelper.findCardDataset(datasets); + ModelTable table = cardDataset.getModelTable(); + bean.put(table.getIdField(), flowInstance.getProcInst().getId()); + + ret.put(FlowHelper.DATASET_NAME_FLOW, DynRetBean.createBean(flowInstance.getProcInst())); + ret.put(FlowHelper.DATASET_NAME_COMMENT, DynRetBean.createList(SwListData.EMPTY)); + } + + @Override + public R load() { + SwMap ret = new SwMap(); + //过滤条件 + long id = params.readLong("id"); + long taskId = params.readLong("taskId"); +// SwMap filter = params.readMap("filter"); + SwMap filter = new SwMap(); + filter.put(SwConsts.NAME_ID, id); + //对应的数据集定义 + PageDataset cardDataset = LCSingleHelper.findCardDataset(datasets); + + SwMap data = provider.loadData(filter, cardDataset); + ret.put(cardDataset.name, data); + + //加载流程信息 + FlowInstance flowInstance = new FlowInstance(this, us); + flowInstance.load(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))); + + afterLoad(ret, data); + return R.success(ret); + } + +} 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 new file mode 100644 index 0000000..6e20353 --- /dev/null +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleSaveHandler.java @@ -0,0 +1,12 @@ +package cc.smtweb.system.bpm.web.engine.model.flow.listcard.single; + +import cc.smtweb.framework.core.db.impl.DefaultEntity; +import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleSaveHandler; + +/** + * Created by Akmm at 2022-08-26 16:47 + * 带流程的简单卡片之保存 + */ +public class FlowSingleSaveHandler extends LCSingleSaveHandler { + +} 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 new file mode 100644 index 0000000..c3df03c --- /dev/null +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/engine/model/flow/listcard/single/FlowSingleService.java @@ -0,0 +1,27 @@ +package cc.smtweb.system.bpm.web.engine.model.flow.listcard.single; + +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; +import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleService; + +/** + * Created by Akmm at 2022-08-26 16:35 + * 带工作流的简单列表+卡片 + */ +public class FlowSingleService extends LCSingleService { + @Override + protected LCSingleSaveHandler getSaveHandler() { + return super.getSaveHandler(); + } + + @Override + protected LCSingleLoadHandler getLoadHandler() { + return super.getLoadHandler(); + } + + @Override + protected LCSingleDelHandler getDelHandler() { + return super.getDelHandler(); + } +} 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 cc60104..f82d142 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 @@ -2,6 +2,7 @@ package cc.smtweb.system.bpm.web.engine.model.listcard.single; import cc.smtweb.framework.core.common.R; import cc.smtweb.framework.core.common.SwMap; +import cc.smtweb.framework.core.db.impl.DefaultEntity; import cc.smtweb.system.bpm.web.design.form.define.PageDataset; import cc.smtweb.system.bpm.web.engine.dynPage.AbstractDynPageHandler; import cc.smtweb.system.bpm.web.engine.dynPage.DynPageHelper; @@ -15,6 +16,7 @@ public class LCSingleLoadHandler extends AbstractDynPageHandler { //新增卡片操作,初始化定义的数据集 public R add() { + SwMap ret = new SwMap(); //返回的数据,以dataset.name为key,查出的结果(bean或list)为value PageDataset cardDataset = LCSingleHelper.findCardDataset(datasets); SwMap data; @@ -24,29 +26,33 @@ public class LCSingleLoadHandler extends AbstractDynPageHandler { } else { data = DynPageHelper.createBean(cardDataset); } - afterAddBean(cardDataset, data); + ret.put(cardDataset.name, data); - return R.success(LCSingleHelper.buildRetData(cardDataset.name, data)); + afterAdd(ret, data); + return R.success(ret); } + //新增初始化 - bean - protected void afterAddBean(PageDataset dataset, SwMap bean) { + protected void afterAdd(SwMap ret, SwMap bean) { } //加载之后 - protected void afterLoadBean(PageDataset dataset, SwMap bean) { + protected void afterLoad(SwMap ret, SwMap bean) { } public R load() { + SwMap ret = new SwMap(); //过滤条件 SwMap filter = params.readMap("filter"); //对应的数据集定义 PageDataset cardDataset = LCSingleHelper.findCardDataset(datasets); SwMap data = provider.loadData(filter, cardDataset); - afterLoadBean(cardDataset, data); + ret.put(cardDataset.name, data); - return R.success(LCSingleHelper.buildRetData(cardDataset.name, data)); + afterLoad(ret, data); + return R.success(ret); } protected DynPageListHandler getListWorker(SwMap filter, PageDataset pageDataSet) { diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billFlow/BillFlowCache.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billFlow/BillFlowCache.java index 325f399..382ac9e 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billFlow/BillFlowCache.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/base/billFlow/BillFlowCache.java @@ -28,7 +28,7 @@ public class BillFlowCache extends AbstractEntityCache { } //缓存key:按单据类型 - public final Set getByBillType(int billType) { + public final Set getByBillType(long billType) { return getListByKey(mk_b, String.valueOf(billType)); } } diff --git a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/common/SwConsts.java b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/common/SwConsts.java index a2efd9a..898701a 100644 --- a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/common/SwConsts.java +++ b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/common/SwConsts.java @@ -30,6 +30,7 @@ public interface SwConsts { String DEF_DB_NAME = "sys"; //id自动对应的文本的后缀 String TEXT_SUFFIX = "_text"; + String NAME_ID = "id"; String DEF_PWD = "abc@123456"; //初始密码 String LOGIN_VERIFY_CODE = "_VERIFY_CODE"; From 0c4918fbedfa1b2ebad89463f115561d1e5f437b Mon Sep 17 00:00:00 2001 From: FLYPHT <1035748121@qq.com> Date: Sun, 28 Aug 2022 19:12:55 +0800 Subject: [PATCH 10/10] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E7=9A=84=E6=A8=A1=E6=9D=BF=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bpm/web/design/form/ModelFormHelper.java | 3 +- .../bpm/web/design/form/model/ModelFactory.java | 3 +- .../web/design/form/model/flow/LcFlowWorker.java | 75 +++++ .../template/default/incModel/inc_list_table.ftl | 27 +- .../static/template/default/model_card_flow.ftl | 358 +++++++++++++++++++++ .../static/template/default/model_list_flow.ftl | 109 +++++++ .../cc/smtweb/framework/core/common/SwEnum.java | 1 + 7 files changed, 549 insertions(+), 27 deletions(-) create mode 100644 smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/model/flow/LcFlowWorker.java create mode 100644 smtweb-framework/bpm/src/main/resources/static/template/default/model_card_flow.ftl create mode 100644 smtweb-framework/bpm/src/main/resources/static/template/default/model_list_flow.ftl diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormHelper.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormHelper.java index c72a48a..f55b40e 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormHelper.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormHelper.java @@ -490,7 +490,8 @@ public class ModelFormHelper { field.put("id", pdf.id); field.put("field", pdf.field); field.put("name", pdf.name); - field.put("label", pdf.label); + String label = (String) field.get("field_text"); + field.put("label", StringUtils.isEmpty(label)? pdf.label: label); field.put("required", pdf.isFieldNotNull()); final SwEnum.DataTypeBean dtb = SwEnum.DataType.instance.getByValue(pdf.dataType); if (dtb != null) { diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/model/ModelFactory.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/model/ModelFactory.java index 34af617..e4a4423 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/model/ModelFactory.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/model/ModelFactory.java @@ -2,10 +2,10 @@ package cc.smtweb.system.bpm.web.design.form.model; import cc.smtweb.framework.core.common.SwConsts; import cc.smtweb.framework.core.common.SwEnum; -import cc.smtweb.framework.core.exception.BizException; import cc.smtweb.framework.core.exception.SwException; import cc.smtweb.system.bpm.web.design.form.ModelForm; import cc.smtweb.system.bpm.web.design.form.ModelFormHelper; +import cc.smtweb.system.bpm.web.design.form.model.flow.LcFlowWorker; import org.apache.commons.lang3.StringUtils; import java.util.*; @@ -22,6 +22,7 @@ public class ModelFactory { mapWorker = new HashMap<>(); mapWorker.put(SwConsts.DEF_ROOT_ID, new BaseModelWorker()); mapWorker.put(SwEnum.ModelType.LC_SINGLE.value, new LcSinlgeWorker()); + mapWorker.put(SwEnum.ModelType.LC_FLOW.value, new LcFlowWorker()); } public static ModelFactory getInstance() { diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/model/flow/LcFlowWorker.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/model/flow/LcFlowWorker.java new file mode 100644 index 0000000..911a2de --- /dev/null +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/model/flow/LcFlowWorker.java @@ -0,0 +1,75 @@ +package cc.smtweb.system.bpm.web.design.form.model.flow; + +import cc.smtweb.framework.core.common.SwEnum; +import cc.smtweb.framework.core.common.SwMap; +import cc.smtweb.framework.core.db.DbEngine; +import cc.smtweb.framework.core.db.EntityDao; +import cc.smtweb.framework.core.exception.SwException; +import cc.smtweb.framework.core.util.JsonUtil; +import cc.smtweb.framework.core.util.StringUtil; +import cc.smtweb.system.bpm.web.design.form.ModelForm; +import cc.smtweb.system.bpm.web.design.form.ModelFormCache; +import cc.smtweb.system.bpm.web.design.form.ModelFormHelper; +import cc.smtweb.system.bpm.web.design.form.model.BaseModelWorker; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author: tanghp + * @Date: 2022-08-26 9:48 + * @Desc: 列表卡片(含工作流) + */ +public class LcFlowWorker extends BaseModelWorker { + private final static String listTmpl = "model_list_flow"; + private final static String cardTmpl = "model_card_flow"; + @Override + protected void saveModule(ModelForm bean, List listFormChild) { + EntityDao dao = DbEngine.getInstance().findDao(ModelForm.class); + + SwMap opts = bean.getOpts(); + SwMap cfg = opts.readMap(ModelFormHelper.OPT_CONFIG); + SwMap cfgPage = new SwMap(); + cfg.put(ModelFormHelper.OPT_PAGE, cfgPage); + // 添加列表页面名称 + String listFormName = ModelFormHelper.getPageName(bean) + StringUtil.upFirst(SwEnum.PageType.LIST.value); + cfgPage.put(SwEnum.PageType.LIST.value, listFormName); + // 添加卡片页面名称 + String cardFormName = ModelFormHelper.getPageName(bean) + StringUtil.upFirst(SwEnum.PageType.CARD.value); + cfgPage.put(SwEnum.PageType.CARD.value, cardFormName); + bean.setOption(JsonUtil.encodeString(opts)); + + if (bean.isNew()) {//新增 + List insertList = new ArrayList<>(); + + ModelForm listPage = createPage(bean, SwEnum.PageType.LIST.value); + listFormChild.add(listPage); + insertList.add(listPage); + + ModelForm cardPage = createPage(bean, SwEnum.PageType.CARD.value); + listFormChild.add(cardPage); + insertList.add(cardPage); + + dao.batchInsertEntity(insertList); + } else {//修改,先不考虑修改模型的情况 todo + + } + } + + @Override + public void buildSaveModel(ModelForm bean) { + ModelForm parent = ModelFormCache.getInstance().get(bean.getParent()); + if(parent==null){ + return; + } + String listFormName = parent.getName()+ StringUtil.upFirst(SwEnum.PageType.LIST.value); + String cardFormName = parent.getName()+ StringUtil.upFirst(SwEnum.PageType.CARD.value); + if(listFormName.equals(bean.getName())){ + ModelFormHelper.buildSaveModelByTmpl(bean, listTmpl); + }else if(cardFormName.equals(bean.getName())){ + ModelFormHelper.buildSaveModelByTmpl(bean, cardTmpl); + } + } + +} diff --git a/smtweb-framework/bpm/src/main/resources/static/template/default/incModel/inc_list_table.ftl b/smtweb-framework/bpm/src/main/resources/static/template/default/incModel/inc_list_table.ftl index 90fe426..05f73ff 100644 --- a/smtweb-framework/bpm/src/main/resources/static/template/default/incModel/inc_list_table.ftl +++ b/smtweb-framework/bpm/src/main/resources/static/template/default/incModel/inc_list_table.ftl @@ -41,24 +41,6 @@ ], "button": [ - <#if (tmpl_Type == "model_list")> - { - "id": "id${newId()}", - "type": "fx-button", - "props": { - "label": "编辑", - "type": "primary", - "leftIcon": "edit", - "action": "button:edit", - "dataset": "${group.dataset}", - "text": true, - "link": false, - "linkType": "", - "nextAction": "", - "fxLink": "" - } - }, - <#elseif (tmpl_Type == "model_list_card")> { "id": "id${newId()}", "type": "fx-button", @@ -68,14 +50,9 @@ "leftIcon": "edit", "action": "button:editCard", "link": false, - "text": true, - "linkType": "dialog", - "fxLink": "dialog:cardDialog", - "fxLink_text": "${param.cardTitle}" + "text": true } - }, - - { + },{ "id": "id${newId()}", "type": "fx-button", "props": { 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 new file mode 100644 index 0000000..98f4268 --- /dev/null +++ b/smtweb-framework/bpm/src/main/resources/static/template/default/model_card_flow.ftl @@ -0,0 +1,358 @@ +{ + "version": 6, + "form": [ + { + "page": { + "id": "id${newId()}", + "type": "fx-page", + "props": { + "title": "编辑", + "key": "${newId()}", + "tipsExpand": false + } + }, + "graph": { + "shape": "panel", + "id": "root_panel", + "type": "fx-split-panel", + "props": { + "horizontal": false, + "shadow": "", + "scroll": false, + "size": "", + "name": "s0" + }, + "children": [ + { + "id": "${newId()}", + "type": "fx-split-panel", + "shape": "panel", + "props": { + "size": "50", + "horizontal": true, + "scroll": false, + "name": "s11" + }, + "children": [ + { + "id": "${newId()}", + "type": "fx-form-panel", + "shape": "panel", + "props": { + "alignY": "center", + "size": "200", + "paddingLeft": 20 + }, + "children": [ + { + "id": "${newId()}", + "type": "fx-title", + "props": { + "label": "${title}", + "showPrefix": true + } + } + ] + }, + { + "id": "${newId()}", + "type": "fx-form-panel", + "shape": "panel", + "props": { + "alignY": "center", + "paddingRight": 20 + }, + "children": [ + { + "id": "${newId()}", + "type": "fx-button-group", + "props": { + "menus": [], + "textAlign": "right" + }, + "slots": { + "default": [ + { + "type": "fx-button", + "props": { + "label": "删除", + "leftIcon": "delete", + "type": "", + "action": "button:remove" + }, + "id": "${newId()}" + }, + { + "id": "${newId()}", + "type": "fx-button", + "props": { + "label": "新增", + "type": "primary", + "linkType": "curr", + "leftIcon": "plus" + } + }, + { + "id": "id182e345bb7b", + "type": "fx-button", + "props": { + "label": "返回", + "type": "success", + "size": "default", + "preAction": "", + "action": "button:return", + "leftIcon": "list-top" + }, + "events": {} + } + ] + } + } + ] + } + ] + }, + { + "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": { + "size": "", + "horizontal": false, + "scroll": true, + "name": "s12" + }, + "children": [ + { + <#list layout.card 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}, + + "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 + } + } + + , + + + ] + + }, + { + "id": "${newId()}", + "type": "fx-form-panel", + "shape": "panel", + "props": { + "name": "d2" + }, + "children": [] + } + ] + }, + { + "id": "182e345bb14", + "type": "fx-form-panel", + "shape": "panel", + "props": { + "size": "10", + "backgroundColor": "--color-transparent" + }, + "children": [] + }, + { + "id": "${newId()}", + "type": "fx-form-panel", + "shape": "panel", + "props": { + "size": "50", + "alignY": "center", + "alignX": "center" + }, + "children": [ + { + "id": "${newId()}", + "type": "fx-button-group", + "props": { + "menus": [] + }, + "slots": { + "default": [ + { + "type": "fx-button", + "props": { + "label": "保存并新增", + "type": "primary", + "action": "button:saveAndAdd", + "linkType": "curr" + }, + "id": "${newId()}" + }, + { + "type": "fx-button", + "props": { + "label": "保存", + "leftIcon": "save", + "type": "success", + "action": "button:save" + }, + "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", + "props": { + "label": "终止", + "leftIcon": "save", + "type": "success", + "action": "button:interrupt" + }, + "id": "${newId()}" + } + ] + } + } + ] + } + ] + } + } + ], + "model": [ + <#list datasets as dataset> + <#include "incModel/inc_model.ftl"/><#if dataset_has_next>, + + ], + "option": { + "widgetRef": [${widgetRef}], + "vars": [] + } +} diff --git a/smtweb-framework/bpm/src/main/resources/static/template/default/model_list_flow.ftl b/smtweb-framework/bpm/src/main/resources/static/template/default/model_list_flow.ftl new file mode 100644 index 0000000..ba8105b --- /dev/null +++ b/smtweb-framework/bpm/src/main/resources/static/template/default/model_list_flow.ftl @@ -0,0 +1,109 @@ +{ +<#list layout.list as group> + "form": + [ + { + "page": { + "id": "p${newId()}", + "type": "fx-page", + "props": { + "title": "${title}", + "key": "${newId()}" + } + }, + "graph": { + "shape": "panel", + "id": "root_panel", + "type": "fx-split-panel", + "props": { + "horizontal": false, + "shadow": "" + }, + "children": [ + <#if (group.cfilters?size>0)> + <#include "incModel/inc_list_query.ftl"/> + + { + "id": "${newId()}", + "type": "fx-form-panel", + "shape": "panel", + "props": { + "size": "50", + "label": "查询条件", + "colNum": 2, + "alignY": "center", + "paddingLeft": 20, + "paddingRight": 20, + "shadow": "" + }, + "children": [ + { + "id": "id${newId()}", + "type": "fx-title", + "props": { + "label": "${title}", + "fontSize": 15, + "color": "#313131", + "fontWeight": "bold", + "showPrefix": true, + "prefixWidth": 5, + "prefixHeight": 15, + "prefixColor": "#1E90FF" + } + }, + { + "id": "id${newId()}", + "type": "fx-button-group", + "props": { + "menus": [], + "textAlign": "right" + }, + "slots": { + "default": [ + { + "id": "id${newId()}", + "type": "fx-button", + "props": { + "label": "新增", + "leftIcon": "plus", + "type": "primary", + "action": "button:addCard", + "link": false, + "linkType": "", + "fxLink": "" + } + } + ] + } + } + ] + }, + <#include "incModel/inc_list_table.ftl"/> + { + "id": "${newId()}", + "type": "fx-form-panel", + "shape": "panel", + "props": { + "size": "15", + "backgroundColor": "transparent" + }, + "children": [] + } + ] + } + } + <#if (group.sfilters?size>0)> + <#include "incModel/inc_query_sfilters.ftl"/> + + ], + +"model": [ +<#list datasets as dataset> + <#include "incModel/inc_model.ftl"/><#if dataset_has_next>, + +], +"option": { +"widgetRef": [${widgetRef}], +"vars": [] +} +} diff --git a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/common/SwEnum.java b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/common/SwEnum.java index 6b0dd24..41a9d9f 100644 --- a/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/common/SwEnum.java +++ b/smtweb-framework/core/src/main/java/cc/smtweb/framework/core/common/SwEnum.java @@ -339,6 +339,7 @@ public interface SwEnum { class ModelType extends StrEnum { public static ModelType instance = new ModelType(); public static StrEnumBean LC_SINGLE = instance.addEnum("LC_SINGLE", "简单列表(含卡片)"); + public static StrEnumBean LC_FLOW = instance.addEnum("LC_FLOW", "列表卡片(含工作流)"); } // 权限类型