|
|
@@ -0,0 +1,251 @@
|
|
|
+# 出货计划模块后端实现说明
|
|
|
+
|
|
|
+## 概述
|
|
|
+本文档说明了出货计划模块的后端实现,包括CRUD操作、销售出库功能等。
|
|
|
+
|
|
|
+## 已实现的功能
|
|
|
+
|
|
|
+### 1. 出货计划管理
|
|
|
+- ✅ 出货计划列表查询(分页)
|
|
|
+- ✅ 出货计划详情查询
|
|
|
+- ✅ 创建出货计划
|
|
|
+- ✅ 编辑出货计划
|
|
|
+- ✅ 删除出货计划
|
|
|
+- ✅ 销售出库(调用存储过程)
|
|
|
+
|
|
|
+### 2. 涉及的数据表
|
|
|
+- `ShippingPlan` - 出货计划主表
|
|
|
+- `ShippingPlanDetail` - 出货计划明细表
|
|
|
+- `ASNBOLShipperDetail` - 销售发货明细表(关联查询)
|
|
|
+- `crm_seorder` - 销售订单表
|
|
|
+- `crm_seorderentry` - 销售订单明细表
|
|
|
+
|
|
|
+## 文件结构
|
|
|
+
|
|
|
+### Controller层
|
|
|
+```
|
|
|
+yudao-order-server/src/main/java/cn/iocoder/yudao/module/order/controller/admin/delivery/
|
|
|
+├── OrderDeliveryController.java # 订单交付控制器(已更新)
|
|
|
+└── vo/
|
|
|
+ ├── ShippingPlanPageReqVO.java # 出货计划分页请求VO(已存在)
|
|
|
+ ├── ShippingPlanSaveReqVO.java # 出货计划保存请求VO(已存在)
|
|
|
+ ├── ShippingPlanRespVO.java # 出货计划响应VO(已存在)
|
|
|
+ ├── ShippingPlanListItemVO.java # 出货计划列表项VO(新增)
|
|
|
+ └── SalesOutboundReqVO.java # 销售出库请求VO(新增)
|
|
|
+```
|
|
|
+
|
|
|
+### Service层
|
|
|
+```
|
|
|
+yudao-order-server/src/main/java/cn/iocoder/yudao/module/order/service/
|
|
|
+├── OrderDeliveryService.java # 接口(已更新)
|
|
|
+└── impl/
|
|
|
+ └── OrderDeliveryServiceImpl.java # 实现类(已更新)
|
|
|
+```
|
|
|
+
|
|
|
+### DAL层
|
|
|
+```
|
|
|
+yudao-order-server/src/main/java/cn/iocoder/yudao/module/order/dal/
|
|
|
+├── dataobject/
|
|
|
+│ ├── ShippingPlanDO.java # 出货计划实体(已存在)
|
|
|
+│ └── ShippingPlanDetailDO.java # 出货计划明细实体(已存在)
|
|
|
+└── mysql/
|
|
|
+ ├── ShippingPlanMapper.java # 出货计划Mapper(已更新)
|
|
|
+ ├── ShippingPlanDetailMapper.java # 出货计划明细Mapper(已存在)
|
|
|
+ └── OrderDeliveryMapper.java # 订单交付Mapper(已更新)
|
|
|
+```
|
|
|
+
|
|
|
+### Mapper XML
|
|
|
+```
|
|
|
+yudao-order-server/src/main/resources/mapper/order/
|
|
|
+├── OrderDeliveryMapper.xml # 订单交付SQL(已更新)
|
|
|
+└── ShippingPlanMapper.xml # 出货计划SQL(新增)
|
|
|
+```
|
|
|
+
|
|
|
+### Convert层
|
|
|
+```
|
|
|
+yudao-order-server/src/main/java/cn/iocoder/yudao/module/order/convert/
|
|
|
+└── OrderDeliveryConvert.java # 对象转换器(已存在)
|
|
|
+```
|
|
|
+
|
|
|
+## API接口说明
|
|
|
+
|
|
|
+### 1. 出货计划列表查询
|
|
|
+**接口**: `GET /order/shipping-plan/list`
|
|
|
+
|
|
|
+**权限**: `order:shipping-plan:query`
|
|
|
+
|
|
|
+**请求参数**:
|
|
|
+```json
|
|
|
+{
|
|
|
+ "pageNo": 1,
|
|
|
+ "pageSize": 20,
|
|
|
+ "lotSerial": "出货编号(可选)",
|
|
|
+ "status": "状态(可选)",
|
|
|
+ "consignee": "收货人(可选)"
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+**响应**:
|
|
|
+```json
|
|
|
+{
|
|
|
+ "code": 0,
|
|
|
+ "data": {
|
|
|
+ "list": [...],
|
|
|
+ "total": 100
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 2. 获取出货计划详情
|
|
|
+**接口**: `GET /order/shipping-plan/{id}`
|
|
|
+
|
|
|
+**权限**: `order:shipping-plan:query`
|
|
|
+
|
|
|
+**路径参数**: `id` - 出货计划主键
|
|
|
+
|
|
|
+### 3. 创建出货计划
|
|
|
+**接口**: `POST /order/shipping-plan`
|
|
|
+
|
|
|
+**权限**: `order:shipping-plan:create`
|
|
|
+
|
|
|
+**请求体**:
|
|
|
+```json
|
|
|
+{
|
|
|
+ "lotSerial": "出货编号",
|
|
|
+ "shippingDate": "2024-01-01",
|
|
|
+ "shippingSite": "出货地点",
|
|
|
+ "consignee": "收货人",
|
|
|
+ "telephone": "联系方式",
|
|
|
+ "shippingAddress": "收货地址",
|
|
|
+ "remark": "备注",
|
|
|
+ "items": [
|
|
|
+ {
|
|
|
+ "ordNbr": "客户订单号",
|
|
|
+ "billNo": "订单号",
|
|
|
+ "itemNum": "物料编号",
|
|
|
+ "itemName": "物料名称",
|
|
|
+ "qty": 100,
|
|
|
+ "weight": 50.5,
|
|
|
+ "volume": 2.5
|
|
|
+ }
|
|
|
+ ]
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 4. 更新出货计划
|
|
|
+**接口**: `PUT /order/shipping-plan`
|
|
|
+
|
|
|
+**权限**: `order:shipping-plan:update`
|
|
|
+
|
|
|
+**请求体**: 同创建,需包含 `recId` 字段
|
|
|
+
|
|
|
+### 5. 删除出货计划
|
|
|
+**接口**: `DELETE /order/shipping-plan/{id}`
|
|
|
+
|
|
|
+**权限**: `order:shipping-plan:delete`
|
|
|
+
|
|
|
+**路径参数**: `id` - 出货计划主键
|
|
|
+
|
|
|
+### 6. 销售出库
|
|
|
+**接口**: `POST /order/sales-outbound`
|
|
|
+
|
|
|
+**权限**: `order:shipping-plan:outbound`
|
|
|
+
|
|
|
+**请求体**:
|
|
|
+```json
|
|
|
+{
|
|
|
+ "orgNo": "组织编号",
|
|
|
+ "operatorAccount": "操作人账号",
|
|
|
+ "planIds": [1, 2, 3]
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+**说明**:
|
|
|
+- 调用存储过程 `pr_WMS_AutoCreateShipper`
|
|
|
+- 传入参数: 组织编号、操作人账号、出货计划ID列表(逗号分隔)
|
|
|
+- 会验证出货计划是否存在且未生成出库单
|
|
|
+
|
|
|
+## 业务逻辑说明
|
|
|
+
|
|
|
+### 创建出货计划
|
|
|
+1. 验证必填字段
|
|
|
+2. 设置默认值(Domain、Priority、IsActive等)
|
|
|
+3. 获取当前登录用户信息
|
|
|
+4. 插入主表记录
|
|
|
+5. 批量插入明细记录
|
|
|
+
|
|
|
+### 更新出货计划
|
|
|
+1. 验证出货计划是否存在
|
|
|
+2. 更新主表记录
|
|
|
+3. 删除旧的明细记录
|
|
|
+4. 重新插入新的明细记录
|
|
|
+
|
|
|
+### 销售出库
|
|
|
+1. 验证所有出货计划ID是否存在
|
|
|
+2. 检查是否已生成出库单(recid字段)
|
|
|
+3. 拼接ID字符串(逗号分隔)
|
|
|
+4. 调用存储过程 `pr_WMS_AutoCreateShipper`
|
|
|
+
|
|
|
+## 数据库字段映射
|
|
|
+
|
|
|
+### ShippingPlan主表
|
|
|
+| 数据库字段 | Java字段 | 说明 |
|
|
|
+|-----------|---------|------|
|
|
|
+| RecID | recId | 主键(自增) |
|
|
|
+| Domain | domain | 域名(默认8010) |
|
|
|
+| LotSerial | lotSerial | 出货编号 |
|
|
|
+| ShippingSite | shippingSite | 出货地点 |
|
|
|
+| ShippingDate | shippingDate | 出货日期 |
|
|
|
+| Consignee | consignee | 收货人 |
|
|
|
+| Telephone | telephone | 联系方式 |
|
|
|
+| ShippingAddress | shippingAddress | 收货地址 |
|
|
|
+| Remark | remark | 备注 |
|
|
|
+| CreateUser | createUser | 创建用户 |
|
|
|
+| CreateTime | createTime | 创建时间 |
|
|
|
+
|
|
|
+### ShippingPlanDetail明细表
|
|
|
+| 数据库字段 | Java字段 | 说明 |
|
|
|
+|-----------|---------|------|
|
|
|
+| RecID | recId | 主键 |
|
|
|
+| plan_id | planId | 主表ID |
|
|
|
+| OrdNbr | ordNbr | 客户订单号 |
|
|
|
+| bill_no | billNo | 订单号 |
|
|
|
+| ItemNum | itemNum | 物料编号 |
|
|
|
+| ItemName | itemName | 物料名称 |
|
|
|
+| Specification | specification | 规格型号 |
|
|
|
+| Qty | qty | 订单数量 |
|
|
|
+| Weight | weight | 重量(KG) |
|
|
|
+| Volume | volume | 体积(M3) |
|
|
|
+| seorder_id | seorderId | 销售订单ID |
|
|
|
+| sentry_id | sentryId | 订单行ID |
|
|
|
+
|
|
|
+## 注意事项
|
|
|
+
|
|
|
+1. **多租户**: 所有查询方法都使用了 `@TenantIgnore` 注解,忽略租户隔离
|
|
|
+2. **事务管理**: 创建、更新、删除操作都使用了 `@Transactional` 注解
|
|
|
+3. **日期格式**: 前端传入的日期字符串格式为 `YYYY-MM-DD`,后端会自动转换为 `LocalDateTime`
|
|
|
+4. **权限控制**: 所有接口都配置了权限注解 `@PreAuthorize`
|
|
|
+5. **存储过程**: 销售出库功能调用了 `pr_WMS_AutoCreateShipper` 存储过程
|
|
|
+
|
|
|
+## 待完善功能
|
|
|
+
|
|
|
+1. 出货计划状态流转管理
|
|
|
+2. 出货计划审批流程
|
|
|
+3. 与ASN发货单的关联查询优化
|
|
|
+4. 出货计划导出Excel功能
|
|
|
+5. 出货计划打印功能
|
|
|
+
|
|
|
+## 测试建议
|
|
|
+
|
|
|
+1. 测试创建出货计划(包含多条明细)
|
|
|
+2. 测试更新出货计划(修改主表和明细)
|
|
|
+3. 测试删除出货计划(验证级联删除明细)
|
|
|
+4. 测试销售出库(验证存储过程调用)
|
|
|
+5. 测试分页查询(验证搜索条件)
|
|
|
+6. 测试权限控制(不同角色的访问权限)
|
|
|
+
|
|
|
+## 相关文档
|
|
|
+
|
|
|
+- 若依框架文档: https://doc.iocoder.cn/
|
|
|
+- MyBatis Plus文档: https://baomidou.com/
|
|
|
+- Spring Boot文档: https://spring.io/projects/spring-boot
|