# EcologyDevPlugin **Repository Path**: eggbucket/ecology-dev-plugin ## Basic Information - **Project Name**: EcologyDevPlugin - **Description**: 泛微Ecology二开插件包 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 13 - **Created**: 2022-08-05 - **Last Updated**: 2022-08-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EcologyDevPlugin #### 介绍 泛微Ecology二开插件包 #### 重点工具介绍 1. 工作流请求工具类RequestUtil 重新包装创建流程代码,更友好使用,不用组装层级关系,只需要组装数据。 流程提交、退回等操作 2. 表单建模工具类ModeUtil 更友好插入表单建模数据,只需要组织数据,自动加入默认的字段、自动重构权限、生成编码字段值,支持事务回滚。 一些查询Id、获取模块ID、数据库表名、表单ID等相互转换的方法 3. 节点附件操作工具类NodeActionUtil 用于从节点后附加操作的Requestinfo对象中获取并重组表单数据,更友好的使用,还内置了部分针对明细表的方法利用JDK8lambda表达式实现sql聚合函数、group by等功能替代查询数据库获取数据以减轻数据库压力。 ### 关于代码调试 要在本地调试Ecology配置麻烦,为了可以快速调试代码故引入了hutool的数据库。将db.settting放入ecology/classbean/并配置Ecology数据库 在节点附加操作类和其他数据库操作时可用这个对象操作。下面给出一个示例 ``` import cn.hutool.db.Entity; import com.dengcj.db.DB; import com.dengcj.ecology.request.entity.NodeExecuterResult; import weaver.interfaces.workflow.action.Action; import weaver.soa.workflow.request.RequestInfo; import java.util.List; import java.util.Map; /** * @author dengchunjie * @Description: 节点附加操作Action模板代码 * @date 2022/3/18 13:39 */ public class TemplateAction implements Action { @Override public String execute(RequestInfo requestInfo) { String requestid = requestInfo.getRequestid(); String workflowId = requestInfo.getWorkflowid(); String tableName = requestInfo.getRequestManager().getBillTableName(); NodeExecuterResult nodeExecuterResult = new NodeExecuterResult(); // 优先选择从RequestInfo对象中拿主表数据,减轻数据库压力 Entity mainFormData = NodeActionUtil.getMainFormData(requestInfo); int id = mainFormData.getInt("id"); String code = mainFormData.getStr("code"); double price = mainFormData.getDouble("price"); // 从RequestInfo对象中中拿明细表数据,优先选择java程序处理,可以参考RequestDataProcessUtil处理简单的明细表需求 Map> detailFormData = NodeActionUtil.getDetailFormData(requestInfo); // 明细表1数据 List dt1 = detailFormData.get("dt1"); // 需要本地调试的时候直接从数据拿主表数据,可模拟提交流程,调试完之后注释 // ------------------- 本地调试用代码 START ------------------- // DB db = new DB(); // Entity mainFormData = db.queryOne("select * from "+tableName+" where requestid=?", requestid); // List dt1 = db.query("select * from "+tableName+"dt1 where id=?", mainFormData.getInt("id")); // ------------------- 本地调试用代码 END ------------------- if(price > 100){ requestInfo.getRequestManager().setMessage("表单校验失败"); requestInfo.getRequestManager().setMessagecontent("价格不能大于100"); } return Action.SUCCESS; } } ``` #### 欢迎提需求 E-mail: 1@dengcj.com QQ: 199199202 Mobile/wechat: 17623228666 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request