|
|
@@ -569,59 +569,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
}
|
|
|
if (!list.isEmpty()) {
|
|
|
this.saveOrUpdateBatch(list);
|
|
|
- //应付
|
|
|
- int statusC = 0;
|
|
|
- if (list.stream().anyMatch(e -> "C".equals(e.getDc()))) {
|
|
|
- statusC = 1;
|
|
|
- }
|
|
|
- //应收
|
|
|
- int statusD = 0;
|
|
|
- if (list.stream().anyMatch(e -> "D".equals(e.getDc()))) {
|
|
|
- statusD = 1;
|
|
|
- }
|
|
|
- if (1 == statusD && 0 == statusC) {
|
|
|
- bills.setAccountStatus(1);
|
|
|
- } else if (0 == statusD && 1 == statusC) {
|
|
|
- bills.setAccountStatus(2);
|
|
|
- }
|
|
|
- BigDecimal amountDr;
|
|
|
- BigDecimal amountCr;
|
|
|
- BigDecimal amountProfit;
|
|
|
- BigDecimal amountDrUsd;
|
|
|
- BigDecimal amountCrUsd;
|
|
|
- BigDecimal amountProfitUsd;
|
|
|
- BigDecimal amountDrLoc;
|
|
|
- BigDecimal amountCrLoc;
|
|
|
- BigDecimal amountProfitLoc;
|
|
|
- if ("D".equals(list.get(0).getDc())) {
|
|
|
- amountDr = list.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountDrUsd = list.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountDrLoc = list.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountCr = bills.getAmountCr();
|
|
|
- amountCrUsd = bills.getAmountCrUsd();
|
|
|
- amountCrLoc = bills.getAmountCrLoc();
|
|
|
- } else {
|
|
|
- amountCr = list.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountCrUsd = list.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountCrLoc = list.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountDr = bills.getAmountDr();
|
|
|
- amountDrUsd = bills.getAmountDrUsd();
|
|
|
- amountDrLoc = bills.getAmountDrLoc();
|
|
|
- }
|
|
|
- //利润 = 收 - 付
|
|
|
- amountProfit = amountDr.subtract(amountCr);
|
|
|
- amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
|
|
|
- amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
|
|
|
- bills.setAmountDr(amountDr);
|
|
|
- bills.setAmountCr(amountCr);
|
|
|
- bills.setAmountProfit(amountProfit);
|
|
|
- bills.setAmountDrUsd(amountDrUsd);
|
|
|
- bills.setAmountCrUsd(amountCrUsd);
|
|
|
- bills.setAmountProfitUsd(amountProfitUsd);
|
|
|
- bills.setAmountDrLoc(amountDrLoc);
|
|
|
- bills.setAmountCrLoc(amountCrLoc);
|
|
|
- bills.setAmountProfitLoc(amountProfitLoc);
|
|
|
- billsMapper.updateById(bills);
|
|
|
+ this.updateBills(list, bills, exrateType);
|
|
|
} else {
|
|
|
throw new RuntimeException("导入失败,未查到可用模版信息");
|
|
|
}
|
|
|
@@ -702,54 +650,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
feeCenterList.add(feeCenter);
|
|
|
}
|
|
|
this.saveOrUpdateBatch(feeCenterList);
|
|
|
-
|
|
|
- BigDecimal amountDr;
|
|
|
- BigDecimal amountCr;
|
|
|
- BigDecimal amountProfit;
|
|
|
- BigDecimal amountDrUsd;
|
|
|
- BigDecimal amountCrUsd;
|
|
|
- BigDecimal amountProfitUsd;
|
|
|
- BigDecimal amountDrLoc = new BigDecimal("0.00");
|
|
|
- BigDecimal amountCrLoc = new BigDecimal("0.00");
|
|
|
- BigDecimal amountProfitLoc;
|
|
|
- amountDr = list.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountDrUsd = list.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountCr = list.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountCrUsd = list.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
-
|
|
|
- if (status) {
|
|
|
- //应付
|
|
|
- int statusC = 0;
|
|
|
- if (list.stream().anyMatch(e -> "C".equals(e.getDc()))) {
|
|
|
- statusC = 1;
|
|
|
- }
|
|
|
- //应收
|
|
|
- int statusD = 0;
|
|
|
- if (list.stream().anyMatch(e -> "D".equals(e.getDc()))) {
|
|
|
- statusD = 1;
|
|
|
- }
|
|
|
- if (1 == statusD && 0 == statusC) {
|
|
|
- bills.setAccountStatus(1);
|
|
|
- } else if (0 == statusD && 1 == statusC) {
|
|
|
- bills.setAccountStatus(2);
|
|
|
- } else {
|
|
|
- bills.setAccountStatus(3);
|
|
|
- }
|
|
|
- //利润 = 收 - 付
|
|
|
- amountProfit = amountDr.subtract(amountCr);
|
|
|
- amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
|
|
|
- amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
|
|
|
- bills.setAmountDr(amountDr);
|
|
|
- bills.setAmountCr(amountCr);
|
|
|
- bills.setAmountProfit(amountProfit);
|
|
|
- bills.setAmountDrUsd(amountDrUsd);
|
|
|
- bills.setAmountCrUsd(amountCrUsd);
|
|
|
- bills.setAmountProfitUsd(amountProfitUsd);
|
|
|
- bills.setAmountDrLoc(amountDrLoc);
|
|
|
- bills.setAmountCrLoc(amountCrLoc);
|
|
|
- bills.setAmountProfitLoc(amountProfitLoc);
|
|
|
- billsMapper.updateById(bills);
|
|
|
- }
|
|
|
+ this.updateBills(feeCenterList, bills, exrateType);
|
|
|
} else {
|
|
|
R.fail("请选择明细");
|
|
|
}
|
|
|
@@ -1379,60 +1280,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
list1.add(feeCenter);
|
|
|
}
|
|
|
if (!list1.isEmpty()) {
|
|
|
-
|
|
|
- //应付
|
|
|
- int statusC = 0;
|
|
|
- if (list.stream().anyMatch(e -> "C".equals(e.getDc()))) {
|
|
|
- statusC = 1;
|
|
|
- }
|
|
|
- //应收
|
|
|
- int statusD = 0;
|
|
|
- if (list.stream().anyMatch(e -> "D".equals(e.getDc()))) {
|
|
|
- statusD = 1;
|
|
|
- }
|
|
|
- if (1 == statusD && 0 == statusC) {
|
|
|
- bills.setAccountStatus(1);
|
|
|
- } else if (0 == statusD && 1 == statusC) {
|
|
|
- bills.setAccountStatus(2);
|
|
|
- }
|
|
|
- BigDecimal amountDr;
|
|
|
- BigDecimal amountCr;
|
|
|
- BigDecimal amountProfit;
|
|
|
- BigDecimal amountDrUsd;
|
|
|
- BigDecimal amountCrUsd;
|
|
|
- BigDecimal amountProfitUsd;
|
|
|
- BigDecimal amountDrLoc;
|
|
|
- BigDecimal amountCrLoc;
|
|
|
- BigDecimal amountProfitLoc;
|
|
|
- if ("D".equals(list.get(0).getDc())) {
|
|
|
- amountDr = list.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountDrUsd = list.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountDrLoc = list.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountCr = bills.getAmountCr();
|
|
|
- amountCrUsd = bills.getAmountCrUsd();
|
|
|
- amountCrLoc = bills.getAmountCrLoc();
|
|
|
- } else {
|
|
|
- amountCr = list.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountCrUsd = list.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountCrLoc = list.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountDr = bills.getAmountDr();
|
|
|
- amountDrUsd = bills.getAmountDrUsd();
|
|
|
- amountDrLoc = bills.getAmountDrLoc();
|
|
|
- }
|
|
|
- //利润 = 收 - 付
|
|
|
- amountProfit = amountDr.subtract(amountCr);
|
|
|
- amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
|
|
|
- amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
|
|
|
- bills.setAmountDr(amountDr);
|
|
|
- bills.setAmountCr(amountCr);
|
|
|
- bills.setAmountProfit(amountProfit);
|
|
|
- bills.setAmountDrUsd(amountDrUsd);
|
|
|
- bills.setAmountCrUsd(amountCrUsd);
|
|
|
- bills.setAmountProfitUsd(amountProfitUsd);
|
|
|
- bills.setAmountDrLoc(amountDrLoc);
|
|
|
- bills.setAmountCrLoc(amountCrLoc);
|
|
|
- bills.setAmountProfitLoc(amountProfitLoc);
|
|
|
- billsMapper.updateById(bills);
|
|
|
+ this.updateBills(list1, bills, exrateType);
|
|
|
}
|
|
|
}
|
|
|
if (!list.isEmpty()) {
|
|
|
@@ -1464,10 +1312,22 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
if (billsList.isEmpty()) {
|
|
|
throw new RuntimeException("未查到单据信息");
|
|
|
}
|
|
|
+ List<Long> idList = billsList.stream().map(Bills::getId).collect(Collectors.toList());
|
|
|
+ List<Bills> billsListFD = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
|
|
|
+ .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Bills::getIsDeleted, 0)
|
|
|
+ .in(Bills::getMasterId, billsList.stream().map(Bills::getId).collect(Collectors.toList())));
|
|
|
+ List<FeeCenter> feeCenterListFD = baseMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .in(FeeCenter::getPid, billsListFD.stream().map(Bills::getId).collect(Collectors.toList())));
|
|
|
+ if (!billsListFD.isEmpty()) {
|
|
|
+ idList.addAll(billsListFD.stream().map(Bills::getId).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
List<PreContainers> preContainersList = preContainersService.list(new LambdaQueryWrapper<PreContainers>()
|
|
|
.eq(PreContainers::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(PreContainers::getIsDeleted, 0)
|
|
|
- .apply("find_in_set(pid,'" + billsIds + "')"));
|
|
|
+ .in(PreContainers::getPid, idList));
|
|
|
BFees fees = bFeesService.getOne(new LambdaQueryWrapper<BFees>()
|
|
|
.eq(BFees::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(BFees::getIsDeleted, 0)
|
|
|
@@ -1482,6 +1342,33 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
if (feesD == null) {
|
|
|
throw new RuntimeException("未查到销售价信息,请先维护基础资料");
|
|
|
}
|
|
|
+ BFees feesFjf = bFeesService.getOne(new LambdaQueryWrapper<BFees>()
|
|
|
+ .eq(BFees::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(BFees::getIsDeleted, 0)
|
|
|
+ .eq(BFees::getCode, "FJF"));
|
|
|
+ if (feesFjf == null) {
|
|
|
+ throw new RuntimeException("未查到附加费信息,请先维护基础资料");
|
|
|
+ }
|
|
|
+ String agencyFeeCountWay = sysClient.getParamService("agency.fee.count.way");
|
|
|
+ if (ObjectUtils.isNull(agencyFeeCountWay) || "获取数据失败".equals(agencyFeeCountWay)) {
|
|
|
+ agencyFeeCountWay = "按收入";
|
|
|
+ }
|
|
|
+ String agencyFee;
|
|
|
+ if ("按收入".equals(agencyFeeCountWay)) {
|
|
|
+ String agencyFeeIncomeRatio = sysClient.getParamService("agency.fee.income.ratio");
|
|
|
+ if (ObjectUtils.isNull(agencyFeeIncomeRatio) || "获取数据失败".equals(agencyFeeIncomeRatio)) {
|
|
|
+ throw new RuntimeException("请先维护收入比例");
|
|
|
+ } else {
|
|
|
+ agencyFee = agencyFeeIncomeRatio;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ String agencyFeeBoxNumberRrice = sysClient.getParamService("agency.fee.box.number.price");
|
|
|
+ if (ObjectUtils.isNull(agencyFeeBoxNumberRrice) || "获取数据失败".equals(agencyFeeBoxNumberRrice)) {
|
|
|
+ throw new RuntimeException("请先维护箱数单价");
|
|
|
+ } else {
|
|
|
+ agencyFee = agencyFeeBoxNumberRrice;
|
|
|
+ }
|
|
|
+ }
|
|
|
String deptName = "";
|
|
|
String branchId = AuthUtil.getDeptId();
|
|
|
if (ObjectUtils.isNotNull(branchId)) {
|
|
|
@@ -1490,6 +1377,13 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
deptName = res.getData();
|
|
|
}
|
|
|
}
|
|
|
+ BCorps bCorps = bCorpsService.getOne(new LambdaQueryWrapper<BCorps>()
|
|
|
+ .eq(BCorps::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(BCorps::getIsDeleted, 0)
|
|
|
+ .eq(BCorps::getCode, "ZBYF"));
|
|
|
+ if (bCorps == null) {
|
|
|
+ throw new RuntimeException("基础资料未查到编码为‘ZBYF’往来单位");
|
|
|
+ }
|
|
|
List<FeeCenter> list = new ArrayList<>();
|
|
|
StringBuilder text = new StringBuilder();
|
|
|
for (Bills bills : billsList) {
|
|
|
@@ -1536,11 +1430,151 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
date = bills.getEta();
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
String exrateType = currencyUtils.standardCurrency(branchId);
|
|
|
List<BCurExrate> curExrateList = currencyUtils.obtainRate(date, "1", branchId);
|
|
|
- int count = 1;
|
|
|
List<FeeCenter> list1 = new ArrayList<>();
|
|
|
+ List<FeeCenter> feeCentersFdC = new ArrayList<>();
|
|
|
+ if (!billsListFD.isEmpty()) {
|
|
|
+ List<Bills> billsFd = billsListFD.stream().filter(e -> e.getMasterId().equals(bills.getId())).collect(Collectors.toList());
|
|
|
+ for (Bills item : billsFd) {
|
|
|
+ if (!feeCenterListFD.isEmpty()) {
|
|
|
+ List<FeeCenter> feeCenterSum = new ArrayList<>();
|
|
|
+ List<FeeCenter> feeCenters = feeCenterListFD.stream().filter(e -> e.getPid().equals(item.getId()) &&
|
|
|
+ "D".equals(e.getDc()) && "HYF".equals(e.getFeeCode())).collect(Collectors.toList());
|
|
|
+ if (!feeCenters.isEmpty()) {
|
|
|
+ for (FeeCenter feeCenter : feeCenters) {
|
|
|
+ FeeCenter feeCenterC = new FeeCenter();
|
|
|
+ feeCenterC.setBranchId(item.getBranchId());
|
|
|
+ feeCenterC.setBranchName(item.getBranchName());
|
|
|
+ feeCenterC.setPid(item.getId());
|
|
|
+ feeCenterC.setCntrNo(item.getQuantityCntrTypesDescr());
|
|
|
+ feeCenterC.setBillNo(item.getBillNo());
|
|
|
+ feeCenterC.setBusinessType(item.getBusinessType());
|
|
|
+ feeCenterC.setBillType(item.getBillType());
|
|
|
+ feeCenterC.setBillDate(item.getBillDate());
|
|
|
+ feeCenterC.setBillCorpId(item.getCorpId());
|
|
|
+ feeCenterC.setBillCorpCnName(item.getCorpCnName());
|
|
|
+ feeCenterC.setBillCorpEnName(item.getCorpEnName());
|
|
|
+ feeCenterC.setBillShortName(item.getShortName());
|
|
|
+ feeCenterC.setLineId(item.getLineId());
|
|
|
+ feeCenterC.setLineCnName(item.getLineCnName());
|
|
|
+ feeCenterC.setLineEnName(item.getLineEnName());
|
|
|
+ feeCenterC.setVesselId(item.getVesselId());
|
|
|
+ feeCenterC.setVesselCnName(item.getVesselCnName());
|
|
|
+ feeCenterC.setVesselEnName(item.getVesselEnName());
|
|
|
+ feeCenterC.setVoyageNo(item.getVoyageNo());
|
|
|
+ feeCenterC.setMblno(item.getMblno());
|
|
|
+ feeCenterC.setHblno(item.getHblno());
|
|
|
+ feeCenterC.setEtd(item.getEtd());
|
|
|
+ feeCenterC.setEta(item.getEta());
|
|
|
+ feeCenterC.setPolId(item.getPolId());
|
|
|
+ feeCenterC.setPolCode(item.getPolCode());
|
|
|
+ feeCenterC.setPolCnName(item.getPolCnName());
|
|
|
+ feeCenterC.setPolEnName(item.getPolEnName());
|
|
|
+ feeCenterC.setPodId(item.getPodId());
|
|
|
+ feeCenterC.setPodCode(item.getPodCode());
|
|
|
+ feeCenterC.setPodCnName(item.getPodCnName());
|
|
|
+ feeCenterC.setPodEnName(item.getPodEnName());
|
|
|
+ feeCenterC.setPaymode(item.getMpaymode());
|
|
|
+ feeCenterC.setSort(1);
|
|
|
+ feeCenterC.setFeeId(feeCenter.getId());
|
|
|
+ feeCenterC.setFeeCode(feeCenter.getFeeCode());
|
|
|
+ feeCenterC.setFeeCnName(feeCenter.getFeeCnName());
|
|
|
+ feeCenterC.setFeeEnName(feeCenter.getFeeEnName());
|
|
|
+ feeCenterC.setUnitNo(feeCenter.getUnitNo());
|
|
|
+ feeCenterC.setCurCode(feeCenter.getCurCode());
|
|
|
+ feeCenterC.setExrate(feeCenter.getExrate());
|
|
|
+ feeCenterC.setDc("C");
|
|
|
+ feeCenterC.setCorpType("国内直接客户");
|
|
|
+ feeCenterC.setCorpId(bCorps.getId());
|
|
|
+ feeCenterC.setCorpCnName(bCorps.getCnName());
|
|
|
+ feeCenterC.setCorpEnName(bCorps.getEnName());
|
|
|
+ feeCenterC.setShortName(bCorps.getShortName());
|
|
|
+ feeCenterC.setQuantity(feeCenter.getQuantity());
|
|
|
+ if ("按收入".equals(agencyFeeCountWay)) {
|
|
|
+ feeCenterC.setPrice(feeCenterC.getPrice().multiply(new BigDecimal(agencyFee))
|
|
|
+ .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ } else {
|
|
|
+ feeCenterC.setPrice(feeCenterC.getPrice().subtract(new BigDecimal(agencyFee).multiply(feeCenterC.getQuantity()))
|
|
|
+ .setScale(2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+ feeCenterC.setAmount(feeCenterC.getQuantity().multiply(feeCenterC.getPrice()));
|
|
|
+ feeCenterC.setAmountLoc(feeCenterC.getAmount().multiply(feeCenter.getExrate()));
|
|
|
+ feeCentersFdC.add(feeCenterC);
|
|
|
+ feeCenterSum.add(feeCenterC);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!feeCenterSum.isEmpty()) {
|
|
|
+ this.updateBills(feeCenterSum, item, exrateType);
|
|
|
+ BigDecimal amount = feeCenterSum.stream().map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ FeeCenter feeCenterD = new FeeCenter();
|
|
|
+ feeCenterD.setBranchId(bills.getBranchId());
|
|
|
+ feeCenterD.setBranchName(bills.getBranchName());
|
|
|
+ feeCenterD.setPid(bills.getId());
|
|
|
+ feeCenterD.setCntrNo(bills.getQuantityCntrTypesDescr());
|
|
|
+ feeCenterD.setBillNo(bills.getBillNo());
|
|
|
+ feeCenterD.setBusinessType(bills.getBusinessType());
|
|
|
+ feeCenterD.setBillType(bills.getBillType());
|
|
|
+ feeCenterD.setBillDate(bills.getBillDate());
|
|
|
+ feeCenterD.setBillCorpId(bills.getCorpId());
|
|
|
+ feeCenterD.setBillCorpCnName(bills.getCorpCnName());
|
|
|
+ feeCenterD.setBillCorpEnName(bills.getCorpEnName());
|
|
|
+ feeCenterD.setBillShortName(bills.getShortName());
|
|
|
+ feeCenterD.setLineId(bills.getLineId());
|
|
|
+ feeCenterD.setLineCnName(bills.getLineCnName());
|
|
|
+ feeCenterD.setLineEnName(bills.getLineEnName());
|
|
|
+ feeCenterD.setVesselId(bills.getVesselId());
|
|
|
+ feeCenterD.setVesselCnName(bills.getVesselCnName());
|
|
|
+ feeCenterD.setVesselEnName(bills.getVesselEnName());
|
|
|
+ feeCenterD.setVoyageNo(bills.getVoyageNo());
|
|
|
+ feeCenterD.setMblno(bills.getMblno());
|
|
|
+ feeCenterD.setHblno(bills.getHblno());
|
|
|
+ feeCenterD.setEtd(bills.getEtd());
|
|
|
+ feeCenterD.setEta(bills.getEta());
|
|
|
+ feeCenterD.setPolId(bills.getPolId());
|
|
|
+ feeCenterD.setPolCode(bills.getPolCode());
|
|
|
+ feeCenterD.setPolCnName(bills.getPolCnName());
|
|
|
+ feeCenterD.setPolEnName(bills.getPolEnName());
|
|
|
+ feeCenterD.setPodId(bills.getPodId());
|
|
|
+ feeCenterD.setPodCode(bills.getPodCode());
|
|
|
+ feeCenterD.setPodCnName(bills.getPodCnName());
|
|
|
+ feeCenterD.setPodEnName(bills.getPodEnName());
|
|
|
+ feeCenterD.setPaymode(bills.getMpaymode());
|
|
|
+ feeCenterD.setSort(1);
|
|
|
+ feeCenterD.setFeeId(fees.getId());
|
|
|
+ feeCenterD.setFeeCode(fees.getCode());
|
|
|
+ feeCenterD.setFeeCnName(fees.getCnName());
|
|
|
+ feeCenterD.setFeeEnName(fees.getEnName());
|
|
|
+ feeCenterD.setUnitNo(fees.getUnitNo());
|
|
|
+ feeCenterD.setCurCode(exrateType);
|
|
|
+ feeCenterD.setExrate(new BigDecimal("1"));
|
|
|
+ feeCenterD.setDc("D");
|
|
|
+ feeCenterD.setCorpType("国内直接客户");
|
|
|
+ BCorps corps = bCorpsService.getOne(new LambdaQueryWrapper<BCorps>()
|
|
|
+ .eq(BCorps::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(BCorps::getIsDeleted, 0)
|
|
|
+ .eq(BCorps::getEnName, item.getBranchName()));
|
|
|
+ if (corps == null) {
|
|
|
+ throw new RuntimeException("基础资料未查到往来单位" + bills.getBranchName());
|
|
|
+ }
|
|
|
+ feeCenterD.setCorpId(corps.getId());
|
|
|
+ feeCenterD.setCorpCnName(corps.getCnName());
|
|
|
+ feeCenterD.setCorpEnName(corps.getEnName());
|
|
|
+ feeCenterD.setShortName(corps.getShortName());
|
|
|
+ feeCenterD.setQuantity(new BigDecimal("1"));
|
|
|
+ feeCenterD.setPrice(amount);
|
|
|
+ feeCenterD.setAmount(amount);
|
|
|
+ feeCenterD.setAmountLoc(amount);
|
|
|
+ list.add(feeCenterD);
|
|
|
+ list1.add(feeCenterD);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!feeCentersFdC.isEmpty()) {
|
|
|
+ this.saveBatch(feeCentersFdC);
|
|
|
+ }
|
|
|
+ int count = 1;
|
|
|
for (RouteCostItem items : routeCostItemList) {
|
|
|
if ("DD".equals(bills.getBillType())) {
|
|
|
FeeCenter feeCenter = this.addFeeCenter(bills, "C", count, fees, "船公司", items,
|
|
|
@@ -1571,14 +1605,26 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
list1.add(feeCenter);
|
|
|
count++;
|
|
|
}
|
|
|
- FeeCenter feeCenterD = this.addFeeCenter(bills, "D", count, feesD, "国内直接客户", items,
|
|
|
- curExrateList, preContainers, exrateType, "3");
|
|
|
- if (feeCenterD != null) {
|
|
|
- feeCenterD.setBranchId(branchId);
|
|
|
- feeCenterD.setBranchName(deptName);
|
|
|
- list.add(feeCenterD);
|
|
|
- list1.add(feeCenterD);
|
|
|
- count++;
|
|
|
+ if ("COC".equals(bills.getBoxBelongsTo())) {
|
|
|
+ FeeCenter feeCenterD = this.addFeeCenter(bills, "D", count, feesD, "国内直接客户", items,
|
|
|
+ curExrateList, preContainers, exrateType, "3");
|
|
|
+ if (feeCenterD != null) {
|
|
|
+ feeCenterD.setBranchId(branchId);
|
|
|
+ feeCenterD.setBranchName(deptName);
|
|
|
+ list.add(feeCenterD);
|
|
|
+ list1.add(feeCenterD);
|
|
|
+ count++;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ FeeCenter feeCenter1 = this.addFeeCenter(bills, "C", count, feesFjf, "船公司", items,
|
|
|
+ curExrateList, preContainers, exrateType, "5");
|
|
|
+ if (feeCenter1 != null) {
|
|
|
+ feeCenter1.setBranchId(branchId);
|
|
|
+ feeCenter1.setBranchName(deptName);
|
|
|
+ list.add(feeCenter1);
|
|
|
+ list1.add(feeCenter1);
|
|
|
+ count++;
|
|
|
+ }
|
|
|
}
|
|
|
} else if ("MH".equals(bills.getBillType())) {
|
|
|
throw new RuntimeException("只能提取主单,直单单据成本");
|
|
|
@@ -1596,59 +1642,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
|
|
|
}
|
|
|
if (!list1.isEmpty()) {
|
|
|
- //应付
|
|
|
- int statusC = 0;
|
|
|
- if (list.stream().anyMatch(e -> "C".equals(e.getDc()))) {
|
|
|
- statusC = 1;
|
|
|
- }
|
|
|
- //应收
|
|
|
- int statusD = 0;
|
|
|
- if (list.stream().anyMatch(e -> "D".equals(e.getDc()))) {
|
|
|
- statusD = 1;
|
|
|
- }
|
|
|
- if (1 == statusD && 0 == statusC) {
|
|
|
- bills.setAccountStatus(1);
|
|
|
- } else if (0 == statusD && 1 == statusC) {
|
|
|
- bills.setAccountStatus(2);
|
|
|
- }
|
|
|
- BigDecimal amountDr;
|
|
|
- BigDecimal amountCr;
|
|
|
- BigDecimal amountProfit;
|
|
|
- BigDecimal amountDrUsd;
|
|
|
- BigDecimal amountCrUsd;
|
|
|
- BigDecimal amountProfitUsd;
|
|
|
- BigDecimal amountDrLoc;
|
|
|
- BigDecimal amountCrLoc;
|
|
|
- BigDecimal amountProfitLoc;
|
|
|
- if ("D".equals(list.get(0).getDc())) {
|
|
|
- amountDr = list.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountDrUsd = list.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountDrLoc = list.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountCr = bills.getAmountCr();
|
|
|
- amountCrUsd = bills.getAmountCrUsd();
|
|
|
- amountCrLoc = bills.getAmountCrLoc();
|
|
|
- } else {
|
|
|
- amountCr = list.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountCrUsd = list.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountCrLoc = list.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountDr = bills.getAmountDr();
|
|
|
- amountDrUsd = bills.getAmountDrUsd();
|
|
|
- amountDrLoc = bills.getAmountDrLoc();
|
|
|
- }
|
|
|
- //利润 = 收 - 付
|
|
|
- amountProfit = amountDr.subtract(amountCr);
|
|
|
- amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
|
|
|
- amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
|
|
|
- bills.setAmountDr(amountDr);
|
|
|
- bills.setAmountCr(amountCr);
|
|
|
- bills.setAmountProfit(amountProfit);
|
|
|
- bills.setAmountDrUsd(amountDrUsd);
|
|
|
- bills.setAmountCrUsd(amountCrUsd);
|
|
|
- bills.setAmountProfitUsd(amountProfitUsd);
|
|
|
- bills.setAmountDrLoc(amountDrLoc);
|
|
|
- bills.setAmountCrLoc(amountCrLoc);
|
|
|
- bills.setAmountProfitLoc(amountProfitLoc);
|
|
|
- billsMapper.updateById(bills);
|
|
|
+ this.updateBills(list1, bills, exrateType);
|
|
|
}
|
|
|
}
|
|
|
if (!list.isEmpty()) {
|
|
|
@@ -1663,6 +1657,64 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void updateBills(List<FeeCenter> list, Bills bills, String exrateType) {
|
|
|
+ //应付
|
|
|
+ int statusC = 0;
|
|
|
+ if (list.stream().anyMatch(e -> "C".equals(e.getDc()))) {
|
|
|
+ statusC = 1;
|
|
|
+ }
|
|
|
+ //应收
|
|
|
+ int statusD = 0;
|
|
|
+ if (list.stream().anyMatch(e -> "D".equals(e.getDc()))) {
|
|
|
+ statusD = 1;
|
|
|
+ }
|
|
|
+ if (1 == statusD && 0 == statusC) {
|
|
|
+ bills.setAccountStatus(1);
|
|
|
+ } else if (0 == statusD && 1 == statusC) {
|
|
|
+ bills.setAccountStatus(2);
|
|
|
+ }
|
|
|
+ BigDecimal amountDr;
|
|
|
+ BigDecimal amountCr;
|
|
|
+ BigDecimal amountProfit;
|
|
|
+ BigDecimal amountDrUsd;
|
|
|
+ BigDecimal amountCrUsd;
|
|
|
+ BigDecimal amountProfitUsd;
|
|
|
+ BigDecimal amountDrLoc;
|
|
|
+ BigDecimal amountCrLoc;
|
|
|
+ BigDecimal amountProfitLoc;
|
|
|
+ BigDecimal oceanFreightDr;
|
|
|
+ BigDecimal oceanFreightCr;
|
|
|
+ BigDecimal oceanFreightProfit;
|
|
|
+ amountDr = bills.getAmountDr().add(list.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountDrUsd = bills.getAmountDrUsd().add(list.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountDrLoc = bills.getAmountDrLoc().add(list.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountCr = bills.getAmountCr().add(list.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountCrUsd = bills.getAmountCrUsd().add(list.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountCrLoc = bills.getAmountCrLoc().add(list.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ oceanFreightDr = bills.getOceanFreightDr().add(list.stream().filter(e -> "D".equals(e.getDc()) &&
|
|
|
+ "HYF".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ oceanFreightCr = bills.getOceanFreightCr().add(list.stream().filter(e -> "C".equals(e.getDc()) &&
|
|
|
+ "HYF".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ oceanFreightProfit = oceanFreightDr.subtract(oceanFreightCr);
|
|
|
+ //利润 = 收 - 付
|
|
|
+ amountProfit = amountDr.subtract(amountCr);
|
|
|
+ amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
|
|
|
+ amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
|
|
|
+ bills.setAmountDr(amountDr);
|
|
|
+ bills.setOceanFreightDr(oceanFreightDr);
|
|
|
+ bills.setAmountCr(amountCr);
|
|
|
+ bills.setOceanFreightCr(oceanFreightCr);
|
|
|
+ bills.setAmountProfit(amountProfit);
|
|
|
+ bills.setOceanFreightProfit(oceanFreightProfit);
|
|
|
+ bills.setAmountDrUsd(amountDrUsd);
|
|
|
+ bills.setAmountCrUsd(amountCrUsd);
|
|
|
+ bills.setAmountProfitUsd(amountProfitUsd);
|
|
|
+ bills.setAmountDrLoc(amountDrLoc);
|
|
|
+ bills.setAmountCrLoc(amountCrLoc);
|
|
|
+ bills.setAmountProfitLoc(amountProfitLoc);
|
|
|
+ billsMapper.updateById(bills);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public R quotationImportBatch(String billsIds, String quotationId) {
|
|
|
@@ -1794,59 +1846,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
}
|
|
|
}
|
|
|
if (!list1.isEmpty()) {
|
|
|
- //应付
|
|
|
- int statusC = 0;
|
|
|
- if (list.stream().anyMatch(e -> "C".equals(e.getDc()))) {
|
|
|
- statusC = 1;
|
|
|
- }
|
|
|
- //应收
|
|
|
- int statusD = 0;
|
|
|
- if (list.stream().anyMatch(e -> "D".equals(e.getDc()))) {
|
|
|
- statusD = 1;
|
|
|
- }
|
|
|
- if (1 == statusD && 0 == statusC) {
|
|
|
- bills.setAccountStatus(1);
|
|
|
- } else if (0 == statusD && 1 == statusC) {
|
|
|
- bills.setAccountStatus(2);
|
|
|
- }
|
|
|
- BigDecimal amountDr;
|
|
|
- BigDecimal amountCr;
|
|
|
- BigDecimal amountProfit;
|
|
|
- BigDecimal amountDrUsd;
|
|
|
- BigDecimal amountCrUsd;
|
|
|
- BigDecimal amountProfitUsd;
|
|
|
- BigDecimal amountDrLoc;
|
|
|
- BigDecimal amountCrLoc;
|
|
|
- BigDecimal amountProfitLoc;
|
|
|
- if ("D".equals(list.get(0).getDc())) {
|
|
|
- amountDr = list.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountDrUsd = list.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountDrLoc = list.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountCr = bills.getAmountCr();
|
|
|
- amountCrUsd = bills.getAmountCrUsd();
|
|
|
- amountCrLoc = bills.getAmountCrLoc();
|
|
|
- } else {
|
|
|
- amountCr = list.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountCrUsd = list.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountCrLoc = list.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- amountDr = bills.getAmountDr();
|
|
|
- amountDrUsd = bills.getAmountDrUsd();
|
|
|
- amountDrLoc = bills.getAmountDrLoc();
|
|
|
- }
|
|
|
- //利润 = 收 - 付
|
|
|
- amountProfit = amountDr.subtract(amountCr);
|
|
|
- amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
|
|
|
- amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
|
|
|
- bills.setAmountDr(amountDr);
|
|
|
- bills.setAmountCr(amountCr);
|
|
|
- bills.setAmountProfit(amountProfit);
|
|
|
- bills.setAmountDrUsd(amountDrUsd);
|
|
|
- bills.setAmountCrUsd(amountCrUsd);
|
|
|
- bills.setAmountProfitUsd(amountProfitUsd);
|
|
|
- bills.setAmountDrLoc(amountDrLoc);
|
|
|
- bills.setAmountCrLoc(amountCrLoc);
|
|
|
- bills.setAmountProfitLoc(amountProfitLoc);
|
|
|
- billsMapper.updateById(bills);
|
|
|
+ this.updateBills(list1, bills, exrateType);
|
|
|
}
|
|
|
}
|
|
|
if (!list.isEmpty()) {
|
|
|
@@ -2084,6 +2084,12 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
} else {
|
|
|
feeCenter.setPrice(items.getSalesPrice());
|
|
|
}
|
|
|
+ } else if ("5".equals(type)) {
|
|
|
+ feeCenter.setCorpId(bills.getCarrierId());
|
|
|
+ feeCenter.setCorpCnName(bills.getCarrierShortName());
|
|
|
+ feeCenter.setCorpEnName(bills.getCarrierEnName());
|
|
|
+ feeCenter.setShortName(bills.getCarrierShortName());
|
|
|
+ feeCenter.setPrice(items.getAdditionalFee());
|
|
|
}
|
|
|
feeCenter.setAmount(feeCenter.getPrice().multiply(feeCenter.getQuantity()));
|
|
|
if (ObjectUtils.isNull(feeCenter.getAmount())) {
|