feat(wms): 补全出入库明细中的单位信息

- 在新增出入库明细时,如果单位信息为空,自动从商品或原材料表中获取
- 支持产品和原材料两种物料类型的单位信息补全
- 优化了数据录入流程,提高了系统易用性
This commit is contained in:
2025-08-23 16:52:22 +08:00
parent f00c31e606
commit 8cf81f29f9

View File

@@ -7,6 +7,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import com.klp.domain.WmsProduct;
import com.klp.domain.WmsRawMaterial;
import com.klp.mapper.WmsProductMapper;
import com.klp.mapper.WmsRawMaterialMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -37,6 +41,8 @@ public class WmsStockIoDetailServiceImpl implements IWmsStockIoDetailService {
private final WmsStockIoDetailMapper baseMapper;
private final WmsStockIoMapper stockIoMapper;
private final WmsProductMapper productMapper;
private final WmsRawMaterialMapper rawMaterialMapper;
/**
* 查询出入库单明细
@@ -102,7 +108,19 @@ public class WmsStockIoDetailServiceImpl implements IWmsStockIoDetailService {
if (stockIo != null && stockIo.getStatus() >= 2) {
throw new ServiceException("已审核的单据不能修改明细");
}
// 如果unit为空自动查item表补全新增逻辑
String unit = bo.getUnit();
if (unit == null || unit.trim().isEmpty()) {
if ("product".equals(bo.getItemType())) {
WmsProduct p = productMapper.selectById(bo.getItemId());
unit = p != null ? p.getUnit() : null;
} else if ("raw_material".equals(bo.getItemType())) {
WmsRawMaterial r = rawMaterialMapper.selectById(bo.getItemId());
unit = r != null ? r.getUnit() : null;
}
}
// 将获取到的unit设置回bo对象
bo.setUnit(unit);
WmsStockIoDetail add = BeanUtil.toBean(bo, WmsStockIoDetail.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;