郑根木 2 роки тому
джерело
коміт
f66336c14b
29 змінених файлів з 1156 додано та 53 видалено
  1. +93
    -0
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/FlowConst.java
  2. +90
    -0
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProc.java
  3. +60
    -0
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcCache.java
  4. +132
    -0
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcService.java
  5. +35
    -0
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/define/ActivityInfo.java
  6. +19
    -0
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/define/HandlerInfo.java
  7. +23
    -0
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/define/ProcInfo.java
  8. +17
    -0
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/define/SignInfo.java
  9. +23
    -0
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/define/TransInfo.java
  10. +5
    -5
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/table/ModelCatalogTreeHandler.java
  11. +1
    -1
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/AbstractDynPageHandler.java
  12. +1
    -1
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageAddHandler.java
  13. +1
    -1
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageDelHandler.java
  14. +1
    -1
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageHelper.java
  15. +1
    -1
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageLoadOneHandler.java
  16. +1
    -1
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageSaveHandler.java
  17. +1
    -1
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageService.java
  18. +1
    -1
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynRetBean.java
  19. +57
    -0
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/CandidateEntity.java
  20. +49
    -0
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/CareEntity.java
  21. +65
    -0
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/CommentEntity.java
  22. +61
    -0
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowInstance.java
  23. +129
    -0
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/ProcinstEntity.java
  24. +74
    -0
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/SignEntity.java
  25. +161
    -0
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/TaskEntity.java
  26. +49
    -0
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/TaskRelEntity.java
  27. +0
    -26
      smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/flow/BpmFlowListService.java
  28. +5
    -13
      smtweb-system/sw-system-bpm/src/test/java/cc/smtweb/system/bpm/test/BuildJavaBean.java
  29. +1
    -1
      smtweb-system/sw-system-bpm/src/test/java/cc/smtweb/system/bpm/test/ModelFormTest.java

+ 93
- 0
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/FlowConst.java Переглянути файл

@@ -0,0 +1,93 @@
package cc.smtweb.system.bpm.web.design.flow;

import cc.smtweb.framework.core.common.IntEnum;

/**
* Created by Akmm at 2022/5/24 9:04
* 工作流常量及枚举定义
*/
public interface FlowConst {
//流程按钮
class Button {
public static final String DISUSE = "disuse";// 作废
public static final String LOG = "log";// 流程历史
public static final String WORD = "word";// 导出Word
public static final String EXCEL = "excel";// 导出Excel
public static final String HANDLER = "handler";// 办理,签收
public static final String SUBMIT = "submit";// 提交
public static final String RETAKE = "retake";// 取回
public static final String REJECT = "reject";// 驳回
public static final String ADD = "add";// 新增
public static final String DEL = "del";// 删除
public static final String SAVE = "save";// 保存
}
/**
* 活动类型 1-开始任务 2-用户任务 3-条件分支 4-并行开始 5-并行结束 6-脚本任务 9-结束任务
*/
class ActivityType extends IntEnum {
public static ActivityType instance = new ActivityType();
public static IntEnumBean START = instance.addEnum(1, "开始任务");
public static IntEnumBean USER = instance.addEnum(2, "用户任务");
public static IntEnumBean CONDITION = instance.addEnum(3, "判断分支");
public static IntEnumBean PARALLEL = instance.addEnum(4, "并行开始");
public static IntEnumBean GATHER = instance.addEnum(5, "并行结束");
public static IntEnumBean AUTO = instance.addEnum(6, "脚本任务");
public static IntEnumBean END = instance.addEnum(9, "结束任务");
}

/**
* 流程活动状态 0-待办 1-办理中 2-已提交 3-已驳回
*/
class ActivityStatu extends IntEnum {
public static ActivityStatu instance = new ActivityStatu();
public static IntEnumBean WAIT = instance.addEnum(0, "待办");
public static IntEnumBean HANDLE = instance.addEnum(1, "办理中");
public static IntEnumBean SUBMIT = instance.addEnum(2, "已提交");
public static IntEnumBean DISUSE = instance.addEnum(8, "已作废");
public static IntEnumBean REJECT = instance.addEnum(9, "已驳回");
}

/**
* 流程实例状态
*/
class InstanceStatu extends IntEnum {
public static ActivityStatu instance = new ActivityStatu();
public static IntEnumBean BEGIN = instance.addEnum(1, "制单");
public static IntEnumBean RUNING = instance.addEnum(2, "审批中");
public static IntEnumBean FINISH = instance.addEnum(99, "生效");
public static IntEnumBean ABORTED = instance.addEnum(98, "中止");
public static IntEnumBean DISUSE = instance.addEnum(89, "作废");
}

/**
* 流程任务创建方式
*/
class TaskCreateType extends IntEnum {
public static TaskCreateType instance = new TaskCreateType();
public static IntEnumBean AUTO = instance.addEnum(1, "自动");
public static IntEnumBean RETAKE = instance.addEnum(2, "取回");
public static IntEnumBean REJECT = instance.addEnum(3, "驳回");
}

/**
* 候选人过滤类别 主办人过滤:制单人所属单位/制单人所属部门/上一步提交人所属单位/上一步提交人所属部门
*/
class CndFilterType extends IntEnum {
public static CndFilterType instance = new CndFilterType();
public static IntEnumBean BILL_CORP = instance.addEnum(1, "单据所属单位");
public static IntEnumBean BILL_DEPT = instance.addEnum(2, "单据所属部门");
public static IntEnumBean MAKE_CORP = instance.addEnum(3, "制单人所属单位");
public static IntEnumBean MAKE_DEPT = instance.addEnum(4, "制单人所属部门");
public static IntEnumBean SUBMITTER_CORP = instance.addEnum(5, "上一步提交人所属单位");
public static IntEnumBean SUBMITTER_DEPT = instance.addEnum(6, "上一步提交人所属部门");
}

/**
* 主办人忽略类型:位运算,上一步提交人/过滤制单人
*/
class CndIgnoreType extends IntEnum {
public static CndIgnoreType instance = new CndIgnoreType();
public static IntEnumBean MAKER = instance.addEnum(1, "制单人");
public static IntEnumBean SUBMITTER = instance.addEnum(2, "上一步提交人");
}
}

