From b672cafe6a447c9b19691b583df9542ad84bce2c Mon Sep 17 00:00:00 2001
From: ke <893754509@qq.com>
Date: Tue, 26 Nov 2024 16:02:40 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtdev' into jtdev

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java |  301 ++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 241 insertions(+), 60 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java
index 868e1a8..4e27a9d 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java
@@ -14,8 +14,11 @@
 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.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -48,10 +51,17 @@
 	@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);
+		BladeUser user = AuthUtil.getUser();
+		Long roleId = getRoleId();
+		//setUnit2(searchDTO,user,roleId);
 		Boolean isPage = searchDTO.getIsPage();
 		if (isPage==null) isPage = true;
 		if (isPage ){
@@ -61,6 +71,7 @@
 				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);
 				});
 			}
 			return page.setRecords(sgProjectInfoDOS);
@@ -75,60 +86,98 @@
 				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);
 				});
 			}
 			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;
 		}
 
 	}
+	private  void setUnit2(ProjectSearchDTO searchDTO, BladeUser user, Long roleId) {
+		List<String> longList = Arrays.stream(user.getDeptId().split(","))
+			.collect(Collectors.toList());
+		//判断是不是省厅建办  否的话就不设置部门
+		if (!roleId.equals(1800820667082948610L)){
+			//判断是不是县级建办  否的话就是监理单位下人员进行
+			if(roleId.equals(1800820855352672257L)){
+				searchDTO.setUserUnit(longList);
+			}
+
+			if(roleId.equals(1811657352658042882L)) {
+				searchDTO.setCountryUnit(longList);
+			}
+
+			if(roleId==1800818489547112450L){
+				searchDTO.setSelfUnit(longList);
+			}
+		}
+	}
+
+	public Long getRoleId(){
+		BladeUser user = AuthUtil.getUser();
+		List<String> userRole = Arrays.asList(user.getRoleId().split(","));
+		List<Long> roleList = sgProgressReportMapper.getSgEngineerRole();
+		Long roleId = null;
+		for (String s : userRole) {
+			long l = Long.parseLong(s);
+			if (roleList.contains(l)){
+				roleId = l;
+			}
+		}
+		if (Objects.isNull(roleId)){
+			roleId = Long.parseLong(userRole.get(0));
+		}
+		return roleId;
+	}
+	/**
+	 * 设置百分号
+	 * @param s
+	 */
+	private void setPercentage(SgProjectInfoDO s) {
+		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;
 	}
 
 	/**
@@ -152,7 +201,7 @@
 	public List<SgProjectInfoDO> queryStepByProject(ProjectSearchDTO searchDTO) {
 		List<PreAcceVO>  palist = new ArrayList<>();
 		List<SgProjectInfoVO> list = sgProjectInfoMapper.queryStepByProject( searchDTO);
-		palist.add(handleQuery(25, list.get(0).getId()));
+		palist.add(handleQuery(20, list.get(0).getId()));
 		palist.add(handleQuery(26, list.get(0).getId()));
 		List<SgProjectInfoDO> projectProgress = getProjectProgress(list);
 		projectProgress.forEach(s->{
@@ -170,8 +219,11 @@
 	 */
 	@NotNull
 	public List<SgProjectInfoDO> getProjectProgress(List<SgProjectInfoVO> list) {
+		List<SgProjectInfoVO> sortedList = list.stream()
+			.sorted(Comparator.comparing(SgProjectInfoVO::getSort))
+			.collect(Collectors.toList());
 		//项目分组
-		Map<Long, List<SgProjectInfoVO>> projectMap = list.stream().collect(Collectors.groupingBy(SgProjectInfoVO::getId));
+		Map<Long, List<SgProjectInfoVO>> projectMap = sortedList.stream().collect(Collectors.groupingBy(SgProjectInfoVO::getId));
 		List<SgProjectInfoDO> result = new ArrayList<>();
 		for (Map.Entry<Long, List<SgProjectInfoVO>> entry : projectMap.entrySet()) {
 			List<SgDeviceDO> allDevice = new ArrayList<>();
@@ -190,7 +242,7 @@
 				if (CollectionUtils.isEmpty(ptyValue)){
 					continue;
 				}
-				PtypeVO ptypeVO = PtypeVO.builder().pTypeName(ptyValue.get(0).getPtypeName()).build();
+				PtypeVO ptypeVO = PtypeVO.builder().pTypeName(ptyValue.get(0).getPtypeName()).sort(ptyValue.get(0).getSort()).build();
 				List<SgTypeVO> sgGxDOS = new ArrayList<>();
 				//类型分组
 				Map<String, List<SgProjectInfoVO>> GxMap = ptyValue.stream().filter(s->s.getDeviceType()!=null).collect(Collectors.groupingBy(SgProjectInfoVO::getDeviceType));
@@ -200,16 +252,18 @@
 					if (CollectionUtils.isEmpty(gxList)){
 						continue;
 					}
-					SgTypeVO typeVO = SgTypeVO.builder().typeName(gxList.get(0).getTypeName()).build();
+					gxList = gxList.stream().sorted(Comparator.comparing(SgProjectInfoVO::getPrice)).collect(Collectors.toList());
+					SgTypeVO typeVO = SgTypeVO.builder().typeName(gxList.get(0).getTypeName()).sort(gxList.get(0).getDSort()).build();
 					List<SgDeviceDO> deviceDOS = new ArrayList<>();
 					//设备分组
-					Map<Long, List<SgProjectInfoVO>> dMap = gxList.stream().collect(Collectors.groupingBy(SgProjectInfoVO::getDId));
+					Map<Long, List<SgProjectInfoVO>> dMap = gxList.stream().filter(s->s.getDId()!=null).collect(Collectors.groupingBy(SgProjectInfoVO::getDId));
 					for (Map.Entry<Long, List<SgProjectInfoVO>> device : dMap.entrySet()) {
 						Long dId = device.getKey();
 						List<SgProjectInfoVO> deList = device.getValue();
 						SgDeviceDO sgDeviceDO = new SgDeviceDO();
 						sgDeviceDO.setId(dId);
 						sgDeviceDO.setDeviceName(deList.get(0).getDeviceName());
+						sgDeviceDO.setPrice(deList.get(0).getPrice());
 						List<SgGxStepDO> stepDOS = deList.stream().filter(s -> s.getReportStatus() == null || (s.getReportStatus() != 4 && !(s.getReportStatus() == 3 && s.getResubmit() != 0))).map(s -> SgGxStepDO.builder().id(s.getStepId()).gxStepNum(s.getGxStepNum()).gxStepName(s.getGxStepName()).deviceId(s.getDId()).approvalStatus(s.getReportStatus()).build()).collect(Collectors.toList());
 						List<SgGxStepDO> stepOver = stepDOS.stream().filter(s -> s.getApprovalStatus() != null && s.getApprovalStatus() == 2).collect(Collectors.toList());
 						BigDecimal stepSize = BigDecimal.valueOf(stepDOS.size());
@@ -229,7 +283,8 @@
 					double sum = deviceDOS.stream().mapToDouble(s -> Double.parseDouble(s.getProgress())).sum();
 					BigDecimal deviceOver = BigDecimal.valueOf(sum);
 					BigDecimal divideDevice = deviceOver.divide(deviceSize, 2, RoundingMode.HALF_UP);
-					typeVO.setDeviceDOS(deviceDOS);
+					List<SgDeviceDO> sortDeviceDOs = deviceDOS.stream().filter(s->s.getPrice()!=null).sorted(Comparator.comparing(SgDeviceDO::getPrice)).collect(Collectors.toList());
+					typeVO.setDeviceDOS(sortDeviceDOs);
 					typeVO.setTypeProgress(getBigDecimalPercent(divideDevice));
 					typeVO.setProgress(divideDevice.toString());
 					sgGxDOS.add(typeVO);
@@ -239,6 +294,7 @@
 				BigDecimal sgGxOver = BigDecimal.valueOf(sum);
 				BigDecimal divideSgGx = sgGxOver.divide(sgGxSize, 2, RoundingMode.HALF_UP);
 				ptypeVO.setPTypeProgress(getBigDecimalPercent(divideSgGx));
+				sgGxDOS = sgGxDOS.stream().sorted(Comparator.comparing(SgTypeVO::getSort)).collect(Collectors.toList());
 				ptypeVO.setSgTypeVOS(sgGxDOS);
 				pTypes.add(ptypeVO);
 			}
@@ -247,7 +303,8 @@
 				double sum = allDevice.stream().mapToDouble(s -> Double.parseDouble(s.getProgress())).sum();
 				BigDecimal allDeviceOver = BigDecimal.valueOf(sum);
 				BigDecimal allDivideDevice = allDeviceOver.divide(allDeviceSize, 2, RoundingMode.HALF_UP);
-				sgProjectInfoDO.setPtypeVOS(pTypes);
+				List<PtypeVO> sortPtpes = pTypes.stream().sorted(Comparator.comparing(PtypeVO::getSort)).collect(Collectors.toList());
+				sgProjectInfoDO.setPtypeVOS(sortPtpes);
 				sgProjectInfoDO.setProjectProgress( getBigDecimalPercent(allDivideDevice));
 				sgProjectInfoDO.setProjectProgressNum(allDivideDevice);
 			}
@@ -288,6 +345,7 @@
 	 */
 	@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);
