| | |
| | | package com.ycl.service.impl; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ycl.common.base.Result; |
| | | import com.ycl.common.enums.business.FileTypeEnum; |
| | | import com.ycl.common.enums.business.ImportanceTypeEnum; |
| | | import com.ycl.common.enums.business.ProjectCategoryEnum; |
| | | import com.ycl.common.utils.CopyUtils; |
| | | import com.ycl.common.utils.DateUtils; |
| | | import com.ycl.common.utils.SecurityUtils; |
| | | import com.ycl.common.utils.StringUtils; |
| | | import com.ycl.domain.entity.*; |
| | | import com.ycl.domain.form.DocumentInfoForm; |
| | | import com.ycl.domain.form.ProjectInfoForm; |
| | |
| | | import com.ycl.service.FileService; |
| | | import com.ycl.service.ProjectInfoService; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.Assert; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | private void copyToProjectVO(ProjectInfoVO vo,ProjectVO projectVO) { |
| | | //忽略null值的复制 |
| | | CopyUtils.copyNoNullProperties(vo, projectVO); |
| | | if(vo.getProjectInvestmentFunding()!=null) CopyUtils.copyNoNullProperties(vo.getProjectInvestmentFunding(),projectVO); |
| | | if(vo.getProjectInvestmentInfo()!=null) CopyUtils.copyNoNullProperties(vo.getProjectInvestmentInfo(),projectVO); |
| | | if(vo.getProjectUnitRegistrationInfo()!=null) CopyUtils.copyNoNullProperties(vo.getProjectUnitRegistrationInfo(),projectVO); |
| | | if(vo.getProjectInvestmentPolicyCompliance()!=null) CopyUtils.copyNoNullProperties(vo.getProjectInvestmentPolicyCompliance(),projectVO); |
| | | if (vo.getProjectInvestmentInfo() != null) |
| | | CopyUtils.copyNoNullProperties(vo.getProjectInvestmentInfo(), projectVO); |
| | | if (vo.getProjectUnitRegistrationInfo() != null) |
| | | CopyUtils.copyNoNullProperties(vo.getProjectUnitRegistrationInfo(), projectVO); |
| | | if (vo.getProjectInvestmentPolicyCompliance() != null) |
| | | CopyUtils.copyNoNullProperties(vo.getProjectInvestmentPolicyCompliance(), projectVO); |
| | | if (vo.getProjectInvestmentFunding() != null) |
| | | CopyUtils.copyNoNullProperties(vo.getProjectInvestmentFunding(), projectVO); |
| | | } |
| | | |
| | | /** |
| | |
| | | // {"type":"省重点项目","count":0,"amount":"0.00","text":"省"}]}} |
| | | IndexCountVO indexCountVO = new IndexCountVO(); |
| | | List<IndexProPhaseCountVO> proPhaseCountVO = new ArrayList<>(); |
| | | proPhaseCountVO.add(new IndexProPhaseCountVO("储备规划阶段", 0, "0.00", "储")); |
| | | proPhaseCountVO.add(new IndexProPhaseCountVO("项目前期阶段", 0, "0.00", "新")); |
| | | proPhaseCountVO.add(new IndexProPhaseCountVO("实施阶段", 0, "0.00", "建")); |
| | | proPhaseCountVO.add(new IndexProPhaseCountVO("竣工投用阶段", 0, "0.00", "竣")); |
| | | List<IndexImpTypeCountVO> impTypeCountVO = new ArrayList<>(); |
| | | impTypeCountVO.add(new IndexImpTypeCountVO("一般项目", 0, "0.00", "普")); |
| | | impTypeCountVO.add(new IndexImpTypeCountVO("县重点项目", 0, "0.00", "县")); |
| | | impTypeCountVO.add(new IndexImpTypeCountVO("市重点项目", 0, "0.00", "市")); |
| | | impTypeCountVO.add(new IndexImpTypeCountVO("省重点项目", 0, "0.00", "省")); |
| | | indexCountVO.setImpTypeCountVO(impTypeCountVO); |
| | | List<ProjectVO> projectVOS = baseMapper.homeCount(); |
| | | List<ProjectVO> reserve = new ArrayList<>(); |
| | | List<ProjectVO> previous = new ArrayList<>(); |
| | | List<ProjectVO> implement = new ArrayList<>(); |
| | | List<ProjectVO> finish = new ArrayList<>(); |
| | | List<ProjectVO> normal = new ArrayList<>(); |
| | | List<ProjectVO> province = new ArrayList<>(); |
| | | List<ProjectVO> city = new ArrayList<>(); |
| | | List<ProjectVO> county = new ArrayList<>(); |
| | | projectVOS.forEach(item -> { |
| | | if (ProjectCategoryEnum.RESERVE.getDesc().equals(ProjectCategoryEnum.getPhaseByProjectStatus(item.getProjectStatus(), item.getProcessId() != null))) { |
| | | reserve.add(item); |
| | | } else if (ProjectCategoryEnum.PREVIOUS.getDesc().equals(ProjectCategoryEnum.getPhaseByProjectStatus(item.getProjectStatus(), item.getProcessId() != null))) { |
| | | previous.add(item); |
| | | } else if (ProjectCategoryEnum.IMPLEMENT.getDesc().equals(ProjectCategoryEnum.getPhaseByProjectStatus(item.getProjectStatus(), item.getProcessId() != null))) { |
| | | implement.add(item); |
| | | } else if (ProjectCategoryEnum.FINISH.getDesc().equals(ProjectCategoryEnum.getPhaseByProjectStatus(item.getProjectStatus(), item.getProcessId() != null))) { |
| | | finish.add(item); |
| | | } |
| | | |
| | | if (ImportanceTypeEnum.PROVINCIAL_KEY.getType().equals(item.getImportanceType())) { |
| | | province.add(item); |
| | | } else if (ImportanceTypeEnum.SUINING_KEY.getType().equals(item.getImportanceType())) { |
| | | city.add(item); |
| | | } else if (ImportanceTypeEnum.SHEHONG_KEY.getType().equals(item.getImportanceType())) { |
| | | county.add(item); |
| | | } else if (ImportanceTypeEnum.NORMAL.getType().equals(item.getImportanceType())) { |
| | | normal.add(item); |
| | | } |
| | | }); |
| | | //单位先默认为元 |
| | | proPhaseCountVO.add(new IndexProPhaseCountVO("储备规划阶段", reserve.size(), reserve.stream(). |
| | | filter(item -> !StringUtils.isEmpty(item.getTotalInvestment())) |
| | | .map(item -> new BigDecimal(item.getTotalInvestment()).setScale(2, RoundingMode.HALF_UP)) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal("100000000"), 2, RoundingMode.HALF_UP).toString(), "储")); |
| | | |
| | | proPhaseCountVO.add(new IndexProPhaseCountVO("项目前期阶段", previous.size(), previous.stream(). |
| | | filter(item -> !StringUtils.isEmpty(item.getTotalInvestment())) |
| | | .map(item -> new BigDecimal(item.getTotalInvestment()).setScale(2, RoundingMode.HALF_UP)) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal("100000000"), 2, RoundingMode.HALF_UP).toString(), "新")); |
| | | |
| | | proPhaseCountVO.add(new IndexProPhaseCountVO("实施阶段", implement.size(), implement.stream(). |
| | | filter(item -> !StringUtils.isEmpty(item.getTotalInvestment())) |
| | | .map(item -> new BigDecimal(item.getTotalInvestment()).setScale(2, RoundingMode.HALF_UP)) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal("100000000"), 2, RoundingMode.HALF_UP).toString(), "建")); |
| | | |
| | | proPhaseCountVO.add(new IndexProPhaseCountVO("竣工投用阶段", finish.size(), finish.stream(). |
| | | filter(item -> !StringUtils.isEmpty(item.getTotalInvestment())) |
| | | .map(item -> new BigDecimal(item.getTotalInvestment()).setScale(2, RoundingMode.HALF_UP)) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal("100000000"), 2, RoundingMode.HALF_UP).toString(), "竣")); |
| | | |
| | | indexCountVO.setProPhaseCountVO(proPhaseCountVO); |
| | | |
| | | List<IndexImpTypeCountVO> impTypeCountVO = new ArrayList<>(); |
| | | impTypeCountVO.add(new IndexImpTypeCountVO("一般项目", province.size(), province.stream(). |
| | | filter(item -> !StringUtils.isEmpty(item.getTotalInvestment())) |
| | | .map(item -> new BigDecimal(item.getTotalInvestment()).setScale(2, RoundingMode.HALF_UP)) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal("100000000"), 2, RoundingMode.HALF_UP).toString(), "普")); |
| | | |
| | | impTypeCountVO.add(new IndexImpTypeCountVO("县重点项目", city.size(), city.stream(). |
| | | filter(item -> !StringUtils.isEmpty(item.getTotalInvestment())) |
| | | .map(item -> new BigDecimal(item.getTotalInvestment()).setScale(2, RoundingMode.HALF_UP)) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal("100000000"), 2, RoundingMode.HALF_UP).toString(), "县")); |
| | | |
| | | impTypeCountVO.add(new IndexImpTypeCountVO("市重点项目", county.size(), county.stream(). |
| | | filter(item -> !StringUtils.isEmpty(item.getTotalInvestment())) |
| | | .map(item -> new BigDecimal(item.getTotalInvestment()).setScale(2, RoundingMode.HALF_UP)) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal("100000000"), 2, RoundingMode.HALF_UP).toString(), "市")); |
| | | |
| | | impTypeCountVO.add(new IndexImpTypeCountVO("省重点项目", normal.size(), normal.stream(). |
| | | filter(item -> !StringUtils.isEmpty(item.getTotalInvestment())) |
| | | .map(item -> new BigDecimal(item.getTotalInvestment()).setScale(2, RoundingMode.HALF_UP)) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal("100000000"), 2, RoundingMode.HALF_UP).toString(), "省")); |
| | | indexCountVO.setImpTypeCountVO(impTypeCountVO); |
| | | |
| | | |
| | | return indexCountVO; |
| | | } |