|
@@ -9,11 +9,9 @@ import lombok.AllArgsConstructor;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springblade.core.log.exception.ServiceException;
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl;
|
|
|
+import org.springblade.core.tool.utils.Func;
|
|
|
import org.springblade.modules.project.mapper.ProjectInfoMapper;
|
|
|
-import org.springblade.modules.project.pojo.dto.ProjectAndPlanDetailDTO;
|
|
|
-import org.springblade.modules.project.pojo.dto.ProjectInfoDTO;
|
|
|
-import org.springblade.modules.project.pojo.dto.ProjectInfoPageDTO;
|
|
|
-import org.springblade.modules.project.pojo.dto.ProjectInvestPlanDTO;
|
|
|
+import org.springblade.modules.project.pojo.dto.*;
|
|
|
import org.springblade.modules.project.pojo.entity.ProjectInfo;
|
|
|
import org.springblade.modules.project.pojo.entity.ProjectInvestPlan;
|
|
|
import org.springblade.modules.project.pojo.entity.ProjectPlanProgress;
|
|
@@ -624,11 +622,107 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
|
|
|
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public void delete(Long id) {
|
|
|
- this.removeById(id);
|
|
|
- investPlanService.remove(new LambdaQueryWrapper<ProjectInvestPlan>()
|
|
|
- .eq(ProjectInvestPlan::getProjectId,id));
|
|
|
- planProgressService.remove(new LambdaQueryWrapper<ProjectPlanProgress>()
|
|
|
- .eq(ProjectPlanProgress::getProjectId,id));
|
|
|
+ public void delete(ProjectInfoPageDTO dto) {
|
|
|
+ String ids = dto.getIds();
|
|
|
+ if (StringUtils.isBlank(ids)){
|
|
|
+ throw new ServiceException("请选择");
|
|
|
+ }
|
|
|
+ List<Long> longs = Func.toLongList(ids);
|
|
|
+ for (Long id : longs) {
|
|
|
+ this.removeById(id);
|
|
|
+ investPlanService.remove(new LambdaQueryWrapper<ProjectInvestPlan>()
|
|
|
+ .eq(ProjectInvestPlan::getProjectId,id));
|
|
|
+ planProgressService.remove(new LambdaQueryWrapper<ProjectPlanProgress>()
|
|
|
+ .eq(ProjectPlanProgress::getProjectId,id));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public DataProjectStatVO dataProjectStat(DataStatDTO dto) {
|
|
|
+ Integer year = dto.getYear();
|
|
|
+ if (year == null){
|
|
|
+ throw new ServiceException("请选择年");
|
|
|
+ }
|
|
|
+ DataProjectStatVO vo = new DataProjectStatVO();
|
|
|
+ vo.setProjectTotal(0);
|
|
|
+ vo.setCurrentMoney(BigDecimal.ZERO);
|
|
|
+ vo.setInvestRatio(BigDecimal.ZERO);
|
|
|
+ vo.setPlanAllMoney(BigDecimal.ZERO);
|
|
|
+ vo.setTotal1(0);
|
|
|
+ vo.setTotal2(0);
|
|
|
+ vo.setTotal3(0);
|
|
|
+ List<DataProjectStatVO2> vo2s = baseMapper.dataProjectStat(dto);
|
|
|
+ if (vo2s.size() == 0){
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+ List<ProjectInvestPlan> planList = investPlanService.list(new LambdaQueryWrapper<ProjectInvestPlan>()
|
|
|
+ .eq(ProjectInvestPlan::getPlanYear, year)
|
|
|
+ .in(ProjectInvestPlan::getProjectId, vo2s.stream().map(l -> l.getId()).collect(Collectors.toList())));
|
|
|
+ if (vo2s.size() != planList.size()){
|
|
|
+ throw new ServiceException("项目数据错误,请联系管理员");
|
|
|
+ }
|
|
|
+ Map<Long, ProjectInvestPlan> planMap = planList.stream().collect(Collectors.toMap(l -> l.getProjectId(), l -> l));
|
|
|
+ int[] quarters = {0,1,1,1,2,2,2,3,3,3,4,4,4};
|
|
|
+ Integer month = dto.getMonth();
|
|
|
+ for (DataProjectStatVO2 vo2 : vo2s) {
|
|
|
+ //获取当年计划
|
|
|
+ ProjectInvestPlan plan = planMap.get(vo2.getId());
|
|
|
+ //判断是否选择过月,选择过月则计划总投资为季度-实际完成投资为当月
|
|
|
+ if (month != null){
|
|
|
+ if (quarters[month] == 1){
|
|
|
+ vo2.setPlanAllMoney(plan.getOneInvest() == null?BigDecimal.ZERO:plan.getOneInvest());
|
|
|
+ vo2.setCurrentMoney(plan.getOneInvestFinish() == null?BigDecimal.ZERO:plan.getOneInvestFinish());
|
|
|
+ }else if (quarters[month] == 2){
|
|
|
+ vo2.setPlanAllMoney(plan.getTwoInvest() == null?BigDecimal.ZERO:plan.getTwoInvest());
|
|
|
+ vo2.setCurrentMoney(plan.getTwoInvestFinish() == null?BigDecimal.ZERO:plan.getTwoInvestFinish());
|
|
|
+ }else if (quarters[month] == 3){
|
|
|
+ vo2.setPlanAllMoney(plan.getThreeInvest() == null?BigDecimal.ZERO:plan.getThreeInvest());
|
|
|
+ vo2.setCurrentMoney(plan.getThreeInvestFinish() == null?BigDecimal.ZERO:plan.getThreeInvestFinish());
|
|
|
+ }else {
|
|
|
+ vo2.setPlanAllMoney(plan.getFourInvest() == null?BigDecimal.ZERO:plan.getFourInvest());
|
|
|
+ vo2.setCurrentMoney(plan.getFourInvestFinish() == null?BigDecimal.ZERO:plan.getFourInvestFinish());
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ //没有选择过月计划总投资为年-实际完成投资为当年,
|
|
|
+ vo2.setPlanAllMoney(plan.getYearlyInvest() == null?BigDecimal.ZERO:plan.getYearlyInvest());
|
|
|
+ vo2.setCurrentMoney(plan.getYearFinishInvest() == null?BigDecimal.ZERO:plan.getYearFinishInvest());
|
|
|
+ }
|
|
|
+ //判断项目进程类型
|
|
|
+ if (plan.getIsOneInvestFinish() == 0 || plan.getIsOneInvestFinish() == 0 || plan.getIsOneInvestFinish() == 0 || plan.getIsOneInvestFinish() == 0 ||
|
|
|
+ plan.getIsOneInvestFinish() == 0 || plan.getIsOneInvestFinish() == 0 || plan.getIsOneInvestFinish() == 0 || plan.getIsOneInvestFinish() == 0 ){
|
|
|
+ vo2.setScheduleType(3);
|
|
|
+ }else if (plan.getOneInvest().equals(plan.getOneInvestFinish()) && plan.getTwoInvest().equals(plan.getTwoInvestFinish()) &&
|
|
|
+ plan.getThreeInvest().equals(plan.getThreeInvestFinish()) && plan.getFourInvest().equals(plan.getFourInvestFinish()) &&
|
|
|
+ plan.getOnePlanRatio().compareTo(new BigDecimal(100)) == 0 &&
|
|
|
+ plan.getTwoPlanRatio().compareTo(new BigDecimal(100)) == 0 &&
|
|
|
+ plan.getThreePlanRatio().compareTo(new BigDecimal(100)) == 0 &&
|
|
|
+ plan.getFourPlanRatio().compareTo(new BigDecimal(100)) == 0){
|
|
|
+ vo2.setScheduleType(1);
|
|
|
+ }else {
|
|
|
+ vo2.setScheduleType(2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //判断是否选择过项目进度类型,选择过,那么重新把集合赋值为筛选后的
|
|
|
+ Integer scheduleType = dto.getProjectScheduleType();
|
|
|
+ if (scheduleType != null){
|
|
|
+ vo2s = vo2s.stream().filter(l->scheduleType.equals(l.getScheduleType())).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ vo.setProjectTotal(vo2s.size());
|
|
|
+ vo.setPlanAllMoney(vo2s.stream().map(l->l.getPlanAllMoney()).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ vo.setCurrentMoney(vo2s.stream().map(l->l.getCurrentMoney()).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ if (vo.getPlanAllMoney().compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ vo.setInvestRatio(vo.getCurrentMoney());
|
|
|
+ }else {
|
|
|
+ vo.setInvestRatio(vo.getCurrentMoney().multiply(new BigDecimal(100)).divide(vo.getPlanAllMoney(),2,RoundingMode.UP));
|
|
|
+ }
|
|
|
+ vo.setTotal1((int) vo2s.stream().filter(l->l.getScheduleType() == 1).count());
|
|
|
+ vo.setTotal2((int) vo2s.stream().filter(l->l.getScheduleType() == 2).count());
|
|
|
+ vo.setTotal3((int) vo2s.stream().filter(l->l.getScheduleType() == 3).count());
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public DataInvestStatVO dataInvestStat(DataStatDTO dto) {
|
|
|
+ return null;
|
|
|
}
|
|
|
}
|