From e794991424c6ca580c275bfda86c3c36e64152f2 Mon Sep 17 00:00:00 2001
From: shenyijian <1178253012@qq.com>
Date: Wed, 09 Oct 2024 17:57:10 +0800
Subject: [PATCH] 湖北水库:项目统计返回修改
---
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java | 229 ++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 177 insertions(+), 52 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..22eb2ba 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,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,10 +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);
+ setAdCode(searchDTO);
Boolean isPage = searchDTO.getIsPage();
if (isPage==null) isPage = true;
if (isPage ){
@@ -61,6 +67,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,38 +82,30 @@
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;
}
@@ -114,21 +113,32 @@
}
/**
- * 获取用户姓名
- * @param userMap
+ * 设置百分号
+ * @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()+"%");
+ }
+
+ /**
+ * 获取用户或者部门姓名
* @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;
}
/**
@@ -288,6 +298,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 +332,23 @@
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);
+ }
+ }
}
/**
@@ -353,21 +380,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 +453,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 +468,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 +482,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 +496,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 +510,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 +542,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 +626,8 @@
@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);
@@ -621,8 +687,17 @@
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->{
+ 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 +772,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