路人战队|通过库存核算,看低代码如何实现企业级应用中的核心业务逻辑( 二 )


从数据模型上 , 我们能够清晰的看到入库单表、出库单表、盘存表、期初表与仓库、物料之间的关联关系 。 与采用纯代码的方式类似 , 符合数据库设计范式的数据模型 , 也是使用低代码开发企业级应用的基础 。
库存查询:视图在周先生演示的项目中 , 出入库、盘存、期初余额等数据存储在不同的表中 , 这样在方便了对应表单管理功能开发的同时 , 也增大了库存查询的复杂度 。 有没有高效的手段 , 能够快速完成关联多表的数据查询?周先生选择了使用活字格访问数据库中的查询视图 , 来实现当月库存实时数据查询功能 。
路人战队|通过库存核算,看低代码如何实现企业级应用中的核心业务逻辑(当月库余额查询视图的创建脚本)
在这个查询视图中 , 数据库将根据仓库和物料 , 分别汇总出库库和盘存记录 , 与期初余额加总得出当月出入库量和当前的库存数量 。
不论是外联的SQL Server等数据库 , 还是活字格内置的数据库 , 都提供了以SQL语句编写查询视图的能力 , 而活字格可以像访问数据表一样访问这些查询视图 , 以拖拽的方式 , 将视图与表格绑定 , 将数据展示给最终用户 。 相比于将数据拉取到服务器端甚至客户端后再进行处理 , 查询视图因为运行在数据库引擎中 , 执行效率可以大幅提升 , 是实现复杂查询的利器 。
编写视图需要开发者具备一定的SQL代码编程能力 。 一定程度上讲 , 在拖拽式完成大多数业务功能开发的前提下 , 使用数据库视图来扩展其应用场景 , 正是低代码相比于无代码等其他工具的优势之一 。 正是因为活字格具备了对接查询视图的能力 , 才能帮助周先生利用SQL代码 , 为大负载、高复杂度的业务逻辑进行性能优化 , 满足企业级应用对数据处理性能的高要求 。
可用库存校验:表格、公式与命令对于一套B/S架构的企业级系统 , 关键业务模块都会在服务端对最终用户提交上来的数据进行校验 。 比如在进行出库操作前 , 库存核算模块需要查询可用库存 , 达到避免出现负库存的目的 。 然而 , 为了提升系统的易用性 , 系统通常会采用"批量编辑/提交"的模式进行设计 。 最终用户在一个页面上同时设置多个物料的出入库数据 , 然后一键提交 。 如果仅在服务端进行校验和检查 , 就无法帮助最终用户及时发现数据错误 , 导致重复性操作 。
为了提升用户体验 , 周先生的团队在服务端验证的基础上 , 还通过活字格的命令机制 , 为出入库单等页面设置了前端验证 。 当最终用户创建和修改出入库单上的物料数量时 , 系统会实时检查可用库存 , 可能出现负库存时 , 及时提醒用户 。 在服务端验证的基础上 , 追加前端验证可以提升校验的响应速度 , 用户体验更佳 。 然而 , 如何在不写JavaScript代码的情况下 , 于页面上完成复杂的库存余额计算?
路人战队|通过库存核算,看低代码如何实现企业级应用中的核心业务逻辑(修改出库单时 , 实时检查物料库存)
为了实现出入库单的前端验证 , 周先生用到活字格的表格操作等命令 , 在页面中隐藏的表格中完校验计算 。
路人战队|通过库存核算,看低代码如何实现企业级应用中的核心业务逻辑(通过隐藏的表格实现前端验证逻辑)
在页面中隐藏若干个表格 , 通过表格操作命令实现表格间的数据传递 , 是活字格的一大功能也行 。 配合vlookup等兼容Excel的公式 , 使用活字格构建前端验证的操作非常易于上手 , 且功能强大 。
月度盘存:存储过程+服务端命令从上面的介绍中 , 我们不难看出周先生开发的库存核算功能 , 库存数量的计算都是基于"期初库存" , 叠加本期的进出库记录 , 进行增量计算得来的 。 对于出入库频繁 , 数据量大的企业级系统而言 , 这种"增量计算"的思路可以将汇总计算的时间区间缩短到不超过一期(一个月) , 大大降低参与计算的数据量 , 提升整个系统的处理能力 。 那么 , 如何生成期初库存呢?