land-admin/src/main/java/com/zzg/web/controller/state/StateAgreementController.java
@@ -45,7 +45,7 @@ private final StateHouseholdService stateHouseholdService; private final StateProcessTemplateService stateProcessTemplateService; private final StateProjectService stateProjectService; // 新增协议 @PostMapping(UrlConstants.STATE_AGREEMENT_SAVE) public AjaxResult<Boolean> createAgreement(@RequestBody StateAgreementSaveBO saveBO) { //根据协议类型和房产id进行排重 每个协议只能存在一份 @@ -66,12 +66,12 @@ } return AjaxResult.success(stateAgreementService.saveOrUpdate(saveBO)); } // 模拟转征收 @PostMapping(UrlConstants.STATE_AGREEMENT_UPDATE) public AjaxResult<Boolean> updateAgreement(@RequestBody UpdateAgreementBO bo) { return AjaxResult.success(stateAgreementService.updateStateAgreement(bo.getHouseId())); } // 更新协议 @PostMapping(UrlConstants.STATE_AGREEMENT_UPDATE_AGREEMENT) public AjaxResult<StateAgreementSaveBO> updateAgreement(@RequestBody StateAgreementSaveBO saveBO) { if (!CollectionUtils.isEmpty(saveBO.getFileBOList())) { @@ -82,7 +82,7 @@ stateAgreementService.saveOrUpdate(saveBO); return AjaxResult.success(saveBO); } // 协议详情 - 编辑 -删除按钮 @GetMapping(UrlConstants.STATE_AGREEMENT_DEL) public AjaxResult<Boolean> deleteAgreement(@RequestParam String agreementId) { StateAgreement stateAgreement = stateAgreementService.getById(agreementId); @@ -105,17 +105,17 @@ } return AjaxResult.success(stateAgreementService.removeById(agreementId)); } // 协议管理 - 页面查询 @PostMapping(UrlConstants.STATE_AGREEMENT_LIST) public AjaxResult<PageInfo<StateAgreementVO>> listStateAgreement(@RequestBody StateAgreementBO request) { return AjaxResult.success(stateAgreementService.listDataByCondition(request)); } // 协议详情 @GetMapping(UrlConstants.STATE_AGREEMENT_DETAIL) public AjaxResult<List<AgreementDetailVO>> getAgreementDetail(@RequestParam String stateHouseId) { return AjaxResult.success(stateAgreementService.listAgreementDetailByHouseId(stateHouseId)); } //生成协议word @GetMapping(UrlConstants.STATE_AGREEMENT_GENERATE) public void generateAgreementDetail( @RequestParam String stateHouseholdId, @@ -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
@@ -14,9 +14,12 @@ import com.zzg.system.service.state.StateAssetService; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.List; import java.util.Objects; @@ -26,24 +29,25 @@ public class StateAssetController { private final StateAssetService assetService; // 新增和修改 项目资金 @PostMapping(UrlConstants.STATE_PROJECT_ASSET_SAVE) public AjaxResult<Boolean> saveAsset(@RequestBody StateAssetBO asset) { return AjaxResult.success(assetService.saveAsset(asset)); } // 项目删除 @GetMapping(UrlConstants.STATE_PROJECT_ASSET_DEL) public AjaxResult<Boolean> delAsset(@RequestParam String assetId) { StateAsset asset = assetService.getById(assetId); 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()); return AjaxResult.success(assetService.update(updateWrapper)); } // 项目资金展示 @GetMapping(UrlConstants.STATE_PROJECT_ASSET_LIST) public AjaxResult<List<StateAsset>> listAsset( @RequestParam String projectId, @@ -62,12 +66,12 @@ .setScale(4, RoundingMode.HALF_UP))); return AjaxResult.success(list); } // 项目资金 上方统计数据 @GetMapping(UrlConstants.STATE_PROJECT_ASSET_SUM) public AjaxResult<JSONObject> sumAsset(@RequestParam String projectId) { return AjaxResult.success(assetService.sumAsset(projectId)); } // 项目资金点击上方符号查询 @PostMapping(UrlConstants.STATE_PROJECT_ASSET_DETAIL) public AjaxResult<PageInfo<StateAssetDetailVO>> listAssetDetail(@RequestBody AssetDetailBO detailBO) { return AjaxResult.success(assetService.listAssetDetail(detailBO)); land-admin/src/main/java/com/zzg/web/controller/state/StateDataCenterController.java
@@ -20,7 +20,7 @@ public class StateDataCenterController { private final StateDateCenterService dateCenterService; // 计算最上面顶部统计数据 @GetMapping(UrlConstants.STATE_DATA_CENTER_SUM) public AjaxResult<ProjectAnalysisSumVO> dataCenterSum( @RequestParam(required = false) String location, @@ -30,13 +30,13 @@ ) { return AjaxResult.success(dateCenterService.projectSumCount(location, projectStatus, projectStartTime)); } // 项目统计-模拟征收超期项目 @PostMapping(UrlConstants.STATE_DATA_CENTER_SUM_EXPIRED) public AjaxResult<PageInfo<ProjectStatusExpiredVO>> sumExpiredAgreement(@RequestBody(required = false) ProjectStatisticsBO statisticsBO) { return AjaxResult.success(dateCenterService.expiredProjectStatus(statisticsBO)); } //安置情况 // 安置情况 获取数据中心安置情况模块 中间的饼图 @GetMapping(UrlConstants.STATE_DATA_CENTER_PLACEMENT_STATISTICS) public AjaxResult<PlacementStatisticsVO> stateDataCenterPlacementStatistics ( @@ -47,7 +47,7 @@ ) { return AjaxResult.success(dateCenterService.placementStatistics(projectStreet, projectStartTime,type)); } // 数据中心-安置情况柱状图 @GetMapping(UrlConstants.STATE_DATA_CENTER_PLACEMENT_STATISTICS_STREET) public AjaxResult<PlacementStreetVO> stateDataCenterPlacementStatisticsStreet( @RequestParam(required = false) String projectStreet, @@ -55,7 +55,7 @@ ) { return AjaxResult.success(dateCenterService.sumPlacementStreet(projectStreet, projectStartTime)); } // 获取数据中心安置情况模块 下方的分页查询 @PostMapping(UrlConstants.STATE_DATA_CENTER_PLACEMENT_STATISTICS_PAGE) public AjaxResult<PageInfo<TransitionPageVO>> stateDataCenterPlacementStatisticsPage( @RequestBody PlacementStatisticsBO placementStatisticsBO @@ -63,7 +63,7 @@ return AjaxResult.success(dateCenterService.placementStatisticsPage(placementStatisticsBO)); } //项目资金 //项目资金 数据中心-项目资产统计 左侧数据 @GetMapping(UrlConstants.STATE_DATA_CENTER_ASSET_SUM_MONEY) public AjaxResult<AssetMoneyVO> stateCenterAssetSumMoney( @RequestParam(required = false) @@ -71,7 +71,7 @@ ) { return AjaxResult.success(dateCenterService.sumAssetMoney(projectStartTime)); } // 数据中心-项目资产统计 右侧柱状图 @GetMapping(UrlConstants.STATE_DATA_CENTER_ASSET_SUM_MONEY_GRAPH) public AjaxResult<List<AssetGraphVO>> stateCenterAssetSumGraph( @RequestParam(required = false) land-admin/src/main/java/com/zzg/web/controller/state/StateProcessController.java
@@ -1,6 +1,5 @@ package com.zzg.web.controller.state; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -16,17 +15,31 @@ import com.zzg.common.enums.DeleteFlagEnum; import com.zzg.common.exception.GlobalException; import com.zzg.common.utils.SecurityUtils; import com.zzg.framework.web.domain.server.Sys; import com.zzg.system.domain.bo.*; import com.zzg.system.domain.bo.ProcessAgreeBO; import com.zzg.system.domain.bo.ProcessCreateBO; import com.zzg.system.domain.bo.ProcessModuleUpdateBO; import com.zzg.system.domain.bo.ProcessRefuseBO; import com.zzg.system.domain.bo.ProcessStartBO; import com.zzg.system.domain.bo.ProcessTaskListBO; import com.zzg.system.domain.bo.ProcessTemplatePageBO; import com.zzg.system.domain.bo.ProcessUpdateBO; import com.zzg.system.domain.vo.ProcessTaskListVO; import com.zzg.system.service.state.StateProcessModuleService; import com.zzg.system.service.state.StateProcessTemplateService; import com.zzg.system.service.system.ISysUserService; import lombok.RequiredArgsConstructor; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import java.util.*; 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; @@ -38,12 +51,13 @@ private final StateProcessModuleService processModuleService; private final ISysUserService sysUserService; //应用流程分页列表 @PostMapping(UrlConstants.STATE_PROCESS_STATE_MODULE_PAGE) public AjaxResult<PageInfo<StateProcessModule>> modulePage(@RequestBody PageDomain pageDomain) { PageHelper.startPage(pageDomain.getPageNum(), pageDomain.getPageSize()); LambdaQueryWrapper<StateProcessModule> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.orderByAsc(StateProcessModule::getCategory); //查询应用流程列表 List<StateProcessModule> moduleList = processModuleService.list(queryWrapper); if (CollectionUtils.isEmpty(moduleList)) { return AjaxResult.success(new PageInfo<>()); @@ -51,6 +65,7 @@ PageInfo<StateProcessModule> pageInfo = new PageInfo<>(moduleList); List<String> updateUserId = pageInfo.getList().stream().map(BaseEntity::getUpdateBy).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(updateUserId)){ //根据用户id查询用户信息 List<SysUser> sysUsers = sysUserService.selectUserByIdList(updateUserId); Map<String, SysUser> sysUserMap; if (!CollectionUtils.isEmpty(sysUsers)){ @@ -58,6 +73,7 @@ } else { sysUserMap = new HashMap<>(); } //遍历列表,设置更新人名称 pageInfo.getList().forEach(e -> { SysUser sysUser = sysUserMap.get(e.getUpdateBy()); if (Objects.nonNull(sysUser)){ @@ -67,7 +83,7 @@ } return AjaxResult.success(pageInfo); } //修改应用流程 @PostMapping(UrlConstants.STATE_PROCESS_STATE_MODULE_UPDATE) public AjaxResult<PageInfo<StateProcessModule>> moduleUpdate(@RequestBody ProcessModuleUpdateBO processModuleUpdateBO) { StateProcessTemplate stateProcessTemplate = processTemplateService.getById(processModuleUpdateBO.getTemplateId()); 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/StateProjectController.java
@@ -70,7 +70,7 @@ public AjaxResult<StateProjectBO> getById(@PathVariable String id) { return AjaxResult.success(stateProjectService.getProjectInfoById(id)); } //获取当前项目的所有街道 @GetMapping(UrlConstants.STATE_PROJECT_GET_STREET_BY_ID) public AjaxResult<String[]> getProjectBelongingStreetTownById(@PathVariable String id) { return AjaxResult.success(stateProjectService.getProjectBelongingStreetTownById(id)); land-admin/src/main/java/com/zzg/web/controller/state/StateSettlementController.java
@@ -14,9 +14,19 @@ import com.zzg.common.utils.file.FileUtils; import com.zzg.system.convert.StateProjectConvert; import com.zzg.system.convert.easyExcel.MultiDropdownWriteHandler; import com.zzg.system.domain.bo.*; import com.zzg.system.domain.vo.*; import com.zzg.system.service.state.StateHouseholdService; import com.zzg.system.domain.bo.ImportSettlementBO; import com.zzg.system.domain.bo.SettlementBO; import com.zzg.system.domain.bo.SettlementDetailBO; import com.zzg.system.domain.bo.StateExecutionBO; import com.zzg.system.domain.bo.WorkFlowSubmitBO; import com.zzg.system.domain.vo.HouseholdVO; import com.zzg.system.domain.vo.NotResettlementHouseholdExportVO; import com.zzg.system.domain.vo.ProjectExecutionSumVO; import com.zzg.system.domain.vo.ResettlementHouseholdExportVO; import com.zzg.system.domain.vo.SettlementDetailPageVO; import com.zzg.system.domain.vo.SettlementSumVO; import com.zzg.system.domain.vo.StateExecutionDetailExportVO; import com.zzg.system.domain.vo.StateExecutionDetailVO; import com.zzg.system.service.state.StateSettlementService; import com.zzg.system.service.system.ISysDeptService; import com.zzg.web.core.enums.TemplateFileTypeEnum; @@ -25,7 +35,11 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @@ -77,12 +91,12 @@ public AjaxResult<SettlementSumVO> sumSettled(@RequestParam String projectId) { return AjaxResult.success(settlementService.sumSettleData(projectId)); } // 安置情况页面 数据 @PostMapping(UrlConstants.STATE_SETTLEMENT_LIST) public AjaxResult<PageInfo<HouseholdVO>> listSettlement(@RequestBody SettlementBO settlementBO) { return AjaxResult.success(settlementService.listSettleData(settlementBO)); } // 安置情况页面 导出 @PostMapping(UrlConstants.STATE_SETTLEMENT_EXPORT) public AjaxResult<Void> exportSettlement(@RequestBody SettlementBO settlementBO, HttpServletResponse response) { try { @@ -159,6 +173,7 @@ } } // 新增安置情况模板 @GetMapping(UrlConstants.STATE_SETTLEMENT_IMPORT_TEMPLATE) public void importStateHouseholdTemplate(@RequestParam Integer compensationType, HttpServletResponse response) { @@ -189,7 +204,7 @@ } } // 新增安置详情页面 导入 @PostMapping(UrlConstants.STATE_SETTLEMENT_IMPORT) public AjaxResult<Void> importSettlement(ImportSettlementBO importSettlementBO) throws IOException { settlementService.stateSettlementImport(importSettlementBO); @@ -197,6 +212,7 @@ } // 实施明细导出 @PostMapping(UrlConstants.STATE_SETTLEMENT_LIST_EXPORT) public AjaxResult<Void> exportSettlementDetail(@RequestBody(required = false) StateExecutionBO executionBO, HttpServletResponse response) { try { @@ -226,7 +242,7 @@ public AjaxResult<Map<String, Map<Integer, ProjectExecutionSumVO>>> listProjectExecution(@RequestBody List<String> projectIdList) { return AjaxResult.success(settlementService.listProjectExecutionByProjectId(projectIdList, null)); } // 新增安置情况 - 提交审核 @PostMapping(UrlConstants.STATE_SETTLEMENT_EXECUTION_WORKFLOW_SUBMIT) public AjaxResult<Boolean> submitSettle(@RequestBody WorkFlowSubmitBO workFlowSubmitBO) { if (Objects.isNull(workFlowSubmitBO.getSettlementIdList()) || workFlowSubmitBO.getSettlementIdList().isEmpty()) { @@ -247,6 +263,7 @@ } /** * 新增安置情况 - 安置批次名字 * @param projectId * @param componsationType * @return @@ -256,6 +273,11 @@ return AjaxResult.success(settlementService.generateBatchName(projectId, componsationType)); } /** * 当前项目安置批次名字列表 * @param projectId * @return */ @GetMapping(UrlConstants.STATE_SETTLEMENT_BATCH_NAME_LIST) public AjaxResult<List<String>> listBatchName(@RequestParam String projectId) { return AjaxResult.success(settlementService.listBatchName(projectId)); land-admin/src/main/java/com/zzg/web/controller/state/householdQuery/StateHouseholdController.java
@@ -11,7 +11,6 @@ import com.zzg.common.core.domain.AjaxResult; import com.zzg.common.core.domain.entity.state.StateHousehold; import com.zzg.common.enums.HouseMoveEnum; import com.zzg.common.enums.HouseSearchStatusEnum; import com.zzg.common.enums.HouseUsingTypeEnum; import com.zzg.common.enums.StateHouseholdStageEnums; import com.zzg.common.exception.GlobalException; @@ -21,17 +20,30 @@ import com.zzg.system.domain.bo.HouseQueryBO; import com.zzg.system.domain.bo.HouseholdBO; import com.zzg.system.domain.bo.StateHouseholdBO; import com.zzg.system.domain.vo.*; import com.zzg.system.domain.vo.HouseQueryVO; import com.zzg.system.domain.vo.HouseUsingTypeVO; import com.zzg.system.domain.vo.HouseholdDetailVO; import com.zzg.system.domain.vo.HouseholdVO; import com.zzg.system.domain.vo.StateHouseholdExportVO; import com.zzg.system.domain.vo.StateHouseholdVO; import com.zzg.system.service.state.StateHouseholdService; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; import java.util.Objects; import java.util.Set; @RestController @RequiredArgsConstructor @@ -44,18 +56,18 @@ public AjaxResult<Page<StateHousehold>> page(@RequestParam int currentPage, @RequestParam int pageSize) { return AjaxResult.success(stateHouseholdService.page(new Page<>(currentPage, pageSize))); } //入户调查 - 入户调查列表数据查询页面 @PostMapping(UrlConstants.STATE_HOUSEHOLD_LIST_BY_CONDITION) public AjaxResult<HouseholdDetailVO> list(@RequestBody(required = false) HouseholdBO householdBOBody) { return AjaxResult.success(stateHouseholdService.queryList(householdBOBody)); } //国有入户调查 @PostMapping(UrlConstants.STATE_HOUSEHOLD_QUERY) public AjaxResult<PageInfo<HouseQueryVO>> houseQuery(@RequestBody HouseQueryBO houseQueryBO) { return AjaxResult.success(stateHouseholdService.queryData(houseQueryBO)); } //入户调查列表页面-导出 @PostMapping(UrlConstants.STATE_HOUSEHOLD_LIST_EXPORT) public AjaxResult<HouseholdDetailVO> export(@RequestBody(required = false) HouseholdBO householdBOBody, HttpServletResponse response) throws IOException { householdBOBody.setPageNum(1); @@ -91,7 +103,7 @@ response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); return AjaxResult.success(); } //入户调查页面-导入 @PostMapping(UrlConstants.STATE_HOUSEHOLD_LIST_IMPORT) public AjaxResult<Boolean> importStateHousehold(@RequestParam("file") MultipartFile file, String projectId) { @@ -126,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); @@ -146,12 +159,12 @@ return AjaxResult.success(); } //项目资金情况 街道标签 - 查询该项目所有的街道 @GetMapping(UrlConstants.STATE_HOUSEHOLD_STREET_LIST) public AjaxResult<List<JSONObject>> listHouseStreet(@RequestParam String projectId) { return AjaxResult.success(stateHouseholdService.listStreet(projectId)); } //入户调查 - 点击完成提交 @GetMapping(UrlConstants.STATE_HOUSEHOLD_COMPLETE_SEARCH) public AjaxResult<Boolean> completeSearch(@RequestParam String houseId, @RequestParam Integer searchStatus) { @@ -183,7 +196,7 @@ } return AjaxResult.success(stateHouseholdService.saveOrUpdate(stateHousehold)); } //撤回按钮 @GetMapping(UrlConstants.STATE_HOUSEHOLD_MOBILE_BACK) public AjaxResult<Boolean> mobileBack(@RequestParam String houseId) { return AjaxResult.success(stateHouseholdService.mobileBack(houseId)); land-admin/src/main/java/com/zzg/web/controller/state/householdQuery/StateHouseholdOwnerController.java
@@ -28,13 +28,13 @@ private final StateHouseholdOwnerService householdOwnerService; //查询权利人 @GetMapping(UrlConstants.STATE_HOUSEHOLD_OWNER_LIST_BY_SATE_HOUSEHOLD_ID) public AjaxResult<Object> listPersons(@RequestParam String stateHouseholdId) { JSONObject jsonObject = householdOwnerService.getPersonsInfo(stateHouseholdId); return AjaxResult.success(jsonObject); } //新增权利人 @PostMapping(UrlConstants.STATE_HOUSEHOLD_OWNER_SAVE) public AjaxResult<Boolean> savePerson(@RequestBody StateHouseholdOwnerBO person) { List<StateHouseholdOwner> ownerBOList = person.getOwnerBOList(); @@ -51,7 +51,7 @@ ); return AjaxResult.success(householdOwnerService.saveOrUpdateBatch(ownerBOList)); } //修改权利人信息 @PostMapping(UrlConstants.STATE_HOUSEHOLD_OWNER_UPDATE) public AjaxResult<Boolean> updatePerson(@RequestBody StateHouseholdOwner stateHouseholdOwner) { //查询当前项目下所有的 @@ -74,12 +74,12 @@ householdOwnerService.saveOrUpdate(stateHouseholdOwner); return AjaxResult.success(); } //删除权利人 @GetMapping(UrlConstants.STATE_HOUSEHOLD_OWNER_DELETE) public AjaxResult<Boolean> deletePerson(@RequestParam String stateHouseholdOwnerId) { return AjaxResult.success(householdOwnerService.removeById(stateHouseholdOwnerId)); } //计算入户补偿的预估数据 @PostMapping(UrlConstants.STATE_HOUSEHOLD_OWNER_CALCULATE_COMPENSATION) @ApiOperation(value = "计算入户补偿的预估数据", notes = "计算入户补偿的预估数据") public AjaxResult<CalculateCompensationVO> calculateCompensation(@RequestBody CalculateCompensationBO calculateCompensationBO) { land-common/src/main/java/com/zzg/common/enums/ApplyStatusEnum.java
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/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/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 对象拷贝时new 了对象的 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,17 +137,22 @@ 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); data.setSettleMoney(settleMoney); @@ -135,12 +166,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 +194,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 +218,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 +230,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 +240,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 +291,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 +336,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/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"); 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,10 +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))); //根据类型分组后再根据子类型进行一次分组 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); } @@ -121,7 +139,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 +180,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 +236,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 +249,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 +278,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 +311,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 +344,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 +377,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 +411,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 +446,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 +489,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 +516,7 @@ } } } // 搬家补助费 List<StateProjectCompensateStandard> movingAllowance = policySubsidyMap.get(CompensationCategoryEnum.MOVING_ALLOWANCE.getCode()); if (!CollectionUtils.isEmpty(movingAllowance)) { StateProjectCompensateStandard stateProjectCompensateStandard = movingAllowance.stream().findFirst().get(); @@ -507,9 +544,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 +580,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 +609,7 @@ } } } // 搬家补助费 List<StateProjectCompensateStandard> movingAllowance = policySubsidyMap.get(CompensationCategoryEnum.MOVING_ALLOWANCE.getCode()); if (!CollectionUtils.isEmpty(movingAllowance)) { StateProjectCompensateStandard stateProjectCompensateStandard = movingAllowance.stream().findFirst().get(); @@ -602,7 +642,9 @@ } //政策性补贴 //购房补贴 Double propertyManagementSubsidyAmount = null; //物管费补贴 Double housingSubsidyAmount = null; PolicySupplementBO policySupplementBO = calculateCompensationBO.getPolicySupplementBO(); if (Objects.isNull(calculateCompensationBO.getPolicySupplementBO())) { @@ -612,6 +654,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 +699,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 +737,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/StateProcessTemplateServiceImpl.java
@@ -5,14 +5,23 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.aizuda.bpm.engine.FlowLongEngine; import com.aizuda.bpm.engine.core.FlowCreator; import com.aizuda.bpm.engine.core.enums.TaskType; import com.aizuda.bpm.engine.entity.*; import com.aizuda.bpm.engine.entity.FlowEntity; import com.aizuda.bpm.engine.entity.FlwHisInstance; import com.aizuda.bpm.engine.entity.FlwHisTask; import com.aizuda.bpm.engine.entity.FlwHisTaskActor; import com.aizuda.bpm.engine.entity.FlwProcess; import com.aizuda.bpm.engine.entity.FlwTask; import com.aizuda.bpm.engine.entity.FlwTaskActor; import com.aizuda.bpm.engine.model.NodeModel; import com.aizuda.bpm.mybatisplus.mapper.*; import com.aizuda.bpm.mybatisplus.mapper.FlwHisInstanceMapper; import com.aizuda.bpm.mybatisplus.mapper.FlwHisTaskActorMapper; import com.aizuda.bpm.mybatisplus.mapper.FlwHisTaskMapper; import com.aizuda.bpm.mybatisplus.mapper.FlwTaskActorMapper; import com.aizuda.bpm.mybatisplus.mapper.FlwTaskMapper; import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONWriter; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -23,7 +32,11 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.zzg.common.core.domain.BaseEntity; import com.zzg.common.core.domain.entity.state.*; import com.zzg.common.core.domain.entity.state.StateProcessExtInstance; import com.zzg.common.core.domain.entity.state.StateProcessInstanceAction; import com.zzg.common.core.domain.entity.state.StateProcessModule; import com.zzg.common.core.domain.entity.state.StateProcessTemplate; import com.zzg.common.core.domain.entity.state.StateTaskCenter; import com.zzg.common.core.domain.entity.system.SysUser; import com.zzg.common.core.domain.model.LoginUser; import com.zzg.common.enums.StateProcessActionType; @@ -31,23 +44,37 @@ import com.zzg.common.exception.state.StateErrorCode; import com.zzg.common.utils.SecurityUtils; import com.zzg.common.utils.uuid.IdUtils; import com.zzg.system.domain.bo.*; import com.zzg.system.domain.vo.City; import com.zzg.system.domain.bo.DeployBO; import com.zzg.system.domain.bo.ProcessAgreeBO; import com.zzg.system.domain.bo.ProcessCreateBO; import com.zzg.system.domain.bo.ProcessRefuseBO; import com.zzg.system.domain.bo.ProcessStartBO; import com.zzg.system.domain.bo.ProcessTaskListBO; import com.zzg.system.domain.bo.ProcessTemplatePageBO; import com.zzg.system.domain.bo.ProcessUpdateBO; import com.zzg.system.domain.vo.ProcessTaskListVO; import com.zzg.system.mapper.state.StateProcessTemplateMapper; import com.zzg.system.service.state.*; import com.zzg.system.service.state.StateProcessExtInstanceService; import com.zzg.system.service.state.StateProcessInstanceActionService; import com.zzg.system.service.state.StateProcessModuleService; import com.zzg.system.service.state.StateProcessTemplateService; import com.zzg.system.service.state.StateTaskCenterService; import com.zzg.system.service.system.ISysRoleService; import com.zzg.system.service.system.ISysUserService; import lombok.AllArgsConstructor; import org.apache.commons.io.IOUtils; import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.ArrayList; 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; @@ -68,13 +95,20 @@ private final FlwHisTaskActorMapper flwHisTaskActorMapper; private final ISysUserService sysUserService; /** * 流程模版分页 * @param request * @return */ @Override public Page<StateProcessTemplate> page(ProcessTemplatePageBO request) { //查询流程模板列表 Page<StateProcessTemplate> templatePage = this.baseMapper.page(new Page<>(request.getCurrentPage(), request.getPageSize()), request); //更新人id列表 List<String> updateUserNameList = templatePage.getRecords().stream().map(BaseEntity::getUpdateBy).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(updateUserNameList)) { //根据用户id列表查询用户信息 List<SysUser> sysUsers = sysUserService.selectUserByUserNameList(updateUserNameList); Map<String, SysUser> sysUserMap; if (!CollectionUtils.isEmpty(sysUsers)) { @@ -82,6 +116,7 @@ } else { sysUserMap = new HashMap<>(); } //遍历列表,设置更新人名称 templatePage.getRecords().forEach(e -> { SysUser sysUser = sysUserMap.get(e.getUpdateBy()); if (Objects.nonNull(sysUser)) { @@ -92,10 +127,17 @@ return templatePage; } /** * 修改并部署模版 * @param processUpdateBO * @return */ @Transactional(rollbackFor = Exception.class) @Override public Boolean update(ProcessUpdateBO processUpdateBO) { //查询流程模板 StateProcessTemplate temp = this.getById(processUpdateBO.getId()); //根据template_key查询最新版本的模板 StateProcessTemplate template = this.getOne(Wrappers.<StateProcessTemplate>lambdaQuery() .eq(StateProcessTemplate::getTemplateKey, temp.getTemplateKey()) .apply("(template_key, template_version) in(" @@ -149,6 +191,11 @@ return stateProcessModuleService.updateBatchById(stateProcessModules); } /** * 创建并部署模版 * @param processCreateBO * @return */ @Transactional(rollbackFor = Exception.class) @Override public Boolean create(ProcessCreateBO processCreateBO) { @@ -186,6 +233,11 @@ return this.save(processTemplate); } /** * 启动流程 * @param processStartBO * @return */ @Transactional(rollbackFor = Exception.class) @Override public Boolean start(ProcessStartBO processStartBO) { @@ -255,6 +307,11 @@ return true; } /** * 待办 * @param processTaskListBO * @return */ @Override public PageInfo<ProcessTaskListVO> waitTaskPage(ProcessTaskListBO processTaskListBO) { List<ProcessTaskListVO> page = new ArrayList<>(); @@ -327,6 +384,7 @@ List<String> updateUserId = processTaskListVOS.stream().map(ProcessTaskListVO::getCreateBy).collect(Collectors.toList()); Map<String, SysUser> sysUserMap; if (!CollectionUtils.isEmpty(updateUserId)) { //根据用户id查询更新人信息 List<SysUser> sysUsers = sysUserService.selectUserByIdList(updateUserId); if (!CollectionUtils.isEmpty(sysUsers)) { 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); } 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 @@ -302,11 +311,17 @@ return result; } /** * 安置详情 * @param settlementDetailBO * @return */ @Override public SettlementDetailPageVO listDetailData(SettlementDetailBO settlementDetailBO) { SettlementDetailPageVO pageVO = new SettlementDetailPageVO(); PageUtils.startPage(); //分页查询安置情况 List<SettlementDetailVO> settlementDetailVOS = settlementMapper.listSettleDetail(settlementDetailBO); if (CollectionUtils.isEmpty(settlementDetailVOS)) { pageVO.setPageData(new PageInfo<>()); @@ -316,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(); @@ -355,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(); @@ -429,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); @@ -450,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); @@ -531,6 +552,11 @@ return settlementSumVO; } /** * 项目实施明细 * @param executionBO * @return */ @Override public PageInfo<StateExecutionDetailVO> listExecution(StateExecutionBO executionBO) { PageUtils.startPage(); @@ -539,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()); @@ -604,6 +630,11 @@ return pageInfo; } /** * 安置详情-回显 * @param executionB * @return */ @Override public List<StateExecutionDetailVO> exportExecution(StateExecutionBO executionB) { if (StringUtils.isNoneBlank(executionB.getHouseStateId())) { @@ -615,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() @@ -629,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)); @@ -651,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); @@ -665,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()); } @@ -677,6 +712,12 @@ return result; } /** * 给项目展示使用 * @param projectIdList * @param projectStreet * @return */ @Override public Map<String, Map<Integer, ProjectExecutionSumVO>> listProjectExecutionByProjectId(List<String> projectIdList, String projectStreet) { @@ -692,7 +733,7 @@ return new HashMap<>(); } //查询房产 LambdaQueryWrapper<StateHousehold> householdQueryWrapper = new LambdaQueryWrapper<>(); householdQueryWrapper.in(StateHousehold::getStateProjectId, projectIdList); if (StringUtils.isNoneBlank(projectStreet)) { @@ -710,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()); @@ -884,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<>(); @@ -940,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()); @@ -987,6 +1029,11 @@ return "第" + batchNum + "批次"; } /** * 当前项目批次列表 * @param projectId * @return */ @Override public List<String> listBatchName(String projectId) { if (StringUtils.isEmpty(projectId)) { @@ -1008,14 +1055,19 @@ return stateSettlementList.stream().map(StateSettlement::getSettleName).distinct().collect(Collectors.toList()); } /** * 安置情况保存 * @param stateSettlement */ @Override @Transactional public void saveOrUpdateSettlement(List<StateSettlement> stateSettlement) { 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()); @@ -1030,7 +1082,7 @@ data.setSettlementArea(areaMap.get(data.getStateHouseholdId())); } }); //全为编辑 if (CollectionUtils.isEmpty(newAddHouseId)) { this.saveOrUpdateBatch(oldUpdateList); return; @@ -1066,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); @@ -1101,6 +1154,10 @@ } } /** * 新增安置情况 - 提交审核 * @param settlementIds */ @Override @Transactional public void workflowSubmit(List<String> settlementIds) { @@ -1160,6 +1217,10 @@ } } /** * 安置情况删除 * @param id */ @Override public void deleteSettlement(String id) { stateSettlementMapper.deleteSettlement(id); @@ -1389,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);