shenyijian
2024-10-09 e794991424c6ca580c275bfda86c3c36e64152f2
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java
@@ -14,8 +14,10 @@
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;
@@ -48,11 +50,14 @@
   @Autowired
   private SgGxStepMapper sgGxStepMapper;
   @Autowired
   private SgProgressReportServiceImpl sgProgressReportService;
   @Override
   public Object queryPageList(IPage<SgProjectInfoDO> page, ProjectSearchDTO searchDTO) {
      List<String> sgCodeS = getSgCodeByUser();
      searchDTO.setSgCodeS(sgCodeS);
//      setDeptId(searchDTO);
      setAdCode(searchDTO);
      Boolean isPage = searchDTO.getIsPage();
      if (isPage==null) isPage = true;
      if (isPage ){
@@ -82,34 +87,25 @@
         }
         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;
      }
@@ -129,21 +125,20 @@
   }
   /**
    * 获取用户姓名
    * @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;
   }
   /**
@@ -413,12 +408,16 @@
            SgOperatingRateVO sVo = deviceTypes.get(vo.getProIds());
            if (Objects.nonNull(sVo)){
               vo.setSurfaceNum(sVo.getSurfaceNum());
               vo.setSurfaceStartNum(sVo.getSurfaceStartNum());
               vo.setSurfaceProgress(sVo.getSurfaceProgress());
               vo.setVideoNum(sVo.getVideoNum());
               vo.setVideoStartNum(sVo.getVideoStartNum());
               vo.setVideoProgress(sVo.getVideoProgress());
               vo.setTransNum(sVo.getTransNum());
               vo.setTransStartNum(sVo.getTransStartNum());
               vo.setTransProgress(sVo.getTransProgress());
               vo.setSeepageNum(sVo.getSeepageNum());
               vo.setSeepageStartNum(sVo.getSeepageStartNum());
               vo.setSeepageProgress(sVo.getSeepageProgress());
            }
         }
@@ -470,6 +469,7 @@
                  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));
@@ -483,6 +483,7 @@
                  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));
@@ -496,6 +497,7 @@
                  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));
@@ -509,6 +511,7 @@
                  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));
@@ -684,6 +687,7 @@
   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->{
@@ -768,9 +772,38 @@
               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
@@ -780,4 +813,18 @@
      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);
      });
   }
}