通过腾讯云开发平台实现一个简单的仓储应用
服务端用到腾讯云平台中的产品
云开发
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为开发者提供高可用、自动弹性扩缩的后端云服务,包含计算、存储、托管等 serverless 化能力,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用、Flutter 客户端等),帮助开发者统一构建和管理后端服务和云资源,避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
智能对话平台TBP
腾讯智能对话平台(Tencent Bot Platform,TBP)专注于“对话即服务”的愿景,全面开放腾讯对话系统核心技术,为大型企业客户、合作伙伴提供开发平台和机器人中间件能力,实现高效、便捷、多样化、低成本人机对话体验。
客户端使用Flutter开发
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。
应用由来
经常有朋友问,有没有推荐的仓储软件,要的很简单,能够收货发货,查询库存数量,如果可以管控批次更好。库存管理软件的确挺多的,但随着软件落地,为了满足业务的差异性,功能也越加越多,软件也越来越臃肿,到最后上手也变动复杂,这几年一直想做一款小而美的仓储管理软件,希望可以浓缩这几年仓储实施经验进去。
麻雀虽小五脏俱全
第一个版本,实现基本的收发货,库存查询,批次管理和多批属性管理。
应用设计和开发
库存设计采用批属性表与库存表独立设计,同一物料,根据不同收货批次独立库存记录,云数据库用的是文件型数据库,很方便的解决动态批属性问题。
1.数据库设计
1.1基础模块功能
1.1.1 用户
{用户编号:hxs,用户名称:黄旭,邮箱:[email protected],角色:[角色编号],默认仓库:xxx,默认货主:xxx}
1.1.2批属性 lottable
{批属性编号:00001,仓库号:00001,批属性值:[{批属性键:批属性1,批属性名称:批次号,是否必填:是,是否系统默认:否}]}
1.2收货模块
1.2.1 收货单表 receipt
{仓库号:00001,收货单号:0000000001,货主编号:00001,供应商:00001,外部单号:xxx,外部行号:xxx,单据类型:xxx,预计到货日期:xxx,状态:xxx,货品编号:SKU001,托盘号:xxx,预计数:100,收货数:20,库位:xxx,批次:xxx,批属性编号:xx,批属性值:[{批属性健:批属性1,批属性值:批次号}]}
1.3库存模块
1.3.1 库存表 lotxlocxlpn
{仓库号:00001,货主编号:xxx,货品编号:SKU001,库位编号:STAGE,LPN:L000000001,批次:xxx,状态:xxx,现有数量:xxx,分配数量:xxx,拣货数量:xxx,冻结数量:xxx,可用数量:xxx}
1.3.2 批属性表 lotattribute
{仓库号:00001,货主编号:xxx,货品编号:SKU001,批次号:xxx,批属性值:[{批属性健:批属性1,批属性值:批次号}]}
1.4出库模块
1.4.1 出库订单 orders
{仓库号:00001,出库单号:0000000001,货主编号:00001,客户:00001,承运商:00001,外部单号:xxx,外部行号:xxx,单据类型:xxx,需求发货日期:xxx,实际发货时间:xxx,状态:xxx,货品编号:SKU001,箱号:xxx,订单数:100,未结数:100,分配数:100,拣货数:100,发运数:100,批次:xxx,批属性编号:xx,批属性值:[{批属性健:批属性1,批属性值:批次号}]}
1.4.2 拣货单 pickdetail
{仓库号:00001,拣货序号:xxx,货主编号:00001,货品编号:SKU001,出库单号:0000000001,状态:xxx,批次号:xxx,库位:xxx,箱号:xxx,落放 ID:xx,来源库位:xxx,目标库位:xxx,拣货数:100,箱序号:xxx,波次号:xxx}
2.功能场景开发
2.1 完成一次收货
2.1.1 创建一个收货类:包含一个根据收货单号收货方法
2.1.2 通过TBP服务调用收货云函数,对话内容如下:1问“按单收货”,2答“请输入收货单号”,3问“xxx”,4答“收货完成,本次收货数xx剩余库存数为xxx”。
2.2 完成一次无单物料收货
2.2.1 创建一个无单按物料收货方法:根据用户ui获取默认仓库和默认货主,自动创建收货单,再调用按单收货完成物料收货
2.2.2 通过TBP服务调用收货云函数,对话内容如下:1开始“按物料收货”,2问“请输物料”,3问“请输入数量”,4答“xx物料收货完成,本次收货数xx剩余库存数为xxx”。
2.3 完成一次出库单出库
2.3.1 创建一个出库类:包含一个根据出库单号出库方法,通过出库单创建拣货单,再通过拣货到完成库存扣减
2.3.2 通过TBP服务调用收货云函数,对话内容如下:1问“按单出库”,2答“请输入出库单号”,3问“xxx”,4答“出库完成,本次出库数xx剩余库存数为xxx”。
3.代码整理
3.1 flutter 页面插件化
3.2 对话意图使用工厂模式
4.代码上传GitHub
4.1 仓储前端代码:huangtao_app
Flutter作为前端,对话方式调用腾讯云函数以及腾讯智能对话平台,实现简单的消息即服务仓储应用服务。
4.2 仓储服务端代码:tbp-huangtao-wms-service
腾讯云函数,消息即服务仓储应用
4.3 腾讯智能对话调用代码:wxtbp
腾讯云函数调用智能对话平台TBP
应用效果
APP初始页面
用户注册
用户登录
无单批次收货
无单物料发货
库存查询
腾讯开发云
腾讯智能对话平台 TBP
CMS 内容管理系统
总结
项目代码已经上传GitHub,后面功能会持续优化,本项目为传统软件和新技术结合,尝试提供一种全新的仓储管理软件人机交互模式。