Przeglądaj źródła

添加汇算接口

yzc 1 rok temu
rodzic
commit
803d6b4ab3

+ 12 - 1
hx-account/src/main/java/com/fjhx/account/controller/account/AccountRunningWaterController.java

@@ -10,7 +10,10 @@ import com.fjhx.account.service.account.AccountRunningWaterService;
 import com.fjhx.common.constant.SourceConstant;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
@@ -121,4 +124,12 @@ public class AccountRunningWaterController {
         return accountRunningWaterService.getTotal(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 - 1
hx-account/src/main/java/com/fjhx/account/service/account/AccountRunningWaterService.java

@@ -1,6 +1,5 @@
 package com.fjhx.account.service.account;
 
-import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.account.entity.account.dto.AccountRunningWaterDto;
 import com.fjhx.account.entity.account.dto.AccountRunningWaterSelectDto;
@@ -78,4 +77,9 @@ public interface AccountRunningWaterService extends BaseService<AccountRunningWa
      * 流水统计
      */
     Map<String, List<AccountRunningWaterVo>> getTotal(AccountRunningWaterSelectDto dto);
+
+    /**
+     * 汇算(流水金额装人民币金额重新计算)
+     */
+    void settleAccounts(AccountRunningWater dto);
 }

+ 28 - 1
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRunningWaterServiceImpl.java

@@ -17,6 +17,7 @@ import com.fjhx.account.entity.account.po.AccountRunningWater;
 import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
 import com.fjhx.account.entity.tax.po.TaxRefundDetails;
 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;
@@ -67,11 +68,14 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
     @Autowired
     private TaxRefundDetailsService taxRefundDetailsService;
 
+    @Autowired
+    private AccountService accountService;
+
 
     /**
      * 分页条件抽取
      */
-    private QueryWrapper<Object> getPageWrapper(AccountRunningWaterSelectDto dto){
+    private QueryWrapper<Object> getPageWrapper(AccountRunningWaterSelectDto dto) {
         QueryWrapper<Object> wrapper = Wrappers.query();
         // 资金账户
         wrapper.eq(ObjectUtil.isNotEmpty(dto.getAccountManagementId()), "arw.account_management_id", dto.getAccountManagementId());
@@ -298,6 +302,9 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
         changeRemainder(accountRunningWaterDto);
 
         this.updateById(accountRunningWaterDto);
+
+        //修改流水时候也需要重新汇算
+        settleAccounts(accountRunningWaterDto);
     }
 
     @DSTransactional
@@ -526,4 +533,24 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
         return map;
     }
 
+    /**
+     * 汇算(流水金额转人民币金额重新计算)
+     */
+    @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);
+    }
+}

+ 1 - 0
hx-sale/src/main/java/com/fjhx/sale/service/claim/impl/ClaimServiceImpl.java

@@ -96,6 +96,7 @@ public class ClaimServiceImpl extends ServiceImpl<ClaimMapper, Claim> implements
                 if (ObjectUtils.isNotEmpty(water.getAmountCny())) {
                     BigDecimal multiply = c.getMoney().multiply(water.getRate());
                     c.setMoneyCny(multiply);
+                    c.setRate(water.getRate());
                 }
             }
             claimContractService.saveBatch(claimContractList);