From b1d76ff75fef33e8b2307f3a8c2f4ec5e638f0cd Mon Sep 17 00:00:00 2001
From: shenyijian <1178253012@qq.com>
Date: Sat, 02 Nov 2024 14:45:08 +0800
Subject: [PATCH] 湖北水库:项目单位过滤
---
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java | 77 ++++++++++++++++++++++++++++++++++----
1 files changed, 69 insertions(+), 8 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 4644186..396bb7c 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
@@ -18,6 +18,7 @@
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;
@@ -58,6 +59,9 @@
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 ){
@@ -111,7 +115,42 @@
}
}
+ 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(1710904523971129345L)){
+ 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
@@ -162,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->{
@@ -180,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<>();
@@ -200,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));
@@ -210,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());
@@ -239,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);
@@ -249,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);
}
@@ -257,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);
}
@@ -333,6 +380,9 @@
List<String> sgCodeS = getSgCodeByUser();
searchDTO.setSgCodeS(sgCodeS);
setDeptId(searchDTO);
+ BladeUser user = AuthUtil.getUser();
+ Long roleId = getRoleId();
+ setUnit2(searchDTO,user,roleId);
List<SgProjectInfoDO> list = sgProjectInfoMapper.queryPageList(null, searchDTO);
return list;
}
@@ -408,12 +458,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());
}
}
@@ -465,6 +519,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));
@@ -478,6 +533,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));
@@ -491,6 +547,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));
@@ -504,6 +561,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));
@@ -620,6 +678,9 @@
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);
@@ -666,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());
}
--
Gitblit v1.9.3