6.14

今天开始开发销售订货管理系统。首先仔细阅读了评分标准,明确了系统需要实现的功能模块:

核心功能模块(30分):

  • 订单创建与库存判断
  • 订单评审流程(工程部→计划部→业务部确认)
  • 订单变更处理
  • 急插单处理
  • 发货处理(财务审核)
  • 联络单功能
  • 预测需求计划
  • 订单交付率统计
  • 产品生产周期管理

技术选型决策:

  • 后端:Spring Boot 2.7 + MyBatis-Plus 3.5(快速开发,中文文档完善)
  • 前端:Vue3 + Element Plus + Vite(组件丰富,开发效率高)
  • 数据库:MySQL 8.0(学校环境常用)
  • 移动端:飞书开放平台(机器人消息 + 审批功能)

设计了10张核心数据表:

  1. product - 产品表(产品代码、类型A/B/C、各阶段周期)
  2. inventory - 库存表(当前库存、安全库存)
  3. sales_order - 销售订单表(订单编号、客户、状态流转)
  4. order_detail - 订单明细表(产品、数量、金额)
  5. order_review - 订单评审表(工程部/计划部评审状态)
  6. delivery_order - 发货单表(发货数量、财务审核)
  7. order_change_notice - 订单变更通知单
  8. contact_note - 联络单
  9. forecast_plan - 预测需求计划
  10. 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响应格式
  • 处理异常并返回友好错误信息

遇到的问题:

  1. 循环依赖:SalesOrderService ↔ OrderReviewService → 通过配置allow-circular-references: true解决
  2. YAML重复键:两个spring:块导致启动失败 → 合并为一个
  3. MySQL连接错误:密码错误 → 使用正确密码wanan1314

搭建Vue3项目:

  • 使用Vite创建项目
  • 配置Element Plus组件库
  • 配置Axios请求拦截器

开发13个页面组件:

  1. Dashboard.vue - 工作台仪表盘(统计卡片、快捷操作)
  2. OrderList.vue - 订单列表(筛选、分页)
  3. OrderForm.vue - 创建订单(动态添加产品明细)
  4. OrderDetail.vue - 订单详情
  5. OrderReview.vue - 订单评审(工程/计划/业务三个Tab)
  6. DeliveryList.vue - 发货管理
  7. ChangeList.vue - 变更通知
  8. NoteList.vue - 联络单列表
  9. NoteForm.vue - 创建联络单
  10. StatsView.vue - 统计分析
  11. ForecastPlan.vue - 预测需求计划
  12. ProductCycle.vue - 产品周期管理
  13. FlowChart.vue - 业务流程图

遇到的问题:

  1. 函数名冲突:submitBusinessConfirm导入名和本地函数名相同 → 使用as重命名
  2. 分页数据处理:后端返回Page对象,前端需要提取records数组
  3. 状态字段名不匹配:status vs orderStatus → 统一使用orderStatus
  4. 产品选择显示undefined:字段名code/name vs productCode/productName → 修复字段映射

配置飞书应用:

开发飞书功能:

  • 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 测试与优化

完整流程测试:

  1. 创建订单 ✅
  2. 工程审核 → 飞书通知 ✅
  3. 计划审核 → 飞书通知 ✅
  4. 业务确认 → 飞书通知 ✅
  5. 创建发货单 ✅
  6. 财务审核 ✅

插入测试数据:

  • 10个产品(标准型、高精度、经济型、温度、压力、流量、光电、超声波、红外、加速度)
  • 7个订单(不同状态:待评审、工程评审中、计划评审中、已确认、生产中、已完成)
  • 3个发货单
  • 3个变更通知
  • 4个联络单
  • 6个预测计划
  • 3个月交付率统计

最终打包:

  • 源代码包:80KB(不含依赖)
  • 包含:后端源码、前端源码、数据库脚本、飞书集成代码

开发总结

技术收获

  1. Spring Boot + MyBatis-Plus:快速搭建后端服务,自动生成CRUD
  2. Vue3 Composition API:使用setup语法糖,代码更简洁
  3. Element Plus:丰富的UI组件,提高开发效率
  4. 飞书开放平台:Webhook机器人实现实时消息通知

问题与解决

  1. 循环依赖 → 配置允许循环引用
  2. 函数名冲突 → 使用as重命名导入
  3. 分页数据处理 → 提取records数组
  4. 字段名不匹配 → 统一命名规范
  5. MySQL编码问题 → 使用utf8mb4字符集

功能完成度

  • ✅ WEB端功能模块(30分):10项功能全部实现
  • ✅ WEB端业务流程图(20分):完整流程图展示
  • ✅ 飞书端功能(30分):消息通知 + 审批流程
  • ✅ 飞书端业务流程图(20分):流程图展示

项目亮点

  1. 完整的订单生命周期管理:从创建到交付的全流程跟踪
  2. 多级评审流程:工程部→计划部→业务部的有序评审
  3. 飞书实时通知:审核通过自动推送消息
  4. 丰富的统计分析:交付率统计、仪表盘展示
  5. 良好的代码结构:分层清晰,易于维护扩展
posted @ 2026-06-16 10:45  YKKKKKKKKKK  阅读(2)  评论(0)    收藏  举报