Ver código fonte

到账认领功能移植

yzc 1 ano atrás
pai
commit
d748485515

+ 5 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRunningWaterSelectDto.java

@@ -79,4 +79,9 @@ public class AccountRunningWaterSelectDto extends BaseSelectDto {
      */
     private String stopTime;
 
+    /**
+     * 是否汇算
+     */
+    private Integer isSettleAccounts;
+
 }

+ 5 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRunningWater.java

@@ -125,4 +125,9 @@ public class AccountRunningWater extends BasePo {
      */
     private Long accountPaymentRecordsId;
 
+    /**
+     * 转人民币金额
+     */
+    private BigDecimal amountCny;
+
 }

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

@@ -47,6 +47,7 @@ import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -122,6 +123,16 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
             wrapper.orderByDesc("arw.transaction_time", "arw.id");
         }
 
+        //是否汇算过滤
+        if (ObjectUtil.isNotEmpty(dto.getIsSettleAccounts())) {
+            if (0 == dto.getIsSettleAccounts()) {
+                wrapper.isNull("arw.amount_cny");
+            } else {
+                wrapper.isNotNull("arw.amount_cny");
+            }
+        }
+
+
         Page<AccountRunningWaterVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<AccountRunningWaterVo> records = page.getRecords();
         //赋值归属公司名称
@@ -206,7 +217,15 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
         if (StringUtils.isEmpty(dto.getCurrency())) {
             throw new ServiceException("币种不能为空");
         }
-        dto.setRate(ExchangeRateUtil.getCnyToCodeRate(dto.getCurrency()));
+
+        //        dto.setRate(ExchangeRateUtil.getCnyToCodeRate(dto.getCurrency()));
+
+        //计算汇率如果有填转人民币金额则反推
+        if (ObjectUtil.isNotEmpty(dto.getAmountCny())) {
+            BigDecimal divide = dto.getAmountCny().divide(dto.getAmount(), 4, RoundingMode.HALF_UP);
+            dto.setRate(divide);
+        }
+
         // 修改账户余额表的余额
         AccountRemainder accountRemainder = accountRemainderService.getOne(q -> q
                 .eq(AccountRemainder::getAccountManagementId, dto.getAccountManagementId())

+ 10 - 0
hx-jxst/src/main/java/com/fjhx/jxst/controller/sales/SalesContractController.java

@@ -1,5 +1,7 @@
 package com.fjhx.jxst.controller.sales;
 
+import com.fjhx.jxst.entity.sales.po.SalesContract;
+import com.fjhx.sale.entity.contract.dto.ContractDto;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.jxst.entity.sales.vo.SalesContractVo;
@@ -49,4 +51,12 @@ public class SalesContractController {
         salesContractService.add(salesContractDto);
     }
 
+    /**
+     * 合同结清
+     */
+    @PostMapping("/settle")
+    public void settle(@RequestBody SalesContractDto dto) {
+        salesContractService.settle(dto);
+    }
+
 }

+ 4 - 0
hx-jxst/src/main/java/com/fjhx/jxst/entity/sales/po/SalesContract.java

@@ -124,5 +124,9 @@ public class SalesContract extends BasePo {
      */
     private String sellAccountOpening;
 
+    /**
+     * 是否结清
+     */
+    private Integer isSettled;
 
 }

+ 10 - 0
hx-jxst/src/main/java/com/fjhx/jxst/entity/sales/vo/SalesContractVo.java

@@ -81,4 +81,14 @@ public class SalesContractVo extends SalesContract {
      */
     private String sellTaxationCode;
 
+    /**
+     * 到账金额
+     */
+    private BigDecimal claimAmount;
+
+    /**
+     * 未到账金额
+     */
+    private BigDecimal notClaimAmount;
+
 }

+ 4 - 0
hx-jxst/src/main/java/com/fjhx/jxst/service/sales/SalesContractService.java

@@ -33,4 +33,8 @@ public interface SalesContractService extends BaseService<SalesContract> {
      */
     void add(SalesContractDto salesContractDto);
 
+    /**
+     * 合同结清
+     */
+    void settle(SalesContractDto dto);
 }

+ 20 - 4
hx-jxst/src/main/java/com/fjhx/jxst/service/sales/impl/SalesContractServiceImpl.java

@@ -27,15 +27,14 @@ import com.fjhx.jxst.entity.sales.vo.SalesContractVo;
 import com.fjhx.jxst.mapper.sales.SalesContractMapper;
 import com.fjhx.jxst.service.sales.SalesContractDetailsService;
 import com.fjhx.jxst.service.sales.SalesContractService;
-import com.fjhx.jxst.utils.CodeEnum;
-import com.fjhx.wms.entity.stock.vo.StockVo;
+import com.ruoyi.common.core.domain.BasePo;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
-import java.math.BigDecimal;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -89,6 +88,10 @@ public class SalesContractServiceImpl extends ServiceImpl<SalesContractMapper, S
         customerService.attributeAssign(records, SalesContractVo::getCustomerId, (item, customer) -> {
             item.setCustomerName(customer.getName());
         });
+
+        //计算未到账金额(未结清金额)
+        records.forEach(item->item.setNotClaimAmount(item.getContractAmount().subtract(item.getClaimAmount())));
+
         return page;
     }
 
@@ -164,4 +167,17 @@ public class SalesContractServiceImpl extends ServiceImpl<SalesContractMapper, S
         salesContractDetailsService.saveBatch(salesContractDetailsList);
     }
 
+    /**
+     * 合同结清
+     */
+    @Override
+    public void settle(SalesContractDto dto) {
+        this.update(q -> q
+                .eq(BasePo::getId, dto.getId())
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+                .set(SalesContract::getIsSettled, 1)
+        );
+    }
+
 }

+ 2 - 2
hx-jxst/src/main/resources/mapper/sales/SalesContractMapper.xml

@@ -15,8 +15,8 @@
             sc.update_user,
             sc.update_time,
             sc.contract_amount,
-            (SELECT sum(unit_price * quantity) FROM sales_contract_details WHERE sales_contract_id = sc.id) contractAmount0,
-            sc.flow_id
+            sc.flow_id,
+            ( SELECT IFNULL( SUM( cc.contract_money ), 0 ) FROM bytesailing_sale.claim_contract cc WHERE cc.contract_id = sc.id ) AS claimAmount
         from sales_contract sc
             ${ew.customSqlSegment}
     </select>

+ 10 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/claim/po/ClaimContract.java

@@ -61,4 +61,14 @@ public class ClaimContract extends BasePo {
      */
     @TableField(exist = false)
     private String userName;
+
+    /**
+     * 换算合同金额
+     */
+    private BigDecimal contractMoney;
+    /**
+     * 换算CNY金额
+     */
+    private BigDecimal moneyCny;
+
 }

+ 8 - 2
hx-sale/src/main/java/com/fjhx/sale/service/claim/impl/ClaimServiceImpl.java

@@ -90,13 +90,19 @@ public class ClaimServiceImpl extends ServiceImpl<ClaimMapper, Claim> implements
         List<ClaimContract> claimContractList = claim.getClaimContractList();
         if (CollectionUtils.isNotEmpty(claim.getClaimContractList())) {
             for (ClaimContract c : claimContractList) {
-                c.setRate(claim.getRate());
+                c.setRate(water.getRate());
                 c.setClaimId(claim.getId());
+
+                //计算转人民币金额,根据流水转人民币的汇率算(没有汇算(流水转人民币金额为空)的跳过)
+                if (ObjectUtils.isNotEmpty(water.getAmountCny())) {
+                    BigDecimal multiply = c.getMoney().multiply(water.getRate());
+                    c.setMoneyCny(multiply);
+                }
             }
             claimContractService.saveBatch(claimContractList);
         }
         //更新流水数据已认领金额
-        if (water.getClaimAmount().add(claim.getAmount()).compareTo(water.getAmount()) == 0) {//如果认领金额=流水金额
+        if (water.getClaimAmount().add(claim.getAmount()).compareTo(water.getAmount()) >= 0) {//如果认领金额>=流水金额
             water.setIsClaim(1);//已认领状态
         } else {
             water.setIsClaim(2);//部分认领