|
|
@@ -63,6 +63,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.ZoneId;
|
|
|
@@ -901,8 +902,6 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
|
|
|
this.updateById(finPeriod);
|
|
|
return R.data(finPeriod);
|
|
|
}
|
|
|
-
|
|
|
- @Override
|
|
|
public FinPeriod detail(FinPeriod finPeriod) {
|
|
|
FinPeriod detail = baseMapper.selectById(finPeriod.getId());
|
|
|
if (detail != null) {
|
|
|
@@ -1033,7 +1032,7 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
|
|
|
}
|
|
|
if (1 == item.getIsCorp() || 1 == item.getIsDept() || 1 == item.getIsEmpl()) {
|
|
|
List<FinGenlegCalc> finGenlegCalcs = finGenlegCalcList.stream()
|
|
|
- .filter(e -> e.getAccId().equals(item.getId()) && e.getCurCode().equals(item.getCurCode())).collect(Collectors.toList());
|
|
|
+ .filter(e -> e.getAccId().equals(item.getId()) && e.getAccCode().equals(item.getCode())).collect(Collectors.toList());
|
|
|
if (finGenlegCalcs.isEmpty()) {
|
|
|
throw new RuntimeException("未查到科目:" + item.getCnName() + "项目总账信息");
|
|
|
}
|
|
|
@@ -1092,9 +1091,9 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
|
|
|
BigDecimal amountDrUsdNew = periodExchangeRate.getExrate().multiply(calc.getAmountDrUsd());
|
|
|
BigDecimal amountDrUsdSubtract = calc.getAmountDr().subtract(amountDrUsdNew);
|
|
|
if (new BigDecimal("0.00").compareTo(amountDrUsdSubtract) != 0) {
|
|
|
- finVouchersItems.setAmountDrUsd(amountDrUsdSubtract);
|
|
|
- finVouchersItems.setAmountDr(finVouchersItems.getAmountDrUsd().multiply(periodExchangeRate.getExrate()));
|
|
|
- finVouchersItems.setAmountDrLoc(finVouchersItems.getAmountDrUsd().multiply(periodExchangeRate.getExrate()));
|
|
|
+ finVouchersItems.setAmountDrUsd(amountDrUsdSubtract.divide(periodExchangeRate.getExrate(), RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ finVouchersItems.setAmountDr(amountDrUsdSubtract);
|
|
|
+ finVouchersItems.setAmountDrLoc(amountDrUsdSubtract);
|
|
|
finVouchersItems.setAmountCrUsd(new BigDecimal("0.00"));
|
|
|
finVouchersItems.setAmountCr(new BigDecimal("0.00"));
|
|
|
finVouchersItems.setAmountCrLoc(new BigDecimal("0.00"));
|
|
|
@@ -1105,9 +1104,9 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
|
|
|
BigDecimal amountCrUsdNew = periodExchangeRate.getExrate().multiply(calc.getAmountCrUsd());
|
|
|
BigDecimal amountCrUsdSubtract = calc.getAmountCr().subtract(amountCrUsdNew);
|
|
|
if (new BigDecimal("0.00").compareTo(amountCrUsdSubtract) != 0) {
|
|
|
- finVouchersItems.setAmountCrUsd(amountCrUsdSubtract);
|
|
|
- finVouchersItems.setAmountCr(finVouchersItems.getAmountCrUsd().multiply(periodExchangeRate.getExrate()));
|
|
|
- finVouchersItems.setAmountCrLoc(finVouchersItems.getAmountCrUsd().multiply(periodExchangeRate.getExrate()));
|
|
|
+ finVouchersItems.setAmountCrUsd(amountCrUsdSubtract.divide(periodExchangeRate.getExrate(), RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ finVouchersItems.setAmountCr(amountCrUsdSubtract);
|
|
|
+ finVouchersItems.setAmountCrLoc(amountCrUsdSubtract);
|
|
|
finVouchersItems.setAmountDrUsd(new BigDecimal("0.00"));
|
|
|
finVouchersItems.setAmountDr(new BigDecimal("0.00"));
|
|
|
finVouchersItems.setAmountDrLoc(new BigDecimal("0.00"));
|
|
|
@@ -1115,10 +1114,6 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
- finVouchersItems.setAmountDrLoc(ObjectUtils.isNull(finVouchersItems.getAmountDr()) ? new BigDecimal("0") : finVouchersItems.getAmountDr()
|
|
|
- .add((ObjectUtils.isNull(finVouchersItems.getAmountDrUsd()) ? new BigDecimal("0") : finVouchersItems.getAmountDrUsd())).multiply(periodExchangeRate.getExrate()));
|
|
|
- finVouchersItems.setAmountCrLoc(ObjectUtils.isNull(finVouchersItems.getAmountCr()) ? new BigDecimal("0") : finVouchersItems.getAmountCr()
|
|
|
- .add((ObjectUtils.isNull(finVouchersItems.getAmountCrUsd()) ? new BigDecimal("0") : finVouchersItems.getAmountCrUsd())).multiply(periodExchangeRate.getExrate()));
|
|
|
finVouchersItemsList.add(finVouchersItems);
|
|
|
}
|
|
|
} else {
|
|
|
@@ -1200,10 +1195,6 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- finVouchersItems.setAmountDrLoc(ObjectUtils.isNull(finVouchersItems.getAmountDr()) ? new BigDecimal("0") : finVouchersItems.getAmountDr()
|
|
|
- .add((ObjectUtils.isNull(finVouchersItems.getAmountDrUsd()) ? new BigDecimal("0") : finVouchersItems.getAmountDrUsd())).multiply(periodExchangeRate.getExrate()));
|
|
|
- finVouchersItems.setAmountCrLoc(ObjectUtils.isNull(finVouchersItems.getAmountCr()) ? new BigDecimal("0") : finVouchersItems.getAmountCr()
|
|
|
- .add((ObjectUtils.isNull(finVouchersItems.getAmountCrUsd()) ? new BigDecimal("0") : finVouchersItems.getAmountCrUsd())).multiply(periodExchangeRate.getExrate()));
|
|
|
finVouchersItemsList.add(finVouchersItems);
|
|
|
}
|
|
|
}
|
|
|
@@ -1244,9 +1235,9 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
|
|
|
BigDecimal amountDrUsdNew = periodExchangeRate.getExrate().multiply(finGenleg.getAmountDrUsd());
|
|
|
BigDecimal amountDrUsdSubtract = finGenleg.getAmountDr().subtract(amountDrUsdNew);
|
|
|
if (new BigDecimal("0.00").compareTo(amountDrUsdSubtract) != 0) {
|
|
|
- finVouchersItems.setAmountDrUsd(amountDrUsdSubtract);
|
|
|
- finVouchersItems.setAmountDr(finVouchersItems.getAmountDrUsd().multiply(periodExchangeRate.getExrate()));
|
|
|
- finVouchersItems.setAmountDrLoc(finVouchersItems.getAmountDrUsd().multiply(periodExchangeRate.getExrate()));
|
|
|
+ finVouchersItems.setAmountDrUsd(amountDrUsdSubtract.divide(periodExchangeRate.getExrate(), RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ finVouchersItems.setAmountDr(amountDrUsdSubtract);
|
|
|
+ finVouchersItems.setAmountDrLoc(amountDrUsdSubtract);
|
|
|
finVouchersItems.setAmountCrUsd(new BigDecimal("0.00"));
|
|
|
finVouchersItems.setAmountCr(new BigDecimal("0.00"));
|
|
|
finVouchersItems.setAmountCrLoc(new BigDecimal("0.00"));
|
|
|
@@ -1257,9 +1248,9 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
|
|
|
BigDecimal amountCrUsdNew = periodExchangeRate.getExrate().multiply(finGenleg.getAmountCrUsd());
|
|
|
BigDecimal amountCrUsdSubtract = finGenleg.getAmountCr().subtract(amountCrUsdNew);
|
|
|
if (new BigDecimal("0.00").compareTo(amountCrUsdSubtract) != 0) {
|
|
|
- finVouchersItems.setAmountCrUsd(amountCrUsdSubtract);
|
|
|
- finVouchersItems.setAmountCr(finVouchersItems.getAmountCrUsd().multiply(periodExchangeRate.getExrate()));
|
|
|
- finVouchersItems.setAmountCrLoc(finVouchersItems.getAmountCrUsd().multiply(periodExchangeRate.getExrate()));
|
|
|
+ finVouchersItems.setAmountCrUsd(amountCrUsdSubtract.divide(periodExchangeRate.getExrate(), RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ finVouchersItems.setAmountCr(amountCrUsdSubtract);
|
|
|
+ finVouchersItems.setAmountCrLoc(amountCrUsdSubtract);
|
|
|
finVouchersItems.setAmountDrUsd(new BigDecimal("0.00"));
|
|
|
finVouchersItems.setAmountDr(new BigDecimal("0.00"));
|
|
|
finVouchersItems.setAmountDrLoc(new BigDecimal("0.00"));
|
|
|
@@ -1267,10 +1258,6 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
- finVouchersItems.setAmountDrLoc(ObjectUtils.isNull(finVouchersItems.getAmountDr()) ? new BigDecimal("0") : finVouchersItems.getAmountDr()
|
|
|
- .add((ObjectUtils.isNull(finVouchersItems.getAmountDrUsd()) ? new BigDecimal("0") : finVouchersItems.getAmountDrUsd())).multiply(periodExchangeRate.getExrate()));
|
|
|
- finVouchersItems.setAmountCrLoc(ObjectUtils.isNull(finVouchersItems.getAmountCr()) ? new BigDecimal("0") : finVouchersItems.getAmountCr()
|
|
|
- .add((ObjectUtils.isNull(finVouchersItems.getAmountCrUsd()) ? new BigDecimal("0") : finVouchersItems.getAmountCrUsd())).multiply(periodExchangeRate.getExrate()));
|
|
|
finVouchersItemsList.add(finVouchersItems);
|
|
|
}
|
|
|
} else {
|
|
|
@@ -1356,10 +1343,6 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- finVouchersItems.setAmountDrLoc(ObjectUtils.isNull(finVouchersItems.getAmountDr()) ? new BigDecimal("0") : finVouchersItems.getAmountDr()
|
|
|
- .add((ObjectUtils.isNull(finVouchersItems.getAmountDrUsd()) ? new BigDecimal("0") : finVouchersItems.getAmountDrUsd())).multiply(periodExchangeRate.getExrate()));
|
|
|
- finVouchersItems.setAmountCrLoc(ObjectUtils.isNull(finVouchersItems.getAmountCr()) ? new BigDecimal("0") : finVouchersItems.getAmountCr()
|
|
|
- .add((ObjectUtils.isNull(finVouchersItems.getAmountCrUsd()) ? new BigDecimal("0") : finVouchersItems.getAmountCrUsd())).multiply(periodExchangeRate.getExrate()));
|
|
|
finVouchersItemsList.add(finVouchersItems);
|
|
|
}
|
|
|
}
|
|
|
@@ -1367,42 +1350,18 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
|
|
|
} else {
|
|
|
throw new RuntimeException("未找到对应科目信息");
|
|
|
}
|
|
|
-
|
|
|
- BigDecimal amountDrCNY = new BigDecimal("0.00");
|
|
|
- BigDecimal amountCrCNY = new BigDecimal("0.00");
|
|
|
- BigDecimal amountDrUSD = new BigDecimal("0.00");
|
|
|
- BigDecimal amountCrUSD = new BigDecimal("0.00");
|
|
|
BigDecimal amountDrLoc = new BigDecimal("0.00");
|
|
|
BigDecimal amountCrLoc = new BigDecimal("0.00");
|
|
|
- amountDrCNY = amountDrCNY.add(finVouchersItemsList.stream()
|
|
|
- .filter(e -> "CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
|
|
|
- .map(FinVouchersItems::getAmountDr).filter(ObjectUtils::isNotNull).
|
|
|
- reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- amountCrCNY = amountCrCNY.add(finVouchersItemsList.stream()
|
|
|
- .filter(e -> "CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
|
|
|
- .map(FinVouchersItems::getAmountCr).filter(ObjectUtils::isNotNull)
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- amountDrUSD = amountDrUSD.add(finVouchersItemsList.stream()
|
|
|
- .filter(e -> !"CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
|
|
|
- .map(FinVouchersItems::getAmountDrUsd)
|
|
|
- .filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- amountCrUSD = amountCrUSD.add(finVouchersItemsList.stream()
|
|
|
- .filter(e -> !"CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
|
|
|
- .map(FinVouchersItems::getAmountCrUsd)
|
|
|
- .filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
amountDrLoc = amountDrLoc.add(finVouchersItemsList.stream()
|
|
|
- .filter(e -> "D".equals(e.getDc()))
|
|
|
.map(FinVouchersItems::getAmountDrLoc)
|
|
|
.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
amountCrLoc = amountCrLoc.add(finVouchersItemsList.stream()
|
|
|
- .filter(e -> "C".equals(e.getDc()))
|
|
|
.map(FinVouchersItems::getAmountCrLoc)
|
|
|
.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
finVouchers.setDescr(periodVouchersTemplate.getDescr());
|
|
|
if (finVouchersItemsList.stream().anyMatch(e -> !"CNY".equals(e.getCurCode()))) {
|
|
|
finVouchers.setIsForeign(1);
|
|
|
}
|
|
|
-
|
|
|
FinVouchersItems finVouchersItems = new FinVouchersItems();
|
|
|
finVouchersItems.setCreateTime(new Date());
|
|
|
finVouchersItems.setCreateUser(AuthUtil.getUserId());
|
|
|
@@ -1438,18 +1397,17 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
|
|
|
if (!"CNY".equals(accounts.getCurCode())) {
|
|
|
throw new RuntimeException("科目:" + periodVouchersTemplate.getPlAccCnm() + "币别不是CNY");
|
|
|
}
|
|
|
-
|
|
|
BigDecimal subtract = amountDrLoc.subtract(amountCrLoc);
|
|
|
if ("D".equals(accounts.getDc())) {
|
|
|
- finVouchersItems.setAmountDr(subtract);
|
|
|
- finVouchersItems.setAmountDrLoc(subtract);
|
|
|
+ finVouchersItems.setAmountDr(subtract.abs());
|
|
|
+ finVouchersItems.setAmountDrLoc(subtract.abs());
|
|
|
finVouchersItems.setAmountCr(new BigDecimal("0.00"));
|
|
|
finVouchersItems.setAmountDrUsd(new BigDecimal("0.00"));
|
|
|
finVouchersItems.setAmountCrUsd(new BigDecimal("0.00"));
|
|
|
finVouchersItems.setAmountCrLoc(new BigDecimal("0.00"));
|
|
|
} else {
|
|
|
- finVouchersItems.setAmountCr(subtract);
|
|
|
- finVouchersItems.setAmountCrLoc(subtract);
|
|
|
+ finVouchersItems.setAmountCr(subtract.abs());
|
|
|
+ finVouchersItems.setAmountCrLoc(subtract.abs());
|
|
|
finVouchersItems.setAmountCrUsd(new BigDecimal("0.00"));
|
|
|
finVouchersItems.setAmountDr(new BigDecimal("0.00"));
|
|
|
finVouchersItems.setAmountDrUsd(new BigDecimal("0.00"));
|
|
|
@@ -1476,12 +1434,28 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
|
|
|
}
|
|
|
}*/
|
|
|
finVouchersItemsList.add(finVouchersItems);
|
|
|
- finVouchers.setAmountDr(amountDrCNY.add(finVouchersItems.getAmountDr()));
|
|
|
- finVouchers.setAmountCr(amountCrCNY.add(finVouchersItems.getAmountCr()));
|
|
|
- finVouchers.setAmountDrUsd(amountDrUSD.add(finVouchersItems.getAmountDrUsd()));
|
|
|
- finVouchers.setAmountCrUsd(amountCrUSD.add(finVouchersItems.getAmountCrUsd()));
|
|
|
- finVouchers.setAmountDrLoc(amountDrLoc.add(finVouchersItems.getAmountDrLoc()));
|
|
|
- finVouchers.setAmountCrLoc(amountCrLoc.add(finVouchersItems.getAmountCrLoc()));
|
|
|
+ finVouchers.setAmountDr(finVouchersItemsList.stream()
|
|
|
+ .filter(e -> "CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
|
|
|
+ .map(FinVouchersItems::getAmountDr).filter(ObjectUtils::isNotNull).
|
|
|
+ reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ finVouchers.setAmountCr(finVouchersItemsList.stream()
|
|
|
+ .filter(e -> "CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
|
|
|
+ .map(FinVouchersItems::getAmountCr).filter(ObjectUtils::isNotNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ finVouchers.setAmountDrUsd(finVouchersItemsList.stream()
|
|
|
+ .filter(e -> !"CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
|
|
|
+ .map(FinVouchersItems::getAmountDrUsd)
|
|
|
+ .filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ finVouchers.setAmountCrUsd(finVouchersItemsList.stream()
|
|
|
+ .filter(e -> !"CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
|
|
|
+ .map(FinVouchersItems::getAmountCrUsd)
|
|
|
+ .filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ finVouchers.setAmountDrLoc(finVouchersItemsList.stream()
|
|
|
+ .map(FinVouchersItems::getAmountDrLoc)
|
|
|
+ .filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ finVouchers.setAmountCrLoc(finVouchersItemsList.stream()
|
|
|
+ .map(FinVouchersItems::getAmountCrLoc)
|
|
|
+ .filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
finVouchers.setFinVouchersItemsList(finVouchersItemsList);
|
|
|
return R.data(finVouchers);
|
|
|
}
|