mitao
2025-01-20 93fec20f3cf9d7801eeaa10acef4687ed110d435
添加接口备注
11个文件已修改
147 ■■■■■ 已修改文件
land-system/src/main/java/com/zzg/system/domain/bo/SettlementDetailBO.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
land-system/src/main/java/com/zzg/system/domain/vo/AssetMoneyVO.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
land-system/src/main/java/com/zzg/system/domain/vo/PlacementStreetAreaVO.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
land-system/src/main/java/com/zzg/system/domain/vo/PlacementStreetMoneyVO.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
land-system/src/main/java/com/zzg/system/domain/vo/ProjectExecutionSumVO.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
land-system/src/main/java/com/zzg/system/domain/vo/SettlementSumVO.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
land-system/src/main/java/com/zzg/system/domain/vo/TransitionPageVO.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
land-system/src/main/java/com/zzg/system/service/state/impl/StateApplyRecordServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
land-system/src/main/java/com/zzg/system/service/state/impl/StateAssetServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
land-system/src/main/java/com/zzg/system/service/state/impl/StateHouseholdOwnerServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
land-system/src/main/java/com/zzg/system/service/state/impl/StateSettlementImpl.java 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
land-system/src/main/java/com/zzg/system/domain/bo/SettlementDetailBO.java
@@ -10,15 +10,15 @@
    private String id;
    private String taskId;
    //项目街道
    //项目街道 置换前街道
    private String beforeExchangeStreet;
    //置换后街道
    private String afterExchangeStreet;
    //置换前坐落
    private String beforeExchangeLocation;
    //置换后坐落
    private String afterExchangeLocation;
    //权利人名字
    private String ownerName;
    private Integer compensationType;
