yxm
2024-07-16 b462e69215b38bba4a91e1406493cad5c14b35ea
项目进度上报逻辑优化
7 files modified
127 ■■■■ changed files
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/PreAcceVO.java 9 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgDeviceController.java 2 ●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml 66 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/SgDeviceService.java 2 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgDeviceServiceImpl.java 14 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java 8 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java 26 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/PreAcceVO.java
@@ -21,4 +21,13 @@
    //工序状态
    private Long status;
    //项目id
    private Long programId;
    //工序id
    private Long gxStepId;
    //设备id
    private Long gxDeviceId;
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgDeviceController.java
@@ -53,7 +53,7 @@
            sgDeviceDO.setCreateTime(now);
        }
        sgDeviceDO.setUpdateTime(now);
        return R.data(sgDeviceService.save(sgDeviceDO));
        return R.data(sgDeviceService.saveById(sgDeviceDO));
    }
    /**
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml
@@ -29,25 +29,7 @@
        </if>
    </select>
    <select id="queryStepByProject" resultType="cn.gistack.sm.sg.VO.SgProjectInfoVO">
        SELECT
        b.id,
        b.project_name,
        b.gxId,
        b.gx_name,
        b.device_name,
        b.device_type,
        b.typeName,
        b.dId,
        b.gx_step_name,
        b.gx_step_num,
        b.stepId,
        b.reportStatus,
        b.deviceStatus,
        b.projectStatus,
        b.reportId,
        b.lon_lat
        FROM
        (
        SELECT
        pro.id,
        pro.project_name,
@@ -64,10 +46,7 @@
        d.STATUS AS deviceStatus,
        pro.STATUS AS projectStatus,
        re.id AS reportId,
        pro.lon_lat,
        dria."county_cd" AS countyCode,
        att."guid" AS cityCode,
        ad."ad_code" AS provinceCode
        pro.lon_lat
        FROM
        ywxt.sg_project_info pro
        LEFT JOIN ywxt.sg_device d ON pro.id = d.program_id
@@ -77,41 +56,25 @@
        LEFT JOIN ywxt.sg_gx_step step ON gx.id = step.gx_info_id
        LEFT JOIN ywxt.sg_progress_report re ON re.gx_step_id = step.id
        AND re.gx_device_id = d.id
        LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = pro.sk_id
        LEFT JOIN YWXT."att_ad_base" att ON att."ad_code" = dria."city_cd"
        LEFT JOIN YWXT."att_ad_base" ad ON att."p_ad_code" = ad."ad_code"
        LEFT JOIN YWXT."att_ad_base" aad ON aad."ad_code" = ad."p_ad_code"
        ) b
        LEFT JOIN YWXT."att_ad_base" a ON (
        ( b.countyCode = a."guid" )
        OR ( b.cityCode = a."guid" )
        OR ( b.provinceCode = a."guid" ))
        where 1=1
          <if test="dto.adCode != null">
        and a."p_ad_code" = #{dto.adCode}
    </if>
        <if test="dto.projectId != null and dto.projectId != ''">
            and b.id = #{dto.projectId}
            and pro.id = #{dto.projectId}
        </if>
        <if test="dto.projectName != null and dto.projectName != ''">
            and b.project_name like CONCAT(CONCAT('%', #{dto.projectName}), '%')
            and pro.project_name like CONCAT(CONCAT('%', #{dto.projectName}), '%')
        </if>
        <if test="dto.status != null">
            and b.status = #{dto.status}
            and pro.status = #{dto.status}
        </if>
        <if test="dto.projectIds != null and dto.projectIds.size > 0">
            and b.id in
            and pro.id in
            <foreach collection="dto.projectIds" item="id" separator="," open="(" close=")">
                #{id}
            </foreach>
        </if>
    </select>
    <select id="progressList" resultType="cn.gistack.sm.sg.VO.SgProjectInfoVO">
        select  b.id,
        b.project_name,
        b.lon_lat,
        b.status from
        (SELECT
       SELECT
        pro.id,
        pro.project_name,
        pro.lon_lat,
@@ -121,23 +84,12 @@
        ad."ad_code" AS provinceCode
        FROM
        ywxt.sg_project_info pro
        LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = pro.sk_id
        LEFT JOIN YWXT."att_ad_base" att ON att."ad_code" = dria."city_cd"
        LEFT JOIN YWXT."att_ad_base" ad ON att."p_ad_code" = ad."ad_code"
        LEFT JOIN YWXT."att_ad_base" aad ON aad."ad_code" = ad."p_ad_code")b
        LEFT JOIN YWXT."att_ad_base" a ON (
        ( b.countyCode = a."guid" )
        OR ( b.cityCode = a."guid" )
        OR ( b.provinceCode = a."guid" ))
        WHERE 1=1
        <if test="dto.adCode != null">
        and a."p_ad_code" = #{dto.adCode}
        </if>
        <if test="dto.status != null">
        and b.status = #{dto.status}
        and pro.status = #{dto.status}
    </if>
     <if test="dto.projectName != null and dto.projectName != ''">
         and b.project_name like CONCAT(CONCAT('%',#{dto.projectName}),'%')
         and pro.project_name like CONCAT(CONCAT('%',#{dto.projectName}),'%')
     </if>
    </select>
    <select id="getSgstatiss" resultType="cn.gistack.sm.sg.VO.SgStatisticsVO">
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/SgDeviceService.java
@@ -30,4 +30,6 @@
    SgDeviceDO getSgDeviceById(String id);
    List<SgGxStepDO> queryStepList(String deviceId);
    boolean saveById(SgDeviceDO sgDeviceDO);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgDeviceServiceImpl.java
@@ -33,6 +33,9 @@
    @Autowired
    private SgGxStepMapper sgGxStepMapper;
    @Autowired
    private SgProgressReportMapper sgProgressReportMapper;
    @Override
    public IPage<SgDeviceDO> queryPageList(IPage<SgDeviceDO> page, SgDeviceSearchDTO searchDTO) {
@@ -88,4 +91,15 @@
        List<SgGxStepDO> sgGxStepDOS = sgGxStepMapper.queryStepList(deviceId);
        return sgGxStepDOS;
    }
    @Override
    public boolean saveById(SgDeviceDO sgDeviceDO) {
        QueryWrapper<SgProgressReportDO> queryWrapper = new QueryWrapper<>();
        SgProgressReportDO sgProgressReportDO = sgProgressReportMapper.selectOne(queryWrapper.eq("profram_id", sgDeviceDO.getId()).eq("gx_step_id",26));
        if (sgProgressReportDO.getStatus().equals(2)) {
            throw new ServiceException("施工验收完成不能增加设备");
        }
        return save(sgDeviceDO);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java
@@ -87,7 +87,7 @@
            return;
        }
        QueryWrapper<SgProgressReportDO> wrappers = new QueryWrapper<>();
        wrappers.eq("profram_id", sgProgressReportDO.getProframId()).ne("status", 4).eq("gx_step_name", "施工准备");
        wrappers.eq("profram_id", sgProgressReportDO.getProframId()).ne("status", 4).eq("gx_step_name", "施工准R备");
        List<SgProgressReportDO> sgProgressReportDOS1 = sgProgressReportMapper.selectList(wrappers);
        if(sgProgressReportDO.getGxDeviceId()==998){
@@ -120,7 +120,11 @@
        SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(gxStepId);
        List<SgGxStepDO> list = sgGxStepMapper.selectByGxInfoId(sgGxStepDO.getGxInfoId());
        QueryWrapper<SgProgressReportDO> wrapper = new QueryWrapper<>();
        wrapper.eq("gx_step_id", gxStepId).eq("gx_device_id",gxDeviceId).ne("status",4);
        if(sgProgressReportDO.getGxDeviceId()==998 || sgProgressReportDO.getGxDeviceId()==999){
            wrapper.eq("gx_step_id", gxStepId).eq("gx_device_id",gxDeviceId).ne("status",4).eq("profram_id",sgProgressReportDO.getProframId());
        }else {
            wrapper.eq("gx_step_id", gxStepId).eq("gx_device_id",gxDeviceId).ne("status",4);
        }
        List<SgProgressReportDO> sgProgressReportDOS = sgProgressReportMapper.selectList(wrapper);
        if ( sgProgressReportDOS!=null && sgProgressReportDOS.size()>0){
            throw new ServiceException("此工序已存在审批!");
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java
@@ -71,8 +71,17 @@
     */
    @Override
    public List<SgProjectInfoDO> queryStepByProject(ProjectSearchDTO searchDTO) {
        List<PreAcceVO>  palist = new ArrayList<>();
        List<SgProjectInfoVO> list = sgProjectInfoMapper.queryStepByProject( searchDTO);
        return getProjectProgress(list);
        palist.add(handleQuery(25, list.get(0).getId()));
        palist.add(handleQuery(26, list.get(0).getId()));
        List<SgProjectInfoDO> projectProgress = getProjectProgress(list);
        projectProgress.forEach(s->{
            s.setPreAcce(palist);
        });
        return projectProgress;
    }
    /**
@@ -136,11 +145,6 @@
                typeVO.setTypeProgress(getBigDecimalPercent(divideDevice));
                sgGxDOS.add(typeVO);
            }
                List<PreAcceVO>  palist = new ArrayList<>();
            palist.add(handleQuery( 25, list.get(0).getId()));
            palist.add(handleQuery(26,list.get(0).getId()));
            sgProjectInfoDO.setPreAcce(palist);
            BigDecimal allDeviceSize = BigDecimal.valueOf(allDevice.size());
            if (!allDeviceSize.equals(BigDecimal.ZERO)){
                double sum = allDevice.stream().mapToDouble(s -> Double.parseDouble(s.getProgress())).sum();
@@ -368,8 +372,16 @@
            preAcceVO.setId(sgProgressReportDO.getId().toString());
            preAcceVO.setName(sgProgressReportDO.getGxStepName());
            preAcceVO.setStatus((long) sgProgressReportDO.getStatus());
            preAcceVO.setProgramId(programId);
            preAcceVO.setGxDeviceId(sgProgressReportDO.getGxDeviceId());
            preAcceVO.setGxStepId(sgProgressReportDO.getGxStepId());
        } else {
            preAcceVO.setName(sgGxStepMapper.selectById(stepIdForNull).getGxStepName());
            SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(stepIdForNull);
            preAcceVO.setName(sgGxStepDO.getGxStepName());
            preAcceVO.setProgramId(programId);
            preAcceVO.setGxDeviceId(stepIdForNull != 25? (long)998:(long)999);
            preAcceVO.setGxStepId(sgGxStepDO.getId());
        }
        return  preAcceVO;