+ 90
- 0
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProc.java Переглянути файл

@@ -0,0 +1,90 @@
package cc.smtweb.system.bpm.web.design.flow;

import cc.smtweb.framework.core.annotation.SwTable;
import cc.smtweb.framework.core.db.impl.DefaultEntity;
import cc.smtweb.framework.core.util.JsonUtil;
import cc.smtweb.system.bpm.web.design.flow.define.ProcInfo;
import com.fasterxml.jackson.annotation.JsonIgnore;

/**
* Created by Akmm at 2022/5/21 10:40
* 流程定义
*/
@SwTable("ASP_MODEL_PROC")
public class ModelProc extends DefaultEntity {
public static final String ENTITY_NAME = "ASP_MODEL_PROC";
//流程定义详情
@JsonIgnore
private transient ProcInfo procInfo = null;

public ModelProc() {
super(ENTITY_NAME);
}

public ProcInfo getProcInfo() {
if (procInfo == null) {
synchronized ("ModelProc_" + getId()) {
if (procInfo == null) {
procInfo = JsonUtil.parse(getContent(), ProcInfo.class);
}
}
}
return procInfo;
}

public long getId() {
return getLong("prc_id");
}

public void setId(long prcId) {
put("prc_id", prcId);
}

public long getPrjId() {
return getLong("prc_prj_id");
}

public void setPrjId(long prcPrjId) {
put("prc_prj_id", prcPrjId);
}

public long getMcId() {
return getLong("prc_mc_id");
}

public void setMcId(long prcMcId) {
put("prc_mc_id", prcMcId);
}

public String getCode() {
return getStr("prc_code");
}

public void setCode(String prcCode) {
put("prc_code", prcCode);
}

public String getName() {
return getStr("prc_name");
}

public void setName(String prcName) {
put("prc_name", prcName);
}

public String getContent() {
return getStr("prc_content");
}

public void setContent(String prcContent) {
put("prc_content", prcContent);
}

public String getRemark() {
return getStr("prc_remark");
}

public void setRemark(String prcRemark) {
put("prc_remark", prcRemark);
}
}

+ 60
- 0
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcCache.java Переглянути файл

@@ -0,0 +1,60 @@
package cc.smtweb.system.bpm.web.design.flow;

import cc.smtweb.framework.core.annotation.SwCache;
import cc.smtweb.framework.core.cache.AbstractCache;
import cc.smtweb.framework.core.cache.CacheManager;
import cc.smtweb.framework.core.db.DbEngine;
import cc.smtweb.framework.core.db.EntityDao;
import cc.smtweb.system.bpm.web.design.form.ModelForm;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Set;

/**
* Created by Akmm at 2022/1/12 18:34
*/
@SwCache(ident = "ASP_MODEL_PROC", title = "流程定义")
public class ModelProcCache extends AbstractCache<ModelProc> {
private final static String mk = "k";
private final static String mp = "prj";
private final static String mc = "c";

public static ModelProcCache getInstance() {
return CacheManager.getIntance().getCache(ModelProcCache.class);
}

public ModelProcCache() {
regMap(mk, k-> k.getName().toUpperCase());
regList(mp, k-> String.valueOf(k.getPrjId()));
regList(mc, k-> String.valueOf(k.getMcId()));
}

@Override
protected String getId(ModelProc bean) {
return String.valueOf(bean.getId());
}

@Override
protected List<ModelProc> loadAll() {
EntityDao<ModelProc> dao = DbEngine.getInstance().findDao(ModelProc.class);
return dao.query();
}

public final ModelProc getByName(String key) {
return getByKey(mk, key.toUpperCase());
}

public final Set<ModelProc> getFormsByMc(long mcId) {
return getListByKey(mc, String.valueOf(mcId));
}

public final List<ModelProc> getFormsByMc(long mcId, Comparator<ModelProc> comparator) {
Set<ModelProc> set = getListByKey(mc, String.valueOf(mcId));
if (set == null || set.isEmpty()) return null;
List<ModelProc> list = new ArrayList<>(set);
list.sort(comparator);
return list;
}
}

+ 132
- 0
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/ModelProcService.java Переглянути файл

