shenyijian
2024-06-24 5097bf3234b98ada92b6608de0e656da3e272572
湖北水库:施工:审批详情排序、待办列表过滤
2 files modified
50 ■■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml 23 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java 27 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml
@@ -30,11 +30,14 @@
        select * from  SG_PROGRESS_REPORT report where id = #{id}
    </select>
    <select id="queryList" resultType="cn.gistack.sm.sg.VO.SgProgressReportVO">
        SELECT
        report.*,
        SELECT distinct
        report.id,
        report.program_name,
        report.gx_step_name,
        report."STATUS",
        de.device_name,
        de.device_type,
        userR.approval_status,
       <!-- userR.approval_status, -->
        dict."DICT_VALUE" as typeName
        FROM
        ywxt.SG_PROGRESS_REPORT report
@@ -43,17 +46,25 @@
        LEFT JOIN ywxt.sg_report_user userR ON report.id = userR.report_id
        WHERE
        1 = 1
        AND userR.is_his = 0
       <!-- AND userR.is_his = 0 -->
        <if test="dto.userId != null and dto.userId != ''">
            and userR.user_id = #{dto.userId}
        </if>
        <if test="dto.approvalStatus != null and dto.approvalStatus != 3">
            and userR.approval_status = #{dto.approvalStatus}
        <if test="dto.approvalStatus != null and dto.approvalStatus ==0">
            and userR.approval_status = 0
        </if>
        <if test="dto.approvalStatus != null and dto.approvalStatus ==1">
           and userR.approval_status != 0
        </if>
            AND userR.approval_order != 0
        </if>
        <choose >
            <when test="dto.approvalStatus != null and dto.approvalStatus == 0">
                and report.audit_person = #{dto.userId}
                and report.audit_person = #{dto.userId} and (report."STATUS" = 0 or report."STATUS" = 1)
            </when>
            <when test="dto.approvalStatus != null and dto.approvalStatus == 1">
               and report."STATUS" != 0
            </when>
            <when test="dto.approvalStatus != null and dto.approvalStatus == 3">
                and report.report_user = #{dto.userId}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java
@@ -136,15 +136,7 @@
        SgProgressReportVO sgProgressReportVO = sgProgressReportMapper.queryById(id);
        SgDeviceDO sgDeviceDO = sgDeviceMapper.selectById(sgProgressReportVO.getGxDeviceId());
        sgProgressReportVO.setDeviceName(sgDeviceDO.getDeviceName());
        List<SgReportUserDO> list = new LambdaQueryChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getReportId, id).list();
        List<SgReportUserDO> reportUserDOS = new ArrayList<>();
        Map<Integer, List<SgReportUserDO>> map = list.stream().collect(Collectors.groupingBy(SgReportUserDO::getIsHis));
        List<SgReportUserDO> sgReportUserDOS = map.get(1);
        if (CollectionUtils.isNotEmpty(sgReportUserDOS)){
            List<SgReportUserDO> sortList = sgReportUserDOS.stream().sorted(Comparator.comparing(SgReportUserDO::getApprovalTime)).collect(Collectors.toList());
            reportUserDOS.addAll(sortList);
        }
        reportUserDOS.addAll(map.get(0).stream().sorted(Comparator.comparingInt(SgReportUserDO::getApprovalOrder)).collect(Collectors.toList()));
        List<SgReportUserDO> list = new LambdaQueryChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getReportId, id).orderByAsc(SgReportUserDO::getId).list();
        List<Long> ids = list.stream().map(s -> s.getUserId()).collect(Collectors.toList());
        List<Map<String,Object>> users = sgProgressReportMapper.getUserByIds(ids);
        for (Map<String, Object> user : users) {
@@ -154,7 +146,7 @@
                }
            }
        }
        sgProgressReportVO.setSgReportUserDOS(reportUserDOS);
        sgProgressReportVO.setSgReportUserDOS(list);
        List<SgStepReportVO> sgStepReportVOS = sgProgressReportMapper.selectByDeviceId(sgProgressReportVO.getGxDeviceId());
        sgProgressReportVO.setSgStepReportVOS(sgStepReportVOS);
        return sgProgressReportVO;
@@ -186,7 +178,7 @@
                cachedThreadPool.execute(new Runnable(){
                    @Override
                    public  void  run(){
                        setProgramAndDeviceStatus();
                        setProgramAndDeviceStatus(sgProgressReportMapper.selectById(approvalDTO.getId()).getProframId());
                    }
                });
@@ -214,8 +206,12 @@
                    reportUserDO.setApprovalTime(date);
                    sgReportUserMapper.insert(reportUserDO);
                }else if (reportUserDO.getApprovalOrder()>sgReportUserDO.getApprovalOrder()){
                    sgReportUserMapper.deleteById(reportUserDO.getId());
                    reportUserDO.setId(null);
                    reportUserDO.setApprovalStatus(0);
                    reportUserDO.setIsHis(0);
                    reportUserDO.setApprovalTime(date);
                    sgReportUserMapper.updateById(reportUserDO);
                    sgReportUserMapper.insert(reportUserDO);
                }
                if (reportUserDO.getApprovalOrder()==1){
                    updateChainWrapper.set(SgProgressReportDO::getAuditPerson,reportUserDO.getUserId());
@@ -228,9 +224,10 @@
    }
    public void  setProgramAndDeviceStatus(){
    public void  setProgramAndDeviceStatus(Long projectId){
        //查询所有的项目
        List<SgProjectInfoDO> sgProjectInfoDOS = sgProjectInfoMapper.selectList(null);
        SgProjectInfoDO sgProjectInfoDO = sgProjectInfoMapper.selectById(projectId);
        List<SgProjectInfoDO> sgProjectInfoDOS = List.of(sgProjectInfoDO);
        if(sgProjectInfoDOS!=null&& !sgProjectInfoDOS.isEmpty()) {
            for (SgProjectInfoDO project : sgProjectInfoDOS) {
                QueryWrapper<SgDeviceDO> queryWrapper = new QueryWrapper<>();
@@ -262,7 +259,7 @@
                                }
                        }
                    }
                    if (deviceFinishCount == sgDeviceDOS.size()) {
                    if (deviceFinishCount!=0 && deviceFinishCount == sgDeviceDOS.size()) {
                        //如果项目下的设备下全部完成
                        project.setStatus(2);
                        sgProjectInfoMapper.updateById(project);