land-admin/src/main/java/com/zzg/web/controller/state/StateAgreementController.java
@@ -187,6 +187,7 @@ Map<String, Object> variable = new HashMap<>(); variable.put("stateHouseholdId", stateHousehold.getId()); processStartBO.setVariable(variable); //启动工作流 stateProcessTemplateService.start(processStartBO); } return AjaxResult.success(stateAgreementService.saveOrUpdateBatch(agreementList)); land-admin/src/main/java/com/zzg/web/controller/state/StateApplyRecordController.java
@@ -3,8 +3,13 @@ import com.github.pagehelper.PageInfo; import com.zzg.common.constant.state.UrlConstants; import com.zzg.common.core.domain.AjaxResult; import com.zzg.common.core.domain.entity.state.StateApplyRecordItem; import com.zzg.system.domain.bo.*; import com.zzg.system.domain.bo.ApplyBO; import com.zzg.system.domain.bo.ApplyOwnerBO; import com.zzg.system.domain.bo.GetApplyHouseholdOwnerBO; import com.zzg.system.domain.bo.ImportApplyRecordBO; import com.zzg.system.domain.bo.SaveRecordAndItemBO; import com.zzg.system.domain.bo.StateApplyRecordPageBO; import com.zzg.system.domain.bo.StateApplyRecordPageInfoLevelBO; import com.zzg.system.domain.vo.ApplyHouseholdOwnerVO; import com.zzg.system.domain.vo.StateApplyRecordPageInfoLevelVO; import com.zzg.system.domain.vo.StateApplyRecordVO; @@ -51,7 +56,7 @@ public AjaxResult<ApplyHouseholdOwnerVO> getApplyHouseholdOwner(@RequestBody GetApplyHouseholdOwnerBO getApplyHouseholdOwnerBO) { return AjaxResult.success(stateApplyRecordService.getApplyHouseholdOwner(getApplyHouseholdOwnerBO)); } //TODO 接口不清楚 @PostMapping(UrlConstants.STATE_APPLY_RECORD_GET_OWNER_INFO) @ApiOperation(value = "住宅临时安置补助费户详情或者 或者 停产停业补助费详情", notes = "停产停业补助费详情") public AjaxResult<PageInfo<ApplyOwnerBO>> getApplyHouseholdOwnerInfo(@RequestBody GetApplyHouseholdOwnerBO getApplyHouseholdOwnerBO) { land-admin/src/main/java/com/zzg/web/controller/state/StateAssetController.java
@@ -41,6 +41,7 @@ if (Objects.isNull(asset)) { return AjaxResult.error(); } //TODO 审核状态为通过的也可以删除 逻辑删除 LambdaUpdateWrapper<StateAsset> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(StateAsset::getId, asset.getId()); updateWrapper.set(StateAsset::getDelFlag, DeleteFlagEnum.DELETED.getKey()); land-admin/src/main/java/com/zzg/web/controller/state/StateProjectCompensateStandardController.java
@@ -18,7 +18,7 @@ public class StateProjectCompensateStandardController { private final StateProjectCompensateStandardService stateProjectCompensateStandardService; //获取补偿标准列表 @GetMapping(UrlConstants.STATE_PROJECT_COMPENSATE_STANDARD_LIST) public AjaxResult<Map<String, List<StateProjectCompensateStandardVO>>> getAll( @RequestParam(required = false) String standardName, @@ -27,22 +27,22 @@ ) { return AjaxResult.success(stateProjectCompensateStandardService.getCompensateStandardMap(standardName, stopFlag, compensateType)); } //创建补偿标准 @PostMapping(UrlConstants.STATE_PROJECT_COMPENSATE_STANDARD_ADD) public AjaxResult<Boolean> create(@RequestBody StateProjectCompensateStandard stateProjectCompensateStandard) { return AjaxResult.success(stateProjectCompensateStandardService.createCompensatesStandard(stateProjectCompensateStandard)); } //修改补偿标准 @PostMapping(UrlConstants.STATE_PROJECT_COMPENSATE_STANDARD_UPDATE) public AjaxResult<Boolean> update(@RequestBody StateProjectCompensateStandard stateProjectCompensateStandard) { return AjaxResult.success(stateProjectCompensateStandardService.saveOrUpdate(stateProjectCompensateStandard)); } //修改补偿标准名字(同时更新项目中的标准名称) @PostMapping(UrlConstants.STATE_PROJECT_COMPENSATE_STANDARD_UPDATE_NAME) public AjaxResult<Boolean> updateName(@RequestBody StateProjectCompensateStandard stateProjectCompensateStandard) { return AjaxResult.success(stateProjectCompensateStandardService.updateName(stateProjectCompensateStandard)); } //停用补偿标准 @PostMapping(UrlConstants.STATE_PROJECT_COMPENSATE_STANDARD_STOP) public AjaxResult<Boolean> stop(@RequestParam String standardName, @RequestParam Integer compensateType) { LambdaUpdateWrapper<StateProjectCompensateStandard> wrapper = new LambdaUpdateWrapper<>(); @@ -51,7 +51,7 @@ .set(StateProjectCompensateStandard::getStopFlag, 0); return AjaxResult.success(stateProjectCompensateStandardService.update(wrapper)); } //启用补偿标准 @PostMapping(UrlConstants.STATE_PROJECT_COMPENSATE_STANDARD_START) public AjaxResult<Boolean> start(@RequestParam String standardName, @RequestParam Integer compensateType) { LambdaUpdateWrapper<StateProjectCompensateStandard> wrapper = new LambdaUpdateWrapper<>(); @@ -60,7 +60,7 @@ .set(StateProjectCompensateStandard::getStopFlag, 1); return AjaxResult.success(stateProjectCompensateStandardService.update(wrapper)); } //导入补偿标准 @PostMapping(UrlConstants.STATE_PROJECT_COMPENSATE_STANDARD_IMPORT) public AjaxResult<Boolean> importExcelFile(@RequestParam("file") MultipartFile file) { return AjaxResult.success(stateProjectCompensateStandardService.importByExcel(file)); land-admin/src/main/java/com/zzg/web/controller/state/householdQuery/StateHouseholdController.java
@@ -138,13 +138,14 @@ } // 删除项目 // 删除房屋 @GetMapping(UrlConstants.STATE_HOUSEHOLD_DELETE) public AjaxResult<Boolean> delete(@RequestParam String id) { return AjaxResult.success(stateHouseholdService.removeById(id)); } //安置情况数据统计 //安置情况数据统计 未使用 @Deprecated @GetMapping(UrlConstants.STATE_HOUSEHOLD_SUM) public AjaxResult<Void> sumHouseholdData(@RequestParam String stateProjectId) { stateHouseholdService.sumHouseholdData(stateProjectId); land-common/src/main/java/com/zzg/common/enums/ApplyStatusEnum.java
@@ -5,7 +5,7 @@ @Getter @AllArgsConstructor public enum ApplyStatusEnum { public enum ApplyStatusEnum { PENDING_RECEIPT(1, "待接收"), RECEIVED(2, "已接收"), RETURNED(3, "被退回"), land-system/src/main/java/com/zzg/system/domain/bo/CalculateCompensationBO.java
@@ -49,6 +49,6 @@ @ApiModelProperty(value = "其他补偿信息") private OtherCompensationBO otherCompensationBO; //表示是否点击重新计算 private Boolean isFirst; } land-system/src/main/java/com/zzg/system/service/state/impl/StateAgreementServiceImpl.java
@@ -153,6 +153,11 @@ return stateAgreementVOPageInfo; } /** * 协议详情 * @param householdId * @return */ @Override public List<AgreementDetailVO> listAgreementDetailByHouseId(String householdId) { @@ -341,6 +346,11 @@ return dataMap; } /** * 模拟加征收 * @param houseId * @return */ @Override @Transactional public Boolean updateStateAgreement(List<String> houseId) { land-system/src/main/java/com/zzg/system/service/state/impl/StateApplyRecordServiceImpl.java
@@ -55,7 +55,11 @@ @Resource private StateApplyRecordService stateApplyRecordService; /** * 分页查询 * @param stateApplyRecordPageBO * @return */ @Override public PageInfo<StateApplyRecordVO> pageInfo(StateApplyRecordPageBO stateApplyRecordPageBO) { PageUtils.startPage(); @@ -86,6 +90,11 @@ } } /** * 保存请账 * @param recordAndItemBO * @return */ @Override @Transactional public boolean saveStateApplyRecordAndItem(SaveRecordAndItemBO recordAndItemBO) { @@ -159,6 +168,7 @@ variable.put("projectId", stateApplyRecord.getProjectId()); variable.put("applyType", stateApplyRecord.getApplyType()); processStartBO.setVariable(variable); //开启工作流程 stateProcessTemplateService.start(processStartBO); //保存请款子表 @@ -166,6 +176,11 @@ return stateApplyRecordItemService.saveOrUpdateBatch(newRecordItem); } /** * 通过项目id查询权利人 * @param getApplyHouseholdOwnerBO * @return */ @Override public ApplyHouseholdOwnerVO getApplyHouseholdOwner(GetApplyHouseholdOwnerBO getApplyHouseholdOwnerBO) { String projectId = getApplyHouseholdOwnerBO.getProjectId(); @@ -174,6 +189,7 @@ LambdaQueryWrapper<StateProject> lqwStateProject = new LambdaQueryWrapper<>(); lqwStateProject.eq(StateProject::getId, projectId); //查询项目 StateProject one = stateProjectService.getOne(lqwStateProject); if (Objects.isNull(one)) { return new ApplyHouseholdOwnerVO(); @@ -183,6 +199,7 @@ if (org.apache.commons.lang3.StringUtils.isNotBlank(street)) { lqwHousehold.like(StateHousehold::getStreet, street); } //查询房产 List<StateHousehold> householdList = stateHouseholdService.list(lqwHousehold); if (CollectionUtils.isEmpty(householdList)) { return new ApplyHouseholdOwnerVO(); @@ -195,12 +212,13 @@ if (org.apache.commons.lang3.StringUtils.isNotBlank(ownerName)) { lqwHouseholdOwner.like(StateHouseholdOwner::getOwnerName, ownerName); } //查询权利人 List<StateHouseholdOwner> ownerList = stateHouseholdOwnerService.list(lqwHouseholdOwner); if (CollectionUtils.isEmpty(ownerList)) { return new ApplyHouseholdOwnerVO(); } //查询项目关联的补偿标准 StateProjectCompensation compensation = stateProjectCompensationService.getById(one.getId()); Map<String, StateHousehold> stateHouseholdMap = householdList.stream().collect(Collectors.toMap(StateHousehold::getId, Function.identity())); @@ -221,6 +239,7 @@ lqwCompensateStandard.eq(StateProjectCompensateStandard::getStandardName, compensation.getPolicySubsidy()) .eq(StateProjectCompensateStandard::getCategory, status) .eq(StateProjectCompensateStandard::getCompensateType, CompensateTypeEnum.POLICY_SUBSIDY_FEE.getCode()); //查询项目补偿标准 List<StateProjectCompensateStandard> list = stateProjectCompensateStandardService.list(lqwCompensateStandard); if (!CollectionUtils.isEmpty(list)) { StateProjectCompensateStandard stateProjectCompensateStandard = list.stream().findFirst().get(); @@ -255,6 +274,11 @@ return applyHouseholdOwnerVO; } /** * 分页查询一级台账 * @param stateApplyRecordPageBO * @return */ @Override public StateApplyRecordPageInfoLevelVO pageInfoLevel(StateApplyRecordPageInfoLevelBO stateApplyRecordPageBO) { List<StateApplyRecordVO> allStateApplyRecordVOList = this.getBaseMapper().selectApplyRecordWithProject(stateApplyRecordPageBO); @@ -335,9 +359,15 @@ )); } /** * 住宅临时安置补助费户详情或者 或者 停产停业补助费详情 * @param getApplyHouseholdOwnerBO * @return */ @Override public PageInfo<ApplyOwnerBO> getApplyHouseholdOwnerInfo(GetApplyHouseholdOwnerBO getApplyHouseholdOwnerBO) { PageUtils.startPage(); //TODO 查询请款记录 List<ApplyOwnerBO> applyHouseholdOwnerVOS = this.getBaseMapper().selectApplyRecordWithOwnerDistinctPage(getApplyHouseholdOwnerBO); if (CollectionUtils.isEmpty(applyHouseholdOwnerVOS)) { @@ -345,7 +375,7 @@ } getApplyHouseholdOwnerBO.setStateHouseIdList(applyHouseholdOwnerVOS.stream().map(ApplyOwnerBO::getStateHouseholdId).collect(Collectors.toList())); PageInfo<ApplyOwnerBO> applyOwnerBOPageInfo = new PageInfo<>(applyHouseholdOwnerVOS); //TODO List<ApplyOwnerBO> applyOwnerBOS = this.getBaseMapper().selectApplyRecordWithOwnerPage(getApplyHouseholdOwnerBO); applyOwnerBOPageInfo.setList(applyOwnerBOS); List<String> projectIdList = applyOwnerBOPageInfo.getList().stream().map(ApplyOwnerBO::getProjectId).collect(Collectors.toList()); @@ -434,6 +464,11 @@ return applyOwnerBOPageInfo; } /** * 任务中心-请帐详情 * @param getApplyHouseholdOwnerBO * @return */ @Override public ApplyBO stateApplyRecordDetail(GetApplyHouseholdOwnerBO getApplyHouseholdOwnerBO) { StateApplyRecord stateApplyRecord = this.getById(getApplyHouseholdOwnerBO.getApplyId()); @@ -448,6 +483,11 @@ return applyBO; } /** * 导入权利人 * @param importApplyRecordBO * @return */ @Override public List<ApplyOwnerBO> importOwnerByFile(ImportApplyRecordBO importApplyRecordBO) { List<ApplyOwnerVO> dataList; @@ -475,7 +515,7 @@ if (Objects.isNull(one)) { throw new GlobalException("未查询到相应项目"); } //查询项目下的所有房产 LambdaQueryWrapper<StateHousehold> lqwHousehold = new LambdaQueryWrapper<>(); lqwHousehold.eq(StateHousehold::getStateProjectId, one.getId()); @@ -505,7 +545,7 @@ throw new GlobalException("未查询到相应房产权利人"); } //TODO 废弃代码开始 StateApplyRecord stateApplyRecord; if (org.apache.commons.lang3.StringUtils.isBlank(importApplyRecordBO.getApplyId())) { stateApplyRecord = new StateApplyRecord(); @@ -530,21 +570,25 @@ stateApplyRecord = new StateApplyRecord(); stateApplyRecord.setId(importApplyRecordBO.getApplyId()); } //废弃代码结束 List<ApplyOwnerBO> itemList = new ArrayList<>(); ApplyOwnerBO applyOwnerBO; StateApplyRecordItem item; List<StateHousehold> stateHouseholds = householdList.stream().filter(e -> dataList.stream().map(ApplyOwnerVO::getRealEstateCertificateNumber).collect(Collectors.toList()).contains(e.getRealEstateCertificateNumber())).collect(Collectors.toList()); //根据导入数据的不动产权证号筛选出同项目下的房产数据 List<StateHousehold> stateHouseholds = householdList.stream().filter(e -> dataList.stream().map(ApplyOwnerVO::getRealEstateCertificateNumber) .collect(Collectors.toList()).contains(e.getRealEstateCertificateNumber())).collect(Collectors.toList()); ownerList.sort(Comparator.comparing(BaseEntity::getCreateTime)); //权利人根据房产id分组 Map<String, List<StateHouseholdOwner>> ownerMap = ownerList.stream().collect(Collectors.groupingBy(StateHouseholdOwner::getStateHouseholdId)); //导入数据根据不同不动产权证号分组 Map<String, List<ApplyOwnerVO>> importMap = dataList.stream().collect(Collectors.groupingBy(ApplyOwnerVO::getRealEstateCertificateNumber)); DecimalFormat decimalFormat = new DecimalFormat("##0.####"); for (StateHousehold stateHousehold : stateHouseholds) { List<StateHouseholdOwner> owners = ownerMap.get(stateHousehold.getId()); if (!CollectionUtils.isEmpty(owners)) { applyOwnerBO = StateProjectConvert.INSTANCE.toApplyOwnerBO(owners.get(0)); applyOwnerBO.setOwnerName(owners.stream().map(StateHouseholdOwner::getOwnerName).collect(Collectors.joining("|"))); applyOwnerBO.setStateHouseholdOwnerId(owners.stream().map(StateHouseholdOwner::getId).collect(Collectors.joining("|"))); applyOwnerBO = StateProjectConvert.INSTANCE.toApplyOwnerBO(owners.get(0));//TODO applyOwnerBO.setOwnerName(owners.stream().map(StateHouseholdOwner::getOwnerName).collect(Collectors.joining("|"))); // 多个权利人用|分割 applyOwnerBO.setStateHouseholdOwnerId(owners.stream().map(StateHouseholdOwner::getId).collect(Collectors.joining("|"))); //多个权利人id以|分割 applyOwnerBO.setStreet(stateHousehold.getStreet()); applyOwnerBO.setRealEstateCertificateNumber(stateHousehold.getRealEstateCertificateNumber()); land-system/src/main/java/com/zzg/system/service/state/impl/StateAssetServiceImpl.java
@@ -8,20 +8,33 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.StateProject; import com.zzg.common.core.domain.entity.state.StateSettlement; import com.zzg.common.core.domain.entity.system.SysDept; 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.ProcessCategoryEnum; import com.zzg.common.enums.StateProjectStatusEnum; import com.zzg.common.enums.SubmitStatusEnum; import com.zzg.common.exception.GlobalException; import com.zzg.common.utils.PageUtils; import com.zzg.common.utils.SecurityUtils; import com.zzg.common.utils.StringUtils; import com.zzg.system.domain.bo.AssetDetailBO; import com.zzg.system.domain.bo.FileBO; import com.zzg.system.domain.bo.ProcessStartBO; import com.zzg.system.domain.bo.StateAssetBO; import com.zzg.system.domain.vo.StateAssetDetailVO; 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.StateAssetService; import com.zzg.system.service.state.StateHouseholdService; import com.zzg.system.service.state.StateProcessTemplateService; import com.zzg.system.service.state.StateProjectService; import com.zzg.system.service.state.StateSettlementService; import com.zzg.system.service.system.ISysDeptService; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; @@ -31,7 +44,12 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; import java.util.ArrayList; import java.util.Collections; 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; @@ -57,12 +75,19 @@ @Resource private final ISysDeptService deptService; /** * 项目资金点击上方符号查询 * @param assetDetailBO * @return */ @Override public PageInfo<StateAssetDetailVO> listAssetDetail(AssetDetailBO assetDetailBO) { //查询项目信息 StateProject stateProject = stateProjectService.getById(assetDetailBO.getProjectId()); Integer currentStatus = stateProject.getStatus(); PageUtils.startPage(); //查询项目预算资金详情 List<StateAssetDetailVO> assetDetailVOList = assetMapper.listAssetDetail(assetDetailBO, currentStatus); if (CollectionUtils.isEmpty(assetDetailVOList)) { return new PageInfo<>(); @@ -78,7 +103,7 @@ StateAssetDetailVO assetDetailVO = stateAssetDetailVOList.get(0); result.add(assetDetailVO); } //国有项目协议查询条件 LambdaQueryWrapper<StateAgreement> stateAgreementLambdaQueryWrapper = new LambdaQueryWrapper<>(); stateAgreementLambdaQueryWrapper.in(StateAgreement::getStateHouseholdId, result.stream().map(StateAssetDetailVO::getHouseId).collect(Collectors.toList())); //根据项目状态查询协议 这一个项目状态只有一种 随便取出来即可 @@ -92,6 +117,7 @@ } } stateAgreementLambdaQueryWrapper.isNotNull(StateAgreement::getAgreementNumber); //查询协议列表 List<StateAgreement> stateAgreements = agreementService.list(stateAgreementLambdaQueryWrapper); if (CollectionUtils.isEmpty(stateAgreements)) { stateAssetDetailVOPageInfo.setList(result); @@ -111,16 +137,19 @@ LambdaQueryWrapper<StateSettlement> stateSettlementLambdaQueryWrapper = new LambdaQueryWrapper<>(); stateSettlementLambdaQueryWrapper.in(StateSettlement::getStateHouseholdId, result.stream().map(StateAssetDetailVO::getHouseId).collect(Collectors.toList())); //查询已结算金额 List<StateSettlement> stateSettlementList = settlementService.list(stateSettlementLambdaQueryWrapper); Map<String, StateSettlement> stateSettlementMap = stateSettlementList.stream() .collect(Collectors.toMap(StateSettlement::getStateHouseholdId, Function.identity())); //赋值结算金额 result.forEach(data -> { StateSettlement stateSettlement = stateSettlementMap.get(data.getHouseId()); if (Objects.isNull(stateSettlement)) { 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); @@ -135,12 +164,20 @@ return stateAssetDetailVOPageInfo; } /** * 项目资金 上方统计数据 * @param projectId * @return */ @Override public JSONObject sumAsset(String projectId) { JSONObject jsonObject = new JSONObject(); //查询项目信息 StateProject stateProject = stateProjectService.getProjectById(projectId); // TODO 未将逻辑删除的字段过滤 LambdaQueryWrapper<StateAsset> stateAssetQueryWrapper = new LambdaQueryWrapper<>(); stateAssetQueryWrapper.eq(StateAsset::getStateProjectId, projectId); //查询项目预算资金 List<StateAsset> stateAssets = this.list(stateAssetQueryWrapper); //预算金额 @@ -155,6 +192,7 @@ stateHouseholdLambdaQueryWrapper.eq(StateHousehold::getStateProjectId, projectId); stateHouseholdLambdaQueryWrapper.eq(StateHousehold::getDelFlag, DeleteFlagEnum.NOT_DELETED.getKey()); stateHouseholdLambdaQueryWrapper.isNotNull(StateHousehold::getAgreementStatus); //根据项目id查询房产数据 List<StateHousehold> stateHouseholds = stateHouseholdService.list(stateHouseholdLambdaQueryWrapper); if (CollectionUtils.isEmpty(stateHouseholds)) { @@ -178,6 +216,7 @@ stateAgreementLambdaQueryWrapper.isNotNull(StateAgreement::getAgreementNumber); stateAgreementLambdaQueryWrapper.in(StateAgreement::getStateHouseholdId, houseIds); //查询协议信息 List<StateAgreement> stateAgreements = agreementService.list(stateAgreementLambdaQueryWrapper); if (CollectionUtils.isNotEmpty(stateAgreements)) { Integer projectStatus = stateProject.getStatus(); @@ -189,7 +228,7 @@ stateAgreementLambdaQueryWrapper.eq(StateAgreement::getAgreementFileType, AgreementTypeEnum.STATE_AGREEMENT.getValue()); stateAgreements = stateAgreements.stream().filter(e -> e.getAgreementFileType().equals(AgreementTypeEnum.STATE_AGREEMENT.getValue())).collect(Collectors.toList()); } // 协议金额 double agreementMoney = stateAgreements.stream() .filter(Objects::nonNull) .filter(data -> Objects.nonNull(data.getMoney())).mapToDouble(StateAgreement::getMoney).sum(); @@ -199,14 +238,15 @@ jsonObject.put("agreementMoney", agreementMoneyBig); } //将该项目下面的房产数据类型为产权置换的房产id筛选出来 List<String> componseTypeHouseIds = stateHouseholds.stream().filter(data -> ObjectUtil.isNotEmpty(data.getCompensationType()) && data.getCompensationType().equals(CompensationCategoryEnum.PROPERTY_SWAP_2.getCode())).map(StateHousehold::getId).collect(Collectors.toList()); //产权置换下的合金额 BigDecimal roundedAgreementMoney = BigDecimal.ZERO; if (ObjectUtil.isNotEmpty(componseTypeHouseIds)) { componseTypeAgreementLambdaQueryWrapper.isNotNull(StateAgreement::getAgreementNumber); componseTypeAgreementLambdaQueryWrapper.in(StateAgreement::getStateHouseholdId, componseTypeHouseIds); //根据房产id查询协议列表 List<StateAgreement> stateAgreementsInDb = agreementService.list(componseTypeAgreementLambdaQueryWrapper); if (CollectionUtils.isNotEmpty(stateAgreementsInDb)) { double agreementMoney = stateAgreementsInDb.stream() @@ -249,10 +289,16 @@ return jsonObject; } /** * 新增和修改 项目资金 * @param asset * @return */ @Transactional @Override public boolean saveAsset(StateAssetBO asset) { String deptId = SecurityUtils.getLoginUser().getUser().getDept().getDeptId(); //根据当前登录人部门id查询部门信息 Map<String, SysDept> stringSysDeptMap = deptService.selectMapDeptById(Collections.singletonList(deptId)); asset.setSubmittedBy(stringSysDeptMap.values().stream().map(SysDept::getDeptName).collect(Collectors.joining(","))); @@ -288,6 +334,7 @@ variable.put("projectId", asset.getStateProjectId()); variable.put("street", asset.getStreet()); processStartBO.setVariable(variable); //启动工作流 stateProcessTemplateService.start(processStartBO); return result; } land-system/src/main/java/com/zzg/system/service/state/impl/StateHouseholdOwnerServiceImpl.java
@@ -2,7 +2,6 @@ import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageInfo; @@ -11,12 +10,21 @@ import com.zzg.common.core.domain.entity.state.StateProjectCompensateStandard; import com.zzg.common.core.domain.entity.state.StateProjectCompensation; import com.zzg.common.core.domain.entity.system.SysDictData; import com.zzg.common.enums.*; import com.zzg.common.enums.CompensateTypeEnum; import com.zzg.common.enums.CompensationCategoryEnum; import com.zzg.common.enums.DeleteFlagEnum; import com.zzg.common.enums.HouseOwnerTyeEnum; import com.zzg.common.enums.HouseUsingTypeEnum; import com.zzg.common.exception.GlobalException; import com.zzg.common.utils.RoundingUtil; import com.zzg.common.utils.StringUtils; import com.zzg.system.convert.StateProjectConvert; import com.zzg.system.domain.bo.*; import com.zzg.system.domain.bo.AwardBO; import com.zzg.system.domain.bo.CalculateCompensationBO; import com.zzg.system.domain.bo.HomeCompensationBO; import com.zzg.system.domain.bo.PolicyCompensationBO; import com.zzg.system.domain.bo.PolicySubsidyBO; import com.zzg.system.domain.bo.PolicySupplementBO; import com.zzg.system.domain.vo.CalculateCompensationVO; import com.zzg.system.domain.vo.OtherCompensationBO; import com.zzg.system.domain.vo.StateHouseholdOwnerVO; @@ -30,7 +38,12 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.*; import java.util.ArrayList; import java.util.Arrays; 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; @@ -88,17 +101,19 @@ //如果不是区间 就直接计算 @Override public CalculateCompensationVO calculateCompensation(CalculateCompensationBO calculateCompensationBO) { //获取对应房产信息 StateHousehold household = stateHouseholdService.getById(calculateCompensationBO.getStateHouseholdId()); if (Objects.isNull(household)) { throw new GlobalException("未找到对应的房产"); } String stateProjectId = household.getStateProjectId(); //获取项目补偿标准信息 StateProjectCompensation compensation = stateProjectCompensationService.getById(stateProjectId); if (Objects.isNull(compensation)) { throw new GlobalException("项目没有设置标准"); } //通过标准类型名称查询对应的标准信息 List<String> compensationNameList = new ArrayList<>(); compensationNameList.add(compensation.getPolicyCompensationType()); compensationNameList.add(compensation.getPolicySubsidy()); @@ -110,7 +125,8 @@ 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))); Map<Integer, Map<Integer, List<StateProjectCompensateStandard>>> enableCompensateStandardMap = enableCompensateStandard.stream() .collect(Collectors.groupingBy(StateProjectCompensateStandard::getCompensateType, Collectors.groupingBy(StateProjectCompensateStandard::getCategory))); //征收房屋补偿费 Double homeAmount = null; @@ -121,7 +137,7 @@ Integer houseUsingType = household.getHouseUsingType(); HomeCompensationBO homeCompensationBO = calculateCompensationBO.getHomeCompensationBO(); // 货币补偿 if (Objects.nonNull(homeCompensationBO) && CompensationCategoryEnum.MONEY_COMPENSATION_1.getCode() == homeCompensationBO.getHomeCompensationType()) { Map<Integer, List<StateProjectCompensateStandard>> integerListMap = enableCompensateStandardMap.get(CompensateTypeEnum.HOUSE_ACQUISITION_COMPENSATION_FEE.getCode()); if (!CollectionUtils.isEmpty(integerListMap)) { @@ -162,12 +178,15 @@ } } } //产权置换 } else if (Objects.nonNull(homeCompensationBO)) { Map<Integer, List<StateProjectCompensateStandard>> integerListMap = enableCompensateStandardMap.get(CompensateTypeEnum.HOUSE_ACQUISITION_COMPENSATION_FEE.getCode()); if (!CollectionUtils.isEmpty(integerListMap)) { //产权置换标准 List<StateProjectCompensateStandard> stateProjectCompensateStandards = integerListMap.get(CompensationCategoryEnum.PROPERTY_SWAP.getCode()); if (!CollectionUtils.isEmpty(stateProjectCompensateStandards)) { StateProjectCompensateStandard stateProjectCompensateStandard; //根据房屋类型获取标准 if (HouseUsingTypeEnum.PERSONAL_HOUSE.getValue().equals(houseUsingType)) { stateProjectCompensateStandard = stateProjectCompensateStandards.stream().filter(e -> e.getSpecification().equals("住宅")).findFirst().get(); } else { @@ -215,6 +234,7 @@ compensationVO.getHomeCompensationBO().setTotalAmount(homeAmount); } //政策性补偿费 //补偿费总金额 Double policyAmount = 0.0; PolicyCompensationBO policyCompensationBO = calculateCompensationBO.getPolicyCompensationBO(); Map<Integer, List<StateProjectCompensateStandard>> integerListMap = enableCompensateStandardMap.get(CompensateTypeEnum.POLICY_COMPENSATION_FEE.getCode()); @@ -227,6 +247,7 @@ } else { stateProjectCompensateStandard = stateProjectCompensateStandards.stream().filter(e -> e.getSpecification().equals("非住宅")).findFirst().get(); } //电话移机费用 Double telephoneRelocationAmount = 0.0; if (!checkCompensateStandard(stateProjectCompensateStandard)) { // Skip further calculations or set default values to avoid computation @@ -255,10 +276,11 @@ ; } } // 有线电视迁装 if (Objects.nonNull(policyCompensationBO.getCableTVRelocation()) && Objects.nonNull(integerListMap.get(CompensationCategoryEnum.CABLE_TV_RELOCATION.getCode()))) { List<StateProjectCompensateStandard> stateProjectCompensateStandards = integerListMap.get(CompensationCategoryEnum.CABLE_TV_RELOCATION.getCode()); StateProjectCompensateStandard stateProjectCompensateStandard = stateProjectCompensateStandards.stream().findFirst().get(); // 有线电视迁装金额 Double cableTVRelocationAmount = 0.0; if (!checkCompensateStandard(stateProjectCompensateStandard)) { // Skip further calculations or set default values to avoid computation @@ -287,9 +309,11 @@ ; } } // 宽带迁装 if (Objects.nonNull(policyCompensationBO.getBroadbandRelocation()) && Objects.nonNull(integerListMap.get(CompensationCategoryEnum.BROADBAND_RELOCATION.getCode()))) { List<StateProjectCompensateStandard> stateProjectCompensateStandards = integerListMap.get(CompensationCategoryEnum.BROADBAND_RELOCATION.getCode()); StateProjectCompensateStandard stateProjectCompensateStandard = stateProjectCompensateStandards.stream().findFirst().get(); // 宽带迁装金额 Double broadbandRelocationAmount = 0.0; if (!checkCompensateStandard(stateProjectCompensateStandard)) { // Skip further calculations or set default values to avoid computation @@ -318,10 +342,11 @@ ; } } // 空调移机 if (Objects.nonNull(policyCompensationBO.getAirConditionerRelocation()) && Objects.nonNull(integerListMap.get(CompensationCategoryEnum.AIR_CONDITIONER_RELOCATION.getCode()))) { List<StateProjectCompensateStandard> stateProjectCompensateStandards = integerListMap.get(CompensationCategoryEnum.AIR_CONDITIONER_RELOCATION.getCode()); StateProjectCompensateStandard stateProjectCompensateStandard = stateProjectCompensateStandards.stream().findFirst().get(); // 空调移机金额 Double airConditionerRelocationAmount = 0.0; if (!checkCompensateStandard(stateProjectCompensateStandard)) { // Skip further calculations or set default values to avoid computation @@ -350,9 +375,11 @@ ; } } // 一户一表 if (Objects.nonNull(policyCompensationBO.getIndividualMeterInstallation()) && Objects.nonNull(integerListMap.get(CompensationCategoryEnum.ONE_HOUSE_ONE_METER.getCode()))) { List<StateProjectCompensateStandard> stateProjectCompensateStandards = integerListMap.get(CompensationCategoryEnum.ONE_HOUSE_ONE_METER.getCode()); StateProjectCompensateStandard stateProjectCompensateStandard = stateProjectCompensateStandards.stream().findFirst().get(); // 一户一表金额 Double individualMeterInstallationAmount = 0.0; if (!checkCompensateStandard(stateProjectCompensateStandard)) { // Skip further calculations or set default values to avoid computation @@ -382,6 +409,7 @@ ; } } // 天然气初装 if (Objects.nonNull(policyCompensationBO.getGasInitialInstallation()) && Objects.nonNull(integerListMap.get(CompensationCategoryEnum.GAS_INITIAL_INSTALLATION.getCode()))) { List<StateProjectCompensateStandard> stateProjectCompensateStandards = integerListMap.get(CompensationCategoryEnum.GAS_INITIAL_INSTALLATION.getCode()); StateProjectCompensateStandard stateProjectCompensateStandard = stateProjectCompensateStandards.stream().findFirst().get(); @@ -416,13 +444,18 @@ } compensationVO.getPolicyCompensationBO().calculateTotalAmount(); //政策性补助费 // 住宅临时安置补助费 Double policySubsidyAmount = null; //非住宅停产,停业经济损失补偿费 Double nonResidentialEconomicLossAllowanceAmount = null; // 搬家补助费 Double movingAllowanceAmount = null; PolicySubsidyBO policySubsidyBO = calculateCompensationBO.getPolicySubsidyBO(); //货币补偿 if (Objects.nonNull(policySubsidyBO) && CompensationCategoryEnum.MONEY_COMPENSATION_1.getCode() == policySubsidyBO.getCompensationType()) { Map<Integer, List<StateProjectCompensateStandard>> policySubsidyMap = enableCompensateStandardMap.get(CompensateTypeEnum.POLICY_SUBSIDY_FEE.getCode()); if (!CollectionUtils.isEmpty(policySubsidyMap)) { // 住宅临时安置补助费 List<StateProjectCompensateStandard> stateProjectCompensateStandards = policySubsidyMap.get(CompensationCategoryEnum.TEMPORARY_HOUSING_ALLOWANCE.getCode()); if (!CollectionUtils.isEmpty(stateProjectCompensateStandards)) { StateProjectCompensateStandard stateProjectCompensateStandard = stateProjectCompensateStandards.stream().findFirst().get(); @@ -454,6 +487,7 @@ } } } // 非住宅停产、停业经济损失补助费 List<StateProjectCompensateStandard> nonResidentialEconomicLossAllowance = policySubsidyMap.get(CompensationCategoryEnum.NON_RESIDENTIAL_ECONOMIC_LOSS_ALLOWANCE.getCode()); if (!CollectionUtils.isEmpty(nonResidentialEconomicLossAllowance)) { StateProjectCompensateStandard stateProjectCompensateStandard = nonResidentialEconomicLossAllowance.stream().findFirst().get(); @@ -480,6 +514,7 @@ } } } // 搬家补助费 List<StateProjectCompensateStandard> movingAllowance = policySubsidyMap.get(CompensationCategoryEnum.MOVING_ALLOWANCE.getCode()); if (!CollectionUtils.isEmpty(movingAllowance)) { StateProjectCompensateStandard stateProjectCompensateStandard = movingAllowance.stream().findFirst().get(); @@ -507,9 +542,10 @@ } } } } else if (Objects.nonNull(policySubsidyBO)) { } else if (Objects.nonNull(policySubsidyBO)) { //产权置换 Map<Integer, List<StateProjectCompensateStandard>> policySubsidyMap = enableCompensateStandardMap.get(CompensateTypeEnum.POLICY_SUBSIDY_FEE.getCode()); if (!CollectionUtils.isEmpty(policySubsidyMap)) { // 住宅临时安置补助费 List<StateProjectCompensateStandard> stateProjectCompensateStandards = policySubsidyMap.get(CompensationCategoryEnum.TEMPORARY_HOUSING_ALLOWANCE.getCode()); if (!CollectionUtils.isEmpty(stateProjectCompensateStandards)) { StateProjectCompensateStandard stateProjectCompensateStandard = stateProjectCompensateStandards.stream().findFirst().get(); @@ -542,6 +578,7 @@ } } } // 非住宅停产、停业经济损失补助费 List<StateProjectCompensateStandard> nonResidentialEconomicLossAllowance = policySubsidyMap.get(CompensationCategoryEnum.NON_RESIDENTIAL_ECONOMIC_LOSS_ALLOWANCE.getCode()); if (!CollectionUtils.isEmpty(nonResidentialEconomicLossAllowance)) { StateProjectCompensateStandard stateProjectCompensateStandard = nonResidentialEconomicLossAllowance.stream().findFirst().get(); @@ -570,6 +607,7 @@ } } } // 搬家补助费 List<StateProjectCompensateStandard> movingAllowance = policySubsidyMap.get(CompensationCategoryEnum.MOVING_ALLOWANCE.getCode()); if (!CollectionUtils.isEmpty(movingAllowance)) { StateProjectCompensateStandard stateProjectCompensateStandard = movingAllowance.stream().findFirst().get(); @@ -602,7 +640,9 @@ } //政策性补贴 //购房补贴 Double propertyManagementSubsidyAmount = null; //物管费补贴 Double housingSubsidyAmount = null; PolicySupplementBO policySupplementBO = calculateCompensationBO.getPolicySupplementBO(); if (Objects.isNull(calculateCompensationBO.getPolicySupplementBO())) { @@ -612,6 +652,7 @@ } Map<Integer, List<StateProjectCompensateStandard>> policyAllowanceMap = enableCompensateStandardMap.get(CompensateTypeEnum.POLICY_ALLOWANCE.getCode()); if (!CollectionUtils.isEmpty(policyAllowanceMap)) { // 物管费补贴 if (Objects.nonNull(policyAllowanceMap.get(CompensationCategoryEnum.PROPERTY_MANAGEMENT_SUBSIDY.getCode()))) { List<StateProjectCompensateStandard> stateProjectCompensateStandards = policyAllowanceMap.get(CompensationCategoryEnum.PROPERTY_MANAGEMENT_SUBSIDY.getCode()); StateProjectCompensateStandard stateProjectCompensateStandard; @@ -656,6 +697,7 @@ compensationVO.getPolicySupplementBO().setPropertyManagementSubsidy(propertyManagementSubsidyAmount); } } // 购房补贴 if (Objects.nonNull(policyAllowanceMap.get(CompensationCategoryEnum.HOUSE_PURCHASE_SUBSIDY.getCode()))) { List<StateProjectCompensateStandard> stateProjectCompensateStandards = policyAllowanceMap.get(CompensationCategoryEnum.HOUSE_PURCHASE_SUBSIDY.getCode()); StateProjectCompensateStandard stateProjectCompensateStandard; @@ -693,7 +735,7 @@ } } // 提前搬迁奖励 Double earlyRelocationRewardAmount = null; AwardBO awardBO = compensationVO.getAwardBO(); Map<Integer, List<StateProjectCompensateStandard>> earlyRelocationRewardMap = enableCompensateStandardMap.get(CompensateTypeEnum.EARLY_RELOCATION_REWARD.getCode()); land-system/src/main/java/com/zzg/system/service/state/impl/StateProjectCompensateStandardServiceImpl.java
@@ -35,6 +35,13 @@ @Resource private StateProjectCompensationService stateProjectCompensationService; /** * 获取补偿标准列表 * @param standardName * @param stopFlag * @param compensateType * @return */ @Override public Map<String, List<StateProjectCompensateStandardVO>> getCompensateStandardMap(String standardName, Integer stopFlag, Integer compensateType) { LambdaQueryWrapper<StateProjectCompensateStandard> queryWrapper = new LambdaQueryWrapper<>(); @@ -86,7 +93,7 @@ } catch (IOException e) { throw new GlobalException("读取Excel文件失败"); } //TODO 导入未校验标准名称唯一 StateProjectCompensateStandard po; List<StateProjectCompensateStandard> poList = new ArrayList<>(); for (StateProjectCompensateStandardVO e : dataList) { @@ -106,6 +113,11 @@ return saveBatch(poList); } /** * 创建补偿标准 * @param stateProjectCompensateStandard * @return */ @Override public Boolean createCompensatesStandard(StateProjectCompensateStandard stateProjectCompensateStandard) { String standardName = stateProjectCompensateStandard.getStandardName(); @@ -126,7 +138,7 @@ if (isValidCompensationType(typeEnum.getCode(), categoryEnum.getCode())) { StateProjectCompensateStandard compensation = createCompensation(typeEnum, categoryEnum, stateProjectCompensateStandard); // 处理特殊的组合 // TODO 处理特殊的组合 handleSpecialCases(typeEnum, categoryEnum, compensation, standardList); // 添加最终的 compensation 到标准列表 @@ -138,6 +150,11 @@ return this.saveOrUpdateBatch(standardList); } /** * 修改补偿标准名字 * @param stateProjectCompensateStandard * @return */ @Override public Boolean updateName(StateProjectCompensateStandard stateProjectCompensateStandard) { @@ -199,7 +216,9 @@ private void handleSpecialCases(CompensateTypeEnum typeEnum, CompensationCategoryEnum categoryEnum, StateProjectCompensateStandard compensation, List<StateProjectCompensateStandard> standardList) { //政策性补贴 if (typeEnum.equals(CompensateTypeEnum.POLICY_ALLOWANCE) //购房补贴 && categoryEnum.equals(CompensationCategoryEnum.HOUSE_PURCHASE_SUBSIDY)) { addCompensationWithSpecifications(compensation, standardList); }