|
@@ -74,7 +74,7 @@ public class SaleStatementServiceImpl implements SaleStatementService {
|
|
Map<Long, Map<String, BigDecimal>> detailsRateMap = getDetailsRateMap(records, defaultRateMap);
|
|
Map<Long, Map<String, BigDecimal>> detailsRateMap = getDetailsRateMap(records, defaultRateMap);
|
|
|
|
|
|
// 转换为vo
|
|
// 转换为vo
|
|
- List<ProfitSettlementVo> list = createResultList(records, detailsRateMap);
|
|
|
|
|
|
+ List<ProfitSettlementVo> list = createResultList(records);
|
|
|
|
|
|
// 赋值业务员名称
|
|
// 赋值业务员名称
|
|
UserUtil.assignmentNickName(list, ProfitSettlementVo::getUserId, ProfitSettlementVo::setUserName);
|
|
UserUtil.assignmentNickName(list, ProfitSettlementVo::getUserId, ProfitSettlementVo::setUserName);
|
|
@@ -145,19 +145,16 @@ public class SaleStatementServiceImpl implements SaleStatementService {
|
|
/**
|
|
/**
|
|
* 创建结果集list
|
|
* 创建结果集list
|
|
*/
|
|
*/
|
|
- private List<ProfitSettlementVo> createResultList(
|
|
|
|
- List<Contract> records, Map<Long, Map<String, BigDecimal>> detailsRateMap) {
|
|
|
|
|
|
+ private List<ProfitSettlementVo> createResultList(List<Contract> records) {
|
|
|
|
|
|
return records.stream().map(item -> {
|
|
return records.stream().map(item -> {
|
|
- Map<String, BigDecimal> ietmRateMap = detailsRateMap.get(item.getId());
|
|
|
|
-
|
|
|
|
ProfitSettlementVo profitSettlementVo = new ProfitSettlementVo();
|
|
ProfitSettlementVo profitSettlementVo = new ProfitSettlementVo();
|
|
profitSettlementVo.setContractId(item.getId());
|
|
profitSettlementVo.setContractId(item.getId());
|
|
profitSettlementVo.setContractCode(item.getCode());
|
|
profitSettlementVo.setContractCode(item.getCode());
|
|
profitSettlementVo.setCustomerId(item.getBuyCorporationId());
|
|
profitSettlementVo.setCustomerId(item.getBuyCorporationId());
|
|
profitSettlementVo.setUserId(item.getCreateUser());
|
|
profitSettlementVo.setUserId(item.getCreateUser());
|
|
- profitSettlementVo.setContractAmount(item.getAmount()
|
|
|
|
- .multiply(ietmRateMap.getOrDefault(item.getCurrency(), BigDecimal.ONE)));
|
|
|
|
|
|
+ profitSettlementVo.setContractAmount(item.getAmount());
|
|
|
|
+ profitSettlementVo.setCurrency(item.getCurrency());
|
|
profitSettlementVo.setCurrencyRateJson(item.getCurrencyRateJson());
|
|
profitSettlementVo.setCurrencyRateJson(item.getCurrencyRateJson());
|
|
profitSettlementVo.setSettlementStatus(item.getSettlementStatus());
|
|
profitSettlementVo.setSettlementStatus(item.getSettlementStatus());
|
|
|
|
|
|
@@ -303,18 +300,25 @@ public class SaleStatementServiceImpl implements SaleStatementService {
|
|
private void calculation(List<ProfitSettlementVo> list) {
|
|
private void calculation(List<ProfitSettlementVo> list) {
|
|
|
|
|
|
for (ProfitSettlementVo profitSettlementVo : list) {
|
|
for (ProfitSettlementVo profitSettlementVo : list) {
|
|
|
|
+
|
|
|
|
+ // 收入
|
|
BigDecimal totalIncome = profitSettlementVo.getOtherIncome().add(profitSettlementVo.getContractArrival());
|
|
BigDecimal totalIncome = profitSettlementVo.getOtherIncome().add(profitSettlementVo.getContractArrival());
|
|
profitSettlementVo.setTotalIncome(totalIncome);
|
|
profitSettlementVo.setTotalIncome(totalIncome);
|
|
|
|
|
|
|
|
+ // 支出
|
|
BigDecimal totalExpenses = profitSettlementVo.getOtherExpenses().add(profitSettlementVo.getPayForGoods());
|
|
BigDecimal totalExpenses = profitSettlementVo.getOtherExpenses().add(profitSettlementVo.getPayForGoods());
|
|
profitSettlementVo.setTotalExpenses(totalExpenses);
|
|
profitSettlementVo.setTotalExpenses(totalExpenses);
|
|
|
|
|
|
- profitSettlementVo.setGrossProfit(totalIncome.subtract(totalExpenses));
|
|
|
|
|
|
+ // 毛利
|
|
|
|
+ BigDecimal grossProfit = totalIncome.subtract(totalExpenses);
|
|
|
|
+ profitSettlementVo.setGrossProfit(grossProfit);
|
|
|
|
|
|
if (totalIncome.equals(BigDecimal.ZERO)) {
|
|
if (totalIncome.equals(BigDecimal.ZERO)) {
|
|
profitSettlementVo.setGrossProfitMargin(BigDecimal.ZERO);
|
|
profitSettlementVo.setGrossProfitMargin(BigDecimal.ZERO);
|
|
} else {
|
|
} else {
|
|
- profitSettlementVo.setGrossProfitMargin(totalExpenses.divide(totalIncome, RoundingMode.HALF_UP));
|
|
|
|
|
|
+ profitSettlementVo.setGrossProfitMargin(
|
|
|
|
+ new BigDecimal("100").multiply(grossProfit).divide(totalIncome, 2, RoundingMode.HALF_UP)
|
|
|
|
+ );
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|