基于 Python, FastAPI, sqlite3 的简单 ERP 电商金融系统

本文介绍了基于Python和FastAPI开发的轻量级ERP系统,它能计算MPS并动态调整生产计划,根据库存更新日期,支持资产负债表查询。系统具有极简架构和界面,易于复用,数据库使用sqlite3,且附有详细的教程和数据库结构说明。

simple-erp-system

源代码可从本项目仓库下载:
📌github
📌gitee

基于 Python, FastAPI, sqlite3 的简单 ERP 系统:企业资源计划系统(Enterprise Resource Planning System),实现 MPS(Master Production Schedule) 的计算,按时间分段计划企业应生产的最终产品的数量和交货期;资产负债表公式查询。

个人网站:www.bytesc.top 包含项目 📌 在线演示 📌

个人博客:blog.bytesc.top

🔔 如有项目相关问题,欢迎在本项目提出issue,我一般会在 24 小时内回复。

🚩 欢迎参考、复用代码,但请遵守LICENSE文件中的开源协议(参考翻译见本文档末尾)。对本仓库内的实质性内容(包括但不限于数据,图片,文档)保留著作权。

功能介绍

  • 根据 MPS(Master Production Schedule) 按时间分段计划企业应生产的最终产品的数量和交货期
  • 实现资产负债表公式查询
  • 注释详细,易复现
  • 极简的项目架构
  • 极简的页面布局,轻量化的前端代码

功能优点

  • 根据库存动态更新计划日期:根据工序库存和资材库存的余量,判断是否需要配料提前期和供应商提前期,根据库存更新计划日期。
  • 不会处理不需要的子节点:当某个节点库存够用,实际需求量(要生产/采购的数量)为 0 时,不会处理其子节点。
  • 底层的物料先分配库存,得到最优方案:搜索时按照子树深度对子节点排序,优先遍历子树深度较大的子节点,尽可能让底层的物料先拿到库存。

基本原理

🚩 系统架构:
请添加图片描述

🚩 DPS 算法流程:
请添加图片描述

  • 通过读取数据库中的物料的子父关系表,建立物料合成关系树,并用 DFS(Deep First Search) 深度优先搜索算法遍历物料关系树,并标记节点深度和每个节点的子树深度。
  • 按照 MPS 队列和物料库存数量,深度优先搜索,计算生产和采购计划。
    • 根据工序库存和资材库存,判断是否需要配料提前期和供应商提前期,动态更新计划日期。
    • 按照子树深度对子节点排序,优先遍历子树深的子节点,尽可能让底层的物料先分配库存。
    • 当实际需求量(要生产/采购的数量)为 0 时返回,防止生产/采购无需处理的子节点。

功能展示

添加 MPS 记录
请添加图片描述
产品名称从数据库中获取,用户可选择
请添加图片描述
点击计算,可一次性计算多条计划,按照时间优先级分配库存
请添加图片描述
资产负债公式变量同意从数据库中获取
请添加图片描述
可以一输出计算多个变量的公式
请添加图片描述
可手动修改库存信息(点击计算也会根据消耗自动更新库存)请添加图片描述

数据库结构

erpdata.db 为 sqlite3 数据文件,sql 文件夹下包含数据库备份sql代码。

数据库结构
请添加图片描述

项目运行

请添加图片描述

pip install -r requirements.txt

运行

python erpsys.py

浏览器访问 http://127.0.0.1:8080即可进入系统

如果8080端口被占用,修改erpsys.py文件末尾的端口配置 (port) 即可。

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="127.0.0.1", port=8081) 

注意,如果这里 host="0.0.0.0" 代表允许所有host访问,请依然浏览器输入 http://127.0.0.1:8080 而不是 http://0.0.0.0:8080

项目结构

│  connectdb.py
├─ERP
│      ERP.py
│      MPS.py
│      Tree.py
├─templates
│      func.html
│      index.html
├─readme_img
├─sql
│      structure_data.sql
│      structure_only.sql
│  erpdata.db
│  erpsys.py
│  LICENSE
│  README.md
│  requirements.txt
  • erpsys.py 是源代码文件,包含服务端代码,也是项目的运行入口
  • ERP 文件夹下存放源代码文件,包含核心算法代码
  • connectdb.py 包含数据库配置,连接,查询程序
  • erpdata.db sqlite3 数据库文件
  • templates 文件夹存放待渲染的 html 模板文件
  • sql 文件夹存放创建数据库的 sql 代码

开源许可证

此翻译版本仅供参考,以 LICENSE 文件中的英文版本为准

MIT 开源许可证:

版权所有 © 2023 bytesc

特此授权,免费向任何获得本软件及相关文档文件(以下简称“软件”)副本的人提供使用、复制、修改、合并、出版、发行、再许可和/或销售软件的权利,但须遵守以下条件:

上述版权声明和本许可声明应包含在所有副本或实质性部分中。

本软件按“原样”提供,不作任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性。在任何情况下,作者或版权持有人均不对因使用本软件而产生的任何索赔、损害或其他责任负责,无论是在合同、侵权或其他方面。

核心目标:​ 工程实践:掌握单人完成前后端分离项目的基本流程:需求、设计、编码(前后端)、测试(基础)、部署。 技术栈掌握:熟练运用一套选定的主流技术栈进行开发。 独立解决问题:展现独立设计、实现、调试和文档编写的能力。 可以用微信小程序也可以用之前的项目完善一点。 一、项目基本要求:(单人精简版) 1.项目选题要求: 主题明确 & 规模适中:选择功能明确、复杂度可控的应用。​推荐: 企业管理系统 ​​避免:大型电商、社交网络、复杂ERP等。 2、技术栈要求 (必须前后端分离), ​​前端 (必选其一):Vue.js (推荐)/ React / 或纯HTML+JS+AJAX(不推荐,但允许)。 ​​后端 (必选其一):Spring Boot (推荐)/ Node.js (Express/Koa) / Python (Flask/FastAPI)。 ​​数据库 (必选):MySQL (推荐) / SQLite (更轻量,适合小型项目) / PostgreSQL。 ​​接口规范:强制要求使用RESTful API进行通信。 版本控制:强制要求使用Git 管理代码,建立仓库 (GitHub/Gitee/GitLab)。提交记录需体现开发过程。 3、核心功能模块 (精简) 用户模块 (核心):​​ 用户注册、登录(含基础密码验证)、登出。 至少区分普通用户和管理员角色(权限控制体现在核心业务模块的操作上)。 示例:普通用户只能查看/管理自己的待办项/文章;管理员可管理所有内容。 核心业务模块:根据选题,实现至少2-3个核心业务功能点。每个功能点需包含完整的增删改查)。 示例 (待办事项系统):​​ 待办事项的创建、查看列表、修改状态(完成/未完成)、删除、按条件(如状态)查询。 (用户权限体现在:用户只能管理自己的待办项) 示例 (个人博客系统):​​ 文章的创建、编辑、删除、发布/草稿状态管理、按分类/标签查询。 评论的添加、删除(管理员或文章作者可删)。 (用户权限:普通用户可评论,作者和管理员可管理自己的文章/评论) API接口: 清晰定义后端API接口列表(建议在报告中列出核心接口的路径、方法、参数、返回值)。 前端交互:实现基本的前端页面路由、数据展示、表单提交及与后端的API交互。
最新发布
12-07
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值