@@ -0,0 +1,132 @@
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.SwEnum;
import cc.smtweb.framework.core.common.SwMap;
import cc.smtweb.framework.core.db.DbEngine;
import cc.smtweb.framework.core.mvc.service.AbstractCompService;
import cc.smtweb.framework.core.mvc.service.DefaultDelHandler;
import cc.smtweb.framework.core.mvc.service.DefaultListHandler;
import cc.smtweb.framework.core.mvc.service.IHandler;
import cc.smtweb.framework.core.session.UserSession;
import cc.smtweb.framework.core.util.SqlUtil;
import cc.smtweb.system.bpm.web.design.form.ModelForm;
import cc.smtweb.system.bpm.web.design.form.ModelFormLoadHandler;
import cc.smtweb.system.bpm.web.design.form.ModelFormSaveHandler;
import org.apache.commons.lang3.StringUtils;

import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;

/**
* Created by Akmm at 2022/3/22 9:12
*/
@SwService
public class ModelProcService extends AbstractCompService {
@Override
protected IHandler createHandler(String type) {
switch (type) {
case TYPE_LOAD:
return new ModelFormLoadHandler();
case TYPE_SAVE:
return new ModelFormSaveHandler();
case TYPE_DEL:
return new DefaultDelHandler<ModelForm>(ModelForm.ENTITY_NAME);
case TYPE_LIST:
return new DefaultListHandler<ModelForm>(ModelForm.ENTITY_NAME);

}
return null;
}

//保存数据集
public R saveDataset(@SwBody SwMap params, UserSession us) {
try {
ModelFormSaveHandler handler = (ModelFormSaveHandler) getHandler(params, us, TYPE_SAVE);
return handler.saveDataset();
} catch (Exception e) {
return R.error("操作失败!", e);
}
}

//加载数据集
public R loadDataset(@SwBody SwMap params, UserSession us) {
try {
ModelFormLoadHandler handler = (ModelFormLoadHandler) getHandler(params, us, TYPE_LOAD);
return handler.loadDataset();
} catch (Exception e) {
return R.error("操作失败!", e);
}
}

//保存页面模型
public R saveModel(@SwBody SwMap params, UserSession us) {
try {
ModelFormSaveHandler handler = (ModelFormSaveHandler) getHandler(params, us, TYPE_SAVE);
return handler.saveModel();
} catch (Exception e) {
return R.error("操作失败!", e);
}
}

//加载页面模型
public R loadModel(@SwBody SwMap params, UserSession us) {
try {
ModelFormLoadHandler handler = (ModelFormLoadHandler) getHandler(params, us, TYPE_LOAD);
return handler.loadModel();
} catch (Exception e) {
return R.error("操作失败!", e);
}
}

//加载引擎用页面模型
public R model(@SwBody SwMap params, UserSession us) {
try {
ModelFormLoadHandler handler = (ModelFormLoadHandler) getHandler(params, us, TYPE_LOAD);
return handler.loadForm();
} catch (Exception e) {
return R.error("操作失败!", e);
}
}

//获取页面使用的控件的filter信息
public R loadWidgetFilter(@SwBody SwMap params, UserSession us) {
try {
ModelFormLoadHandler handler = (ModelFormLoadHandler) getHandler(params, us, TYPE_LOAD);
return handler.loadWidgetFilter();
} catch (Exception e) {
return R.error("操作失败!", e);
}
}

//获取自定义sql的字段信息,去库里查
public R loadSqlFields(@SwBody SwMap params, UserSession us) {
try {
String sql = params.readString("sql");
if (StringUtils.isEmpty(sql)) return R.error("没有传入的sql!");
sql = sql.trim().toLowerCase();
if (!sql.startsWith("select ")) return R.error("非查询类sql,禁止执行!");
if (sql.contains(";")) return R.error("sql内禁止出现分号!");
sql = SqlUtil.replaceTable(sql);
List<SwMap> ret = DbEngine.getInstance().query(sql + " where 1=0", rs -> {
List<SwMap> fields = new ArrayList<>();
ResultSetMetaData metaData = rs.getMetaData();

for (int i = 1, count = metaData.getColumnCount(); i <= count; i++) {
SwMap col = new SwMap(2);
col.put("name", metaData.getColumnLabel(i));
SwEnum.DataTypeBean dtb = SwEnum.DataType.getBySqlType(metaData.getColumnType(i), metaData.getPrecision(i), metaData.getScale(i));
col.put("dataType", dtb.value);
fields.add(col);
}
return fields;
});
return R.success(ret);
} catch (Exception e) {
return R.error("操作失败!", e);
}
}
}

+ 35
- 0
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/define/ActivityInfo.java Переглянути файл

@@ -0,0 +1,35 @@
package cc.smtweb.system.bpm.web.design.flow.define;

import lombok.Data;

import java.util.List;

/**
* Created by Akmm at 2022/5/21 10:48
* 步骤定义
*/
@Data
public class ActivityInfo {
//"id": "",
private String id;
//类别:1-开始任务 2-用户任务 3-条件分支 4-并行开始 5-并行结束 6-脚本任务 9-结束任务
private int type;
//活动编号,代码可调用
private String code;
//活动名称
private String label;
//表单定义
private String page;
//是否可编辑
private boolean canEdit;
//是否需要会签
private boolean needSign;
//可编辑的字段
private List<String> eidtFields;
//不可查看的字段
private List<String> disableFields;
//主办人相关信息
private HandlerInfo handler;
//会签相关信息
private SignInfo sign;
}

