guoshilong
2024-04-15 b557130f91b39253efaf1556013c5231667d0452
获取水库最新预警
5 files modified
188 ■■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/controller/DamSecurityController.java 6 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.java 4 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml 153 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/IDamSecurityService.java 3 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/impl/DamSecurityServiceImpl.java 22 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/controller/DamSecurityController.java
@@ -243,4 +243,10 @@
        return R.data(nkyClient.updateStatus(alarmGet));
    }
    @GetMapping("/getLatestResRecord")
    public R getLatestResRecord(AlarmGet alarmGet){
        List<AlarmGetVO> list = damSecurityService.getLatestResRecord(alarmGet);
        return R.data(list);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.java
@@ -1,5 +1,6 @@
package cn.gistack.sm.damSecurity.mapper;
import cn.gistack.nky.entity.AlarmGet;
import cn.gistack.nky.vo.AlarmGetVO;
import cn.gistack.sm.damSecurity.vo.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -70,4 +71,7 @@
    DamStatisticsRes damResInfoCountWy(@Param("adCode") String adCode);
    List<AlarmGetVO> getLatestResRecord(@Param("alarmGet")AlarmGet alarmGet);
    List<AlarmGetVO> getLatestResRecordWy(@Param("alarmGet") AlarmGet alarmGet);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml
@@ -4586,6 +4586,159 @@
        )
        )TMP
    </select>
    <select id="getLatestResRecord" resultType="cn.gistack.nky.vo.AlarmGetVO">
        SELECT
            NAG.DAM_ID,
            NAG.POINT_ID,
            NAG.TYPE,
            NAG.TIME,
            NAG.VALUE,
            NAG."DESC",
            NAG.CREATE_TIME,
            NAG.TASK_CATEGORY,
            NAG.LEVEL,
            NAG.BAOJINGZHI,
            NAG.ORIGIN_ID,
            NAG.FORWARD,
            NAG."REVERSE",
            NAG.RATIO,
            ARB."name" reservoirName,
            acb."cd_nm" cdName,
            case when town."ad_grad" = 4 THEN town."ad_code" ELSE NULL END AS townCode,
            case when town."ad_grad" = 4 THEN town."ad_name" ELSE NULL END AS townName,
            case
                when town."ad_grad" = 3 THEN town."ad_code"
                when county."ad_grad" = 3 THEN county."ad_code" END        AS countyCode,
            case
                when town."ad_grad" = 3 THEN town."ad_name"
                when county."ad_grad" = 3 THEN county."ad_name" END        AS countyName,
            case
                when town."ad_grad" = 2 THEN town."ad_code"
                when county."ad_grad" = 2 THEN county."ad_code"
                ELSE city."ad_code" END                                    AS cityCode,
            case
                when town."ad_grad" = 2 THEN town."ad_name"
                when county."ad_grad" = 2 THEN county."ad_name"
                ELSE city."ad_name" END                                    AS cityName
        FROM YWXT.NKY_ALARM_GET NAG
                 right JOIN (
            SELECT
                NAG.DAM_ID,
                NAG.POINT_ID,
                MAX(NAG.TIME)TIME,
                NAG.TYPE
            FROM YWXT.NKY_ALARM_GET NAG
                LEFT JOIN SJZT_MD."att_res_base" arb on arb."guid" = nag.dam_id
            WHERE
                 dam_id = #{alarmGet.damId}
                and type = #{alarmGet.type}
            GROUP BY
                NAG.DAM_ID,
                NAG.POINT_ID,
                NAG.TYPE
        )TMP ON (
                    TMP.DAM_ID = NAG.DAM_ID
                AND TMP.POINT_ID = NAG.POINT_ID
                AND TMP.TYPE = NAG.TYPE
                AND TMP.TIME = NAG.TIME
            )
                 LEFT JOIN SJZT_MD."att_res_base" arb on arb."guid" = NAG.DAM_ID
                 LEFT JOIN SJZT_MD."att_ad_base" town ON town."ad_code" = arb."interior_ad_guid"
                 LEFT JOIN SJZT_MD."att_ad_base" county ON county."ad_code" = town."p_ad_code"
                 LEFT JOIN SJZT_MD."att_ad_base" city ON city."ad_code" = county."p_ad_code"
                 LEFT JOIN SJZT_MD."att_cd_base" acb on
                     acb."res_cd" = #{alarmGet.damId}
                    and acb."cd" = nag.point_id
                    <if test="alarmGet.type == 1">
                        and acb."cd_type" = 'sy'
                    </if>
                    <if test="alarmGet.type == 2">
                        and acb."cd_type" = 'sl'
                    </if>
        ORDER BY POINT_ID
    </select>
    <select id="getLatestResRecordWy" resultType="cn.gistack.nky.vo.AlarmGetVO">
        SELECT
        NAG.DAM_ID,
        NAG.POINT_ID,
        NAG.TYPE,
        NAG.TIME,
        NAG.VALUE,
        NAG."DESC",
        NAG.CREATE_TIME,
        NAG.TASK_CATEGORY,
        NAG.LEVEL,
        NAG.BAOJINGZHI,
        NAG.ORIGIN_ID,
        NAG.FORWARD,
        NAG."REVERSE",
        NAG.RATIO,
        ARB."name" reservoirName,
        acb."cd_nm" cdName,
        case when town."ad_grad" = 4 THEN town."ad_code" ELSE NULL END AS townCode,
        case when town."ad_grad" = 4 THEN town."ad_name" ELSE NULL END AS townName,
        case
        when town."ad_grad" = 3 THEN town."ad_code"
        when county."ad_grad" = 3 THEN county."ad_code" END        AS countyCode,
        case
        when town."ad_grad" = 3 THEN town."ad_name"
        when county."ad_grad" = 3 THEN county."ad_name" END        AS countyName,
        case
        when town."ad_grad" = 2 THEN town."ad_code"
        when county."ad_grad" = 2 THEN county."ad_code"
        ELSE city."ad_code" END                                    AS cityCode,
        case
        when town."ad_grad" = 2 THEN town."ad_name"
        when county."ad_grad" = 2 THEN county."ad_name"
        ELSE city."ad_name" END                                    AS cityName
        FROM YWXT.NKY_ALARM_GET NAG
        right JOIN (
        SELECT
        NAG.DAM_ID,
        NAG.POINT_ID,
        MAX(NAG.TIME)TIME,
        MAX(NAG.CREATE_TIME) CREATE_TIME,
        NAG.TYPE
        FROM YWXT.NKY_ALARM_GET NAG
        LEFT JOIN SJZT_MD."att_res_base" arb on arb."guid" = nag.dam_id
        WHERE
         dam_id = #{alarmGet.damId}
        and (type = '3' or type = '4' or type = '5')
        GROUP BY
        NAG.DAM_ID,
        NAG.POINT_ID,
        NAG.TYPE
        )TMP ON (
        TMP.DAM_ID = NAG.DAM_ID
        AND TMP.POINT_ID = NAG.POINT_ID
        AND TMP.TYPE = NAG.TYPE
        AND TMP.TIME = NAG.TIME
        AND TMP.CREATE_TIME = NAG.CREATE_TIME
        )
        LEFT JOIN SJZT_MD."att_res_base" arb on arb."guid" = NAG.DAM_ID
        LEFT JOIN SJZT_MD."att_ad_base" town ON town."ad_code" = arb."interior_ad_guid"
        LEFT JOIN SJZT_MD."att_ad_base" county ON county."ad_code" = town."p_ad_code"
        LEFT JOIN SJZT_MD."att_ad_base" city ON city."ad_code" = county."p_ad_code"
        LEFT JOIN SJZT_MD."att_wy_cd_base" acb on
        acb."res_cd" = #{alarmGet.damId}
        and acb."cd" = nag.point_id
            and acb."cd_type" = 'wy'
        ORDER BY POINT_ID
    </select>
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/IDamSecurityService.java
@@ -1,5 +1,6 @@
package cn.gistack.sm.damSecurity.service;
import cn.gistack.nky.entity.AlarmGet;
import cn.gistack.nky.vo.AlarmGetVO;
import cn.gistack.sm.damSecurity.vo.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -71,4 +72,6 @@
    DamSecurityStatistics getSingleRegionCountOptimize(DamSecurityStatistics damSecurityStatistics);
    DamStatisticsRes damResInfoCountOptimizeType(String adCode, String type);
    List<AlarmGetVO> getLatestResRecord(AlarmGet alarmGet);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/impl/DamSecurityServiceImpl.java
@@ -1,5 +1,6 @@
package cn.gistack.sm.damSecurity.service.impl;
import cn.gistack.nky.entity.AlarmGet;
import cn.gistack.nky.vo.AlarmGetVO;
import cn.gistack.sm.damSecurity.mapper.DamSecurityMapper;
import cn.gistack.sm.damSecurity.service.IDamSecurityService;
@@ -7,7 +8,9 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mysql.cj.protocol.x.ReusableInputStream;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -205,4 +208,23 @@
        return null;
    }
    @Override
    public List<AlarmGetVO> getLatestResRecord(AlarmGet alarmGet) {
        if (StringUtil.isBlank(alarmGet.getDamId())){
            throw new ServiceException("水库编码为空");
        }
        if (StringUtil.isBlank(alarmGet.getType())){
            throw new ServiceException("监测类型为空");
        }
        if (alarmGet.getType().equals("3")){
            //位移,单独取测站名称
            return damSecurityMapper.getLatestResRecordWy(alarmGet);
        }else{
            return damSecurityMapper.getLatestResRecord(alarmGet);
        }
    }
}