|
|
@@ -202,6 +202,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
record.setAmount(item.getActualAmount());
|
|
|
record.setDate(item.getBusinessDate());
|
|
|
record.setBillNo(item.getBillNoJoin());
|
|
|
+ record.setBillNo(item.getContractNo());
|
|
|
record.setRemarks(item.getRemarks());
|
|
|
record.setCustomsDeclarationNo(item.getDeclarationNumber());
|
|
|
if ("D".equals(item.getDc())) {
|
|
|
@@ -409,7 +410,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
.eq(AgentItems::getIsDeleted, 0)
|
|
|
.apply("find_in_set(bill_no,'" + billNo + "')")
|
|
|
);
|
|
|
- List<AgentItems> agentItems =agentItemsList.stream()
|
|
|
+ List<AgentItems> agentItems = agentItemsList.stream()
|
|
|
.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
|
|
|
Comparator.comparing(AgentItems::getId))), ArrayList::new));
|
|
|
for (AgentItems item : agent.getAgentItemsList()) {
|
|
|
@@ -489,6 +490,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
BigDecimal amount = serviceChargeAmount.multiply(agent.getActualAmount()).setScale(2, RoundingMode.HALF_UP);
|
|
|
if (amount.compareTo(new BigDecimal("1000")) > 0) {
|
|
|
agent.setServiceCharge(new BigDecimal("1000"));
|
|
|
+ } else if (amount.compareTo(new BigDecimal("50")) < 0) {
|
|
|
+ agent.setServiceCharge(new BigDecimal("50"));
|
|
|
} else {
|
|
|
agent.setServiceCharge(amount);
|
|
|
}
|
|
|
@@ -540,6 +543,13 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
} else {
|
|
|
item.setStlPid(agent.getId());
|
|
|
item.setStlExrate(agent.getExchangeRate());
|
|
|
+ if (item.getStlExrate().compareTo(item.getDiscountExrate()) < 0) {
|
|
|
+ throw new RuntimeException("优惠汇率不能大于结算汇率");
|
|
|
+ }
|
|
|
+ if ("SFK,WK".contains(item.getFeeCode())) {
|
|
|
+ item.setAmount(agent.getExchangeRate().multiply(item.getAmountLoc()).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ item.setPrice(item.getAmount());
|
|
|
+ }
|
|
|
if ("YDF".equals(item.getFeeCode())) {
|
|
|
item.setAmount(agent.getPostElectricFee().divide(new BigDecimal(ydfCount), 2, RoundingMode.HALF_UP));
|
|
|
item.setPrice(item.getAmount());
|
|
|
@@ -584,10 +594,16 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
} else {
|
|
|
serviceChargeAmount = new BigDecimal("1").divide(new BigDecimal("1000"), serviceCharge.length(), RoundingMode.HALF_UP);
|
|
|
}
|
|
|
- BigDecimal amount = feeCenter.getAmountLoc().multiply(item.getDiscountExrate()).multiply(serviceChargeAmount);
|
|
|
- BigDecimal amountSum = item.getAmount().subtract(amount);
|
|
|
- item.setProfit(amountSum);
|
|
|
- profit = profit.add(amountSum);
|
|
|
+ if (ObjectUtils.isNotNull(item.getDiscountExrate())) {
|
|
|
+ BigDecimal amount = feeCenter.getAmountLoc().multiply(item.getDiscountExrate()).multiply(serviceChargeAmount);
|
|
|
+ BigDecimal amountSum = item.getAmount().subtract(amount);
|
|
|
+ item.setProfit(amountSum);
|
|
|
+ profit = profit.add(amountSum);
|
|
|
+ } else {
|
|
|
+ item.setProfit(new BigDecimal("0.00"));
|
|
|
+ profit = profit.add(new BigDecimal("0.00"));
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -601,11 +617,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
.distinct().collect(Collectors.joining(","));
|
|
|
if (ObjectUtils.isNotNull(billNo)) {
|
|
|
List<String> billNoList = Arrays.stream(billNo.split(",")).collect(Collectors.toList());
|
|
|
- if (ObjectUtils.isNull(agent.getBillNoJoin())) {
|
|
|
- agent.setBillNoJoin(billNoList.stream().distinct().collect(Collectors.joining(",")));
|
|
|
- } else {
|
|
|
- agent.setBillNoJoin(agent.getBillNoJoin() + "," + billNoList.stream().distinct().collect(Collectors.joining(",")));
|
|
|
- }
|
|
|
+ agent.setBillNoJoin(billNoList.stream().distinct().collect(Collectors.joining(",")));
|
|
|
}
|
|
|
String contractNo = agent.getFeeCenterListD().stream().map(FeeCenter::getBillNo).filter(Objects::nonNull)
|
|
|
.distinct().collect(Collectors.joining(","));
|
|
|
@@ -615,7 +627,10 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
}
|
|
|
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()));
|
|
|
+// agent.setActualAmount(agent.getExchangeRate().multiply(agent.getPaymentInUsd()));
|
|
|
+ agent.setActualAmount(agent.getExchangeRate().multiply(agent.getPaymentInUsd())
|
|
|
+ .subtract(agent.getFeeCenterListD().stream().filter(e -> "YFK".contains(e.getFeeCode()))
|
|
|
+ .map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add)));
|
|
|
ydfCount = agent.getFeeCenterListD().stream().filter(e -> "YDF".equals(e.getFeeCode())).count();
|
|
|
sxfCount = agent.getFeeCenterListD().stream().filter(e -> "SXF".equals(e.getFeeCode())).count();
|
|
|
}
|
|
|
@@ -639,6 +654,12 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
} else {
|
|
|
item.setStlPid(agent.getId());
|
|
|
item.setStlExrate(agent.getExchangeRate());
|
|
|
+ item.setExrate(agent.getExchangeRate());
|
|
|
+ item.setDiscountExrate(agent.getExchangeRate());
|
|
|
+ if ("SFK,WK".contains(item.getFeeCode())) {
|
|
|
+ item.setAmount(agent.getExchangeRate().multiply(item.getAmountLoc()).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ item.setPrice(agent.getExchangeRate().multiply(item.getAmountLoc()).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
if ("YDF".equals(item.getFeeCode())) {
|
|
|
item.setAmount(agent.getPostElectricFee().divide(new BigDecimal(ydfCount), 2, RoundingMode.HALF_UP));
|
|
|
item.setPrice(item.getAmount());
|
|
|
@@ -1462,6 +1483,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
stlBillsItems.setAccBillNo(data.getBillNo());
|
|
|
stlBillsItems.setAccDate(data.getBillDate());
|
|
|
stlBillsItems.setDc(data.getAccountDc());
|
|
|
+ stlBillsItems.setItemType("STL");
|
|
|
stlBillsItems.setQuantity(new BigDecimal("1"));
|
|
|
stlBillsItems.setUnitNo(item.getUnitNo());
|
|
|
stlBillsItems.setPrice(data.getAmountDr());
|
|
|
@@ -1552,19 +1574,31 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
}
|
|
|
finStlBills.setCollectionSituation("");
|
|
|
finStlBillsService.save(finStlBills);
|
|
|
+ if (!finAccBills.isEmpty()) {
|
|
|
+ finAccBillsService.saveOrUpdateBatch(finAccBills);
|
|
|
+ }
|
|
|
for (FinStlBillsItems item : stlBillsItemsList) {
|
|
|
item.setPid(finStlBills.getId());
|
|
|
+ FinAccBills accBills = finAccBills.stream().filter(e -> e.getBillNo().equals(item.getAccBillNo())).findFirst().orElse(null);
|
|
|
+ if (accBills != null) {
|
|
|
+ item.setAccBillId(accBills.getId());
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("生成账单失败");
|
|
|
+ }
|
|
|
}
|
|
|
finStlBillsItemsService.saveBatch(stlBillsItemsList);
|
|
|
for (FeeCenter item : feeCenters) {
|
|
|
item.setStlBillId(finStlBills.getId());
|
|
|
item.setStlBillNo(finStlBills.getBillNo());
|
|
|
item.setStlDate(finStlBills.getBillDate());
|
|
|
+ FinAccBills accBills = finAccBills.stream().filter(e -> e.getBillNo().equals(item.getAccBillNo())).findFirst().orElse(null);
|
|
|
+ if (accBills != null) {
|
|
|
+ item.setAccBillId(accBills.getId());
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("生成账单失败");
|
|
|
+ }
|
|
|
}
|
|
|
feeCenterService.saveOrUpdateBatch(feeCenters);
|
|
|
- if (!finAccBills.isEmpty()) {
|
|
|
- finAccBillsService.saveOrUpdateBatch(finAccBills);
|
|
|
- }
|
|
|
updateById(agent);
|
|
|
this.updateBatchById(agentList);
|
|
|
return agent;
|
|
|
@@ -1777,6 +1811,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
advanceCharge.setCreateDeptName(deptName);
|
|
|
advanceCharge.setAdvancePaymentBalance(new BigDecimal("0.00"));
|
|
|
advanceCharge.setInOverpayment(new BigDecimal("0.00"));
|
|
|
+ advanceCharge.setOutOverpaymen(new BigDecimal("0.00"));
|
|
|
}
|
|
|
AdvanceChargeItem advanceChargeItem = new AdvanceChargeItem();
|
|
|
advanceChargeItem.setCreateUser(AuthUtil.getUserId());
|
|
|
@@ -1819,7 +1854,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
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.setPrepaidAmountStl(item.getPrepaidAmount());
|
|
|
+ item.setFirstActualPayment(item.getPrepaidAmount());
|
|
|
item.setFirstActualPaymentDate(date);
|
|
|
item.setOrderStatus("部分付汇");
|
|
|
item.setWhetherReceivedBalancePayment("部分付汇");
|
|
|
@@ -1831,6 +1867,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
if (item.getFinalPaymentInFull().add(amountWk).compareTo(item.getGoodsValue().subtract(item.getPrepaidAmount())) > 0) {
|
|
|
throw new RuntimeException("实付金额大于应付金额");
|
|
|
}
|
|
|
+ item.setGoodsValueStl(item.getGoodsValueStl().add(amountWk));
|
|
|
item.setFinalPaymentInFull(item.getFinalPaymentInFull().add(amountWk));
|
|
|
item.setFinalPaymentInFullDate(date);
|
|
|
item.setOrderStatus("已付汇");
|
|
|
@@ -2017,6 +2054,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
stlBillsItems.setAccBillNo(data.getBillNo());
|
|
|
stlBillsItems.setAccDate(data.getBillDate());
|
|
|
stlBillsItems.setDc(data.getAccountDc());
|
|
|
+ stlBillsItems.setItemType("STL");
|
|
|
stlBillsItems.setQuantity(new BigDecimal("1"));
|
|
|
stlBillsItems.setUnitNo(item.getUnitNo());
|
|
|
stlBillsItems.setPrice(data.getAmountDr());
|
|
|
@@ -2107,19 +2145,32 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
}
|
|
|
finStlBills.setCollectionSituation("");
|
|
|
finStlBillsService.save(finStlBills);
|
|
|
+ if (!finAccBills.isEmpty()) {
|
|
|
+ finAccBillsService.saveOrUpdateBatch(finAccBills);
|
|
|
+ }
|
|
|
for (FinStlBillsItems item : stlBillsItemsList) {
|
|
|
item.setPid(finStlBills.getId());
|
|
|
+ FinAccBills accBills = finAccBills.stream().filter(e -> e.getBillNo().equals(item.getAccBillNo())).findFirst().orElse(null);
|
|
|
+ if (accBills != null) {
|
|
|
+ item.setAccBillId(accBills.getId());
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("生成账单失败");
|
|
|
+ }
|
|
|
}
|
|
|
finStlBillsItemsService.saveBatch(stlBillsItemsList);
|
|
|
for (FeeCenter item : feeCenters1) {
|
|
|
item.setStlBillId(finStlBills.getId());
|
|
|
item.setStlBillNo(finStlBills.getBillNo());
|
|
|
item.setStlDate(finStlBills.getBillDate());
|
|
|
+ FinAccBills accBills = finAccBills.stream().filter(e -> e.getBillNo().equals(item.getAccBillNo())).findFirst().orElse(null);
|
|
|
+ if (accBills != null) {
|
|
|
+ item.setAccBillId(accBills.getId());
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("生成账单失败");
|
|
|
+ }
|
|
|
}
|
|
|
feeCenterService.saveOrUpdateBatch(feeCenters1);
|
|
|
- if (!finAccBills.isEmpty()) {
|
|
|
- finAccBillsService.saveOrUpdateBatch(finAccBills);
|
|
|
- }
|
|
|
+
|
|
|
this.updateBatchById(agentList);
|
|
|
agent.setOrderStatus("已确认");
|
|
|
updateById(agent);
|
|
|
@@ -2217,9 +2268,11 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
bills.setHconsigneeCnName(agent.getDomesticConsigneeCname());
|
|
|
bills.setMnotifyCntyCode(agent.getCountryOfOrigin());
|
|
|
bills.setMnotifyCntyName(agent.getTypeOfShipping());
|
|
|
+ bills.setSrcType(agent.getSourceType());
|
|
|
bills.setSrcId(agent.getSalesmanId());
|
|
|
bills.setSrcCnName(agent.getSalesmanName());
|
|
|
bills.setMblno(item.getBillNo());
|
|
|
+ bills.setMshipperCntyName(agent.getTradeMode());
|
|
|
List<AgentItems> itemsList = agentItemsList.stream().filter(e -> e.getBillNo().equals(item.getBillNo())).collect(Collectors.toList());
|
|
|
if (!itemsList.isEmpty()) {
|
|
|
bills.setQuantity(agentItemsList.stream().map(AgentItems::getQuantity).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
@@ -2777,9 +2830,9 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
feeCenterService.saveBatch(feeCenterList);
|
|
|
String type;
|
|
|
if ("FFSQ-SK".equals(agent.getPaidApplication())) {
|
|
|
- type = "FFSQ-SK";
|
|
|
+ type = "SFK";
|
|
|
} else if ("FFSQ-WK".equals(agent.getPaidApplication())) {
|
|
|
- type = "FFSQ-WK";
|
|
|
+ type = "WK";
|
|
|
} else {
|
|
|
type = "";
|
|
|
}
|
|
|
@@ -2882,6 +2935,9 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
stlAgent.setBusinessType("MYDL-STL");
|
|
|
stlAgent.setDc(feeCenterList.get(0).getDc());
|
|
|
stlAgent.setBusinessDate(date);
|
|
|
+ stlAgent.setAffiliatedCompanyId(agent.getAffiliatedCompanyId());
|
|
|
+ stlAgent.setAffiliatedCompanyName(agent.getAffiliatedCompanyName());
|
|
|
+ stlAgent.setAdvanceRatio(agent.getAdvanceRatio());
|
|
|
if ("D".equals(stlAgent.getDc())) {
|
|
|
stlAgent.setDomesticConsigneeId(agent.getDomesticConsigneeId());
|
|
|
stlAgent.setDomesticConsigneeCname(agent.getDomesticConsigneeCname());
|
|
|
@@ -2908,31 +2964,40 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
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 + "日实收汇率");
|
|
|
+ if (ObjectUtils.isNull(stlAgent.getExchangeRate())) {
|
|
|
+ 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.setExchangeRate(bCurExrate.getExrateReceipts());
|
|
|
+ }
|
|
|
+ if ("D".equals(stlAgent.getDc())) {
|
|
|
+ stlAgent.setActualAmount(stlAgent.getExchangeRate().multiply(stlAgent.getPaymentInUsd())
|
|
|
+ .subtract(feeCenterList.stream().filter(e -> "YFK".contains(e.getFeeCode()))
|
|
|
+ .map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add)));
|
|
|
} else {
|
|
|
- if (bCurExrate == null) {
|
|
|
- throw new RuntimeException("未找到" + year + "年-" + month + "月-" + day + "日实付汇率");
|
|
|
- }
|
|
|
- stlAgent.setExchangeRate(bCurExrate.getExratePayment());
|
|
|
+ stlAgent.setActualAmount(stlAgent.getExchangeRate().multiply(stlAgent.getPaymentInUsd()));
|
|
|
}
|
|
|
- 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);
|
|
|
@@ -2946,6 +3011,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
BigDecimal amount = serviceChargeAmount.multiply(stlAgent.getActualAmount());
|
|
|
if (amount.compareTo(new BigDecimal("1000")) > 0) {
|
|
|
stlAgent.setServiceCharge(new BigDecimal("1000"));
|
|
|
+ } else if (amount.compareTo(new BigDecimal("50")) < 0) {
|
|
|
+ stlAgent.setServiceCharge(new BigDecimal("50"));
|
|
|
} else {
|
|
|
stlAgent.setServiceCharge(amount);
|
|
|
}
|
|
|
@@ -2976,6 +3043,20 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
if ("5".equals(item.getAuditStatus())) {
|
|
|
throw new RuntimeException("费用:" + item.getFeeCnName() + "已申请");
|
|
|
}
|
|
|
+ if ("D".equals(stlAgent.getDc())) {
|
|
|
+ item.setExrate(stlAgent.getExchangeRate());
|
|
|
+ item.setStlExrate(stlAgent.getExchangeRate());
|
|
|
+ item.setDiscountExrate(stlAgent.getExchangeRate());
|
|
|
+ } else {
|
|
|
+ item.setStlExrate(stlAgent.getExchangeRate());
|
|
|
+ item.setDiscountExrate(stlAgent.getExchangeRate());
|
|
|
+ }
|
|
|
+ if ("SFK,WK".contains(item.getFeeCode())) {
|
|
|
+ item.setAmount(stlAgent.getExchangeRate().multiply(item.getAmountLoc()).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ item.setStlExrate(stlAgent.getExchangeRate());
|
|
|
+ item.setPrice(item.getAmount());
|
|
|
+ item.setProfit(item.getAmount().subtract(item.getDiscountExrate().multiply(item.getAmountLoc()).setScale(2, RoundingMode.HALF_UP)));
|
|
|
+ }
|
|
|
if ("YDF".equals(item.getFeeCode())) {
|
|
|
item.setAmount(stlAgent.getPostElectricFee().divide(new BigDecimal(ydfCount), 2, RoundingMode.HALF_UP));
|
|
|
item.setPrice(item.getAmount());
|
|
|
@@ -2983,6 +3064,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
if ("SXF".equals(item.getFeeCode())) {
|
|
|
item.setAmount(stlAgent.getServiceCharge().divide(new BigDecimal(sxfCount), 2, RoundingMode.HALF_UP));
|
|
|
item.setPrice(item.getAmount());
|
|
|
+ item.setStlExrate(stlAgent.getExchangeRate());
|
|
|
}
|
|
|
item.setAuditStatus("5");
|
|
|
item.setStlPid(stlAgent.getId());
|
|
|
@@ -3048,10 +3130,12 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
sendMessage.setUrl(agent.getUrl());
|
|
|
sendMessage.setPageLabel(agent.getPageLabel());
|
|
|
sendMessage.setPageStatus(agent.getPageStatus());
|
|
|
- if ("YSQR-SK".equals(agent.getPaidApplication())) {
|
|
|
- sendMessage.setMessageBody("您有新的贸易代理货款收费确认" + ",业务单号:" + stlAgent.getBusinessNo());
|
|
|
- } else if ("YSQR-WK".equals(agent.getPaidApplication())) {
|
|
|
- sendMessage.setMessageBody("您有新的贸易代理货款付费确认" + ",业务单号:" + stlAgent.getBusinessNo());
|
|
|
+ if ("D".equals(stlAgent.getDc())) {
|
|
|
+ sendMessage.setMessageBody("您有新的贸易代理货款收费确认,结算单位:" + stlAgent.getDomesticConsigneeCname() + ",合同号:" + stlAgent.getContractNo()
|
|
|
+ + ",提单号:" + (ObjectUtils.isNull(stlAgent.getBillNoJoin()) ? "" : stlAgent.getBillNoJoin()) + ",金额:" + stlAgent.getGoodsValue());
|
|
|
+ } else if ("C".equals(stlAgent.getDc())) {
|
|
|
+ sendMessage.setMessageBody("您有新的贸易代理货款付费确认,结算单位:" + stlAgent.getAbroadConsignorCname() + ",合同号:" + stlAgent.getContractNo()
|
|
|
+ + ",提单号:" + (ObjectUtils.isNull(stlAgent.getBillNoJoin()) ? "" : stlAgent.getBillNoJoin()) + ",金额:" + stlAgent.getGoodsValue());
|
|
|
}
|
|
|
messageList.add(sendMessage);
|
|
|
}
|
|
|
@@ -3314,137 +3398,240 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
List<FeeCenter> feeCenterListC = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
.in(FeeCenter::getPid, ids)
|
|
|
.eq(FeeCenter::getDc, "C")
|
|
|
+ .apply("stl_pid is not null")
|
|
|
.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(FeeCenter::getIsDeleted, 0));
|
|
|
if (feeCenterList.isEmpty()) {
|
|
|
throw new RuntimeException("请先维护首款费用信息");
|
|
|
}
|
|
|
- List<Long> stlPidC = feeCenterListC.stream().map(FeeCenter::getStlPid).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
- List<Agent> agentList = baseMapper.selectList(new LambdaQueryWrapper<Agent>()
|
|
|
- .eq(Agent::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(Agent::getIsDeleted, 0)
|
|
|
- .in(Agent::getId, stlPidC));
|
|
|
+ List<AgentRecordReport> reportList = new ArrayList<>();
|
|
|
List<FeeCenter> feeCentersSk = feeCenterList.stream().filter(e -> ObjectUtils.isNotNull(e.getFeeType()) &&
|
|
|
- "1".equals(e.getFeeType()) && "SFK".equals(e.getFeeCode()))
|
|
|
+ "1".equals(e.getFeeType()) && "SFK".equals(e.getFeeCode()))
|
|
|
.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
|
|
|
- Comparator.comparing(FeeCenter::getBillNo))), ArrayList::new));
|
|
|
- for (FeeCenter item : feeCentersSk) {
|
|
|
- AgentFeeItemsReport agentFeeItemsReport = new AgentFeeItemsReport();
|
|
|
- agentFeeItemsReport.setContractNo(item.getBillNo());
|
|
|
- agentFeeItemsReport.setOrderNo(item.getOrderNo());
|
|
|
- agentFeeItemsReport.setFactoryNumber(item.getFactoryNumber());
|
|
|
- agentFeeItemsReport.setBillNo(item.getMblno());
|
|
|
- agentFeeItemsReport.setBoxNo(item.getCntrNo());
|
|
|
- agentFeeItemsReport.setGoodsName(item.getGoodsName());
|
|
|
- agentFeeItemsReport.setAmountUsd(item.getAmountLoc());
|
|
|
- agentFeeItemsReport.setExchangeRate(item.getExrate());
|
|
|
- agentFeeItemsReport.setAmount(item.getAmount());
|
|
|
- FeeCenter feeCenter = feeCenterListC.stream().filter(e-> e.getFeeCode().equals(item.getFeeCode()))
|
|
|
+ Comparator.comparing(FeeCenter::getBillNo))), ArrayList::new));
|
|
|
+ if (!feeCentersSk.isEmpty()) {
|
|
|
+ List<Long> agentIdList = feeCentersSk.stream().map(FeeCenter::getPid).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ List<AgentItems> agentItemsList = agentItemsService.list(new LambdaQueryWrapper<AgentItems>()
|
|
|
+ .eq(AgentItems::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(AgentItems::getIsDeleted, 0)
|
|
|
+ .in(AgentItems::getPid, agentIdList));
|
|
|
+ for (FeeCenter item : feeCentersSk) {
|
|
|
+ AgentFeeItemsReport agentFeeItemsReport = new AgentFeeItemsReport();
|
|
|
+ agentFeeItemsReport.setContractNo(item.getBillNo());
|
|
|
+ agentFeeItemsReport.setOrderNo(item.getOrderNo());
|
|
|
+ agentFeeItemsReport.setFactoryNumber(item.getFactoryNumber());
|
|
|
+ agentFeeItemsReport.setBillNo(item.getMblno());
|
|
|
+ agentFeeItemsReport.setBoxNo(item.getCntrNo());
|
|
|
+ agentFeeItemsReport.setGoodsName(item.getGoodsName());
|
|
|
+ if (!agentItemsList.isEmpty()) {
|
|
|
+ List<AgentItems> agentItems = agentItemsList.stream().filter(e -> e.getPid().equals(item.getPid())).collect(Collectors.toList());
|
|
|
+ if (!agentItems.isEmpty()) {
|
|
|
+ agentFeeItemsReport.setAmountUsd(agentItems.stream().map(AgentItems::getAmount)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ if (ObjectUtils.isNotNull(agentItems.get(0).getEstimateReachHarbor())) {
|
|
|
+ agentFeeItemsReport.setEta(dateFormat.format(agentItems.get(0).getEstimateReachHarbor()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ agentFeeItemsReport.setSkAmountUsd(item.getAmountLoc());
|
|
|
+ agentFeeItemsReport.setExchangeRate(item.getExrate());
|
|
|
+ agentFeeItemsReport.setAmount(item.getAmountLoc().multiply(item.getExrate()).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ FeeCenter feeCenter = feeCenterListC.stream().filter(e -> e.getFeeCode().equals(item.getFeeCode())
|
|
|
+ && ObjectUtils.isNotNull(e.getFeeType()) && "1".equals(e.getFeeType()) && "SFK".equals(e.getFeeCode()))
|
|
|
.findFirst().orElse(null);
|
|
|
- if (feeCenter != null){
|
|
|
- agentFeeItemsReport.setRealityExchangeRate(feeCenter.getStlExrate());
|
|
|
- agentFeeItemsReport.setRealityAmount(item.getAmountLoc().multiply(feeCenter.getStlExrate()));
|
|
|
- }else{
|
|
|
- agentFeeItemsReport.setRealityExchangeRate(null);
|
|
|
- agentFeeItemsReport.setRealityAmount(null);
|
|
|
+ if (feeCenter != null) {
|
|
|
+ AgentRecordReport report = new AgentRecordReport();
|
|
|
+ if (ObjectUtils.isNotNull(feeCenter.getStlDate())) {
|
|
|
+ report.setDate(dateFormat.format(feeCenter.getStlDate()));
|
|
|
+ }
|
|
|
+ report.setExchangeRate(feeCenter.getDiscountExrate());
|
|
|
+ report.setDiscountAmount(item.getAmountLoc().multiply(feeCenter.getDiscountExrate()).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ reportList.add(report);
|
|
|
+ agentFeeItemsReport.setRealityExchangeRate(feeCenter.getStlExrate());
|
|
|
+ agentFeeItemsReport.setRealityAmount(item.getAmountLoc().multiply(feeCenter.getStlExrate()).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ } else {
|
|
|
+ agentFeeItemsReport.setRealityExchangeRate(null);
|
|
|
+ agentFeeItemsReport.setRealityAmount(null);
|
|
|
+ }
|
|
|
+ agentFeeItemsReportList.add(agentFeeItemsReport);
|
|
|
}
|
|
|
- agentFeeItemsReportList.add(agentFeeItemsReport);
|
|
|
+ agentFeeReport.setRealityPostElectricFee(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("YDF")
|
|
|
+ && ObjectUtils.isNotNull(e.getFeeType()) && "1".equals(e.getFeeType()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ agentFeeReport.setRealityServiceCharge(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("SXF")
|
|
|
+ && ObjectUtils.isNotNull(e.getFeeType()) && "1".equals(e.getFeeType()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ BigDecimal realityAmount = agentFeeItemsReportList.stream().map(AgentFeeItemsReport::getRealityAmount)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ agentFeeReport.setRealitySumAmount(realityAmount.add(agentFeeReport.getRealityPostElectricFee()).add(agentFeeReport.getRealityServiceCharge()));
|
|
|
}
|
|
|
List<FeeCenter> feeCentersWk = feeCenterList.stream().filter(e -> ObjectUtils.isNotNull(e.getFeeType()) &&
|
|
|
"2".equals(e.getFeeType()) && "WK".equals(e.getFeeCode()))
|
|
|
.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
|
|
|
- Comparator.comparing(FeeCenter::getBillNo))), ArrayList::new));
|
|
|
- for (FeeCenter item : feeCentersWk) {
|
|
|
- AgentFeeItemsReport agentFeeItemsReport = new AgentFeeItemsReport();
|
|
|
- agentFeeItemsReport.setContractNo(item.getBillNo());
|
|
|
- agentFeeItemsReport.setOrderNo(item.getOrderNo());
|
|
|
- agentFeeItemsReport.setFactoryNumber(item.getFactoryNumber());
|
|
|
- agentFeeItemsReport.setBillNo(item.getMblno());
|
|
|
- agentFeeItemsReport.setBoxNo(item.getCntrNo());
|
|
|
- agentFeeItemsReport.setGoodsName(item.getGoodsName());
|
|
|
- agentFeeItemsReport.setAmountUsd(item.getAmountLoc());
|
|
|
- agentFeeItemsReport.setExchangeRate(item.getExrate());
|
|
|
- agentFeeItemsReport.setAmount(item.getAmount());
|
|
|
- FeeCenter feeCenter = feeCenterListC.stream().filter(e-> e.getFeeCode().equals(item.getFeeCode()))
|
|
|
- .findFirst().orElse(null);
|
|
|
- if (feeCenter != null){
|
|
|
- agentFeeItemsReport.setRealityExchangeRate(feeCenter.getStlExrate());
|
|
|
- agentFeeItemsReport.setRealityAmount(item.getAmountLoc().multiply(feeCenter.getStlExrate()));
|
|
|
- }else{
|
|
|
- agentFeeItemsReport.setRealityExchangeRate(null);
|
|
|
- agentFeeItemsReport.setRealityAmount(null);
|
|
|
- }
|
|
|
- agentFeeItemsReportList.add(agentFeeItemsReport);
|
|
|
- }
|
|
|
+ Comparator.comparing(FeeCenter::getMblno))), ArrayList::new));
|
|
|
+ if (!feeCentersWk.isEmpty()) {
|
|
|
+ List<Long> agentIdList = feeCentersWk.stream().map(FeeCenter::getPid).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ List<Agent> agents = baseMapper.selectList(new LambdaQueryWrapper<Agent>()
|
|
|
+ .eq(Agent::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Agent::getIsDeleted, 0)
|
|
|
+ .eq(Agent::getBusinessType, "MYDL")
|
|
|
+ .in(Agent::getId, agentIdList));
|
|
|
+ String billNo = feeCentersWk.stream().map(FeeCenter::getMblno).filter(Objects::nonNull).collect(Collectors.joining(","));
|
|
|
+ List<AgentItems> agentItemsList = agentItemsService.list(new LambdaQueryWrapper<AgentItems>()
|
|
|
+ .eq(AgentItems::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(AgentItems::getIsDeleted, 0)
|
|
|
+ .apply("find_in_set(bill_no,'" + billNo + "')"));
|
|
|
+ for (FeeCenter item : feeCentersWk) {
|
|
|
+ AgentFeeItemsReport agentFeeItemsReport = new AgentFeeItemsReport();
|
|
|
+ agentFeeItemsReport.setContractNo(item.getBillNo());
|
|
|
+ agentFeeItemsReport.setOrderNo(item.getOrderNo());
|
|
|
+ agentFeeItemsReport.setFactoryNumber(item.getFactoryNumber());
|
|
|
+ agentFeeItemsReport.setBillNo(item.getMblno());
|
|
|
+ agentFeeItemsReport.setBoxNo(item.getCntrNo());
|
|
|
+ agentFeeItemsReport.setGoodsName(item.getGoodsName());
|
|
|
+ if (!agentItemsList.isEmpty()) {
|
|
|
+ List<AgentItems> agentItems = agentItemsList.stream().filter(e -> e.getBillNo().equals(item.getMblno())).collect(Collectors.toList());
|
|
|
+ if (!agentItems.isEmpty()) {
|
|
|
+ agentFeeItemsReport.setAmountUsd(agentItems.stream().map(AgentItems::getAmount)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ if (ObjectUtils.isNotNull(agentItems.get(0).getEstimateReachHarbor())) {
|
|
|
+ agentFeeItemsReport.setEta(dateFormat.format(agentItems.get(0).getEstimateReachHarbor()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!agents.isEmpty()) {
|
|
|
+ Agent agent1 = agents.stream().filter(e -> e.getId().equals(item.getPid())).findFirst().orElse(null);
|
|
|
+ if (agent1 != null) {
|
|
|
+ agentFeeItemsReport.setSkAmountUsd(agent1.getPrepaidAmount());
|
|
|
|
|
|
- agentFeeReport.setDept(dept);
|
|
|
- map.put(MagicValues.DATA, agentFeeReport);
|
|
|
- } else {
|
|
|
- map.put(MagicValues.DATA, new AgentFeeReport());
|
|
|
- }
|
|
|
- } else if (MagicValues.BUSINESS.equals(reportCode) && MagicValues.BALANCE_PAYMENT.equals(groupCode) && MagicValues.MYDL_STL.equals(type)) {
|
|
|
- Agent agent = baseMapper.selectById(billId);
|
|
|
- DateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd");
|
|
|
- if (agent != null) {
|
|
|
- R<Dept> res = sysClient.getDept(agent.getAffiliatedCompanyId());
|
|
|
- Dept dept;
|
|
|
- if (res.isSuccess() && res.getData() != null) {
|
|
|
- dept = res.getData();
|
|
|
- String status = sysClient.getParamServiceNew("is.update.default");
|
|
|
- if ("1".equals(status)) {
|
|
|
- R<User> resUser = userClient.userInfoById(AuthUtil.getUserId());
|
|
|
- if (resUser.isSuccess() && resUser.getData() != null) {
|
|
|
- dept.setEmail(resUser.getData().getEmail());
|
|
|
- dept.setTel(resUser.getData().getPhone());
|
|
|
- dept.setContacts(resUser.getData().getRealName());
|
|
|
+ }
|
|
|
}
|
|
|
+ agentFeeItemsReport.setWkAmountUsd(item.getAmountLoc());
|
|
|
+ agentFeeItemsReport.setExchangeRate(item.getExrate());
|
|
|
+ agentFeeItemsReport.setAmount(agentFeeItemsReport.getWkAmountUsd().multiply(item.getExrate()).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ FeeCenter feeCenter = feeCenterListC.stream().filter(e -> e.getFeeCode().equals(item.getFeeCode())
|
|
|
+ && ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()) && "WK".equals(e.getFeeCode()))
|
|
|
+ .findFirst().orElse(null);
|
|
|
+ if (feeCenter != null) {
|
|
|
+ AgentRecordReport report = new AgentRecordReport();
|
|
|
+ if (ObjectUtils.isNotNull(feeCenter.getStlDate())) {
|
|
|
+ report.setDate(dateFormat.format(feeCenter.getStlDate()));
|
|
|
+ }
|
|
|
+ report.setExchangeRate(feeCenter.getDiscountExrate());
|
|
|
+ report.setDiscountAmount(item.getAmountLoc().multiply(feeCenter.getDiscountExrate()).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ reportList.add(report);
|
|
|
+ agentFeeItemsReport.setRealityExchangeRate(feeCenter.getStlExrate());
|
|
|
+ agentFeeItemsReport.setRealityAmount(item.getAmountLoc().multiply(feeCenter.getStlExrate()).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ } else {
|
|
|
+ agentFeeItemsReport.setRealityExchangeRate(null);
|
|
|
+ agentFeeItemsReport.setRealityAmount(null);
|
|
|
+ }
|
|
|
+ agentFeeItemsReportList.add(agentFeeItemsReport);
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(agentFeeReport.getRealityPostElectricFee())) {
|
|
|
+ agentFeeReport.setRealityPostElectricFee(agentFeeReport.getRealityPostElectricFee().add(
|
|
|
+ feeCenterListC.stream().filter(e -> e.getFeeCode().equals("YDF")
|
|
|
+ && ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ ));
|
|
|
+ } else {
|
|
|
+ agentFeeReport.setRealityPostElectricFee(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("YDF")
|
|
|
+ && ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(agentFeeReport.getRealityServiceCharge())) {
|
|
|
+ agentFeeReport.setRealityServiceCharge(agentFeeReport.getRealityServiceCharge().add(
|
|
|
+ feeCenterListC.stream().filter(e -> e.getFeeCode().equals("SXF")
|
|
|
+ && ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ ));
|
|
|
+ } else {
|
|
|
+ agentFeeReport.setRealityServiceCharge(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("SXF")
|
|
|
+ && ObjectUtils.isNotNull(e.getFeeType()) && "2".equals(e.getFeeType()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(agentFeeReport.getRealitySumAmount())) {
|
|
|
+ BigDecimal realityAmount = agentFeeItemsReportList.stream().map(AgentFeeItemsReport::getRealityAmount)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ agentFeeReport.setRealitySumAmount(realityAmount.add(agentFeeReport.getRealityPostElectricFee())
|
|
|
+ .add(agentFeeReport.getRealityServiceCharge()).add(agentFeeReport.getRealitySumAmount()));
|
|
|
+ } else {
|
|
|
+ BigDecimal realityAmount = agentFeeItemsReportList.stream().map(AgentFeeItemsReport::getRealityAmount)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ agentFeeReport.setRealitySumAmount(realityAmount.add(agentFeeReport.getRealityPostElectricFee()).add(agentFeeReport.getRealityServiceCharge()));
|
|
|
}
|
|
|
+ }
|
|
|
+ agentFeeReport.setPostElectricFee(agent.getPostElectricFee());
|
|
|
+ agentFeeReport.setServiceCharge(agent.getServiceCharge());
|
|
|
+ agentFeeReport.setSumAmount(agent.getActualAmount());
|
|
|
+ /*agentFeeReport.setRealityPostElectricFee(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("YDF"))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ agentFeeReport.setRealityServiceCharge(feeCenterListC.stream().filter(e -> e.getFeeCode().equals("SXF"))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));*/
|
|
|
+ agentFeeReport.setRemainingAmount(feeCenterList.stream().filter(e -> e.getFeeCode().equals("YFK")).map(FeeCenter::getAmount).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ agentFeeReport.setRepairAmount(agentFeeReport.getRealitySumAmount().subtract(agentFeeReport.getSumAmount())
|
|
|
+ .subtract(agentFeeReport.getRemainingAmount()));
|
|
|
+ if (new BigDecimal("0.00").compareTo(agentFeeReport.getRepairAmount()) > 0) {
|
|
|
+ agentFeeReport.setSurplusAmount(agentFeeReport.getRepairAmount().abs());
|
|
|
+ agentFeeReport.setRepairAmount(agentFeeReport.getRepairAmount().abs());
|
|
|
+ agentFeeReport.setText("需退金额:");
|
|
|
} else {
|
|
|
- throw new RuntimeException("获取报表表头数据失败");
|
|
|
+ agentFeeReport.setText("需补金额:");
|
|
|
}
|
|
|
- List<AgentItems> agentItemsList = agentItemsService.list(new LambdaQueryWrapper<AgentItems>()
|
|
|
- .eq(AgentItems::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(AgentItems::getIsDeleted, 0)
|
|
|
- .eq(AgentItems::getPid, agent.getId()));
|
|
|
- List<Agent> agentList = new ArrayList<>();
|
|
|
- List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
- .eq(FeeCenter::getPid, agent.getId())
|
|
|
- .eq(FeeCenter::getFeeType, "2")
|
|
|
- .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(FeeCenter::getIsDeleted, 0));
|
|
|
- if (!feeCenterList.isEmpty()) {
|
|
|
- List<Long> stlPids = feeCenterList.stream().map(FeeCenter::getStlPid)
|
|
|
- .filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
|
|
- if (!stlPids.isEmpty()) {
|
|
|
- agentList = baseMapper.selectList(new LambdaQueryWrapper<Agent>()
|
|
|
- .eq(Agent::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(Agent::getIsDeleted, 0)
|
|
|
- .eq(Agent::getBusinessType, "MYDL-STL")
|
|
|
- .in(Agent::getId, stlPids));
|
|
|
+ agentFeeReport.setDate(dateFormat.format(agent.getBusinessDate()));
|
|
|
+ agentFeeReport.setPaymentMethod(agent.getAdvanceRatio());
|
|
|
+
|
|
|
+ agentFeeReport.setReportPostElectricFee(agentFeeReport.getRealityPostElectricFee());
|
|
|
+ BigDecimal discountAmount = reportList.stream().map(AgentRecordReport::getDiscountAmount)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ 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(discountAmount);
|
|
|
+ if (amount.compareTo(new BigDecimal("1000")) > 0) {
|
|
|
+ agentFeeReport.setReportServiceCharge(new BigDecimal("1000"));
|
|
|
+ } else if (amount.compareTo(new BigDecimal("50")) < 0) {
|
|
|
+ agentFeeReport.setReportServiceCharge(new BigDecimal("50"));
|
|
|
+ } else {
|
|
|
+ agentFeeReport.setReportServiceCharge(amount);
|
|
|
}
|
|
|
} else {
|
|
|
- throw new RuntimeException("请先维护尾款费用信息");
|
|
|
+ agentFeeReport.setReportServiceCharge(new BigDecimal("0.00"));
|
|
|
}
|
|
|
- AgentFeeReport agentFeeReport = new AgentFeeReport();
|
|
|
- List<Map<String, Object>> mapList = new ArrayList<>();
|
|
|
- List<Long> stlPids = feeCenterList.stream().filter(e -> "WK".equals(e.getFeeCode())
|
|
|
- && "D".equals(e.getDc())).map(FeeCenter::getStlPid)
|
|
|
- .filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
|
|
- if (!agentList.isEmpty()) {
|
|
|
- List<Agent> agentList1 = agentList.stream().filter(e -> stlPids.contains(e.getId())).collect(Collectors.toList());
|
|
|
- for (Agent item : agentList1) {
|
|
|
- Map<String, Object> map1 = new HashMap<>();
|
|
|
- map1.put("time", dateFormat.format(item.getBusinessDate()));
|
|
|
- BigDecimal remainingAmount = feeCenterList.stream().filter(e -> "YFK".equals(e.getFeeCode())
|
|
|
- && "D".equals(e.getDc()) && "2".equals(e.getFeeType()) && item.getId().equals(e.getStlPid()))
|
|
|
- .map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- map1.put("amount", item.getActualAmount().add(item.getPostElectricFee())
|
|
|
- .add(item.getServiceCharge()).subtract(remainingAmount));
|
|
|
- mapList.add(map1);
|
|
|
+ agentFeeReport.setReportSumAmount(discountAmount.add(agentFeeReport.getReportPostElectricFee())
|
|
|
+ .add(agentFeeReport.getReportServiceCharge()));
|
|
|
+ agentFeeReport.setDiscountAmountSub(agentFeeReport.getRealitySumAmount().subtract(agentFeeReport.getReportSumAmount()));
|
|
|
+ agentFeeReport.setDept(dept);
|
|
|
+ agentFeeReport.setReportList(reportList);
|
|
|
+ List<AgentFeeItemsReport> agentFeeItemsReports = new ArrayList<>();
|
|
|
+ for (AgentFeeItemsReport item : agentFeeItemsReportList) {
|
|
|
+ if (!agentFeeItemsReports.isEmpty()) {
|
|
|
+ String billNo = agentFeeItemsReports.stream().map(AgentFeeItemsReport::getContractNo)
|
|
|
+ .filter(Objects::nonNull).collect(Collectors.joining(","));
|
|
|
+
|
|
|
+ if (billNo.contains(item.getContractNo())) {
|
|
|
+ if (ObjectUtils.isNotNull(item.getBillNo())) {
|
|
|
+ item.setSkAmountUsd(null);
|
|
|
+ } else {
|
|
|
+ item.setSkAmountUsd(null);
|
|
|
+ item.setWkAmountUsd(null);
|
|
|
+ item.setExchangeRate(null);
|
|
|
+ item.setAmount(null);
|
|
|
+ item.setSkAmount(null);
|
|
|
+ item.setWkAmount(null);
|
|
|
+ item.setRealityExchangeRate(null);
|
|
|
+ item.setRealityAmount(null);
|
|
|
+ }
|
|
|
+ agentFeeItemsReports.add(item);
|
|
|
+ } else {
|
|
|
+ agentFeeItemsReports.add(item);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ agentFeeItemsReports.add(item);
|
|
|
}
|
|
|
- agentFeeReport.setMapList(mapList.isEmpty() ? new ArrayList<>() : mapList);
|
|
|
}
|
|
|
- agentFeeReport.setDept(dept);
|
|
|
+ agentFeeReport.setSkItemsReports(agentFeeItemsReports);
|
|
|
map.put(MagicValues.DATA, agentFeeReport);
|
|
|
} else {
|
|
|
map.put(MagicValues.DATA, new AgentFeeReport());
|
|
|
@@ -3661,7 +3848,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
if (ObjectUtils.isNotNull(items.getPaymentRecord())) {
|
|
|
String[] arr = items.getPaymentRecord().split(",");
|
|
|
String[] newArr = new String[arr.length];
|
|
|
- for (int i = 0; i <= arr.length; i++) {
|
|
|
+ for (int i = 0; i < arr.length; i++) {
|
|
|
if (new BigDecimal("0").compareTo(firstPaidInPayment) != 0) {
|
|
|
if (arr[i].contains("应收首付款")) {
|
|
|
arr[i] = "【应收首付款】";
|
|
|
@@ -3782,7 +3969,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
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()) && 0 == e.getStlStatus()).collect(Collectors.toList());
|
|
|
+ List<FeeCenter> feeCenterList = feeCenters.stream().filter(e -> "C".equals(e.getDc()) && 1 == e.getStlStatus()).collect(Collectors.toList());
|
|
|
if (feeCenterList.isEmpty()) {
|
|
|
throw new RuntimeException("未找到应付费用明细");
|
|
|
}
|
|
|
@@ -3844,6 +4031,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
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.setPrepaidAmountStl(new BigDecimal("0.00"));
|
|
|
item.setFirstActualPayment(new BigDecimal("0.00"));
|
|
|
item.setFirstActualPaymentDate(null);
|
|
|
item.setOrderStatus("未付汇");
|
|
|
@@ -3854,6 +4042,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
BigDecimal amountWk = feeCenterList.stream().filter(e -> "WK".equals(e.getFeeCode()) && item.getContractNo().equals(e.getBillNo()))
|
|
|
.map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
item.setFinalPaymentInFull(item.getFinalPaymentInFull().subtract(amountWk));
|
|
|
+ item.setGoodsValueStl(item.getGoodsValueStl().subtract(amountWk));
|
|
|
item.setFinalPaymentInFullDate(null);
|
|
|
if (item.getFinalPaymentInFull().add(amountWk).compareTo(item.getFinalPaymentPayable()) == 0) {
|
|
|
item.setOrderStatus("未付汇");
|
|
|
@@ -3873,7 +4062,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
if (ObjectUtils.isNotNull(items.getPaymentRecord())) {
|
|
|
String[] arr = items.getPaymentRecord().split(",");
|
|
|
String[] newArr = new String[arr.length];
|
|
|
- for (int i = 0; i <= arr.length; i++) {
|
|
|
+ for (int i = 0; i < arr.length; i++) {
|
|
|
if (new BigDecimal("0").compareTo(firstActualPayment) != 0) {
|
|
|
if (arr[i].contains("应付首付款")) {
|
|
|
arr[i] = "【应付首付款】";
|
|
|
@@ -4179,8 +4368,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
feeCenter.setLineNo(lineNo);
|
|
|
feeCenter.setBillNo(detail.getContractNo());
|
|
|
feeCenter.setBillDate(detail.getBusinessDate());
|
|
|
- feeCenter.setCorpId(detail.getDomesticConsigneeId());
|
|
|
- feeCenter.setCorpCnName(detail.getDomesticConsigneeCname());
|
|
|
+ feeCenter.setCorpId(detail.getAbroadConsignorId());
|
|
|
+ feeCenter.setCorpCnName(detail.getAbroadConsignorCname());
|
|
|
feeCenter.setBillCorpId(detail.getCorpId());
|
|
|
feeCenter.setBillCorpCnName(detail.getCorpName());
|
|
|
feeCenter.setPolId(detail.getPolId());
|
|
|
@@ -4288,8 +4477,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
feeCenter.setLineNo(lineNo);
|
|
|
feeCenter.setBillNo(detail.getContractNo());
|
|
|
feeCenter.setBillDate(detail.getBusinessDate());
|
|
|
- feeCenter.setCorpId(detail.getDomesticConsigneeId());
|
|
|
- feeCenter.setCorpCnName(detail.getDomesticConsigneeCname());
|
|
|
+ feeCenter.setCorpId(detail.getAbroadConsignorId());
|
|
|
+ feeCenter.setCorpCnName(detail.getAbroadConsignorCname());
|
|
|
feeCenter.setBillCorpId(detail.getCorpId());
|
|
|
feeCenter.setBillCorpCnName(detail.getCorpName());
|
|
|
feeCenter.setPolId(detail.getPolId());
|