+ 19
- 0
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/define/HandlerInfo.java Переглянути файл

@@ -0,0 +1,19 @@
package cc.smtweb.system.bpm.web.design.flow.define;

import lombok.Data;

import java.util.List;

/**
* Created by Akmm at 2022/5/23 9:45
* 主办人设置信息
*/
@Data
public class HandlerInfo {
//主办人分组
private List<Long> userGroup;
//主办人过滤:制单人所属单位/制单人所属部门/上一步提交人所属单位/上一步提交人所属部门
private int filter;
//主办人过滤:上一步提交人/过滤制单人
private int ignore;
}

+ 23
- 0
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/define/ProcInfo.java Переглянути файл

@@ -0,0 +1,23 @@
package cc.smtweb.system.bpm.web.design.flow.define;

import lombok.Data;

import java.util.List;

/**
* Created by Akmm at 2022/5/21 10:48
* 流程定义信息
*/
@Data
public class ProcInfo {
//默认表单定义
private String page;
//是否允许编辑非本人单据
private boolean canEditOther;
//1-驳回到制单 0-逐级驳回
private boolean rejectToMake;
//活动节点
private List<ActivityInfo> activities;
//连接线
private List<TransInfo> trans;
}

+ 17
- 0
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/define/SignInfo.java Переглянути файл

@@ -0,0 +1,17 @@
package cc.smtweb.system.bpm.web.design.flow.define;

import lombok.Data;

/**
* Created by Akmm at 2022/5/23 9:54
* 会签信息
*/
@Data
public class SignInfo extends HandlerInfo{
//最少会签人数
private int minSign;
//最少会签同意人数
private int minAgree;
//最少会签同意人数单位:0-人数 1-会签同意占比
private int minAgreeUnit;
}

+ 23
- 0
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/flow/define/TransInfo.java Переглянути файл

@@ -0,0 +1,23 @@
package cc.smtweb.system.bpm.web.design.flow.define;

import lombok.Data;

/**
* Created by Akmm at 2022/5/21 11:38
* 连接线
*/
@Data
public class TransInfo {
//唯一标识
private String id;
//序号
private int seq;
//条件表达式
private String expr;
//源活动
private String src;
//目标活动
private String dst;
//说明
private String desc;
}

+ 5
- 5
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/table/ModelCatalogTreeHandler.java Переглянути файл

@@ -23,12 +23,12 @@ import java.util.List;
* Created by Akmm at 2022/3/21 18:22
*/
public class ModelCatalogTreeHandler extends AbstractTreeHandler<DefaultEntity> {
//查询类型:0-目录;1-表定义;2-页面;3-控件;4-页面和控件
//查询类型:0-目录;1-表定义;2-页面;3-控件;23-页面和控件
private final static int TYPE_CATALOG = 0;
private final static int TYPE_TABLE = 1;
private final static int TYPE_PAGE = 2;
private final static int TYPE_WIDGET = 3;
private final static int TYPE_FORM = 4;
private final static int TYPE_FORM = 23;

private long prj_id;//所属项目
private int type;//查询类型:0-目录;1-表定义;2-页面定义
@@ -153,8 +153,8 @@ public class ModelCatalogTreeHandler extends AbstractTreeHandler<DefaultEntity>
node.put("type", TYPE_CATALOG);
} else if (bean instanceof ModelTable) {
node.put("type", TYPE_TABLE);
}/* else if (bean instanceof ModelTable) {
node.put("type", TYPE_TABLE);
}*/
} else if (bean instanceof ModelForm) {
node.put("type", ((ModelForm)bean).getType() + 2);
}
}
}

smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/AbstractDynPageHandler.java → smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/AbstractDynPageHandler.java Переглянути файл

@@ -1,4 +1,4 @@
package cc.smtweb.system.bpm.web.engine;
package cc.smtweb.system.bpm.web.engine.dynPage;

import cc.smtweb.framework.core.common.SwException;
import cc.smtweb.framework.core.common.SwMap;

smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/DynPageAddHandler.java → smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageAddHandler.java Переглянути файл

@@ -1,4 +1,4 @@
package cc.smtweb.system.bpm.web.engine;
package cc.smtweb.system.bpm.web.engine.dynPage;

import cc.smtweb.framework.core.common.R;
import cc.smtweb.framework.core.common.SwMap;

smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/DynPageDelHandler.java → smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageDelHandler.java Переглянути файл

@@ -1,4 +1,4 @@
package cc.smtweb.system.bpm.web.engine;
package cc.smtweb.system.bpm.web.engine.dynPage;

import cc.smtweb.framework.core.common.R;
import cc.smtweb.framework.core.common.SwException;

smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/DynPageHelper.java → smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageHelper.java Переглянути файл

@@ -1,4 +1,4 @@
package cc.smtweb.system.bpm.web.engine;
package cc.smtweb.system.bpm.web.engine.dynPage;

