add allowDecimalQuantity
This commit is contained in:
@@ -68,6 +68,14 @@ public class GaoSalesOrderItem extends UUIDEntity {
|
||||
/// 基础单位数量系数快照
|
||||
private BigDecimal baseQuantityPerUnitSnapshot;
|
||||
|
||||
/// 当前 SKU 是否允许业务数量保留小数
|
||||
@Transient
|
||||
private Boolean allowDecimalQuantity;
|
||||
|
||||
/// 当前 SKU 基础单位名称
|
||||
@Transient
|
||||
private String baseUnitName;
|
||||
|
||||
/// 购买数量
|
||||
private BigDecimal quantity;
|
||||
|
||||
|
||||
@@ -13,6 +13,12 @@ import java.util.List;
|
||||
/// @since 2026-09-06
|
||||
public interface GaoProductSkuMapper extends BaseMapper<GaoProductSku, String> {
|
||||
|
||||
/// 批量查询 SKU
|
||||
///
|
||||
/// @param idList SKU ID 集合
|
||||
/// @return SKU 列表
|
||||
List<GaoProductSku> selectByIdList(@Param("idList") Collection<String> idList);
|
||||
|
||||
/// 按产品查询 SKU
|
||||
List<GaoProductSku> selectByProductId(@Param("productId") String productId);
|
||||
|
||||
|
||||
@@ -15,6 +15,12 @@ import java.util.List;
|
||||
/// @since 2026-09-06
|
||||
public interface GaoProductSkuService extends BaseService<GaoProductSku, String> {
|
||||
|
||||
/// 批量查询 SKU
|
||||
///
|
||||
/// @param idList SKU ID 集合
|
||||
/// @return SKU 列表,包含单位、规格和附件临时数据
|
||||
List<GaoProductSku> listByIdList(Collection<String> idList);
|
||||
|
||||
/// 查询 SKU 详情
|
||||
GaoProductSku detail(String id);
|
||||
|
||||
|
||||
+10
@@ -76,6 +76,16 @@ public class GaoProductSkuServiceImplement extends AbstractEntityService<GaoProd
|
||||
return sku;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<GaoProductSku> listByIdList(Collection<String> idList) {
|
||||
if (idList == null || idList.isEmpty()) {
|
||||
return List.of();
|
||||
}
|
||||
List<GaoProductSku> result = mapper.selectByIdList(idList);
|
||||
fillTransient(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<GaoProductSku> listByProductId(String productId) {
|
||||
TimiException.required(productId, "not found productId");
|
||||
|
||||
+32
@@ -115,6 +115,7 @@ public class GaoSalesOrderServiceImplement extends AbstractEntityService<GaoSale
|
||||
TimiException.required(order, "not found sales order");
|
||||
storeScopeService.checkStoreId(order.getStoreId());
|
||||
List<GaoSalesOrderItem> itemList = itemMapper.selectBySalesOrderId(order.getId());
|
||||
fillItemDisplayInfo(itemList);
|
||||
for (GaoSalesOrderItem item : itemList) {
|
||||
fillItemBalance(item);
|
||||
}
|
||||
@@ -562,6 +563,37 @@ public class GaoSalesOrderServiceImplement extends AbstractEntityService<GaoSale
|
||||
item.setRemainingBaseQuantity(baseQuantity.subtract(fulfilledBaseQuantity));
|
||||
}
|
||||
|
||||
/// 填充订单项数量展示所需的 SKU 信息
|
||||
///
|
||||
/// @param itemList 订单项列表
|
||||
private void fillItemDisplayInfo(List<GaoSalesOrderItem> itemList) {
|
||||
if (itemList == null || itemList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
List<String> skuIdList = itemList.stream()
|
||||
.map(GaoSalesOrderItem::getSkuId)
|
||||
.filter(value -> value != null && !value.isBlank())
|
||||
.distinct()
|
||||
.toList();
|
||||
if (skuIdList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
Map<String, GaoProductSku> skuMap = skuService.listByIdList(skuIdList).stream()
|
||||
.collect(java.util.stream.Collectors.toMap(GaoProductSku::getId, java.util.function.Function.identity()));
|
||||
for (GaoSalesOrderItem item : itemList) {
|
||||
GaoProductSku sku = skuMap.get(item.getSkuId());
|
||||
if (sku == null) {
|
||||
continue;
|
||||
}
|
||||
item.setAllowDecimalQuantity(sku.getAllowDecimalQuantity());
|
||||
item.setBaseUnitName(sku.getUnitList().stream()
|
||||
.filter(unit -> Boolean.TRUE.equals(unit.getIsBase()))
|
||||
.map(GaoProductSkuUnit::getName)
|
||||
.findFirst()
|
||||
.orElse(null));
|
||||
}
|
||||
}
|
||||
|
||||
private void fillItemAttachments(List<GaoSalesOrderItem> itemList) {
|
||||
if (itemList == null || itemList.isEmpty()) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user