|
|
@@ -29,6 +29,7 @@ import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.core.tool.utils.BeanUtil;
|
|
|
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.BCorpsBank;
|
|
|
@@ -66,6 +67,7 @@ import org.springblade.los.finance.stl.service.IFinStlBillsService;
|
|
|
import org.springblade.los.trade.dto.AgentItemsR;
|
|
|
import org.springblade.los.trade.entity.*;
|
|
|
import org.springblade.los.trade.mapper.AgentMapper;
|
|
|
+import org.springblade.los.trade.report.*;
|
|
|
import org.springblade.los.trade.service.IAdvanceChargeItemService;
|
|
|
import org.springblade.los.trade.service.IAdvanceChargeService;
|
|
|
import org.springblade.los.trade.service.IAgentItemsService;
|
|
|
@@ -81,6 +83,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
+import java.text.DateFormat;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.ZoneId;
|
|
|
@@ -178,28 +181,30 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
} 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");
|
|
|
+ if (!ids.isEmpty()){
|
|
|
+ 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);
|
|
|
}
|
|
|
- recordList.add(record);
|
|
|
}
|
|
|
}
|
|
|
if (!recordList.isEmpty()) {
|
|
|
@@ -490,8 +495,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
item.setBusinessType(agent.getBusinessType());
|
|
|
item.setBillNo(agent.getBusinessNo());
|
|
|
item.setBillDate(agent.getBusinessDate());
|
|
|
- item.setCorpId(agent.getDomesticConsigneeId());
|
|
|
- item.setCorpCnName(agent.getDomesticConsigneeCname());
|
|
|
+ item.setCorpId(agent.getAbroadConsignorId());
|
|
|
+ item.setCorpCnName(agent.getAbroadConsignorCname());
|
|
|
item.setBillCorpId(agent.getCorpId());
|
|
|
item.setBillCorpCnName(agent.getCorpName());
|
|
|
item.setMblno(agent.getContractNo());
|
|
|
@@ -733,7 +738,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
Agent detail = baseMapper.selectById(agent.getId());
|
|
|
Agent agentNew = new Agent();
|
|
|
BeanUtil.copyProperties(detail, agentNew);
|
|
|
- List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ /*List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(FeeCenter::getIsDeleted, 0)
|
|
|
.eq(FeeCenter::getPid, agent.getId()));
|
|
|
@@ -890,7 +895,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
item.setAuditStatus("0");
|
|
|
}
|
|
|
agentNew.setFeeCenterListC(!feeCenterListC.isEmpty() ? feeCenterListC : new ArrayList<>());
|
|
|
- }
|
|
|
+ }*/
|
|
|
List<AgentItems> agentItemsList = agentItemsService.list(new LambdaQueryWrapper<AgentItems>()
|
|
|
.eq(AgentItems::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(AgentItems::getIsDeleted, 0)
|
|
|
@@ -911,6 +916,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
agentNew.setBusinessNo("");
|
|
|
agentNew.setBusinessStatus("录入");
|
|
|
agentNew.setOrderStatus(null);
|
|
|
+ agentNew.setBillNoFormat("MYDL");
|
|
|
+ agentNew.setBusinessTypeCode("MYDL");
|
|
|
return agentNew;
|
|
|
}
|
|
|
|
|
|
@@ -2101,6 +2108,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
bills.setBillType("DD");
|
|
|
bills.setBusinessType("SI");
|
|
|
bills.setSeaType("I");
|
|
|
+ bills.setBillDate(new Date());
|
|
|
bills.setBillNo((String) clientBillNo.getData());
|
|
|
bills.setCreateTime(new Date());
|
|
|
bills.setCreateUser(AuthUtil.getUserId());
|
|
|
@@ -2139,6 +2147,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
bills.setCommodityShName(agentItemsList.get(0).getLabelProductName());
|
|
|
bills.setCommodityCnName(agentItemsList.get(0).getLabelProductName());
|
|
|
bills.setCommodityEnName(agentItemsList.get(0).getLabelProductName());
|
|
|
+ bills.setCommodityDescr(agentItemsList.get(0).getLabelProductName());
|
|
|
bills.setMconsigneeCntyCode(agentItemsList.get(0).getOrderReleaseMethod());
|
|
|
StringBuilder ids = new StringBuilder();
|
|
|
for (AgentItems id : itemsList) {
|
|
|
@@ -2832,6 +2841,308 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
return detail;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public R getReportDataTrade(String billId, String reportCode, String groupCode, String itemIds, String type) {
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ R<Dept> res = sysClient.getDept(deptUtils.getDeptPid());
|
|
|
+ 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("获取报表表头数据失败");
|
|
|
+ }
|
|
|
+ if (MagicValues.BUSINESS.equals(reportCode) && MagicValues.ORDER_ALLOCATION.equals(groupCode) && MagicValues.MYDL.equals(type)) {
|
|
|
+ Agent agent = baseMapper.selectById(billId);
|
|
|
+ DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
|
|
|
+ AgentReport agentReport = new AgentReport();
|
|
|
+ if (agent != null) {
|
|
|
+ agentReport.setContractNo(agent.getContractNo());
|
|
|
+ // todo 发票
|
|
|
+ agentReport.setAgentFpReportList(new ArrayList<>());
|
|
|
+ List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getPid, agent.getId())
|
|
|
+ .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()) {
|
|
|
+ List<Agent> agentList = baseMapper.selectList(new LambdaQueryWrapper<Agent>()
|
|
|
+ .eq(Agent::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Agent::getIsDeleted, 0)
|
|
|
+ .eq(Agent::getBusinessType, "MYDL-STL")
|
|
|
+ .in(Agent::getId, stlPids));
|
|
|
+ if (!agentList.isEmpty()) {
|
|
|
+ //收款
|
|
|
+ List<FeeCenter> feeCenterListD = feeCenterList.stream().filter(e -> "D".equals(e.getDc())).collect(Collectors.toList());
|
|
|
+ if (!feeCenterListD.isEmpty()) {
|
|
|
+ List<AgentDReport> agentDReportList = new ArrayList<>();
|
|
|
+ List<Long> stlPidsD = feeCenterListD.stream().map(FeeCenter::getStlPid)
|
|
|
+ .filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
|
|
+ for (Long id : stlPidsD) {
|
|
|
+ Agent stlAgent = agentList.stream().filter(e -> e.getId().equals(id)).findFirst().orElse(null);
|
|
|
+ if (stlAgent != null) {
|
|
|
+ List<FeeCenter> feeCenters = feeCenterListD.stream().filter(e -> "WK,SFK".contains(e.getFeeCode())
|
|
|
+ && stlAgent.getId().equals(e.getStlPid())).collect(Collectors.toList());
|
|
|
+ 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));
|
|
|
+ agentDReportList.add(agentDReport);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ agentReport.setAgentDReportList(agentDReportList);
|
|
|
+ }
|
|
|
+ //付汇
|
|
|
+ List<FeeCenter> feeCenterListC = feeCenterList.stream().filter(e -> "C".equals(e.getDc())).collect(Collectors.toList());
|
|
|
+ if (!feeCenterListC.isEmpty()) {
|
|
|
+ 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) {
|
|
|
+ List<FeeCenter> feeCenters = feeCenterListC.stream().filter(e -> stlAgent.getId().equals(e.getStlPid()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (!feeCenters.isEmpty()) {
|
|
|
+ AgentCReport agentCReport = new AgentCReport();
|
|
|
+ agentCReport.setAbroadConsignorCname(feeCenters.get(0).getCorpCnName());
|
|
|
+ agentCReport.setPaymentTime(dateFormat.format(stlAgent.getBusinessDate()));
|
|
|
+ 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.setActualAmount(agentCReport.getPaymentInUsd().multiply(agentCReport.getExchangeRate()));
|
|
|
+ agentCReport.setPostElectricFee(feeCenters.stream().filter(e -> "YDF".equals(e.getFeeCode()))
|
|
|
+ .map(FeeCenter::getAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ agentCReport.setServiceCharge(feeCenters.stream().filter(e -> "SXF".equals(e.getFeeCode()))
|
|
|
+ .map(FeeCenter::getAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ agentCReportList.add(agentCReport);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ agentReport.setAgentCReportList(agentCReportList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<Bills> billsList = billsService.list(new LambdaQueryWrapper<Bills>()
|
|
|
+ .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Bills::getIsDeleted, 0)
|
|
|
+ .eq(Bills::getBookingNo, agent.getContractNo()));
|
|
|
+ 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>()
|
|
|
+ .eq(PreContainers::getIsDeleted, 0)
|
|
|
+ .eq(PreContainers::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .in(PreContainers::getPid, billIds));
|
|
|
+ for (Bills item : billsList) {
|
|
|
+ AgentBillReport agentBillReport = new AgentBillReport();
|
|
|
+ agentBillReport.setDeclarationDate(dateFormat.format(item.getBillDate()));
|
|
|
+ agentBillReport.setCustomsDeclarationNumber(item.getBillNo());
|
|
|
+ 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.setAmount(reduce);
|
|
|
+ }
|
|
|
+ agentBillReportList.add(agentBillReport);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ agentReport.setAgentBillReportList(agentBillReportList);
|
|
|
+ // todo 增值税
|
|
|
+ agentReport.setAgentZzsReportList(new ArrayList<>());
|
|
|
+ }
|
|
|
+ agentReport.setDept(dept);
|
|
|
+ map.put(MagicValues.DATA, agentReport);
|
|
|
+ } else if (MagicValues.BUSINESS.equals(reportCode) && MagicValues.THE_FIRST_ONE.equals(groupCode) && MagicValues.MYDL.equals(type)) {
|
|
|
+ Agent agent = baseMapper.selectById(billId);
|
|
|
+ DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ List<AgentSKReport> agentSKReportList = new ArrayList<>();
|
|
|
+ if (agent != null) {
|
|
|
+ List<AgentItems> agentItemsList = agentItemsService.list(new LambdaQueryWrapper<AgentItems>()
|
|
|
+ .eq(AgentItems::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(AgentItems::getIsDeleted, 0)
|
|
|
+ .eq(AgentItems::getPid, agent.getId())
|
|
|
+ .apply("find_in_set(id,'" + itemIds + "')"));
|
|
|
+ if (!agentItemsList.isEmpty()) {
|
|
|
+ List<Agent> agentList = new ArrayList<>();
|
|
|
+ List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getPid, agent.getId())
|
|
|
+ .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));
|
|
|
+ if (!agentList.isEmpty()) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<String> billNos = agentItemsList.stream().map(AgentItems::getBillNo).filter(Objects::nonNull)
|
|
|
+ .distinct().collect(Collectors.toList());
|
|
|
+ BigDecimal amount = agent.getPrepaidAmount();
|
|
|
+ BigDecimal sumAmount = agent.getGoodsValue();
|
|
|
+ for (String item : billNos) {
|
|
|
+ AgentSKReport agentSKReport = new AgentSKReport();
|
|
|
+ agentSKReport.setContractNo(agent.getContractNo());
|
|
|
+ agentSKReport.setBillNo(item);
|
|
|
+ agentSKReport.setPrepaidTime(dateFormat.format(agent.getBusinessDate()));
|
|
|
+ agentSKReport.setSkAmountUsd(sumAmount.subtract(amount));
|
|
|
+ List<FeeCenter> feeCenters = feeCenterList.stream().filter(e-> "SK".equals(e.getFeeCode())
|
|
|
+ && "D".equals(e.getDc())).collect(Collectors.toList());
|
|
|
+ if (!feeCenters.isEmpty()){
|
|
|
+ agentSKReport.setExchangeRate(feeCenters.get(0).getExrate());
|
|
|
+ }
|
|
|
+ agentSKReport.setSkAmount(feeCenterList.stream().filter(e-> "SK".equals(e.getFeeCode())&& "D".equals(e.getDc()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ agentSKReport.setPostElectricFee(feeCenterList.stream().filter(e-> "YDF".equals(e.getFeeCode())&& "D".equals(e.getDc()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ agentSKReport.setServiceCharge(feeCenterList.stream().filter(e-> "SXF".equals(e.getFeeCode())&& "D".equals(e.getDc()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ agentSKReport.setRemainingAmount(feeCenterList.stream().filter(e-> "YFK".equals(e.getFeeCode())&& "D".equals(e.getDc()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ agentSKReport.setSumAmount(agentSKReport.getSkAmount().add(agentSKReport.getPostElectricFee()
|
|
|
+ .add(agentSKReport.getServiceCharge()).subtract(agentSKReport.getRemainingAmount())));
|
|
|
+ List<FeeCenter> feeCentersC = feeCenterList.stream().filter(e-> "SK".equals(e.getFeeCode())
|
|
|
+ && "C".equals(e.getDc())).collect(Collectors.toList());
|
|
|
+ if (!feeCentersC.isEmpty()){
|
|
|
+ agentSKReport.setRealityExchangeRate(feeCentersC.get(0).getStlExrate());
|
|
|
+ }
|
|
|
+ agentSKReport.setRealitySkAmount(feeCenterList.stream().filter(e-> "SK".equals(e.getFeeCode())&& "C".equals(e.getDc()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ agentSKReport.setRealityPostElectricFee(feeCenterList.stream().filter(e-> "YDF".equals(e.getFeeCode())&& "C".equals(e.getDc()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ agentSKReport.setRealityServiceCharge(feeCenterList.stream().filter(e-> "SXF".equals(e.getFeeCode())&& "C".equals(e.getDc()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ agentSKReport.setRealitySumAmount(agentSKReport.getRealitySkAmount().add(agentSKReport.getRealityPostElectricFee()
|
|
|
+ .add(agentSKReport.getRealityServiceCharge())));
|
|
|
+ agentSKReport.setRepairAmount(agentSKReport.getRealitySumAmount().subtract(agentSKReport.getSumAmount())
|
|
|
+ .subtract(agentSKReport.getRemainingAmount()));
|
|
|
+ if (!agentList.isEmpty()){
|
|
|
+ if (!feeCentersC.isEmpty()){
|
|
|
+ Agent detail = agentList.stream().filter(e-> e.getId().equals(feeCentersC.get(0).getStlPid())).findFirst().orElse(null);
|
|
|
+ if (detail != null){
|
|
|
+ agentSKReport.setRealityTime(dateFormat.format(detail.getBusinessDate()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ agentSKReport.setAgentItems(agentItemsList.stream().filter(e-> e.getBillNo().equals(item)).collect(Collectors.toList()));
|
|
|
+ agentSKReportList.add(agentSKReport);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ map.put(MagicValues.DATA, agentSKReportList);
|
|
|
+ map.put("dept", dept);
|
|
|
+ } else if (MagicValues.BUSINESS.equals(reportCode) && MagicValues.BALANCE_PAYMENT.equals(groupCode) && MagicValues.MYDL.equals(type)) {
|
|
|
+ Agent agent = baseMapper.selectById(billId);
|
|
|
+ DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ List<AgentWKReport> agentWKReportList = new ArrayList<>();
|
|
|
+ if (agent != null) {
|
|
|
+ List<AgentItems> agentItemsList = agentItemsService.list(new LambdaQueryWrapper<AgentItems>()
|
|
|
+ .eq(AgentItems::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(AgentItems::getIsDeleted, 0)
|
|
|
+ .eq(AgentItems::getPid, agent.getId())
|
|
|
+ .apply("find_in_set(id,'" + itemIds + "')"));
|
|
|
+ if (!agentItemsList.isEmpty()) {
|
|
|
+ List<Agent> agentList = new ArrayList<>();
|
|
|
+ List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getPid, agent.getId())
|
|
|
+ .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));
|
|
|
+ if (!agentList.isEmpty()) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<String> billNos = agentItemsList.stream().map(AgentItems::getBillNo).filter(Objects::nonNull)
|
|
|
+ .distinct().collect(Collectors.toList());
|
|
|
+ BigDecimal amount = agent.getPrepaidAmount();
|
|
|
+ BigDecimal sumAmount = agent.getGoodsValue();
|
|
|
+ for (String item : billNos) {
|
|
|
+ AgentWKReport agentWKReport = new AgentWKReport();
|
|
|
+ agentWKReport.setContractNo(agent.getContractNo());
|
|
|
+ agentWKReport.setBillNo(item);
|
|
|
+ agentWKReport.setPrepaidAmount(amount);
|
|
|
+ agentWKReport.setPrepaidTime(dateFormat.format(agent.getBusinessDate()));
|
|
|
+ agentWKReport.setWkAmountUsd(sumAmount.subtract(amount));
|
|
|
+ List<FeeCenter> feeCenters = feeCenterList.stream().filter(e-> "WK".equals(e.getFeeCode())
|
|
|
+ && "D".equals(e.getDc())).collect(Collectors.toList());
|
|
|
+ if (!feeCenters.isEmpty()){
|
|
|
+ agentWKReport.setExchangeRate(feeCenters.get(0).getExrate());
|
|
|
+ }
|
|
|
+ agentWKReport.setWkAmount(feeCenterList.stream().filter(e-> "WK".equals(e.getFeeCode())&& "D".equals(e.getDc()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ agentWKReport.setPostElectricFee(feeCenterList.stream().filter(e-> "YDF".equals(e.getFeeCode())&& "D".equals(e.getDc()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ agentWKReport.setServiceCharge(feeCenterList.stream().filter(e-> "SXF".equals(e.getFeeCode())&& "D".equals(e.getDc()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ agentWKReport.setRemainingAmount(feeCenterList.stream().filter(e-> "YFK".equals(e.getFeeCode())&& "D".equals(e.getDc()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ agentWKReport.setSumAmount(agentWKReport.getWkAmount().add(agentWKReport.getPostElectricFee()
|
|
|
+ .add(agentWKReport.getServiceCharge()).subtract(agentWKReport.getRemainingAmount())));
|
|
|
+ List<FeeCenter> feeCentersC = feeCenterList.stream().filter(e-> "WK".equals(e.getFeeCode())
|
|
|
+ && "C".equals(e.getDc())).collect(Collectors.toList());
|
|
|
+ if (!feeCentersC.isEmpty()){
|
|
|
+ agentWKReport.setRealityExchangeRate(feeCentersC.get(0).getStlExrate());
|
|
|
+ }
|
|
|
+ agentWKReport.setRealityWkAmount(feeCenterList.stream().filter(e-> "WK".equals(e.getFeeCode())&& "C".equals(e.getDc()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ agentWKReport.setRealityPostElectricFee(feeCenterList.stream().filter(e-> "YDF".equals(e.getFeeCode())&& "C".equals(e.getDc()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ agentWKReport.setRealityServiceCharge(feeCenterList.stream().filter(e-> "SXF".equals(e.getFeeCode())&& "C".equals(e.getDc()))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ agentWKReport.setRealitySumAmount(agentWKReport.getRealityWkAmount().add(agentWKReport.getRealityPostElectricFee()
|
|
|
+ .add(agentWKReport.getRealityServiceCharge())));
|
|
|
+ agentWKReport.setRepairAmount(agentWKReport.getRealitySumAmount().subtract(agentWKReport.getSumAmount())
|
|
|
+ .subtract(agentWKReport.getRemainingAmount()));
|
|
|
+ if (!agentList.isEmpty()){
|
|
|
+ if (!feeCentersC.isEmpty()){
|
|
|
+ Agent detail = agentList.stream().filter(e-> e.getId().equals(feeCentersC.get(0).getStlPid())).findFirst().orElse(null);
|
|
|
+ if (detail != null){
|
|
|
+ agentWKReport.setRealityTime(dateFormat.format(detail.getBusinessDate()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ agentWKReport.setAgentItems(agentItemsList.stream().filter(e-> e.getBillNo().equals(item)).collect(Collectors.toList()));
|
|
|
+ agentWKReportList.add(agentWKReport);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ map.put(MagicValues.DATA, agentWKReportList);
|
|
|
+ map.put("dept", dept);
|
|
|
+ } else {
|
|
|
+ map.put(MagicValues.DATA, null);
|
|
|
+ }
|
|
|
+ return R.data(map);
|
|
|
+ }
|
|
|
+
|
|
|
private FeeCenter assemblyDataSK(String businessType, Agent detail, String type, long lineNo, int sort, long deptId, String deptName, List<BFees> feesList) {
|
|
|
FeeCenter feeCenter = new FeeCenter();
|
|
|
feeCenter.setFeeType("1");
|