<?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.dy.pipIrrGlobal.daoSt.StIntakeAmountMonthMapper"> 
 | 
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth"> 
 | 
    <!--@mbg.generated--> 
 | 
    <!--@Table st_intake_amount_month--> 
 | 
    <id column="id" jdbcType="BIGINT" property="id" /> 
 | 
    <result column="intake_id" jdbcType="BIGINT" property="intakeId" /> 
 | 
    <result column="year" jdbcType="INTEGER" property="year" /> 
 | 
    <result column="month" jdbcType="INTEGER" property="month" /> 
 | 
    <result column="amount" jdbcType="FLOAT" property="amount" /> 
 | 
  </resultMap> 
 | 
  <sql id="Base_Column_List"> 
 | 
    <!--@mbg.generated--> 
 | 
    id, intake_id, `year`, `month`, amount 
 | 
  </sql> 
 | 
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> 
 | 
    <!--@mbg.generated--> 
 | 
    select  
 | 
    <include refid="Base_Column_List" /> 
 | 
    from st_intake_amount_month 
 | 
    where id = #{id,jdbcType=BIGINT} 
 | 
  </select> 
 | 
 <select id="selectByIntakeIdAndYearAndMonth" resultMap="BaseResultMap"> 
 | 
    select 
 | 
    <include refid="Base_Column_List" /> 
 | 
    from st_intake_amount_month 
 | 
    <where> 
 | 
      <if test="intakeId != null"> 
 | 
        and intake_id = #{intakeId,jdbcType=BIGINT} 
 | 
      </if> 
 | 
      <if test="year != null"> 
 | 
        and `year` = #{year,jdbcType=INTEGER} 
 | 
      </if> 
 | 
      <if test="month != null"> 
 | 
        and `month` = #{month,jdbcType=INTEGER} 
 | 
      </if> 
 | 
    </where> 
 | 
  </select> 
 | 
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> 
 | 
    <!--@mbg.generated--> 
 | 
    delete from st_intake_amount_month 
 | 
    where id = #{id,jdbcType=BIGINT} 
 | 
  </delete> 
 | 
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth"> 
 | 
    <!--@mbg.generated--> 
 | 
    insert into st_intake_amount_month (id, intake_id, `year`,  
 | 
      `month`, amount) 
 | 
    values (#{id,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, #{year,jdbcType=INTEGER},  
 | 
      #{month,jdbcType=INTEGER}, #{amount,jdbcType=FLOAT}) 
 | 
  </insert> 
 | 
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth"> 
 | 
    <!--@mbg.generated--> 
 | 
    insert into st_intake_amount_month 
 | 
    <trim prefix="(" suffix=")" suffixOverrides=","> 
 | 
      <if test="id != null"> 
 | 
        id, 
 | 
      </if> 
 | 
      <if test="intakeId != null"> 
 | 
        intake_id, 
 | 
      </if> 
 | 
      <if test="year != null"> 
 | 
        `year`, 
 | 
      </if> 
 | 
      <if test="month != null"> 
 | 
        `month`, 
 | 
      </if> 
 | 
      <if test="amount != null"> 
 | 
        amount, 
 | 
      </if> 
 | 
    </trim> 
 | 
    <trim prefix="values (" suffix=")" suffixOverrides=","> 
 | 
      <if test="id != null"> 
 | 
        #{id,jdbcType=BIGINT}, 
 | 
      </if> 
 | 
      <if test="intakeId != null"> 
 | 
        #{intakeId,jdbcType=BIGINT}, 
 | 
      </if> 
 | 
      <if test="year != null"> 
 | 
        #{year,jdbcType=INTEGER}, 
 | 
      </if> 
 | 
      <if test="month != null"> 
 | 
        #{month,jdbcType=INTEGER}, 
 | 
      </if> 
 | 
      <if test="amount != null"> 
 | 
        #{amount,jdbcType=FLOAT}, 
 | 
      </if> 
 | 
    </trim> 
 | 
  </insert> 
 | 
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth"> 
 | 
    <!--@mbg.generated--> 
 | 
    update st_intake_amount_month 
 | 
    <set> 
 | 
      <if test="intakeId != null"> 
 | 
        intake_id = #{intakeId,jdbcType=BIGINT}, 
 | 
      </if> 
 | 
      <if test="year != null"> 
 | 
        `year` = #{year,jdbcType=INTEGER}, 
 | 
      </if> 
 | 
      <if test="month != null"> 
 | 
        `month` = #{month,jdbcType=INTEGER}, 
 | 
      </if> 
 | 
      <if test="amount != null"> 
 | 
        amount = #{amount,jdbcType=FLOAT}, 
 | 
      </if> 
 | 
    </set> 
 | 
    where id = #{id,jdbcType=BIGINT} 
 | 
  </update> 
 | 
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth"> 
 | 
    <!--@mbg.generated--> 
 | 
    update st_intake_amount_month 
 | 
    set intake_id = #{intakeId,jdbcType=BIGINT}, 
 | 
      `year` = #{year,jdbcType=INTEGER}, 
 | 
      `month` = #{month,jdbcType=INTEGER}, 
 | 
      amount = #{amount,jdbcType=FLOAT} 
 | 
    where id = #{id,jdbcType=BIGINT} 
 | 
  </update> 
 | 
  
 | 
  <select id="statisticsByIntake" resultType="com.dy.pipIrrGlobal.voSt.VoIntakeAmountStatistics"> 
 | 
    select intake_id, sum(amount) as amount 
 | 
    from st_intake_amount_month 
 | 
    where `year` = #{year,jdbcType=INTEGER} 
 | 
    group by intake_id 
 | 
  </select> 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  <!-- 为查询统计取水口日用水量,统计取水口数量 --> 
 | 
  <select id="selectIntakeCount4AmountMonth" resultType="java.lang.Long"> 
 | 
    SELECT COUNT(*) 
 | 
    FROM pr_intake tb 
 | 
    <where> 
 | 
      AND tb.deleted != 1 
 | 
      <if test="intakeNum != null and intakeNum != ''"> 
 | 
        AND tb.name = #{intakeNum} 
 | 
      </if> 
 | 
    </where> 
 | 
  </select> 
 | 
  
 | 
  <!-- 为查询统计取水口日用水量,查询一页取水口ID --> 
 | 
  <select id="selectIntakes4AmountMonth" resultType="com.dy.pipIrrGlobal.voSt.VoMonthAmount"> 
 | 
    SELECT id    as intakeId, 
 | 
    name  as intakeNum, 
 | 
    lat   as intakeLat, 
 | 
    lng   as intakeLng 
 | 
    FROM pr_intake 
 | 
    <where> 
 | 
      AND deleted != 1 
 | 
      <if test="intakeNum != null and intakeNum != ''"> 
 | 
        AND name = #{intakeNum} 
 | 
      </if> 
 | 
    </where> 
 | 
    order by id DESC 
 | 
    <trim prefix="limit " > 
 | 
      <if test="start != null and count != null"> 
 | 
        #{start, javaType=Integer, jdbcType=INTEGER}, #{count, javaType=Integer, jdbcType=INTEGER} 
 | 
      </if> 
 | 
    </trim> 
 | 
  </select> 
 | 
  
 | 
  <sql id="selectIntakeAmountOfMonth_with"> 
 | 
      SELECT intaId.intakeId   AS intakeId, 
 | 
             siam.year          AS `year`, 
 | 
             siam.month         AS `month`, 
 | 
             siam.amount        AS amount 
 | 
      FROM JSON_TABLE( 
 | 
        #{intakesJson}, 
 | 
          '$[*]' COLUMNS ( 
 | 
          intakeId BIGINT PATH '$.intakeId' 
 | 
        ) 
 | 
      ) intaId 
 | 
      INNER JOIN st_intake_amount_month siam ON siam.intake_id = intaId.intakeId 
 | 
      <where> 
 | 
        <if test="year != null "> 
 | 
          AND siam.year = #{year, javaType=Integer, jdbcType=INTEGER} 
 | 
        </if> 
 | 
      </where> 
 | 
  </sql> 
 | 
  
 | 
  <!--统计指定月份各月用水量(1号到6月)--> 
 | 
  <select id="selectIntakeAmountOfMonth01_06" resultType="com.dy.pipIrrGlobal.voSt.VoMonthAmount"> 
 | 
    WITH intakeAmountMonth AS (<include refid="selectIntakeAmountOfMonth_with" />) 
 | 
    SELECT inta.intakeId     AS intakeId, 
 | 
           inta.intakeNum    AS intakeNum, 
 | 
           inta.intakeLng    AS intakeLng, 
 | 
           inta.intakeLat    AS intakeLat, 
 | 
           tb01.amount   AS month1, 
 | 
           tb02.amount   AS month2, 
 | 
           tb03.amount   AS month3, 
 | 
           tb04.amount   AS month4, 
 | 
           tb05.amount   AS month5, 
 | 
           tb06.amount   AS month6 
 | 
    FROM JSON_TABLE( 
 | 
      #{intakesJson}, 
 | 
        '$[*]' COLUMNS ( 
 | 
        intakeId BIGINT PATH '$.intakeId', 
 | 
        intakeNum VARCHAR(100) PATH '$.intakeNum', 
 | 
        intakeLng DOUBLE PATH '$.intakeLng', 
 | 
        intakeLat DOUBLE PATH '$.intakeLat' 
 | 
      ) 
 | 
    ) inta 
 | 
    LEFT JOIN ( 
 | 
      SELECT tb.intakeId AS intakeId, 
 | 
             tb.amount AS amount 
 | 
      FROM intakeAmountMonth AS tb 
 | 
      WHERE tb.year = #{year} 
 | 
            AND tb.month = 1 
 | 
    ) as tb01 on tb01.intakeId = inta.intakeId 
 | 
    LEFT JOIN ( 
 | 
      SELECT tb.intakeId AS intakeId, 
 | 
             tb.amount AS amount 
 | 
      FROM intakeAmountMonth AS tb 
 | 
      WHERE tb.year = #{year} 
 | 
            AND tb.month = 2 
 | 
    ) as tb02 on tb02.intakeId = inta.intakeId 
 | 
    LEFT JOIN ( 
 | 
      SELECT tb.intakeId AS intakeId, 
 | 
             tb.amount AS amount 
 | 
      FROM intakeAmountMonth AS tb 
 | 
      WHERE tb.year = #{year} 
 | 
            AND tb.month = 3 
 | 
    ) as tb03 on tb03.intakeId = inta.intakeId 
 | 
    LEFT JOIN ( 
 | 
      SELECT tb.intakeId AS intakeId, 
 | 
             tb.amount AS amount 
 | 
      FROM intakeAmountMonth AS tb 
 | 
      WHERE tb.year = #{year} 
 | 
            AND tb.month = 4 
 | 
    ) as tb04 on tb04.intakeId = inta.intakeId 
 | 
    LEFT JOIN ( 
 | 
      SELECT tb.intakeId AS intakeId, 
 | 
             tb.amount AS amount 
 | 
      FROM intakeAmountMonth AS tb 
 | 
      WHERE tb.year = #{year} 
 | 
            AND tb.month = 5 
 | 
    ) as tb05 on tb05.intakeId = inta.intakeId 
 | 
    LEFT JOIN ( 
 | 
      SELECT tb.intakeId AS intakeId, 
 | 
             tb.amount AS amount 
 | 
      FROM intakeAmountMonth AS tb 
 | 
      WHERE tb.year = #{year} 
 | 
            AND tb.month = 6 
 | 
    ) as tb06 on tb06.intakeId = inta.intakeId 
 | 
  </select> 
 | 
  
 | 
  <!--统计指定月份各月用水量(7号到12月)--> 
 | 
  <select id="selectIntakeAmountOfMonth07_12" resultType="com.dy.pipIrrGlobal.voSt.VoMonthAmount"> 
 | 
    WITH intakeAmountMonth AS (<include refid="selectIntakeAmountOfMonth_with" />) 
 | 
    SELECT inta.intakeId     AS intakeId, 
 | 
           inta.intakeNum    AS intakeNum, 
 | 
           inta.intakeLng    AS intakeLng, 
 | 
           inta.intakeLat    AS intakeLat, 
 | 
           tb07.amount   AS month7, 
 | 
           tb08.amount   AS month8, 
 | 
           tb09.amount   AS month9, 
 | 
           tb010.amount  AS month10, 
 | 
           tb011.amount  AS month11, 
 | 
           tb012.amount  AS month12 
 | 
    FROM JSON_TABLE( 
 | 
      #{intakesJson}, 
 | 
        '$[*]' COLUMNS ( 
 | 
        intakeId BIGINT PATH '$.intakeId', 
 | 
        intakeNum VARCHAR(100) PATH '$.intakeNum', 
 | 
        intakeLng DOUBLE PATH '$.intakeLng', 
 | 
        intakeLat DOUBLE PATH '$.intakeLat' 
 | 
      ) 
 | 
    ) inta 
 | 
    LEFT JOIN ( 
 | 
      SELECT tb.intakeId AS intakeId, 
 | 
             tb.amount AS amount 
 | 
      FROM intakeAmountMonth AS tb 
 | 
      WHERE tb.year = #{year} 
 | 
            AND tb.month = 7 
 | 
    ) as tb07 on tb07.intakeId = inta.intakeId 
 | 
    LEFT JOIN ( 
 | 
      SELECT tb.intakeId AS intakeId, 
 | 
             tb.amount AS amount 
 | 
      FROM intakeAmountMonth AS tb 
 | 
      WHERE tb.year = #{year} 
 | 
            AND tb.month = 8 
 | 
    ) as tb08 on tb08.intakeId = inta.intakeId 
 | 
    LEFT JOIN ( 
 | 
      SELECT tb.intakeId AS intakeId, 
 | 
             tb.amount AS amount 
 | 
      FROM intakeAmountMonth AS tb 
 | 
      WHERE tb.year = #{year} 
 | 
            AND tb.month = 9 
 | 
    ) as tb09 on tb09.intakeId = inta.intakeId 
 | 
    LEFT JOIN ( 
 | 
      SELECT tb.intakeId AS intakeId, 
 | 
             tb.amount AS amount 
 | 
      FROM intakeAmountMonth AS tb 
 | 
      WHERE tb.year = #{year} 
 | 
            AND tb.month = 10 
 | 
    ) as tb010 on tb010.intakeId = inta.intakeId 
 | 
    LEFT JOIN ( 
 | 
      SELECT tb.intakeId AS intakeId, 
 | 
             tb.amount AS amount 
 | 
      FROM intakeAmountMonth AS tb 
 | 
      WHERE tb.year = #{year} 
 | 
            AND tb.month = 11 
 | 
    ) as tb011 on tb011.intakeId = inta.intakeId 
 | 
    LEFT JOIN ( 
 | 
      SELECT tb.intakeId AS intakeId, 
 | 
             tb.amount AS amount 
 | 
      FROM intakeAmountMonth AS tb 
 | 
      WHERE tb.year = #{year} 
 | 
            AND tb.month = 12 
 | 
    ) as tb012 on tb012.intakeId = inta.intakeId 
 | 
  </select> 
 | 
  
 | 
</mapper> 
 |