|
|
@@ -33,6 +33,8 @@ import org.springblade.los.basic.business.entity.BusinessType;
|
|
|
import org.springblade.los.basic.business.service.IBusinessTypeService;
|
|
|
import org.springblade.los.basic.corps.entity.BCorpsBank;
|
|
|
import org.springblade.los.basic.corps.service.IBCorpsBankService;
|
|
|
+import org.springblade.los.basic.cur.entity.BCurExrate;
|
|
|
+import org.springblade.los.basic.cur.mapper.CurExrateMapper;
|
|
|
import org.springblade.los.basic.fees.entity.BFees;
|
|
|
import org.springblade.los.basic.fees.service.IBFeesService;
|
|
|
import org.springblade.los.billno.entity.BusinessBillNo;
|
|
|
@@ -141,6 +143,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
|
|
|
private final IPreContainersService preContainersService;
|
|
|
|
|
|
+ private final CurExrateMapper curExrateMapper;
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<AgentVO> selectAgentPage(IPage<AgentVO> page, AgentVO agent) {
|
|
|
return page.setRecords(baseMapper.selectAgentPage(page, agent));
|
|
|
@@ -158,10 +162,51 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
.eq(FeeCenter::getIsDeleted, 0)
|
|
|
.eq(FeeCenter::getPid, agent.getId()));
|
|
|
if (!feeCenterList.isEmpty()) {
|
|
|
+ List<Record> recordList = new ArrayList<>();
|
|
|
+ List<Long> ids = new ArrayList<>();
|
|
|
List<FeeCenter> feeCenterListD = feeCenterList.stream().filter(e -> "D".equals(e.getDc())).collect(Collectors.toList());
|
|
|
- detail.setFeeCenterListD(!feeCenterListD.isEmpty() ? feeCenterListD : new ArrayList<>());
|
|
|
+ if (!feeCenterListD.isEmpty()) {
|
|
|
+ detail.setFeeCenterListD(feeCenterListD);
|
|
|
+ ids.addAll(feeCenterListD.stream().map(FeeCenter::getStlPid).distinct().collect(Collectors.toList()));
|
|
|
+ } else {
|
|
|
+ detail.setFeeCenterListD(new ArrayList<>());
|
|
|
+ }
|
|
|
List<FeeCenter> feeCenterListC = feeCenterList.stream().filter(e -> "C".equals(e.getDc())).collect(Collectors.toList());
|
|
|
- detail.setFeeCenterListC(!feeCenterListC.isEmpty() ? feeCenterListC : new ArrayList<>());
|
|
|
+ if (!feeCenterListC.isEmpty()) {
|
|
|
+ detail.setFeeCenterListC(feeCenterListC);
|
|
|
+ ids.addAll(feeCenterListC.stream().map(FeeCenter::getStlPid).distinct().collect(Collectors.toList()));
|
|
|
+ } else {
|
|
|
+ detail.setFeeCenterListC(new ArrayList<>());
|
|
|
+ }
|
|
|
+ List<Agent> agentList = baseMapper.selectList(new LambdaQueryWrapper<Agent>()
|
|
|
+ .eq(Agent::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Agent::getIsDeleted, 0)
|
|
|
+ .in(Agent::getId, ids));
|
|
|
+ if (!agentList.isEmpty()) {
|
|
|
+ for (Agent item : agentList) {
|
|
|
+ Record record = new Record();
|
|
|
+ record.setPid(agent.getId());
|
|
|
+ record.setSrcId(item.getId());
|
|
|
+ record.setAmount(item.getActualAmount());
|
|
|
+ record.setDate(item.getBusinessDate());
|
|
|
+ record.setBillNo(item.getBillNoJoin());
|
|
|
+ record.setRemarks(item.getRemarks());
|
|
|
+ record.setCustomsDeclarationNo(item.getDeclarationNumber());
|
|
|
+ if ("D".equals(item.getDc())) {
|
|
|
+ record.setStatus("付汇已结算");
|
|
|
+ record.setSrcType("STL-D-FH");
|
|
|
+ } else {
|
|
|
+ record.setStatus("购汇已结算");
|
|
|
+ record.setSrcType("STL-C-GH");
|
|
|
+ }
|
|
|
+ recordList.add(record);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!recordList.isEmpty()) {
|
|
|
+ detail.setRecordRateList(recordList);
|
|
|
+ } else {
|
|
|
+ detail.setRecordRateList(new ArrayList<>());
|
|
|
+ }
|
|
|
} else {
|
|
|
detail.setFeeCenterListD(new ArrayList<>());
|
|
|
detail.setFeeCenterListC(new ArrayList<>());
|
|
|
@@ -174,7 +219,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
List<FinStlBillsItems> finStlBillsItemsList = finStlBillsItemsService.list(new LambdaQueryWrapper<FinStlBillsItems>()
|
|
|
.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(FinStlBillsItems::getIsDeleted, 0)
|
|
|
- .eq(FinStlBillsItems::getBillNo, agent.getBusinessNo()));
|
|
|
+ .apply("find_in_set(" + detail.getContractNo() + ",bill_no)"));
|
|
|
if (!finStlBillsItemsList.isEmpty()) {
|
|
|
List<Long> ids = finStlBillsItemsList.stream().map(FinStlBillsItems::getPid).collect(Collectors.toList());
|
|
|
List<FinStlBills> finStlBillsList = finStlBillsService.list(new LambdaQueryWrapper<FinStlBills>()
|
|
|
@@ -212,7 +257,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
record.setBank(item.getBankAccountBank());
|
|
|
record.setPid(agent.getId());
|
|
|
record.setSrcId(item.getId());
|
|
|
- record.setAmount(item.getAmountDr());
|
|
|
+ record.setAmount(item.getAmountCr());
|
|
|
record.setDate(item.getBillDate());
|
|
|
record.setBillNo(item.getBillNo());
|
|
|
record.setRemarks(item.getRemarks());
|
|
|
@@ -222,36 +267,10 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
}
|
|
|
detail.setRecordListC(recordList);
|
|
|
}
|
|
|
- List<FinStlBills> recordRateList = finStlBillsList.stream().filter(e -> "0".equals(e.getWhetherManual())).collect(Collectors.toList());
|
|
|
- if (!recordRateList.isEmpty()) {
|
|
|
- List<Record> recordList = new ArrayList<>();
|
|
|
- for (FinStlBills item : recordRateList) {
|
|
|
- Record record = new Record();
|
|
|
- record.setAccount(item.getBankAccountName());
|
|
|
- record.setAccountNumber(item.getBankAccountNo());
|
|
|
- record.setBank(item.getBankAccountBank());
|
|
|
- record.setPid(agent.getId());
|
|
|
- record.setSrcId(item.getId());
|
|
|
- record.setAmount(item.getAmountDr());
|
|
|
- record.setDate(item.getBillDate());
|
|
|
- record.setBillNo(item.getBillNo());
|
|
|
- record.setRemarks(item.getRemarks());
|
|
|
- if ("D".equals(item.getDc())) {
|
|
|
- record.setStatus("付汇已结算");
|
|
|
- record.setSrcType("STL-D-FH");
|
|
|
- } else {
|
|
|
- record.setStatus("购汇已结算");
|
|
|
- record.setSrcType("STL-C-GH");
|
|
|
- }
|
|
|
- recordList.add(record);
|
|
|
- }
|
|
|
- detail.setRecordRateList(recordList);
|
|
|
- }
|
|
|
}
|
|
|
} else {
|
|
|
detail.setRecordListD(new ArrayList<>());
|
|
|
detail.setRecordListC(new ArrayList<>());
|
|
|
- detail.setRecordRateList(new ArrayList<>());
|
|
|
}
|
|
|
List<FinInvoicesItems> finInvoicesItemsList = finInvoicesItemsService.list(new LambdaQueryWrapper<FinInvoicesItems>()
|
|
|
.eq(FinInvoicesItems::getTenantId, AuthUtil.getTenantId())
|
|
|
@@ -362,6 +381,15 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
this.saveOrUpdate(agent);
|
|
|
if (!"MYDL-STL".equals(agent.getBusinessType())) {
|
|
|
if (ObjectUtils.isNotNull(agent.getAgentItemsList()) && !agent.getAgentItemsList().isEmpty()) {
|
|
|
+ String billNo = agent.getAgentItemsList().stream().map(AgentItems::getBillNo).filter(Objects::nonNull)
|
|
|
+ .distinct().collect(Collectors.joining(","));
|
|
|
+ agent.setBillNoJoin(billNo);
|
|
|
+ String boxNoJoin = agent.getAgentItemsList().stream().map(AgentItems::getBoxNo).filter(Objects::nonNull)
|
|
|
+ .distinct().collect(Collectors.joining(","));
|
|
|
+ agent.setBoxNoJoin(boxNoJoin);
|
|
|
+ String orderNoJoin = agent.getAgentItemsList().stream().map(AgentItems::getOrderNo).filter(Objects::nonNull)
|
|
|
+ .distinct().collect(Collectors.joining(","));
|
|
|
+ agent.setOrderNoJoin(orderNoJoin);
|
|
|
for (AgentItems item : agent.getAgentItemsList()) {
|
|
|
if (item.getId() == null) {
|
|
|
item.setPid(agent.getId());
|
|
|
@@ -410,8 +438,53 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
filesCenterService.saveOrUpdateBatch(agent.getFilesCenterList());
|
|
|
}
|
|
|
}
|
|
|
+ if ("MYDL-STL".equals(agent.getBusinessType())) {
|
|
|
+ LocalDate localDate = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
+ int year = localDate.getYear();
|
|
|
+ int month = localDate.getMonthValue();
|
|
|
+ int day = localDate.getDayOfMonth();
|
|
|
+ LambdaQueryWrapper<BCurExrate> lambdaQueryWrapper = new LambdaQueryWrapper<BCurExrate>()
|
|
|
+ .eq(BCurExrate::getCode, "USD")
|
|
|
+ .eq(BCurExrate::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(BCurExrate::getIsDeleted, 0)
|
|
|
+ .eq(BCurExrate::getExrateYear, year)
|
|
|
+ .eq(BCurExrate::getExrateMonth, month)
|
|
|
+ .eq(BCurExrate::getExrateDay, day)
|
|
|
+ .eq(BCurExrate::getType, "日汇率");
|
|
|
+ BCurExrate bCurExrate = curExrateMapper.selectOne(lambdaQueryWrapper);
|
|
|
+ if ("D".equals(agent.getDc())) {
|
|
|
+ if (bCurExrate == null) {
|
|
|
+ throw new RuntimeException("未找到" + year + "年-" + month + "月-" + day + "日实收汇率");
|
|
|
+ }
|
|
|
+ agent.setExchangeRate(bCurExrate.getExrateReceipts());
|
|
|
+ } else {
|
|
|
+ if (bCurExrate == null) {
|
|
|
+ throw new RuntimeException("未找到" + year + "年-" + month + "月-" + day + "日实付汇率");
|
|
|
+ }
|
|
|
+ agent.setExchangeRate(bCurExrate.getExratePayment());
|
|
|
+ }
|
|
|
+ String postElectricFee = sysClient.getParamServiceByDept("post.electric.fee", AuthUtil.getTenantId(), AuthUtil.getDeptId());
|
|
|
+ if (ObjectUtils.isNotNull(postElectricFee)) {
|
|
|
+ BigDecimal postElectricFeeAmount = new BigDecimal(postElectricFee);
|
|
|
+ agent.setPostElectricFee(postElectricFeeAmount);
|
|
|
+ } else {
|
|
|
+ agent.setPostElectricFee(new BigDecimal("0"));
|
|
|
+ }
|
|
|
+ }
|
|
|
List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
if (ObjectUtils.isNotNull(agent.getFeeCenterListC()) && !agent.getFeeCenterListC().isEmpty()) {
|
|
|
+ long ydfCount = 0L;
|
|
|
+ long sxfCount = 0L;
|
|
|
+ if ("MYDL-STL".equals(agent.getBusinessType())) {
|
|
|
+ String billNo = agent.getFeeCenterListC().stream().map(FeeCenter::getMblno).filter(Objects::nonNull)
|
|
|
+ .distinct().collect(Collectors.joining(","));
|
|
|
+ agent.setBillNoJoin(billNo);
|
|
|
+ agent.setPaymentInUsd(agent.getFeeCenterListC().stream().filter(e -> "SFK,WK".contains(e.getFeeCode()))
|
|
|
+ .map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ agent.setActualAmount(agent.getExchangeRate().multiply(agent.getPaymentInUsd()));
|
|
|
+ ydfCount = agent.getFeeCenterListC().stream().filter(e -> "YDF".equals(e.getFeeCode())).count();
|
|
|
+ sxfCount = agent.getFeeCenterListC().stream().filter(e -> "SXF".equals(e.getFeeCode())).count();
|
|
|
+ }
|
|
|
for (FeeCenter item : agent.getFeeCenterListC()) {
|
|
|
if (!"MYDL-STL".equals(agent.getBusinessType())) {
|
|
|
item.setBusinessType(agent.getBusinessType());
|
|
|
@@ -433,6 +506,14 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
item.setPid(agent.getId());
|
|
|
} else {
|
|
|
item.setStlPid(agent.getId());
|
|
|
+ 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) {
|
|
|
item.setCreateTime(new Date());
|
|
|
@@ -449,8 +530,36 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
}
|
|
|
}
|
|
|
feeCenterList.addAll(agent.getFeeCenterListC());
|
|
|
+ List<FeeCenter> feeCenters = agent.getFeeCenterListC().stream().filter(e -> "SFK,WK".contains(e.getFeeCode()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ BigDecimal profit = new BigDecimal("0.00");
|
|
|
+ for (FeeCenter item : feeCenters) {
|
|
|
+ if (ObjectUtils.isNull(item.getDiscountExrate())) {
|
|
|
+ throw new RuntimeException("首款、尾款优惠汇率不能为空");
|
|
|
+ }
|
|
|
+ BigDecimal amount = item.getAmountLoc().multiply(item.getDiscountExrate());
|
|
|
+ item.setProfit(item.getAmount().subtract(amount));
|
|
|
+ profit = profit.add(item.getAmount().subtract(amount));
|
|
|
+ }
|
|
|
+ agent.setProfit(profit);
|
|
|
}
|
|
|
if (ObjectUtils.isNotNull(agent.getFeeCenterListD()) && !agent.getFeeCenterListD().isEmpty()) {
|
|
|
+ long ydfCount = 0L;
|
|
|
+ long sxfCount = 0L;
|
|
|
+ if ("MYDL-STL".equals(agent.getBusinessType())) {
|
|
|
+ String billNo = agent.getFeeCenterListD().stream().map(FeeCenter::getMblno).filter(Objects::nonNull)
|
|
|
+ .distinct().collect(Collectors.joining(","));
|
|
|
+ if (ObjectUtils.isNull(agent.getBillNoJoin())) {
|
|
|
+ agent.setBillNoJoin(billNo);
|
|
|
+ } else {
|
|
|
+ agent.setBillNoJoin(agent.getBillNoJoin() + "," + billNo);
|
|
|
+ }
|
|
|
+ agent.setPaymentInUsd(agent.getFeeCenterListD().stream().filter(e -> "SFK,WK".contains(e.getFeeCode()))
|
|
|
+ .map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ agent.setActualAmount(agent.getExchangeRate().multiply(agent.getPaymentInUsd()));
|
|
|
+ ydfCount = agent.getFeeCenterListD().stream().filter(e -> "YDF".equals(e.getFeeCode())).count();
|
|
|
+ sxfCount = agent.getFeeCenterListD().stream().filter(e -> "SXF".equals(e.getFeeCode())).count();
|
|
|
+ }
|
|
|
for (FeeCenter item : agent.getFeeCenterListD()) {
|
|
|
if (!"MYDL-STL".equals(agent.getBusinessType())) {
|
|
|
item.setBusinessType(agent.getBusinessType());
|
|
|
@@ -471,6 +580,14 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
item.setPid(agent.getId());
|
|
|
} else {
|
|
|
item.setStlPid(agent.getId());
|
|
|
+ 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) {
|
|
|
item.setCreateTime(new Date());
|
|
|
@@ -491,7 +608,21 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
if (!feeCenterList.isEmpty()) {
|
|
|
feeCenterService.saveOrUpdateBatch(feeCenterList);
|
|
|
}
|
|
|
-
|
|
|
+ if ("MYDL-STL".equals(agent.getBusinessType())) {
|
|
|
+ String serviceCharge = sysClient.getParamServiceByDept("service.charge", AuthUtil.getTenantId(), AuthUtil.getDeptId());
|
|
|
+ if (ObjectUtils.isNotNull(serviceCharge)) {
|
|
|
+ BigDecimal serviceChargeAmount = new BigDecimal("1").divide(new BigDecimal(serviceCharge), serviceCharge.length(), RoundingMode.HALF_UP);
|
|
|
+ BigDecimal amount = serviceChargeAmount.multiply(agent.getActualAmount());
|
|
|
+ if (amount.compareTo(new BigDecimal("1000")) > 0) {
|
|
|
+ agent.setServiceCharge(new BigDecimal("1000"));
|
|
|
+ } else {
|
|
|
+ agent.setServiceCharge(amount);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ agent.setServiceCharge(new BigDecimal("0.00"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.saveOrUpdate(agent);
|
|
|
return R.data(agent);
|
|
|
}
|
|
|
|
|
|
@@ -897,9 +1028,15 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
if (!feeCenters.isEmpty()) {
|
|
|
BigDecimal amountWk = feeCenters.stream().map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
BigDecimal amount = detail.getGoodsValue().subtract(detail.getPrepaidAmount());
|
|
|
+ BigDecimal thisSettlementAmount = agent.getAgentItemsRList().stream().map(AgentItemsR::getThisSettlementAmount)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
if (amount.compareTo(amountWk) == 0) {
|
|
|
throw new RuntimeException("尾款剩余生成金额为零,生成失败");
|
|
|
}
|
|
|
+ BigDecimal sub = detail.getGoodsValue().subtract(detail.getPrepaidAmount()).subtract(amountWk);
|
|
|
+ if (thisSettlementAmount.compareTo(sub) > 0) {
|
|
|
+ throw new RuntimeException("本次生成金额大于剩余金额,剩余未生成金额:" + sub);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
@@ -966,38 +1103,51 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
if (feeCenterList.isEmpty()) {
|
|
|
throw new RuntimeException("未找到费用明细");
|
|
|
}
|
|
|
- Agent detail = baseMapper.selectById(feeCenterList.get(0).getPid());
|
|
|
- if (detail == null) {
|
|
|
+ String billNo = feeCenterList.stream().map(FeeCenter::getBillNo).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
|
|
|
+ String mblno = feeCenterList.stream().map(FeeCenter::getMblno).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
|
|
|
+ List<Agent> agentList = baseMapper.selectList(new LambdaQueryWrapper<Agent>()
|
|
|
+ .eq(Agent::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Agent::getIsDeleted, 0)
|
|
|
+ .apply("find_in_set(contract_no,'" + billNo + "')"));
|
|
|
+// Agent detail = baseMapper.selectById(feeCenterList.get(0).getPid());
|
|
|
+ if (agentList.isEmpty()) {
|
|
|
throw new RuntimeException("未查到贸易代理单据信息");
|
|
|
}
|
|
|
+ List<Long> agentIdList = agentList.stream().map(Agent::getId).distinct().collect(Collectors.toList());
|
|
|
BigDecimal firstPaidInPayment = feeCenterList.stream().filter(e -> "SFK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- if (new BigDecimal("0").compareTo(firstPaidInPayment) != 0) {
|
|
|
- if (firstPaidInPayment.compareTo(detail.getPrepaidAmount()) != 0) {
|
|
|
- throw new RuntimeException("结算金额与首付款金额不一致,确认收款失败");
|
|
|
- }
|
|
|
- detail.setFirstPaidInPayment(firstPaidInPayment);
|
|
|
- detail.setFirstPaidInPaymentDate(date);
|
|
|
- detail.setOrderStatus("部分货款");
|
|
|
- detail.setWhetherReceivedDownPayments("部分货款");
|
|
|
- }
|
|
|
BigDecimal finalPaymentReceived = feeCenterList.stream().filter(e -> "WK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- if (new BigDecimal("0").compareTo(finalPaymentReceived) != 0) {
|
|
|
- if (detail.getFinalPaymentReceived().add(finalPaymentReceived).compareTo(detail.getFinalPaymentReceivable()) > 0) {
|
|
|
- throw new RuntimeException("实收金额大于应收金额");
|
|
|
- }
|
|
|
- detail.setFinalPaymentReceived(detail.getFinalPaymentReceived().add(finalPaymentReceived));
|
|
|
- detail.setFinalPaymentReceivedDate(date);
|
|
|
- detail.setOrderStatus("已收货款");
|
|
|
- if (detail.getFinalPaymentReceived().add(finalPaymentReceived).compareTo(detail.getFinalPaymentReceivable()) == 0) {
|
|
|
- detail.setWhetherReceivedDownPayments("已收货款");
|
|
|
+ for (Agent item : agentList) {
|
|
|
+ if (new BigDecimal("0").compareTo(firstPaidInPayment) != 0) {
|
|
|
+ BigDecimal amount = feeCenterList.stream().filter(e -> "SFK".equals(e.getFeeCode()) && item.getContractNo().equals(e.getBillNo()))
|
|
|
+ .map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ if (amount.compareTo(item.getPrepaidAmount()) != 0) {
|
|
|
+ throw new RuntimeException("结算金额与首付款金额不一致,确认收款失败");
|
|
|
+ }
|
|
|
+ item.setFirstPaidInPayment(amount);
|
|
|
+ item.setFirstPaidInPaymentDate(date);
|
|
|
+ item.setOrderStatus("部分货款");
|
|
|
+ item.setWhetherReceivedDownPayments("部分货款");
|
|
|
+ }
|
|
|
+ if (new BigDecimal("0").compareTo(finalPaymentReceived) != 0) {
|
|
|
+ BigDecimal amount = feeCenterList.stream().filter(e -> "WK".equals(e.getFeeCode()) && item.getContractNo().equals(e.getBillNo()))
|
|
|
+ .map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ if (item.getFinalPaymentReceived().add(amount).compareTo(item.getFinalPaymentReceivable()) > 0) {
|
|
|
+ throw new RuntimeException("实收金额大于应收金额");
|
|
|
+ }
|
|
|
+ item.setFinalPaymentReceived(item.getFinalPaymentReceived().add(amount));
|
|
|
+ item.setFinalPaymentReceivedDate(date);
|
|
|
+ item.setOrderStatus("已收货款");
|
|
|
+ if (item.getFinalPaymentReceived().add(amount).compareTo(item.getFinalPaymentReceivable()) == 0) {
|
|
|
+ item.setWhetherReceivedDownPayments("已收货款");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
List<AgentItems> agentItemsList = agentItemsService.list(new LambdaQueryWrapper<AgentItems>()
|
|
|
.eq(AgentItems::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(AgentItems::getIsDeleted, 0)
|
|
|
- .eq(AgentItems::getPid, feeCenterList.get(0).getPid()));
|
|
|
+ .in(AgentItems::getPid, agentIdList));
|
|
|
if (!agentItemsList.isEmpty()) {
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
Date now = new Date();
|
|
|
@@ -1022,7 +1172,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
|
|
|
.eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(AdvanceCharge::getIsDeleted, 0)
|
|
|
- .eq(AdvanceCharge::getCorpId, detail.getDomesticConsigneeId()));
|
|
|
+ .eq(AdvanceCharge::getCorpId, agentList.get(0).getDomesticConsigneeId()));
|
|
|
if (advanceCharge != null) {
|
|
|
advanceCharge.setAdvancePaymentBalance(advanceCharge.getAdvancePaymentBalance().add(advanceChargeAmount));
|
|
|
if (new BigDecimal("0").compareTo(advanceChargeAmount) < 0) {
|
|
|
@@ -1036,7 +1186,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(FinAccBills::getIsDeleted, 0)
|
|
|
- .eq(FinAccBills::getBusinessBillId, detail.getId())
|
|
|
+ .in(FinAccBills::getBusinessBillId, agentIdList)
|
|
|
.eq(FinAccBills::getAccountType, "LOCAL-D"));
|
|
|
List<FinAccBills> finAccBills = new ArrayList<>();
|
|
|
List<FinStlBillsItems> stlBillsItemsList = new ArrayList<>();
|
|
|
@@ -1157,8 +1307,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
stlBillsItems.setCreateDeptName(deptName);
|
|
|
}
|
|
|
stlBillsItems.setLineNo(1);
|
|
|
- stlBillsItems.setBusinessType(detail.getBusinessType());
|
|
|
- stlBillsItems.setBillNo(detail.getBusinessNo());
|
|
|
+ stlBillsItems.setBusinessType(agentList.get(0).getBusinessType());
|
|
|
+ stlBillsItems.setBillNo(billNo);
|
|
|
stlBillsItems.setBillDate(date);
|
|
|
stlBillsItems.setAccountDate(data.getAccountDate());
|
|
|
stlBillsItems.setAccountYear(year);
|
|
|
@@ -1249,17 +1399,17 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
finStlBills.setCreateDeptName(deptName);
|
|
|
}
|
|
|
finStlBills.setBusinessType("STL");
|
|
|
- finStlBills.setCorpId(detail.getCorpId());
|
|
|
- finStlBills.setCorpCnName(detail.getCorpName());
|
|
|
- finStlBills.setBusinessTypes(detail.getBusinessType());
|
|
|
- finStlBills.setBusinessNo(detail.getBusinessNo());
|
|
|
- finStlBills.setDeptId(detail.getCreateDept());
|
|
|
- finStlBills.setDeptName(detail.getCreateDeptName());
|
|
|
+ finStlBills.setCorpId(agentList.get(0).getCorpId());
|
|
|
+ finStlBills.setCorpCnName(agentList.get(0).getCorpName());
|
|
|
+ finStlBills.setBusinessTypes(agentList.get(0).getBusinessType());
|
|
|
+ finStlBills.setBusinessNo(billNo);
|
|
|
+ finStlBills.setDeptId(agentList.get(0).getCreateDept());
|
|
|
+ finStlBills.setDeptName(agentList.get(0).getCreateDeptName());
|
|
|
finStlBills.setOperatorId(AuthUtil.getUserId());
|
|
|
finStlBills.setOperatorName(AuthUtil.getUserName());
|
|
|
finStlBills.setDc("D");
|
|
|
finStlBills.setSettlementType("D");
|
|
|
- finStlBills.setMblno(detail.getContractNo());
|
|
|
+ finStlBills.setMblno(mblno);
|
|
|
finStlBills.setStatus(3);
|
|
|
finStlBills.setIsCleared(1);
|
|
|
finStlBills.setAmountDr(stlBillsItemsList.stream().map(FinStlBillsItems::getCurrentStlAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
@@ -1269,7 +1419,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
List<BCorpsBank> corpsBankList = bCorpsBankService.list(new LambdaQueryWrapper<BCorpsBank>()
|
|
|
.eq(BCorpsBank::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(BCorpsBank::getIsDeleted, 0)
|
|
|
- .eq(BCorpsBank::getPid, detail.getCorpId()));
|
|
|
+ .eq(BCorpsBank::getPid, agentList.get(0).getCorpId()));
|
|
|
if (!corpsBankList.isEmpty()) {
|
|
|
finStlBills.setBankId(corpsBankList.get(0).getId());
|
|
|
finStlBills.setBankAccountName(corpsBankList.get(0).getAccountName());
|
|
|
@@ -1292,7 +1442,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
finAccBillsService.saveOrUpdateBatch(finAccBills);
|
|
|
}
|
|
|
updateById(agent);
|
|
|
- updateById(detail);
|
|
|
+ this.updateBatchById(agentList);
|
|
|
return agent;
|
|
|
}
|
|
|
|
|
|
@@ -1456,10 +1606,17 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
if (feeCenterListD.isEmpty()) {
|
|
|
throw new RuntimeException("未找到应收费用明细");
|
|
|
}
|
|
|
- Agent detail = baseMapper.selectById(feeCenterListD.get(0).getPid());
|
|
|
- if (detail == null) {
|
|
|
+ String billNo = feeCenters.stream().map(FeeCenter::getBillNo).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
|
|
|
+ String mblno = feeCenters.stream().map(FeeCenter::getMblno).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
|
|
|
+ List<Agent> agentList = baseMapper.selectList(new LambdaQueryWrapper<Agent>()
|
|
|
+ .eq(Agent::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Agent::getIsDeleted, 0)
|
|
|
+ .apply("find_in_set(contract_no,'" + billNo + "')"));
|
|
|
+// Agent detail = baseMapper.selectById(feeCenterList.get(0).getPid());
|
|
|
+ if (agentList.isEmpty()) {
|
|
|
throw new RuntimeException("未查到贸易代理单据信息");
|
|
|
}
|
|
|
+ List<Long> agentIdList = agentList.stream().map(Agent::getId).distinct().collect(Collectors.toList());
|
|
|
BigDecimal amountD = feeCenterListD.stream().map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
BigDecimal amount = feeCenterListD.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
List<FeeCenter> feeCenterList = feeCenters.stream().filter(e -> "C".equals(e.getDc())).collect(Collectors.toList());
|
|
|
@@ -1473,7 +1630,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
|
|
|
.eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(AdvanceCharge::getIsDeleted, 0)
|
|
|
- .eq(AdvanceCharge::getCorpId, detail.getDomesticConsigneeId()));
|
|
|
+ .eq(AdvanceCharge::getCorpId, agentList.get(0).getDomesticConsigneeId()));
|
|
|
if (advanceCharge != null) {
|
|
|
advanceCharge.setAdvancePaymentBalance(advanceCharge.getAdvancePaymentBalance().add(amountSub));
|
|
|
advanceCharge.setInOverpayment(advanceCharge.getInOverpayment().add(amountSub));
|
|
|
@@ -1481,8 +1638,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
advanceCharge = new AdvanceCharge();
|
|
|
advanceCharge.setAdvancePaymentBalance(amountSub);
|
|
|
advanceCharge.setInOverpayment(amountSub);
|
|
|
- advanceCharge.setCorpId(detail.getCorpId());
|
|
|
- advanceCharge.setCorpName(detail.getCorpName());
|
|
|
+ advanceCharge.setCorpId(agentList.get(0).getDomesticConsigneeId());
|
|
|
+ advanceCharge.setCorpName(agentList.get(0).getDomesticConsigneeCname());
|
|
|
advanceCharge.setCreateUser(AuthUtil.getUserId());
|
|
|
advanceCharge.setCreateUserName(AuthUtil.getUserName());
|
|
|
advanceCharge.setCreateTime(new Date());
|
|
|
@@ -1497,13 +1654,13 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
advanceChargeItem.setCreateDept(deptId);
|
|
|
advanceChargeItem.setCreateDeptName(deptName);
|
|
|
advanceChargeItem.setPid(advanceCharge.getId());
|
|
|
- advanceChargeItem.setSrcId(detail.getId());
|
|
|
- advanceChargeItem.setSrcPid(detail.getId());
|
|
|
- advanceChargeItem.setOrderNo(detail.getBusinessNo());
|
|
|
+ advanceChargeItem.setSrcId(agent.getId());
|
|
|
+ advanceChargeItem.setSrcPid(agent.getId());
|
|
|
+ advanceChargeItem.setOrderNo(agent.getBusinessNo());
|
|
|
advanceChargeItem.setOverpayment(amountSub);
|
|
|
advanceChargeItem.setOverpaymentType(0);
|
|
|
- advanceChargeItem.setSrcOrderNo(detail.getBusinessNo());
|
|
|
- advanceChargeItem.setBillNo(detail.getBusinessNo());
|
|
|
+ advanceChargeItem.setSrcOrderNo(agent.getBusinessNo());
|
|
|
+ advanceChargeItem.setBillNo(agent.getBusinessNo());
|
|
|
advanceChargeItem.setIdentifier(0);
|
|
|
advanceChargeItemService.save(advanceChargeItem);
|
|
|
} else if (amountSub.compareTo(new BigDecimal("0")) < 0) {
|
|
|
@@ -1516,24 +1673,24 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
feeCenter.setBranchId(deptId + "");
|
|
|
feeCenter.setCreateDeptName(deptName);
|
|
|
}
|
|
|
- feeCenter.setBusinessType(detail.getBusinessType());
|
|
|
- feeCenter.setPid(detail.getId());
|
|
|
+ feeCenter.setBusinessType(agentList.get(0).getBusinessType());
|
|
|
+ feeCenter.setPid(agentList.get(0).getId());
|
|
|
feeCenter.setLineNo(feeCenterListD.size() + 1L);
|
|
|
- feeCenter.setBillNo(detail.getBusinessNo());
|
|
|
- feeCenter.setBillDate(detail.getBusinessDate());
|
|
|
- feeCenter.setCorpId(detail.getDomesticConsigneeId());
|
|
|
- feeCenter.setCorpCnName(detail.getDomesticConsigneeCname());
|
|
|
- feeCenter.setBillCorpId(detail.getCorpId());
|
|
|
- feeCenter.setBillCorpCnName(detail.getCorpName());
|
|
|
- feeCenter.setMblno(detail.getContractNo());
|
|
|
- feeCenter.setPolId(detail.getPolId());
|
|
|
- feeCenter.setPolCode(detail.getPolCode());
|
|
|
- feeCenter.setPolCnName(detail.getPolCnName());
|
|
|
- feeCenter.setPolEnName(detail.getPolEnName());
|
|
|
- feeCenter.setPodId(detail.getPodId());
|
|
|
- feeCenter.setPodCode(detail.getPodCode());
|
|
|
- feeCenter.setPodCnName(detail.getPodCnName());
|
|
|
- feeCenter.setPodEnName(detail.getPodEnName());
|
|
|
+ feeCenter.setBillNo(agentList.get(0).getBusinessNo());
|
|
|
+ feeCenter.setBillDate(agentList.get(0).getBusinessDate());
|
|
|
+ feeCenter.setCorpId(agentList.get(0).getDomesticConsigneeId());
|
|
|
+ feeCenter.setCorpCnName(agentList.get(0).getDomesticConsigneeCname());
|
|
|
+ feeCenter.setBillCorpId(agentList.get(0).getCorpId());
|
|
|
+ feeCenter.setBillCorpCnName(agentList.get(0).getCorpName());
|
|
|
+ feeCenter.setMblno(agentList.get(0).getContractNo());
|
|
|
+ feeCenter.setPolId(agentList.get(0).getPolId());
|
|
|
+ feeCenter.setPolCode(agentList.get(0).getPolCode());
|
|
|
+ feeCenter.setPolCnName(agentList.get(0).getPolCnName());
|
|
|
+ feeCenter.setPolEnName(agentList.get(0).getPolEnName());
|
|
|
+ feeCenter.setPodId(agentList.get(0).getPodId());
|
|
|
+ feeCenter.setPodCode(agentList.get(0).getPodCode());
|
|
|
+ feeCenter.setPodCnName(agentList.get(0).getPodCnName());
|
|
|
+ feeCenter.setPodEnName(agentList.get(0).getPodEnName());
|
|
|
BFees feesSFK = bFeesService.getOne(new LambdaQueryWrapper<BFees>()
|
|
|
.eq(BFees::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(BFees::getIsDeleted, 0)
|
|
|
@@ -1568,29 +1725,37 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
int day = localDate.getDayOfMonth();
|
|
|
BigDecimal firstActualPayment = feeCenterList.stream().filter(e -> "SFK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- if (new BigDecimal("0").compareTo(firstActualPayment) != 0) {
|
|
|
- detail.setFirstActualPayment(firstActualPayment);
|
|
|
- detail.setFirstActualPaymentDate(date);
|
|
|
- detail.setOrderStatus("部分付汇");
|
|
|
- detail.setWhetherReceivedBalancePayment("部分付汇");
|
|
|
- }
|
|
|
BigDecimal finalPaymentInFull = feeCenterList.stream().filter(e -> "WK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- if (new BigDecimal("0").compareTo(finalPaymentInFull) != 0) {
|
|
|
- if (detail.getFinalPaymentInFull().add(finalPaymentInFull).compareTo(detail.getFinalPaymentPayable()) > 0) {
|
|
|
- throw new RuntimeException("实付金额大于应付金额");
|
|
|
+ for (Agent item : agentList) {
|
|
|
+ if (new BigDecimal("0").compareTo(firstActualPayment) != 0) {
|
|
|
+ BigDecimal amountSfk = feeCenterList.stream().filter(e -> "SFK".equals(e.getFeeCode()) && item.getContractNo().equals(e.getBillNo()))
|
|
|
+ .map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ if (new BigDecimal("0").compareTo(amountSfk) != 0) {
|
|
|
+ item.setFirstActualPayment(amountSfk);
|
|
|
+ item.setFirstActualPaymentDate(date);
|
|
|
+ item.setOrderStatus("部分付汇");
|
|
|
+ item.setWhetherReceivedBalancePayment("部分付汇");
|
|
|
+ }
|
|
|
}
|
|
|
- detail.setFinalPaymentInFull(detail.getFinalPaymentInFull().add(finalPaymentInFull));
|
|
|
- detail.setFinalPaymentInFullDate(date);
|
|
|
- detail.setOrderStatus("已付汇");
|
|
|
- if (detail.getFinalPaymentInFull().add(finalPaymentInFull).compareTo(detail.getFinalPaymentPayable()) == 0) {
|
|
|
- detail.setWhetherReceivedBalancePayment("已付汇");
|
|
|
+ if (new BigDecimal("0").compareTo(finalPaymentInFull) != 0) {
|
|
|
+ BigDecimal amountWk = feeCenterList.stream().filter(e -> "WK".equals(e.getFeeCode()) && item.getContractNo().equals(e.getBillNo()))
|
|
|
+ .map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ if (item.getFinalPaymentInFull().add(amountWk).compareTo(item.getFinalPaymentPayable()) > 0) {
|
|
|
+ throw new RuntimeException("实付金额大于应付金额");
|
|
|
+ }
|
|
|
+ item.setFinalPaymentInFull(item.getFinalPaymentInFull().add(amountWk));
|
|
|
+ item.setFinalPaymentInFullDate(date);
|
|
|
+ item.setOrderStatus("已付汇");
|
|
|
+ if (item.getFinalPaymentInFull().add(amountWk).compareTo(item.getFinalPaymentPayable()) == 0) {
|
|
|
+ item.setWhetherReceivedBalancePayment("已付汇");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
List<AgentItems> agentItemsList = agentItemsService.list(new LambdaQueryWrapper<AgentItems>()
|
|
|
.eq(AgentItems::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(AgentItems::getIsDeleted, 0)
|
|
|
- .eq(AgentItems::getPid, feeCenters.get(0).getStlPid()));
|
|
|
+ .in(AgentItems::getPid, agentIdList));
|
|
|
if (!agentItemsList.isEmpty()) {
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
Date now = new Date();
|
|
|
@@ -1612,7 +1777,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(FinAccBills::getIsDeleted, 0)
|
|
|
- .eq(FinAccBills::getBusinessBillId, detail.getId())
|
|
|
+ .in(FinAccBills::getBusinessBillId, agentIdList)
|
|
|
.eq(FinAccBills::getAccountType, "LOCAL-C"));
|
|
|
List<FinAccBills> finAccBills = new ArrayList<>();
|
|
|
List<FinStlBillsItems> stlBillsItemsList = new ArrayList<>();
|
|
|
@@ -1733,8 +1898,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
stlBillsItems.setCreateDeptName(deptName);
|
|
|
}
|
|
|
stlBillsItems.setLineNo(1);
|
|
|
- stlBillsItems.setBusinessType(detail.getBusinessType());
|
|
|
- stlBillsItems.setBillNo(detail.getBusinessNo());
|
|
|
+ stlBillsItems.setBusinessType(agentList.get(0).getBusinessType());
|
|
|
+ stlBillsItems.setBillNo(billNo);
|
|
|
stlBillsItems.setBillDate(date);
|
|
|
stlBillsItems.setAccountDate(data.getAccountDate());
|
|
|
stlBillsItems.setAccountYear(year);
|
|
|
@@ -1825,27 +1990,27 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
finStlBills.setCreateDeptName(deptName);
|
|
|
}
|
|
|
finStlBills.setBusinessType("STL");
|
|
|
- finStlBills.setCorpId(detail.getCorpId());
|
|
|
- finStlBills.setCorpCnName(detail.getCorpName());
|
|
|
- finStlBills.setBusinessTypes(detail.getBusinessType());
|
|
|
- finStlBills.setBusinessNo(detail.getBusinessNo());
|
|
|
- finStlBills.setDeptId(detail.getCreateDept());
|
|
|
- finStlBills.setDeptName(detail.getCreateDeptName());
|
|
|
+ finStlBills.setCorpId(agentList.get(0).getCorpId());
|
|
|
+ finStlBills.setCorpCnName(agentList.get(0).getCorpName());
|
|
|
+ finStlBills.setBusinessTypes(agentList.get(0).getBusinessType());
|
|
|
+ finStlBills.setBusinessNo(billNo);
|
|
|
+ finStlBills.setDeptId(agentList.get(0).getCreateDept());
|
|
|
+ finStlBills.setDeptName(agentList.get(0).getCreateDeptName());
|
|
|
finStlBills.setOperatorId(AuthUtil.getUserId());
|
|
|
finStlBills.setOperatorName(AuthUtil.getUserName());
|
|
|
finStlBills.setDc("C");
|
|
|
finStlBills.setSettlementType("C");
|
|
|
- finStlBills.setMblno(detail.getContractNo());
|
|
|
+ finStlBills.setMblno(mblno);
|
|
|
finStlBills.setStatus(3);
|
|
|
finStlBills.setIsCleared(1);
|
|
|
- finStlBills.setAmountDr(stlBillsItemsList.stream().map(FinStlBillsItems::getCurrentStlAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- finStlBills.setAmountDrLoc(finStlBills.getAmountDr());
|
|
|
- finStlBills.setAmountSub(finStlBills.getAmountDr());
|
|
|
- finStlBills.setAmountSubLoc(finStlBills.getAmountDr());
|
|
|
+ finStlBills.setAmountCr(stlBillsItemsList.stream().map(FinStlBillsItems::getCurrentStlAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ finStlBills.setAmountCrLoc(finStlBills.getAmountCr());
|
|
|
+ finStlBills.setAmountSub(finStlBills.getAmountCr());
|
|
|
+ finStlBills.setAmountSubLoc(finStlBills.getAmountCr());
|
|
|
List<BCorpsBank> corpsBankList = bCorpsBankService.list(new LambdaQueryWrapper<BCorpsBank>()
|
|
|
.eq(BCorpsBank::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(BCorpsBank::getIsDeleted, 0)
|
|
|
- .eq(BCorpsBank::getPid, detail.getCorpId()));
|
|
|
+ .eq(BCorpsBank::getPid, agentList.get(0).getCorpId()));
|
|
|
if (!corpsBankList.isEmpty()) {
|
|
|
finStlBills.setBankId(corpsBankList.get(0).getId());
|
|
|
finStlBills.setBankAccountName(corpsBankList.get(0).getAccountName());
|
|
|
@@ -1868,7 +2033,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
finAccBillsService.saveOrUpdateBatch(finAccBills);
|
|
|
}
|
|
|
updateById(agent);
|
|
|
- updateById(detail);
|
|
|
+ this.updateBatchById(agentList);
|
|
|
return agent;
|
|
|
}
|
|
|
|
|
|
@@ -2441,6 +2606,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
BeanUtil.copyProperties(item, feeCenter);
|
|
|
feeCenter.setDc("C");
|
|
|
feeCenter.setId(null);
|
|
|
+ feeCenter.setCorpId(declare.getAbroadConsignorId());
|
|
|
+ feeCenter.setCorpCnName(declare.getAbroadConsignorCname());
|
|
|
feeCenter.setCreateTime(new Date());
|
|
|
feeCenter.setCreateUser(AuthUtil.getUserId());
|
|
|
feeCenter.setCreateUserName(AuthUtil.getUserName());
|
|
|
@@ -2551,6 +2718,53 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
stlAgent.setDc(feeCenterList.get(0).getDc());
|
|
|
stlAgent.setBusinessDate(date);
|
|
|
stlAgent.setGoodsValue(feeCenterList.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ stlAgent.setPaymentInUsd(feeCenterList.stream().filter(e -> "SFK,WK".contains(e.getFeeCode()))
|
|
|
+ .map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ LocalDate localDate = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
+ int year = localDate.getYear();
|
|
|
+ int month = localDate.getMonthValue();
|
|
|
+ int day = localDate.getDayOfMonth();
|
|
|
+ LambdaQueryWrapper<BCurExrate> lambdaQueryWrapper = new LambdaQueryWrapper<BCurExrate>()
|
|
|
+ .eq(BCurExrate::getCode, "USD")
|
|
|
+ .eq(BCurExrate::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(BCurExrate::getIsDeleted, 0)
|
|
|
+ .eq(BCurExrate::getExrateYear, year)
|
|
|
+ .eq(BCurExrate::getExrateMonth, month)
|
|
|
+ .eq(BCurExrate::getExrateDay, day)
|
|
|
+ .eq(BCurExrate::getType, "日汇率");
|
|
|
+ BCurExrate bCurExrate = curExrateMapper.selectOne(lambdaQueryWrapper);
|
|
|
+ if ("D".equals(stlAgent.getDc())) {
|
|
|
+ if (bCurExrate == null) {
|
|
|
+ throw new RuntimeException("未找到" + year + "年-" + month + "月-" + day + "日实收汇率");
|
|
|
+ }
|
|
|
+ stlAgent.setExchangeRate(bCurExrate.getExrateReceipts());
|
|
|
+ } else {
|
|
|
+ if (bCurExrate == null) {
|
|
|
+ throw new RuntimeException("未找到" + year + "年-" + month + "月-" + day + "日实付汇率");
|
|
|
+ }
|
|
|
+ stlAgent.setExchangeRate(bCurExrate.getExratePayment());
|
|
|
+ }
|
|
|
+ stlAgent.setActualAmount(stlAgent.getExchangeRate().multiply(stlAgent.getPaymentInUsd()));
|
|
|
+ String postElectricFee = sysClient.getParamServiceByDept("post.electric.fee", AuthUtil.getTenantId(), AuthUtil.getDeptId());
|
|
|
+ if (ObjectUtils.isNotNull(postElectricFee)) {
|
|
|
+ BigDecimal postElectricFeeAmount = new BigDecimal(postElectricFee);
|
|
|
+ stlAgent.setPostElectricFee(postElectricFeeAmount);
|
|
|
+ } else {
|
|
|
+ stlAgent.setPostElectricFee(new BigDecimal("0"));
|
|
|
+ }
|
|
|
+ String serviceCharge = sysClient.getParamServiceByDept("service.charge", AuthUtil.getTenantId(), AuthUtil.getDeptId());
|
|
|
+ if (ObjectUtils.isNotNull(serviceCharge)) {
|
|
|
+ BigDecimal serviceChargeAmount = new BigDecimal("1").divide(new BigDecimal(serviceCharge), serviceCharge.length(), RoundingMode.HALF_UP);
|
|
|
+ BigDecimal amount = serviceChargeAmount.multiply(stlAgent.getActualAmount());
|
|
|
+ if (amount.compareTo(new BigDecimal("1000")) > 0) {
|
|
|
+ stlAgent.setServiceCharge(new BigDecimal("1000"));
|
|
|
+ } else {
|
|
|
+ stlAgent.setServiceCharge(amount);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ stlAgent.setServiceCharge(new BigDecimal("0.00"));
|
|
|
+ }
|
|
|
+
|
|
|
BusinessBillNo businessBillNo = new BusinessBillNo();
|
|
|
businessBillNo.setBusinessTypeId(businessType.getId());
|
|
|
businessBillNo.setCode("MYDL-STL");
|
|
|
@@ -2568,10 +2782,20 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
stlAgent.setCreateDeptName(deptName);
|
|
|
}
|
|
|
baseMapper.insert(stlAgent);
|
|
|
+ long ydfCount = feeCenterList.stream().filter(e -> "YDF".equals(e.getFeeCode())).count();
|
|
|
+ long sxfCount = feeCenterList.stream().filter(e -> "SXF".equals(e.getFeeCode())).count();
|
|
|
for (FeeCenter item : feeCenterList) {
|
|
|
if ("5".equals(item.getAuditStatus())) {
|
|
|
throw new RuntimeException("费用:" + item.getFeeCnName() + "已申请");
|
|
|
}
|
|
|
+ if ("YDF".equals(item.getFeeCode())) {
|
|
|
+ item.setAmount(stlAgent.getPostElectricFee().divide(new BigDecimal(ydfCount), 2, RoundingMode.HALF_UP));
|
|
|
+ item.setPrice(item.getAmount());
|
|
|
+ }
|
|
|
+ if ("SXF".equals(item.getFeeCode())) {
|
|
|
+ item.setAmount(stlAgent.getServiceCharge().divide(new BigDecimal(sxfCount), 2, RoundingMode.HALF_UP));
|
|
|
+ item.setPrice(item.getAmount());
|
|
|
+ }
|
|
|
item.setAuditStatus("5");
|
|
|
item.setStlPid(stlAgent.getId());
|
|
|
}
|