|
|
@@ -465,7 +465,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
baseMapper.updateById(agent);
|
|
|
}
|
|
|
}
|
|
|
- if ("MYDL-STL".equals(agent.getBusinessType()) && ObjectUtils.isNotNull(agent.getExchangeRate())) {
|
|
|
+ if ("MYDL-STL".equals(agent.getBusinessType()) && ObjectUtils.isNull(agent.getExchangeRate()) && "录入".equals(agent.getOrderStatus())) {
|
|
|
LocalDate localDate = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
int year = localDate.getYear();
|
|
|
int month = localDate.getMonthValue();
|
|
|
@@ -573,23 +573,25 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
item.setPodEnName(agent.getPodEnName());
|
|
|
item.setPid(agent.getId());
|
|
|
} else {
|
|
|
- item.setStlPid(agent.getId());
|
|
|
- item.setStlExrate(agent.getExchangeRate());
|
|
|
- if (item.getStlExrate().compareTo(item.getDiscountExrate()) < 0) {
|
|
|
- throw new RuntimeException("优惠汇率不能大于结算汇率");
|
|
|
- }
|
|
|
- if ("SFK,WK".contains(item.getFeeCode())) {
|
|
|
- item.setAmount(agent.getExchangeRate().multiply(item.getAmountLoc()).setScale(2, RoundingMode.HALF_UP));
|
|
|
- item.setPrice(item.getAmount());
|
|
|
- }
|
|
|
- if ("YDF".equals(item.getFeeCode())) {
|
|
|
- item.setAmount(agent.getPostElectricFee().divide(new BigDecimal(ydfCount), 2, RoundingMode.HALF_UP));
|
|
|
- item.setPrice(item.getAmount());
|
|
|
- }
|
|
|
- if ("SXF".equals(item.getFeeCode())) {
|
|
|
- item.setAmount(agent.getServiceCharge().divide(new BigDecimal(sxfCount), 2, RoundingMode.HALF_UP));
|
|
|
- item.setPrice(item.getAmount());
|
|
|
+ if ("录入".equals(agent.getOrderStatus())){
|
|
|
+ item.setStlExrate(agent.getExchangeRate());
|
|
|
+ if (item.getStlExrate().compareTo(item.getDiscountExrate()) < 0) {
|
|
|
+ throw new RuntimeException("优惠汇率不能大于结算汇率");
|
|
|
+ }
|
|
|
+ if ("SFK,WK".contains(item.getFeeCode())) {
|
|
|
+ item.setAmount(agent.getExchangeRate().multiply(item.getAmountLoc()).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ item.setPrice(item.getAmount());
|
|
|
+ }
|
|
|
+ if ("YDF".equals(item.getFeeCode())) {
|
|
|
+ item.setAmount(agent.getPostElectricFee().divide(new BigDecimal(ydfCount), 2, RoundingMode.HALF_UP));
|
|
|
+ item.setPrice(item.getAmount());
|
|
|
+ }
|
|
|
+ if ("SXF".equals(item.getFeeCode())) {
|
|
|
+ item.setAmount(agent.getServiceCharge().divide(new BigDecimal(sxfCount), 2, RoundingMode.HALF_UP));
|
|
|
+ item.setPrice(item.getAmount());
|
|
|
+ }
|
|
|
}
|
|
|
+ item.setStlPid(agent.getId());
|
|
|
}
|
|
|
if (item.getId() == null) {
|
|
|
item.setCreateTime(new Date());
|
|
|
@@ -613,29 +615,31 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
if (ObjectUtils.isNull(item.getDiscountExrate())) {
|
|
|
throw new RuntimeException("首款、尾款,手续费优惠汇率不能为空");
|
|
|
}
|
|
|
- if (!"SXF".equals(item.getFeeCode())) {
|
|
|
- BigDecimal amount = item.getAmountLoc().multiply(item.getDiscountExrate());
|
|
|
- item.setProfit(item.getAmount().subtract(amount));
|
|
|
- profit = profit.add(item.getAmount().subtract(amount));
|
|
|
- } else {
|
|
|
- FeeCenter feeCenter = feeCenters.stream().filter(e -> e.getId().equals(item.getSrcItemId())).findFirst().orElse(null);
|
|
|
- if (feeCenter != null) {
|
|
|
- BigDecimal serviceChargeAmount;
|
|
|
- if (ObjectUtils.isNotNull(serviceCharge)) {
|
|
|
- serviceChargeAmount = new BigDecimal("1").divide(new BigDecimal(serviceCharge), serviceCharge.length(), RoundingMode.HALF_UP);
|
|
|
- } else {
|
|
|
- serviceChargeAmount = new BigDecimal("1").divide(new BigDecimal("1000"), serviceCharge.length(), RoundingMode.HALF_UP);
|
|
|
- }
|
|
|
- if (ObjectUtils.isNotNull(item.getDiscountExrate())) {
|
|
|
- BigDecimal amount = feeCenter.getAmountLoc().multiply(item.getDiscountExrate()).multiply(serviceChargeAmount);
|
|
|
- BigDecimal amountSum = item.getAmount().subtract(amount);
|
|
|
- item.setProfit(amountSum);
|
|
|
- profit = profit.add(amountSum);
|
|
|
- } else {
|
|
|
- item.setProfit(new BigDecimal("0.00"));
|
|
|
- profit = profit.add(new BigDecimal("0.00"));
|
|
|
- }
|
|
|
+ if ("录入".equals(agent.getOrderStatus())){
|
|
|
+ if (!"SXF".equals(item.getFeeCode())) {
|
|
|
+ BigDecimal amount = item.getAmountLoc().multiply(item.getDiscountExrate());
|
|
|
+ item.setProfit(item.getAmount().subtract(amount));
|
|
|
+ profit = profit.add(item.getAmount().subtract(amount));
|
|
|
+ } else {
|
|
|
+ FeeCenter feeCenter = feeCenters.stream().filter(e -> e.getId().equals(item.getSrcItemId())).findFirst().orElse(null);
|
|
|
+ if (feeCenter != null) {
|
|
|
+ BigDecimal serviceChargeAmount;
|
|
|
+ if (ObjectUtils.isNotNull(serviceCharge)) {
|
|
|
+ serviceChargeAmount = new BigDecimal("1").divide(new BigDecimal(serviceCharge), serviceCharge.length(), RoundingMode.HALF_UP);
|
|
|
+ } else {
|
|
|
+ serviceChargeAmount = new BigDecimal("1").divide(new BigDecimal("1000"), serviceCharge.length(), RoundingMode.HALF_UP);
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(item.getDiscountExrate())) {
|
|
|
+ BigDecimal amount = feeCenter.getAmountLoc().multiply(item.getDiscountExrate()).multiply(serviceChargeAmount);
|
|
|
+ BigDecimal amountSum = item.getAmount().subtract(amount);
|
|
|
+ item.setProfit(amountSum);
|
|
|
+ profit = profit.add(amountSum);
|
|
|
+ } else {
|
|
|
+ item.setProfit(new BigDecimal("0.00"));
|
|
|
+ profit = profit.add(new BigDecimal("0.00"));
|
|
|
+ }
|
|
|
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -679,20 +683,22 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
item.setPid(agent.getId());
|
|
|
} else {
|
|
|
item.setStlPid(agent.getId());
|
|
|
- item.setStlExrate(agent.getExchangeRate());
|
|
|
+ if ("录入".equals(agent.getOrderStatus())){
|
|
|
+ item.setStlExrate(agent.getExchangeRate());
|
|
|
// item.setExrate(agent.getExchangeRate());
|
|
|
- item.setDiscountExrate(agent.getExchangeRate());
|
|
|
- if ("SFK,WK".contains(item.getFeeCode())) {
|
|
|
- item.setAmount(agent.getExchangeRate().multiply(item.getAmountLoc()).setScale(2, RoundingMode.HALF_UP));
|
|
|
- item.setPrice(agent.getExchangeRate().multiply(item.getAmountLoc()).setScale(2, RoundingMode.HALF_UP));
|
|
|
- }
|
|
|
- if ("YDF".equals(item.getFeeCode())) {
|
|
|
- item.setAmount(agent.getPostElectricFee().divide(new BigDecimal(ydfCount), 2, RoundingMode.HALF_UP));
|
|
|
- item.setPrice(item.getAmount());
|
|
|
- }
|
|
|
- if ("SXF".equals(item.getFeeCode())) {
|
|
|
- item.setAmount(agent.getServiceCharge().divide(new BigDecimal(sxfCount), 2, RoundingMode.HALF_UP));
|
|
|
- item.setPrice(item.getAmount());
|
|
|
+ item.setDiscountExrate(agent.getExchangeRate());
|
|
|
+ if ("SFK,WK".contains(item.getFeeCode())) {
|
|
|
+ item.setAmount(agent.getExchangeRate().multiply(item.getAmountLoc()).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ item.setPrice(agent.getExchangeRate().multiply(item.getAmountLoc()).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+ if ("YDF".equals(item.getFeeCode())) {
|
|
|
+ item.setAmount(agent.getPostElectricFee().divide(new BigDecimal(ydfCount), 2, RoundingMode.HALF_UP));
|
|
|
+ item.setPrice(item.getAmount());
|
|
|
+ }
|
|
|
+ if ("SXF".equals(item.getFeeCode())) {
|
|
|
+ item.setAmount(agent.getServiceCharge().divide(new BigDecimal(sxfCount), 2, RoundingMode.HALF_UP));
|
|
|
+ item.setPrice(item.getAmount());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
if (item.getId() == null) {
|
|
|
@@ -2809,10 +2815,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
if (feeCenterListD.isEmpty()) {
|
|
|
throw new RuntimeException("未找到应收费用明细");
|
|
|
}
|
|
|
- BigDecimal amount = new BigDecimal("0.00");
|
|
|
- for (FeeCenter item : feeCenterListD){
|
|
|
- amount = amount.add(item.getAmountLoc().multiply(item.getStlExrate()));
|
|
|
- }
|
|
|
+ BigDecimal amount = feeCenterListD.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
BigDecimal amountD = feeCenterListD.stream().map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
if (amount.compareTo(amountD) != 0) {
|
|
|
return R.data("实收未全部到账是否继续确认付款");
|