| | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | | import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.jetbrains.annotations.NotNull; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | @Autowired |
| | | private SgGxStepMapper sgGxStepMapper; |
| | | |
| | | @Autowired |
| | | private SgProgressReportServiceImpl sgProgressReportService; |
| | | |
| | | @Override |
| | | public Object queryPageList(IPage<SgProjectInfoDO> page, ProjectSearchDTO searchDTO) { |
| | | List<String> sgCodeS = getSgCodeByUser(); |
| | | searchDTO.setSgCodeS(sgCodeS); |
| | | setAdCode(searchDTO); |
| | | Boolean isPage = searchDTO.getIsPage(); |
| | | if (isPage==null) isPage = true; |
| | | if (isPage ){ |
| | |
| | | Map<Long, String> progressMap = projectProgress.stream().filter(s->s.getProjectProgress()!=null).collect(Collectors.toMap(SgProjectInfoDO::getId, SgProjectInfoDO::getProjectProgress)); |
| | | sgProjectInfoDOS.forEach(s->{ |
| | | s.setProjectProgress(progressMap.get(s.getId())); |
| | | setPercentage(s); |
| | | // setPercentage(s); |
| | | }); |
| | | } |
| | | return page.setRecords(sgProjectInfoDOS); |
| | |
| | | Map<Long, String> progressMap = projectProgress.stream().filter(s->s.getProjectProgress()!=null).collect(Collectors.toMap(SgProjectInfoDO::getId, SgProjectInfoDO::getProjectProgress)); |
| | | sgProjectInfoDOS.forEach(s->{ |
| | | s.setProjectProgress(progressMap.get(s.getId())); |
| | | setPercentage(s); |
| | | // setPercentage(s); |
| | | }); |
| | | } |
| | | sgProjectInfoDOS.forEach(s->{ |
| | | //土建 |
| | | if (StringUtils.isNotBlank(s.getConstructionUnit())){ |
| | | s.setConstructionUnit(deptMap.get(Long.valueOf(s.getConstructionUnit()))); |
| | | } |
| | | s.setConstructionPerson(getUserNames(userMap, s.getConstructionPerson())); |
| | | String constructionUnit = s.getConstructionUnit(); |
| | | s.setConstructionUnit(getUserOrDeptNames(deptMap,s.getConstructionUnit())); |
| | | s.setConstructionPerson(getUserOrDeptNames(userMap, s.getConstructionPerson())); |
| | | |
| | | //设备 |
| | | if (StringUtils.isNotBlank(s.getSelfUnit())){ |
| | | s.setSelfUnit(deptMap.get(Long.valueOf(s.getSelfUnit()))); |
| | | } |
| | | s.setSelfPerson(getUserNames(userMap, s.getSelfPerson())); |
| | | s.setSelfUnit(getUserOrDeptNames(deptMap,s.getSelfUnit())); |
| | | s.setSelfPerson(getUserOrDeptNames(userMap, s.getSelfPerson())); |
| | | |
| | | //设计 |
| | | if (StringUtils.isNotBlank(s.getDesignUnit())){ |
| | | s.setDesignUnit(deptMap.get(Long.valueOf(s.getDesignUnit()))); |
| | | } |
| | | s.setDesignPerson(getUserNames(userMap, s.getDesignPerson())); |
| | | s.setDesignUnit(getUserOrDeptNames(deptMap, s.getDesignUnit())); |
| | | s.setDesignPerson(getUserOrDeptNames(userMap, s.getDesignPerson())); |
| | | |
| | | //监理 |
| | | if (StringUtils.isNotBlank(s.getControlUnit())){ |
| | | s.setControlUnit(deptMap.get(Long.valueOf(s.getControlUnit()))); |
| | | } |
| | | s.setControlPerson(getUserNames(userMap, s.getControlPerson())); |
| | | s.setControlUnit(getUserOrDeptNames(deptMap, s.getControlUnit())); |
| | | s.setControlPerson(getUserOrDeptNames(userMap, s.getControlPerson())); |
| | | |
| | | //检测 |
| | | if (StringUtils.isNotBlank(s.getAcceptanceUnit())){ |
| | | s.setAcceptanceUnit(deptMap.get(Long.valueOf(s.getAcceptanceUnit()))); |
| | | } |
| | | s.setAcceptancePerson(getUserNames(userMap, s.getAcceptancePerson())); |
| | | s.setAcceptanceUnit(getUserOrDeptNames(deptMap, s.getAcceptanceUnit())); |
| | | s.setAcceptancePerson(getUserOrDeptNames(userMap, s.getAcceptancePerson())); |
| | | }); |
| | | return sgProjectInfoDOS; |
| | | } |
| | |
| | | * @param s |
| | | */ |
| | | private void setPercentage(SgProjectInfoDO s) { |
| | | s.setSurfaceProgress(s.getSurfaceProgress()==null?null:s.getSurfaceProgress()+"%"); |
| | | s.setVideoProgress(s.getVideoProgress()==null?null:s.getVideoProgress()+"%"); |
| | | s.setTransProgress(s.getTransProgress()==null?null:s.getTransProgress()+"%"); |
| | | s.setSeepageProgress(s.getSeepageProgress()==null?null:s.getSeepageProgress()+"%"); |
| | | s.setSurfaceProgress(StringUtils.isNotBlank(s.getSurfaceProgress()) ?null:s.getSurfaceProgress()+"%"); |
| | | s.setVideoProgress(StringUtils.isNotBlank(s.getVideoProgress())?null:s.getVideoProgress()+"%"); |
| | | s.setTransProgress(StringUtils.isNotBlank(s.getTransProgress())?null:s.getTransProgress()+"%"); |
| | | s.setSeepageProgress(StringUtils.isNotBlank(s.getSeepageProgress())?null:s.getSeepageProgress()+"%"); |
| | | s.setProjectAddress(StringUtils.isNotBlank(s.getProjectProgress())?null:s.getProjectProgress()+"%"); |
| | | } |
| | | |
| | | /** |
| | | * 获取用户姓名 |
| | | * @param userMap |
| | | * 获取用户或者部门姓名 |
| | | * @return |
| | | */ |
| | | private String getUserNames(Map<Long, String> userMap,String person ) { |
| | | String userNames = ""; |
| | | if (StringUtils.isNotBlank(person)){ |
| | | private String getUserOrDeptNames(Map<Long, String> map, String param ) { |
| | | String result = ""; |
| | | if (StringUtils.isNotBlank(param)){ |
| | | // 使用Stream API来处理分割和映射 |
| | | userNames = Arrays.stream(person.split(",")) // 将字符串按逗号分割成数组,并转为Stream |
| | | result = Arrays.stream(param.split(",")) // 将字符串按逗号分割成数组,并转为Stream |
| | | .map(Long::valueOf) // 将每个字符串元素转换为Long |
| | | .map(userMap::get) // 使用userMap将Long映射为对应的用户名 |
| | | .map(map::get) // 使用userMap将Long映射为对应的用户名 |
| | | .collect(Collectors.joining(",")); // 使用逗号将用户名拼接成一个字符串 |
| | | return userNames; |
| | | return result; |
| | | } |
| | | return userNames; |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public IPage<SgProjectInfoVO> progressPage(IPage<SgProjectInfoVO> page, ProjectSearchDTO searchDTO) { |
| | | // setDeptId(searchDTO); |
| | | List<SgProjectInfoVO> list = new ArrayList<>(); |
| | | if(StringUtils.isNotBlank(searchDTO.getAdCode())){ |
| | | list = sgProjectInfoMapper.progressList1(page, searchDTO); |
| | |
| | | public List<SgProjectInfoDO> listAll(ProjectSearchDTO searchDTO) { |
| | | List<String> sgCodeS = getSgCodeByUser(); |
| | | searchDTO.setSgCodeS(sgCodeS); |
| | | return sgProjectInfoMapper.queryPageList(null,searchDTO); |
| | | setDeptId(searchDTO); |
| | | List<SgProjectInfoDO> list = sgProjectInfoMapper.queryPageList(null, searchDTO); |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * setDeptId |
| | | * @param searchDTO |
| | | */ |
| | | private void setDeptId(ProjectSearchDTO searchDTO) { |
| | | String deptId = AuthUtil.getDeptId(); |
| | | boolean b = Objects.nonNull(searchDTO.getIsUnit()) && searchDTO.getIsUnit() == 1; |
| | | if (!deptId.equals("420000000000")){ |
| | | if (!b){ |
| | | searchDTO.setDeptId(deptId); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | SgOperatingRateVO sVo = deviceTypes.get(vo.getProIds()); |
| | | if (Objects.nonNull(sVo)){ |
| | | vo.setSurfaceNum(sVo.getSurfaceNum()); |
| | | vo.setSurfaceProgress(sVo.getSurfaceProgress()==null?null:sVo.getSurfaceProgress()+"%"); |
| | | vo.setSurfaceStartNum(sVo.getSurfaceStartNum()); |
| | | vo.setSurfaceProgress(sVo.getSurfaceProgress()); |
| | | vo.setVideoNum(sVo.getVideoNum()); |
| | | vo.setVideoProgress(sVo.getVideoProgress()==null?null:sVo.getVideoProgress()+"%"); |
| | | vo.setVideoStartNum(sVo.getVideoStartNum()); |
| | | vo.setVideoProgress(sVo.getVideoProgress()); |
| | | vo.setTransNum(sVo.getTransNum()); |
| | | vo.setTransProgress(sVo.getTransProgress()==null?null:sVo.getTransProgress()+"%"); |
| | | vo.setTransStartNum(sVo.getTransStartNum()); |
| | | vo.setTransProgress(sVo.getTransProgress()); |
| | | vo.setSeepageNum(sVo.getSeepageNum()); |
| | | vo.setSeepageProgress(sVo.getSeepageProgress()==null?null:sVo.getSeepageProgress()+"%"); |
| | | vo.setSeepageStartNum(sVo.getSeepageStartNum()); |
| | | vo.setSeepageProgress(sVo.getSeepageProgress()); |
| | | } |
| | | } |
| | | } |
| | |
| | | Integer deviceCount = sg108.getDeviceCount(); |
| | | Integer deviceStart = sg108.getDeviceStart(); |
| | | sgOperatingRateVO.setSurfaceNum(deviceCount); |
| | | sgOperatingRateVO.setSurfaceStartNum(deviceStart); |
| | | if (deviceCount != 0){ |
| | | BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP); |
| | | sgOperatingRateVO.setSeepageProgress(getBigDecimalPercent(divide)); |
| | | }else { |
| | | sgOperatingRateVO.setSeepageProgress("0"); |
| | | sgOperatingRateVO.setSeepageProgress("0%"); |
| | | } |
| | | } |
| | | //视频 |
| | |
| | | Integer deviceCount = sg104.getDeviceCount(); |
| | | Integer deviceStart = sg104.getDeviceStart(); |
| | | sgOperatingRateVO.setVideoNum(deviceCount); |
| | | sgOperatingRateVO.setVideoStartNum(deviceStart); |
| | | if (deviceCount != 0){ |
| | | BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP); |
| | | sgOperatingRateVO.setVideoProgress(getBigDecimalPercent(divide)); |
| | | }else { |
| | | sgOperatingRateVO.setVideoProgress("0"); |
| | | sgOperatingRateVO.setVideoProgress("0%"); |
| | | } |
| | | } |
| | | //渗压 |
| | |
| | | Integer deviceCount = sg101.getDeviceCount(); |
| | | Integer deviceStart = sg101.getDeviceStart(); |
| | | sgOperatingRateVO.setTransNum(deviceCount); |
| | | sgOperatingRateVO.setTransStartNum(deviceStart); |
| | | if (deviceCount != 0){ |
| | | BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP); |
| | | sgOperatingRateVO.setTransProgress(getBigDecimalPercent(divide)); |
| | | }else { |
| | | sgOperatingRateVO.setTransProgress("0"); |
| | | sgOperatingRateVO.setTransProgress("0%"); |
| | | } |
| | | } |
| | | //渗流 |
| | |
| | | Integer deviceCount = sg102.getDeviceCount(); |
| | | Integer deviceStart = sg102.getDeviceStart(); |
| | | sgOperatingRateVO.setSeepageNum(deviceCount); |
| | | sgOperatingRateVO.setSeepageStartNum(deviceStart); |
| | | if (deviceCount != 0){ |
| | | BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP); |
| | | sgOperatingRateVO.setSeepageProgress(getBigDecimalPercent(divide)); |
| | | }else { |
| | | sgOperatingRateVO.setSeepageProgress("0"); |
| | | sgOperatingRateVO.setSeepageProgress("0%"); |
| | | } |
| | | } |
| | | } |
| | |
| | | for (String id : ids) { |
| | | projectSearchDTO.setProjectId(id); |
| | | List<SgProjectInfoVO> list = sgProjectInfoMapper.queryStepByProject(projectSearchDTO); |
| | | getProjectProgress(list).forEach(ss -> bigDecimals.add(ss.getProjectProgressNum())); |
| | | getProjectProgress(list).forEach(ss->{ |
| | | if (Objects.nonNull(ss.getProjectProgressNum())){ |
| | | bigDecimals.add(ss.getProjectProgressNum()); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | BigDecimal reduce = bigDecimals.stream().reduce(BigDecimal.ZERO, BigDecimal::add); |
| | |
| | | BigDecimal percentage = bigDecimal.multiply(new BigDecimal("100")); |
| | | // 如果不需要保留小数位,可以设置一个scale为0 |
| | | BigDecimal percentageRounded = percentage.setScale(0, RoundingMode.HALF_UP); |
| | | return percentageRounded.toString(); |
| | | return percentageRounded+"%"; |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> projectCount(ProjectSearchDTO searchDTO) { |
| | | List<String> sgCodeS = getSgCodeByUser(); |
| | | searchDTO.setSgCodeS(sgCodeS); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | List<SgProjectInfoVO> progressList = progressList(searchDTO); |
| | | BigDecimal reduce = progressList.stream().filter(s->s.getProjectProgressNum()!=null).map(SgProjectInfoDO::getProjectProgressNum).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | |
| | | public List<SgProjectTreeVO> projectTree(ProjectSearchDTO dto) { |
| | | List<String> sgCodeS = getSgCodeByUser(); |
| | | dto.setSgCodeS(sgCodeS); |
| | | setAdCode(dto); |
| | | List<SgProjectTreeVO> list = sgProjectInfoMapper.projectTree(dto); |
| | | if (CollectionUtils.isNotEmpty(list)){ |
| | | list.forEach(x->{ |
| | |
| | | provinceNode.setChildList(provinceChildren); |
| | | tree.add(provinceNode); |
| | | } |
| | | return tree; |
| | | List<SgProjectTreeVO> childList = tree.get(0).getChildList(); |
| | | List<SgProjectTreeVO> collect = childList.stream() |
| | | .sorted(Comparator.comparing(s -> { |
| | | String scode = s.getRegionName(); |
| | | if (scode.equals("第一标段")) { |
| | | return 1; |
| | | } else if (scode.equals("第二标段")) { |
| | | return 2; |
| | | } else if (scode.equals("第三标段")) { |
| | | return 3; |
| | | } else if (scode.equals("第四标段")) { |
| | | return 4; |
| | | } else if (scode.equals("第五标段")) { |
| | | return 5; |
| | | } else { |
| | | return Integer.MAX_VALUE; |
| | | } |
| | | })) |
| | | .collect(Collectors.toList()); |
| | | tree.get(0).setChildList(collect); |
| | | return tree; |
| | | |
| | | } |
| | | return new ArrayList<>(); |
| | | } |
| | | |
| | | private void setAdCode(ProjectSearchDTO dto) { |
| | | String deptId = AuthUtil.getDeptId(); |
| | | Long roleId = sgProgressReportService.getRoleId(); |
| | | if(roleId.equals(1811657352658042882L)){ |
| | | dto.setAdCode(deptId); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public IPage<ResVO> resList(IPage<ResVO> page, ProjectSearchDTO dto) { |
| | | List<String> sgCodeByUser = getSgCodeByUser(); |
| | | dto.setSgCodeS(sgCodeByUser); |
| | | return page.setRecords(baseMapper.resList(page,dto)); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void delete(String ids) { |
| | | List<String> list = Arrays.asList(ids.split(",")); |
| | | list.forEach(id->{ |
| | | List<SgProgressReportDO> reportDOS = new LambdaQueryChainWrapper<>(sgProgressReportMapper).eq(SgProgressReportDO::getProframId, id).list(); |
| | | if (CollectionUtils.isNotEmpty(reportDOS)){ |
| | | SgProjectInfoDO sgProjectInfoDO = sgProjectInfoMapper.selectById(id); |
| | | throw new ServiceException(sgProjectInfoDO.getProjectName() + "存在施工审批,无法删除!"); |
| | | } |
| | | sgProjectInfoMapper.deleteById(id); |
| | | }); |
| | | } |
| | | |
| | | } |