WORKORDER_BACKEND_SUMMARY.md 8.2 KB

工单下达后端开发完成总结

已完成的功能模块

1. Controller层 (WorkOrderController.java)

路径: yudao-order-server/src/main/java/cn/iocoder/yudao/module/order/controller/admin/workorder/WorkOrderController.java

实现的接口:

  • GET /jiaohuo/workorder/pool/list - 获取工单池分页列表
  • GET /jiaohuo/workorder/{id} - 获取工单详情
  • PUT /jiaohuo/workorder - 更新工单
  • POST /jiaohuo/workorder/release - 工单下达
  • GET /jiaohuo/workorder/{id}/check-material - 物料齐套检查
  • POST /jiaohuo/workorder/generate-material-requirement - 生成物料需求计划

2. Service层

WorkOrderService.java (接口)

路径: yudao-order-server/src/main/java/cn/iocoder/yudao/module/order/service/WorkOrderService.java

WorkOrderServiceImpl.java (实现)

路径: yudao-order-server/src/main/java/cn/iocoder/yudao/module/order/service/impl/WorkOrderServiceImpl.java

核心功能:

  • 工单池分页查询(支持多条件筛选)
  • 工单详情查询
  • 工单信息更新
  • 工单下达(更新状态为R,记录下达时间)
  • 物料齐套检查(调用外部接口)
  • 生成物料需求计划(调用外部接口)
  • 操作日志记录(使用@LogRecord注解)

3. VO类 (Value Object)

路径: yudao-order-server/src/main/java/cn/iocoder/yudao/module/order/controller/admin/workorder/vo/

已创建的VO类:

  • WorkOrderPoolPageReqVO.java - 工单池分页查询请求
  • WorkOrderPoolRespVO.java - 工单池响应
  • WorkOrderUpdateReqVO.java - 工单更新请求
  • WorkOrderReleaseReqVO.java - 工单下达请求
  • MaterialCheckReqVO.java - 物料齐套检查请求
  • MaterialRequirementReqVO.java - 物料需求生成请求

4. Mapper层

WorkOrdMasterMapper.java

路径: yudao-order-server/src/main/java/cn/iocoder/yudao/module/order/dal/mysql/WorkOrdMasterMapper.java

方法:

  • selectWorkOrderPoolPage - 工单池分页查询
  • selectByWorkOrd - 根据工单编号查询
  • selectByRecId - 根据RecID查询
  • updateStatusToRelease - 更新工单状态为下达

WorkOrdMasterMapper.xml

路径: yudao-order-server/src/main/resources/mapper/order/WorkOrdMasterMapper.xml

SQL实现:

  • 工单池分页查询(关联ItemMaster、mes_morder、NbrMaster等表)
  • 支持按工单编号、物料编码、物料名称、开工日期筛选
  • 按优先级和开工日期排序

5. DO类 (Data Object)

WorkOrdMasterDO.java

路径: yudao-order-server/src/main/java/cn/iocoder/yudao/module/order/dal/dataobject/WorkOrdMasterDO.java

映射数据库表:WorkOrdMaster

主要字段:

  • recId - 主键
  • domain - 域
  • workOrd - 工单编号
  • itemNum - 物料编码
  • lotSerial - 生产批号
  • status - 状态
  • ordDate - 开工日期
  • dueDate - 完工日期
  • qtyOrded - 订单数量
  • qtyCompleted - 完成数量
  • 等...

6. 错误码常量

路径: yudao-order-server/src/main/java/cn/iocoder/yudao/module/order/enums/ErrorCodeConstants.java

已定义的错误码:

  • WORK_ORDER_NOT_EXISTS (120010) - 工单不存在
  • WORK_ORDER_STATUS_ERROR (120011) - 工单状态不正确,无法下达
  • WORK_ORDER_ALREADY_RELEASED (120012) - 工单已下达,不能重复下达

7. 日志记录常量

路径: yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/enums/LogRecordConstants.java

已添加的日志常量:

  • WORK_ORDER_TYPE - "ORDER 工单"
  • WORK_ORDER_UPDATE_SUB_TYPE - "更新工单"
  • WORK_ORDER_UPDATE_SUCCESS - 更新成功日志模板
  • WORK_ORDER_RELEASE_SUB_TYPE - "工单下达"
  • WORK_ORDER_RELEASE_SUCCESS - 下达成功日志模板

8. 配置类

OrderWebConfiguration.java

路径: yudao-order-server/src/main/java/cn/iocoder/yudao/module/order/framework/web/config/OrderWebConfiguration.java

配置内容:

  • RestTemplate Bean配置(用于调用外部接口)

技术特点

1. 多租户支持

  • 使用 @TenantIgnore 注解忽略租户隔离
  • 通过 domain 字段实现多工厂数据隔离

2. 操作日志

  • 使用 @LogRecord 注解自动记录操作日志
  • 支持日志上下文变量和差异对比

3. 权限控制

  • 使用 @PreAuthorize 注解进行权限校验
  • 权限标识:jiaohuo:workorder:*