import cc.smtweb.framework.core.common.SwException;
import cc.smtweb.framework.core.common.SwMap;

smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/DynPageLoadOneHandler.java → smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageLoadOneHandler.java Переглянути файл

@@ -1,4 +1,4 @@
package cc.smtweb.system.bpm.web.engine;
package cc.smtweb.system.bpm.web.engine.dynPage;

import cc.smtweb.framework.core.common.R;
import cc.smtweb.framework.core.common.SwException;

smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/DynPageSaveHandler.java → smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageSaveHandler.java Переглянути файл

@@ -1,4 +1,4 @@
package cc.smtweb.system.bpm.web.engine;
package cc.smtweb.system.bpm.web.engine.dynPage;

import cc.smtweb.framework.core.common.R;
import cc.smtweb.framework.core.common.SwException;

smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/DynPageService.java → smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageService.java Переглянути файл

@@ -1,4 +1,4 @@
package cc.smtweb.system.bpm.web.engine;
package cc.smtweb.system.bpm.web.engine.dynPage;

import cc.smtweb.framework.core.common.R;
import cc.smtweb.framework.core.common.SwMap;

smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/DynRetBean.java → smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynRetBean.java Переглянути файл

@@ -1,4 +1,4 @@
package cc.smtweb.system.bpm.web.engine;
package cc.smtweb.system.bpm.web.engine.dynPage;

import cc.smtweb.framework.core.common.SwMap;
import cc.smtweb.framework.core.mvc.service.SwListData;

+ 57
- 0
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/CandidateEntity.java Переглянути файл

@@ -0,0 +1,57 @@
package cc.smtweb.system.bpm.web.engine.flow;

import cc.smtweb.framework.core.annotation.SwTable;
import cc.smtweb.framework.core.db.impl.DefaultEntity;

/**
* Created by Akmm at 2022/5/23 14:25
* 候选信息人
*/
@SwTable("WF_CANDIDATE")
public class CandidateEntity extends DefaultEntity {
public static final String ENTITY_NAME = "WF_CANDIDATE";

public CandidateEntity() {
super(ENTITY_NAME);
}

public long getId() {
return getLong("cnd_id");
}

public void setId(long cndId) {
put("cnd_id", cndId);
}

public long getPriId() {
return getLong("cnd_pri_id");
}

public void setPriId(long cndPriId) {
put("cnd_pri_id", cndPriId);
}

public long getTskId() {
return getLong("cnd_tsk_id");
}

public void setTskId(long cndTskId) {
put("cnd_tsk_id", cndTskId);
}

public long getUserId() {
return getLong("cnd_user_id");
}

public void setUserId(long cndUserId) {
put("cnd_user_id", cndUserId);
}

public int getIsSign() {
return getInt("cnd_is_sign");
}

public void setIsSign(int cndIsSign) {
put("cnd_is_sign", cndIsSign);
}
}

+ 49
- 0
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/CareEntity.java Переглянути файл

@@ -0,0 +1,49 @@
package cc.smtweb.system.bpm.web.engine.flow;

import cc.smtweb.framework.core.annotation.SwTable;
import cc.smtweb.framework.core.db.impl.DefaultEntity;

/**
* Created by Akmm at 2022/5/23 14:25
* 候选信息人
*/
@SwTable("WF_CARE")
public class CareEntity extends DefaultEntity {
public static final String ENTITY_NAME = "WF_CARE";

public CareEntity() {
super(ENTITY_NAME);
}

public long getId() {
return getLong("cr_id");
}

public void setId(long crId) {
put("cr_id", crId);
}

public long getPriId() {
return getLong("cr_pri_id");
}

public void setPriId(long crPriId) {
put("cr_pri_id", crPriId);
}

public long getUserId() {
return getLong("cr_user_id");
}

public void setUserId(long crUserId) {
put("cr_user_id", crUserId);
}

public long getTime() {
return getLong("cr_time");
}

public void setTime(long crTime) {
put("cr_time", crTime);
}
}

+ 65
- 0
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/CommentEntity.java Переглянути файл

@@ -0,0 +1,65 @@
package cc.smtweb.system.bpm.web.engine.flow;

import cc.smtweb.framework.core.annotation.SwTable;
import cc.smtweb.framework.core.db.impl.DefaultEntity;

/**
* Created by Akmm at 2022/5/23 14:25
* 审批意见
*/
@SwTable("WF_COMMENT")
public class CommentEntity extends DefaultEntity {
public static final String ENTITY_NAME = "WF_COMMENT";

public CommentEntity() {
super(ENTITY_NAME);
}

public long getId() {
return getLong("cmt_id");
}

public void setId(long cmtId) {
put("cmt_id", cmtId);
}

public long getPriId() {
return getLong("cmt_pri_id");
}

public void setPriId(long cmtPriId) {
put("cmt_pri_id", cmtPriId);
}

public long getTskId() {
return getLong("cmt_tsk_id");
}

public void setTskId(long cmtTskId) {
put("cmt_tsk_id", cmtTskId);
}

public long getUserId() {
return getLong("cmt_user_id");
}

public void setUserId(long cmtUserId) {
put("cmt_user_id", cmtUserId);
}

public String getContent() {
return getStr("cmt_content");
}

public void setContent(String cmtContent) {
put("cmt_content", cmtContent);
}

public long getTime() {
return getLong("cmt_time");
}

public void setTime(long cmtTime) {
put("cmt_time", cmtTime);
}
}

