refactor(transfer): 优化转库订单项目确认逻辑

- 移除 WmsTransferOrderItemBo 中的 itemType 字段
- 将 itemType 替换为 materialTypeAfter 的转换逻辑
- 添加对 itemId、itemType 和 warehouseId 的空值检查
- 实现字段选择性更新机制
- 修复查询条件添加 transferId 筛选
- 完善默认值回退逻辑
This commit is contained in:
2026-03-28 11:47:33 +08:00
parent c554508000
commit 6e23e932da
2 changed files with 23 additions and 12 deletions

View File

@@ -74,9 +74,4 @@ public class WmsTransferOrderItemBo extends BaseEntity {
*/
private String remark;
/**
* 物料类型
*/
private String itemType;
}

View File

@@ -375,9 +375,10 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean confirmTransfer(WmsTransferOrderItemBo bo) {
Long transferId = bo.getTransferId();
Long coilId = bo.getCoilId();
Long itemId = bo.getItemIdAfter();
String itemType = bo.getItemType();
String itemType = bo.getMaterialTypeAfter() != null ? (bo.getMaterialTypeAfter() == 1 ? "raw_material" : "product") : null;
Long warehouseId = bo.getWarehouseIdAfter();
if (coilId == null) {
@@ -389,18 +390,33 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer
throw new IllegalArgumentException("钢卷不存在");
}
coil.setItemId(itemId);
coil.setItemType(itemType);
coil.setWarehouseId(warehouseId);
// 如果传了才修改钢卷
if (itemId != null) {
coil.setItemId(itemId);
}
if (itemType != null) {
coil.setItemType(itemType);
}
if (warehouseId != null) {
coil.setWarehouseId(warehouseId);
}
coilMapper.updateById(coil);
LambdaQueryWrapper<WmsTransferOrderItem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(WmsTransferOrderItem::getCoilId, coilId);
wrapper.eq(WmsTransferOrderItem::getTransferId, transferId);
WmsTransferOrderItem item = baseMapper.selectOne(wrapper);
if (item != null) {
item.setItemIdAfter(itemId);
item.setMaterialTypeAfter(Objects.equals(itemType, "raw_material") ? 1L : 2L);
item.setWarehouseIdAfter(warehouseId);
// 如果没传itemIdAfter则用itemIdBefore的值
item.setItemIdAfter(itemId != null ? itemId : item.getItemIdBefore());
// 如果没传materialTypeAfter则用materialTypeBefore的值
if (bo.getMaterialTypeAfter() != null) {
item.setMaterialTypeAfter(bo.getMaterialTypeAfter());
} else {
item.setMaterialTypeAfter(item.getMaterialTypeBefore());
}
// 如果没传warehouseIdAfter则用warehouseIdBefore的值
item.setWarehouseIdAfter(warehouseId != null ? warehouseId : item.getWarehouseIdBefore());
baseMapper.updateById(item);
}