From 69d8e41b59a4ec29c6b50db31253af7821a62d79 Mon Sep 17 00:00:00 2001 From: zhenggm Date: Sat, 27 Aug 2022 17:39:58 +0800 Subject: [PATCH] =?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";