xieb
2024-05-07 5e972eb9928c39b5abbdfd35e2a0aeff40876e7d
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/mapper/QualityManageMapper.xml
@@ -5,29 +5,57 @@
    <select id="selectCustomizePage" resultType="cn.gistack.sm.resDataCheck.vo.QualityManageVO">
        SELECT
               arb."guid" AS resGuid,
               arb."name" AS resName,
               arb."res_loc" AS resLoc,
                CASE aab."ad_name"
                when '' then
                CASE aa."ad_name" when '' then
                CASE ab."ad_name" when '' then ac."ad_name" else ab."ad_name" end
                else aa."ad_name"
                END
                else aab."ad_name"
                END  adName,
               arb."res_reg_code" AS resRegCode,
               arb."eng_scal" AS engScal,
               rule.name AS ruleName,
               rule.description AS ruleDesc,
               rule.pro_description AS proDesc,
               qm.*
        FROM
            SM_RES_DATA_QUALITY_MANAGE qm
        FROM (
            select * from  SM_RES_DATA_QUALITY_MANAGE qm
            WHERE qm.is_deleted = 0
            <if test="vo.startTime !=null and vo.startTime !=''">
                AND qm.create_time &gt;= #{vo.startTime}
            </if>
            <if test="vo.endTime !=null and vo.endTime !=''">
                AND qm.create_time &lt;= #{vo.endTime}
            </if>
        ) as qm
        LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = qm.res_id
        LEFT JOIN SM_RES_DATA_CHECK_RULES rule ON rule.id = qm.rule_id
        WHERE qm.is_deleted = 0
        <if test="vo.resName !=null and vo.resName !='' ">
            AND arb."name" LIKE CONCAT('%',#{vo.resName},'%')
        </if>
        <if test="vo.engScal !=null and vo.engScal !='' ">
            AND arb."eng_scal"  = #{vo.engScal}
        </if>
        <if test="vo.ruleName !=null and vo.ruleName !='' ">
            AND rule.name LIKE CONCAT('%',#{vo.ruleName},'%')
        </if>
        left join "SJZT_MD"."att_ad_base" aab on aab."guid" = arb."interior_ad_guid"
        left join "SJZT_MD"."att_ad_base" aa on aab."p_ad_code" = aa."ad_code"
        left join "SJZT_MD"."att_ad_base" ab on aa."p_ad_code" = ab."ad_code"
        left join "SJZT_MD"."att_ad_base" ac on ab."p_ad_code" = ac."ad_code"
        <where>
            <if test="vo.resName !=null and vo.resName !='' ">
                AND arb."name" LIKE CONCAT('%',#{vo.resName},'%')
            </if>
            <if test="vo.engScal !=null and vo.engScal !='' ">
                AND arb."eng_scal"  = #{vo.engScal}
            </if>
            <if test="vo.ruleName !=null and vo.ruleName !='' ">
                AND rule.name LIKE CONCAT('%',#{vo.ruleName},'%')
            </if>
            <if test="vo.adCode != null and vo.adCode != '' ">
                and (aab."ad_code" = #{vo.adCode} or aa."ad_code" = #{vo.adCode} or ab."ad_code" = #{vo.adCode} or ac."ad_code" = #{vo.adCode})
            </if>
        </where>
        order by qm.create_time desc
    </select>
    <select id="getDetail" resultType="cn.gistack.sm.resDataCheck.vo.QualityManageVO">
        SELECT
@@ -47,8 +75,19 @@
    </select>
    <insert id="addQualityManage">
        insert into SM_RES_DATA_QUALITY_MANAGE (res_id,rule_id,create_time,update_time)
        select a."guid" as res_id,#{ruleId},NOW(),NOW()
        insert into SM_RES_DATA_QUALITY_MANAGE (res_id,rule_id,create_time,update_time,flag,val)
        select
            distinct a."guid" as res_id,
                     ${ruleId} AS rule_id,
                     NOW() AS create_time,
                     NOW() AS update_time,
                     case when f."flag" = '老库' THEN '地方平台'
                          when f."flag" = '物联网' THEN '省级平台'
                          when f."flag" = '水文' THEN '水文系统'
                          else ''
                    end as flag,
                     ${varStr}
        from SJZT_MD."att_res_base" a
                 left join SJZT_MD."att_res_danger_manage_special" b on (a."guid" = b."res_guid")
                 left join SJZT_MD."att_res_stag_char" c on (a."guid" = c."res_guid")
@@ -59,9 +98,173 @@
                 left join SJZT_MD."st_rsvr_r_last" f on (e."code" = f."stcd")
                 left join (select tmp."res_guid",max(tmp."tb_weir_top_elevation") "tb_weir_top_elevation" from SJZT_MD."att_res_rsb_norspi" tmp group by tmp."res_guid") g on (a."guid" = g."res_guid")
                 left join (select tmp2."res_guid",max(tmp2."tb_dam_top_elevation") "tb_dam_top_elevation" from SJZT_MD."att_res_water_block" tmp2 group by tmp2."res_guid") h on (a."guid" = h."res_guid")
        <where>
            #{whereStr}
        </where>
            ${whereStr}
    </insert>
    <select id="exportData" resultType="cn.gistack.sm.resDataCheck.excel.QualityManageExcel">
    SELECT  ROWNUM as no, TMP.* FROM (
        SELECT
        arb."guid" AS resGuid,
        arb."name" AS resName,
        arb."res_loc" AS resLoc,
        CASE aab."ad_name"
        when '' then
        CASE aa."ad_name" when '' then
        CASE ab."ad_name" when '' then ac."ad_name" else ab."ad_name" end
        else aa."ad_name"
        END
        else aab."ad_name"
        END  adName,
        arb."res_reg_code" AS resRegCode,
        arb."eng_scal" AS engScal,
        rule.name AS ruleName,
        rule.description AS ruleDesc,
        bdb.dict_value AS proDesc,
        qm.*
        FROM (
        select * from  SM_RES_DATA_QUALITY_MANAGE qm
        WHERE qm.is_deleted = 0
        <if test="vo.startTime !=null and vo.startTime !=''">
            AND qm.create_time &gt;= #{vo.startTime}
        </if>
        <if test="vo.endTime !=null and vo.endTime !=''">
            AND qm.create_time &lt;= #{vo.endTime}
        </if>
        ) as qm
        LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = qm.res_id
        LEFT JOIN SM_RES_DATA_CHECK_RULES rule ON rule.id = qm.rule_id
        left join blade_dict_biz bdb on bdb.dict_key = rule.pro_description
        left join "SJZT_MD"."att_ad_base" aab on aab."guid" = arb."interior_ad_guid"
        left join "SJZT_MD"."att_ad_base" aa on aab."p_ad_code" = aa."ad_code"
        left join "SJZT_MD"."att_ad_base" ab on aa."p_ad_code" = ab."ad_code"
        left join "SJZT_MD"."att_ad_base" ac on ab."p_ad_code" = ac."ad_code"
        where 1=1 and bdb.code = 'RES_DATA_RULES_PRO_DESCRIPTION'
        <if test="vo.resName !=null and vo.resName !='' ">
            AND arb."name" LIKE CONCAT('%',#{vo.resName},'%')
        </if>
        <if test="vo.engScal !=null and vo.engScal !='' ">
            AND arb."eng_scal"  = #{vo.engScal}
        </if>
        <if test="vo.ruleName !=null and vo.ruleName !='' ">
            AND rule.name LIKE CONCAT('%',#{vo.ruleName},'%')
        </if>
        <if test="vo.adCode != null and vo.adCode != '' ">
            and (aab."ad_code" = #{vo.adCode} or aa."ad_code" = #{vo.adCode} or ab."ad_code" = #{vo.adCode} or ac."ad_code" = #{vo.adCode})
        </if>
        order by qm.create_time desc
        )TMP
    </select>
    <select id="getList" resultType="cn.gistack.sm.resDataCheck.vo.QualityManageVO">
<!--        SELECT-->
<!--        arb."guid" AS resGuid,-->
<!--        arb."name" AS resName,-->
<!--        arb."res_loc" AS resLoc,-->
<!--        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,-->
<!--        case when town."ad_grad" = 1 THEN town."ad_code"-->
<!--        when county."ad_grad" = 1 THEN county."ad_code"-->
<!--        when city."ad_grad" = 1 THEN city."ad_code"-->
<!--        ELSE province."ad_code" END AS provinceCode,-->
<!--        case when town."ad_grad" = 1 THEN town."ad_name"-->
<!--        when county."ad_grad" = 1 THEN county."ad_name"-->
<!--        when city."ad_grad" = 1 THEN city."ad_name"-->
<!--        ELSE province."ad_name" END AS provinceName,-->
<!--        qm.val,-->
<!--        qm.create_time-->
<!--        FROM (-->
<!--        select * from  SM_RES_DATA_QUALITY_MANAGE qm-->
<!--        WHERE qm.is_deleted = 0-->
<!--        <if test="vo.startTime !=null and vo.startTime !=''">-->
<!--            AND qm.create_time &gt;= #{vo.startTime}-->
<!--        </if>-->
<!--        <if test="vo.endTime !=null and vo.endTime !=''">-->
<!--            AND qm.create_time &lt;= #{vo.endTime}-->
<!--        </if>-->
<!--        ) as qm-->
<!--        LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = qm.res_id-->
<!--        LEFT JOIN SM_RES_DATA_CHECK_RULES rule ON rule.id = qm.rule_id-->
<!--        left join "SJZT_MD"."att_ad_base" town on town."guid" = 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_ad_base" province on province."ad_code" = city."p_ad_code"-->
<!--        where qm.is_deleted = 0-->
<!--          and qm.rule_id in ('1775403351266652162')-->
<!--            <if test="vo.resName !=null and vo.resName !='' ">-->
<!--                AND arb."name" LIKE CONCAT('%',#{vo.resName},'%')-->
<!--            </if>-->
<!--            <if test="vo.engScal !=null and vo.engScal !='' ">-->
<!--                AND arb."eng_scal"  = #{vo.engScal}-->
<!--            </if>-->
<!--            <if test="vo.ruleName !=null and vo.ruleName !='' ">-->
<!--                AND rule.name LIKE CONCAT('%',#{vo.ruleName},'%')-->
<!--            </if>-->
<!--            <if test="vo.adCode != null and vo.adCode != '' ">-->
<!--                and concat(province."ad_code",city."ad_code",county."ad_code",town."ad_code") like CONCAT('%',#{vo.adCode},'%')-->
<!--            </if>-->
<!--        order by qm.create_time desc-->
        select
            BASIC.*,
            arb."guid" as resGuid,
            arb."name" as resName,
            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 ,
            case  when town."ad_grad" = 1 then town."ad_code" when county."ad_grad" = 1 then county."ad_code" when city."ad_grad" = 1 then city."ad_code" else province."ad_code" end as provinceCode ,
            case  when town."ad_grad" = 1 then town."ad_name" when county."ad_grad" = 1 then county."ad_name" when city."ad_grad" = 1 then city."ad_name" else province."ad_name" end as provinceName
        from (
            select
            qm.res_id,wm_concat(srdcr.description) ruleDesc
            from ywxt.SM_RES_DATA_QUALITY_MANAGE qm
            left join ywxt.SM_RES_DATA_CHECK_RULES srdcr on srdcr.id = qm.rule_id
            where qm.is_deleted = 0
            and qm.rule_id in ( '1777252387305783298',  '1777252642021670914',  '1777253026366717954',  '1777253294051393537',  '1777253523538542594',  '1777253725028712449',  '1777254213505744898',  '1777254438337216514',  '1777254629534564354',  '1777254774644899841' )
            <if test="vo.startTime !=null and vo.startTime !=''">
                AND qm.create_time &gt;= #{vo.startTime}
            </if>
            <if test="vo.endTime !=null and vo.endTime !=''">
                AND qm.create_time &lt;= #{vo.endTime}
            </if>
            group by qm.res_id
        )
        basic
        left join SJZT_MD."att_res_base" arb on arb."guid" = basic.res_id
        left join "SJZT_MD"."att_ad_base" town on town."guid" = 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_ad_base" province on province."ad_code" = city."p_ad_code"
        where 1 = 1 and concat(province."ad_code", city."ad_code", county."ad_code", town."ad_code") like CONCAT('%', '422826200000', '%')
    </select>
</mapper>