Newer
Older
zq-big-sreen / target / classes / mapper / smartwell / SmartwellDataMapper.xml
casic_zt on 28 May 2024 11 KB 大屏统计数据不对修改
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.casic.dao.smartwell.SmartwellDataMapper">



    <select id="countAlarmType" resultType="Map">
        SELECT count(ar.Id) as count,bd.DEVICE_TYPE as "deviceType"
        FROM bus_device bd
        LEFT JOIN alarm_records ar ON ar.devcode=bd.DEVCODE
        WHERE bd.VALID='1'
        AND ar.status='1'
        <if test="beginTime != null and beginTime != '' ">
            AND ar.alarm_time <![CDATA[ >= ]]>
            TO_TIMESTAMP(${beginTime},'yyyy-MM-dd hh24:mi')::timestamp without time zone

        </if>
        <if test="endTime != null and endTime != ''">
            AND ar.alarm_time  <![CDATA[ <= ]]>
            TO_TIMESTAMP(${endTime},'yyyy-MM-dd hh24:mi')::timestamp without time zone
        </if>
        GROUP BY bd.DEVICE_TYPE
    </select>

    <select id="getTypeName" resultType="Map">
        SELECT id, type_name AS "typeName"
        FROM base_device_type
    </select>

    <select id="countDeviceByType" resultType="Map">
        SELECT count(*) AS  count,DEVICE_TYPE AS "deviceType"
        FROM bus_device bd
            JOIN BUS_DEVICE_WELL bdw
        on bdw.device_id=bd.id
            join bus_well_info bwi on bwi.id=bdw.well_id
        WHERE
            bwi.VALID = '1'
          AND bdw.VALID = '1'
          AND bd.VALID = '1'
          and bwi.deptid != 1727306292566474754
        GROUP BY DEVICE_TYPE
    </select>

    <select id="countAlarmByRoad" resultType="Map">
        SELECT count(ar.Id) as "总计", bwi.road AS "道路名称"
        FROM bus_well_info bwi
        LEFT JOIN alarm_records ar ON ar.WELL_CODE=bwi.WELL_CODE
        WHERE bwi.VALID='1'
          AND bwi.road is not null
        <if test="beginTime != null and beginTime != '' ">
            AND ar.alarm_time <![CDATA[ >= ]]>
            TO_TIMESTAMP(${beginTime},'yyyy-MM-dd hh24:mi')::timestamp without time zone
        </if>
        <if test="endTime != null and endTime != ''">
            AND ar.alarm_time  <![CDATA[ <= ]]>
            TO_TIMESTAMP(${endTime},'yyyy-MM-dd hh24:mi')::timestamp without time zone
        </if>
        GROUP BY bwi.road
        ORDER BY 总计 DESC
    </select>

    <select id="countAlarmDevice" resultType="Integer">
        SELECT count(bd.devcode)
        FROM bus_device bd
        JOIN bus_device_well bdw ON bdw.device_id=bd.id
        JOIN bus_well_info bwi ON bwi.id=bdw.well_id
        JOIN alarm_records ar on bd.devcode=ar.devcode
        WHERE bwi.valid='1' AND bdw.valid='1'
        <if test="beginTime != null and beginTime != '' ">
            AND ar.alarm_time <![CDATA[ >= ]]>
            TO_TIMESTAMP(${beginTime},'yyyy-MM-dd hh24:mi')::timestamp without time zone

        </if>
        <if test="endTime != null and endTime != ''">
            AND ar.alarm_time  <![CDATA[ <= ]]>
            TO_TIMESTAMP(${endTime},'yyyy-MM-dd hh24:mi')::timestamp without time zone
        </if>
    </select>

    <select id="countDeviceNumber" resultType="Integer">
        SELECT count(bd.DEVCODE)
        FROM bus_device bd
                 JOIN bus_device_well bdw ON bdw.device_id = bd.id
                 JOIN bus_well_info bwi ON bwi.id = bdw.well_id
        WHERE bwi.valid = '1'
          AND bdw.valid = '1'
    </select>

    <select id="countAlarmDeviceByDept" resultType="Map">
        SELECT count(bd.devcode) as counts,deptId
        FROM bus_device bd
        JOIN bus_device_well bdw ON bdw.device_id=bd.id
        JOIN bus_well_info bwi ON bwi.id=bdw.well_id
        JOIN alarm_records ar on bd.devcode=ar.devcode
        WHERE bwi.valid='1' AND bdw.valid='1'
        <if test="beginTime != null and beginTime != '' ">
            AND ar.alarm_time <![CDATA[ >= ]]>
            TO_TIMESTAMP(${beginTime},'yyyy-MM-dd hh24:mi')::timestamp without time zone
        </if>
        <if test="endTime != null and endTime != ''">
            AND ar.alarm_time  <![CDATA[ <= ]]>
            TO_TIMESTAMP(${endTime},'yyyy-MM-dd hh24:mi')::timestamp without time zone
        </if>
        GROUP BY deptId
    </select>

    <select id="countDeviceNumberByDept" resultType="Map">
        SELECT count(bd.DEVCODE) as counts, deptId
        FROM bus_device bd
                 JOIN bus_device_well bdw ON bdw.device_id = bd.id
                 JOIN bus_well_info bwi ON bwi.id = bdw.well_id
        WHERE bwi.valid = '1'
          AND bdw.valid = '1'
        GROUP BY deptId
    </select>

    <select id="countAlarmRoad" resultType="Map">
        SELECT count(bd.devcode) AS count,bwi.road
        FROM bus_well_info bwi
        JOIN bus_device_well bdw ON bdw.well_id=bwi.id
        JOIN bus_device bd ON bdw.device_id=bd.id
        JOIN (SELECT DISTINCT(devcode),status
        from alarm_records where status='1') ar ON bd.devcode = ar.devcode
        WHERE bwi.valid='1' AND bdw.valid='1'
        AND road is NOT NULL
        <if test="beginTime != null and beginTime != '' ">
            AND ar.alarm_time <![CDATA[ >= ]]>
            TO_TIMESTAMP(${beginTime},'yyyy-MM-dd hh24:mi')::timestamp without time zone
        </if>
        <if test="endTime != null and endTime != ''">
            AND ar.alarm_time  <![CDATA[ <= ]]>
            TO_TIMESTAMP(${endTime},'yyyy-MM-dd hh24:mi')::timestamp without time zone
        </if>
        GROUP BY bwi.road
    </select>

    <select id="countRoadNumber" resultType="Map">
        SELECT count(bd.DEVCODE) AS count,bwi.road
        FROM bus_well_info bwi
            JOIN bus_device_well bdw
        ON bdw.well_id=bwi.id
            JOIN bus_device bd ON bdw.device_id=bd.id
        WHERE bwi.valid='1' AND bdw.valid='1' AND road is NOT NULL
        GROUP BY bwi.road
    </select>

    <select id="getAlarmDevice" resultType="Map">
        SELECT deptid, bd.devcode, min(arc.timespan)
        FROM bus_device bd
                 JOIN bus_device_well bdw ON bdw.device_id = bd.id
                 JOIN bus_well_info bwi ON bwi.id = bdw.well_id
                 JOIN (SELECT CASE status
                                  WHEN '1' THEN '0'
                                  ELSE round(cast(date_part('epoch', now() - ar.alarm_time) / 60 / 60 as numeric),
                                             1) END AS timespan,
                              ar.devcode
                       from alarm_records ar
                                JOIN (SELECT devcode, max(alarm_time) as alarmtime
                                      FROM alarm_records
                                      GROUP BY devcode) lar
                                     ON lar.alarmtime = ar.alarm_time AND lar.devcode = ar.devcode
        ) arc ON arc.devcode = bd.devcode
        WHERE bwi.valid = '1'
          AND bdw.valid = '1'
        GROUP BY bd.devcode, arc.timespan, deptid
    </select>

    <select id="getNormalDevice" resultType="Map">
        SELECT deptid,
               bd.devcode,
               round(cast(date_part('epoch', now() - bd.INSTALL_DATE) / 60 / 60 as numeric), 1) as "timeSpan"
        FROM bus_device bd
                 JOIN bus_device_well bdw ON bdw.device_id = bd.id
                 JOIN bus_well_info bwi ON bwi.id = bdw.well_id
        WHERE bwi.valid = '1'
          AND bdw.valid = '1'
    </select>

    <select id="getDeptNameList" resultType="Map">
        SELECT id, simple_name AS "name"
        FROM sys_dept
    </select>

    <select id="getDeptIds" resultType="Map">
        SELECT id, simple_name AS "name", dept_type AS "deptType"
        FROM sys_dept
        WHERE pid = #{deptId}
    </select>


    <select id="getAlarmDeviceList" resultType="Map">
        SELECT bwi.WELL_CODE    AS "wellCode",
               WELL_NAME        AS "wellName",
               DEEP             AS deep,
               bd.DEVCODE       AS devcode,
               bd.device_name   AS "deviceName",
               LNG_GAODE        AS "lngGaode",
               LAT_GAODE        AS "latGaode",
               AREA             AS "area",
               POSITION         AS "position",
               RESPONSIBLE_DEPT AS "responsibleDept",
               PHOTOS           AS photos,
               WELL_TYPE        AS wellType,
               STAFF            AS staff,
               TEL              AS "tel",
               BFZT             AS bfzt,
               DEPTID           as deptid,
               counts           AS "isAlarm",
               DEVICE_TYPE      AS "deviceType"
        FROM bus_well_info bwi
                 JOIN bus_device_well bdw ON bdw.WELL_ID = bwi.ID
                 JOIN bus_device bd ON bd.ID = bdw.DEVICE_ID
                 LEFT JOIN (SELECT count(*) AS counts, ar.devcode
                            FROM alarm_records ar
                            WHERE ar.STATUS = '1'
                            GROUP BY ar.devcode
        ) arc ON bd.devcode = arc.devcode
        WHERE bwi.valid = '1'
          AND bdw.valid = '1'
    </select>


    <select id="jobsByDeptId" resultType="map">
        SELECT
        bwi.deptid AS deptid,
        COALESCE(SUM(CASE WHEN job_status='0' THEN 1 ELSE 0 END))
        AS "beforeGet",
        COALESCE(SUM(CASE WHEN job_status='1' THEN 1 ELSE 0 END))
        AS "beforeConfirm",
        COALESCE(SUM(CASE WHEN job_status='2' THEN 1 ELSE 0 END))
        AS "inHandle",
        COALESCE(SUM(CASE WHEN job_status='3' THEN 1 ELSE 0 END))
        AS "over",
        COALESCE(SUM(CASE WHEN job_status='4' THEN 1 ELSE 0 END))
        AS cancel
        FROM alarm_job aj
        INNER JOIN bus_well_info bwi ON aj.WELL_CODE = bwi.WELL_CODE
        INNER JOIN bus_device bd ON aj.DEVCODE = bd.DEVCODE
        <where>
            bwi.VALID = '1' AND bd.VALID = '1'
            <choose>
                <when test="beginTime != null and beginTime != '' and endTime != null and endTime != ''">
                    AND aj.CREATE_TIME <![CDATA[ >= ]]>
                    TO_TIMESTAMP(${beginTime},'yyyy-MM-dd hh24:mi')::timestamp without time zone
                    AND aj.CREATE_TIME <![CDATA[ <=]]>
                    TO_TIMESTAMP(${endTime},'yyyy-MM-dd hh24:mi')::timestamp without time zone
                </when>
                <otherwise>
                    AND date_part('day',now()-aj.create_time)   <![CDATA[<= ]]> 30
                </otherwise>
            </choose>
        </where>
        GROUP BY deptid
    </select>

    <select id="countAlarmsByDay" resultType="map">

        SELECT COUNT
        ( 1 )  AS "count",
        COUNT ( DISTINCT well_code ) AS alarmWells,
        ( SELECT to_char( alarm_time, 'yyyyMMdd' ) ) alarmTimeDate
        FROM
        alarm_records
        WHERE
        date_part( 'day', now( ) - alarm_time ) <![CDATA[< ]]> #{alarmDay}
        GROUP BY
        alarmTimeDate
    </select>

    <select id="getDeviceList" resultType="map">
        SELECT count(bd.devcode) AS count,device_type AS "deviceType",deptid
        FROM BUS_DEVICE bd
            JOIN BUS_DEVICE_WELL bdw
        ON bdw.device_id=bd.id
            JOIN BUS_WELL_INFO bwi ON bdw.well_id=bwi.id
            join base_device_type bdt on bdt.id=bd.device_type
        WHERE
            bwi.VALID = '1'
          AND bdw.VALID = '1'
          AND bd.VALID = '1'
        GROUP BY deptid, device_type, type_name
    </select>

</mapper>