@@ -321,7 +379,26 @@
 	public List<SgProjectInfoDO> listAll(ProjectSearchDTO searchDTO) {
 		List<String> sgCodeS = getSgCodeByUser();
 		searchDTO.setSgCodeS(sgCodeS);
-		return sgProjectInfoMapper.queryPageList(null,searchDTO);
+		setDeptId(searchDTO);
+		BladeUser user = AuthUtil.getUser();
+		Long roleId = getRoleId();
+		setUnit2(searchDTO,user,roleId);
+		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);
+			}
+		}
 	}
 
 	/**
@@ -353,21 +430,48 @@
 		//片区
 		if (ywxtAdDetail == null) {
 			sgStatisProVOS = sgProjectInfoMapper.getsgStatisticsZero(code);
-			getDeviceTypes(sgStatisProVOS);
+			setDeviceTypes(sgStatisProVOS);
 //			String getname = sgProjectInfoMapper.getname(code);
 			String getname = code;
 			updateProjectProgress(sgStatisProVOS, code, getname, "2");
 		} else if (ywxtAdDetail.getAdGrad().equals("1")) {//默认
 			sgStatisProVOS = sgProjectInfoMapper.getsgStatisticsOne(code);
 			sgStatisProVOS = getSgStatisProVOS(sgStatisProVOS);
-			getDeviceTypes(sgStatisProVOS);
+			setDeviceTypes(sgStatisProVOS);
 			updateProjectProgress(sgStatisProVOS, ywxtAdDetail.getPAdCode(), ywxtAdDetail.getPAdName(), "0");
 		} else {//区县
 			sgStatisProVOS = sgProjectInfoMapper.getsgStatisticsList(code);
-			getDeviceTypes(sgStatisProVOS);
+			setDeviceTypes(sgStatisProVOS);
 			updateProjectProgress(sgStatisProVOS, ywxtAdDetail.getAdCode(), ywxtAdDetail.getAdName(), "3");
 		}
 		return sgStatisProVOS;
+	}
+
+	/**
+	 * 统计施工进度
+	 * @param sgStatisProVOS
+	 */
+	private void setDeviceTypes(List<SgStatisProVO> sgStatisProVOS) {
+		if (CollectionUtils.isNotEmpty(sgStatisProVOS)){
+			Map<String, SgOperatingRateVO> deviceTypes = getDeviceTypes(sgStatisProVOS.stream().map(SgStatisProVO::getProIds).collect(Collectors.toList()));
+			for (SgStatisProVO vo : sgStatisProVOS) {
+				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());
+				}
+			}
+		}
 	}
 
 	/**
@@ -399,12 +503,12 @@
 
 	/**
 	 * 统计设备类型开工率
-	 * @param sgStatisProVOS
 	 */
