Browse Source

历史毛利,利润结算表问题处理

yzc 1 year ago
parent
commit
88cb9a6698

+ 8 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/vo/ContractBudgetVo.java

@@ -200,6 +200,14 @@ public class ContractBudgetVo extends Contract {
          */
          */
         private BigDecimal contractAmount;
         private BigDecimal contractAmount;
         /**
         /**
+         * 合同币种
+         */
+        private String contractCurrency;
+        /**
+         * 合同金额(人民币)
+         */
+        private BigDecimal contractRmbAmount;
+        /**
          * 采购金额
          * 采购金额
          */
          */
         private BigDecimal purchaseAmount;
         private BigDecimal purchaseAmount;

+ 39 - 29
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -517,7 +517,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         List<Long> allContractIds = contractList.stream().map(Contract::getId).collect(Collectors.toList());
         List<Long> allContractIds = contractList.stream().map(Contract::getId).collect(Collectors.toList());
         Map<Long, Contract> contractMap = contractList.stream().collect(Collectors.toMap(Contract::getId, Function.identity()));
         Map<Long, Contract> contractMap = contractList.stream().collect(Collectors.toMap(Contract::getId, Function.identity()));
 
 
-        List<EhsdPurchase> ehsdPurchaseList = ehsdPurchaseService.list(q -> q.in(EhsdPurchase::getDataResourceId, allContractIds));
+        List<EhsdPurchase> ehsdPurchaseList = ehsdPurchaseService.list(q -> q.in(EhsdPurchase::getDataResourceId, allContractIds)
+                .in(EhsdPurchase::getStatus, 10, 30, 60, 70, 99));
 
 
         for (ContractBudgetVo contractBudgetVo : list) {
         for (ContractBudgetVo contractBudgetVo : list) {
             Long contractId = contractBudgetVo.getContractId();
             Long contractId = contractBudgetVo.getContractId();
@@ -542,6 +543,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
             for (Contract contract : arr) {
             for (Contract contract : arr) {
                 ContractBudgetVo.GrossProfitInfo grossProfitInfo = new ContractBudgetVo.GrossProfitInfo();
                 ContractBudgetVo.GrossProfitInfo grossProfitInfo = new ContractBudgetVo.GrossProfitInfo();
                 grossProfitInfo.setContractAmount(contract.getAmount());
                 grossProfitInfo.setContractAmount(contract.getAmount());
+                grossProfitInfo.setContractCurrency(contract.getCurrency());
+                grossProfitInfo.setContractRmbAmount(contract.getAmount().multiply(contract.getRate()));
                 grossProfitInfo.setCreateTime(contract.getCreateTime());
                 grossProfitInfo.setCreateTime(contract.getCreateTime());
                 grossProfitInfoList.add(grossProfitInfo);
                 grossProfitInfoList.add(grossProfitInfo);
             }
             }
@@ -556,32 +559,39 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
 
 
             //赋值信息
             //赋值信息
             BigDecimal lastContractAmount = BigDecimal.ZERO;
             BigDecimal lastContractAmount = BigDecimal.ZERO;
+            String lastContractCurrency = "";
+            BigDecimal lastContractRmbAmount = BigDecimal.ZERO;
             BigDecimal lastPurchaseAmount = BigDecimal.ZERO;
             BigDecimal lastPurchaseAmount = BigDecimal.ZERO;
             for (ContractBudgetVo.GrossProfitInfo grossProfitInfo : grossProfitInfoList) {
             for (ContractBudgetVo.GrossProfitInfo grossProfitInfo : grossProfitInfoList) {
-                BigDecimal contractAmount = grossProfitInfo.getContractAmount();
+                BigDecimal contractRmbAmount = grossProfitInfo.getContractRmbAmount();
                 BigDecimal purchaseAmount = grossProfitInfo.getPurchaseAmount();
                 BigDecimal purchaseAmount = grossProfitInfo.getPurchaseAmount();
-                if (ObjectUtil.isEmpty(contractAmount)) {
+                if (ObjectUtil.isEmpty(contractRmbAmount)) {
                     grossProfitInfo.setContractAmount(lastContractAmount);
                     grossProfitInfo.setContractAmount(lastContractAmount);
+                    grossProfitInfo.setContractCurrency(lastContractCurrency);
+                    grossProfitInfo.setContractRmbAmount(lastContractRmbAmount);
                 }
                 }
                 if (ObjectUtil.isEmpty(purchaseAmount)) {
                 if (ObjectUtil.isEmpty(purchaseAmount)) {
                     grossProfitInfo.setPurchaseAmount(lastPurchaseAmount);
                     grossProfitInfo.setPurchaseAmount(lastPurchaseAmount);
                 }
                 }
                 //赋值上次金额
                 //赋值上次金额
+                lastContractRmbAmount = grossProfitInfo.getContractRmbAmount();
                 lastContractAmount = grossProfitInfo.getContractAmount();
                 lastContractAmount = grossProfitInfo.getContractAmount();
+                lastContractCurrency = grossProfitInfo.getContractCurrency();
                 lastPurchaseAmount = grossProfitInfo.getPurchaseAmount();
                 lastPurchaseAmount = grossProfitInfo.getPurchaseAmount();
 
 
+
                 //退税金额
                 //退税金额
                 BigDecimal refundableAmount = contractBudgetVo.getRefundableAmount();
                 BigDecimal refundableAmount = contractBudgetVo.getRefundableAmount();
-                BigDecimal incomeAmount = grossProfitInfo.getContractAmount().add(refundableAmount);
+                BigDecimal incomeAmount = grossProfitInfo.getContractRmbAmount().add(refundableAmount);
 
 
                 //计算支出总计 除合同金额(转人民币)+应退税金额(转人民币) 其他金额相加
                 //计算支出总计 除合同金额(转人民币)+应退税金额(转人民币) 其他金额相加
-                BigDecimal expenditureAmount = contractBudgetVo.getTrailerFee() == null ? BigDecimal.ZERO : contractBudgetVo.getTrailerFee().add
-                        (contractBudgetVo.getCustomsFee() == null ? BigDecimal.ZERO : contractBudgetVo.getCustomsFee()).add
-                        (contractBudgetVo.getAgencyFee() == null ? BigDecimal.ZERO : contractBudgetVo.getAgencyFee()).add
-                        (contractBudgetVo.getPortMixedFee() == null ? BigDecimal.ZERO : contractBudgetVo.getPortMixedFee()).add
-                        (contractBudgetVo.getInspectionRedPack() == null ? BigDecimal.ZERO : contractBudgetVo.getInspectionRedPack()).add
-                        (contractBudgetVo.getCommission() == null ? BigDecimal.ZERO : contractBudgetVo.getCommission()).add
-                        (contractBudgetVo.getOther() == null ? BigDecimal.ZERO : contractBudgetVo.getOther());
+                BigDecimal expenditureAmount = (contractBudgetVo.getTrailerFee() == null ? BigDecimal.ZERO : contractBudgetVo.getTrailerFee())
+                        .add(contractBudgetVo.getCustomsFee() == null ? BigDecimal.ZERO : contractBudgetVo.getCustomsFee())
+                        .add(contractBudgetVo.getAgencyFee() == null ? BigDecimal.ZERO : contractBudgetVo.getAgencyFee())
+                        .add(contractBudgetVo.getPortMixedFee() == null ? BigDecimal.ZERO : contractBudgetVo.getPortMixedFee())
+                        .add(contractBudgetVo.getInspectionRedPack() == null ? BigDecimal.ZERO : contractBudgetVo.getInspectionRedPack())
+                        .add(contractBudgetVo.getCommission() == null ? BigDecimal.ZERO : contractBudgetVo.getCommission())
+                        .add(contractBudgetVo.getOther() == null ? BigDecimal.ZERO : contractBudgetVo.getOther());
                 expenditureAmount = expenditureAmount.add(grossProfitInfo.getPurchaseAmount() == null ? BigDecimal.ZERO : grossProfitInfo.getPurchaseAmount());
                 expenditureAmount = expenditureAmount.add(grossProfitInfo.getPurchaseAmount() == null ? BigDecimal.ZERO : grossProfitInfo.getPurchaseAmount());
 
 
                 BigDecimal grossProfit = incomeAmount.subtract(expenditureAmount);
                 BigDecimal grossProfit = incomeAmount.subtract(expenditureAmount);
@@ -598,7 +608,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
      * @return
      * @return
      */
      */
     private List<Contract> recursionOldContract(List<Long> contractIds) {
     private List<Contract> recursionOldContract(List<Long> contractIds) {
-        List<Contract> contract = this.list(q -> q.in(Contract::getId, contractIds));
+        List<Contract> contract = this.list(q -> q.in(Contract::getId, contractIds).in(Contract::getStatus, 10, 30, 60, 70, 99));
         List<Long> contractIds1 = contract.stream().map(Contract::getOldContractId).distinct()
         List<Long> contractIds1 = contract.stream().map(Contract::getOldContractId).distinct()
                 .filter(item -> ObjectUtil.isNotEmpty(item)).collect(Collectors.toList());
                 .filter(item -> ObjectUtil.isNotEmpty(item)).collect(Collectors.toList());
         if (ObjectUtil.isNotEmpty(contractIds1)) {
         if (ObjectUtil.isNotEmpty(contractIds1)) {
@@ -690,14 +700,14 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                     v.setAccessoriesAmount(accessoriesAmount);
                     v.setAccessoriesAmount(accessoriesAmount);
                 }
                 }
                 //计算支出总计 除合同金额(转人民币)+应退税金额(转人民币) 其他金额相加
                 //计算支出总计 除合同金额(转人民币)+应退税金额(转人民币) 其他金额相加
-                v.setExpenditureAmount(v.getTrailerFee() == null ? BigDecimal.ZERO : v.getTrailerFee().multiply(new BigDecimal(map.getOrDefault(v.getTrailerFeeCurrency(), BigDecimal.ONE).toString())).add
-                        (v.getCustomsFee() == null ? BigDecimal.ZERO : v.getCustomsFee().multiply(new BigDecimal(map.getOrDefault(v.getCustomsFeeCurrency(), BigDecimal.ONE).toString()))).add
-                        (v.getAgencyFee() == null ? BigDecimal.ZERO : v.getAgencyFee().multiply(new BigDecimal(map.getOrDefault(v.getAgencyFeeCurrency(), BigDecimal.ONE).toString()))).add
-                        (v.getPortMixedFee() == null ? BigDecimal.ZERO : v.getPortMixedFee().multiply(new BigDecimal(map.getOrDefault(v.getPortMixedFeeCurrency(), BigDecimal.ONE).toString()))).add
-                        (v.getInspectionRedPack() == null ? BigDecimal.ZERO : v.getInspectionRedPack().multiply(new BigDecimal(map.getOrDefault(v.getInspectionRedPackCurrency(), BigDecimal.ONE).toString()))).add
-                        (v.getCommission() == null ? BigDecimal.ZERO : v.getCommission().multiply(new BigDecimal(map.getOrDefault(v.getCommissionCurrency(), BigDecimal.ONE).toString()))).add
-                        (v.getOther() == null ? BigDecimal.ZERO : v.getOther().multiply(new BigDecimal(map.getOrDefault(v.getOtherCurrency(), BigDecimal.ONE).toString()))).add
-                        (v.getEhsdSumAmount() == null ? BigDecimal.ZERO : v.getEhsdSumAmount())
+                v.setExpenditureAmount((v.getTrailerFee() == null ? BigDecimal.ZERO : v.getTrailerFee().multiply(new BigDecimal(map.getOrDefault(v.getTrailerFeeCurrency(), BigDecimal.ONE).toString())))
+                        .add(v.getCustomsFee() == null ? BigDecimal.ZERO : v.getCustomsFee().multiply(new BigDecimal(map.getOrDefault(v.getCustomsFeeCurrency(), BigDecimal.ONE).toString())))
+                        .add(v.getAgencyFee() == null ? BigDecimal.ZERO : v.getAgencyFee().multiply(new BigDecimal(map.getOrDefault(v.getAgencyFeeCurrency(), BigDecimal.ONE).toString())))
+                        .add(v.getPortMixedFee() == null ? BigDecimal.ZERO : v.getPortMixedFee().multiply(new BigDecimal(map.getOrDefault(v.getPortMixedFeeCurrency(), BigDecimal.ONE).toString())))
+                        .add(v.getInspectionRedPack() == null ? BigDecimal.ZERO : v.getInspectionRedPack().multiply(new BigDecimal(map.getOrDefault(v.getInspectionRedPackCurrency(), BigDecimal.ONE).toString())))
+                        .add(v.getCommission() == null ? BigDecimal.ZERO : v.getCommission().multiply(new BigDecimal(map.getOrDefault(v.getCommissionCurrency(), BigDecimal.ONE).toString())))
+                        .add(v.getOther() == null ? BigDecimal.ZERO : v.getOther().multiply(new BigDecimal(map.getOrDefault(v.getOtherCurrency(), BigDecimal.ONE).toString())))
+                        .add(v.getEhsdSumAmount() == null ? BigDecimal.ZERO : v.getEhsdSumAmount())
                 );
                 );
                 //处理退税金额
                 //处理退税金额
                 handleRefundTax(v);
                 handleRefundTax(v);
@@ -747,16 +757,16 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                 BigDecimal rate = v.getRate();
                 BigDecimal rate = v.getRate();
 
 
                 //计算支出总计 除合同金额(转人民币)+应退税金额(转人民币) 其他金额相加
                 //计算支出总计 除合同金额(转人民币)+应退税金额(转人民币) 其他金额相加
-                v.setExpenditureAmount(
-                        v.getTrailerFee() == null ? BigDecimal.ZERO : v.getTrailerFee().add
-                                (v.getCustomsFee() == null ? BigDecimal.ZERO : v.getCustomsFee()).add
-                                (v.getAgencyFee() == null ? BigDecimal.ZERO : v.getAgencyFee()).add
-                                (v.getPortMixedFee() == null ? BigDecimal.ZERO : v.getPortMixedFee()).add
-                                (v.getInspectionRedPack() == null ? BigDecimal.ZERO : v.getInspectionRedPack()).add
-                                (v.getCommission() == null ? BigDecimal.ZERO : v.getCommission()).add
-                                (v.getOther() == null ? BigDecimal.ZERO : v.getOther()).add
-                                (v.getEhsdSumAmount() == null ? BigDecimal.ZERO : v.getEhsdSumAmount())
+                v.setExpenditureAmount((v.getTrailerFee() == null ? BigDecimal.ZERO : v.getTrailerFee())
+                        .add(v.getCustomsFee() == null ? BigDecimal.ZERO : v.getCustomsFee())
+                        .add(v.getAgencyFee() == null ? BigDecimal.ZERO : v.getAgencyFee())
+                        .add(v.getPortMixedFee() == null ? BigDecimal.ZERO : v.getPortMixedFee())
+                        .add(v.getInspectionRedPack() == null ? BigDecimal.ZERO : v.getInspectionRedPack())
+                        .add(v.getCommission() == null ? BigDecimal.ZERO : v.getCommission())
+                        .add(v.getOther() == null ? BigDecimal.ZERO : v.getOther())
+                        .add(v.getEhsdSumAmount() == null ? BigDecimal.ZERO : v.getEhsdSumAmount())
                 );
                 );
+
                 //处理退税金额
                 //处理退税金额
                 handleRefundTax(v);
                 handleRefundTax(v);
                 v.setRmbContractAmount(v.getAmount().multiply(rate));
                 v.setRmbContractAmount(v.getAmount().multiply(rate));