中越跨境物流管理系统的设计与实现(原创)
这是系统(原创)的用户使用手册
需要完整代码,可以私信作者
第一部分 软件建设方案
一、目标概要
《中越跨境物流管理系统》旨在为中越跨境物流企业提供一站式的业务管理解决方案,通过整合客户管理、货运管理、费用管理、报关管理等核心业务模块,实现物流业务全流程的数字化、规范化管理。系统以提升运营效率、降低管理成本、优化客户服务为核心目标,满足跨境物流企业对业务数据实时监控、流程自动化处理、客户分级服务等需求,助力企业在中越跨境物流市场中提升竞争力。
本系统针对中越跨境物流业务的特殊性,重点解决跨境运输中的客户信息整合、货运状态追踪、多币种费用计算、报关流程管理等痛点问题,通过简洁易用的操作界面和稳定可靠的系统性能,为企业员工提供高效的工作工具,为管理层提供精准的决策支持。
二、系统建设方案
(一)建设基本流程
1.需求分析阶段
通过调研中越跨境物流企业的业务流程,明确客户管理、货运跟踪、费用核算、报关处理等核心需求,梳理业务节点和数据流转关系,形成需求规格说明书。
2.设计阶段
(1)架构设计:采用Flask框架的MVC(模型-视图-控制器)架构,明确各模块的职责和交互方式。
(2)数据库设计:基于SQLite数据库,设计用户、客户、运单、费用等数据模型,建立表之间的关联关系。
(3)界面设计:遵循Bootstrap前端框架规范,设计简洁直观的操作界面,确保各功能模块布局合理、操作便捷。
3.开发阶段
(1)后端开发:使用Python 3.10.6语言,基于Flask框架实现业务逻辑,包括路由配置、数据处理、权限控制等。
(2)前端开发:通过HTML、CSS结合Bootstrap和Font Awesome实现页面展示,利用JavaScript实现交互功能。
(3)数据库开发:基于SQLAlchemy ORM框架,实现数据的增删改查操作,确保数据一致性和完整性。
4.测试阶段
进行单元测试、集成测试和系统测试,验证各功能模块的正确性、稳定性和兼容性,修复测试过程中发现的bug。
5.部署阶段
配置系统运行环境,将开发完成的系统部署到生产服务器,进行数据初始化和系统上线前的最终检查。
6.运维阶段
持续监控系统运行状态,及时处理系统故障,根据用户反馈进行功能优化和版本迭代。
(二)计算机和网络环境
1.服务器环境
硬件:CPU主频≥2.0GHz,内存≥4GB,硬盘存储空间≥50GB。
操作系统:支持Windows 10/11、Linux(Ubuntu 20.04及以上版本)、macOS 10.15及以上版本。
2.客户端环境
硬件:普通个人计算机,CPU主频≥1.5GHz,内存≥2GB,具备网络连接功能。
浏览器:支持Chrome 80.0及以上版本、Firefox 75.0及以上版本、Edge 80.0及以上版本。
3.网络环境
服务器与客户端需接入互联网,网络带宽≥1Mbps,确保数据传输稳定。
局域网内使用时,网络延迟≤100ms,避免因网络问题影响系统响应速度。
(三)系统要求
1.Python版本
系统基于Python 3.10.6开发,需安装该版本或兼容版本(3.10.x系列),不支持Python 2.x及以下版本。
2.Flask框架
核心Web框架为Flask 2.0及以上版本,用于处理HTTP请求、路由管理和模板渲染。
3.SQLite数据库
采用SQLite 3作为数据库,无需额外安装数据库服务器,数据以文件形式存储,便于系统部署和迁移。
4.使用的Python库
(1)Flask-Migrate:用于数据库迁移管理,支持数据表结构的更新和版本控制。
(2)Werkzeug:提供密码哈希、文件上传等工具函数,保障系统安全。
(3)SQLAlchemy:作为ORM(对象关系映射)框架,简化数据库操作。
(4)Jinja2:Flask默认的模板引擎,用于动态生成HTML页面。
(5)Bootstrap 5.3.0:前端UI框架,用于构建响应式页面布局。
(6)Font Awesome 4.7.0:提供图标支持,增强界面可视化效果。
(四)功能需求
1.用户管理模块
支持管理员和员工两种角色登录系统。
实现用户信息的添加、编辑、删除和查询功能。
基于角色的权限控制,管理员可管理所有用户,员工仅能查看自身信息。
2.客户管理模块
客户信息管理:支持客户名称、联系方式、地址、所属国家等信息的录入、修改、删除和查询。
客户分级管理:设置不同客户等级(如普通、VIP、钻石),定义各等级的折扣率、最低运单量和最低消费金额。
客户等级关联:将客户分配到对应等级,根据等级自动应用折扣政策。
3.货运管理模块
运单管理:创建运单,记录运单号、收发件人信息、货物描述、重量、运输方式等内容。
运单状态追踪:支持运单状态(待发货、运输中、已到达、已签收)的更新和查询。
物流节点管理:记录运单在各物流节点(如仓库、海关)的状态和处理信息。
4.费用管理模块
费用核算:为运单计算基础费用、额外费用和总费用,支持人民币(CNY)和越南盾(VND)两种币种。
汇率管理:维护人民币与越南盾的汇率信息,支持费用的多币种转换。
5.报关管理模块
报关信息管理:记录报关单号、货物价值、税费等信息,跟踪报关状态(待报关、报关中、已清关)。
报关文件管理:支持上传、查看和删除报关相关文件(如发票、装箱单)。
6.库存管理模块
库存信息管理:记录商品名称、编码、数量、所属仓库等信息。
库存变动记录:跟踪库存的入库、出库操作,记录变动原因和操作人。
7.供应商管理模块
物流供应商管理:用于维护合作的物流服务商信息,支持对供应商的基本信息及合作状态进行管理。
合同管理用于记录和管理与客户、供应商之间的物流合作合同。
8.异常、报表与消息模块
异常记录用于跟踪和处理物流过程中出现的异常情况(如货物丢失、延误等)
报表统计用于生成物流业务相关的数据分析报表,辅助业务决策
消息通知用于接收系统自动推送的关键业务提醒
9.系统管理模块
系统用户管理:系统管理员的添加、编辑与删除等。
系统设置:配置系统名称、版本、默认货币等基础参数。
操作日志:记录用户的关键操作,便于系统审计和故障排查。
三、软件设计开发说明
(一)总体架构说明
系统采用Flask框架的MVC架构模式,将业务逻辑、数据展示和用户交互分离,具体架构如下:
(1)模型(Model):对应models.py文件,通过SQLAlchemy ORM定义数据模型,映射数据库表结构,负责数据的存储和处理。
(2)视图(View):对应templates目录下的HTML文件,基于Jinja2模板引擎实现页面渲染,展示数据并接收用户输入。
(3)控制器(Controller):对应app.py文件,通过路由配置接收用户请求,调用模型处理业务逻辑,返回视图给用户。
此外,系统通过extensions.py初始化数据库连接,config.py配置系统参数,实现了模块化和可扩展性设计。
(二)系统各层的功能与作用
1.模型层(Model)
(1)定义数据实体:如User(用户)、Customer(客户)、Shipment(运单)等18个模型,对应数据库中的表。具体的表以及字段如下:
表名 | 作用描述 | 字段详情(字段名/类型/约束/说明) |
User | 存储系统用户信息,区分用户角色 | - id:Integer,主键 |
Customer | 管理客户基本信息,关联客户等级 | - id:Integer,主键 |
CustomerLevel | 定义客户分级规则,关联对应等级的客户 | - id:Integer,主键 |
Shipment | 记录货运单核心信息,关联收发方、运输方式等 | - id:Integer,主键 |
shipment_inventory | 运单与库存的多对多中间表,记录运单中商品数量 | - shipment_id:Integer,外键(关联Shipment.id),主键 |
Fee | 记录运单费用明细(基础费、额外费等) | - id:Integer,主键 |
CustomsDeclaration | 存储报关信息,关联运单和报关文件 | - id:Integer,主键 |
CustomsFile | 存储报关相关文件信息(如发票、提单等) | - id:Integer,主键 |
LogisticsNode | 追踪物流节点状态(如仓库、海关等节点的处理情况) | - id:Integer,主键 |
ExchangeRate | 管理货币汇率信息,支持多币种转换 | - id:Integer,主键 |
TransportMethod | 定义运输方式(如陆运 / 海运)及价格、时效等参数 | - id:Integer,主键 |
Inventory | 管理库存商品信息,关联仓库和库存变动记录 | - id:Integer,主键 |
StockRecord | 记录库存变动历史(入库 / 出库数量、原因等) | - id:Integer,主键 |
Warehouse | 管理仓库基本信息,关联库存商品 | - id:Integer,主键 |
LogisticsProvider | 管理物流供应商信息,关联合作合同 | - id:Integer,主键 |
ExceptionRecord | 记录物流过程中的异常情况(如货物丢失、损坏等) | - id:Integer,主键 |
(2)实现数据关系:通过外键和关联关系(如relationship)定义表之间的依赖关系,如客户与运单的收发件关系、运单与费用的一对一关系。
(3)封装数据操作:提供数据的增删改查方法,通过SQLAlchemy ORM与数据库交互,隐藏底层SQL语句。
2.视图层(View)
(1)页面展示:将模型层传递的数据以HTML形式展示给用户,如客户列表、运单详情等页面。
(2)交互表单:提供用户输入界面,如添加客户表单、编辑运单表单,通过表单提交数据到控制器。
(3)响应式设计:基于Bootstrap框架实现页面适配,确保在不同设备上的显示效果一致。
3.控制层(Controller)
(1)路由管理:通过@app.route装饰器定义URL与处理函数的映射,如/login对应登录功能,/customers对应客户列表功能。
(2)业务逻辑处理:接收用户请求数据,调用模型层进行数据处理,如验证用户登录信息、计算运单费用。
(3)权限控制:检查用户会话状态,限制未登录用户访问系统,根据用户角色(管理员/员工)控制功能权限。
(4)页面跳转:根据业务处理结果,跳转至相应页面,如登录成功后跳转至仪表盘,操作失败时返回原页面并提示错误信息。
(三)系统主要程序流程
1.用户登录流程
用户访问/login页面,输入用户名和密码。
控制器接收表单数据,调用User.query.filter_by(username=username).first()查询用户。
验证密码哈希(check_password_hash),验证通过则创建会话(session),跳转至仪表盘(/dashboard);否则提示错误信息。
2.客户等级添加流程
管理员访问/customer_levels/add页面,填写等级名称、折扣率等信息。
控制器接收表单数据,创建CustomerLevel对象,调用db.session.add(level)和db.session.commit()保存至数据库。
操作成功后跳转至客户等级列表页面,提示“客户等级添加成功”;失败则返回表单页面并显示错误。
3.运单创建流程
用户访问运单添加页面,填写收发件人、货物信息、运输方式等内容。
控制器验证数据合法性,创建Shipment对象,关联收发件人(sender_id、receiver_id)和运输方式(transport_method_id)。
计算运单总重量和费用,创建Fee对象关联该运单,提交数据库后跳转至运单列表页面。
(四)程序树形结构说明
以下是整个系统的功能结构,以及程序树形结构:
CrossborderLogisticsSystem/
├── app.py # 主程序文件,包含路由和业务逻辑
├── config.py # 系统配置文件,定义系统参数
├── extensions.py # 扩展初始化,如数据库连接
├── models.py # 数据模型定义
├── migrations/ # 数据库迁移文件(Flask-Migrate生成)
├── static/ # 静态资源目录
│ ├── css/ # 自定义CSS文件
│ ├── js/ # 自定义JavaScript文件
│ └── images/ # 图片资源
├── templates/ # 模板文件目录
│ ├── base.html # 基础模板,定义页面布局框架
│ ├── login.html # 登录页面
│ ├── dashboard.html # 仪表盘页面
│ ├── customer_levels/ # 客户分级管理模板
│ │ ├── list.html # 客户等级列表
│ │ ├── add.html # 添加客户等级
│ │ ├── edit.html # 编辑客户等级
│ │ └── view.html # 查看客户等级详情
│ ├── customers/ # 客户信息管理模板
│ │ ├── list.html # 客户列表
│ │ ├── add.html # 添加客户
│ │ ├── edit.html # 编辑客户
│ │ └── view.html # 查看客户详情
│ ├── shipments/ # 货运管理模板
│ ├── fees/ # 费用管理模板
│ ├── customs/ # 报关管理模板
│ ├── inventory/ # 库存管理模板
│ └── system/ # 系统管理模板
│ ├── users.html # 用户列表
│ ├── add_user.html # 添加用户
│ └── edit_user.html # 编辑用户
├── uploads/ # 文件上传目录
│ └── customs_files/ # 报关文件存储目录
└── requirements.txt # 项目依赖库列表
第二部分 用户使用手册
一、系统安装说明
(一)概述
本章节详细介绍《中越跨境物流管理系统》的安装步骤,包括环境准备、依赖安装和系统部署,适用于技术人员进行系统初始化部署。系统采用Python开发,基于Flask框架和SQLite数据库,安装过程无需复杂的服务器配置,适合中小型物流企业快速部署使用。
(二)适用范围
本系统安装说明适用于以下场景:
(1)企业首次部署系统到生产环境。
(2)系统迁移到新服务器或新环境。
(3)系统版本升级(需先备份数据)。
(三)系统运行环境说明
1.硬件要求
服务器:CPU≥2核,内存≥4GB,硬盘≥50GB(含数据存储空间)。
客户端:普通PC机,内存≥2GB,具备网络连接功能。
2.软件要求
操作系统:Windows 10/11、Ubuntu 20.04、macOS 10.15及以上版本。
Python:3.10.6版本(推荐使用官方安装包)。
浏览器:Chrome 80.0、Firefox 75.0、Edge 80.0及以上版本。
3.安装步骤
步骤 1:安装Python
访问Python官网(Welcome to Python.org)下载Python 3.10.6安装包,运行安装程序并勾选“Add Python to PATH”,完成安装后在命令行输入python --version验证是否安装成功。
步骤 2:下载系统源码
将系统源码包解压至本地目录(如D:\CrossborderLogisticsSystem)。
步骤 3:安装依赖库
打开命令行,进入系统目录,执行以下命令安装依赖:
pip install -r requirements.txt
步骤 4:初始化数据库
在命令行执行以下命令初始化数据库:
flask db init
flask db migrate -m "Initial migration"
flask db upgrade
步骤 5:启动系统
执行命令python app.py启动系统,在浏览器中访问http://127.0.0.1:5000即可打开系统登录页面。
二、系统操作说明
(一)登录与主页
1.登录
当系统启动后,在浏览器中访问http://127.0.0.1:5000即可打开系统登录页面。默认的账号是admin,密码是admin123。
2.主页
点击“登录”后,将进入到系统的主页。
(二)仪表盘
仪表盘是系统登录后的首页,关键业务数据和最近操作记录,帮助用户快速了解系统运行状态。
功能说明:
(1)显示运单总数、待发货、运输中、已到达、已签收的运单数量统计。
(2)展示最近5条运单记录,包括运单号、状态、创建时间等信息。
(3)显示当前系统时间和登录用户信息。
操作步骤:
(1)用户登录系统后自动跳转至仪表盘页面(/dashboard)。
(2)页面顶部显示系统名称和版本(从config_dict获取)。
(3)中间区域以卡片形式展示运单状态统计数据,点击数据可跳转至对应状态的运单列表。
(4)底部表格展示最近5条运单记录,点击运单号可查看运单详情。
(三)客户分级管理
在“客户管理”一级菜单下,客户分级管理用于对客户进行等级划分,不同等级对应不同的折扣政策和服务标准,帮助企业实现差异化客户服务。
1.客户分级列表
功能说明:展示所有客户等级的基本信息,包括等级名称、折扣率、最低运单量、最低消费等,支持等级的添加、编辑和删除操作。
操作步骤:
(1)登录系统后,点击左侧导航栏“客户管理”→“客户分级”,进入客户分级列表页面(对应/customer_levels路由)。
(2)页面显示客户等级表格,包含ID、等级名称、折扣率、最低运单量、最低消费和操作列。
(3)点击等级名称可跳转至该等级的详情页面(/customer_levels/view/<id>),查看等级关联的客户信息。
2.客户等级添加
功能说明:创建新的客户等级,设置等级名称、折扣率、最低运单量、最低消费金额和描述信息。
操作步骤:
在客户分级列表页面,点击右上角“添加等级”按钮,进入添加页面(/customer_levels/add)。
填写表单信息:
(1)等级名称:输入唯一的等级名称(如“VIP”)。
(2)折扣率:输入0-1之间的数值(如0.9表示9折)。
(3)最低运单量:输入客户需达到的最低运单数量(如10单)。
(4)最低消费:输入客户需达到的最低消费金额(如10000元)。
(5)描述:可选,输入等级说明信息。
点击“提交”按钮,系统保存等级信息并返回列表页面,提示“客户等级添加成功”。
若等级名称已存在或必填项为空,系统会显示错误提示,需修正后重新提交。
3.客户等级编辑
功能说明:修改已存在的客户等级信息,包括折扣率、最低运单量等,修改后将影响关联客户的折扣计算。
操作步骤:
在客户分级列表页面,找到目标等级,点击操作列的“编辑”按钮,进入编辑页面(/customer_levels/edit/<id>)。
页面自动填充该等级的当前信息,修改需要更新的字段(如调整折扣率为0.85)。
点击“保存更改”按钮,系统更新数据库并返回列表页面,提示“客户等级更新成功”。
4.客户等级删除
功能说明:删除不需要的客户等级,若等级已关联客户则无法删除,需先解除关联。
操作步骤:
(1)在客户分级列表页面,找到目标等级,点击操作列的“删除”按钮。
(2)系统弹出确认对话框,提示“确定要删除该等级吗?”,点击“确定”。
(3)若该等级无关联客户,系统删除等级并返回列表页面,提示“客户等级已删除”。
若该等级有关联客户,系统提示“无法删除该等级,因为存在关联客户”,需先在客户信息中修改关联客户的等级。
(四)客户信息管理
在“客户管理”一级菜单下,客户信息管理用于维护客户的基本资料,包括名称、联系方式、地址等,支持客户与等级的关联,便于针对性提供服务。
1.客户信息列表
功能说明:展示所有客户的信息,支持按名称、电话、国家、等级进行筛选和查询,提供客户信息的添加、编辑、删除和查看功能。
操作步骤:
点击左侧导航栏“客户管理”→“客户管理”,进入客户列表页面(/customers)。
页面顶部提供筛选条件:
(1)搜索框:输入客户名称或电话,点击搜索可筛选匹配结果。
(2)国家筛选:下拉选择“中国”或“越南”,筛选对应国家的客户。
(3)等级筛选:下拉选择客户等级,筛选属于该等级的客户。
表格展示客户ID、名称、电话、国家、等级、创建时间和操作列。
点击“查看”按钮可进入客户详情页面,查看客户的货运统计和关联运单信息。
2.客户信息添加
功能说明:录入新客户的基本信息,包括名称、电话、地址、国家等,并可关联客户等级。
操作步骤:
在客户列表页面,点击右上角“添加客户”按钮,进入添加页面。
填写表单信息:
(1)客户名称:输入客户全称(必填)。
(2)电话:输入联系电话(可选)。
(3)地址:输入详细地址(可选)。
(4)国家:选择“中国”或“越南”(默认中国)。
(5)客户等级:下拉选择已创建的客户等级(可选)。
点击“提交”按钮,系统保存客户信息并返回列表页面,提示“客户添加成功”。
3.客户信息编辑
功能说明:修改客户的基本信息,包括更新客户等级,变更后将影响该客户后续运单的折扣计算。
操作步骤:
在客户列表页面,找到目标客户,点击操作列的“编辑”按钮,进入编辑页面。
修改需要更新的字段(如更换客户等级为“钻石客户”)。
点击“保存更改”按钮,系统更新信息并返回列表页面,提示“客户信息更新成功”。
4.客户信息删除
功能说明:删除无效客户信息,若客户已关联运单则无法删除,需先处理关联的运单数据。
操作步骤:
在客户列表页面,找到目标客户,点击操作列的“删除”按钮。
系统弹出确认对话框,点击“确定”。
若客户无关联运单,系统删除客户并提示“客户已删除”;否则提示“无法删除,该客户存在关联运单”。
5.客户信息查看
功能说明:展示指定客户的完整信息,包括基本资料(名称、联系方式、地址等)、关联客户等级及对应权益(折扣率、最低运单量等)、历史关联运单摘要,帮助用户全面了解客户详情及业务合作情况。
操作步骤:
(1)在客户列表页面,找到目标客户,点击操作列的“查看”按钮,进入客户信息详情页面。
(2)页面分区域展示客户信息:①基本信息区(客户名称、电话、地址、国家、创建时间);②等级关联区(关联的客户等级名称、折扣率、最低运单量、最低消费金额);③关联运单区(最近5条关联运单的运单号、状态、创建时间)。
(3)若需查看关联运单的完整信息,可点击运单号,跳转至对应运单的详情页面;若需返回客户列表,点击页面顶部的“返回列表”按钮,系统跳转回客户列表页面。
(五)汇率管理
货运管理是系统核心模块,负责运单的创建、状态跟踪和物流节点管理,支持运单全生命周期的监控,同时通过汇率管理维护多币种转换规则,确保跨境物流费用计算的准确性。所以在完成货运制单之前,要先设置好汇率。
功能说明:维护不同货币(如人民币CNY、越南盾VND)之间的兑换汇率,支持汇率的添加、编辑及启用/禁用状态管理,确保运单费用核算时能调用有效汇率完成多币种转换,汇率更新后仅影响后续新增运单的费用计算,历史运单费用保持创建时的汇率不变。
操作步骤:
点击左侧导航栏“货运管理”→“汇率管理”,进入汇率列表页面。
页面展示所有汇率记录,包含源货币、目标货币、汇率值、状态(启用/禁用)、最后更新时间及操作列,支持通过“源货币 + 目标货币” 组合筛选特定汇率(如筛选“CNY→VND”的汇率)。
1.添加汇率
点击页面右上角“添加汇率”按钮,进入汇率添加页面;填写表单信息(源货币:选择货币类型,如“CNY”;目标货币:选择对应转换货币,如“VND”;汇率值:输入精确到小数点后4位的数值,如“3500.5000”,表示1 CNY可兑换 3500.5000 VND);点击“提交”按钮,系统校验“源货币 + 目标货币”组合是否唯一(避免重复添加同一货币对),校验通过则保存汇率并返回列表页面,提示“汇率添加成功”;若货币对已存在,系统提示 “该货币对汇率已存在,请勿重复添加”。
2.编辑汇率
在汇率列表中找到目标汇率(如“CNY→VND”),点击操作列的“编辑”按钮,进入汇率编辑页面;页面自动填充当前汇率信息,修改“汇率值”字段(如将3500.5000调整为3520.0000),其他字段(源货币、目标货币)不可修改;点击“保存更改”按钮,系统更新汇率值及最后更新时间,返回列表页面,提示“汇率更新成功”。
(六)运输方式管理
运输方式管理用于维护系统支持的物流运输方式信息,包括运输价格、时效等关键参数,操作路径:【货运管理】-【运输方式】。
1.运输方式列表
页面展示所有运输方式的基本信息,包括运输方式名称、运输周期(天)、单价(元/kg)、适用范围、状态(启用/禁用)及操作按钮。
2.添加运输方式
点击页面右上角“添加运输方式”按钮,填写运输方式名称、运输周期、单价、适用范围等信息后提交保存。
3.编辑运输方式
在列表中点击目标运输方式的“编辑”按钮,修改相关信息(如调整单价、更新运输周期)后提交。
4.状态切换
点击“启用”/“禁用”按钮可切换运输方式状态(启用状态的运输方式可在创建/编辑运单时被选择,禁用状态则不可用),系统会弹窗确认操作,确认后即时生效并刷新列表。
(七)运单管理
货运管理是系统核心模块,负责运单的创建、状态跟踪和物流节点管理,支持运单全生命周期的监控。
1.运单列表
功能说明:展示所有运单的基本信息,包括运单号、收发件人、状态、创建时间等,支持按状态、时间进行筛选。
操作步骤:
(1)点击左侧导航栏“货运管理”→“运单管理”,进入运单列表页面。
(2)页面提供筛选条件(如运单状态、日期范围),输入条件后点击“查询”可筛选结果。
(3)表格展示运单详情,点击“查看”可进入运单详情页面。
2.运单创建
功能说明:录入运单信息,包括收发件人、货物描述、重量、运输方式等,系统自动生成唯一运单号。
操作步骤:
在运单列表页面,点击“添加运单”按钮,进入创建页面。
填写表单信息:
(1)运单号:唯一(可以自动生成)
(2)发件人:从客户列表中选择(需提前创建客户)。
(3)收件人:从客户列表中选择。
(4)货物描述:输入货物名称、数量等信息。
(5)运输方式:选择陆运、海运或空运(需提前在运输方式管理中创建)。
(6)选择库存商品
点击“创建运单”按钮,系统生成运单号(如“SHIP20231001001”),创建运单并跳转至运单详情页面,提示“运单创建成功”。
3.编辑运单
功能说明:修改运单的非核心信息(核心信息如运单号不可修改),包括收发件人、货物描述、运输方式、关联库存商品等,修改后系统自动校验数据合法性(如收发件人需为已存在客户、运输方式需为启用状态),且若修改重量或运输方式,需重新核算费用(历史费用记录保留,新费用生成版本标注),确保运单信息与实际业务一致。
操作步骤:
(1)进入目标运单的详情页面(路径:运单列表→目标运单“查看”),点击页面顶部的“编辑运单”按钮,进入运单编辑页面。
(2)页面自动填充当前运单信息,其中“运单号”字段灰色显示(不可修改),可修改字段及要求如下:
(3)收发件人:点击“选择发件人/收件人”下拉框,重新选择已创建的客户(若客户信息未维护,需先前往“客户信息管理”添加客户);
(4)货物描述:修改货物名称、数量等内容(需与实际货物一致,字符长度不超过200字);
(5)运输方式:下拉选择启用状态的运输方式(如从“陆运”改为“海运”,需提前在“运输方式管理”确保目标运输方式已启用);
(6)关联库存商品:点击“添加/移除库存”按钮,可新增关联的库存商品(选择SKU后输入出库数量)或删除已关联的库存(需确保删除后仍有至少1个关联库存,否则提示“运单需关联至少1个库存商品”)。
修改完成后,点击页面底部的“校验并保存”按钮,系统执行数据校验:
(1)若存在必填项未填(如收发件人未选、重量为空),提示“请完善必填字段”;
(2)若选择的运输方式为禁用状态,提示“所选运输方式已禁用,请重新选择”;
(3)若修改重量或运输方式,弹出“费用重算提示”(“当前修改将影响运单费用,是否确认重算?”),点击“确认”后系统按新参数重新计算基础费、总费用,并生成费用修改记录(标注“编辑后重算”)。
校验通过且确认费用重算(若涉及)后,系统保存修改内容,跳转回运单详情页面,提示“运单编辑成功,已更新相关信息及费用”,同时详情页显示最新的运单数据(如运输方式、重量、费用)。
4.查看运单
功能说明:展示指定运单的完整信息,包括运单基本信息、收发件人详情、货物及库存关联信息、运输方式、费用明细、物流节点轨迹、报关状态及附件等,方便用户全面掌握运单全流程数据,且支持从详情页跳转至关联模块(如客户详情、报关文件下载)。
操作步骤:
(1)进入运单列表页面(路径:左侧导航栏“货运管理”→“运单管理”),在目标运单的操作列点击“查看”按钮,或在仪表盘/搜索结果中点击运单号,进入运单详情页面。
(2)页面按“信息分区”展示内容:
基本信息区:显示运单号(不可修改)、创建时间、更新时间、当前状态(如“运输中”),状态旁标注状态更新时间;
收发件人区:展示发件人/收件人的名称、电话、地址、国家及关联客户等级(点击客户名称可跳转至“客户信息查看”页面);
货物与库存区:显示货物描述(名称、数量)、总重量,及关联的库存商品列表(含SKU、单位、出库数量,点击SKU可跳转至“库存信息查看”页面);
运输与费用区:展示运输方式(名称、单价、预估时效)、费用明细(基础费、额外费、总费用、货币类型,点击“费用详情”可展开计算逻辑:基础费=重量×运输单价×客户折扣率);
物流节点区:按时间倒序展示运单经过的所有物流节点(节点名称、位置、状态、处理时间、描述,最新节点标红突出);
报关信息区:显示报关单号、货物价值、税费、清关状态,若有报关文件,可点击“下载文件”获取附件(如发票、装箱单)。
(3)详情页顶部提供“返回列表”“编辑运单”“更新状态”“上报异常”4个功能按钮,点击对应按钮可执行后续操作(如点击“更新状态”跳转至运单状态更新弹窗);完成查看后,点击“返回列表”按钮,系统跳转回运单列表页面。
3.运单状态更新
功能说明:根据物流进度更新运单状态(待发货→运输中→已到达→已签收),记录状态变更时间。
操作步骤:
在运单详情页面,找到“状态更新”区域,选择目标状态(如“运输中”)。
填写状态变更说明(可选),点击“更新状态”按钮。
系统更新运单的status字段和updated_at时间,页面实时显示最新状态。
4.物流节点管理
功能说明:记录运单在各物流节点的处理情况,所以它是依赖在每一个运单号上的,如“广州仓库”“河内海关”等节点的状态。
操作步骤:
在运单详情页面,点击“添加物流节点”按钮。
填写节点信息:
节点名称:输入节点名称(如“南宁中转站”)。
位置:输入节点具体位置。
状态:选择“待处理”“处理中”或“已完成”。
描述:输入节点处理说明。
点击“添加”按钮,系统创建LogisticsNode记录并关联当前运单,在页面下方显示节点列表。
(八)费用管理
费用管理用于核算运单的各项费用,支持多币种计算,并基于客户等级自动应用折扣。
1.管理费用
功能说明:为运单计算基础费用(按重量×运输方式单价)、额外费用(如保险费)和总费用(基础费用×折扣率+额外费用)。
操作步骤:
在运单详情页面,点击“管理费用”按钮。
系统自动计算基础费用(调用TransportMethod的price_per_kg×运单重量)。
输入额外费用(如200元),系统根据发件人客户等级的discount_rate计算总费用。
选择货币类型(CNY或VND),点击“保存费用”按钮,系统创建Fee记录关联该运单。
2.汇率管理
功能说明:维护CNY与VND的汇率信息,用于费用的币种转换。
操作步骤:
点击左侧导航栏“费用管理”→“汇率管理”,进入汇率列表页面。
点击“添加汇率”按钮,输入源货币(如CNY)、目标货币(如VND)和汇率值(如3500)。
点击“保存”按钮,系统创建ExchangeRate记录,确保货币对唯一(通过unique_currency_pair约束)。
若需更新汇率,找到目标汇率对,点击“编辑”按钮修改汇率值并保存。
(九)报关管理
报关管理用于处理运单的报关流程,所以它是依赖在每一个运单号上的,记录报关信息和相关文件,跟踪报关状态。
1.报关信息添加
功能说明:为运单添加报关信息,包括报关单号、货物价值、税费等,设置报关状态。
操作步骤:
在运单详情页面,点击“管理报关”按钮,进入报关信息页面。
填写表单信息:
(1)报关单号:输入海关提供的报关单号。
(2)货物价值:输入货物申报价值。
(3)税费:输入应缴税费金额。
(4)状态:选择“待报关”“报关中”或“已清关”。
(5)报关文件管理
点击“保存”按钮,系统创建CustomsDeclaration记录关联该运单。
2.报关文件上传
功能说明:上传报关所需的文件(如发票、装箱单),支持PDF、图片、文档等格式。
操作步骤:
在报关信息页面,点击“选择文件”的输入框。
选择本地文件(支持.pdf、.jpg、.doc等格式),选择文件类型(如“发票”)。
点击“保存报关信息”按钮,系统将文件保存至uploads/customs_files目录,创建CustomsFile记录关联报关信息。
上传成功后,页面显示文件列表,点击文件名可下载查看。
(十)仓库管理
仓库管理模块用于维护中越跨境物流业务相关的仓库信息,包括仓库基础资料、联系人、容量等,支持仓库信息的新增、编辑、删除及状态管理,确保库存商品的存储位置可追溯,为运单出库、库存变动提供准确的仓库关联依据,仅管理员及拥有 “仓库管理权限” 的员工可操作。
1.仓库列表
功能说明:展示系统内所有仓库的基本信息,包括仓库名称、位置、联系人、联系电话、容量、当前状态(启用/禁用)及操作按钮,支持按“仓库名称”“国家”“状态”进行筛选查询,方便快速定位目标仓库,且列表数据按“创建时间倒序”排列(最新创建的仓库显示在顶部)。
操作步骤:
(1)点击左侧导航栏“库存管理”→“仓库管理”,进入仓库列表页面。
(2)页面顶部设置3个筛选条件:
仓库名称:输入关键词(如“广州”),支持模糊匹配;
国家:下拉选择“中国”“越南”或“全部”,筛选对应国家的仓库;
状态:下拉选择“启用”“禁用”或“全部”,筛选对应状态的仓库。
(3)输入筛选条件后,点击“查询”按钮,列表实时更新匹配结果;点击“重置”按钮,可清空所有筛选条件,恢复显示全部仓库。
(4)列表表格展示字段包括:序号、仓库名称、位置(含国家,如“中国-广东省广州市白云区”)、联系人、联系电话、容量(单位:立方米)、状态(启用标绿/禁用标灰)、操作(查看/编辑/删除)。
(5)点击操作列的“查看”“编辑”“删除”按钮,可执行对应操作;点击列表右上角的“添加仓库”按钮,可进入仓库添加页面。
2.仓库添加
功能说明:创建新的仓库记录,录入仓库基础信息及联系人信息,设置仓库初始容量和状态,新增仓库默认状态为“启用”(可手动改为禁用),且“仓库名称+国家”组合需唯一(避免同一国家内出现重名仓库),确保仓库标识的唯一性。
操作步骤:
(1)进入仓库列表页面,点击右上角“添加仓库”按钮,进入仓库添加表单页面。
(2)填写表单字段(带“*”为必填项):
仓库名称*:输入仓库全称(如“广州白云国际物流仓”),长度不超过50字,不可包含特殊字符(如!@#$%);
国家*:下拉选择“中国”或“越南”(需与仓库实际位置一致,影响后续库存关联的跨境逻辑);
详细地址*:输入仓库具体地址(如“白云区太和镇物流大道123号”),长度不超过200字;
联系人*:输入仓库负责人姓名(如“张三”);
联系电话*:输入11位手机号或固定电话(如“13800138000”“020-88888888”),仅支持数字和“-”;
容量*:输入仓库总容量(单位:立方米),需为正数,保留1位小数(如“5000.0”“1200.5”);
状态:默认“启用”,可勾选“禁用”(若仓库暂未投入使用,选择禁用后无法关联库存);
备注:可选,输入仓库补充说明(如“主要存储电子产品,支持24小时出库”),长度不超过500字。
(3)填写完成后,点击页面底部“提交”按钮,系统执行数据校验:
若必填项未填,提示“请完善所有带*的必填字段”;
若“仓库名称+国家”组合已存在(如已创建“广州白云仓-中国”,再次添加同名同国家仓库),提示“该国家下已存在同名仓库,请修改仓库名称”;
若联系电话格式错误(如非11位手机号且不含“-”),提示“联系电话格式不正确,请重新输入”。
(4)校验通过后,系统保存仓库信息,跳转回仓库列表页面,并弹出“仓库添加成功”的提示,新仓库显示在列表顶部。
3.仓库编辑
功能说明:修改已存在仓库的非核心信息(核心标识“仓库ID”不可修改),包括仓库名称、地址、联系人、容量、状态等,修改“仓库名称”或“国家”时需重新校验“仓库名称+国家”的唯一性,且若仓库已关联库存商品(即有商品归属该仓库),状态不可从“启用”改为“禁用”(需先转移库存),避免影响库存操作。
操作步骤:
(1)进入仓库列表页面,在目标仓库的操作列点击“编辑”按钮,进入仓库编辑页面。
(2)页面自动填充该仓库的当前信息,其中“仓库ID”(隐藏字段,不展示)不可修改,其他字段可编辑,编辑规则与“仓库添加”一致:
若需修改仓库名称或国家,需确保新的“仓库名称+国家”组合未被占用;
若需修改容量,新容量需大于该仓库当前的“已用容量”(页面会显示“当前已用容量:XX立方米”,如已用1000立方米,新容量不可小于1000),否则提示“新容量不可小于已用容量,请调整”;
若仓库已关联库存(页面标注“已关联库存:是”),“状态”字段的“禁用”选项灰显,不可勾选,提示“该仓库已关联库存,需先转移库存后再禁用”;
联系人、联系电话、详细地址、备注可直接修改,无需额外校验(除电话格式)。
(3)修改完成后,点击页面底部“保存更改”按钮,系统执行校验:
若修改了名称/国家且存在重复,提示“修改后的仓库名称+国家已存在,请调整”;
若修改了容量且小于已用容量,提示“容量不足,请重新输入”;
其他格式错误(如电话),提示对应修正信息。
(4)校验通过后,系统更新仓库信息,跳转回仓库列表页面,弹出“仓库编辑成功”的提示,列表中该仓库的信息同步更新。
4.仓库删除
功能说明:删除系统内无效的仓库记录,仅支持删除“未关联库存商品”且“状态为禁用”的仓库(若仓库已关联库存或状态为启用,无法删除),删除后仓库相关数据(如仓库基础信息)永久移除,需谨慎操作。
操作步骤:
(1)进入仓库列表页面,在目标仓库的操作列点击“删除”按钮,系统弹出确认对话框,提示“确定要删除该仓库吗?删除后不可恢复!若仓库已关联库存或状态为启用,无法删除”。
(2)点击对话框中的“取消”按钮,取消删除操作,返回列表页面;点击“确定”按钮,系统执行删除校验:
若仓库状态为“启用”,提示“该仓库当前为启用状态,请先禁用后再删除”;
若仓库已关联库存商品(有商品归属该仓库),提示“该仓库已关联库存,请先转移所有库存后再删除”;
若仓库未关联库存且状态为禁用,校验通过,执行删除操作。
(3)删除成功后,系统跳转回仓库列表页面,弹出“仓库删除成功”的提示,列表中该仓库记录消失;若校验失败,提示对应错误信息,仓库记录保留。
5.仓库查看
能看到在此仓库中存放的所有商品已经库存数量。
(十一)库存管理
库存管理用于跟踪商品的库存数量和变动记录,关联仓库信息,支持库存的入库和出库操作。
1.库存列表
功能说明:展示所有商品的库存信息,包括名称、SKU编码、数量、所属仓库等。
操作步骤:
点击左侧导航栏“库存管理”→“库存列表”,进入库存页面。
表格展示商品库存信息,点击“查看”可进入库存详情页面。
2.库存变动记录
功能说明:记录库存的入库和出库操作,包括变动数量、原因和操作人。
操作步骤:
在库存详情页面,点击“添加变动记录”按钮。
填写变动信息:
变动数量:正数表示入库,负数表示出库(如+10表示入库10个)。
原因:选择“采购入库”“销售出库”“盘点调整”等。
备注:输入详细说明(可选)。
点击“保存”按钮,系统创建StockRecord记录,更新商品的quantity字段(当前库存+变动数量)。
(十二)物流供应商管理
物流供应商管理用于维护合作的物流服务商信息,支持对供应商的基本信息及合作状态进行管理(操作路径:【系统管理】-【物流供应商管理】)。
查看供应商列表:展示所有供应商的名称、联系方式、合作状态(合作中/已终止)、主要服务区域等信息。
添加供应商:点击“添加供应商”按钮,填写供应商名称、联系人、电话、邮箱、服务区域等信息,提交后完成新增。
编辑供应商:选择目标供应商点击“编辑”,可更新其联系方式、服务范围等信息;若合作终止,可修改状态为“已终止”。
关联运输方式:支持为供应商关联其提供的运输方式(如“国际快递”“海运”等),便于运单创建时匹配对应的供应商资源。
(十三)合同管理
合同管理用于记录和管理与客户、供应商之间的物流合作合同,操作路径:【合同管理】。
查看合同列表:页面展示所有合同的基本信息,包括合同编号、合作方(客户/供应商)、合同名称、签订日期、有效期、状态(生效中/已过期/已终止)等。
添加合同:点击“新增合同”,填写合同编号(唯一)、合作方信息、合同内容摘要、有效期起止时间等,上传合同扫描件(可选)后提交。
查看合同详情:点击合同列表中的“查看”按钮,可查看合同完整信息及附件,支持下载扫描件。
合同状态管理:合同到期后自动标记为“已过期”;若提前终止合作,可手动更新状态为“已终止”并记录终止原因。
(十四)异常记录
异常记录用于跟踪和处理物流过程中出现的异常情况(如货物丢失、延误等),操作路径:【异常与报表】-【异常记录】。
查看异常列表:页面展示所有异常记录,包括关联运单号、异常类型(货物损坏/丢失/延误/清关问题/其他)、异常描述、上报时间、处理状态(待处理/处理中/已解决/无法解决)、处理人等信息。
筛选与搜索:支持通过运单号、异常描述关键词搜索,或按异常类型、处理状态筛选(下拉选择后点击“搜索”按钮)。
添加异常记录:从运单详情页点击“上报异常”,选择异常类型(如“清关问题”),填写详细描述后提交,系统自动关联运单并标记状态为“待处理”。
处理异常:点击异常记录的“处理”按钮,更新处理状态(如“处理中”),填写处理进展或解决方案;若问题解决,标记为“已解决”并记录处理结果。
(十五)报表统计
报表统计用于生成物流业务相关的数据分析报表,辅助业务决策,操作路径:【异常与报表】-【报表统计】。
运单统计:展示指定时间范围内的运单总量、总重量、总费用等核心指标,支持按日/周/月维度查看趋势图表(如运单量变化曲线、费用占比饼图)。
异常统计:统计不同类型异常的发生次数、处理率、平均处理时长等,生成异常分析报表(如“清关问题”占比、“待处理”异常TOP5运单)。
筛选与导出:支持选择时间范围(如近30天、自定义起止日期)、运输方式等条件筛选数据,报表可导出为Excel或PDF格式。
(十六)消息通知(异常与报表)
消息通知用于接收系统自动推送的关键业务提醒,操作路径:【异常与报表】-【消息通知】。
查看通知列表:展示所有通知,包括通知类型(如“异常待处理提醒”“运单状态更新”“合同到期提醒”)、内容、发送时间、已读/未读状态。
通知处理:点击未读通知可查看详情,标记为“已读”;重要通知支持“标记星标”以便后续跟踪。
通知设置:管理员可配置通知触发规则(如“新异常上报时推送通知给物流专员”),用户可自定义接收方式(系统内通知/邮件提醒,具体以系统支持为准)。
(十七)用户管理
用户管理模块用于维护系统操作人员的信息,仅管理员可进行用户的添加、编辑和删除操作,确保系统操作的安全性。
1.用户列表
功能说明:展示系统中所有用户的ID、用户名、角色信息,提供用户添加、编辑和删除功能。
操作步骤:
管理员登录系统后,点击左侧导航栏“系统管理”→“用户管理”,进入用户列表页面(/users)。
表格显示用户ID、用户名、角色(管理员/员工)和操作列。
2.用户添加
功能说明:创建新的系统用户,设置用户名、密码和角色,新用户可使用账号密码登录系统。
操作步骤:
在用户列表页面,点击右上角“添加用户”按钮,进入添加页面(/users/add)。
填写表单信息:
(1)用户名:输入唯一的登录用户名(必填)。
(2)密码:输入登录密码(长度≥6位,必填)。
(3)角色:选择“管理员”或“员工”(管理员拥有全部权限,员工权限受限)。
点击“添加用户”按钮,系统加密存储密码(通过generate_password_hash)并返回列表页面,提示“用户添加成功”。
3.用户编辑
功能说明:修改用户的用户名、密码或角色,修改密码时需输入新密码,留空则保持原密码不变。
操作步骤:
在用户列表页面,找到目标用户,点击操作列的“编辑”按钮,进入编辑页面(/users/edit/<id>)。
可修改的字段:
(1)用户名:可修改为新的唯一用户名。
(2)新密码:输入新密码(留空则不更改)。
(3)角色:重新选择用户角色。
点击“保存更改”按钮,系统更新用户信息并返回列表页面,提示“用户信息更新成功”。
4.用户删除
功能说明:删除系统用户,删除后该用户无法登录系统,建议仅删除无效账号。
操作步骤:
在用户列表页面,找到目标用户,点击操作列的“删除”按钮。
系统弹出确认对话框,提示“确定要删除该用户吗?”,点击“确定”。
系统删除用户并返回列表页面,提示“用户已删除”。
(十八)系统设置
系统设置用于配置系统的基础参数,仅管理员可操作,确保系统按企业需求运行。
1.系统参数配置
功能说明:修改系统名称、版本、默认货币等基础参数,配置信息存储在config.py的Config类中。
功能实现说明:
(1)配置存储:所有配置项存储在config.py中,包括系统名称、货币单位等,提供update_config函数用于安全更新配置并保存到文件。
(2)权限控制:只有管理员角色(admin)可以访问系统设置页面,普通用户访问会被重定向并提示权限不足。
(3)页面功能:分为基本设置和功能设置两个部分,支持修改系统名称、默认货币单位、分页大小等,提供开关控制消息通知和自动计算运费功能,显示系统版本和最后更新时间等信息。
(4)数据处理:表单提交时会进行类型转换(如将字符串转为布尔值或整数),保存失败时会显示错误信息,成功保存后会提示用户,部分设置可能需要重启应用。
使用时,管理员可以通过/system/settings路径访问系统设置页面,修改配置后会自动更新到config.py文件中,实现系统配置的持久化存储。
操作步骤:
点击左侧导航栏“系统管理”→“系统设置”,进入设置页面(/system_settings)。
可修改的参数:
(1)系统名称:如“中越跨境物流管理系统V2.0”。
(2)系统版本:如“2.0.0”。
(3)默认货币:选择“CNY”或“VND”。
点击“保存设置”按钮,系统更新配置并提示“设置保存成功”。
三、功能关联说明
(1)客户分级与客户信息:客户等级通过Customer.level_id与客户关联,客户等级的折扣率直接影响该客户运单的费用计算(费用=基础费用×折扣率)。
(2)客户与运单:运单通过sender_id和receiver_id关联发件人和收件人(均为客户),删除客户前需确保该客户无关联运单。
(3)运单与费用:运单与费用为一对一关系(Shipment.fee),费用计算依赖运单的重量和运输方式的单价,以及客户等级的折扣率。
(4)运单与报关:一个运单可对应多个报关记录(Shipment.customs_declarations),报关文件通过CustomsFile.customs_id关联报关记录。
(5)运单与物流节点:运单的物流节点通过LogisticsNode.shipment_id关联,节点状态变化反映运单的运输进度。
(6)运输方式与运单:运单通过transport_method_id关联运输方式,运输方式的price_per_kg用于计算运单的基础费用。
通过以上功能关联,系统实现了跨境物流业务的全流程闭环管理,确保数据在各模块间的一致性和准确性,为企业提供高效、可靠的管理工具。