From 402ff1aeac9bb33e6d8ff04913cbf1b0364df2a6 Mon Sep 17 00:00:00 2001
From: shenyijian <1178253012@qq.com>
Date: Tue, 18 Jun 2024 13:55:03 +0800
Subject: [PATCH] 湖北水库:施工:APP项目统计、项目进度列表
---
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProgressReportVO.java | 7 ++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProgressReportController.java | 2
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.java | 3 +
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java | 12 ++-
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProjectInfoVO.java | 2
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java | 46 +++++++++++++++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.java | 2
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/SgProjectInfoService.java | 5 +
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStepReportVO.java | 11 +++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml | 9 +++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProjectInfoController.java | 20 ++++++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml | 14 ++++
12 files changed, 128 insertions(+), 5 deletions(-)
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProgressReportVO.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProgressReportVO.java
index 49b5edb..8fc6ac6 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProgressReportVO.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProgressReportVO.java
@@ -8,5 +8,12 @@
@Data
public class SgProgressReportVO extends SgProgressReportDO {
+ /**
+ * 各级审批流程
+ */
private List<SgReportUserDO> sgReportUserDOS;
+ /**
+ * 同设备流程审批情况
+ */
+ private List<SgStepReportVO> sgStepReportVOS;
}
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProjectInfoVO.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProjectInfoVO.java
index 26ec740..f7b08c0 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProjectInfoVO.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProjectInfoVO.java
@@ -21,4 +21,6 @@
private String gxStepNum;
private String deviceType;
private String typeName;
+ private Integer deviceStatus;
+ private String progressName;
}
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStepReportVO.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStepReportVO.java
new file mode 100644
index 0000000..c51365c
--- /dev/null
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStepReportVO.java
@@ -0,0 +1,11 @@
+package cn.gistack.sm.sg.VO;
+
+import lombok.Data;
+
+@Data
+public class SgStepReportVO {
+private Long stepId;
+private String stepName;
+private Integer approvalStatus;
+private String stepNum;
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProgressReportController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProgressReportController.java
index acc4712..6a933a2 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProgressReportController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProgressReportController.java
@@ -58,7 +58,7 @@
}
/**
- * 新增上报
+ * 上报详情
*/
@GetMapping(value = "/detail")
public R detail(String id) {
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProjectInfoController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProjectInfoController.java
index e2cdb53..eca12d0 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProjectInfoController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProjectInfoController.java
@@ -15,6 +15,7 @@
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
+import java.util.Map;
/**
* <p>
@@ -46,4 +47,23 @@
List<SgProjectInfoDO> list= sgProjectInfoService.queryStepByProject(searchDTO);
return R.data(list);
}
+
+
+ /**
+ * 项目进度列表(APP)
+ */
+ @GetMapping(value = "/project_progress_list")
+ public R progressList(ProjectSearchDTO searchDTO) {
+ List<SgProjectInfoVO> list= sgProjectInfoService.progressList(searchDTO);
+ return R.data(list);
+ }
+
+ /**
+ * 首页项目统计(APP)
+ */
+ @GetMapping(value = "/project_count")
+ public R projectCount(ProjectSearchDTO searchDTO) {
+ Map<String,Long> map = sgProjectInfoService.projectCount(searchDTO);
+ return R.data(map);
+ }
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.java
index 650d0bb..979f970 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.java
@@ -3,6 +3,7 @@
import cn.gistack.sm.sg.DO.SgProgressReportDO;
import cn.gistack.sm.sg.DTO.ProjectSearchDTO;
import cn.gistack.sm.sg.VO.SgProgressReportVO;
+import cn.gistack.sm.sg.VO.SgStepReportVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
@@ -26,4 +27,6 @@
List<SgProgressReportVO> queryList(@Param("dto") ProjectSearchDTO searchDTO);
Long countList(@Param("dto") ProjectSearchDTO searchDTO);
+
+ List<SgStepReportVO> selectByDeviceId(@Param("deviceId") Long gxDeviceId);
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml
index e0c5cd9..515c3f9 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml
@@ -37,4 +37,18 @@
and userR.approval_status = #{dto.approvalStatus}
</if>
</select>
+ <select id="selectByDeviceId" resultType="cn.gistack.sm.sg.VO.SgStepReportVO">
+ SELECT
+ step.id AS stepId,
+ step.gx_step_name AS stepName,
+ step.gx_step_num AS stepNum,
+ re.STATUS AS approvalStatus
+ FROM
+ ywxt.sg_gx_step step
+ LEFT JOIN ywxt.sg_gx gx ON step.gx_info_id = gx.id
+ LEFT JOIN ywxt.sg_device de ON gx.gx_type = de.device_type
+ LEFT JOIN ywxt.sg_progress_report re ON re.gx_step_id = step.id and re.gx_device_id = de.id
+ WHERE
+ 1 =1 and de.id = #{deviceId}
+ </select>
</mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.java
index b4900ff..332ad8e 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.java
@@ -23,4 +23,6 @@
List<SgProjectInfoDO> queryPageList(IPage<SgProjectInfoDO> page, @Param("dto") ProjectSearchDTO dto);
List<SgProjectInfoVO> queryStepByProject(@Param("dto") ProjectSearchDTO searchDTO);
+
+ List<SgProjectInfoVO> progressList(@Param("dto") ProjectSearchDTO searchDTO);
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml
index 4eb77e3..31c0d19 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml
@@ -39,4 +39,13 @@
and pro.project_name like CONCAT(CONCAT('%', #{dto.projectName}), '%')
</if>
</select>
+ <select id="progressList" resultType="cn.gistack.sm.sg.VO.SgProjectInfoVO">
+ SELECT
+ pro.id,
+ pro.project_name,
+ de.STATUS as deviceStatus
+ FROM
+ ywxt.sg_project_info pro
+ LEFT JOIN ywxt.sg_device de ON pro.id = de.program_id
+ </select>
</mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/SgProjectInfoService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/SgProjectInfoService.java
index d17b9c0..8174ded 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/SgProjectInfoService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/SgProjectInfoService.java
@@ -7,6 +7,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
+import java.util.Map;
/**
* <p>
@@ -21,4 +22,8 @@
IPage<SgProjectInfoDO> queryPageList(IPage<SgProjectInfoDO> page, ProjectSearchDTO searchDTO);
List<SgProjectInfoDO> queryStepByProject(ProjectSearchDTO searchDTO);
+
+ List<SgProjectInfoVO> progressList(ProjectSearchDTO searchDTO);
+
+ Map<String, Long> projectCount(ProjectSearchDTO searchDTO);
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java
index 0e083a6..0c21022 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java
@@ -4,6 +4,7 @@
import cn.gistack.sm.sg.DTO.ApprovalDTO;
import cn.gistack.sm.sg.DTO.ProjectSearchDTO;
import cn.gistack.sm.sg.VO.SgProgressReportVO;
+import cn.gistack.sm.sg.VO.SgStepReportVO;
import cn.gistack.sm.sg.mapper.*;
import cn.gistack.sm.sg.service.SgProgressReportService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -69,9 +70,10 @@
Long gxStepId = sgProgressReportDO.getGxStepId();
List<SgGxStepDO> list = sgGxStepMapper.selectByGxInfoId(gxDeviceId);
SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(gxStepId);
- LambdaQueryChainWrapper<SgProgressReportDO> wrapper = new LambdaQueryChainWrapper<>(sgProgressReportMapper)
- .eq(SgProgressReportDO::getGxStepId, gxStepId).eq(SgProgressReportDO::getGxDeviceId,gxDeviceId);
- if ( sgProgressReportMapper.selectOne(wrapper)!=null){
+ QueryWrapper<SgProgressReportDO> wrapper = new QueryWrapper<>();
+ wrapper.eq("gx_step_id", gxStepId).eq("gx_device_id",gxDeviceId);
+ List<SgProgressReportDO> sgProgressReportDOS = sgProgressReportMapper.selectList(wrapper);
+ if ( sgProgressReportDOS!=null && sgProgressReportDOS.size()>0){
throw new ServiceException("此工序已存在审批!");
}
for (SgGxStepDO gxStepDO : list) {
@@ -92,7 +94,7 @@
List<SgGxConfigDO> sgGxConfigDOS = new LambdaQueryChainWrapper<>(sgGxConfigMapper)
.eq(SgGxConfigDO::getGxDeviceType, deviceType).eq(SgGxConfigDO::getGxStepId, gxStepId).list();
List<String> roIds = sgGxConfigDOS.stream().map(SgGxConfigDO::getRoleId).collect(Collectors.toList());
- List<SgProjectPersonConfigDO> personConfigDOS = new LambdaQueryChainWrapper<>(sgProjectPersonConfigMapper).in(SgProjectPersonConfigDO::getRoldId, roIds).list();
+ List<SgProjectPersonConfigDO> personConfigDOS = new LambdaQueryChainWrapper<>(sgProjectPersonConfigMapper).eq(SgProjectPersonConfigDO::getProgramId,sgProgressReportDO.getProframId()).in(SgProjectPersonConfigDO::getRoldId, roIds).list();
Map<Long, Long> userMap = personConfigDOS.stream().collect(Collectors.toMap(SgProjectPersonConfigDO::getRoldId, SgProjectPersonConfigDO::getUserId));
Date now = DateUtil.now();
sgReportUserMapper.insert(SgReportUserDO.builder().reportId(sgProgressReportDO.getId()).userId(sgProgressReportDO.getReportUser()).approvalContent("提交审批").approvalStatus(0).approvalOrder(0).approvalTime(now).build());
@@ -122,6 +124,8 @@
SgProgressReportVO sgProgressReportVO = sgProgressReportMapper.queryById(id);
List<SgReportUserDO> list = new LambdaQueryChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getReportId, id).orderByAsc(SgReportUserDO::getApprovalTime).list();
sgProgressReportVO.setSgReportUserDOS(list);
+ List<SgStepReportVO> sgStepReportVOS = sgProgressReportMapper.selectByDeviceId(sgProgressReportVO.getGxDeviceId());
+ sgProgressReportVO.setSgStepReportVOS(sgStepReportVOS);
return sgProgressReportVO;
}
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 964cc63..a503ac6 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
@@ -11,11 +11,15 @@
import cn.gistack.sm.sg.service.SgProjectInfoService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -81,4 +85,46 @@
}
return result;
}
+
+ @Override
+ public List<SgProjectInfoVO> progressList(ProjectSearchDTO searchDTO) {
+ List<SgProjectInfoVO> list = sgProjectInfoMapper.progressList(searchDTO);
+ Map<Long, List<SgProjectInfoVO>> map = list.stream().collect(Collectors.groupingBy(SgProjectInfoVO::getId));
+ List<SgProjectInfoVO> result = new ArrayList<>();
+ for (Map.Entry<Long, List<SgProjectInfoVO>> entry : map.entrySet()) {
+ SgProjectInfoVO sgProjectInfoVO = new SgProjectInfoVO();
+ List<SgProjectInfoVO> deviceList = entry.getValue();
+ if (CollectionUtils.isEmpty(deviceList)){
+ continue;
+ }
+ sgProjectInfoVO.setId(entry.getKey());
+ sgProjectInfoVO.setProjectName(deviceList.get(0).getProjectName());
+ List<SgProjectInfoVO> overList = deviceList.stream().filter(s->s.getDeviceStatus()!=null).filter(s -> s.getDeviceStatus() == 2).collect(Collectors.toList());
+ BigDecimal v1 =BigDecimal.ZERO;
+ if (CollectionUtils.isNotEmpty(overList)){
+ v1 = BigDecimal.valueOf(overList.size());
+ }
+ BigDecimal v2 = BigDecimal.valueOf(deviceList.size());
+ BigDecimal percentage = v1.divide(v2).multiply(new BigDecimal("100"));
+ // 如果不需要保留小数位,可以设置一个scale为0
+ BigDecimal percentageRounded = percentage.setScale(0, RoundingMode.HALF_UP);
+ sgProjectInfoVO.setProgressName(percentageRounded+"%");
+ result.add(sgProjectInfoVO);
+ }
+ return result;
+ }
+
+ @Override
+ public Map<String, Long> projectCount(ProjectSearchDTO searchDTO) {
+ Map<String, Long> map = new HashMap<>();
+ List<SgProjectInfoDO> list = new LambdaQueryChainWrapper<>(sgProjectInfoMapper).list();
+ List<SgProjectInfoDO> pending = list.stream().filter(s -> s.getStatus() == 0).collect(Collectors.toList());
+ List<SgProjectInfoDO> progress = list.stream().filter(s -> s.getStatus() == 1).collect(Collectors.toList());
+ List<SgProjectInfoDO> over = list.stream().filter(s -> s.getStatus() == 2).collect(Collectors.toList());
+ map.put("all", (long) list.size());
+ map.put("pending", (long) pending.size());
+ map.put("progress", (long) progress.size());
+ map.put("over", (long) over.size());
+ return map;
+ }
}
--
Gitblit v1.9.3