| | |
| | | import cn.gistack.sm.sg.service.SgProjectInfoService; |
| | | import cn.gistack.sm.sjztmd.entity.AttAdBase; |
| | | import cn.gistack.sm.sjztmd.service.IAttAdBaseService; |
| | | import cn.hutool.core.lang.copier.Copier; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | 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.secure.utils.AuthUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.StopWatch; |
| | | |
| | | import javax.security.auth.login.LoginContext; |
| | | import java.math.BigDecimal; |
| | | import java.math.MathContext; |
| | | import java.math.RoundingMode; |
| | | import java.util.*; |
| | | import java.util.function.Function; |
| | |
| | | private SgGxStepMapper sgGxStepMapper; |
| | | |
| | | @Override |
| | | public IPage<SgProjectInfoDO> queryPageList(IPage<SgProjectInfoDO> page, ProjectSearchDTO searchDTO) { |
| | | public Object queryPageList(IPage<SgProjectInfoDO> page, ProjectSearchDTO searchDTO) { |
| | | List<String> sgCodeS = getSgCodeByUser(); |
| | | searchDTO.setSgCodeS(sgCodeS); |
| | | Boolean isPage = searchDTO.getIsPage(); |
| | | if (isPage==null) isPage = true; |
| | | if (isPage ){ |
| | | List<SgProjectInfoDO> sgProjectInfoDOS = baseMapper.queryPageList(page,searchDTO); |
| | | List<SgProjectInfoDO> projectProgress = getProjectProgress(sgProjectInfoMapper.queryStepByProject(searchDTO)); |
| | | if (CollectionUtils.isNotEmpty(projectProgress)){ |
| | |
| | | }); |
| | | } |
| | | return page.setRecords(sgProjectInfoDOS); |
| | | }else { |
| | | List<SgAllDeptOrUser> allDepts = sgProjectInfoMapper.queryDept(); |
| | | Map<Long, String> deptMap = allDepts.stream().collect(Collectors.toMap(SgAllDeptOrUser::getId, SgAllDeptOrUser::getName)); |
| | | List<SgAllDeptOrUser> allUser = sgProjectInfoMapper.queryUser(); |
| | | Map<Long, String> userMap = allUser.stream().collect(Collectors.toMap(SgAllDeptOrUser::getId, SgAllDeptOrUser::getName)); |
| | | List<SgProjectInfoDO> sgProjectInfoDOS = baseMapper.queryPageList(null,searchDTO); |
| | | List<SgProjectInfoDO> projectProgress = getProjectProgress(sgProjectInfoMapper.queryStepByProject(searchDTO)); |
| | | if (CollectionUtils.isNotEmpty(projectProgress)){ |
| | | 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())); |
| | | }); |
| | | } |
| | | sgProjectInfoDOS.forEach(s->{ |
| | | //土建 |
| | | if (StringUtils.isNotBlank(s.getConstructionUnit())){ |
| | | s.setConstructionUnit(deptMap.get(Long.valueOf(s.getConstructionUnit()))); |
| | | } |
| | | s.setConstructionPerson(getUserNames(userMap, s.getConstructionPerson())); |
| | | |
| | | //设备 |
| | | if (StringUtils.isNotBlank(s.getSelfUnit())){ |
| | | s.setSelfUnit(deptMap.get(Long.valueOf(s.getSelfUnit()))); |
| | | } |
| | | s.setSelfPerson(getUserNames(userMap, s.getSelfPerson())); |
| | | |
| | | //设计 |
| | | if (StringUtils.isNotBlank(s.getDesignUnit())){ |
| | | s.setDesignUnit(deptMap.get(Long.valueOf(s.getDesignUnit()))); |
| | | } |
| | | s.setDesignPerson(getUserNames(userMap, s.getDesignPerson())); |
| | | |
| | | //监理 |
| | | if (StringUtils.isNotBlank(s.getControlUnit())){ |
| | | s.setControlUnit(deptMap.get(Long.valueOf(s.getControlUnit()))); |
| | | } |
| | | s.setControlPerson(getUserNames(userMap, s.getControlPerson())); |
| | | |
| | | //检测 |
| | | if (StringUtils.isNotBlank(s.getAcceptanceUnit())){ |
| | | s.setAcceptanceUnit(deptMap.get(Long.valueOf(s.getAcceptanceUnit()))); |
| | | } |
| | | s.setAcceptancePerson(getUserNames(userMap, s.getAcceptancePerson())); |
| | | }); |
| | | return sgProjectInfoDOS; |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 获取用户姓名 |
| | | * @param userMap |
| | | * @return |
| | | */ |
| | | private String getUserNames(Map<Long, String> userMap,String person ) { |
| | | String userNames = ""; |
| | | if (StringUtils.isNotBlank(person)){ |
| | | // 使用Stream API来处理分割和映射 |
| | | userNames = Arrays.stream(person.split(",")) // 将字符串按逗号分割成数组,并转为Stream |
| | | .map(Long::valueOf) // 将每个字符串元素转换为Long |
| | | .map(userMap::get) // 使用userMap将Long映射为对应的用户名 |
| | | .collect(Collectors.joining(",")); // 使用逗号将用户名拼接成一个字符串 |
| | | return userNames; |
| | | } |
| | | return userNames; |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | @Override |
| | | public List<SgProjectInfoDO> listAll(ProjectSearchDTO searchDTO) { |
| | | List<String> sgCodeS = getSgCodeByUser(); |
| | | searchDTO.setSgCodeS(sgCodeS); |
| | | return sgProjectInfoMapper.queryPageList(null,searchDTO); |
| | | } |
| | | |
| | |
| | | public List<SgStatisProVO> getsgStatisticsList(String code) { |
| | | AttAdBase ywxtAdDetail = iAttAdBaseService.getYwxtAdDetail(code); |
| | | List<SgStatisProVO> sgStatisProVOS; |
| | | |
| | | |
| | | //片区 |
| | | if (ywxtAdDetail == null) { |
| | | sgStatisProVOS = sgProjectInfoMapper.getsgStatisticsZero(code); |
| | |
| | | updateProjectProgress(sgStatisProVOS, code, getname, "2"); |
| | | } else if (ywxtAdDetail.getAdGrad().equals("1")) {//默认 |
| | | sgStatisProVOS = sgProjectInfoMapper.getsgStatisticsOne(code); |
| | | sgStatisProVOS = getSgStatisProVOS(sgStatisProVOS); |
| | | getDeviceTypes(sgStatisProVOS); |
| | | updateProjectProgress(sgStatisProVOS, ywxtAdDetail.getPAdCode(), ywxtAdDetail.getPAdName(), "0"); |
| | | } else {//区县 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 标段排序 |
| | | * @param sgStatisProVOS |
| | | * @return |
| | | */ |
| | | private List<SgStatisProVO> getSgStatisProVOS(List<SgStatisProVO> sgStatisProVOS) { |
| | | sgStatisProVOS = sgStatisProVOS.stream() |
| | | .sorted(Comparator.comparing(s -> { |
| | | String scode = s.getCode(); |
| | | 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()); |
| | | return sgStatisProVOS; |
| | | } |
| | | |
| | | /** |
| | | * 统计设备类型开工率 |
| | | * @param sgStatisProVOS |
| | | */ |