Browse Source

流水添加汇算

yzc 1 year ago
parent
commit
9a38e8b495

+ 8 - 0
hx-account/src/main/java/com/fjhx/account/controller/account/AccountRunningWaterController.java

@@ -123,4 +123,12 @@ public class AccountRunningWaterController {
         accountRunningWaterService.exchangeSettlement(dto);
     }
 
+    /**
+     * 汇算(流水金额装人民币金额重新计算)
+     */
+    @PostMapping("/settleAccounts")
+    public void settleAccounts(@RequestBody AccountRunningWater dto) {
+        accountRunningWaterService.settleAccounts(dto);
+    }
+
 }

+ 11 - 0
hx-account/src/main/java/com/fjhx/account/service/AccountService.java

@@ -0,0 +1,11 @@
+package com.fjhx.account.service;
+
+import com.fjhx.account.entity.account.po.AccountRunningWater;
+
+public interface AccountService {
+
+    /**
+     * 根据流水信息 重新更新到账信息的人民币金额
+     */
+    void updateClaimInfo(AccountRunningWater accountRunningWater);
+}

+ 5 - 0
hx-account/src/main/java/com/fjhx/account/service/account/AccountRunningWaterService.java

@@ -81,4 +81,9 @@ public interface AccountRunningWaterService extends BaseService<AccountRunningWa
      * 结汇
      */
     void exchangeSettlement(AccountRunningWaterDto dto);
+
+    /**
+     * 汇算(流水金额装人民币金额重新计算)
+     */
+    void settleAccounts(AccountRunningWater dto);
 }

+ 23 - 0
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRunningWaterServiceImpl.java

@@ -21,6 +21,7 @@ import com.fjhx.account.entity.tax.po.TaxRefundDetails;
 import com.fjhx.account.entity.transaction.po.Transaction;
 import com.fjhx.account.entity.transaction.po.TransactionDepartment;
 import com.fjhx.account.mapper.account.AccountRunningWaterMapper;
+import com.fjhx.account.service.AccountService;
 import com.fjhx.account.service.account.AccountManagementService;
 import com.fjhx.account.service.account.AccountRemainderService;
 import com.fjhx.account.service.account.AccountRunningWaterService;
@@ -82,6 +83,8 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
     private TransactionService transactionService;
     @Autowired
     private TransactionDepartmentService transactionDepartmentService;
+    @Autowired
+    private AccountService accountService;
 
     @Override
     public Page<AccountRunningWaterVo> getPage(AccountRunningWaterSelectDto dto) {
@@ -681,4 +684,24 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
         DynamicDataSourceContextHolder.poll();
     }
 
+    /**
+     * 汇算(流水金额转人民币金额重新计算)
+     */
+    @DSTransactional
+    @Override
+    public synchronized void settleAccounts(AccountRunningWater dto) {
+        AccountRunningWater oldAccountRunningWater = this.getById(dto.getId());
+        BigDecimal amountCny = dto.getAmountCny();
+        BigDecimal rate = amountCny.divide(oldAccountRunningWater.getAmount());
+
+        //只修改以下字段
+        AccountRunningWater newAccountRunningWater = new AccountRunningWater();
+        newAccountRunningWater.setId(oldAccountRunningWater.getId());
+        newAccountRunningWater.setRate(rate);
+        newAccountRunningWater.setAmountCny(amountCny);
+        this.updateById(newAccountRunningWater);
+        //将已经到账的合同按新汇率重新计算到账人民币金额
+        accountService.updateClaimInfo(newAccountRunningWater);
+    }
+
 }

+ 42 - 0
hx-sale/src/main/java/com/fjhx/sale/service/AccountServiceImpl.java

@@ -0,0 +1,42 @@
+package com.fjhx.sale.service;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.fjhx.account.entity.account.po.AccountRunningWater;
+import com.fjhx.account.service.AccountService;
+import com.fjhx.sale.entity.claim.po.Claim;
+import com.fjhx.sale.entity.claim.po.ClaimContract;
+import com.fjhx.sale.service.claim.ClaimContractService;
+import com.fjhx.sale.service.claim.ClaimService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class AccountServiceImpl implements AccountService {
+    @Autowired
+    private ClaimService claimService;
+    private ClaimContractService claimContractService;
+
+    /**
+     * 根据流水信息 重新更新到账信息的人民币金额
+     */
+    @Override
+    public void updateClaimInfo(AccountRunningWater accountRunningWater) {
+        List<Long> claimIds = claimService.listObject(Claim::getId, q -> q.eq(Claim::getBusinessId, accountRunningWater.getId()));
+        if (ObjectUtil.isEmpty(claimIds)) {
+            return;
+        }
+        List<ClaimContract> claimContracts = claimContractService.list(q -> q.in(ClaimContract::getClaimId, claimIds));
+        if (ObjectUtil.isEmpty(claimContracts)) {
+            return;
+        }
+
+        for (ClaimContract claimContract : claimContracts) {
+            claimContract.setRate(accountRunningWater.getRate());
+            claimContract.setMoneyCny(claimContract.getMoney().multiply(accountRunningWater.getRate()));
+        }
+
+        claimContractService.updateBatchById(claimContracts);
+    }
+}