+ 61
- 0
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowInstance.java Переглянути файл

@@ -0,0 +1,61 @@
package cc.smtweb.system.bpm.web.engine.flow;

import cc.smtweb.system.bpm.web.design.flow.ModelProc;

import java.util.*;

/**
* Created by Akmm at 2020/3/4 11:35
* 单据流程实例组件
*/
public class FlowInstance {
//流程定义
public ModelProc proc_def;

//流程实例
public ProcinstEntity proc_inst;

//活动任务
public TaskEntity act_inst;

//操作类型 新增/编辑/查看
public int opt_mode = 0;//CmEnum.OperatorType.VIEW;

//流程执行变量
// public Map<String, String> variables = new HashMap<>();

public List<Map<String, String>> tasks = new ArrayList<>();

public FlowInstance() {
// this.context = context;
}

//能否编辑
public boolean canEdit() {
// return opt_mode == CmEnum.OperatorType.NEW || proc_inst.getstatu() == FlowConsts.InstanceStatu.BEGIN.value;
return false;
}

public boolean notMakeCanEdit() {
/*Map<String, String> mapPermisson = MenuHelper.getPermission(context);
boolean othCanEdit = BillFlowWfHelper.getPropBool(proc_def.getEntityId(), FlowConsts.NULL_STR, FlowConsts.ProcProperty.CAN_EDIT_OTHER);
ActivityEntity act = ActivityEntityBuffer.getInstance().get(act_inst.getActId());
return act != null && !act_inst.isMake() && act.getActEdit() && othCanEdit && MenuHelper.hasPermisson(mapPermisson, CmEnum.MenuFuncRight.UPD.value);*/
return false;
}

public boolean isHandleMake() {
// ActivityEntity act = ActivityEntityBuffer.getInstance().get(act_inst.getActId());
// return !act_inst.isMake() && isHandleMakeEx(act);
return false;
}


private boolean isHandleMakeEx(TaskEntity act) {
// if (EntityUtil.isNull(act)) return false;
// return BillFlowWfHelper.getPropInt(proc_inst.getProcDefId(), act.getActId(), FlowConsts.ProcProperty.HANDLER_RANGE) == CmEnum.HandlerRange.MAKE.value;
return false;
}


}

+ 129
- 0
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/ProcinstEntity.java Переглянути файл

@@ -0,0 +1,129 @@
package cc.smtweb.system.bpm.web.engine.flow;

import cc.smtweb.framework.core.annotation.SwTable;
import cc.smtweb.framework.core.db.impl.DefaultEntity;

/**
* Created by Akmm at 2022/5/23 14:25
* 流程实例
*/
@SwTable("WF_PROCINST")
public class ProcinstEntity extends DefaultEntity {
public static final String ENTITY_NAME = "WF_PROCINST";

public ProcinstEntity() {
super(ENTITY_NAME);
}

public long getId() {
return getLong("pri_id");
}

public void setId(long priId) {
put("pri_id", priId);
}

public String getBillCode() {
return getStr("pri_bill_code");
}

public void setBillCode(String priBillCode) {
put("pri_bill_code", priBillCode);
}

public long getMakeDate() {
return getLong("pri_make_date");
}

public void setMakeDate(long priMakeDate) {
put("pri_make_date", priMakeDate);
}

public int getBillType() {
return getInt("pri_bill_type");
}

public void setBillType(int priBillType) {
put("pri_bill_type", priBillType);
}

public long getPartyId() {
return getLong("pri_party_id");
}

public void setPartyId(long priPartyId) {
put("pri_party_id", priPartyId);
}

public long getDeptId() {
return getLong("pri_dept_id");
}

public void setDeptId(long priDeptId) {
put("pri_dept_id", priDeptId);
}

public String getBillDesc() {
return getStr("pri_bill_desc");
}

public void setBillDesc(String priBillDesc) {
put("pri_bill_desc", priBillDesc);
}

public long getPrcId() {
return getLong("pri_prc_id");
}

public void setPrcId(long priPrcId) {
put("pri_prc_id", priPrcId);
}

public long getStartTime() {
return getLong("pri_start_time");
}

public void setStartTime(long priStartTime) {
put("pri_start_time", priStartTime);
}

public long getEndTime() {
return getLong("pri_end_time");
}

public void setEndTime(long priEndTime) {
put("pri_end_time", priEndTime);
}

public long getUserId() {
return getLong("pri_user_id");
}

public void setUserId(long priUserId) {
put("pri_user_id", priUserId);
}

public long getTaskId() {
return getLong("pri_task_id");
}

public void setTaskId(long priTaskId) {
put("pri_task_id", priTaskId);
}

public int getStatu() {
return getInt("pri_statu");
}

public void setStatu(int priStatu) {
put("pri_statu", priStatu);
}

public String getBillInfo() {
return getStr("pri_bill_info");
}

public void setBillInfo(String priBillInfo) {
put("pri_bill_info", priBillInfo);
}
}

