|
|
@@ -170,6 +170,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
bills.setUpdateTime(new Date());
|
|
|
bills.setUpdateUserName(AuthUtil.getUserName());
|
|
|
|
|
|
+ //主单信息同步分单
|
|
|
if ("MM".equals(bills.getBillType())) {
|
|
|
Bills details = baseMapper.selectById(bills.getId());
|
|
|
if (!details.getVesselId().equals(bills.getVesselId()) || !details.getVoyageNo().equals(bills.getVoyageNo())) {
|
|
|
@@ -179,6 +180,56 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
.eq(Bills::getIsDeleted, 0)
|
|
|
.eq(Bills::getMblno, bills.getMblno()));
|
|
|
if (billsList.size() > 0) {
|
|
|
+ for (Bills item : billsList) {
|
|
|
+ item.setEtd(bills.getEtd());
|
|
|
+ item.setVesselId(bills.getVesselId());
|
|
|
+ item.setVesselCnName(bills.getVesselCnName());
|
|
|
+ item.setVesselEnName(bills.getVesselEnName());
|
|
|
+ item.setVoyageNo(bills.getVoyageNo());
|
|
|
+ item.setPolId(bills.getPolId());
|
|
|
+ item.setPolCnName(bills.getPolCnName());
|
|
|
+ item.setPolEnName(bills.getPolEnName());
|
|
|
+ item.setPolCode(bills.getPolCode());
|
|
|
+ item.setPolNamePrint(bills.getPolNamePrint());
|
|
|
+ item.setPodId(bills.getPodId());
|
|
|
+ item.setPodCnName(bills.getPodCnName());
|
|
|
+ item.setPodEnName(bills.getPodEnName());
|
|
|
+ item.setPodNamePrint(bills.getPodNamePrint());
|
|
|
+ item.setPodCode(bills.getPodCode());
|
|
|
+ item.setPlaceReceiptId(bills.getPlaceReceiptId());
|
|
|
+ item.setPlaceReceiptCode(bills.getPlaceReceiptCode());
|
|
|
+ item.setPlaceReceiptName(bills.getPlaceReceiptName());
|
|
|
+ item.setPlaceReceiptNamePrint(bills.getPlaceReceiptNamePrint());
|
|
|
+ item.setPlaceDeliveryId(bills.getPlaceDeliveryId());
|
|
|
+ item.setPlaceDeliveryCode(bills.getPlaceDeliveryCode());
|
|
|
+ item.setPlaceDeliveryName(bills.getPlaceDeliveryName());
|
|
|
+ item.setPlaceDeliveryNamePrint(bills.getPlaceDeliveryNamePrint());
|
|
|
+ item.setDestinationId(bills.getDestinationId());
|
|
|
+ item.setDestinationName(bills.getDestinationName());
|
|
|
+ item.setDestinationCode(bills.getDestinationCode());
|
|
|
+ item.setDestinationNamePrint(bills.getDestinationNamePrint());
|
|
|
+ item.setFinalDestinationId(bills.getFinalDestinationId());
|
|
|
+ item.setFinalDestinationCode(bills.getFinalDestinationCode());
|
|
|
+ item.setFinalDestinationName(bills.getFinalDestinationName());
|
|
|
+ item.setFinalDestinationNamePrint(bills.getFinalDestinationNamePrint());
|
|
|
+ item.setCyId(bills.getCyId());
|
|
|
+ item.setCyCode(bills.getCyCode());
|
|
|
+ item.setCyCnName(bills.getCyCnName());
|
|
|
+ item.setCyEnName(bills.getCyEnName());
|
|
|
+ item.setCyAddress(bills.getCyAddress());
|
|
|
+ item.setCyTel(bills.getCyTel());
|
|
|
+ item.setCyRemarks(bills.getCyRemarks());
|
|
|
+ item.setCyTrailerTime(bills.getCyTrailerTime());
|
|
|
+ item.setCyReturnTime(bills.getCyReturnTime());
|
|
|
+ item.setCarrierId(bills.getCarrierId());
|
|
|
+ item.setCarrierCnName(bills.getCarrierCnName());
|
|
|
+ item.setCarrierEnName(bills.getCarrierEnName());
|
|
|
+ item.setCarrierArgreementNo(bills.getCarrierArgreementNo());
|
|
|
+ item.setBookingDate(bills.getBookingDate());
|
|
|
+ }
|
|
|
+ if (billsList.size() > 0) {
|
|
|
+ this.updateBatchById(billsList);
|
|
|
+ }
|
|
|
List<Long> billIds = billsList.stream().map(Bills::getId).collect(Collectors.toList());
|
|
|
List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
@@ -314,6 +365,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
BigDecimal amountDrLoc = new BigDecimal("0.00");
|
|
|
BigDecimal amountCrLoc = new BigDecimal("0.00");
|
|
|
BigDecimal amountProfitLoc = new BigDecimal("0.00");
|
|
|
+ //应付
|
|
|
if (ObjectUtils.isNotNull(bills.getFeeCenterListC())) {
|
|
|
for (FeeCenter item : bills.getFeeCenterListC()) {
|
|
|
item.setPid(bills.getId());
|
|
|
@@ -363,6 +415,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
}
|
|
|
feeCenterService.submitList(bills.getFeeCenterListC());
|
|
|
}
|
|
|
+ //应收
|
|
|
if (ObjectUtils.isNotNull(bills.getFeeCenterListD())) {
|
|
|
for (FeeCenter item : bills.getFeeCenterListD()) {
|
|
|
item.setPid(bills.getId());
|
|
|
@@ -426,6 +479,80 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
amountDrLoc = amountDrLoc.add(details.stream().map(Bills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
amountCrLoc = amountCrLoc.add(details.stream().map(Bills::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
}
|
|
|
+ } else if ("MH".equals(bills.getBillType()) && ObjectUtils.isNotNull(bills.getId())) {
|
|
|
+ Bills details = baseMapper.selectById(bills.getMasterId());
|
|
|
+ //重新计算主单合计
|
|
|
+ if (details != null) {
|
|
|
+ BigDecimal amountDrM = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountCrM = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountProfitM = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountDrUsdM = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountCrUsdM = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountProfitUsdM = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountDrLocM = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountCrLocM = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountProfitLocM = new BigDecimal("0.00");
|
|
|
+ List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getPid, details.getId()));
|
|
|
+ for (FeeCenter item : feeCenterList) {
|
|
|
+ if ("C".equals(item.getDc())) {
|
|
|
+ if ("USD".equals(item.getCurCode())) {
|
|
|
+ amountCrUsdM = amountCrUsdM.add(item.getAmount());
|
|
|
+ } else if ("CNY".equals(item.getCurCode())) {
|
|
|
+ amountCrM = amountCrM.add(item.getAmount());
|
|
|
+ } else {
|
|
|
+ BigDecimal usd = bCurrencyService.converter(item.getCurCode(), item.getAmount());
|
|
|
+ amountCrUsdM = amountCrUsdM.add(usd);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if ("USD".equals(item.getCurCode())) {
|
|
|
+ amountDrUsdM = amountDrUsdM.add(item.getAmount());
|
|
|
+ } else if ("CNY".equals(item.getCurCode())) {
|
|
|
+ amountDrM = amountDrM.add(item.getAmount());
|
|
|
+ } else {
|
|
|
+ BigDecimal usd = bCurrencyService.converter(item.getCurCode(), item.getAmount());
|
|
|
+ amountDrUsdM = amountDrUsdM.add(usd);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<Bills> billsList = this.list(new LambdaQueryWrapper<Bills>()
|
|
|
+ .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Bills::getIsDeleted, 0)
|
|
|
+ .eq(Bills::getMasterId, details.getId()));
|
|
|
+ List<Bills> billsLists = billsList.stream().filter(e -> !e.getId().equals(bills.getId())).collect(Collectors.toList());
|
|
|
+ if (billsLists.size() > 0) {
|
|
|
+ amountDrM = amountDrM.add(billsLists.stream().map(Bills::getAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountCrM = amountCrM.add(billsLists.stream().map(Bills::getAmountCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountDrUsdM = amountDrUsdM.add(billsLists.stream().map(Bills::getAmountDrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountCrUsdM = amountCrUsdM.add(billsLists.stream().map(Bills::getAmountCrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountDrLocM = amountDrLocM.add(billsLists.stream().map(Bills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountCrLocM = amountCrLocM.add(billsLists.stream().map(Bills::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ }
|
|
|
+ amountDrM = amountDrM.add(amountDr);
|
|
|
+ amountCrM = amountCrM.add(amountCr);
|
|
|
+ amountDrUsdM = amountDrUsdM.add(amountDrUsd);
|
|
|
+ amountCrUsdM = amountCrUsdM.add(amountCrUsd);
|
|
|
+ amountDrLocM = amountDrLocM.add(amountDrLoc);
|
|
|
+ amountCrLocM = amountCrLocM.add(amountCrLoc);
|
|
|
+ //利润 = 收 - 付
|
|
|
+ amountProfitM = amountDrM.subtract(amountCrM);
|
|
|
+ amountProfitUsdM = amountDrUsdM.subtract(amountCrUsdM);
|
|
|
+ amountDrLocM = amountDrLocM.add(bCurrencyService.converterCny("USD", amountDrUsdM)).add(amountDrM);
|
|
|
+ amountCrLocM = amountCrLocM.add(bCurrencyService.converterCny("USD", amountCrUsdM)).add(amountCrM);
|
|
|
+ amountProfitLocM = amountDrLocM.subtract(amountCrLocM);
|
|
|
+ details.setAmountDr(amountDrM);
|
|
|
+ details.setAmountCr(amountCrM);
|
|
|
+ details.setAmountProfit(amountProfitM);
|
|
|
+ details.setAmountDrUsd(amountDrUsdM);
|
|
|
+ details.setAmountCrUsd(amountCrUsdM);
|
|
|
+ details.setAmountProfitUsd(amountProfitUsdM);
|
|
|
+ details.setAmountDrLoc(amountDrLocM);
|
|
|
+ details.setAmountCrLoc(amountCrLocM);
|
|
|
+ details.setAmountProfitLoc(amountProfitLocM);
|
|
|
+ baseMapper.updateById(details);
|
|
|
+ }
|
|
|
}
|
|
|
//利润 = 收 - 付
|
|
|
amountProfit = amountDr.subtract(amountCr);
|
|
|
@@ -575,6 +702,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
}
|
|
|
item.setMasterId(bills.getId());
|
|
|
item.setMasterBillNo(bills.getBillNo());
|
|
|
+ item.setEtd(bills.getEtd());
|
|
|
item.setVesselId(bills.getVesselId());
|
|
|
item.setVesselCnName(bills.getVesselCnName());
|
|
|
item.setVesselEnName(bills.getVesselEnName());
|
|
|
@@ -583,10 +711,28 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
item.setPolCnName(bills.getPolCnName());
|
|
|
item.setPolEnName(bills.getPolEnName());
|
|
|
item.setPolCode(bills.getPolCode());
|
|
|
+ item.setPolNamePrint(bills.getPolNamePrint());
|
|
|
item.setPodId(bills.getPodId());
|
|
|
item.setPodCnName(bills.getPodCnName());
|
|
|
item.setPodEnName(bills.getPodEnName());
|
|
|
+ item.setPodNamePrint(bills.getPodNamePrint());
|
|
|
item.setPodCode(bills.getPodCode());
|
|
|
+ item.setPlaceReceiptId(bills.getPlaceReceiptId());
|
|
|
+ item.setPlaceReceiptCode(bills.getPlaceReceiptCode());
|
|
|
+ item.setPlaceReceiptName(bills.getPlaceReceiptName());
|
|
|
+ item.setPlaceReceiptNamePrint(bills.getPlaceReceiptNamePrint());
|
|
|
+ item.setPlaceDeliveryId(bills.getPlaceDeliveryId());
|
|
|
+ item.setPlaceDeliveryCode(bills.getPlaceDeliveryCode());
|
|
|
+ item.setPlaceDeliveryName(bills.getPlaceDeliveryName());
|
|
|
+ item.setPlaceDeliveryNamePrint(bills.getPlaceDeliveryNamePrint());
|
|
|
+ item.setDestinationId(bills.getDestinationId());
|
|
|
+ item.setDestinationName(bills.getDestinationName());
|
|
|
+ item.setDestinationCode(bills.getDestinationCode());
|
|
|
+ item.setDestinationNamePrint(bills.getDestinationNamePrint());
|
|
|
+ item.setFinalDestinationId(bills.getFinalDestinationId());
|
|
|
+ item.setFinalDestinationCode(bills.getFinalDestinationCode());
|
|
|
+ item.setFinalDestinationName(bills.getFinalDestinationName());
|
|
|
+ item.setFinalDestinationNamePrint(bills.getFinalDestinationNamePrint());
|
|
|
item.setCyId(bills.getCyId());
|
|
|
item.setCyCode(bills.getCyCode());
|
|
|
item.setCyCnName(bills.getCyCnName());
|