GreaterWMS:完全开源的仓库管理软件

聚商汇 WMS-- 开源仓库管理系统

头像-小.jpg


项目介绍:

完全开源仓储管理软件,遵循 Apache License 2.0 协议,前后端分离,且完全开源,API 使用 restful 协议,方便二次开发,前端代码使用 quasar 进行构建,后端使用 Python Django3.1,利用 API,可以支持多仓,波次发货,合并拣货,Milk-Run 等业务模型。


项目初衷:

我在供应链行业工作了 15 年,发现在我们这个专业的领域,没有一款高自由度、高自定义化的软件,来深度支持我们企业的业务。大多数软件都是闭源的,而且很难去做二次开发,即使开发,周期也是非常长,开发失败的案例也是比比皆是。由于企业选择了一款软件后,其二次开发也会被开发公司绑定,至于二次开发费用,只能说呵呵。所以,我设计了这个聚商汇 WMS,为的是做到一款高自由度,高自定义开发的仓库管理软件,来深度支持企业的业务。

  • 愿景:如果你从事着非 IT 行业的工作,而你又热爱你的行业,那就用科技去改变他。

生命周期

  • V 1.0.0 -- 2019 年 7 月 ~ 2020 年 12 月(由于 1.0.0 版本的二次开发设计较为复杂,故 2.0 重新编写)
  • V 2.0.0 -- 2020 年 12 月 ~ 2021 年 3 月(重新编写业务逻辑,原生自带 API 开发文档,加入实时通信,方便企业用户互相沟通)
  • V 2.1.0 -- 2021 年 3 月 ~ 2021 年 6 月(加入了客户与企业之间的实时互动,增进企业与客户之间的业务联系,实现 VMI)
  • V 2.2.0 -- 2020 年 6 月 ~ 2021 年 9 月(加入了供应商与企业之间的实时互动,增进企业与供应商之间的业务联系,实现 Milk-Run 和看板拉动)
  • V 2.3.0 -- 2021 年 9 月 ~ 2021 年 12 月(库存管理雏形,初步加入神经网络,深度学习库存变化)
  • V 3.0.0 -- 2021 年 12 月 ~ 2022 年 3 月(完全植入神经网络,让上下游企业可以以最低的成本运营整体的业务)
  • V 3.1.0 -- 2022 年 3 月 ~ 2022 年 6 月(区域仓库业务布局,通过深度学习,实现多仓运营,成本最低化)

开发环境:

  • Python 版本为 V 3.8.0 +
  • Django 版本为 V 3.1.0 +(该版本 Django 才原生支持异步实时通信)
  • Django-rest-framework 版本为 V 3.12.2 + (更高版本的 Django-rest-Framework 对 Django3 的兼容比较好)
  • Django-silk 版本为 V 4.1.0 (如果是部署上线,请关闭 silk,silk 仅为调试 API 接口速度用,有可能会泄露用户信息)
  • Quasar 版本为 V1.7.2 + ( 可以查看 Quasar 官网,来编辑 GreaterWMS 前端代码:Quasar 官网)
  • Vue 版本为 V 2.6.0 +(尽量不要使用 Vue3,因为开发环境没有使用 Vue3,不知道会出现什么问题)
  • API,遵循 RESTful 架构

构建命令:

  • 下载代码:
git clone https://github.com/Singosgu/GreaterWMS.git
  • 安装 Python 库:
pip install -r requirements.txt

注意:安装需要Twisted库,这个库有时候会安装不上,需要下载下来本地安装

pip install Twisted{你下载下来的版本名称}

注意:本地安装需要注意路径

  • 初始化数据库:
python manage.py makemigrations
  • 迁移数据库:
python manage.py migrate

创建数据库,Django 默认使用 sqlite3 作为数据库,如果需要 mysql 数据库,请在 greaterwms/settings.py 里面配置 DATABASE

开发服务器运行:

  • 开发运行:
daphne -p 8008 greaterwms.asgi:application

生产服务器运行:

  • supervisor 守护进程:
pip install supervisor

使用 supervisor 来守护 Django 进程,再使用 Nginx 做反向代理,至于 superevisor 的教程有很多,这里不做讲解

  • Nginx 支持:

推荐使用 Nginx 进行部署,部署的时候需要指定 WebSocket 链接,如果不指定,实时通信功能将报错

