feat(transfer): 添加调拨订单项目中的钢卷详情查询和重复检查功能

- 优化导入语句,使用java.util.*统一导入
- 在分页查询中添加钢卷详情关联查询逻辑
- 通过coilId收集并查询对应的钢卷信息并建立映射关系
- 为每个调拨订单项目设置关联的钢卷详情信息
- 添加调拨单内钢卷重复性检查机制
- 防止同一调拨单下添加相同coilId的重复项目
- 提供详细的重复钢卷号错误提示信息
This commit is contained in:
2026-03-28 11:33:19 +08:00
parent 317b7187f5
commit c554508000

View File

@@ -25,11 +25,7 @@ import com.klp.service.IWmsMaterialCoilService;
import com.klp.service.IWmsWarehouseService;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.Objects;
import java.util.ArrayList;
import java.util.*;
import java.util.stream.Collectors;
@@ -70,7 +66,27 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer
LambdaQueryWrapper<WmsTransferOrderItem> lqw = buildQueryWrapper(bo);
Page<WmsTransferOrderItemVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
List<WmsTransferOrderItemVo> records = result.getRecords();
if (records != null && !records.isEmpty()) {
String collect = records.stream()
.map(WmsTransferOrderItemVo::getCoilId)
.filter(Objects::nonNull)
.distinct()
.map(String::valueOf)
.collect(Collectors.joining(","));// 收集结果
if (!collect.isEmpty()) {
WmsMaterialCoilBo coilBo = new WmsMaterialCoilBo();
coilBo.setCoilIds(collect);
List<WmsMaterialCoilVo> coilList = coilService.queryList(coilBo);
Map<Long, WmsMaterialCoilVo> coilMap = coilList.stream()
.collect(Collectors.toMap(WmsMaterialCoilVo::getCoilId, v -> v, (oldVal, newVal) -> oldVal));
for (WmsTransferOrderItemVo vo : records) {
WmsMaterialCoilVo coilVo = coilMap.get(vo.getCoilId());
if (coilVo != null) {
vo.setCoil(coilVo);
}
}
}
if (!records.isEmpty()) {
for (WmsTransferOrderItemVo vo : records) {
fillDetailInfo(vo);
}
@@ -315,6 +331,20 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer
throw new IllegalArgumentException("transferId和coilIds不能为空");
}
// 检查同一调拨单下是否已存在相同的coilId
LambdaQueryWrapper<WmsTransferOrderItem> existWrapper = new LambdaQueryWrapper<>();
existWrapper.eq(WmsTransferOrderItem::getTransferId, transferId)
.in(WmsTransferOrderItem::getCoilId, coilIds);
List<WmsTransferOrderItem> existItems = baseMapper.selectList(existWrapper);
if (!existItems.isEmpty()) {
List<Long> existCoilIds = existItems.stream()
.map(WmsTransferOrderItem::getCoilId)
.filter(Objects::nonNull)
.collect(Collectors.toList());
List<WmsMaterialCoil> wmsMaterialCoils = coilMapper.selectBatchIds(existCoilIds);
throw new IllegalArgumentException("当前钢卷号" + wmsMaterialCoils.stream().map(WmsMaterialCoil::getCurrentCoilNo).collect(Collectors.joining(",")) + " 已在该调拨单中存在");
}
List<WmsMaterialCoil> coils = coilMapper.selectBatchIds(coilIds);
if (coils.isEmpty()) {
throw new IllegalArgumentException("钢卷不存在");