|
|
@@ -32,7 +32,6 @@ import org.springblade.los.Util.IDeptUtils;
|
|
|
import org.springblade.los.Util.MagicValues;
|
|
|
import org.springblade.los.basic.business.entity.BusinessType;
|
|
|
import org.springblade.los.basic.business.service.IBusinessTypeService;
|
|
|
-import org.springblade.los.basic.corps.entity.BCorps;
|
|
|
import org.springblade.los.basic.corps.entity.BCorpsBank;
|
|
|
import org.springblade.los.basic.corps.service.IBCorpsBankService;
|
|
|
import org.springblade.los.basic.corps.service.IBCorpsService;
|
|
|
@@ -764,6 +763,9 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
}
|
|
|
filesCenterService.saveOrUpdateBatch(agent.getFilesCenterList());
|
|
|
}
|
|
|
+ if (agent.getGoodsValue().compareTo(agent.getPrepaidAmount()) < 0) {
|
|
|
+ throw new RuntimeException("预付款不能大于货值");
|
|
|
+ }
|
|
|
return R.data(agent);
|
|
|
}
|
|
|
|
|
|
@@ -833,6 +835,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
auditProecessDTO.setSalesCompanyName(declare.getCreateDeptName());
|
|
|
auditProecessDTO.setPayAmount(declare.getSumAmount());
|
|
|
auditProecessDTO.setReceivableAmount(declare.getSumAmount());
|
|
|
+ auditProecessDTO.setReferenceNumber(declare.getBillNoJoin());
|
|
|
R financeProcess = auditProecessService.createFinanceProcess(auditProecessDTO);
|
|
|
if (!financeProcess.isSuccess()) {
|
|
|
throw new SecurityException("操作失败,请联系管理员");
|
|
|
@@ -1365,17 +1368,17 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
agentItemsService.updateBatchById(agentItemsList);
|
|
|
}
|
|
|
BigDecimal advanceChargeAmount = feeCenterList.stream().filter(e -> "YFK".equals(e.getFeeCode())).map(FeeCenter::getAmount)
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add).abs();
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
if (new BigDecimal("0").compareTo(advanceChargeAmount) != 0) {
|
|
|
AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
|
|
|
.eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(AdvanceCharge::getIsDeleted, 0)
|
|
|
.eq(AdvanceCharge::getCorpId, agentList.get(0).getCorpId()));
|
|
|
if (advanceCharge != null) {
|
|
|
- if (advanceCharge.getAdvancePaymentBalance().compareTo(advanceChargeAmount) < 0) {
|
|
|
+ /*if (advanceCharge.getAdvancePaymentBalance().compareTo(advanceChargeAmount) < 0) {
|
|
|
throw new RuntimeException("当前客户" + agentList.get(0).getCorpName() + "剩余预付款:" + advanceCharge.getAdvancePaymentBalance() +
|
|
|
"小于本次使用预付款:" + advanceChargeAmount + ",确认收款失败!");
|
|
|
- }
|
|
|
+ }*/
|
|
|
advanceCharge.setAdvancePaymentBalance(advanceCharge.getAdvancePaymentBalance().subtract(advanceChargeAmount));
|
|
|
advanceCharge.setOutOverpaymen(advanceCharge.getOutOverpaymen().subtract(advanceChargeAmount));
|
|
|
advanceChargeService.updateById(advanceCharge);
|
|
|
@@ -1814,6 +1817,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
auditProecessDTO.setCorpId(declare.getCorpId());
|
|
|
auditProecessDTO.setSalesCompanyId(deptUtils.getDeptPid());
|
|
|
auditProecessDTO.setSalesCompanyName(declare.getCreateDeptName());
|
|
|
+ auditProecessDTO.setReferenceNumber(declare.getBillNoJoin());
|
|
|
if ("D".equals(declare.getDc())) {
|
|
|
auditProecessDTO.setReceivableAmount(feeCentersList.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
} else {
|
|
|
@@ -2568,6 +2572,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
data.setPodCnName(item.getPodCnName());
|
|
|
data.setPodCode(item.getPodCode());
|
|
|
data.setPodEnName(item.getPodEnName());
|
|
|
+ data.setRemarks(item.getRemarks());
|
|
|
if ("D".equals(item.getDc())) {
|
|
|
data.setAmountDr(item.getAmount());
|
|
|
data.setAmountCr(new BigDecimal("0.00"));
|
|
|
@@ -3474,12 +3479,16 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
if (stlAgent != null) {
|
|
|
List<FeeCenter> feeCenters = feeCenterListD.stream().filter(e -> "WK,SFK".contains(e.getFeeCode())
|
|
|
&& stlAgent.getId().equals(e.getStlPid())).collect(Collectors.toList());
|
|
|
+ BigDecimal feeCentersSY = feeCenterListD.stream().filter(e -> "SXF,YDF".contains(e.getFeeCode())
|
|
|
+ && stlAgent.getId().equals(e.getStlPid())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add);
|
|
|
+ BigDecimal feeCentersYFK = feeCenterListD.stream().filter(e -> "YFK".contains(e.getFeeCode())
|
|
|
+ && stlAgent.getId().equals(e.getStlPid())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add);
|
|
|
if (!feeCenters.isEmpty()) {
|
|
|
AgentDReport agentDReport = new AgentDReport();
|
|
|
agentDReport.setRemitter(feeCenters.get(0).getCorpCnName());
|
|
|
agentDReport.setRemittanceTime(dateFormat.format(stlAgent.getBusinessDate()));
|
|
|
- agentDReport.setRemittanceAmount(feeCenters.stream().map(FeeCenter::getAmountLoc)
|
|
|
- .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ agentDReport.setRemittanceAmount(feeCenters.stream().map(FeeCenter::getAmount)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).add(feeCentersSY).subtract(feeCentersYFK));
|
|
|
agentDReportList.add(agentDReport);
|
|
|
}
|
|
|
}
|
|
|
@@ -3492,6 +3501,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
List<AgentCReport> agentCReportList = new ArrayList<>();
|
|
|
List<Long> stlPidsC = feeCenterListC.stream().map(FeeCenter::getStlPid)
|
|
|
.filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
|
|
+
|
|
|
for (Long id : stlPidsC) {
|
|
|
Agent stlAgent = agentList.stream().filter(e -> e.getId().equals(id)).findFirst().orElse(null);
|
|
|
if (stlAgent != null) {
|
|
|
@@ -3504,7 +3514,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
agentCReport.setDeclarationNumber(stlAgent.getDeclarationNumber());
|
|
|
agentCReport.setPaymentInUsd(feeCenters.stream().filter(e -> "WK,SFK".contains(e.getFeeCode()))
|
|
|
.map(FeeCenter::getAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- agentCReport.setExchangeRate(stlAgent.getExchangeRate());
|
|
|
+ agentCReport.setExchangeRate(feeCenters.get(0).getDiscountExrate());
|
|
|
agentCReport.setActualAmount(agentCReport.getPaymentInUsd().multiply(agentCReport.getExchangeRate()));
|
|
|
agentCReport.setPostElectricFee(feeCenters.stream().filter(e -> "YDF".equals(e.getFeeCode()))
|
|
|
.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
@@ -3518,6 +3528,16 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ // todo 增值税
|
|
|
+ List<AgentZzsReport> agentZzsReportList = new ArrayList<>();
|
|
|
+ List<FeeCenter> feeCenterListC = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) &&
|
|
|
+ "ZZS".equals(e.getFeeCode())).collect(Collectors.toList());
|
|
|
+ for (FeeCenter item : feeCenterListC){
|
|
|
+ AgentZzsReport agentZzsReport = new AgentZzsReport();
|
|
|
+ agentZzsReport.setValueAddedTax(item.getAmount());
|
|
|
+ agentZzsReportList.add(agentZzsReport);
|
|
|
+ }
|
|
|
+ agentReport.setAgentZzsReportList(agentZzsReportList);
|
|
|
}
|
|
|
List<Bills> billsList = billsService.list(new LambdaQueryWrapper<Bills>()
|
|
|
.eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
@@ -3526,29 +3546,24 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
List<AgentBillReport> agentBillReportList = new ArrayList<>();
|
|
|
if (!billsList.isEmpty()) {
|
|
|
List<Long> billIds = billsList.stream().map(Bills::getId).distinct().collect(Collectors.toList());
|
|
|
- List<PreContainers> preContainersList = preContainersService.list(new LambdaQueryWrapper<PreContainers>()
|
|
|
+ /*List<PreContainers> preContainersList = preContainersService.list(new LambdaQueryWrapper<PreContainers>()
|
|
|
.eq(PreContainers::getIsDeleted, 0)
|
|
|
.eq(PreContainers::getTenantId, AuthUtil.getTenantId())
|
|
|
- .in(PreContainers::getPid, billIds));
|
|
|
+ .in(PreContainers::getPid, billIds));*/
|
|
|
for (Bills item : billsList) {
|
|
|
AgentBillReport agentBillReport = new AgentBillReport();
|
|
|
agentBillReport.setDeclarationDate(dateFormat.format(item.getBillDate()));
|
|
|
- agentBillReport.setCustomsDeclarationNumber(item.getBillNo());
|
|
|
+ agentBillReport.setCustomsDeclarationNumber(item.getMnotify2CntyName());
|
|
|
agentBillReport.setGoodsName(item.getCommodityCnName());
|
|
|
- agentBillReport.setNumber(item.getQuantity());
|
|
|
- if (!preContainersList.isEmpty()) {
|
|
|
- BigDecimal reduce = preContainersList.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getPrice().multiply(y.getNumber())), BigDecimal::add);
|
|
|
+ agentBillReport.setNumber(item.getNetWeight());
|
|
|
+ if (!agentItemsList.isEmpty()) {
|
|
|
+ BigDecimal reduce = agentItemsList.stream().filter(e-> item.getMblno().equals(e.getBillNo())).map(AgentItems::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
agentBillReport.setAmount(reduce);
|
|
|
}
|
|
|
agentBillReportList.add(agentBillReport);
|
|
|
}
|
|
|
}
|
|
|
agentReport.setAgentBillReportList(agentBillReportList);
|
|
|
- // todo 增值税
|
|
|
- List<AgentZzsReport> agentZzsReportList = new ArrayList<>();
|
|
|
- AgentZzsReport agentZzsReport = new AgentZzsReport();
|
|
|
- agentZzsReportList.add(agentZzsReport);
|
|
|
- agentReport.setAgentZzsReportList(agentZzsReportList);
|
|
|
agentReport.setDept(dept);
|
|
|
}
|
|
|
agentReport.setAgentDReportList(ObjectUtils.isNull(agentReport.getAgentDReportList()) ? new ArrayList<>() : agentReport.getAgentDReportList());
|
|
|
@@ -3834,6 +3849,278 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
} else {
|
|
|
map.put(MagicValues.DATA, new AgentFeeReport());
|
|
|
}
|
|
|
+ } else if (MagicValues.BUSINESS.equals(reportCode) && MagicValues.THE_FIRST_ONE_CORP.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());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("获取报表表头数据失败");
|
|
|
+ }
|
|
|
+ AgentFeeReport agentFeeReport = new AgentFeeReport();
|
|
|
+ List<AgentFeeItemsReport> agentFeeItemsReportList = new ArrayList<>();
|
|
|
+ List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getStlPid, agent.getId())
|
|
|
+ .eq(FeeCenter::getDc, "D")
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0));
|
|
|
+ if (feeCenterList.isEmpty()) {
|
|
|
+ throw new RuntimeException("请先维护首款费用信息");
|
|
|
+ }
|
|
|
+ List<Long> ids = feeCenterList.stream().map(FeeCenter::getPid).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ 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<AgentRecordReport> reportList = new ArrayList<>();
|
|
|
+ List<FeeCenter> feeCentersSk = feeCenterList.stream().filter(e -> ObjectUtils.isNotNull(e.getFeeType()) &&
|
|
|
+ "1".equals(e.getFeeType()) && "SFK".equals(e.getFeeCode()))
|
|
|
+ .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
|
|
|
+ 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) {
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ 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::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());
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ 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 {
|
|
|
+ agentFeeReport.setText("需补金额:");
|
|
|
+ }
|
|
|
+ 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).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ 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 {
|
|
|
+ agentFeeReport.setReportServiceCharge(new BigDecimal("0.00"));
|
|
|
+ }
|
|
|
+ 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.setSkItemsReports(agentFeeItemsReports);
|
|
|
+ map.put(MagicValues.DATA, agentFeeReport);
|
|
|
+ } else {
|
|
|
+ map.put(MagicValues.DATA, new AgentFeeReport());
|
|
|
+ }
|
|
|
} else if (MagicValues.COST.equals(reportCode) && MagicValues.RECEIVABLE.equals(groupCode) && MagicValues.MYDL.equals(type)) {
|
|
|
Agent agent = baseMapper.selectById(billId);
|
|
|
if (agent != null) {
|
|
|
@@ -4069,7 +4356,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
agentItemsService.updateBatchById(agentItemsList);
|
|
|
}
|
|
|
BigDecimal advanceChargeAmount = feeCenterList.stream().filter(e -> "YFK".equals(e.getFeeCode())).map(FeeCenter::getAmount)
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add).abs();
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
if (new BigDecimal("0").compareTo(advanceChargeAmount) != 0) {
|
|
|
AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
|
|
|
.eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
|
|
|
@@ -4403,6 +4690,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
feeCenter.setPid(detail.getId());
|
|
|
feeCenter.setLineNo(lineNo);
|
|
|
feeCenter.setBillNo(detail.getContractNo());
|
|
|
+ feeCenter.setMblno(detail.getBillNoJoin());
|
|
|
feeCenter.setBillDate(detail.getBusinessDate());
|
|
|
feeCenter.setCorpId(detail.getCorpId());
|
|
|
feeCenter.setCorpCnName(detail.getCorpName());
|