|
|
@ -31,18 +31,18 @@ public class QuoteDetailBomServiceImpl extends ServiceImpl<QuoteDetailBomMapper, |
|
|
@Override |
|
|
@Override |
|
|
public List<QuoteDetailBom> queryQuoteDetailBom(QuoteDetailBom quoteDetailBom) { |
|
|
public List<QuoteDetailBom> queryQuoteDetailBom(QuoteDetailBom quoteDetailBom) { |
|
|
QuoteDetail detail = quoteDetailService.lambdaQuery().eq(QuoteDetail::getId, quoteDetailBom.getQuoteDetailId()).one(); |
|
|
QuoteDetail detail = quoteDetailService.lambdaQuery().eq(QuoteDetail::getId, quoteDetailBom.getQuoteDetailId()).one(); |
|
|
if (Objects.nonNull(quoteDetailBom.getAllTree()) && quoteDetailBom.getAllTree()){ |
|
|
|
|
|
|
|
|
if (Objects.nonNull(quoteDetailBom.getAllTree()) && quoteDetailBom.getAllTree()) { |
|
|
return Objects.requireNonNull(queryQuoteDetailBomAll(quoteDetailBom)).stream().map(item -> { |
|
|
return Objects.requireNonNull(queryQuoteDetailBomAll(quoteDetailBom)).stream().map(item -> { |
|
|
item.setQuoteUnitPrice(calculateQuotePrice(item,detail));// 单位标准成本 |
|
|
|
|
|
item.setActualQuotePrice(calculateActualQuotePrice(item,detail));// 单位实际成本 |
|
|
|
|
|
item.setAllQuotePrice(calculateBOMQuotePrice(item,detail));// 单位实际成本 |
|
|
|
|
|
|
|
|
item.setQuoteUnitPrice(calculateQuotePrice(item, detail));// 单位标准成本 |
|
|
|
|
|
item.setActualQuotePrice(calculateActualQuotePrice(item, detail));// 单位实际成本 |
|
|
|
|
|
item.setAllQuotePrice(calculateBOMQuotePrice(item, detail));// 单位实际成本 |
|
|
return item; |
|
|
return item; |
|
|
}).collect(Collectors.toList()); |
|
|
}).collect(Collectors.toList()); |
|
|
} |
|
|
} |
|
|
return baseMapper.queryQuoteDetailBom(quoteDetailBom).stream().map(item -> { |
|
|
return baseMapper.queryQuoteDetailBom(quoteDetailBom).stream().map(item -> { |
|
|
item.setQuoteUnitPrice(calculateQuotePrice(item,detail)); |
|
|
|
|
|
item.setActualQuotePrice(calculateActualQuotePrice(item,detail)); |
|
|
|
|
|
item.setAllQuotePrice(calculateBOMQuotePrice(item,detail)); |
|
|
|
|
|
|
|
|
item.setQuoteUnitPrice(calculateQuotePrice(item, detail)); |
|
|
|
|
|
item.setActualQuotePrice(calculateActualQuotePrice(item, detail)); |
|
|
|
|
|
item.setAllQuotePrice(calculateBOMQuotePrice(item, detail)); |
|
|
return item; |
|
|
return item; |
|
|
}).collect(Collectors.toList()); |
|
|
}).collect(Collectors.toList()); |
|
|
} |
|
|
} |
|
|
@ -71,11 +71,13 @@ public class QuoteDetailBomServiceImpl extends ServiceImpl<QuoteDetailBomMapper, |
|
|
BigDecimal qty = detail.getQty(); |
|
|
BigDecimal qty = detail.getQty(); |
|
|
// 6 计算所需数量 |
|
|
// 6 计算所需数量 |
|
|
// 调机单位用量 |
|
|
// 调机单位用量 |
|
|
if (qty.compareTo(BigDecimal.ZERO) == 0){ |
|
|
|
|
|
|
|
|
if (qty.compareTo(BigDecimal.ZERO) == 0) { |
|
|
return BigDecimal.ZERO; |
|
|
return BigDecimal.ZERO; |
|
|
} |
|
|
} |
|
|
BigDecimal componentUnitScrap = componentScrap.divide(qty,4, RoundingMode.HALF_UP); |
|
|
|
|
|
BigDecimal needQty = qtyPerAssembly.divide(BigDecimal.ONE.subtract(shrinkageFactor.divide(BigDecimal.valueOf(100),4, RoundingMode.HALF_UP)),4, RoundingMode.HALF_UP) |
|
|
|
|
|
|
|
|
BigDecimal componentUnitScrap = componentScrap.divide(qty, 4, RoundingMode.HALF_UP); |
|
|
|
|
|
BigDecimal needQty = |
|
|
|
|
|
qtyPerAssembly |
|
|
|
|
|
// .divide(BigDecimal.ONE.subtract(shrinkageFactor.divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP)), 4, RoundingMode.HALF_UP) |
|
|
.add(componentUnitScrap); |
|
|
.add(componentUnitScrap); |
|
|
|
|
|
|
|
|
return needQty.multiply(unitPrice).setScale(4, RoundingMode.HALF_UP); |
|
|
return needQty.multiply(unitPrice).setScale(4, RoundingMode.HALF_UP); |
|
|
@ -95,11 +97,13 @@ public class QuoteDetailBomServiceImpl extends ServiceImpl<QuoteDetailBomMapper, |
|
|
BigDecimal qty = detail.getQty(); |
|
|
BigDecimal qty = detail.getQty(); |
|
|
// 6 计算所需数量 |
|
|
// 6 计算所需数量 |
|
|
// 调机单位用量 |
|
|
// 调机单位用量 |
|
|
if (qty.compareTo(BigDecimal.ZERO) == 0){ |
|
|
|
|
|
|
|
|
if (qty.compareTo(BigDecimal.ZERO) == 0) { |
|
|
return BigDecimal.ZERO; |
|
|
return BigDecimal.ZERO; |
|
|
} |
|
|
} |
|
|
BigDecimal componentUnitScrap = componentScrap.divide(qty,4, RoundingMode.HALF_UP); |
|
|
|
|
|
BigDecimal needQty = qtyPerAssembly.divide(BigDecimal.ONE.subtract(shrinkageFactor.divide(BigDecimal.valueOf(100),4, RoundingMode.HALF_UP)),4, RoundingMode.HALF_UP) |
|
|
|
|
|
|
|
|
BigDecimal componentUnitScrap = componentScrap.divide(qty, 4, RoundingMode.HALF_UP); |
|
|
|
|
|
BigDecimal needQty = |
|
|
|
|
|
qtyPerAssembly |
|
|
|
|
|
// .divide(BigDecimal.ONE.subtract(shrinkageFactor.divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP)), 4, RoundingMode.HALF_UP) |
|
|
.add(componentUnitScrap); |
|
|
.add(componentUnitScrap); |
|
|
|
|
|
|
|
|
return needQty.multiply(actualPrice).setScale(4, RoundingMode.HALF_UP); |
|
|
return needQty.multiply(actualPrice).setScale(4, RoundingMode.HALF_UP); |
|
|
@ -119,11 +123,13 @@ public class QuoteDetailBomServiceImpl extends ServiceImpl<QuoteDetailBomMapper, |
|
|
BigDecimal qty = detail.getQty(); |
|
|
BigDecimal qty = detail.getQty(); |
|
|
// 6 计算所需数量 |
|
|
// 6 计算所需数量 |
|
|
// 调机单位用量 |
|
|
// 调机单位用量 |
|
|
if (qty.compareTo(BigDecimal.ZERO) == 0){ |
|
|
|
|
|
|
|
|
if (qty.compareTo(BigDecimal.ZERO) == 0) { |
|
|
return BigDecimal.ZERO; |
|
|
return BigDecimal.ZERO; |
|
|
} |
|
|
} |
|
|
BigDecimal componentUnitScrap = componentScrap.divide(qty,4, RoundingMode.HALF_UP); |
|
|
|
|
|
BigDecimal needQty = qtyPerAssembly.divide(BigDecimal.ONE.subtract(shrinkageFactor.divide(BigDecimal.valueOf(100),4, RoundingMode.HALF_UP)),4, RoundingMode.HALF_UP) |
|
|
|
|
|
|
|
|
BigDecimal componentUnitScrap = componentScrap.divide(qty, 4, RoundingMode.HALF_UP); |
|
|
|
|
|
BigDecimal needQty = |
|
|
|
|
|
qtyPerAssembly |
|
|
|
|
|
// .divide(BigDecimal.ONE.subtract(shrinkageFactor.divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP)), 4, RoundingMode.HALF_UP) |
|
|
.add(componentUnitScrap); |
|
|
.add(componentUnitScrap); |
|
|
return needQty.multiply(quotePrice).setScale(4, RoundingMode.HALF_UP); |
|
|
return needQty.multiply(quotePrice).setScale(4, RoundingMode.HALF_UP); |
|
|
} |
|
|
} |
|
|
|