-	private void getDeviceTypes(List<SgStatisProVO> sgStatisProVOS) {
-		if (CollectionUtils.isNotEmpty(sgStatisProVOS)){
-			for (SgStatisProVO vo : sgStatisProVOS) {
-				String proIds = vo.getProIds();
+	public Map<String,SgOperatingRateVO> getDeviceTypes(List<String> projectIds) {
+		Map<String,SgOperatingRateVO> result = new HashMap<>();
+		if (CollectionUtils.isNotEmpty(projectIds)){
+			for (String proIds : projectIds) {
+				SgOperatingRateVO sgOperatingRateVO = new SgOperatingRateVO();
 				if (StringUtils.isNotBlank(proIds)){
 				List<SgStatisDeviceVO> deviceVOS =	sgProjectInfoMapper.getDeviceTypes("("+proIds+")");
 				if(CollectionUtils.isNotEmpty(deviceVOS)){
@@ -414,12 +518,13 @@
 					if (Objects.nonNull(sg108)){
 						Integer deviceCount = sg108.getDeviceCount();
 						Integer deviceStart = sg108.getDeviceStart();
-						vo.setSurfaceNum(deviceCount);
+						sgOperatingRateVO.setSurfaceNum(deviceCount);
+						sgOperatingRateVO.setSurfaceStartNum(deviceStart);
 						if (deviceCount != 0){
 							BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP);
-							vo.setSeepageProgress(getBigDecimalPercent(divide));
+							sgOperatingRateVO.setSeepageProgress(getBigDecimalPercent(divide));
 						}else {
-							vo.setSeepageProgress("0%");
+							sgOperatingRateVO.setSeepageProgress("0%");
 						}
 					}
 					//视频
@@ -427,12 +532,13 @@
 					if (Objects.nonNull(sg104)){
 						Integer deviceCount = sg104.getDeviceCount();
 						Integer deviceStart = sg104.getDeviceStart();
-						vo.setVideoNum(deviceCount);
+						sgOperatingRateVO.setVideoNum(deviceCount);
+						sgOperatingRateVO.setVideoStartNum(deviceStart);
 						if (deviceCount != 0){
 							BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP);
-							vo.setVideoProgress(getBigDecimalPercent(divide));
+							sgOperatingRateVO.setVideoProgress(getBigDecimalPercent(divide));
 						}else {
-							vo.setVideoProgress("0%");
+							sgOperatingRateVO.setVideoProgress("0%");
 						}
 					}
 					//渗压
@@ -440,12 +546,13 @@
 					if (Objects.nonNull(sg101)){
 						Integer deviceCount = sg101.getDeviceCount();
 						Integer deviceStart = sg101.getDeviceStart();
-						vo.setTransNum(deviceCount);
+						sgOperatingRateVO.setTransNum(deviceCount);
+						sgOperatingRateVO.setTransStartNum(deviceStart);
 						if (deviceCount != 0){
 							BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP);
-							vo.setTransProgress(getBigDecimalPercent(divide));
+							sgOperatingRateVO.setTransProgress(getBigDecimalPercent(divide));
 						}else {
-							vo.setTransProgress("0%");
+							sgOperatingRateVO.setTransProgress("0%");
 						}
 					}
 					//渗流
@@ -453,18 +560,21 @@
 					if (Objects.nonNull(sg102)){
 						Integer deviceCount = sg102.getDeviceCount();
 						Integer deviceStart = sg102.getDeviceStart();
-						vo.setSeepageNum(deviceCount);
+						sgOperatingRateVO.setSeepageNum(deviceCount);
+						sgOperatingRateVO.setSeepageStartNum(deviceStart);
 						if (deviceCount != 0){
 							BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP);
-							vo.setSeepageProgress(getBigDecimalPercent(divide));
+							sgOperatingRateVO.setSeepageProgress(getBigDecimalPercent(divide));
 						}else {
-							vo.setSeepageProgress("0%");
+							sgOperatingRateVO.setSeepageProgress("0%");
 						}
 					}
 					}
+					result.put(proIds,sgOperatingRateVO);
 				}
 			}
 		}
