工业级运维app手机api
xufenglei
2017-11-16 43c0f7bd6b605b2c71f58e43055144004e7d42e7
src/main/resources/mapper/HistoryEntityMapper.xml
@@ -227,65 +227,109 @@
  </update>
  <select id="getMonthAverageBySensor" resultType="map">
      SELECT
         AVG(mac_value) monthAverage
         AVG(mac_value) average
      FROM
         history
      WHERE
         mac = #{mac}
      AND mac_key = #{macKey}
      AND time &gt; #{start}
      AND time &lt; #{end}
         mac = #{mac,jdbcType=VARCHAR}
      AND mac_key = #{macKey,jdbcType=VARCHAR}
      AND time &gt; #{start,jdbcType=TIMESTAMP}
      AND time &lt; #{end,jdbcType=TIMESTAMP}
  </select>
   <select id="getAverageByAll" resultType="map">
<!--
      SELECT
         h.mac_key,
         <if test="macKey != null and macKey != 'all'">
            e.name,
         </if>
         <if test="macKey == 'all'">
            h.mac_key,
         </if>
         AVG(h.mac_value) avg
      FROM
         history h,
         monitorpoint m,
         equipment e
      <if test="orgIds != null and orgIds.size > 0">
         JOIN org_equ oe ON e.id = oe.equid
         AND oe.orgid IN
         <foreach collection="orgIds" item="listItem" open="(" separator="," close=")" >
            #{listItem}
         </foreach>
      </if>
      WHERE
         m.areacode = #{areaCode}
      AND m.id = e.monitorpoint
      AND e.mac = h.mac
      AND h.time &gt; #{start}
      AND h.time &lt; #{end}
      GROUP BY
         h.mac_key
 -->
      <if test="orgIds != null and orgIds.size > 0">
         <!-- JOIN org_equ oe ON e.id = oe.equid -->
         AND e.owner_id IN
         <foreach collection="orgIds" item="listItem" open="(" separator="," close=")" >
            #{listItem}
         </foreach>
      </if>
      <if test="macKey != null and macKey != 'all'">
         AND   h.mac_key = #{macKey}
         GROUP BY e.id
         ORDER BY avg desc
      </if>
      <if test="macKey == 'all'">
         GROUP BY h.mac_key
      </if>
   </select>
   <select id="getEquipmentStates" resultType="map">
      SELECT
         mac_key,
         AVG(mac_value) avg
         COUNT(state) count,
         state
      FROM
         history h
         <if test="orgIds!=null and orgIds.size > 0">
            JOIN (
               SELECT
                  e.mac
               FROM
                  equipment e,
                  org_equ oe
               WHERE
                  e.id = oe.equid
               AND oe.orgid IN
               <foreach collection="orgIds" item="listItem" open="(" separator="," close=")" >
                  #{listItem}
               </foreach>
            ) e ON h.mac = e.mac
         </if>
         WHERE h.time &gt; #{start}
         AND h.time &lt; #{end}
         equipment
      <if test="orgIds != null and orgIds.size > 0">
         <!-- JOIN org_equ oe ON e.id = oe.equid -->
         where owner_id IN
         <foreach collection="orgIds" item="listItem" open="(" separator="," close=")" >
            #{listItem}
         </foreach>
      </if>
      GROUP BY state
   </select>
   <select id="getSensorsAverageByEquipment" resultType="map">
      SELECT
          concat(time,':00') AS 'time',
          MAX(CASE WHEN  mac_key='e1' THEN mac_value END) AS 'e1',
          MAX(CASE WHEN  mac_key='e2' THEN mac_value END) AS 'e2',
          MAX(CASE WHEN  mac_key='e3' THEN mac_value END) AS 'e3',
          MAX(CASE WHEN  mac_key='e4' THEN mac_value END) AS 'e4',
          MAX(CASE WHEN  mac_key='e5' THEN mac_value END) AS 'e5',
          MAX(CASE WHEN  mac_key='e6' THEN mac_value END) AS 'e6',
          MAX(CASE WHEN  mac_key='e7' THEN mac_value END) AS 'e7',
          MAX(CASE WHEN  mac_key='e8' THEN mac_value END) AS 'e8',
          MAX(CASE WHEN  mac_key='e9' THEN mac_value END) AS 'e9',
          MAX(CASE WHEN  mac_key='e10' THEN mac_value END) AS 'e10',
          MAX(CASE WHEN  mac_key='e11' THEN mac_value END) AS 'e11',
          MAX(CASE WHEN  mac_key='e12' THEN mac_value END) AS 'e12',
          MAX(CASE WHEN  mac_key='e13' THEN mac_value END) AS 'e13',
          MAX(CASE WHEN  mac_key='e14' THEN mac_value END) AS 'e14',
          MAX(CASE WHEN  mac_key='e15' THEN mac_value END) AS 'e15',
          MAX(CASE WHEN  mac_key='e16' THEN mac_value END) AS 'e16',
          MAX(CASE WHEN  mac_key='e17' THEN mac_value END) AS 'e17',
          MAX(CASE WHEN  mac_key='e18' THEN mac_value END) AS 'e18',
          MAX(CASE WHEN  mac_key='e19' THEN mac_value END) AS 'e19'
      FROM
         (
            SELECT
               h.mac_key,
               DATE_FORMAT(time, #{type}) time,
               AVG(h.mac_value) mac_value
            FROM
               history h
            WHERE
               h.mac = #{mac}
            AND h.time >= #{start}
            AND h.time &lt; #{end}
            GROUP BY
               h.mac_key,
               DATE_FORMAT(time, #{type})
            ORDER BY
               DATE_FORMAT(time, #{type})
         ) a
      GROUP BY
         mac_key
         time
   </select>
</mapper>