package com.zzg.system.service.state.impl;
|
|
import cn.hutool.core.util.ObjectUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.github.pagehelper.PageInfo;
|
import com.zzg.common.core.domain.entity.state.StateAgreement;
|
import com.zzg.common.core.domain.entity.state.StateAsset;
|
import com.zzg.common.core.domain.entity.state.StateHousehold;
|
import com.zzg.common.core.domain.entity.state.StateHouseholdOwner;
|
import com.zzg.common.core.domain.entity.state.StateProject;
|
import com.zzg.common.core.domain.entity.state.StateProjectInfo;
|
import com.zzg.common.core.domain.entity.state.StateSettlement;
|
import com.zzg.common.core.domain.entity.system.SysDictData;
|
import com.zzg.common.enums.AgreementTypeEnum;
|
import com.zzg.common.enums.CompensationCategoryEnum;
|
import com.zzg.common.enums.DeleteFlagEnum;
|
import com.zzg.common.enums.StateProjectStatusEnum;
|
import com.zzg.common.enums.SubmitStatusEnum;
|
import com.zzg.common.utils.DateUtil;
|
import com.zzg.common.utils.DateUtils;
|
import com.zzg.common.utils.PageUtils;
|
import com.zzg.common.utils.StringUtils;
|
import com.zzg.system.convert.StateProjectConvert;
|
import com.zzg.system.domain.bo.PlacementStatisticsBO;
|
import com.zzg.system.domain.bo.ProjectStatisticsBO;
|
import com.zzg.system.domain.vo.AssetGraphVO;
|
import com.zzg.system.domain.vo.AssetMoneyVO;
|
import com.zzg.system.domain.vo.HouseholdVO;
|
import com.zzg.system.domain.vo.PlacementStatisticsVO;
|
import com.zzg.system.domain.vo.PlacementStreetAreaVO;
|
import com.zzg.system.domain.vo.PlacementStreetMoneyVO;
|
import com.zzg.system.domain.vo.PlacementStreetVO;
|
import com.zzg.system.domain.vo.ProjectAnalysisSumVO;
|
import com.zzg.system.domain.vo.ProjectDataCenterStreetVO;
|
import com.zzg.system.domain.vo.ProjectDataCenterTypeVO;
|
import com.zzg.system.domain.vo.ProjectExecutionSumVO;
|
import com.zzg.system.domain.vo.ProjectStatusExpiredVO;
|
import com.zzg.system.domain.vo.TransitionPageVO;
|
import com.zzg.system.mapper.state.StateAssetMapper;
|
import com.zzg.system.service.state.StateAgreementService;
|
import com.zzg.system.service.state.StateDateCenterService;
|
import com.zzg.system.service.state.StateHouseholdOwnerService;
|
import com.zzg.system.service.state.StateHouseholdService;
|
import com.zzg.system.service.state.StateProjectInfoService;
|
import com.zzg.system.service.state.StateProjectService;
|
import com.zzg.system.service.state.StateSettlementService;
|
import com.zzg.system.service.system.ISysDictTypeService;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.context.annotation.Lazy;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.math.RoundingMode;
|
import java.sql.Timestamp;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Objects;
|
import java.util.function.Function;
|
import java.util.stream.Collectors;
|
|
@Service
|
@RequiredArgsConstructor
|
public class StateDataCenterServiceImpl implements StateDateCenterService {
|
|
private final StateProjectService stateProjectService;
|
private final StateHouseholdService stateHouseholdService;
|
private final StateAgreementService agreementService;
|
private final StateSettlementService stateSettlementService;
|
private final StateProjectInfoService stateProjectInfoService;
|
private final StateSettlementService settlementService;
|
private final StateAssetMapper assetMapper;
|
|
@Resource
|
@Lazy
|
private final StateHouseholdOwnerService stateHouseholdOwnerService;
|
|
@Resource
|
@Lazy
|
private final ISysDictTypeService dictTypeService;
|
|
|
//计算最上面顶部统计数据
|
@Override
|
public ProjectAnalysisSumVO projectSumCount(String location, Integer projectStatus, Date projectStartTime) {
|
LambdaQueryWrapper<StateProject> stateProjectQueryWrapper = new LambdaQueryWrapper<>();
|
stateProjectQueryWrapper.ne(StateProject::getStatus,StateProjectStatusEnum.CANCELLATION.getKey());
|
stateProjectQueryWrapper.eq(StateProject::getDelFlag,DeleteFlagEnum.NOT_DELETED.getKey());
|
if (org.apache.commons.lang3.StringUtils.isNotBlank(location)) {
|
stateProjectQueryWrapper.like(StateProject::getStreet, location);
|
}
|
if (Objects.nonNull(projectStatus)) {
|
stateProjectQueryWrapper.eq(StateProject::getStatus, projectStatus);
|
}
|
if (Objects.nonNull(projectStartTime)) {
|
stateProjectQueryWrapper.eq(StateProject::getStartTime, projectStartTime);
|
}
|
List<StateProject> stateProjects = stateProjectService.list(stateProjectQueryWrapper);
|
if (CollectionUtils.isEmpty(stateProjects)) {
|
return new ProjectAnalysisSumVO();
|
}
|
|
ProjectAnalysisSumVO result = new ProjectAnalysisSumVO();
|
List<String> projectIdList = stateProjects.stream().map(StateProject::getId).collect(Collectors.toList());
|
|
//查询项目信息
|
LambdaQueryWrapper<StateProjectInfo> stateProjectInfoQueryWrapper = new LambdaQueryWrapper<>();
|
stateProjectInfoQueryWrapper.in(StateProjectInfo::getProjectId, projectIdList);
|
List<StateProjectInfo> stateProjectInfos = stateProjectInfoService.list(stateProjectInfoQueryWrapper);
|
|
//组装查询的房产总面积以及合同金额
|
LambdaQueryWrapper<StateHousehold> stateHouseholdQueryWrapper = new LambdaQueryWrapper<>();
|
stateHouseholdQueryWrapper.eq(StateHousehold::getDelFlag,DeleteFlagEnum.NOT_DELETED.getKey());
|
stateHouseholdQueryWrapper.in(StateHousehold::getStateProjectId, projectIdList);
|
if(ObjectUtil.isNotEmpty(location)){
|
stateHouseholdQueryWrapper.like(StateHousehold::getBelongingStreetTown,location);
|
}
|
List<StateHousehold> stateHouseholds = stateHouseholdService.list(stateHouseholdQueryWrapper);
|
|
result.setTotalProjects((long) stateProjects.size());
|
if (CollectionUtils.isEmpty(stateHouseholds)) {
|
result.setInvolvedHouses(0L);
|
result.setTotalArea(BigDecimal.ZERO);
|
result.setTotalAgreementMoney(BigDecimal.valueOf(0.0));
|
return result;
|
}
|
|
Map<String, List<StateHousehold>> houseMap = stateHouseholds.stream().collect(Collectors.groupingBy(StateHousehold::getStateProjectId));
|
|
//查询协议 只要审核通过的协议数据(下面过滤)
|
List<String> acceptHouseId = stateHouseholds.stream()
|
.filter(data -> Objects.nonNull(data.getAgreementStatus()) && Objects.equals(data.getAgreementStatus(), SubmitStatusEnum.ACCEPT.getValue()))
|
.map(StateHousehold::getId).collect(Collectors.toList());
|
|
LambdaQueryWrapper<StateAgreement> stateAgreementQueryWrapper = new LambdaQueryWrapper<>();
|
stateAgreementQueryWrapper.isNotNull(StateAgreement::getAgreementNumber);
|
stateAgreementQueryWrapper.in(StateAgreement::getStateHouseholdId, acceptHouseId);
|
List<StateAgreement> agreementList = new ArrayList<>();
|
if (!CollectionUtils.isEmpty(acceptHouseId)) {
|
agreementList = agreementService.list(stateAgreementQueryWrapper);
|
}
|
Map<String, List<StateAgreement>> agreementMap = agreementList.stream().collect(Collectors.groupingBy(StateAgreement::getStateHouseholdId));
|
|
//组装金额/面积/户数
|
result.setInvolvedHouses((long) stateHouseholds.size());
|
|
double totalArea = stateHouseholds.stream().mapToDouble(StateHousehold::getHouseHoldArea).sum();
|
|
BigDecimal bd = new BigDecimal(totalArea).setScale(2, RoundingMode.HALF_UP);
|
|
result.setTotalArea(bd);
|
|
double totalAgreementMoney = 0;
|
|
Map<Integer, List<StateProject>> projectStatusMap = stateProjects.stream().collect(Collectors.groupingBy(StateProject::getStatus));
|
//根据项目阶段处理金额
|
for (Integer status : projectStatusMap.keySet()) {
|
if (Objects.equals(status, StateProjectStatusEnum.SIMULATE.getKey())
|
|| Objects.equals(status, StateProjectStatusEnum.CANCELLATION.getKey())) {
|
totalAgreementMoney += calculateMoney(status,
|
projectStatusMap, houseMap, agreementList, AgreementTypeEnum.VIRTUAL_STATE_AGREEMENT.getValue());
|
|
} else if (Objects.equals(status, StateProjectStatusEnum.LEVY.getKey())
|
|| Objects.equals(status, StateProjectStatusEnum.SUCCESS.getKey())) {
|
totalAgreementMoney += calculateMoney(status,
|
projectStatusMap, houseMap, agreementList, AgreementTypeEnum.STATE_AGREEMENT.getValue());
|
|
}
|
}
|
result.setTotalAgreementMoney(BigDecimal.valueOf(totalAgreementMoney).setScale(4, RoundingMode.HALF_UP));
|
|
//组装项目阶段人数
|
/*
|
1:入户调查阶段人数 指未签订协议人数 逻辑 总房数 - 协议中去重的房数
|
2:模拟阶段人数 指只签订了模拟协议的数量,在计算总的金额的时候进行计算
|
3:正式阶段人数 指签订了正式协议的数量 在计算总的金额的时候进行计算
|
4:已完成人数 在安置中能查到数据就一定是签订的
|
*/
|
|
/*
|
* 对于模拟协议的人员计算 需要判断他是否只签订了模拟协议 ,因为正式协议有可能是模拟协议转过去的 需要排除这种情况 但是对于正式协议人员 只需要判断正式协议否存在即可
|
* 此处是根据houseId进行分类 所以没有去重处理
|
*/
|
|
for (String houseId : agreementMap.keySet()) {
|
List<StateAgreement> agreements = agreementMap.get(houseId);
|
Map<Integer, StateAgreement> agreementTypeMap = agreements.stream().collect(Collectors.toMap(StateAgreement::getAgreementFileType, Function.identity()));
|
if (!agreementTypeMap.containsKey(AgreementTypeEnum.STATE_AGREEMENT.getValue()) && agreementTypeMap.containsKey(AgreementTypeEnum.VIRTUAL_STATE_AGREEMENT.getValue())) {
|
} else if (agreementTypeMap.containsKey(AgreementTypeEnum.STATE_AGREEMENT.getValue())) {
|
}
|
}
|
|
// HOUSE(0,"入户调查","house"),
|
// SIMULATE(1,"模拟征收", "simulate"),
|
// SIGNED(2,"正式征收", "signed"),
|
// SETTLED(3,"已完成", "settled");
|
|
result.setStatusSumVOMap(appendProcessStatusMap(stateProjects));
|
|
result.setDataCenterStreetVOList(listStreetAndNumber(stateProjects, location));
|
|
result.setProjectTypeVOList(listProjectTypeMap(stateProjectInfos));
|
|
return result;
|
}
|
|
/**
|
* 项目统计-模拟征收超期项目
|
* @param projectStatisticsBO
|
* @return
|
*/
|
@Override
|
public PageInfo<ProjectStatusExpiredVO> expiredProjectStatus(ProjectStatisticsBO projectStatisticsBO) {
|
|
//这里前端对于全部的阶段类型而言 传的
|
if (Objects.nonNull(projectStatisticsBO.getProjectStatus()) && !Objects.equals(projectStatisticsBO.getProjectStatus(), StateProjectStatusEnum.SIMULATE.getKey())) {
|
return new PageInfo<>();
|
}
|
projectStatisticsBO.setProjectStatus(StateProjectStatusEnum.SIMULATE.getKey());
|
|
PageUtils.startPage();
|
List<ProjectStatusExpiredVO> statusExpiredVOS = stateProjectService.pageInfoExpired(projectStatisticsBO);
|
if (CollectionUtils.isEmpty(statusExpiredVOS)) {
|
return new PageInfo<>();
|
}
|
PageInfo<ProjectStatusExpiredVO> pageInfo = new PageInfo<>(statusExpiredVOS);
|
return pageInfo;
|
}
|
|
/**
|
* 获取数据中心安置情况模块 中间的饼图
|
* @param projectStreet
|
* @param projectStartTime
|
* @param type
|
* @return
|
*/
|
@Override
|
public PlacementStatisticsVO placementStatistics(String projectStreet, Date projectStartTime, Integer type) {
|
|
List<StateProject> list = appendQueryWrapper(projectStreet, projectStartTime);
|
if (CollectionUtils.isEmpty(list)) {
|
return new PlacementStatisticsVO();
|
}
|
List<String> prjectIdList = list.stream().map(StateProject::getId).collect(Collectors.toList());
|
Map<String, Map<Integer, ProjectExecutionSumVO>> listProjectExecutionByProjectId = settlementService.listProjectExecutionByProjectId(prjectIdList, projectStreet);
|
|
|
//安置情况
|
long settleNum = 0;
|
long totalSettleNum = 0;
|
// 初始化累加器
|
long totalMoneyCompensationPersons = 0L;
|
long totalGoodsCompensationPersons = 0L;
|
|
LambdaQueryWrapper<StateHousehold> householdQueryWrapper = new LambdaQueryWrapper<>();
|
householdQueryWrapper.in(StateHousehold::getStateProjectId, prjectIdList);
|
householdQueryWrapper.eq(StateHousehold::getDelFlag, DeleteFlagEnum.NOT_DELETED.getKey());
|
if (ObjectUtil.isNotEmpty(projectStreet)) {
|
householdQueryWrapper.like(StateHousehold::getBelongingStreetTown, projectStreet);
|
}
|
List<StateHousehold> households = stateHouseholdService.list(householdQueryWrapper);
|
if (CollectionUtils.isNotEmpty(households)) {
|
|
totalSettleNum = households.size();
|
//已安置
|
LambdaQueryWrapper<StateSettlement> stateSettlementQueryWrapper = new LambdaQueryWrapper<>();
|
stateSettlementQueryWrapper.in(StateSettlement::getStateHouseholdId, households
|
.stream().map(StateHousehold::getId).collect(Collectors.toList()));
|
stateSettlementQueryWrapper.eq(StateSettlement::getAuditStatus, SubmitStatusEnum.ACCEPT.getValue());
|
stateSettlementQueryWrapper.eq(StateSettlement::getDelFlag, DeleteFlagEnum.NOT_DELETED.getKey());
|
List<StateSettlement> stateSettlementList = stateSettlementService.list(stateSettlementQueryWrapper);
|
|
settleNum = ObjectUtil.isNotEmpty(stateSettlementList) ? stateSettlementList.size() : 0;
|
totalSettleNum = totalSettleNum - settleNum;
|
|
if (ObjectUtil.isEmpty(stateSettlementList)) {
|
totalMoneyCompensationPersons = 0;
|
totalGoodsCompensationPersons = 0;
|
} else {
|
List<String> settleHouseId = stateSettlementList.stream().map(StateSettlement::getStateHouseholdId).collect(Collectors.toList());
|
LambdaQueryWrapper<StateHousehold> settleHouse = new LambdaQueryWrapper<>();
|
settleHouse.in(StateHousehold::getId, settleHouseId);
|
settleHouse.eq(StateHousehold::getDelFlag, DeleteFlagEnum.NOT_DELETED.getKey());
|
List<StateHousehold> settleHousehold = stateHouseholdService.list(settleHouse);
|
//房产安置方式统计(子统计审核通过的)
|
if (ObjectUtil.isNotEmpty(settleHousehold)) {
|
List<StateHousehold> hbbc = settleHousehold.stream().filter(stateHousehold -> stateHousehold.getCompensationType().equals(CompensationCategoryEnum.MONEY_COMPENSATION_1.getCode())).collect(Collectors.toList());
|
totalMoneyCompensationPersons = ObjectUtil.isNotEmpty(hbbc) ? hbbc.size() : 0;
|
List<StateHousehold> cqxh = settleHousehold.stream().filter(stateHousehold -> stateHousehold.getCompensationType().equals(CompensationCategoryEnum.PROPERTY_SWAP_2.getCode())).collect(Collectors.toList());
|
totalGoodsCompensationPersons = ObjectUtil.isNotEmpty(cqxh) ? cqxh.size() : 0;
|
}
|
}
|
}
|
|
BigDecimal totalVirtualMoney = new BigDecimal("0");
|
|
// 遍历外层的 Map(按项目ID分类)
|
for (Map.Entry<String, Map<Integer, ProjectExecutionSumVO>> entry : listProjectExecutionByProjectId.entrySet()) {
|
Map<Integer, ProjectExecutionSumVO> projectExecutionMap = entry.getValue();
|
|
// 遍历内层的 Map(按项目阶段分类)
|
for (ProjectExecutionSumVO executionSum : projectExecutionMap.values()) {
|
// 累加项目预算金额
|
totalVirtualMoney.add(executionSum.getVirtualMoney() != null ? executionSum.getVirtualMoney() : new BigDecimal("0"));
|
}
|
}
|
PlacementStatisticsVO placementStatisticsVO = new PlacementStatisticsVO();
|
//未安置
|
placementStatisticsVO.setTotalNotSignedPersons(totalSettleNum);
|
//已安置
|
placementStatisticsVO.setTotalSignedPersons(settleNum);
|
//产权置换
|
placementStatisticsVO.setTotalGoodsCompensationPersons(totalGoodsCompensationPersons);
|
//货币补偿货币补偿
|
placementStatisticsVO.setTotalMoneyCompensationPersons(totalMoneyCompensationPersons);
|
placementStatisticsVO.setTotalVirtualMoney(totalVirtualMoney);
|
return placementStatisticsVO;
|
}
|
|
private List<StateProject> appendQueryWrapper(String projectStreet, Date projectStartTime) {
|
LambdaQueryWrapper<StateProject> queryWrapper = new LambdaQueryWrapper<>();
|
if (Objects.nonNull(projectStreet) && StringUtils.isNotEmpty(projectStreet)) {
|
queryWrapper.like(StateProject::getStreet, projectStreet);
|
}
|
if (Objects.nonNull(projectStartTime)) {
|
queryWrapper.ge(StateProject::getStartTime, cn.hutool.core.date.DateUtil.beginOfDay(projectStartTime));
|
queryWrapper.le(StateProject::getStartTime, cn.hutool.core.date.DateUtil.beginOfDay(projectStartTime));
|
}
|
queryWrapper.le(StateProject::getDelFlag, DeleteFlagEnum.NOT_DELETED.getKey());
|
return stateProjectService.list(queryWrapper);
|
}
|
|
/**
|
* 获取数据中心安置情况模块 下方的分页查询
|
* @param placementStatisticsBO
|
* @return
|
*/
|
@Override
|
public PageInfo<TransitionPageVO> placementStatisticsPage(PlacementStatisticsBO placementStatisticsBO) {
|
|
LambdaQueryWrapper<StateProject> projectLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
if (org.apache.commons.lang3.StringUtils.isNotBlank(placementStatisticsBO.getProjectStreet())) {
|
projectLambdaQueryWrapper.like(StateProject::getStreet, placementStatisticsBO.getProjectStreet());
|
}
|
if (Objects.nonNull(placementStatisticsBO.getProjectStartTime())) {
|
projectLambdaQueryWrapper.eq(StateProject::getStartTime, new Timestamp(placementStatisticsBO.getProjectStartTime().getTime()));
|
}
|
projectLambdaQueryWrapper.eq(StateProject::getStatus, StateProjectStatusEnum.LEVY.getKey());
|
List<StateProject> list = stateProjectService.list(projectLambdaQueryWrapper);
|
if (CollectionUtils.isEmpty(list)) {
|
return new PageInfo<>();
|
}
|
List<String> projectIdList = list.stream().map(StateProject::getId).collect(Collectors.toList());
|
Map<String, StateProject> projectMap = list.stream().collect(Collectors.toMap(StateProject::getId, Function.identity()));
|
//这里查询只查询的正式协议数据 可以直接连表 查询 如果此处协议数据出现多个 需要重新处理
|
PageInfo<HouseholdVO> householdVOPageInfo = stateHouseholdService.pageByProjectId(projectIdList, placementStatisticsBO.getProjectStreet());
|
List<HouseholdVO> householdVoLiST = householdVOPageInfo.getList();
|
if (CollectionUtils.isEmpty(householdVoLiST)) {
|
return new PageInfo<>();
|
}
|
TransitionPageVO transitionPageVO;
|
List<TransitionPageVO> transitionPageVOList = new ArrayList<>();
|
List<String> houseIdList = householdVoLiST.stream().map(StateHousehold::getId).distinct().collect(Collectors.toList());
|
|
LambdaQueryWrapper<StateHouseholdOwner> stateHouseholdOwnerLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
stateHouseholdOwnerLambdaQueryWrapper.in(StateHouseholdOwner::getStateHouseholdId, houseIdList);
|
|
List<StateHouseholdOwner> stateHouseholdOwners = stateHouseholdOwnerService.list(stateHouseholdOwnerLambdaQueryWrapper);
|
|
Map<String, List<StateHouseholdOwner>> ownerMap = stateHouseholdOwners.stream().collect(Collectors.groupingBy(StateHouseholdOwner::getStateHouseholdId));
|
for (HouseholdVO householdVO : householdVoLiST) {
|
transitionPageVO = StateProjectConvert.INSTANCE.householdVOToTransitionPageVO(householdVO);
|
StateProject stateProject = projectMap.get(householdVO.getStateProjectId());
|
transitionPageVO.setProjectStreet(householdVO.getBelongingStreetTown());
|
transitionPageVO.setProjectName(stateProject.getProjectName());
|
|
List<StateHouseholdOwner> owners = ownerMap.get(householdVO.getId());
|
if (!CollectionUtils.isEmpty(owners)) {
|
String ownerName = owners.stream().map(StateHouseholdOwner::getOwnerName)
|
.filter(StringUtils::isNotBlank).collect(Collectors.joining("|"));
|
transitionPageVO.setOwnerName(ownerName);
|
}
|
|
//对于模拟阶段数据 取模拟合同签订时间 / 征收或者已完成 取正式合同数据
|
if (Objects.equals(stateProject.getStatus(), StateProjectStatusEnum.LEVY.getKey())) {
|
transitionPageVO.setSignAt(Objects.nonNull(householdVO.getSignAt()) ?
|
householdVO.getSignAt()
|
: null);
|
}
|
|
if (Objects.nonNull(transitionPageVO.getSignAt())) {
|
long daysBetween = DateUtil.getDaysBetween(transitionPageVO.getSignAt(), DateUtils.getNowDate());
|
transitionPageVO.setTransitionDay(daysBetween);
|
}
|
|
transitionPageVOList.add(transitionPageVO);
|
}
|
PageInfo<TransitionPageVO> transitionPageVOPageInfo = new PageInfo<>(transitionPageVOList);
|
transitionPageVOPageInfo.setTotal(householdVOPageInfo.getTotal());
|
transitionPageVOPageInfo.setPageNum(householdVOPageInfo.getPageNum());
|
transitionPageVOPageInfo.setPageSize(householdVOPageInfo.getPageSize());
|
return transitionPageVOPageInfo;
|
}
|
|
/**
|
* 项目资金 数据中心-项目资产统计 左侧数据
|
* @param stateTime
|
* @return
|
*/
|
@Override
|
public AssetMoneyVO sumAssetMoney(Date stateTime) {
|
|
LambdaQueryWrapper<StateProject> projectLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
if (Objects.nonNull(stateTime)) {
|
projectLambdaQueryWrapper.ge(StateProject::getFinishedTime, cn.hutool.core.date.DateUtil.beginOfDay(stateTime));
|
projectLambdaQueryWrapper.le(StateProject::getFinishedTime, cn.hutool.core.date.DateUtil.endOfDay(stateTime));
|
}
|
List<StateProject> list = stateProjectService.list(projectLambdaQueryWrapper);
|
if (CollectionUtils.isEmpty(list)) {
|
return new AssetMoneyVO();
|
}
|
|
List<String> projectIdList = list.stream().map(StateProject::getId).collect(Collectors.toList());
|
AssetMoneyVO result = new AssetMoneyVO();
|
|
//查询项目预算资金
|
LambdaQueryWrapper<StateAsset> stateAssetLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
stateAssetLambdaQueryWrapper.in(StateAsset::getStateProjectId, projectIdList);
|
stateAssetLambdaQueryWrapper.eq(StateAsset::getStatus, SubmitStatusEnum.ACCEPT.getValue());
|
stateAssetLambdaQueryWrapper.eq(StateAsset::getDelFlag, DeleteFlagEnum.NOT_DELETED.getKey());
|
List<StateAsset> assetList = assetMapper.selectList(stateAssetLambdaQueryWrapper);
|
double virtualMoney = 0;
|
if (CollectionUtils.isNotEmpty(assetList)) {
|
BigDecimal total = assetList.stream().map(asset -> BigDecimal.valueOf(asset.getVirtualMoney().doubleValue())) // 转换为 BigDecimal
|
.reduce(BigDecimal.ZERO, BigDecimal::add); // 求和
|
|
// 设置保留两位小数
|
virtualMoney = total.setScale(4, RoundingMode.HALF_UP).doubleValue();
|
|
}
|
result.setVirtualMoney(BigDecimal.valueOf(virtualMoney).setScale(4, RoundingMode.HALF_UP));
|
|
//查询合同金额 项目id->查询房产 房产id->查询正式合同的金额
|
//查询结算金额 房产id ->安置情况 结算金额(产全置换+结算金额)
|
LambdaQueryWrapper<StateHousehold> stateHouseholdLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
stateHouseholdLambdaQueryWrapper.in(StateHousehold::getStateProjectId, projectIdList);
|
stateHouseholdLambdaQueryWrapper.eq(StateHousehold::getAgreementStatus, SubmitStatusEnum.ACCEPT.getValue());
|
stateHouseholdLambdaQueryWrapper.eq(StateHousehold::getDelFlag, DeleteFlagEnum.NOT_DELETED.getKey());
|
List<StateHousehold> stateHouseholdList = stateHouseholdService.list(stateHouseholdLambdaQueryWrapper);
|
|
double agreementMoney = 0;
|
double settlementMoney = 0;
|
|
if (CollectionUtils.isNotEmpty(stateHouseholdList)) {
|
List<String> stateHouseholdIds = stateHouseholdList.stream().map(StateHousehold::getId).collect(Collectors.toList());
|
//合同金额
|
LambdaQueryWrapper<StateAgreement> stateAgreementLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
stateAgreementLambdaQueryWrapper.in(StateAgreement::getStateHouseholdId, stateHouseholdIds);
|
stateAgreementLambdaQueryWrapper.eq(StateAgreement::getAgreementFileType, AgreementTypeEnum.STATE_AGREEMENT.getValue());
|
stateAgreementLambdaQueryWrapper.eq(StateAgreement::getDelFlag, DeleteFlagEnum.NOT_DELETED.getKey());
|
stateAgreementLambdaQueryWrapper.isNotNull(StateAgreement::getAgreementNumber);
|
List<StateAgreement> stateAgreementList = agreementService.list(stateAgreementLambdaQueryWrapper);
|
|
if (CollectionUtils.isNotEmpty(stateAgreementList)) {
|
agreementMoney = stateAgreementList.stream().mapToDouble(StateAgreement::getMoney).sum();
|
}
|
|
//产全置换合同金额
|
double cqzhagreementMoney = 0;
|
List<StateHousehold> cqzhHourse = stateHouseholdList.stream().filter(data -> data.getCompensationType().equals(CompensationCategoryEnum.PROPERTY_SWAP_2.getCode())).collect(Collectors.toList());
|
if (ObjectUtil.isNotEmpty(cqzhHourse)) {
|
List<String> cqzhHourseId = cqzhHourse.stream().map(StateHousehold::getId).collect(Collectors.toList());
|
//合同金额
|
LambdaQueryWrapper<StateAgreement> cqzhhtje = new LambdaQueryWrapper<>();
|
cqzhhtje.in(StateAgreement::getStateHouseholdId, cqzhHourseId);
|
cqzhhtje.eq(StateAgreement::getAgreementFileType, AgreementTypeEnum.STATE_AGREEMENT.getValue());
|
cqzhhtje.eq(StateAgreement::getDelFlag, DeleteFlagEnum.NOT_DELETED.getKey());
|
cqzhhtje.isNotNull(StateAgreement::getAgreementNumber);
|
List<StateAgreement> cqzhhtjestateAgreementList = agreementService.list(cqzhhtje);
|
|
if (CollectionUtils.isNotEmpty(cqzhhtjestateAgreementList)) {
|
cqzhagreementMoney = cqzhhtjestateAgreementList.stream()
|
.filter(Objects::nonNull)
|
.filter(data -> Objects.nonNull(data.getMoney())).mapToDouble(StateAgreement::getMoney).sum();
|
}
|
}
|
|
//产权置换后金额
|
double cqxhMoney = 0;
|
//结算金额
|
LambdaQueryWrapper<StateSettlement> stateSettlementLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
stateSettlementLambdaQueryWrapper.in(StateSettlement::getStateHouseholdId, stateHouseholdIds);
|
stateAgreementLambdaQueryWrapper.eq(StateAgreement::getAuditStatus, SubmitStatusEnum.ACCEPT.getValue());
|
List<StateSettlement> stateSettlementList = stateSettlementService.list(stateSettlementLambdaQueryWrapper);
|
|
if (CollectionUtils.isNotEmpty(stateSettlementList)) {
|
settlementMoney = stateSettlementList.stream().mapToDouble(settlement -> Objects.nonNull(settlement.getSettlementMoney()) ? settlement.getSettlementMoney() : 0.0).sum();
|
cqxhMoney = stateSettlementList.stream().mapToDouble(settlement -> Objects.nonNull(settlement.getExchangeMoney()) ? settlement.getExchangeMoney() : 0.0).sum();
|
//合同金额-产权置换后的金额=价值差
|
cqxhMoney = cqzhagreementMoney - cqxhMoney;
|
//结算金额=货币补偿+产权置换价值差
|
settlementMoney = settlementMoney + cqxhMoney;
|
}
|
}
|
|
result.setAgreementMoney(BigDecimal.valueOf(agreementMoney).setScale(4, RoundingMode.HALF_UP));
|
result.setSettlementMoney(BigDecimal.valueOf(settlementMoney).setScale(4, RoundingMode.HALF_UP));
|
return result;
|
}
|
|
/**
|
* 数据中心-项目资产统计 右侧柱状图
|
* @param stateTime
|
* @return
|
*/
|
@Override
|
public List<AssetGraphVO> listAssetGraph(Date stateTime) {
|
LambdaQueryWrapper<StateProject> projectLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
if (Objects.nonNull(stateTime)) {
|
projectLambdaQueryWrapper.ge(StateProject::getFinishedTime, cn.hutool.core.date.DateUtil.beginOfDay(stateTime));
|
projectLambdaQueryWrapper.le(StateProject::getFinishedTime, cn.hutool.core.date.DateUtil.endOfDay(stateTime));
|
}
|
projectLambdaQueryWrapper.eq(StateProject::getDelFlag,DeleteFlagEnum.NOT_DELETED.getKey());
|
List<StateProject> list = stateProjectService.list(projectLambdaQueryWrapper);
|
if (CollectionUtils.isEmpty(list)) {
|
return new ArrayList<>();
|
}
|
List<String> streetList = new ArrayList<>();
|
|
List<String> projectIdList = list.stream().map(StateProject::getId).collect(Collectors.toList());
|
|
//查询项目预算资金
|
LambdaQueryWrapper<StateAsset> stateAssetLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
stateAssetLambdaQueryWrapper.in(StateAsset::getStateProjectId, projectIdList);
|
stateAssetLambdaQueryWrapper.eq(StateAsset::getStatus, SubmitStatusEnum.ACCEPT.getValue());
|
stateAssetLambdaQueryWrapper.eq(StateAsset::getDelFlag, DeleteFlagEnum.NOT_DELETED.getKey());
|
List<StateAsset> assetList = assetMapper.selectList(stateAssetLambdaQueryWrapper);
|
|
//根据街道分组
|
Map<String,List<StateAsset>> assetMap = assetList.stream().collect(Collectors.groupingBy(StateAsset::getStreet));
|
if(ObjectUtil.isNotEmpty(assetList)) {
|
List<String> assetStreet = assetList.stream().map(StateAsset::getStreet).collect(Collectors.toList());
|
streetList.addAll(assetStreet);
|
}
|
|
//查询结算金额 房产id ->安置情况 结算金额
|
LambdaQueryWrapper<StateHousehold> stateHouseholdLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
stateHouseholdLambdaQueryWrapper.in(StateHousehold::getStateProjectId, projectIdList);
|
stateHouseholdLambdaQueryWrapper.eq(StateHousehold::getAgreementStatus,SubmitStatusEnum.ACCEPT.getValue());
|
stateHouseholdLambdaQueryWrapper.eq(StateHousehold::getDelFlag, DeleteFlagEnum.NOT_DELETED.getKey());
|
List<StateHousehold> stateHouseholdList = stateHouseholdService.list(stateHouseholdLambdaQueryWrapper);
|
if(ObjectUtil.isNotEmpty(stateHouseholdList)){
|
List<String> assetStreet = stateHouseholdList.stream().map(StateHousehold::getBelongingStreetTown).collect(Collectors.toList());
|
streetList.addAll(assetStreet);
|
}
|
Map<String,List<StateHousehold>> stateHouseHoldMap = stateHouseholdList.stream().collect(Collectors.groupingBy(StateHousehold::getBelongingStreetTown));
|
|
//安置情况
|
List<AssetGraphVO> result = new ArrayList<>();
|
streetList = streetList.stream().distinct().collect(Collectors.toList());
|
if (CollectionUtils.isEmpty(streetList)) {
|
return result;
|
}
|
for (String street : streetList) {
|
AssetGraphVO assetGraphVO = new AssetGraphVO();
|
assetGraphVO.setStreetName(street);
|
//获取预算金额
|
List<StateAsset> assets = assetMap.get(street);
|
if(ObjectUtil.isNotEmpty(assets)){
|
double virtualMoney = assets.stream().mapToDouble(settlement -> Objects.nonNull(settlement.getVirtualMoney()) ? settlement.getVirtualMoney().doubleValue() : 0.0).sum();
|
assetGraphVO.setVirtualMoney(BigDecimal.valueOf(virtualMoney).setScale(4,BigDecimal.ROUND_HALF_UP));
|
}else{
|
assetGraphVO.setVirtualMoney(BigDecimal.ZERO);
|
}
|
|
//获取合同金额
|
List<StateHousehold> stateHouseholds = stateHouseHoldMap.get(street);
|
|
if(ObjectUtil.isNotEmpty(stateHouseholds)) {
|
//合同金额
|
LambdaQueryWrapper<StateAgreement> stateAgreementLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
stateAgreementLambdaQueryWrapper.in(StateAgreement::getStateHouseholdId, stateHouseholds.stream().map(StateHousehold::getId).collect(Collectors.toList()));
|
stateAgreementLambdaQueryWrapper.eq(StateAgreement::getAgreementFileType, AgreementTypeEnum.STATE_AGREEMENT.getValue());
|
stateAgreementLambdaQueryWrapper.eq(StateAgreement::getDelFlag, DeleteFlagEnum.NOT_DELETED.getKey());
|
stateAgreementLambdaQueryWrapper.isNotNull(StateAgreement::getAgreementNumber);
|
List<StateAgreement> stateAgreementList = agreementService.list(stateAgreementLambdaQueryWrapper);
|
if (ObjectUtil.isNotEmpty(stateAgreementList)) {
|
double agreementMoney = stateAgreementList.stream().mapToDouble(data -> ObjectUtil.isNotEmpty(data.getMoney()) ? data.getMoney() : 0).sum();
|
assetGraphVO.setAgreementMoney(BigDecimal.valueOf(agreementMoney).setScale(4,BigDecimal.ROUND_HALF_UP));
|
}
|
}else{
|
assetGraphVO.setAgreementMoney(BigDecimal.ZERO);
|
}
|
|
//结算金额
|
if(ObjectUtil.isNotEmpty(stateHouseholds)) {
|
|
//产全置换合同金额
|
double cqzhagreementMoney = 0;
|
List<StateHousehold> cqzhHourse = stateHouseholds.stream().filter(data -> data.getCompensationType().equals(CompensationCategoryEnum.PROPERTY_SWAP_2.getCode())).collect(Collectors.toList());
|
if (ObjectUtil.isNotEmpty(cqzhHourse)) {
|
List<String> cqzhHourseId = cqzhHourse.stream().map(StateHousehold::getId).collect(Collectors.toList());
|
//合同金额
|
LambdaQueryWrapper<StateAgreement> cqzhhtje = new LambdaQueryWrapper<>();
|
cqzhhtje.in(StateAgreement::getStateHouseholdId, cqzhHourseId);
|
cqzhhtje.eq(StateAgreement::getAgreementFileType, AgreementTypeEnum.STATE_AGREEMENT.getValue());
|
cqzhhtje.eq(StateAgreement::getDelFlag, DeleteFlagEnum.NOT_DELETED.getKey());
|
cqzhhtje.isNotNull(StateAgreement::getAgreementNumber);
|
List<StateAgreement> cqzhhtjestateAgreementList = agreementService.list(cqzhhtje);
|
|
if (CollectionUtils.isNotEmpty(cqzhhtjestateAgreementList)) {
|
cqzhagreementMoney = cqzhhtjestateAgreementList.stream()
|
.filter(Objects::nonNull)
|
.filter(data -> Objects.nonNull(data.getMoney())).mapToDouble(StateAgreement::getMoney).sum();
|
}
|
}
|
|
//获取结算金额
|
LambdaQueryWrapper<StateSettlement> stateSettlementLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
stateSettlementLambdaQueryWrapper.in(StateSettlement::getStateHouseholdId, stateHouseholds.stream().map(StateHousehold::getId).collect(Collectors.toList()));
|
stateSettlementLambdaQueryWrapper.eq(StateSettlement::getAuditStatus, SubmitStatusEnum.ACCEPT.getValue());
|
stateSettlementLambdaQueryWrapper.eq(StateSettlement::getDelFlag,DeleteFlagEnum.NOT_DELETED.getKey());
|
List<StateSettlement> stateSettlementList = stateSettlementService.list(stateSettlementLambdaQueryWrapper);
|
double settlementMoney = 0;
|
if(ObjectUtil.isNotEmpty(stateSettlementList)){
|
settlementMoney = stateSettlementList.stream().mapToDouble(settlement -> Objects.nonNull(settlement.getSettlementMoney()) ? settlement.getSettlementMoney() : 0.0).sum();
|
double cqxhMoney = stateSettlementList.stream().mapToDouble(settlement -> Objects.nonNull(settlement.getExchangeMoney()) ? settlement.getExchangeMoney() : 0.0).sum();
|
//合同金额-产权置换后的金额=价值差
|
cqxhMoney = cqzhagreementMoney - cqxhMoney;
|
//结算金额=货币补偿+产权置换价值差
|
settlementMoney = settlementMoney + cqxhMoney;
|
}
|
assetGraphVO.setSettleMoney(BigDecimal.valueOf(settlementMoney).setScale(4,BigDecimal.ROUND_HALF_UP));
|
}else{
|
assetGraphVO.setSettleMoney(BigDecimal.ZERO);
|
}
|
result.add(assetGraphVO);
|
}
|
return result;
|
}
|
|
/**
|
* 数据中心-安置情况柱状图
|
* @param street
|
* @param stateTime
|
* @return
|
*/
|
@Override
|
public PlacementStreetVO sumPlacementStreet(String street, Date stateTime) {
|
String houseStreet = street;
|
street = "";
|
//过滤房产
|
List<StateProject> stateProjectList = appendQueryWrapper(street, stateTime);
|
if (CollectionUtils.isEmpty(stateProjectList)) {
|
return new PlacementStreetVO();
|
}
|
|
//查询房产信息
|
List<String> projectIdList = stateProjectList.stream().map(StateProject::getId).collect(Collectors.toList());
|
LambdaQueryWrapper<StateHousehold> stateHouseholdLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
stateHouseholdLambdaQueryWrapper.in(StateHousehold::getStateProjectId, projectIdList);
|
if (ObjectUtil.isNotEmpty(houseStreet)) {
|
stateHouseholdLambdaQueryWrapper.like(StateHousehold::getBelongingStreetTown, houseStreet);
|
}
|
List<StateHousehold> stateHouseholdList = stateHouseholdService.list(stateHouseholdLambdaQueryWrapper);
|
|
if (CollectionUtils.isEmpty(stateHouseholdList)) {
|
return new PlacementStreetVO();
|
}
|
|
List<String> houseIdList = stateHouseholdList.stream().filter(Objects::nonNull).map(StateHousehold::getId).collect(Collectors.toList());
|
|
//查询安置信息
|
LambdaQueryWrapper<StateSettlement> stateSettlementLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
stateSettlementLambdaQueryWrapper.in(StateSettlement::getStateHouseholdId, houseIdList);
|
stateSettlementLambdaQueryWrapper.eq(StateSettlement::getAuditStatus, SubmitStatusEnum.ACCEPT.getValue());
|
List<StateSettlement> stateSettlementList = stateSettlementService.list(stateSettlementLambdaQueryWrapper);
|
if (CollectionUtils.isEmpty(stateSettlementList)) {
|
return new PlacementStreetVO();
|
}
|
|
Map<String, StateSettlement> settlementMap = stateSettlementList.stream().collect(Collectors.toMap(StateSettlement::getStateHouseholdId, Function.identity()));
|
|
//去除数据 只要安置审核已接受的数据
|
List<String> settleIdList = stateSettlementList.stream().map(StateSettlement::getStateHouseholdId).collect(Collectors.toList());
|
stateHouseholdList = stateHouseholdList.stream().filter(innerHouse -> settleIdList.contains(innerHouse.getId())).collect(Collectors.toList());
|
|
Map<String, List<StateHousehold>> householdMap = stateHouseholdList.stream().filter(data -> Objects.nonNull(data.getBelongingStreetTown())).collect(Collectors.groupingBy(StateHousehold::getBelongingStreetTown));
|
|
//查询协议
|
LambdaQueryWrapper<StateAgreement> agreementLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
agreementLambdaQueryWrapper.in(StateAgreement::getStateHouseholdId, settleIdList);
|
agreementLambdaQueryWrapper.eq(StateAgreement::getAgreementFileType, 1);
|
List<StateAgreement> agreementList = agreementService.list(agreementLambdaQueryWrapper);
|
Map<String, List<StateAgreement>> stateAgreement = agreementList.stream().collect(Collectors.groupingBy(StateAgreement::getStateHouseholdId));
|
|
List<PlacementStreetMoneyVO> placementStreetMoneyVOList = new ArrayList<>();
|
List<PlacementStreetAreaVO> placementStreetAreaVOList = new ArrayList<>();
|
|
PlacementStreetVO placementStreetVO = new PlacementStreetVO();
|
|
for (String streetKey : householdMap.keySet()) {
|
PlacementStreetMoneyVO placementStreetMoneyVO = new PlacementStreetMoneyVO();
|
PlacementStreetAreaVO placementStreetAreaVO = new PlacementStreetAreaVO();
|
|
List<StateHousehold> stateHouseholds = householdMap.get(streetKey);
|
//过滤产权置换
|
List<StateHousehold> cqzh = stateHouseholds.stream().filter(item -> item.getCompensationType().equals(CompensationCategoryEnum.PROPERTY_SWAP_2.getCode())).collect(Collectors.toList());
|
//过滤货币补偿
|
List<StateHousehold> hbbc = stateHouseholds.stream().filter(item -> item.getCompensationType().equals(CompensationCategoryEnum.MONEY_COMPENSATION_1.getCode())).collect(Collectors.toList());
|
List<String> involvedHouseList = new ArrayList<>();
|
|
//面积
|
double beforeExchangeArea = 0;
|
double afterExchangeArea = 0;
|
double areaDelta = 0;
|
|
//金额
|
double beforeExchangeMoney = 0;
|
double afterExchangeMoney = 0;
|
double moneyDelta = 0;
|
|
//获取该街道产权置换的安置前数据
|
if (CollectionUtils.isNotEmpty(cqzh)) {
|
involvedHouseList = cqzh.stream().map(StateHousehold::getId).collect(Collectors.toList());
|
//置换前金额和面积添加
|
beforeExchangeArea += stateHouseholds.stream().mapToDouble(StateHousehold::getHouseHoldArea).sum();
|
afterExchangeArea = involvedHouseList.stream().filter(house -> Objects.nonNull(settlementMap.get(house))).map(settlementMap::get).mapToDouble(settlement -> Objects.nonNull(settlement.getExchangeArea()) ? settlement.getExchangeArea() : 0).sum();
|
|
//置换前查询协议type=1
|
for (String housId : involvedHouseList) {
|
List<StateAgreement> stateAgreementList = stateAgreement.get(housId);
|
if (ObjectUtil.isNotEmpty(stateAgreementList)) {
|
beforeExchangeMoney += stateAgreementList.stream().map(StateAgreement::getMoney).mapToDouble(item -> ObjectUtil.isNotEmpty(item) ? item : 0).sum();
|
}
|
}
|
afterExchangeMoney += involvedHouseList.stream().filter(house -> Objects.nonNull(settlementMap.get(house))).map(settlementMap::get).mapToDouble(settlement -> Objects.nonNull(settlement.getExchangeMoney()) ? settlement.getExchangeMoney() : 0).sum();
|
}
|
|
//货币补偿
|
if (ObjectUtil.isNotEmpty(hbbc)) {
|
involvedHouseList = hbbc.stream().map(StateHousehold::getId).collect(Collectors.toList());
|
//置换前查询协议type=1
|
for (String housId : involvedHouseList) {
|
List<StateAgreement> stateAgreementList = stateAgreement.get(housId);
|
if (ObjectUtil.isNotEmpty(stateAgreementList)) {
|
beforeExchangeMoney += stateAgreementList.stream().map(StateAgreement::getMoney).mapToDouble(item -> ObjectUtil.isNotEmpty(item) ? item : 0).sum();
|
}
|
}
|
afterExchangeMoney += involvedHouseList.stream().filter(house -> Objects.nonNull(settlementMap.get(house))).map(settlementMap::get).mapToDouble(settlement -> Objects.nonNull(settlement.getSettlementMoney()) ? settlement.getSettlementMoney() : 0).sum();
|
|
beforeExchangeArea += involvedHouseList.stream().filter(house -> Objects.nonNull(settlementMap.get(house))).map(settlementMap::get).mapToDouble(settlement -> Objects.nonNull(settlement.getSettlementArea()) ? settlement.getSettlementArea() : 0).sum();
|
}
|
|
//计算差额
|
areaDelta = beforeExchangeArea - afterExchangeArea;
|
moneyDelta = beforeExchangeMoney - afterExchangeMoney;
|
//面积
|
placementStreetAreaVO.setStreetName(streetKey);
|
placementStreetAreaVO.setBeforeReplaceArea(beforeExchangeArea);
|
placementStreetAreaVO.setAfterReplaceArea(afterExchangeArea);
|
placementStreetAreaVO.setAreaDelta(areaDelta);
|
placementStreetAreaVOList.add(placementStreetAreaVO);
|
|
//金额
|
placementStreetMoneyVO.setStreetName(streetKey);
|
placementStreetMoneyVO.setBeforeReplaceMoney(beforeExchangeMoney);
|
placementStreetMoneyVO.setAfterReplaceMoney(afterExchangeMoney);
|
placementStreetMoneyVO.setMoneyDelta(moneyDelta);
|
placementStreetMoneyVOList.add(placementStreetMoneyVO);
|
|
}
|
placementStreetVO.setAreaList(placementStreetAreaVOList);
|
placementStreetVO.setMoneyList(placementStreetMoneyVOList);
|
return placementStreetVO;
|
}
|
|
//设置置换前面积 现在有项目所有信息 需要通过项目获取关联的房产信息总和
|
private Map<String, Integer> appendProcessStatusMap(List<StateProject> stateProjectList) {
|
Map<String, Integer> result = new HashMap<>();
|
if (CollectionUtils.isEmpty(stateProjectList)) {
|
return result;
|
}
|
Map<Integer, List<StateProject>> statusMap = stateProjectList.stream().collect(Collectors.groupingBy(StateProject::getStatus));
|
|
for (Integer status : statusMap.keySet()) {
|
StateProjectStatusEnum stateProjectStatusEnum = StateProjectStatusEnum.getEnumByKey(status);
|
if (Objects.isNull(stateProjectStatusEnum)) {
|
continue;
|
}
|
List<StateProject> statusList = statusMap.get(status);
|
result.put(stateProjectStatusEnum.getJsonKey(), statusList.size());
|
}
|
return result;
|
}
|
|
private double calculateMoney(Integer projectStatus, Map<Integer, List<StateProject>> projectStatusMap, Map<String, List<StateHousehold>> houseMap, List<StateAgreement> agreementList, Integer agreementType) {
|
double resultMoney = 0;
|
if (CollectionUtils.isNotEmpty(projectStatusMap.get(projectStatus))) {
|
List<String> simulateProjectIdList = projectStatusMap.get(projectStatus).stream().map(StateProject::getId).collect(Collectors.toList());
|
for (String simulateProjectId : simulateProjectIdList) {
|
if (houseMap.containsKey(simulateProjectId)) {
|
//获取模拟阶段项目对应的房产id
|
List<String> simulateHouseIdList = houseMap.get(simulateProjectId).stream().map(StateHousehold::getId).collect(Collectors.toList());
|
//获取该项目对应房产的模拟阶段协议金额总和
|
resultMoney += agreementList.stream().filter(agreement -> simulateHouseIdList.contains(agreement.getStateHouseholdId()) && Objects.equals(agreement.getAgreementFileType(), agreementType)) //过滤出协议类型不对应以及不属于该项目的数据
|
.mapToDouble(StateAgreement::getMoney).sum();
|
}
|
}
|
}
|
return resultMoney;
|
}
|
|
//查询镇街分布
|
private List<ProjectDataCenterStreetVO> listStreetAndNumber(List<StateProject> stateProjects, String location) {
|
List<String> streetList = stateProjects.stream().filter(data -> Objects.nonNull(data.getStreet())).flatMap(project -> Arrays.stream(project.getStreet().split(","))) // 拆分字符串
|
.map(String::trim) // 去掉空格
|
.distinct() // 去重
|
.collect(Collectors.toList());
|
|
List<ProjectDataCenterStreetVO> projectDataCenterStreetVOList = new ArrayList<>();
|
|
for (String street : streetList) {
|
ProjectDataCenterStreetVO streetVO = new ProjectDataCenterStreetVO();
|
streetVO.setStreetName(street);
|
streetVO.setStreetNumber(stateProjects.stream().filter(data -> data.getStreet().contains(street)).count());
|
projectDataCenterStreetVOList.add(streetVO);
|
}
|
if (!StringUtils.isEmpty(location)) {
|
projectDataCenterStreetVOList = projectDataCenterStreetVOList.stream().filter(data -> Objects.equals(data.getStreetName(), location)).collect(Collectors.toList());
|
}
|
return projectDataCenterStreetVOList;
|
}
|
|
//项目类型统计
|
private List<ProjectDataCenterTypeVO> listProjectTypeMap(List<StateProjectInfo> stateProjects) {
|
if (CollectionUtils.isEmpty(stateProjects)) {
|
return new ArrayList<>();
|
}
|
List<ProjectDataCenterTypeVO> projectDataCenterTypeVOList = new ArrayList<>();
|
List<StateProjectInfo> typeProjectList = stateProjects.stream().filter(data -> Objects.nonNull(data.getProjectType())).collect(Collectors.toList());
|
|
Map<String, List<StateProjectInfo>> projectTypeMap = typeProjectList.stream().collect(Collectors.groupingBy(StateProjectInfo::getProjectType));
|
|
List<SysDictData> data = dictTypeService.selectDictDataByType("project_type");
|
Map<String, String> dataMap = data.stream().collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel));
|
|
|
for (String type : projectTypeMap.keySet()) {
|
ProjectDataCenterTypeVO typeVO = new ProjectDataCenterTypeVO();
|
typeVO.setTypeName(dataMap.get(type));
|
typeVO.setTypeNumber(projectTypeMap.get(type).size());
|
projectDataCenterTypeVOList.add(typeVO);
|
}
|
|
return projectDataCenterTypeVOList;
|
}
|
|
}
|