+		return result;
 	}
 
 	private void updateProjectProgress(List<SgStatisProVO> sgStatisProVOS, String pcode, String pname, String adGrad) {
@@ -482,7 +592,11 @@
 				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);
@@ -562,6 +676,11 @@
 
 	@Override
 	public Map<String, Object> projectCount(ProjectSearchDTO searchDTO) {
+		List<String> sgCodeS = getSgCodeByUser();
+		searchDTO.setSgCodeS(sgCodeS);
+		BladeUser user = AuthUtil.getUser();
+		Long roleId = getRoleId();
+		//setUnit2(searchDTO,user,roleId);
 		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);
@@ -608,7 +727,7 @@
 			SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(stepIdForNull);
 			preAcceVO.setName(sgGxStepDO.getGxStepName());
 			preAcceVO.setProgramId(programId);
-			preAcceVO.setGxDeviceId(stepIdForNull != 25? (long)998:(long)999);
+			preAcceVO.setGxDeviceId(stepIdForNull != 20? (long)998:(long)999);
 			preAcceVO.setGxStepId(sgGxStepDO.getId());
 
 		}
@@ -621,8 +740,20 @@
 	public List<SgProjectTreeVO> projectTree(ProjectSearchDTO dto) {
 		List<String> sgCodeS = getSgCodeByUser();
 		dto.setSgCodeS(sgCodeS);
+		setAdCode(dto);
+		BladeUser user = AuthUtil.getUser();
+		Long roleId = getRoleId();
+		//setUnit2(dto,user,roleId);
 		List<SgProjectTreeVO> list = 	sgProjectInfoMapper.projectTree(dto);
 		if (CollectionUtils.isNotEmpty(list)){
+			list.forEach(x->{
+				if (StringUtils.isBlank(x.getCountyNm())){
+					x.setCountyNm(x.getCityNm());
+				}
+				if (StringUtils.isBlank(x.getTownNm())){
+					x.setTownNm(x.getCountyNm());
+				}
+			});
 			// 按省、片区、市、县、乡镇分组
 			Map<String, Map<String, Map<String, Map<String, Map<String, List<SgProjectTreeVO>>>>>> groupedProjects = list.stream()
 				.collect(
@@ -697,9 +828,59 @@
 					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);
+		});
+	}
+
 }

--
Gitblit v1.9.3