+ 74
- 0
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/SignEntity.java Переглянути файл

@@ -0,0 +1,74 @@
package cc.smtweb.system.bpm.web.engine.flow;

import cc.smtweb.framework.core.annotation.SwTable;
import cc.smtweb.framework.core.db.impl.DefaultEntity;

/**
* Created by Akmm at 2022/5/23 14:25
* 会签信息
*/
@SwTable("WF_SIGN")
public class SignEntity extends DefaultEntity {
public static final String ENTITY_NAME = "WF_SIGN";

public SignEntity() {
super(ENTITY_NAME);
}

public long getId() {
return getLong("sgn_id");
}

public void setId(long sgnId) {
put("sgn_id", sgnId);
}

public long getPriId() {
return getLong("sgn_pri_id");
}

public void setPriId(long sgnPriId) {
put("sgn_pri_id", sgnPriId);
}

public long getTskId() {
return getLong("sgn_tsk_id");
}

public void setTskId(long sgnTskId) {
put("sgn_tsk_id", sgnTskId);
}

public long getUserId() {
return getLong("sgn_user_id");
}

public void setUserId(long sgnUserId) {
put("sgn_user_id", sgnUserId);
}

public int getAgree() {
return getInt("sgn_agree");
}

public void setAgree(int sgnAgree) {
put("sgn_agree", sgnAgree);
}

public String getContent() {
return getStr("sgn_content");
}

public void setContent(String sgnContent) {
put("sgn_content", sgnContent);
}

public long getTime() {
return getLong("sgn_time");
}

public void setTime(long sgnTime) {
put("sgn_time", sgnTime);
}

}

+ 161
- 0
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/TaskEntity.java Переглянути файл

@@ -0,0 +1,161 @@
package cc.smtweb.system.bpm.web.engine.flow;

import cc.smtweb.framework.core.annotation.SwTable;
import cc.smtweb.framework.core.db.impl.DefaultEntity;

/**
* Created by Akmm at 2022/5/23 14:25
* 活动实例
*/
@SwTable("WF_TASK")
public class TaskEntity extends DefaultEntity {
public static final String ENTITY_NAME = "WF_TASK";

public TaskEntity() {
super(ENTITY_NAME);
}

public long getId() {
return getLong("tsk_id");
}

public void setId(long tskId) {
put("tsk_id", tskId);
}

public long getPriId() {
return getLong("tsk_pri_id");
}

public void setPriId(long tskPriId) {
put("tsk_pri_id", tskPriId);
}

public long getPrcId() {
return getLong("tsk_prc_id");
}

public void setPrcId(long tskPrcId) {
put("tsk_prc_id", tskPrcId);
}

public String getActId() {
return getStr("tsk_act_id");
}

public void setActId(String tskActId) {
put("tsk_act_id", tskActId);
}

public String getActName() {
return getStr("tsk_act_name");
}

public void setActName(String tskActName) {
put("tsk_act_name", tskActName);
}

public long getHandler() {
return getLong("tsk_handler");
}

public void setHandler(long tskHandler) {
put("tsk_handler", tskHandler);
}

public long getStartTime() {
return getLong("tsk_start_time");
}

public void setStartTime(long tskStartTime) {
put("tsk_start_time", tskStartTime);
}

public long getEndTime() {
return getLong("tsk_end_time");
}

public void setEndTime(long tskEndTime) {
put("tsk_end_time", tskEndTime);
}

public int getStatu() {
return getInt("tsk_statu");
}

public void setStatu(int tskStatu) {
put("tsk_statu", tskStatu);
}

public String getSubmitIdea() {
return getStr("tsk_submit_idea");
}

public void setSubmitIdea(String tskSubmitIdea) {
put("tsk_submit_idea", tskSubmitIdea);
}

public boolean isMake() {
return getBool("tsk_is_make");
}

public void setMake(boolean tskIsMake) {
setBool("tsk_is_make", tskIsMake);
}

public boolean isSign() {
return getBool("tsk_is_sign");
}

public void setSign(boolean tskIsSign) {
setBool("tsk_is_sign", tskIsSign);
}

public String getSignTotal() {
return getStr("tsk_sign_total");
}

public void setSignTotal(String tskSignTotal) {
put("tsk_sign_total", tskSignTotal);
}

public int getSignPass() {
return getInt("tsk_sign_pass");
}

public void setSignPass(int tskSignPass) {
put("tsk_sign_pass", tskSignPass);
}

public int getSignAgree() {
return getInt("tsk_sign_agree");
}

public void setSignAgree(int tskSignAgree) {
put("tsk_sign_agree", tskSignAgree);
}

public boolean getIsReject() {
return getBool("tsk_is_reject");
}

public void setReject(boolean tskIsReject) {
setBool("tsk_is_reject", tskIsReject);
}

public boolean isRetake() {
return getBool("tsk_is_retake");
}

public void setIsRetake(boolean tskIsRetake) {
setBool("tsk_is_retake", tskIsRetake);
}

public boolean isAuto() {
return getBool("tsk_is_auto");
}

public void setIsAuto(boolean tskIsAuto) {
setBool("tsk_is_auto", tskIsAuto);
}
}

