feat(transfer): 添加调拨订单项目中的钢卷详情查询和重复检查功能
- 优化导入语句,使用java.util.*统一导入 - 在分页查询中添加钢卷详情关联查询逻辑 - 通过coilId收集并查询对应的钢卷信息并建立映射关系 - 为每个调拨订单项目设置关联的钢卷详情信息 - 添加调拨单内钢卷重复性检查机制 - 防止同一调拨单下添加相同coilId的重复项目 - 提供详细的重复钢卷号错误提示信息
This commit is contained in:
@@ -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("钢卷不存在");
|
||||
|
||||
Reference in New Issue
Block a user