24282 2 роки тому
батько
коміт
53568a52c2

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/statement/vo/ProfitSettlementVo.java

@@ -45,6 +45,11 @@ public class ProfitSettlementVo {
     private BigDecimal contractAmount;
 
     /**
+     * 币种(字典account_currency)
+     */
+    private String currency;
+
+    /**
      * 销售合同到账金额
      */
     private BigDecimal contractArrival = BigDecimal.ZERO;

+ 13 - 9
hx-sale/src/main/java/com/fjhx/sale/service/statement/impl/SaleStatementServiceImpl.java

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