TpPEqpReportStatisticSMapper.xml 5.52 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.zteits.park.mapper.smapper.TpPEqpReportStatisticSMapper">
  <resultMap id="BaseResultMap" type="com.zteits.park.domain.TpPEqpReportStatistic">
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="statistic_begin_time" jdbcType="TIMESTAMP" property="statisticBeginTime" />
    <result column="statistic_end_time" jdbcType="TIMESTAMP" property="statisticEndTime" />
    <result column="statistic_type" jdbcType="INTEGER" property="statisticType" />
    <result column="pl_no" jdbcType="VARCHAR" property="plNo" />
    <result column="eqp_type" jdbcType="INTEGER" property="eqpType" />
    <result column="eqp_no" jdbcType="VARCHAR" property="eqpNo" />
    <result column="berth_no" jdbcType="VARCHAR" property="berthNo" />
    <result column="fault_num" jdbcType="INTEGER" property="faultNum" />
    <result column="inpark_num" jdbcType="INTEGER" property="inparkNum" />
    <result column="outpark_num" jdbcType="INTEGER" property="outparkNum" />
    <result column="data_state" jdbcType="INTEGER" property="dataState" />
    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
    <result column="create_op" jdbcType="BIGINT" property="createOp" />
    <result column="modify_time" jdbcType="TIMESTAMP" property="modifyTime" />
    <result column="modify_op" jdbcType="BIGINT" property="modifyOp" />
     <result column="eqp_is_online" jdbcType="CHAR" property="eqpIsOnline" />
  </resultMap>
  
  <sql id="Base_Column_List">
    id, statistic_begin_time, statistic_end_time, statistic_type, pl_no, eqp_type, eqp_no, 
    berth_no, fault_num, inpark_num, outpark_num, data_state, create_time, create_op, 
    modify_time, modify_op,eqp_is_online
  </sql>
  <select id="statisticReportNum" resultMap="BaseResultMap">
    SELECT
	eqp.pl_no,
	eqp.eqp_type,
	eqp.eqp_no,
	eqp.berth_no,
	eqp.eqp_is_online,
	ifnull(t.outpark_num,0) as outpark_num,
	ifnull(t.inpark_num,0) as inpark_num,
	ifnull(t.fault_num,0) as fault_num
	FROM
		tp_p_eqp eqp
		LEFT JOIN (
	SELECT
		eqp_no,
		sum( CASE log.event_type WHEN 10 THEN 1 ELSE 0 END ) outpark_num,
		sum( CASE WHEN ( log.event_type IN ( 11, 21 ) ) THEN 1 ELSE 0 END ) inpark_num,
		sum( CASE log.event_type WHEN 99 THEN 1 ELSE 0 END ) fault_num
	FROM
		${tableName} log 
	WHERE
		data_state = 1 
		AND date( create_time ) = #{date} 
	GROUP BY
		eqp_no 
		) t ON eqp.eqp_no = t.eqp_no 
	WHERE
		eqp.data_state = 1;  
	</select>
  
  
  <insert id="batchInsert" parameterType="java.util.List">
	insert into tp_p_eqp_report_statistic (statistic_begin_time, statistic_end_time, 
      statistic_type, pl_no, eqp_type, 
      eqp_no, berth_no, fault_num,eqp_is_online,
      inpark_num, outpark_num, data_state, 
      create_time, modify_time)
    values 

        <foreach collection="dataList" separator="," item="item" index="index">
	(
	  #{item.statisticBeginTime,jdbcType=TIMESTAMP}, 
	  #{item.statisticEndTime,jdbcType=TIMESTAMP}, 
      #{item.statisticType,jdbcType=INTEGER}, 
      #{item.plNo,jdbcType=VARCHAR}, #{item.eqpType,jdbcType=INTEGER}, 
      #{item.eqpNo,jdbcType=VARCHAR}, #{item.berthNo,jdbcType=VARCHAR}, 
      #{item.faultNum,jdbcType=INTEGER}, #{item.eqpIsOnline,jdbcType=VARCHAR},
      #{item.inparkNum,jdbcType=INTEGER}, #{item.outparkNum,jdbcType=INTEGER}, 
      1, 
      #{item.createTime,jdbcType=TIMESTAMP}, 
      #{item.modifyTime,jdbcType=TIMESTAMP}
    )
        </foreach>
    </insert>
  
  	<select id="statisticsGeoNumsByStatus" resultType="com.zteits.clouds.api.dto.park.dto.GeoStatusNumDTO"
  		parameterType="com.zteits.clouds.api.dto.clouds.param.GeoStatusQueryRequest">
    	SELECT
		  ifnull(max(tmp.allNum), 0) allNum,
		  ifnull(max(tmp.faultNum), 0) faultNum
		FROM (
		       SELECT
		         date_format(t.statistic_end_time, '%y-%M-%d') staticticTime,
		         count(*)                                      allNum,
		         -- 所有地磁数量
		         sum(CASE WHEN t.eqp_is_online in(1, 2)
		           THEN 1
		             ELSE 0 END)                               faultNum -- 异常地磁数量
		       FROM tp_p_eqp e,tp_p_eqp_report_statistic t
	       	   WHERE e.eqp_no = t.eqp_no
			   AND e.pl_no = t.pl_no
			   AND e.used_type='20' -- 10-调试中;20-商用中
			   AND t.statistic_type = 1
		       AND t.data_state =1
		       <if test="plNos != null and plNos.size>0">
		        	and t.pl_no IN 
			      <foreach collection="plNos" open="(" close=")" separator="," item="plNo">
			         #{plNo}
			      </foreach>
			   </if>
			    AND t.statistic_end_time >= #{beginTime} and t.statistic_end_time &lt;= #{endTime}
		       GROUP BY staticticTime) tmp
	</select>

	<!-- 地磁在线率统计 -->
	<select id="statisticEqpOnlineRateByPlNo" resultType="com.zteits.park.domain.EqpOnlineRateStatisticDay">
		select
			tt.plNo  plNo,
			count(tt.eqpNum)    eqpNum,
			Round(sum(tt.onlineNum)/sum(tt.eqpNum),4) eqpOnlineRate
		from	(select
		t.pl_no as plNo,
		t.eqp_no eqp_no,
		ifnull(count(t.eqp_no),0)     eqpNum,
		count(CASE WHEN t.eqp_is_online = 0 THEN t.pl_no END) onlineNum
		FROM tp_p_eqp e,tp_p_eqp_report_statistic t
		WHERE e.eqp_no = t.eqp_no
		and e.used_type = 20
		AND t.statistic_type = 1
		AND t.data_state = 1
		and t.pl_no = #{plNo}
		AND DATE_FORMAT(t.statistic_end_time,'%Y-%m-%d') &gt;= DATE_FORMAT(#{startDate},'%Y-%m-%d')
		and DATE_FORMAT(t.statistic_end_time,'%Y-%m-%d') &gt;= DATE_FORMAT(#{endDate},'%Y-%m-%d')
		GROUP BY t.pl_no,t.eqp_no) tt
		GROUP BY tt.plNo
	</select>



</mapper>