+ 49
- 0
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/TaskRelEntity.java Переглянути файл

@@ -0,0 +1,49 @@
package cc.smtweb.system.bpm.web.engine.flow;

import cc.smtweb.framework.core.annotation.SwTable;
import cc.smtweb.framework.core.db.impl.DefaultEntity;

/**
* Created by Akmm at 2022/5/23 14:25
* 活动之间的关系
*/
@SwTable("WF_CARE")
public class TaskRelEntity extends DefaultEntity {
public static final String ENTITY_NAME = "WF_CARE";

public TaskRelEntity() {
super(ENTITY_NAME);
}

public long getId() {
return getLong("trl_id");
}

public void setId(long trlId) {
put("trl_id", trlId);
}

public long getPriId() {
return getLong("trl_pri_id");
}

public void setPriId(long trlPriId) {
put("trl_pri_id", trlPriId);
}

public long getSrcTaskId() {
return getLong("trl_src_task_id");
}

public void setSrcTaskId(long trlSrcTaskId) {
put("trl_src_task_id", trlSrcTaskId);
}

public long getDstTaskId() {
return getLong("trl_dst_task_id");
}

public void setDstTaskId(long trlDstTaskId) {
put("trl_dst_task_id", trlDstTaskId);
}
}

+ 0
- 26
smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/flow/BpmFlowListService.java Переглянути файл

@@ -1,26 +0,0 @@
package cc.smtweb.system.bpm.web.flow;

import cc.smtweb.framework.core.common.R;
import cc.smtweb.framework.core.annotation.SwParam;
import cc.smtweb.framework.core.annotation.SwService;
import cc.smtweb.framework.core.db.DbEngine;
import cc.smtweb.framework.core.session.UserSession;
import cc.smtweb.system.bpm.engine.entity.AspModelPO;

import java.util.List;

// @Api(tags = "工作流流程接口")
@SwService
public class BpmFlowListService {
@SwParam
private DbEngine dbEngine;

// @ApiOperation(value = "读取流程列表")
public R list(UserSession us) {
String sql = "select model_id, model_mc_id, model_site_id, model_name, model_status, model_content, model_type, model_version, model_create_uid, model_update_uid, model_create_time, model_last_time from sw_bpm.asp_model" +
" where model_type=? order by model_id";
List<AspModelPO> list = dbEngine.query(sql, AspModelPO.class, 2);

return R.success(list);
}
}

+ 5
- 13
smtweb-system/sw-system-bpm/src/test/java/cc/smtweb/system/bpm/test/BuildJavaBean.java Переглянути файл

@@ -11,19 +11,10 @@ import org.junit.Test;
public class BuildJavaBean {
@Test
public void buildBean() {
String str = "`mf_id` bigint(20) NOT NULL,\n" +
" `mf_prj_id` bigint(20) NOT NULL DEFAULT '-1',\n" +
" `mf_mc_id` bigint(20) DEFAULT NULL COMMENT '-1',\n" +
" `mf_name` varchar(32) COLLATE utf8_unicode_ci DEFAULT '名称',\n" +
" `mf_title` varchar(200) COLLATE utf8_unicode_ci NOT NULL COMMENT '标题',\n" +
" `mf_type` int(4) DEFAULT '0',\n" +
" `mf_service` varchar(100) COLLATE utf8_unicode_ci NOT NULL COMMENT '服务名',\n" +
" `mf_content` text COLLATE utf8_unicode_ci COMMENT '详细信息',\n" +
" `mf_create_uid` bigint(20) DEFAULT NULL,\n" +
" `mf_update_uid` bigint(20) DEFAULT NULL,\n" +
" `mf_create_at` bigint(20) NOT NULL DEFAULT '0',\n" +
" `mf_update_at` bigint(20) NOT NULL DEFAULT '0',\n" +
" `mf_remark` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT '备注',\n";
String str = "`trl_id` bigint(20) NOT NULL COMMENT 'null',\n" +
" `trl_pri_id` bigint(20) DEFAULT NULL COMMENT 'null',\n" +
" `trl_src_task_id` bigint(20) DEFAULT NULL COMMENT 'null',\n" +
" `trl_dst_task_id` bigint(20) DEFAULT NULL COMMENT 'null',\n";
String[] ss = str.split("\n");
for (String s: ss) {
String[] s0 = s.trim().split(" ");
@@ -41,6 +32,7 @@ public class BuildJavaBean {
ttj = "Long";
break;
case "tinyint":
case "smallint":
case "int":
tt = "int";
ttj = "Int";


+ 1
- 1
smtweb-system/sw-system-bpm/src/test/java/cc/smtweb/system/bpm/test/ModelFormTest.java Переглянути файл

@@ -3,7 +3,7 @@ package cc.smtweb.system.bpm.test;
import cc.smtweb.framework.core.common.R;
import cc.smtweb.framework.core.common.SwMap;
import cc.smtweb.system.bpm.spring.BpmApplication;
import cc.smtweb.system.bpm.web.engine.DynPageService;
import cc.smtweb.system.bpm.web.engine.dynPage.DynPageService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;


Завантаження…
Відмінити
Зберегти