From 8e8473c6835151d974db555c2f7c027c3691de33 Mon Sep 17 00:00:00 2001 From: linfso Date: Mon, 9 Sep 2024 18:46:13 +0800 Subject: [PATCH] md --- .../erp/emis/service/EmisBaseService.java | 6 +++ .../service/impl/EmisWaybillServiceImpl.java | 38 ++++++++++++++++++- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java index 02f1c5399..bd74c7f9a 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java @@ -184,10 +184,16 @@ public class EmisBaseService { @Autowired private EmisCountryAreaMapper emisCountryAreaMapper; + @Autowired + private EmisExchangeRateMapper emisExchangeRateMapper; @Autowired RedissonService redissonService; + public EmisExchangeRate getValidExchangeRate(String from, String to,String rateDate){ + return emisExchangeRateMapper.getValidExchangeRate(from, to,rateDate); + } + /** * 判断获取主单号 * @param billCode diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java index 1dd84fd49..51e6434f1 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java @@ -3011,7 +3011,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb // 记录类型,用于判断是否重复 feeTypeMap.put(feeItem.getFeeCode(), 1); - // 币种进行换算 feeList.add(feeItem); @@ -3020,12 +3019,47 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb } + // 对非人民币重新进行计算费用总额 + BigDecimal realTotalFee = BigDecimal.ZERO; + if(!CollectionUtils.isEmpty(feeList)){ + for (EmisWaybillFeeitem feeItem:feeList) { + // 币种进行换算 + if(!"CNY".equals(feeItem.getCurrency())){ + + Date calcDate = emisWaybill.getSendDate(); + if(calcDate==null){ + calcDate= new Date(); + } + + EmisExchangeRate exchangeRate= getValidExchangeRate(feeItem.getCurrency(), "CNY",DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD,calcDate)); + if(exchangeRate!=null){ + + BigDecimal cnyRealFee = feeItem.getRealFee().multiply( BigDecimal.valueOf( Double.valueOf(exchangeRate.getRate()) ) ); + String feeItemRemark = "汇率:"+exchangeRate.getRate()+","+ cnyRealFee.stripTrailingZeros().toPlainString(); + feeItem.setRemark(feeItemRemark); + realTotalFee=realTotalFee.add(cnyRealFee); + + }else{ + BigDecimal cnyRealFee = feeItem.getRealFee(); + realTotalFee=realTotalFee.add(cnyRealFee); + String feeItemRemark = "汇率:0.0,"+ cnyRealFee.stripTrailingZeros().toPlainString(); + feeItem.setRemark(feeItemRemark); + } + + }else{ + realTotalFee=realTotalFee.add(feeItem.getRealFee()); + } + } + log.info("费用明细:"+JSON.toJSONString(feeList)); + } + // 设置费用明细 emisWaybill.setFeeitemList(feeList); // 币种换算 - emisWaybill.setFreight(BigDecimal.valueOf(totalFee)); +// emisWaybill.setFreight(BigDecimal.valueOf(totalFee)); + emisWaybill.setFreight(BigDecimal.valueOf(realTotalFee)); if(emisWaybill.getFreight().compareTo(BigDecimal.ZERO)==0){ throw new EmisBizError(EmisBizErrorType.CALC_QUOTE_ERROR, "报价未配置");