|
|
@@ -371,11 +371,11 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
finAccBills.setUpdateTime(new Date());
|
|
|
finAccBills.setUpdateUserName(AuthUtil.getUserName());
|
|
|
if ("D".equals(finAccBills.getAccountDc())) {
|
|
|
- if (finAccBills.getAmountDrLoc().compareTo(item.getCurrentStlAmount()) < 0) {
|
|
|
+ if (finAccBills.getAmountDrLoc().abs().compareTo(item.getCurrentStlAmount().abs()) < 0) {
|
|
|
throw new RuntimeException("本次对账金额大于账单应收金额");
|
|
|
}
|
|
|
} else {
|
|
|
- if (finAccBills.getAmountCrLoc().compareTo(item.getCurrentStlAmount()) < 0) {
|
|
|
+ if (finAccBills.getAmountCrLoc().abs().compareTo(item.getCurrentStlAmount().abs()) < 0) {
|
|
|
throw new RuntimeException("本次对账金额大于账单应付金额");
|
|
|
}
|
|
|
}
|
|
|
@@ -383,30 +383,30 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
if ("CNY".equals(item.getCurCode())) {
|
|
|
finAccBills.setReconciliationAmount(finAccBills.getReconciliationAmount().add(item.getCurrentStlAmount()));
|
|
|
if ("D".equals(finAccBills.getAccountDc())) {
|
|
|
- if (finAccBills.getAmountDr().compareTo(finAccBills.getReconciliationAmount()) > 0) {
|
|
|
+ if (finAccBills.getAmountDr().abs().compareTo(finAccBills.getReconciliationAmount().abs()) > 0) {
|
|
|
isChecked = 1;
|
|
|
- } else if (finAccBills.getAmountDr().compareTo(finAccBills.getReconciliationAmount()) == 0) {
|
|
|
+ } else if (finAccBills.getAmountDr().abs().compareTo(finAccBills.getReconciliationAmount().abs()) == 0) {
|
|
|
isChecked = 2;
|
|
|
}
|
|
|
} else {
|
|
|
- if (finAccBills.getAmountCr().compareTo(finAccBills.getReconciliationAmount()) > 0) {
|
|
|
+ if (finAccBills.getAmountCr().abs().compareTo(finAccBills.getReconciliationAmount().abs()) > 0) {
|
|
|
isChecked = 1;
|
|
|
- } else if (finAccBills.getAmountCr().compareTo(finAccBills.getReconciliationAmount()) == 0) {
|
|
|
+ } else if (finAccBills.getAmountCr().abs().compareTo(finAccBills.getReconciliationAmount().abs()) == 0) {
|
|
|
isChecked = 2;
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
finAccBills.setReconciliationAmountUsd(finAccBills.getReconciliationAmountUsd().add(item.getCurrentStlAmount()));
|
|
|
if ("D".equals(finAccBills.getAccountDc())) {
|
|
|
- if (finAccBills.getAmountDrUsd().compareTo(finAccBills.getReconciliationAmountUsd()) > 0) {
|
|
|
+ if (finAccBills.getAmountDrUsd().abs().compareTo(finAccBills.getReconciliationAmountUsd().abs()) > 0) {
|
|
|
isChecked = 1;
|
|
|
- } else if (finAccBills.getAmountDrUsd().compareTo(finAccBills.getReconciliationAmountUsd()) == 0) {
|
|
|
+ } else if (finAccBills.getAmountDrUsd().abs().compareTo(finAccBills.getReconciliationAmountUsd().abs()) == 0) {
|
|
|
isChecked = 2;
|
|
|
}
|
|
|
} else {
|
|
|
- if (finAccBills.getAmountCrUsd().compareTo(finAccBills.getReconciliationAmountUsd()) > 0) {
|
|
|
+ if (finAccBills.getAmountCrUsd().abs().compareTo(finAccBills.getReconciliationAmountUsd().abs()) > 0) {
|
|
|
isChecked = 1;
|
|
|
- } else if (finAccBills.getAmountCrUsd().compareTo(finAccBills.getReconciliationAmountUsd()) == 0) {
|
|
|
+ } else if (finAccBills.getAmountCrUsd().abs().compareTo(finAccBills.getReconciliationAmountUsd().abs()) == 0) {
|
|
|
isChecked = 2;
|
|
|
}
|
|
|
}
|
|
|
@@ -418,7 +418,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
.in(FeeCenter::getAccBillId, finAccBills.getId())
|
|
|
.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(FeeCenter::getAccStatus, 1)
|
|
|
- .apply("amount > reconciliation_amount")
|
|
|
+ .apply("IF( amount < 0, amount < reconciliation_amount, amount > reconciliation_amount )")
|
|
|
.eq(FeeCenter::getIsDeleted, 0));
|
|
|
BigDecimal currentStlAmount = item.getCurrentStlAmount();
|
|
|
for (FeeCenter feeCenter : feeCenters) {
|
|
|
@@ -432,14 +432,18 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
if (currentStlAmount.compareTo(new BigDecimal("0.00")) == 0) {
|
|
|
break;
|
|
|
} else {
|
|
|
- if (feeCenter.getAmount().subtract(feeCenter.getReconciliationAmount()).compareTo(currentStlAmount) > 0) {
|
|
|
+ if (feeCenter.getAmount().abs().subtract(feeCenter.getReconciliationAmount().abs()).compareTo(currentStlAmount.abs()) > 0) {
|
|
|
feeCenter.setReconciliationAmount(feeCenter.getReconciliationAmount().add(currentStlAmount));
|
|
|
currentStlAmount = new BigDecimal("0.00");
|
|
|
- } else if (feeCenter.getAmount().subtract(feeCenter.getReconciliationAmount()).compareTo(currentStlAmount) == 0) {
|
|
|
+ } else if (feeCenter.getAmount().abs().subtract(feeCenter.getReconciliationAmount().abs()).compareTo(currentStlAmount.abs()) == 0) {
|
|
|
feeCenter.setReconciliationAmount(feeCenter.getReconciliationAmount().add(currentStlAmount));
|
|
|
currentStlAmount = new BigDecimal("0.00");
|
|
|
} else {
|
|
|
- currentStlAmount = currentStlAmount.subtract((feeCenter.getAmount().subtract(feeCenter.getReconciliationAmount())));
|
|
|
+ if (new BigDecimal("0.00").compareTo(currentStlAmount) > 0){
|
|
|
+ currentStlAmount = currentStlAmount.add((feeCenter.getAmount().abs().subtract(feeCenter.getReconciliationAmount().abs())).abs());
|
|
|
+ }else{
|
|
|
+ currentStlAmount = currentStlAmount.subtract((feeCenter.getAmount().subtract(feeCenter.getReconciliationAmount())));
|
|
|
+ }
|
|
|
feeCenter.setReconciliationAmount(feeCenter.getAmount());
|
|
|
}
|
|
|
}
|
|
|
@@ -859,30 +863,30 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
finAccBills.setUpdateUserName(AuthUtil.getUserName());
|
|
|
int isChecked = 0;
|
|
|
if ("CNY".equals(item.getCurCode())) {
|
|
|
- if (finAccBills.getReconciliationAmount().compareTo(item.getCurrentStlAmount()) < 0) {
|
|
|
+ if (finAccBills.getReconciliationAmount().abs().compareTo(item.getCurrentStlAmount().abs()) < 0) {
|
|
|
throw new RuntimeException("撤销失败,本次对账金额大于已对账金额");
|
|
|
}
|
|
|
finAccBills.setReconciliationAmount(finAccBills.getReconciliationAmount().subtract(item.getCurrentStlAmount()));
|
|
|
if ("D".equals(finAccBills.getAccountDc())) {
|
|
|
- if (finAccBills.getAmountDr().compareTo(finAccBills.getReconciliationAmount()) > 0) {
|
|
|
+ if (finAccBills.getAmountDr().abs().compareTo(finAccBills.getReconciliationAmount().abs()) > 0) {
|
|
|
isChecked = 1;
|
|
|
}
|
|
|
} else {
|
|
|
- if (finAccBills.getAmountCr().compareTo(finAccBills.getReconciliationAmount()) > 0) {
|
|
|
+ if (finAccBills.getAmountCr().abs().compareTo(finAccBills.getReconciliationAmount().abs()) > 0) {
|
|
|
isChecked = 1;
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- if (finAccBills.getReconciliationAmountUsd().compareTo(item.getCurrentStlAmount()) < 0) {
|
|
|
+ if (finAccBills.getReconciliationAmountUsd().abs().compareTo(item.getCurrentStlAmount().abs()) < 0) {
|
|
|
throw new RuntimeException("撤销失败,本次对账金额大于已对账金额");
|
|
|
}
|
|
|
finAccBills.setReconciliationAmountUsd(finAccBills.getReconciliationAmountUsd().subtract(item.getCurrentStlAmount()));
|
|
|
if ("D".equals(finAccBills.getAccountDc())) {
|
|
|
- if (finAccBills.getAmountDrUsd().compareTo(finAccBills.getReconciliationAmountUsd()) > 0) {
|
|
|
+ if (finAccBills.getAmountDrUsd().abs().compareTo(finAccBills.getReconciliationAmountUsd().abs()) > 0) {
|
|
|
isChecked = 1;
|
|
|
}
|
|
|
} else {
|
|
|
- if (finAccBills.getAmountCrUsd().compareTo(finAccBills.getReconciliationAmountUsd()) > 0) {
|
|
|
+ if (finAccBills.getAmountCrUsd().abs().compareTo(finAccBills.getReconciliationAmountUsd().abs()) > 0) {
|
|
|
isChecked = 1;
|
|
|
}
|
|
|
}
|
|
|
@@ -907,10 +911,10 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
if (currentStlAmount.compareTo(new BigDecimal("0.00")) == 0) {
|
|
|
break;
|
|
|
} else {
|
|
|
- if (feeCenter.getReconciliationAmount().compareTo(currentStlAmount) > 0) {
|
|
|
+ if (feeCenter.getReconciliationAmount().abs().compareTo(currentStlAmount.abs()) > 0) {
|
|
|
feeCenter.setReconciliationAmount(feeCenter.getReconciliationAmount().subtract(currentStlAmount));
|
|
|
currentStlAmount = new BigDecimal("0.00");
|
|
|
- } else if (feeCenter.getReconciliationAmount().compareTo(currentStlAmount) == 0) {
|
|
|
+ } else if (feeCenter.getReconciliationAmount().abs().compareTo(currentStlAmount.abs()) == 0) {
|
|
|
feeCenter.setReconciliationAmount(feeCenter.getReconciliationAmount().subtract(currentStlAmount));
|
|
|
currentStlAmount = new BigDecimal("0.00");
|
|
|
} else {
|
|
|
@@ -1069,8 +1073,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
item.setStlTtlAmount(item.getStlTtlAmount().add(item.getCurrentStlAmount().add(item.getCurrentStlDiscount())));
|
|
|
item.setUnsettledAmount(item.getAmount().subtract(item.getStlTtlAmount()));
|
|
|
if ("D".equals(item.getDc())) {
|
|
|
- if (finAccBills.getStlAmountDr().compareTo(finAccBills.getAmountDr()) > 0 ||
|
|
|
- finAccBills.getStlAmountDrUsd().compareTo(finAccBills.getAmountDrUsd()) > 0
|
|
|
+ if (finAccBills.getStlAmountDr().abs().compareTo(finAccBills.getAmountDr().abs()) > 0 ||
|
|
|
+ finAccBills.getStlAmountDrUsd().abs().compareTo(finAccBills.getAmountDrUsd().abs()) > 0
|
|
|
) {
|
|
|
throw new RuntimeException("结算金额大于账单金额,操作失败");
|
|
|
}
|
|
|
@@ -1088,14 +1092,14 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
finAccBills.setAppliedAmountStlUsd(finAccBills.getAppliedAmountStl().add(item.getCurrentStlAmount()));
|
|
|
}
|
|
|
}
|
|
|
- if (finAccBills.getAmountDr().compareTo(finAccBills.getStlAmountDr()) == 0 &&
|
|
|
- finAccBills.getAmountDrUsd().compareTo(finAccBills.getStlAmountDrUsd()) == 0) {
|
|
|
+ if (finAccBills.getAmountDr().abs().compareTo(finAccBills.getStlAmountDr().abs()) == 0 &&
|
|
|
+ finAccBills.getAmountDrUsd().abs().compareTo(finAccBills.getStlAmountDrUsd().abs()) == 0) {
|
|
|
status = true;
|
|
|
}
|
|
|
}
|
|
|
else if ("C".equals(item.getDc())) {
|
|
|
- if (finAccBills.getStlAmountCr().compareTo(finAccBills.getAmountCr()) > 0 ||
|
|
|
- finAccBills.getStlAmountCrUsd().compareTo(finAccBills.getAmountCrUsd()) > 0
|
|
|
+ if (finAccBills.getStlAmountCr().abs().compareTo(finAccBills.getAmountCr().abs()) > 0 ||
|
|
|
+ finAccBills.getStlAmountCrUsd().abs().compareTo(finAccBills.getAmountCrUsd().abs()) > 0
|
|
|
) {
|
|
|
throw new RuntimeException("结算金额大于账单金额,操作失败");
|
|
|
}
|
|
|
@@ -1113,8 +1117,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
finAccBills.setAppliedAmountStlUsd(finAccBills.getAppliedAmountStlUsd().add(item.getCurrentStlAmount()));
|
|
|
}
|
|
|
}
|
|
|
- if (finAccBills.getAmountCr().compareTo(finAccBills.getStlAmountCr()) == 0 &&
|
|
|
- finAccBills.getAmountCrUsd().compareTo(finAccBills.getStlAmountCrUsd()) == 0) {
|
|
|
+ if (finAccBills.getAmountCr().abs().compareTo(finAccBills.getStlAmountCr().abs()) == 0 &&
|
|
|
+ finAccBills.getAmountCrUsd().abs().compareTo(finAccBills.getStlAmountCrUsd().abs()) == 0) {
|
|
|
status = true;
|
|
|
}
|
|
|
}
|
|
|
@@ -1135,12 +1139,12 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
.eq(FeeCenter::getIsDeleted, 0)
|
|
|
.eq(FeeCenter::getAccBillId, finAccBills.getId())
|
|
|
.eq(FeeCenter::getAccStatus, 1)
|
|
|
- .apply("amount > stl_ttl_amount")
|
|
|
+ .apply("IF( amount < 0, amount < stl_ttl_amount, amount > stl_ttl_amount )")
|
|
|
.orderByDesc(FeeCenter::getCreateTime));
|
|
|
- BigDecimal currentStlAmount = item.getCurrentStlAmount().abs();
|
|
|
+ BigDecimal currentStlAmount = item.getCurrentStlAmount();
|
|
|
BigDecimal stlTtlAmount = feeCenters.stream().map(FeeCenter::getStlTtlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
if (item.getCurrentStlAmount().compareTo(new BigDecimal("0.00")) == 0 ||
|
|
|
- item.getCurrentStlAmount().compareTo(item.getAmount().subtract(stlTtlAmount)) > 0) {
|
|
|
+ item.getCurrentStlAmount().abs().compareTo(item.getAmount().abs().subtract(stlTtlAmount).abs()) > 0) {
|
|
|
throw new RuntimeException("本次结算金额不能为零或大于未结算金额");
|
|
|
}
|
|
|
for (FeeCenter e : feeCenters) {
|
|
|
@@ -1170,13 +1174,13 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
e.setStlByName(detail.getCreateUserName());
|
|
|
if (!ids.isEmpty()) {
|
|
|
// if ("D".equals(e.getDc())) {
|
|
|
- if (e.getAmount().subtract(e.getStlTtlAmount()).compareTo(currentStlAmount) > 0) {
|
|
|
+ if (e.getAmount().abs().subtract(e.getStlTtlAmount().abs()).compareTo(currentStlAmount.abs()) > 0) {
|
|
|
e.setUnsettledAmount(e.getAmount().subtract(e.getStlTtlAmount()).subtract(currentStlAmount));
|
|
|
e.setStlTtlAmount(e.getAmount().subtract(e.getUnsettledAmount()));
|
|
|
// e.setAppliedAmountStl(e.getAmount().subtract(e.getUnsettledAmount()).subtract(e.getAppliedAmountStl()));
|
|
|
e.setAppliedAmountStl(e.getAppliedAmountStl().add(currentStlAmount));
|
|
|
currentStlAmount = new BigDecimal("0.00");
|
|
|
- } else if (e.getAmount().subtract(e.getStlTtlAmount()).compareTo(currentStlAmount) == 0) {
|
|
|
+ } else if (e.getAmount().abs().subtract(e.getStlTtlAmount().abs()).compareTo(currentStlAmount.abs()) == 0) {
|
|
|
e.setUnsettledAmount(new BigDecimal("0.00"));
|
|
|
e.setStlTtlAmount(e.getAmount().subtract(e.getUnsettledAmount()));
|
|
|
// e.setAppliedAmountStl(e.getAmount().subtract(e.getUnsettledAmount()).subtract(e.getAppliedAmountStl()));
|
|
|
@@ -1208,11 +1212,11 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
}
|
|
|
}*/
|
|
|
} else {
|
|
|
- if (e.getAmount().subtract(e.getStlTtlAmount()).compareTo(currentStlAmount) > 0) {
|
|
|
+ if (e.getAmount().abs().subtract(e.getStlTtlAmount().abs()).compareTo(currentStlAmount.abs()) > 0) {
|
|
|
e.setUnsettledAmount(e.getAmount().subtract(e.getStlTtlAmount()).subtract(currentStlAmount));
|
|
|
e.setStlTtlAmount(e.getAmount().subtract(e.getUnsettledAmount()));
|
|
|
currentStlAmount = new BigDecimal("0.00");
|
|
|
- } else if (e.getAmount().subtract(e.getStlTtlAmount()).compareTo(currentStlAmount) == 0) {
|
|
|
+ } else if (e.getAmount().abs().subtract(e.getStlTtlAmount().abs()).compareTo(currentStlAmount.abs()) == 0) {
|
|
|
e.setUnsettledAmount(new BigDecimal("0.00"));
|
|
|
e.setStlTtlAmount(e.getAmount().subtract(e.getUnsettledAmount()));
|
|
|
currentStlAmount = new BigDecimal("0.00");
|
|
|
@@ -1394,12 +1398,12 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
if (finAccBills.getAmountDr().compareTo(new BigDecimal("0.00")) == 0 &&
|
|
|
finAccBills.getAmountDrUsd().compareTo(new BigDecimal("0.00")) == 0) {
|
|
|
finAccBills.setIsCleared(0);
|
|
|
- } else if (finAccBills.getAmountDr().compareTo(new BigDecimal("0.00")) < 0 ||
|
|
|
- finAccBills.getAmountDrUsd().compareTo(new BigDecimal("0.00")) < 0) {
|
|
|
+ } else if (finAccBills.getAmountDr().abs().compareTo(new BigDecimal("0.00")) < 0 ||
|
|
|
+ finAccBills.getAmountDrUsd().abs().compareTo(new BigDecimal("0.00")) < 0) {
|
|
|
throw new RuntimeException("撤销金额大于账单金额,操作失败");
|
|
|
} else {
|
|
|
- if (finAccBills.getAmountDr().compareTo(finAccBills.getStlAmountDr()) == 0 &&
|
|
|
- finAccBills.getAmountDrUsd().compareTo(finAccBills.getStlAmountDrUsd()) == 0) {
|
|
|
+ if (finAccBills.getAmountDr().abs().compareTo(finAccBills.getStlAmountDr().abs()) == 0 &&
|
|
|
+ finAccBills.getAmountDrUsd().abs().compareTo(finAccBills.getStlAmountDrUsd().abs()) == 0) {
|
|
|
status = true;
|
|
|
}
|
|
|
if (status) {
|
|
|
@@ -1428,12 +1432,12 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
if (finAccBills.getAmountCr().compareTo(new BigDecimal("0.00")) == 0 &&
|
|
|
finAccBills.getAmountCrUsd().compareTo(new BigDecimal("0.00")) == 0) {
|
|
|
finAccBills.setIsCleared(0);
|
|
|
- } else if (finAccBills.getAmountCr().compareTo(new BigDecimal("0.00")) < 0 ||
|
|
|
- finAccBills.getAmountCrUsd().compareTo(new BigDecimal("0.00")) < 0) {
|
|
|
+ } else if (finAccBills.getAmountCr().abs().compareTo(new BigDecimal("0.00")) < 0 ||
|
|
|
+ finAccBills.getAmountCrUsd().abs().compareTo(new BigDecimal("0.00")) < 0) {
|
|
|
throw new RuntimeException("撤销金额大于账单金额,操作失败");
|
|
|
} else {
|
|
|
- if (finAccBills.getAmountCr().compareTo(finAccBills.getStlAmountCr()) == 0 &&
|
|
|
- finAccBills.getAmountCrUsd().compareTo(finAccBills.getStlAmountCrUsd()) == 0) {
|
|
|
+ if (finAccBills.getAmountCr().abs().compareTo(finAccBills.getStlAmountCr()) == 0 &&
|
|
|
+ finAccBills.getAmountCrUsd().abs().compareTo(finAccBills.getStlAmountCrUsd()) == 0) {
|
|
|
status = true;
|
|
|
}
|
|
|
if (status) {
|
|
|
@@ -1458,7 +1462,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
.eq(FeeCenter::getAccStatus, 1)
|
|
|
.apply("stl_ttl_amount != 0")
|
|
|
.orderByDesc(FeeCenter::getCreateTime));
|
|
|
- BigDecimal currentStlAmount = item.getCurrentStlAmount().abs();
|
|
|
+ BigDecimal currentStlAmount = item.getCurrentStlAmount();
|
|
|
for (FeeCenter e : feeCenters) {
|
|
|
if (currentStlAmount.compareTo(new BigDecimal("0.00")) == 0) {
|
|
|
break;
|
|
|
@@ -1481,15 +1485,15 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
e.setStlById(0L);
|
|
|
e.setStlByName("");
|
|
|
if (!ids.isEmpty()) {
|
|
|
- if (e.getStlTtlAmount().compareTo(currentStlAmount) > 0) {
|
|
|
+ if (e.getStlTtlAmount().abs().compareTo(currentStlAmount.abs()) > 0) {
|
|
|
e.setStlTtlAmount(e.getStlTtlAmount().subtract(currentStlAmount));
|
|
|
e.setUnsettledAmount(e.getAmount().subtract(e.getStlTtlAmount()));
|
|
|
e.setAppliedAmountStl(e.getAppliedAmountStl().subtract(currentStlAmount));
|
|
|
currentStlAmount = new BigDecimal("0.00");
|
|
|
- } else if (e.getStlTtlAmount().compareTo(currentStlAmount) == 0) {
|
|
|
+ } else if (e.getStlTtlAmount().abs().compareTo(currentStlAmount.abs()) == 0) {
|
|
|
e.setStlTtlAmount(new BigDecimal("0.00"));
|
|
|
e.setUnsettledAmount(e.getAmount().subtract(e.getStlTtlAmount()));
|
|
|
- e.setAppliedAmountStl(e.getAmount().subtract(e.getUnsettledAmount()).subtract(e.getAppliedAmountStl()));
|
|
|
+ e.setAppliedAmountStl(e.getAmount().subtract(e.getAppliedAmountStl()).subtract(currentStlAmount));
|
|
|
currentStlAmount = new BigDecimal("0.00");
|
|
|
} else {
|
|
|
e.setStlTtlAmount(new BigDecimal("0.00"));
|
|
|
@@ -1498,11 +1502,11 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
currentStlAmount = currentStlAmount.subtract(e.getAmount());
|
|
|
}
|
|
|
} else {
|
|
|
- if (e.getStlTtlAmount().compareTo(currentStlAmount) > 0) {
|
|
|
+ if (e.getStlTtlAmount().abs().compareTo(currentStlAmount.abs()) > 0) {
|
|
|
e.setStlTtlAmount(e.getStlTtlAmount().subtract(currentStlAmount));
|
|
|
e.setUnsettledAmount(e.getAmount().subtract(e.getStlTtlAmount()));
|
|
|
currentStlAmount = new BigDecimal("0.00");
|
|
|
- } else if (e.getStlTtlAmount().compareTo(currentStlAmount) == 0) {
|
|
|
+ } else if (e.getStlTtlAmount().abs().compareTo(currentStlAmount.abs()) == 0) {
|
|
|
e.setStlTtlAmount(new BigDecimal("0.00"));
|
|
|
e.setUnsettledAmount(e.getAmount().subtract(e.getStlTtlAmount()));
|
|
|
currentStlAmount = new BigDecimal("0.00");
|
|
|
@@ -1820,25 +1824,25 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
throw new RuntimeException("未找到账单明细,操作失败");
|
|
|
}
|
|
|
if ("CNY".equals(item.getCurCode())) {
|
|
|
- BigDecimal amount = finAccBills.getAppliedAmount().subtract(finAccBills.getAppliedAmountStl());
|
|
|
+ BigDecimal amount = finAccBills.getAppliedAmount().subtract(finAccBills.getAppliedAmountStl().abs());
|
|
|
if ("D".equals(finAccBills.getAccountDc())) {
|
|
|
- if (item.getCurrentStlAmount().compareTo(finAccBills.getAmountDrLoc().subtract(amount).subtract(finAccBills.getStlAmountDrLoc())) > 0) {
|
|
|
+ if (item.getCurrentStlAmount().abs().compareTo(finAccBills.getAmountDrLoc().abs().subtract(amount.abs()).subtract(finAccBills.getStlAmountDrLoc().abs())) > 0) {
|
|
|
throw new RuntimeException("本次申请金额大于未申请金额");
|
|
|
}
|
|
|
} else {
|
|
|
- if (item.getCurrentStlAmount().compareTo(finAccBills.getAmountCrLoc().subtract(amount).subtract(finAccBills.getStlAmountCrLoc())) > 0) {
|
|
|
+ if (item.getCurrentStlAmount().abs().compareTo(finAccBills.getAmountCrLoc().abs().subtract(amount.abs()).subtract(finAccBills.getStlAmountCrLoc().abs())) > 0) {
|
|
|
throw new RuntimeException("本次申请金额大于未申请金额");
|
|
|
}
|
|
|
}
|
|
|
finAccBills.setAppliedAmount(finAccBills.getAppliedAmount().add(item.getCurrentStlAmount()));
|
|
|
} else {
|
|
|
- BigDecimal amount = finAccBills.getAppliedAmountUsd().subtract(finAccBills.getAppliedAmountStlUsd());
|
|
|
+ BigDecimal amount = finAccBills.getAppliedAmountUsd().subtract(finAccBills.getAppliedAmountStlUsd().abs());
|
|
|
if ("D".equals(finAccBills.getAccountDc())) {
|
|
|
- if (item.getCurrentStlAmount().compareTo(finAccBills.getAmountDrLoc().subtract(amount).subtract(finAccBills.getStlAmountDrLoc())) > 0) {
|
|
|
+ if (item.getCurrentStlAmount().abs().compareTo(finAccBills.getAmountDrLoc().abs().subtract(amount.abs()).subtract(finAccBills.getStlAmountDrLoc().abs())) > 0) {
|
|
|
throw new RuntimeException("本次申请金额大于未申请金额");
|
|
|
}
|
|
|
} else {
|
|
|
- if (item.getCurrentStlAmount().compareTo(finAccBills.getAmountCrLoc().subtract(amount).subtract(finAccBills.getStlAmountCrLoc())) > 0) {
|
|
|
+ if (item.getCurrentStlAmount().abs().compareTo(finAccBills.getAmountCrLoc().abs().subtract(amount.abs()).subtract(finAccBills.getStlAmountCrLoc().abs())) > 0) {
|
|
|
throw new RuntimeException("本次申请金额大于未申请金额");
|
|
|
}
|
|
|
}
|
|
|
@@ -1856,7 +1860,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
.eq(FeeCenter::getIsDeleted, 0)
|
|
|
.eq(FeeCenter::getAccBillId, finAccBills.getId())
|
|
|
.eq(FeeCenter::getAccStatus, 1)
|
|
|
- .apply("amount > stl_ttl_amount + applied_amount - applied_amount_stl")
|
|
|
+ .apply("IF( amount < 0, abs(amount) > abs(stl_ttl_amount) + abs(applied_amount) - abs(applied_amount_stl)," +
|
|
|
+ " amount > stl_ttl_amount + applied_amount - applied_amount_stl )")
|
|
|
.orderByDesc(FeeCenter::getCreateTime));
|
|
|
BigDecimal currentStlAmount = item.getCurrentStlAmount();
|
|
|
for (FeeCenter e : feeCenters) {
|
|
|
@@ -1867,14 +1872,14 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
e.setAmount(ObjectUtils.isNotNull(e.getAmount()) ? e.getAmount() : new BigDecimal("0.00"));
|
|
|
e.setUnsettledAmount(ObjectUtils.isNotNull(e.getUnsettledAmount()) ? e.getUnsettledAmount() : new BigDecimal("0.00"));
|
|
|
e.setStlTtlAmount(ObjectUtils.isNotNull(e.getStlTtlAmount()) ? e.getStlTtlAmount() : new BigDecimal("0.00"));
|
|
|
- if (e.getAmount().subtract(e.getAppliedAmount()).subtract(e.getStlTtlAmount()).compareTo(currentStlAmount) > 0) {
|
|
|
+ if (e.getAmount().abs().subtract(e.getAppliedAmount().abs()).subtract(e.getStlTtlAmount().abs()).compareTo(currentStlAmount.abs()) > 0) {
|
|
|
e.setAppliedAmount(e.getAppliedAmount().add(currentStlAmount));
|
|
|
currentStlAmount = new BigDecimal("0.00");
|
|
|
- } else if (e.getAmount().subtract(e.getAppliedAmount()).subtract(e.getStlTtlAmount()).compareTo(currentStlAmount) == 0) {
|
|
|
+ } else if (e.getAmount().abs().subtract(e.getAppliedAmount().abs()).subtract(e.getStlTtlAmount().abs()).compareTo(currentStlAmount.abs()) == 0) {
|
|
|
e.setAppliedAmount(e.getAppliedAmount().add(currentStlAmount));
|
|
|
currentStlAmount = new BigDecimal("0.00");
|
|
|
} else {
|
|
|
- BigDecimal subAmount = e.getAmount().subtract(e.getAppliedAmount());
|
|
|
+ BigDecimal subAmount = e.getAmount().subtract(e.getAppliedAmount().abs());
|
|
|
currentStlAmount = currentStlAmount.subtract(subAmount);
|
|
|
e.setAppliedAmount(e.getAmount());
|
|
|
}
|
|
|
@@ -1920,12 +1925,12 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
throw new RuntimeException("未找到账单明细,操作失败");
|
|
|
}
|
|
|
if ("CNY".equals(item.getCurCode())) {
|
|
|
- if (item.getCurrentStlAmount().compareTo(finAccBills.getAppliedAmount()) > 0) {
|
|
|
+ if (item.getCurrentStlAmount().abs().compareTo(finAccBills.getAppliedAmount().abs()) > 0) {
|
|
|
throw new RuntimeException("本次申请金额大于未申请金额");
|
|
|
}
|
|
|
finAccBills.setAppliedAmount(finAccBills.getAppliedAmount().subtract(item.getCurrentStlAmount()));
|
|
|
} else {
|
|
|
- if (item.getCurrentStlAmount().compareTo(finAccBills.getAppliedAmountUsd()) > 0) {
|
|
|
+ if (item.getCurrentStlAmount().abs().compareTo(finAccBills.getAppliedAmountUsd().abs()) > 0) {
|
|
|
throw new RuntimeException("本次申请金额大于未申请金额");
|
|
|
}
|
|
|
finAccBills.setAppliedAmountUsd(finAccBills.getAppliedAmountUsd().subtract(item.getCurrentStlAmount()));
|
|
|
@@ -1953,10 +1958,10 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
|
|
|
e.setUnsettledAmount(ObjectUtils.isNotNull(e.getUnsettledAmount()) ? e.getUnsettledAmount() : new BigDecimal("0.00"));
|
|
|
e.setStlTtlAmount(ObjectUtils.isNotNull(e.getStlTtlAmount()) ? e.getStlTtlAmount() : new BigDecimal("0.00"));
|
|
|
|
|
|
- if (e.getAppliedAmount().compareTo(currentStlAmount) > 0) {
|
|
|
+ if (e.getAppliedAmount().abs().compareTo(currentStlAmount.abs()) > 0) {
|
|
|
e.setAppliedAmount(e.getAppliedAmount().subtract(currentStlAmount));
|
|
|
currentStlAmount = new BigDecimal("0.00");
|
|
|
- } else if (e.getAppliedAmount().compareTo(currentStlAmount) == 0) {
|
|
|
+ } else if (e.getAppliedAmount().abs().compareTo(currentStlAmount.abs()) == 0) {
|
|
|
e.setAppliedAmount(e.getAppliedAmount().subtract(currentStlAmount));
|
|
|
currentStlAmount = new BigDecimal("0.00");
|
|
|
} else {
|