| <?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> |