From 1fc203f758ace853f4bfa900c422c2f741d09e79 Mon Sep 17 00:00:00 2001 From: yanghb <yangbhwork@163.com> Date: 星期二, 18 二月 2025 09:05:21 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- land-system/src/main/java/com/zzg/system/service/state/impl/StateDataCenterServiceImpl.java | 129 +++++++++++++++++++++++++++++++++++-------- 1 files changed, 105 insertions(+), 24 deletions(-) diff --git a/land-system/src/main/java/com/zzg/system/service/state/impl/StateDataCenterServiceImpl.java b/land-system/src/main/java/com/zzg/system/service/state/impl/StateDataCenterServiceImpl.java index 464adfb..cefd965 100644 --- a/land-system/src/main/java/com/zzg/system/service/state/impl/StateDataCenterServiceImpl.java +++ b/land-system/src/main/java/com/zzg/system/service/state/impl/StateDataCenterServiceImpl.java @@ -4,9 +4,19 @@ 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.*; +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.*; +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; @@ -14,12 +24,29 @@ 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.*; +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.*; +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.checkerframework.checker.units.qual.A; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -27,8 +54,13 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.sql.Timestamp; -import java.time.Year; -import java.util.*; +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; @@ -56,6 +88,7 @@ //计算最上面顶部统计数据 @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()); @@ -68,11 +101,12 @@ 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()); @@ -154,7 +188,7 @@ * 对于模拟协议的人员计算 需要判断他是否只签订了模拟协议 ,因为正式协议有可能是模拟协议转过去的 需要排除这种情况 但是对于正式协议人员 只需要判断正式协议否存在即可 * 此处是根据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())); @@ -162,7 +196,7 @@ } else if (agreementTypeMap.containsKey(AgreementTypeEnum.STATE_AGREEMENT.getValue())) { } } - + //废弃代码结束 // HOUSE(0,"入户调查","house"), // SIMULATE(1,"模拟征收", "simulate"), // SIGNED(2,"正式征收", "signed"), @@ -177,10 +211,15 @@ 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<>(); } @@ -195,9 +234,16 @@ 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(); @@ -291,9 +337,14 @@ 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()); @@ -302,6 +353,7 @@ 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<>(); @@ -320,7 +372,7 @@ 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)); @@ -329,7 +381,7 @@ 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) @@ -343,7 +395,7 @@ householdVO.getSignAt() : null); } - + //过度时长=正式合同签约时间与当前时间比较 if (Objects.nonNull(transitionPageVO.getSignAt())) { long daysBetween = DateUtil.getDaysBetween(transitionPageVO.getSignAt(), DateUtils.getNowDate()); transitionPageVO.setTransitionDay(daysBetween); @@ -358,6 +410,11 @@ return transitionPageVOPageInfo; } + /** + * 项目资金 数据中心-项目资产统计 左侧数据 + * @param stateTime + * @return + */ @Override public AssetMoneyVO sumAssetMoney(Date stateTime) { @@ -366,6 +423,7 @@ 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(); @@ -407,6 +465,7 @@ //合同金额 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); @@ -416,7 +475,7 @@ 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)) { @@ -459,6 +518,11 @@ return result; } + /** + * 数据中心-项目资产统计 右侧柱状图 + * @param stateTime + * @return + */ @Override public List<AssetGraphVO> listAssetGraph(Date stateTime) { LambdaQueryWrapper<StateProject> projectLambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -585,12 +649,17 @@ 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(); @@ -598,28 +667,31 @@ //查询房产信息 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(); } - + //房产id列表 List<String> houseIdList = stateHouseholdList.stream().filter(Objects::nonNull).map(StateHousehold::getId).collect(Collectors.toList()); //查询安置信息 LambdaQueryWrapper<StateSettlement> stateSettlementLambdaQueryWrapper = new LambdaQueryWrapper<>(); + //TODO in问题 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(); } - + //根据房产id分组 Map<String, StateSettlement> settlementMap = stateSettlementList.stream().collect(Collectors.toMap(StateSettlement::getStateHouseholdId, Function.identity())); //去除数据 只要安置审核已接受的数据 @@ -630,6 +702,7 @@ //查询协议 LambdaQueryWrapper<StateAgreement> agreementLambdaQueryWrapper = new LambdaQueryWrapper<>(); + //TODO in问题 agreementLambdaQueryWrapper.in(StateAgreement::getStateHouseholdId, settleIdList); agreementLambdaQueryWrapper.eq(StateAgreement::getAgreementFileType, 1); List<StateAgreement> agreementList = agreementService.list(agreementLambdaQueryWrapper); @@ -653,12 +726,17 @@ //面积 double beforeExchangeArea = 0; + //安置后面积 double afterExchangeArea = 0; + //面积差 double areaDelta = 0; //金额 + //合同金额 double beforeExchangeMoney = 0; + //结算金额(安置后的金额) double afterExchangeMoney = 0; + //价值差 double moneyDelta = 0; //获取该街道产权置换的安置前数据 @@ -672,6 +750,7 @@ 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(); } } @@ -688,9 +767,11 @@ 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(); + 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(); + beforeExchangeArea += involvedHouseList.stream().filter(house -> Objects.nonNull(settlementMap.get(house))).map(settlementMap::get) + .mapToDouble(settlement -> Objects.nonNull(settlement.getSettlementArea()) ? settlement.getSettlementArea() : 0).sum(); } //计算差额 @@ -780,7 +861,7 @@ } 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"); -- Gitblit v1.7.1