Newer
Older
zq-big-sreen / src / main / resources / mapper / smartwell / SmartwellDataMapper.xml
ChaiZhuang on 28 Oct 2022 10 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">

    <sql id="date_tochar" databaseId="mysql">
       DATE_FORMAT(${paramTime},'%Y-%m-%d %H:%i:%s')
    </sql>

    <sql id="date_tochar" databaseId="pgsql">
        TO_CHAR(${paramTime},'yyyy-MM-dd HH24:mi:ss')
    </sql>

    <sql id="date_tochar" databaseId="oracle">
        TO_CHAR(${paramTime},'yyyy-MM-dd HH24:mi:ss')
    </sql>

    <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.UPTIME <![CDATA[ >= ]]>
            TO_CHAR(#{beginTime},'yyyy-MM-dd HH24:mi:ss')
        </if>
        <if test="endTime != null and endTime != ''">
            AND ar.UPTIME  <![CDATA[ <= ]]>
            TO_CHAR(#{endTime},'yyyy-MM-dd HH24:mi:ss')
        </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
        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.UPTIME <![CDATA[ >= ]]>
            TO_CHAR(#{beginTime},'yyyy-MM-dd HH24:mi:ss')
        </if>
        <if test="endTime != null and endTime != ''">
            AND ar.UPTIME  <![CDATA[ <= ]]>
            TO_CHAR(#{endTime},'yyyy-MM-dd HH24:mi:ss')
        </if>
        GROUP BY bwi.road
    </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.UPTIME <![CDATA[ >= ]]>
            TO_CHAR(#{beginTime},'yyyy-MM-dd HH24:mi:ss')
        </if>
        <if test="endTime != null and endTime != ''">
            AND ar.UPTIME  <![CDATA[ <= ]]>
            TO_CHAR(#{endTime},'yyyy-MM-dd HH24:mi:ss')
        </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.UPTIME <![CDATA[ >= ]]>
            TO_CHAR(#{beginTime},'yyyy-MM-dd HH24:mi:ss')
        </if>
        <if test="endTime != null and endTime != ''">
            AND ar.UPTIME  <![CDATA[ <= ]]>
            TO_CHAR(#{endTime},'yyyy-MM-dd HH24:mi:ss')
        </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.UPTIME <![CDATA[ >= ]]>
            TO_CHAR(#{beginTime},'yyyy-MM-dd HH24:mi:ss')
        </if>
        <if test="endTime != null and endTime != ''">
            AND ar.UPTIME  <![CDATA[ <= ]]>
            TO_CHAR(#{endTime},'yyyy-MM-dd HH24:mi:ss')
        </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  alarmTimeDate,count(alarmTimes) AS  "count",COUNT(alarmWells) alarmWells
        from (
            SELECT   COUNT(*) AS alarmTimes,
            COUNT(DISTINCT wellCode) AS alarmWells,
            ( SELECT to_char(alarmTimeDate, 'yyyyMMdd' ) ) alarmTimeDate
            FROM  alarm_now_view
            where date_part('day',now()-alarmTimeDate)  <![CDATA[< ]]> #{alarmDay}
            GROUP BY alarmTimeDate
        ) alarmview
        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
        GROUP BY  deptid,device_type,type_name
    </select>

</mapper>