| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | |
| | | @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<>(); |
| | |
| | | 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())); |
| | | //根据项目状态查询协议 这一个项目状态只有一种 随便取出来即可 |
| | |
| | | } |
| | | } |
| | | stateAgreementLambdaQueryWrapper.isNotNull(StateAgreement::getAgreementNumber); |
| | | //查询协议列表 |
| | | List<StateAgreement> stateAgreements = agreementService.list(stateAgreementLambdaQueryWrapper); |
| | | if (CollectionUtils.isEmpty(stateAgreements)) { |
| | | stateAssetDetailVOPageInfo.setList(result); |
| | |
| | | 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); |
| | |
| | | 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); |
| | | |
| | | //预算金额 |
| | |
| | | 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)) { |
| | |
| | | |
| | | stateAgreementLambdaQueryWrapper.isNotNull(StateAgreement::getAgreementNumber); |
| | | stateAgreementLambdaQueryWrapper.in(StateAgreement::getStateHouseholdId, houseIds); |
| | | //查询协议信息 |
| | | List<StateAgreement> stateAgreements = agreementService.list(stateAgreementLambdaQueryWrapper); |
| | | if (CollectionUtils.isNotEmpty(stateAgreements)) { |
| | | Integer projectStatus = stateProject.getStatus(); |
| | |
| | | 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(); |
| | |
| | | |
| | | 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() |
| | |
| | | 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(","))); |
| | | |
| | |
| | | variable.put("projectId", asset.getStateProjectId()); |
| | | variable.put("street", asset.getStreet()); |
| | | processStartBO.setVariable(variable); |
| | | //启动工作流 |
| | | stateProcessTemplateService.start(processStartBO); |
| | | return result; |
| | | } |