feat(wms): 添加调拨单明细批量新增功能

- 在 IWmsTransferOrderItemService 中添加 batchInsert 方法
- 在 WmsTransferOrderItemBo 中新增 coilIds 字段用于接收钢卷id列表
- 在 WmsTransferOrderItemController 中添加 /batch 接口支持批量新增
- 在 WmsTransferOrderItemServiceImpl 中实现批量插入业务逻辑
- 新增 WmsMaterialCoil 相关依赖注入和数据查询操作
- 实现根据 itemType 自动设置 materialType 的转换逻辑
This commit is contained in:
2026-03-27 16:43:42 +08:00
parent c294149274
commit 62eb5aedfb
4 changed files with 61 additions and 0 deletions

View File

@@ -106,4 +106,14 @@ public class WmsTransferOrderItemController extends BaseController {
@NotNull(message = "itemType不能为空") String itemType) {
return R.ok(iWmsTransferOrderItemService.matchOrCreateMaterial(itemId, itemType));
}
/**
* 批量新增调拨单明细
*/
@Log(title = "调拨单明细", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/batch")
public R<Void> batchAdd(@Validated(AddGroup.class) @RequestBody WmsTransferOrderItemBo bo) {
return toAjax(iWmsTransferOrderItemService.batchInsert(bo));
}
}

View File

@@ -3,6 +3,8 @@ package com.klp.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
import javax.validation.constraints.*;
@@ -32,6 +34,11 @@ public class WmsTransferOrderItemBo extends BaseEntity {
*/
private Long coilId;
/**
* 钢卷id列表批量新增用
*/
private List<Long> coilIds;
/**
* 调拨前itemId
*/

View File

@@ -52,4 +52,9 @@ public interface IWmsTransferOrderItemService {
* itemType: "raw_material"-原料, "product"-成品
*/
Long matchOrCreateMaterial(Long itemId, String itemType);
/**
* 批量新增调拨单明细
*/
Boolean batchInsert(WmsTransferOrderItemBo bo);
}

View File

@@ -13,15 +13,18 @@ import com.klp.domain.vo.WmsTransferOrderItemVo;
import com.klp.domain.WmsTransferOrderItem;
import com.klp.domain.WmsRawMaterial;
import com.klp.domain.WmsProduct;
import com.klp.domain.WmsMaterialCoil;
import com.klp.mapper.WmsTransferOrderItemMapper;
import com.klp.mapper.WmsRawMaterialMapper;
import com.klp.mapper.WmsProductMapper;
import com.klp.mapper.WmsMaterialCoilMapper;
import com.klp.service.IWmsTransferOrderItemService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.Objects;
import java.util.ArrayList;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
@@ -40,6 +43,7 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer
private final WmsTransferOrderItemMapper baseMapper;
private final WmsRawMaterialMapper rawMaterialMapper;
private final WmsProductMapper productMapper;
private final WmsMaterialCoilMapper coilMapper;
/**
* 查询调拨单明细
@@ -201,4 +205,39 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer
rawMaterialMapper.insert(newRawMaterial);
return newRawMaterial.getRawMaterialId();
}
/**
* 批量新增调拨单明细
*/
@Override
public Boolean batchInsert(WmsTransferOrderItemBo bo) {
Long transferId = bo.getTransferId();
List<Long> coilIds = bo.getCoilIds();
if (transferId == null || coilIds == null || coilIds.isEmpty()) {
throw new IllegalArgumentException("transferId和coilIds不能为空");
}
List<WmsMaterialCoil> coils = coilMapper.selectBatchIds(coilIds);
if (coils.isEmpty()) {
throw new IllegalArgumentException("钢卷不存在");
}
List<WmsTransferOrderItem> items = new ArrayList<>();
for (WmsMaterialCoil coil : coils) {
WmsTransferOrderItem item = new WmsTransferOrderItem();
item.setTransferId(transferId);
item.setCoilId(coil.getCoilId());
item.setItemIdBefore(coil.getItemId());
// 根据 itemType 设置 materialType: raw_material -> 1, product -> 2
if ("raw_material".equals(coil.getItemType())) {
item.setMaterialTypeBefore(1L);
} else if ("product".equals(coil.getItemType())) {
item.setMaterialTypeBefore(2L);
}
item.setWarehouseIdBefore(coil.getWarehouseId());
items.add(item);
}
return baseMapper.insertBatch(items);
}
}