另需要修改 axios_request.js 里的 ws_url

## 示例更改前
const baseurl = 'http://127.0.0.1:8008/'
const wsurl = 'ws://127.0.0.1:8008/'

## 示例更改后
const baseurl = 'https://你的域名/'
const wsurl = 'wss://你的域名/websocket/'

如果服务器启用了 SSL,请使用 https 和 wss,如果没有启用 SSL,则使用 http 和 ws

修改后需要重新 build 前端代码


开发扩展:

因为使用的前后端分离的设计,所以可以通过 API,开发更多的软件应用

物流智能 AGV

  • AGV 的项目也已经开源,由于场地受限,仅实现智能发货,定点回库,使用的循迹感应器,超声波避障感应器,红外避障感应器,所有的指令通过网络传输,AGV 绑定 MAC 地址和 IP 地址,保证了安全性,前提是,你需要有一个树莓派。

进销存

  • 可以直接当一个进销存系统使用,简化仓库库位设置等操作即可。

APP 和小程序

  • Quasar 原生可以直接打包成 IOS APP 和 Android APP
  • 小程序的开发可以通过 API 开做二次开发,但小程序不支持 put 请求,所以需要自己再写一个请求接口。
  • API 的组合可以达到 100 万种,这样我们可以根据查询请求,来获得实时报表和数据监控

供应链管理系统

  • 产品的数量,创建时间,最后使用时间是各方面统计的,所以可以方便采购计划和调拨计划进行库存的分析
  • V 2.3.0 及其以后的版本,将自带深度学习分析,所以可以直接使用分析结果作为供应链管理系统工具使用

多仓管理

  • OPENID 为用户的数据唯一标识,数据组统一标识为 APPID,所以很方便可以实现多仓管理

波次拣货,发货

  • 可以设置固定时间向服务器发出请求,从而达到波次拣货的功能

  • 也可以直接使用任务工作,通过 API 查询分析结果来实现,推荐使用APScheduler

    pip install apscheduler
    

Milk-Run

  • V 2.2.0 及其以上版本,将原生支持此功能
  • 如果现在就需要这个业务,可以根据 API 调用库存消耗,来实现此功能

VMI

  • V 2.1.0 及其以上版本,将原生支持此功能
  • 如果现在就需要这个业务,可以根据 API 调用库存消耗,来实现此功能

拣货路线优化

  • 现在的拣货路线是按照库位排序
  • V 2.3.0 以后版本将原生支持此功能
  • 如果现在需要这个业务,可以根据每天的拣货明细,调用 API 来实现此功能

开发指南:

baseurl

  • 是发起请求的基本网址,如果是本地调试,则默认为http://127.0.0.1:8008/ ,如果部署在服务器,则需要将其改为你的网站访问 url
  • 修改方式为,修改 axios_request.js,注意websocket的修改之前已经提到了

Django-silk

  • django-silk 为开发时的调试工具,可以统计每个接口的响应速度,如果需要部署到生产环境,请删除 Django-silk 相关配置,因为会有泄露用户信息的风险,或者直接修改 Django-silk 库,让用户只能看到自己的请求数据

数据库存储

  • 数据库设计时考虑到数据迁移等问题,所以只有 users 里面的 user_id 和 Django 自带的 user_id 做了外键,其余所有字段全部没有使用外键,方便数据备份和数据库迁移
  • 数据库是 4 段式设计
    1. 验证数据用户归属
    2. 验证数据安全性
    3. 验证数据是否可以存入数据库
    4. 存入数据库,并返回 Response

关于数据传输

  • 需要在所有的请求头 headers 里面加入 token 值,这个值就是用户的数据唯一标识 OPENID
  • 所有的数据传输需要设定 content-type 为 application/json

OPENID

  • OPENID 是注册用户数据的唯一标识,当管理员直接注册时,会有 developer=1 这个管理员标识。
  • 你可以根据 developer 标识来做自定义二次开发

APPID

  • APPID 是用户数据组唯一标识
  • 如果需要多公司运营,或者多仓运营,可以通过 APPID 做统一链接,来实现多公司,多仓操作

用户权限

  • 未对用户权限做过多限制,请根据自身的业务需要,做二次开发限制

业务流程:

  • 暂时未更新此内容