land-system/src/main/java/com/zzg/system/domain/vo/AssetMoneyVO.java
@@ -8,12 +8,12 @@
//项目资产中左侧金额统计
public class AssetMoneyVO {
    //预算金额
    //预算金额(万元)
    private BigDecimal virtualMoney;
    //合同金额
    //合同金额(万元)
    private BigDecimal agreementMoney;
    //结算金额
    //结算金额(万元)
    private BigDecimal settlementMoney;
}
land-system/src/main/java/com/zzg/system/domain/vo/PlacementStreetAreaVO.java
@@ -2,16 +2,14 @@
import lombok.Data;
import java.math.BigDecimal;
@Data
public class PlacementStreetAreaVO {
    //街道名字
    private String streetName;
    //置换前面积(安置前面积)
    private Double beforeReplaceArea;
    //置换后面积
    private Double afterReplaceArea;
    //面积差
    private Double areaDelta;
}
land-system/src/main/java/com/zzg/system/domain/vo/PlacementStreetMoneyVO.java
@@ -2,16 +2,14 @@
import lombok.Data;
import java.math.BigDecimal;
@Data
public class PlacementStreetMoneyVO {
    //街道名字
    private String streetName;
    //置换前金额
    private Double beforeReplaceMoney;
    //置换后金额
    private Double afterReplaceMoney;
    //金额差
    private Double moneyDelta;
}
land-system/src/main/java/com/zzg/system/domain/vo/ProjectExecutionSumVO.java
@@ -34,13 +34,13 @@
    //未签字比例
    private BigDecimal notSignedRate;
    //未调查人数
    private Long notSearchedPersons;
    //调查人数
    private Long searchedPersons;
    //调查比例
    private BigDecimal searchProcessRate;
    //虚拟签字比例
    private BigDecimal signedProcessRate;
}
land-system/src/main/java/com/zzg/system/domain/vo/SettlementSumVO.java
@@ -4,17 +4,17 @@
@Data
public class SettlementSumVO {
    //安置金额
    private Double settlementMoney;
    //安置面积
    private Double settlementArea;
    //安置人数
    private Integer settlementPersons;
    //未安置人数
    private Integer unsettledPersons;
    //货币补偿人数
    private Long moneyCompensationPersons;
    //产权置换人数
    private Long goodsCompensationPersons;
}
land-system/src/main/java/com/zzg/system/domain/vo/TransitionPageVO.java
@@ -7,12 +7,17 @@
@Data
public class TransitionPageVO {
    //排名
    private Long index;
    //镇/街
    private String projectStreet;
    //项目名
    private String projectName;
    //权利人
    private String ownerName;
    //签约时间
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date signAt;
    //过渡时长(天数)
    private Long transitionDay;
}
land-system/src/main/java/com/zzg/system/service/state/impl/StateApplyRecordServiceImpl.java
@@ -367,7 +367,7 @@
    @Override
    public PageInfo<ApplyOwnerBO> getApplyHouseholdOwnerInfo(GetApplyHouseholdOwnerBO getApplyHouseholdOwnerBO) {
        PageUtils.startPage();
        //TODO 查询请款记录
        //TODO 查询请款记录 由于之前产品设计的问题是以权利人作为维度的即一个请款对应是 一个权利人, 后期又修改成了 以房产为 维度 即一个请款对应一个房产 导致之前数据库设计有问题
        List<ApplyOwnerBO> applyHouseholdOwnerVOS = this.getBaseMapper().selectApplyRecordWithOwnerDistinctPage(getApplyHouseholdOwnerBO);
        if (CollectionUtils.isEmpty(applyHouseholdOwnerVOS)) {
@@ -586,7 +586,7 @@
        for (StateHousehold stateHousehold : stateHouseholds) {
            List<StateHouseholdOwner> owners = ownerMap.get(stateHousehold.getId());
            if (!CollectionUtils.isEmpty(owners)) {
                applyOwnerBO = StateProjectConvert.INSTANCE.toApplyOwnerBO(owners.get(0));//TODO
                applyOwnerBO = StateProjectConvert.INSTANCE.toApplyOwnerBO(owners.get(0));//TODO 对象拷贝时new 了对象的
                applyOwnerBO.setOwnerName(owners.stream().map(StateHouseholdOwner::getOwnerName).collect(Collectors.joining("|"))); // 多个权利人用|分割
                applyOwnerBO.setStateHouseholdOwnerId(owners.stream().map(StateHouseholdOwner::getId).collect(Collectors.joining("|"))); //多个权利人id以|分割
land-system/src/main/java/com/zzg/system/service/state/impl/StateAssetServiceImpl.java
@@ -150,7 +150,9 @@
                return;
            }
            //TODO 置换后金额含义
            // 结算金额
            Double dbSettleMoney = Objects.nonNull(stateSettlement.getSettlementMoney()) ? stateSettlement.getSettlementMoney() : 0;
            //置换后金额
            Double dbExchangeMoney = Objects.nonNull(stateSettlement.getExchangeMoney()) ? stateSettlement.getExchangeMoney() : 0;
            BigDecimal settleMoney = BigDecimal.valueOf(dbSettleMoney + dbExchangeMoney).setScale(4, RoundingMode.HALF_UP);
            data.setSettleMoney(settleMoney);
land-system/src/main/java/com/zzg/system/service/state/impl/StateHouseholdOwnerServiceImpl.java
@@ -125,11 +125,13 @@
            throw new GlobalException("未找到开启的标准");
        }
        enableCompensateStandard = enableCompensateStandard.stream().filter(e -> Objects.nonNull(e.getSubType())).collect(Collectors.toList());
        //根据类型分组后再根据子类型进行一次分组
        Map<Integer, Map<Integer, List<StateProjectCompensateStandard>>> enableCompensateStandardMap = enableCompensateStandard.stream()
                .collect(Collectors.groupingBy(StateProjectCompensateStandard::getCompensateType, Collectors.groupingBy(StateProjectCompensateStandard::getCategory)));
        //征收房屋补偿费
        Double homeAmount = null;
        // 从数据库查询的房产的预估价格附加信息不为空且calculateCompensationBO任意一个字段为空,则从数据库中房产的附加信息中获取
        if (org.apache.commons.lang3.StringUtils.isNotBlank(household.getAppendData()) && !areAllCompensationFieldsNotNull(calculateCompensationBO)) {
            calculateCompensationBO = JSON.parseObject(household.getAppendData(), CalculateCompensationBO.class);
        }
land-system/src/main/java/com/zzg/system/service/state/impl/StateSettlementImpl.java
@@ -120,10 +120,15 @@
        return result;
    }
    /**
     * 安置情况页面数据
     * @param settlementBO
     * @return
     */
    @Override
    public PageInfo<HouseholdVO> listSettleData(SettlementBO settlementBO) {
        PageUtils.startPage();
        //根据查询条件查询房产数据
        List<HouseholdVO> householdVOList = settlementMapper.listSettleData(settlementBO);
        if (CollectionUtils.isEmpty(householdVOList)) {
            return new PageInfo<>();
@@ -138,14 +143,14 @@
                .filter(Objects::nonNull) // 过滤掉 houseStateId 为 null 的情况
                .distinct() // 去重
                .collect(Collectors.toList());
        //根据房产id查询所有权利人信息
        LambdaQueryWrapper<StateHouseholdOwner> householdOwnerLambdaQueryWrapper = new LambdaQueryWrapper<>();
        householdOwnerLambdaQueryWrapper.in(StateHouseholdOwner::getStateHouseholdId, houseIdList);
        if (!com.zzg.common.utils.StringUtils.isEmpty(settlementBO.getOwnerName())) {
            householdOwnerLambdaQueryWrapper.like(StateHouseholdOwner::getOwnerName, settlementBO.getOwnerName());
        }
        List<StateHouseholdOwner> stateHouseholdOwners = stateHouseholdOwnerService.list(householdOwnerLambdaQueryWrapper);
        //根据房产id 将权利人分组
        Map<String, List<StateHouseholdOwner>> ownerMap = stateHouseholdOwners.stream().collect(Collectors.groupingBy(StateHouseholdOwner::getStateHouseholdId));
        if (!com.zzg.common.utils.StringUtils.isEmpty(settlementBO.getOwnerName())) {
            householdVOList = householdVOList.stream().filter(data -> ownerMap.containsKey(data.getId())).collect(Collectors.toList());
@@ -221,7 +226,7 @@
        stateSettlementLambdaQueryWrapper.in(StateSettlement::getStateHouseholdId, houseIdList);
        stateSettlementLambdaQueryWrapper.eq(StateSettlement::getDelFlag, DeleteFlagEnum.NOT_DELETED.getKey());
        stateSettlementLambdaQueryWrapper.isNotNull(StateSettlement::getAuditStatus);
        //根据条件查询安置情况
        List<StateSettlement> stateSettlementList = this.list(stateSettlementLambdaQueryWrapper);
        Map<String, String> departmentMap = stateSettlementList.stream().collect(Collectors.toMap(StateSettlement::getStateHouseholdId, StateSettlement::getSettleDepartment));
@@ -234,19 +239,23 @@
        //根据入参区分是否安置
        if (Objects.nonNull(settlementBO.getIsSettled())) {
            //未安置
            if (Objects.equals(settlementBO.getIsSettled(), SettledProcessEnum.NOT_SETTLE.getValue())) {
                List<String> settledHouseId;
                if (CollectionUtils.isNotEmpty(stateSettlementList)) {
                    List<String> settledHouseIdList = stateSettlementList.stream().map(StateSettlement::getStateHouseholdId).collect(Collectors.toList());
                    //过滤未安置的房产id
                    settledHouseId = houseIdList.stream().filter(e -> !settledHouseIdList.contains(e)).collect(Collectors.toList());
                    List<String> finalSettledHouseId = settledHouseId;
                    voArrayList.addAll(householdVOS.stream().filter(data -> finalSettledHouseId.contains(data.getId())).collect(Collectors.toList()));
                } else {
                    voArrayList.addAll(householdVOS);
                }
            //已安置
            } else {
                //已安置房产id列表
                List<String> settledHouseId = stateSettlementList.stream().map(StateSettlement::getStateHouseholdId).collect(Collectors.toList());
                //过滤已安置的房产
                List<HouseholdVO> list = householdVOS.stream().filter(data -> settledHouseId.contains(data.getId())).collect(Collectors.toList());
                //设置安置时间 安置状态 安置批次
                Map<String, StateSettlement> settlementMap = stateSettlementList
@@ -312,6 +321,7 @@
        SettlementDetailPageVO pageVO = new SettlementDetailPageVO();
        PageUtils.startPage();
        //分页查询安置情况
        List<SettlementDetailVO> settlementDetailVOS = settlementMapper.listSettleDetail(settlementDetailBO);
        if (CollectionUtils.isEmpty(settlementDetailVOS)) {
            pageVO.setPageData(new PageInfo<>());
@@ -321,6 +331,7 @@
        PageInfo<SettlementDetailVO> settlementDetailVOPageInfo = new PageInfo<>(settlementDetailVOS);
        List<SettlementDetailVO> detailVOS = new ArrayList<>();
        //拼接名字
        //根据房产id进行分组
        Map<String, SettlementDetailVO> householdMap = settlementDetailVOS.stream().filter(Objects::nonNull).collect(Collectors.toMap(StateSettlement::getStateHouseholdId, Function.identity()));
        for (Map.Entry<String, SettlementDetailVO> entry : householdMap.entrySet()) {
            String householdId = entry.getKey();
@@ -360,7 +371,7 @@
                stateHouseholds.stream().map(StateHousehold::getId).collect(Collectors.toList()));
        stateSettlementLambdaQueryWrapper.isNull(StateSettlement::getAuditStatus);
        stateSettlementLambdaQueryWrapper.orderByDesc(StateSettlement::getCreateTime);
        //查询安置情况
        List<StateSettlement> stateSettlementList = this.list(stateSettlementLambdaQueryWrapper);
        if (CollectionUtils.isNotEmpty(stateSettlementList)) {
            String latestHouseId = stateSettlementList.get(0).getStateHouseholdId();
@@ -434,16 +445,21 @@
        }
    }
    /**
     * 外层项目实施数据
     * @param projectId
     * @return
     */
    @Override
    public SettlementSumVO sumSettleData(String projectId) {
        LambdaQueryWrapper<StateProject> stateProjectQueryWrapper = new LambdaQueryWrapper<>();
        stateProjectQueryWrapper.eq(StateProject::getId, projectId);
        //查询项目
        StateProject stateProject = stateProjectMapper.selectOne(stateProjectQueryWrapper);
        if (Objects.isNull(stateProject)) {
            return new SettlementSumVO();
        }
        //查询房产
        LambdaQueryWrapper<StateHousehold> stateHouseholdQueryWrapper = new LambdaQueryWrapper<>();
        stateHouseholdQueryWrapper.eq(StateHousehold::getStateProjectId, projectId);
        List<StateHousehold> stateHouseholds = stateHouseholdMapper.selectList(stateHouseholdQueryWrapper);
@@ -455,7 +471,7 @@
        SettlementSumVO settlementSumVO = new SettlementSumVO();
        //查询房产的协议/安置情况
        List<String> householdIds = stateHouseholds.stream().map(StateHousehold::getId).distinct().collect(Collectors.toList());
        //查询结算
        LambdaQueryWrapper<StateSettlement> stateSettlementQueryWrapper = new LambdaQueryWrapper<>();
        stateSettlementQueryWrapper.in(StateSettlement::getStateHouseholdId, householdIds);
        stateSettlementQueryWrapper.isNotNull(StateSettlement::getAuditStatus);
@@ -549,7 +565,7 @@
            return new PageInfo<>();
        }
        PageInfo<StateExecutionDetailVO> pageInfo = new PageInfo<>(list);
        //返回的结果列表
        List<StateExecutionDetailVO> result = new ArrayList<>();
        List<StateExecutionDetailVO> executionDetailVOS = list.stream().filter(Objects::nonNull).collect(Collectors.toList());
@@ -630,7 +646,7 @@
            return new ArrayList<>();
        }
        List<StateExecutionDetailVO> result = new ArrayList<>();
        //过滤空值
        List<StateExecutionDetailVO> executionDetailVOS = list.stream().filter(Objects::nonNull).collect(Collectors.toList());
        List<String> houseIdList = executionDetailVOS.stream()
@@ -644,6 +660,7 @@
        if (!com.zzg.common.utils.StringUtils.isEmpty(executionB.getOwnerName())) {
            householdOwnerLambdaQueryWrapper.like(StateHouseholdOwner::getOwnerName, executionB.getOwnerName());
        }
        //查询权利人
        List<StateHouseholdOwner> stateHouseholdOwners = stateHouseholdOwnerService.list(householdOwnerLambdaQueryWrapper);
        Map<String, List<StateHouseholdOwner>> ownerMap = stateHouseholdOwners.stream().collect(Collectors.groupingBy(StateHouseholdOwner::getStateHouseholdId));
@@ -666,6 +683,7 @@
        LambdaQueryWrapper<StateAgreement> agreementQueryWrapper = new LambdaQueryWrapper<>();
        agreementQueryWrapper.in(StateAgreement::getStateHouseholdId, houseIdList);
        agreementQueryWrapper.isNotNull(StateAgreement::getAgreementNumber);
        //查询协议
        List<StateAgreement> agreementList = stateAgreementMapper.selectList(agreementQueryWrapper);
        if (CollectionUtils.isEmpty(agreementList)) {
            return new ArrayList<>(result);
@@ -680,10 +698,12 @@
                if (innerAgreementMap.containsKey(AgreementTypeEnum.STATE_AGREEMENT.getValue())) {
                    StateAgreement stateAgreement = innerAgreementMap.get(AgreementTypeEnum.STATE_AGREEMENT.getValue());
                    //正式签字时间
                    data.setOfficialSignedTime(stateAgreement.getSignAt());
                }
                if (innerAgreementMap.containsKey(AgreementTypeEnum.VIRTUAL_STATE_AGREEMENT.getValue())) {
                    StateAgreement virtualAgreement = innerAgreementMap.get(AgreementTypeEnum.VIRTUAL_STATE_AGREEMENT.getValue());
                    //模拟签字时间
                    data.setVirtualSignedTime(virtualAgreement.getSignAt());
                }
@@ -713,7 +733,7 @@
            return new HashMap<>();
        }
        //查询房产
        LambdaQueryWrapper<StateHousehold> householdQueryWrapper = new LambdaQueryWrapper<>();
        householdQueryWrapper.in(StateHousehold::getStateProjectId, projectIdList);
        if (StringUtils.isNoneBlank(projectStreet)) {
@@ -731,8 +751,8 @@
        Map<String, Map<Integer, ProjectExecutionSumVO>> result = new HashMap<>();
        Map<String, List<StateHousehold>> householdMap = households.stream().collect(Collectors.groupingBy(StateHousehold::getStateProjectId));
        List<String> houseIdList = households.stream().map(StateHousehold::getId).collect(Collectors.toList());
        //废弃代码
        //List<String> houseIdList = households.stream().map(StateHousehold::getId).collect(Collectors.toList());
        List<String> acceptHoustIdList = households.stream().filter(e ->
                Objects.nonNull(e.getAgreementStatus())
        ).map(StateHousehold::getId).collect(Collectors.toList());
@@ -905,10 +925,10 @@
                        .count();
                long notSignedVirtualPerson = innerHouseList.size() - signedVirtualPerson;
                //计算正式签约的比例
                appendData(searchedPersons, notSearchedPersons, innerHouseId, signedStatePerson, notSignedStatePerson, projectStateExecutionSumVO);
                //计算模拟签约的比例
                appendData(searchedPersons, notSearchedPersons, innerHouseId, signedVirtualPerson, notSignedVirtualPerson, projectVirtualExecutionSumVO);
                Map<Integer, ProjectExecutionSumVO> projectExecutionSumVOMap = new HashMap<>();
@@ -961,6 +981,7 @@
                    stateHouseholds.stream().map(StateHousehold::getId).collect(Collectors.toList()));
            stateSettlementLambdaQueryWrapper.isNull(StateSettlement::getAuditStatus);
            stateSettlementLambdaQueryWrapper.orderByAsc(StateSettlement::getSettleName);
            //查询安置情况
            stateSettlementList = this.list(stateSettlementLambdaQueryWrapper);
            if (ObjectUtil.isNotEmpty(stateSettlementList)) {
                StateHousehold stateHousehold = stateHouseholdMap.get(stateSettlementList.get(0).getStateHouseholdId());
@@ -1008,6 +1029,11 @@
        return "第" + batchNum + "批次";
    }
    /**
     * 当前项目批次列表
     * @param projectId
     * @return
     */
    @Override
    public List<String> listBatchName(String projectId) {
        if (StringUtils.isEmpty(projectId)) {
@@ -1039,8 +1065,9 @@
        if (CollectionUtils.isEmpty(stateSettlement)) {
            throw new GlobalException("数据不能为空");
        }
        //新增的
        List<StateSettlement> newAddList = stateSettlement.stream().filter(e -> Objects.isNull(e.getId())).collect(Collectors.toList());
        //编辑的
        List<StateSettlement> oldUpdateList = stateSettlement.stream().filter(e -> Objects.nonNull(e.getId())).collect(Collectors.toList());
@@ -1055,7 +1082,7 @@
                data.setSettlementArea(areaMap.get(data.getStateHouseholdId()));
            }
        });
        //全为编辑
        if (CollectionUtils.isEmpty(newAddHouseId)) {
            this.saveOrUpdateBatch(oldUpdateList);
            return;
@@ -1091,9 +1118,10 @@
        LambdaQueryWrapper<StateSettlement> lqw = new LambdaQueryWrapper<>();
        lqw.in(StateSettlement::getStateHouseholdId, newAddHouseId).ne(StateSettlement::getDelFlag, DeleteFlagEnum.DELETED.getKey());
        List<StateSettlement> list = this.list(lqw);
        //新增
        if (CollectionUtils.isEmpty(list)) {
            //查询当前批次是否存在已经拒绝的,如果有则代表是 审核失败编辑页面新增的情况,这里需要吧审核状态设置为已拒绝
            //查询当前批次是否存在已经拒绝的,如果有则代表是 审核失败编辑页面新增的情况,这里需要吧审核状态设置为已拒绝 同一批次,审核状态统一,要么全为接收要么全为退回
            LambdaQueryWrapper<StateHousehold> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.eq(StateHousehold::getStateProjectId, projectId);
            List<StateHousehold> allHousehold = stateHouseholdMapper.selectList(queryWrapper);
@@ -1422,7 +1450,15 @@
        saveOrUpdateBatch(stateSettlement);
    }
    /**
     * 计算签约、未签约比例数据
     * @param searchedPersons
     * @param notSearchedPersons
     * @param innerHouseId
     * @param signedVirtualPerson
     * @param notSignedVirtualPerson
     * @param projectVirtualExecutionSumVO
     */
    private void appendData(long searchedPersons, long notSearchedPersons, List<String> innerHouseId, long signedVirtualPerson, long notSignedVirtualPerson, ProjectExecutionSumVO projectVirtualExecutionSumVO) {
        projectVirtualExecutionSumVO.setSignedPersons(signedVirtualPerson);
        projectVirtualExecutionSumVO.setNotSignedPersons(notSignedVirtualPerson);