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 com.klp.service.IWmsWarehouseService;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
@@ -70,7 +66,27 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer
|
|||||||
LambdaQueryWrapper<WmsTransferOrderItem> lqw = buildQueryWrapper(bo);
|
LambdaQueryWrapper<WmsTransferOrderItem> lqw = buildQueryWrapper(bo);
|
||||||
Page<WmsTransferOrderItemVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
Page<WmsTransferOrderItemVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||||
List<WmsTransferOrderItemVo> records = result.getRecords();
|
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) {
|
for (WmsTransferOrderItemVo vo : records) {
|
||||||
fillDetailInfo(vo);
|
fillDetailInfo(vo);
|
||||||
}
|
}
|
||||||
@@ -315,6 +331,20 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer
|
|||||||
throw new IllegalArgumentException("transferId和coilIds不能为空");
|
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);
|
List<WmsMaterialCoil> coils = coilMapper.selectBatchIds(coilIds);
|
||||||
if (coils.isEmpty()) {
|
if (coils.isEmpty()) {
|
||||||
throw new IllegalArgumentException("钢卷不存在");
|
throw new IllegalArgumentException("钢卷不存在");
|
||||||
|
|||||||
Reference in New Issue
Block a user