4. 外部接口集成

  • 物料齐套检查接口:http://123.60.180.165:9898/api/business/resource-examine/producedayplankittingcheck
  • 物料需求计划接口:http://123.60.180.165:9898/api/business/resource-examine/AutomaticPrAdjustDate

5. 数据库操作

  • 使用 MyBatis Plus 进行数据库操作
  • 支持复杂的多表关联查询
  • 使用 XML 配置复杂 SQL

API接口文档

1. 获取工单池列表

GET /jiaohuo/workorder/pool/list
参数:
- pageNo: 页码
- pageSize: 每页数量
- workOrd: 工单编号(可选)
- itemNum: 物料编码(可选)
- descr: 物料名称(可选)
- ordDate: 开工日期(可选)

2. 获取工单详情

GET /jiaohuo/workorder/{id}
参数:
- id: 工单ID

3. 更新工单

PUT /jiaohuo/workorder
Body:
{
  "id": 工单ID,
  "lotSerial": "生产批号",
  "ordDate": "开工日期",
  "status": "状态",
  "remark": "备注"
}

4. 工单下达

POST /jiaohuo/workorder/release
Body:
{
  "workOrderNo": "工单编号",
  "lotSerial": "生产批号",
  "ordDate": "开工日期",
  "companyId": "公司ID(可选)",
  "userAccount": "用户账号(可选)"
}

5. 物料齐套检查

GET /jiaohuo/workorder/{id}/check-material
参数:
- id: 工单ID

6. 生成物料需求计划

POST /jiaohuo/workorder/generate-material-requirement
Body:
{
  "companyId": "公司ID(可选)",
  "domain": "域(可选)"
}

数据库表结构

WorkOrdMaster 表

主要字段:

  • RecID (BIGINT) - 主键,自增
  • Domain (VARCHAR) - 域/工厂ID
  • WorkOrd (VARCHAR) - 工单编号
  • ItemNum (VARCHAR) - 物料编码
  • ItemName (VARCHAR) - 物料名称
  • Drawing (VARCHAR) - 图号
  • Batch (VARCHAR) - 批次
  • LotSerial (VARCHAR) - 生产批号
  • Status (VARCHAR) - 状态(p=计划,R=下达)
  • Typed (VARCHAR) - 类型
  • WoTyped (VARCHAR) - 工单类型
  • Priority (INT) - 优先级
  • OrdDate (DATETIME) - 开工日期
  • DueDate (DATETIME) - 完工日期
  • ReleaseDate (DATETIME) - 下达日期
  • QtyOrded (DECIMAL) - 订单数量
  • QtyCompleted (DECIMAL) - 完成数量
  • QtyReject (DECIMAL) - 拒收数量
  • Project (VARCHAR) - 项目
  • Site (VARCHAR) - 站点
  • Location (VARCHAR) - 位置
  • ProdLine (VARCHAR) - 生产线
  • Department (VARCHAR) - 部门
  • Remark (VARCHAR) - 备注
  • CreateUser (VARCHAR) - 创建人
  • UpdateUser (VARCHAR) - 更新人
  • CreateTime (DATETIME) - 创建时间
  • UpdateTime (DATETIME) - 更新时间
  • IsActive (BIT) - 是否激活
  • IsConfirm (BIT) - 是否确认
  • CreateGLforLaborVar (BIT) - 是否创建人工差异GL
  • lbrvar (DECIMAL) - 人工差异

前后端接口对接

前端API文件:yudao-ui/yudao-ui-admin-vue3/src/api/jiaohuo/workorder.ts

所有前端API调用都已在后端实现对应的接口,接口路径和参数完全匹配。

待优化项

  1. 物料齐套检查接口优化

    • 当前实现使用默认参数,建议根据工单ID获取相关信息填充请求参数
  2. 外部接口配置化

    • 建议将外部接口URL配置到配置文件中,便于不同环境切换
  3. 异常处理增强

    • 可以添加更详细的异常处理和错误提示
  4. 单元测试

    • 建议添加单元测试覆盖核心业务逻辑
  5. 接口文档

    • 可以通过Swagger/Knife4j查看完整的API文档

部署说明

  1. 确保数据库中存在 WorkOrdMaster 表及相关关联表
  2. 配置 order.default.domain 参数(默认值:8010)
  3. 确保外部接口可访问
  4. 重启应用服务

测试建议

  1. 测试工单池列表查询(各种筛选条件)
  2. 测试工单详情查询
  3. 测试工单更新功能
  4. 测试工单下达流程
  5. 测试物料齐套检查
  6. 测试物料需求计划生成
  7. 验证操作日志记录
  8. 验证权限控制

总结

工单下达后端功能已完整实现,包括:

  • ✅ 完整的CRUD操作
  • ✅ 工单下达核心业务逻辑
  • ✅ 外部接口集成
  • ✅ 操作日志记录
  • ✅ 权限控制
  • ✅ 多租户支持
  • ✅ 前后端接口对接

所有接口已经过基本验证,可以进行前后端联调测试。