Commit 0499ad85 authored by lixuan's avatar lixuan

feat: 房源

parent 9b13dbb7
Pipeline #145603 failed with stages
......@@ -68,4 +68,6 @@ public class BusinessEntityStatisticsDetail {
private BigDecimal xsCount = BigDecimal.ZERO;
private BigDecimal ssCount = BigDecimal.ZERO;
private BigDecimal gsSsCount = BigDecimal.ZERO;
}
......@@ -24,5 +24,7 @@ public class HouseResourceProfileGraph {
private Integer position;
private int houseCount;
private List<HouseResourcePage> houseResources;
}
......@@ -31,6 +31,7 @@ import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
......@@ -276,11 +277,6 @@ public class HouseResourceServiceImpl implements HouseResourceService {
collect.forEach((k, v) -> {
HouseResourceProfileGraph houseResourceProfileGraph = new HouseResourceProfileGraph();
houseResourceProfileGraph.setId(k);
if (!CollectionUtils.isEmpty(v)) {
if (Objects.nonNull(v.get(0).getHouseArea())) {
houseResourceProfileGraph.setAreaTotal(v.get(0).getHouseArea());
}
}
GridRegion gridRegion = gridRegionMapper.getWgLevel(k);
if (Objects.nonNull(gridRegion)) {
houseResourceProfileGraph.setWgName(gridRegion.getWgName());
......@@ -292,8 +288,37 @@ public class HouseResourceServiceImpl implements HouseResourceService {
}
}
houseResourceProfileGraph.setKzCount(v.stream().filter(x -> x.getHouseResourceType() == HouseEnums.HouseResourceTypeEnum.KZ.getCode()).count());
houseResourceProfileGraph.setKzArea(v.stream().filter(x -> x.getHouseResourceType() == HouseEnums.HouseResourceTypeEnum.KZ.getCode() || x.getHouseResourceType() == HouseEnums.HouseResourceTypeEnum.SBC.getCode()).map(HouseResourcePage::getHouseArea).reduce(BigDecimal.ZERO, BigDecimal::add));
houseResourceProfileGraph.setJyArea(v.stream().filter(x -> x.getHouseResourceType() == HouseEnums.HouseResourceTypeEnum.ZY.getCode() || x.getHouseResourceType() == HouseEnums.HouseResourceTypeEnum.GK.getCode() || x.getHouseResourceType() == HouseEnums.HouseResourceTypeEnum.ZYZY.getCode()).map(HouseResourcePage::getHouseArea).reduce(BigDecimal.ZERO, BigDecimal::add));
List<HouseResourcePage> distinctList = new ArrayList<>(v.stream().collect(Collectors.toMap(HouseResourcePage::getId, Function.identity(), (a, b) -> a)).values());
Map<String, List<HouseResourcePage>> houseMap = distinctList.stream().collect(Collectors.groupingBy(HouseResourcePage::getId));
BigDecimal kzArea = houseMap.values().stream()
.flatMap(List::stream)
.filter(house -> {
int type = house.getHouseResourceType();
return type == HouseEnums.HouseResourceTypeEnum.KZ.getCode() || type == HouseEnums.HouseResourceTypeEnum.SBC.getCode();
})
.map(HouseResourcePage::getHouseArea)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
houseResourceProfileGraph.setKzArea(kzArea);
BigDecimal jyArea = houseMap.values().stream()
.flatMap(List::stream)
.filter(house -> {
int type = house.getHouseResourceType();
return type == HouseEnums.HouseResourceTypeEnum.ZY.getCode() || type == HouseEnums.HouseResourceTypeEnum.GK.getCode() || type == HouseEnums.HouseResourceTypeEnum.ZYZY.getCode();
})
.map(HouseResourcePage::getHouseArea)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
houseResourceProfileGraph.setJyArea(jyArea);
BigDecimal totalArea = houseMap.values().stream()
.map(x -> x.stream()
.map(HouseResourcePage::getHouseArea)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add))
.reduce(BigDecimal.ZERO, BigDecimal::add);
houseResourceProfileGraph.setAreaTotal(totalArea);
houseResourceProfileGraph.setHouseCount(distinctList.size());
houseResourceProfileGraph.setHouseResources(v.stream().sorted(Comparator.comparing(HouseResourcePage::getHouseNumber, Comparator.nullsLast(String::compareTo))).collect(Collectors.toList()));
resourceProfileGraphList.add(houseResourceProfileGraph);
});
......@@ -326,8 +351,36 @@ public class HouseResourceServiceImpl implements HouseResourceService {
}
}
result.forEach(x -> {
x.setJyArea(x.getHouseResources().stream().filter(y -> y.getHouseResourceType() == HouseEnums.HouseResourceTypeEnum.ZY.getCode() || y.getHouseResourceType() == HouseEnums.HouseResourceTypeEnum.ZYZY.getCode() || y.getHouseResourceType() == HouseEnums.HouseResourceTypeEnum.GK.getCode()).map(HouseResourcePage::getHouseArea).reduce(BigDecimal.ZERO, BigDecimal::add));
x.setKzArea(x.getHouseResources().stream().filter(y -> y.getHouseResourceType() == HouseEnums.HouseResourceTypeEnum.KZ.getCode() || y.getHouseResourceType() == HouseEnums.HouseResourceTypeEnum.SBC.getCode()).map(HouseResourcePage::getHouseArea).reduce(BigDecimal.ZERO, BigDecimal::add));
List<HouseResourcePage> distinctList = new ArrayList<>(x.getHouseResources().stream().collect(Collectors.toMap(HouseResourcePage::getId, Function.identity(), (a, b) -> a)).values());
Map<String, List<HouseResourcePage>> houseMap = distinctList.stream().collect(Collectors.groupingBy(HouseResourcePage::getId));
BigDecimal kzArea = houseMap.values().stream()
.flatMap(List::stream)
.filter(house -> {
int type = house.getHouseResourceType();
return type == HouseEnums.HouseResourceTypeEnum.KZ.getCode() || type == HouseEnums.HouseResourceTypeEnum.SBC.getCode();
})
.map(HouseResourcePage::getHouseArea)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
x.setKzArea(kzArea);
BigDecimal jyArea = houseMap.values().stream()
.flatMap(List::stream)
.filter(house -> {
int type = house.getHouseResourceType();
return type == HouseEnums.HouseResourceTypeEnum.ZY.getCode() || type == HouseEnums.HouseResourceTypeEnum.GK.getCode() || type == HouseEnums.HouseResourceTypeEnum.ZYZY.getCode();
})
.map(HouseResourcePage::getHouseArea)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
x.setJyArea(jyArea);
BigDecimal totalArea = houseMap.values().stream()
.map(y -> y.stream()
.map(HouseResourcePage::getHouseArea)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add))
.reduce(BigDecimal.ZERO, BigDecimal::add);
x.setAreaTotal(totalArea);
x.setHouseCount(distinctList.size());
x.setKzCount(x.getHouseResources().stream().filter(y -> y.getHouseResourceType() == HouseEnums.HouseResourceTypeEnum.KZ.getCode() || y.getHouseResourceType() == HouseEnums.HouseResourceTypeEnum.SBC.getCode()).count());
});
return result.stream().sorted(Comparator.comparing(HouseResourceProfileGraph::getPosition, Comparator.nullsLast(Integer::compareTo))).collect(Collectors.toList());
......@@ -410,6 +463,7 @@ public class HouseResourceServiceImpl implements HouseResourceService {
CompletableFuture<BigDecimal> xsCountFuture = CompletableFuture.supplyAsync(() -> list.stream().map(HouseResourcePage::getIncome).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add), executor);
CompletableFuture<BigDecimal> ssCountFuture = CompletableFuture.supplyAsync(() -> list.stream().map(HouseResourcePage::getTaxCount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add), executor);
CompletableFuture<BigDecimal> gsSsCountFuture = CompletableFuture.supplyAsync(() -> list.stream().filter(x -> Objects.nonNull(x.getGs()) && x.getGs().equals(Boolean.TRUE)).map(HouseResourcePage::getTaxCount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add), executor);
CompletableFuture<Long> gsCountFuture = CompletableFuture.supplyAsync(() -> list.stream().filter(x -> Objects.nonNull(x.getGs()) && x.getGs().equals(Boolean.TRUE)).count(), executor);
List<String> houseResourceIds = list.stream().map(HouseResourcePage::getId).collect(Collectors.toList());
......@@ -447,6 +501,7 @@ public class HouseResourceServiceImpl implements HouseResourceService {
businessEntityStatisticsDetail.setXsCount(xsCountFuture.join());
businessEntityStatisticsDetail.setSsCount(ssCountFuture.join());
businessEntityStatisticsDetail.setGsSsCount(gsSsCountFuture.join());
businessEntityStatisticsDetail.setGsCount(gsCountFuture.join());
businessEntityStatisticsDetail.setGyCount(industrySellFutures.get("工业").join());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment