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