6.14
今天开始开发销售订货管理系统。首先仔细阅读了评分标准,明确了系统需要实现的功能模块:
核心功能模块(30分):
- 订单创建与库存判断
- 订单评审流程(工程部→计划部→业务部确认)
- 订单变更处理
- 急插单处理
- 发货处理(财务审核)
- 联络单功能
- 预测需求计划
- 订单交付率统计
- 产品生产周期管理
技术选型决策:
- 后端:Spring Boot 2.7 + MyBatis-Plus 3.5(快速开发,中文文档完善)
- 前端:Vue3 + Element Plus + Vite(组件丰富,开发效率高)
- 数据库:MySQL 8.0(学校环境常用)
- 移动端:飞书开放平台(机器人消息 + 审批功能)
设计了10张核心数据表:
- product - 产品表(产品代码、类型A/B/C、各阶段周期)
- inventory - 库存表(当前库存、安全库存)
- sales_order - 销售订单表(订单编号、客户、状态流转)
- order_detail - 订单明细表(产品、数量、金额)
- order_review - 订单评审表(工程部/计划部评审状态)
- delivery_order - 发货单表(发货数量、财务审核)
- order_change_notice - 订单变更通知单
- contact_note - 联络单
- forecast_plan - 预测需求计划
- order_delivery_stats - 订单交付统计
设计亮点:
- 订单状态使用枚举:PENDING_REVIEW → ENGINEERING_REVIEW → PLANNING_REVIEW → CONFIRMED → IN_PRODUCTION → COMPLETED
- 评审表记录工程部和计划部的独立评审状态
- 支持急插单标记(is_urgent字段)
搭建Spring Boot项目骨架:
- 创建Maven项目,配置pom.xml依赖
- 配置application.yml数据库连接
- 创建主启动类SalesOrderApplication
开发Service层(8个服务):
- SalesOrderService - 订单创建、库存检查、状态流转
- OrderReviewService - 工程评审、计划评审、业务确认
- DeliveryOrderService - 发货单创建、财务审核
- OrderChangeService - 变更通知处理
- ContactNoteService - 联络单审批
- ProductService - 产品管理
- InventoryService - 库存检查
- ForecastPlanService - 预测计划
开发Controller层(10个控制器):
- 实现RESTful API接口
- 统一返回Result
响应格式 - 处理异常并返回友好错误信息
遇到的问题:
- 循环依赖:SalesOrderService ↔ OrderReviewService → 通过配置
allow-circular-references: true解决 - YAML重复键:两个
spring:块导致启动失败 → 合并为一个 - MySQL连接错误:密码错误 → 使用正确密码wanan1314
搭建Vue3项目:
- 使用Vite创建项目
- 配置Element Plus组件库
- 配置Axios请求拦截器
开发13个页面组件:
- Dashboard.vue - 工作台仪表盘(统计卡片、快捷操作)
- OrderList.vue - 订单列表(筛选、分页)
- OrderForm.vue - 创建订单(动态添加产品明细)
- OrderDetail.vue - 订单详情
- OrderReview.vue - 订单评审(工程/计划/业务三个Tab)
- DeliveryList.vue - 发货管理
- ChangeList.vue - 变更通知
- NoteList.vue - 联络单列表
- NoteForm.vue - 创建联络单
- StatsView.vue - 统计分析
- ForecastPlan.vue - 预测需求计划
- ProductCycle.vue - 产品周期管理
- FlowChart.vue - 业务流程图
遇到的问题:
- 函数名冲突:submitBusinessConfirm导入名和本地函数名相同 → 使用as重命名
- 分页数据处理:后端返回Page对象,前端需要提取records数组
- 状态字段名不匹配:status vs orderStatus → 统一使用orderStatus
- 产品选择显示undefined:字段名code/name vs productCode/productName → 修复字段映射
配置飞书应用:
- App ID: cli_aaa51a6f46b8dbc0
- App Secret: FeJtd834yF12S7j8o4iD8hIVec45IiMv
- Webhook URL: https://open.feishu.cn/open-apis/bot/v2/hook/4a5f68f7-9b15-4ffa-867a-8ae11b0837f6
开发飞书功能:
- feishu-bot.js - 消息通知(订单评审、发货审批、变更通知)
- feishu-approval.js - 审批流程
- feishu-callback.js - 回调服务(端口3001)
集成到后端:
- 在OrderReviewServiceImpl中添加飞书通知
- 工程审核通过 → 发送通知
- 计划审核通过 → 发送通知
- 业务确认完成 → 发送通知
测试验证:
[Feishu] Message sent successfully
SUCCESS: {"StatusCode":0,"StatusMessage":"success","code":0,"data":{},"msg":"success"}
下午 17:30 - 18:00 测试与优化
完整流程测试:
- 创建订单 ✅
- 工程审核 → 飞书通知 ✅
- 计划审核 → 飞书通知 ✅
- 业务确认 → 飞书通知 ✅
- 创建发货单 ✅
- 财务审核 ✅
插入测试数据:
- 10个产品(标准型、高精度、经济型、温度、压力、流量、光电、超声波、红外、加速度)
- 7个订单(不同状态:待评审、工程评审中、计划评审中、已确认、生产中、已完成)
- 3个发货单
- 3个变更通知
- 4个联络单
- 6个预测计划
- 3个月交付率统计
最终打包:
- 源代码包:80KB(不含依赖)
- 包含:后端源码、前端源码、数据库脚本、飞书集成代码
开发总结
技术收获
- Spring Boot + MyBatis-Plus:快速搭建后端服务,自动生成CRUD
- Vue3 Composition API:使用setup语法糖,代码更简洁
- Element Plus:丰富的UI组件,提高开发效率
- 飞书开放平台:Webhook机器人实现实时消息通知
问题与解决
- 循环依赖 → 配置允许循环引用
- 函数名冲突 → 使用as重命名导入
- 分页数据处理 → 提取records数组
- 字段名不匹配 → 统一命名规范
- MySQL编码问题 → 使用utf8mb4字符集
功能完成度
- ✅ WEB端功能模块(30分):10项功能全部实现
- ✅ WEB端业务流程图(20分):完整流程图展示
- ✅ 飞书端功能(30分):消息通知 + 审批流程
- ✅ 飞书端业务流程图(20分):流程图展示
项目亮点
- 完整的订单生命周期管理:从创建到交付的全流程跟踪
- 多级评审流程:工程部→计划部→业务部的有序评审
- 飞书实时通知:审核通过自动推送消息
- 丰富的统计分析:交付率统计、仪表盘展示
- 良好的代码结构:分层清晰,易于维护扩展

浙公网安备 33010602011771号