| <?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.daoSe.SeClientCardMapper"> | 
|   <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSe.SeClientCard"> | 
|     <!--@mbg.generated--> | 
|     <!--@Table se_client_card--> | 
|     <id column="id" jdbcType="BIGINT" property="id" /> | 
|     <result column="cardAddr" jdbcType="VARCHAR" property="cardaddr" /> | 
|     <result column="cardNum" jdbcType="BIGINT" property="cardnum" /> | 
|     <result column="clientId" jdbcType="BIGINT" property="clientid" /> | 
|     <result column="money" jdbcType="FLOAT" property="money" /> | 
|     <result column="state" jdbcType="TINYINT" property="state" /> | 
|     <result column="original_card_id" jdbcType="BIGINT" property="originalCardId"/> | 
|     <result column="createDt" jdbcType="TIMESTAMP" property="createdt" /> | 
|     <result column="replaceDt" jdbcType="TIMESTAMP" property="replacedt" /> | 
|     <result column="rechargeDt" jdbcType="TIMESTAMP" property="rechargedt" /> | 
|     <result column="lossDtDt" jdbcType="TIMESTAMP" property="lossdtdt" /> | 
|     <result column="cancelDt" jdbcType="TIMESTAMP" property="canceldt" /> | 
|     <result column="unlockDt" jdbcType="TIMESTAMP" property="unlockdt" /> | 
|     <result column="reversalDt" jdbcType="TIMESTAMP" property="reversaldt" /> | 
|     <result column="refundDt" jdbcType="TIMESTAMP" property="refunddt" /> | 
|     <result column="consumeDt" jdbcType="TIMESTAMP" property="consumedt" /> | 
|     <result column="lastOper" jdbcType="TINYINT" property="lastoper" /> | 
|     <result column="remarks" jdbcType="VARCHAR" property="remarks" /> | 
|   </resultMap> | 
|   <sql id="Base_Column_List"> | 
|     <!--@mbg.generated--> | 
|     id, cardAddr, cardNum, clientId, money, `state`, original_card_id, createDt, replaceDt, rechargeDt, | 
|     lossDtDt, cancelDt, unlockDt, reversalDt, refundDt, consumeDt, lastOper, remarks | 
|   </sql> | 
|   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> | 
|     <!--@mbg.generated--> | 
|     select  | 
|     <include refid="Base_Column_List" /> | 
|     from se_client_card | 
|     where id = #{id,jdbcType=BIGINT} | 
|   </select> | 
|   <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> | 
|     <!--@mbg.generated--> | 
|     delete from se_client_card | 
|     where id = #{id,jdbcType=BIGINT} | 
|   </delete> | 
|   | 
|   <!--依据水卡地址获取水卡编号(12月19日废弃)--> | 
|   <select id="getCardIdByAddr" resultType="java.lang.Long"> | 
|     SELECT id AS cardId FROM se_client_card WHERE cardAddr = #{cardAddr} | 
|   </select> | 
|   | 
|   <!--根据水卡编号获取水卡表主键(12月19日添加后废弃)--> | 
|   <select id="getCardIdByNum" resultType="java.lang.Long"> | 
|     SELECT id AS cardId FROM se_client_card WHERE cardNum = #{cardNum} | 
|   </select> | 
|   | 
|   <!--根据水卡编号获取水卡表主键及农户编号--> | 
|   <select id="getCardIdAndClientNum" resultType="java.util.Map"> | 
| <!--    SELECT id AS cardId, clientNum FROM se_client_card WHERE cardNum = #{cardNum}--> | 
|     SELECT | 
|         card.id AS cardId, | 
|         cli.clientNum, | 
|         cli.id AS clientId | 
|     FROM se_client_card card | 
|         INNER JOIN se_client cli ON card.clientId = cli.id | 
|     WHERE card.cardNum = #{cardNum} | 
|   </select> | 
|   | 
|   | 
|   <!--根据行政区划串模糊查询水卡编号--> | 
|   <select id="getCardNumOfMax"  resultType="java.lang.String"> | 
|     SELECT cardNum | 
|     FROM se_client_card | 
|     WHERE cardNum LIKE CONCAT('%',#{areaCode},'%') | 
|     ORDER BY cardNum desc | 
|     LIMIT 0,1 | 
|   </select> | 
|   | 
|   <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard"> | 
|     <!--@mbg.generated--> | 
|     insert into se_client_card (id, cardAddr, cardNum, clientId, | 
|       money, `state`, original_card_id, createDt, | 
|       replaceDt, rechargeDt, lossDtDt,  | 
|       cancelDt, unlockDt, reversalDt, refundDt, | 
|       consumeDt, lastOper, remarks | 
|       ) | 
|     values (#{id,jdbcType=BIGINT}, #{cardaddr,jdbcType=VARCHAR}, #{cardnum,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT}, | 
|       #{money,jdbcType=FLOAT}, #{state,jdbcType=TINYINT}, #{originalCardId,jdbcType=BIGINT}, #{createdt,jdbcType=TIMESTAMP}, | 
|       #{replacedt,jdbcType=TIMESTAMP}, #{rechargedt,jdbcType=TIMESTAMP}, #{lossdtdt,jdbcType=TIMESTAMP},  | 
|       #{canceldt,jdbcType=TIMESTAMP}, #{unlockdt,jdbcType=TIMESTAMP}, #{reversaldt,jdbcType=TIMESTAMP}, | 
|       #{refunddt,jdbcType=TIMESTAMP}, #{consumedt,jdbcType=TIMESTAMP}, #{lastoper,jdbcType=TINYINT}, #{remarks,jdbcType=VARCHAR} | 
|       ) | 
|   | 
|   </insert> | 
|   <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard" useGeneratedKeys="true"> | 
|     <!--@mbg.generated--> | 
|     insert into se_client_card | 
|     <trim prefix="(" suffix=")" suffixOverrides=","> | 
|       <if test="cardaddr != null"> | 
|         cardAddr, | 
|       </if> | 
|       <if test="cardnum != null"> | 
|         cardNum, | 
|       </if> | 
|       <if test="clientid != null"> | 
|         clientId, | 
|       </if> | 
|       <if test="money != null"> | 
|         money, | 
|       </if> | 
|       <if test="state != null"> | 
|         `state`, | 
|       </if> | 
|       <if test="originalCardId != null"> | 
|         original_card_id, | 
|       </if> | 
|       <if test="createdt != null"> | 
|         createDt, | 
|       </if> | 
|       <if test="replacedt != null"> | 
|         replaceDt, | 
|       </if> | 
|       <if test="rechargedt != null"> | 
|         rechargeDt, | 
|       </if> | 
|       <if test="lossdtdt != null"> | 
|         lossDtDt, | 
|       </if> | 
|       <if test="canceldt != null"> | 
|         cancelDt, | 
|       </if> | 
|       <if test="unlockdt != null"> | 
|         unlockDt, | 
|       </if> | 
|       <if test="reversaldt != null"> | 
|         reversalDt, | 
|       </if> | 
|       <if test="refunddt != null"> | 
|         refundDt, | 
|       </if> | 
|       <if test="consumedt != null"> | 
|         consumeDt, | 
|       </if> | 
|       <if test="lastoper != null"> | 
|         lastOper, | 
|       </if> | 
|       <if test="remarks != null"> | 
|         remarks, | 
|       </if> | 
|     </trim> | 
|     <trim prefix="values (" suffix=")" suffixOverrides=","> | 
|       <if test="cardaddr != null"> | 
|         #{cardaddr,jdbcType=VARCHAR}, | 
|       </if> | 
|       <if test="cardnum != null"> | 
|         #{cardnum,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="clientid != null"> | 
|         #{clientid,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="money != null"> | 
|         #{money,jdbcType=FLOAT}, | 
|       </if> | 
|       <if test="state != null"> | 
|         #{state,jdbcType=TINYINT}, | 
|       </if> | 
|       <if test="originalCardId != null"> | 
|         #{originalCardId,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="createdt != null"> | 
|         #{createdt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="replacedt != null"> | 
|         #{replacedt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="rechargedt != null"> | 
|         #{rechargedt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="lossdtdt != null"> | 
|         #{lossdtdt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="canceldt != null"> | 
|         #{canceldt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="unlockdt != null"> | 
|         #{unlockdt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="reversaldt != null"> | 
|         #{reversaldt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="refunddt != null"> | 
|         #{refunddt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="consumedt != null"> | 
|         #{consumedt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="lastoper != null"> | 
|         #{lastoper,jdbcType=TINYINT}, | 
|       </if> | 
|       <if test="remarks != null"> | 
|         #{remarks,jdbcType=VARCHAR}, | 
|       </if> | 
|     </trim> | 
|   </insert> | 
|   <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard"> | 
|     <!--@mbg.generated--> | 
|     update se_client_card | 
|     <set> | 
|       <if test="cardaddr != null"> | 
|         cardAddr = #{cardaddr,jdbcType=VARCHAR}, | 
|       </if> | 
|       <if test="cardnum != null"> | 
|         cardNum = #{cardnum,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="clientid != null"> | 
|         clientId = #{clientid,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="money != null"> | 
|         money = #{money,jdbcType=FLOAT}, | 
|       </if> | 
|       <if test="state != null"> | 
|         `state` = #{state,jdbcType=TINYINT}, | 
|       </if> | 
|       <if test="originalCardId != null"> | 
|         `original_card_id` = #{originalCardId,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="createdt != null"> | 
|         createDt = #{createdt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="replacedt != null"> | 
|         replaceDt = #{replacedt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="rechargedt != null"> | 
|         rechargeDt = #{rechargedt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="lossdtdt != null"> | 
|         lossDtDt = #{lossdtdt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="canceldt != null"> | 
|         cancelDt = #{canceldt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="unlockdt != null"> | 
|         unlockDt = #{unlockdt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="reversaldt != null"> | 
|         reversalDt = #{reversaldt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="refunddt != null"> | 
|         refundDt = #{refunddt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="consumedt != null"> | 
|         consumeDt = #{consumedt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="lastoper != null"> | 
|         lastOper = #{lastoper,jdbcType=TINYINT}, | 
|       </if> | 
|       <if test="remarks != null"> | 
|         remarks = #{remarks,jdbcType=VARCHAR}, | 
|       </if> | 
|     </set> | 
|     where id = #{id,jdbcType=BIGINT} | 
|   </update> | 
|   <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard"> | 
|     <!--@mbg.generated--> | 
|     update se_client_card | 
|     set cardAddr = #{cardaddr,jdbcType=VARCHAR}, | 
|       cardNum = #{cardnum,jdbcType=BIGINT}, | 
|       clientId = #{clientid,jdbcType=BIGINT}, | 
|       money = #{money,jdbcType=FLOAT}, | 
|       `state` = #{state,jdbcType=TINYINT}, | 
|       original_card_id = #{originalCardId,jdbcType=BIGINT}, | 
|       createDt = #{createdt,jdbcType=TIMESTAMP}, | 
|       replaceDt = #{replacedt,jdbcType=TIMESTAMP}, | 
|       rechargeDt = #{rechargedt,jdbcType=TIMESTAMP}, | 
|       lossDtDt = #{lossdtdt,jdbcType=TIMESTAMP}, | 
|       cancelDt = #{canceldt,jdbcType=TIMESTAMP}, | 
|       unlockDt = #{unlockdt,jdbcType=TIMESTAMP}, | 
|       reversalDt = #{reversaldt,jdbcType=TIMESTAMP}, | 
|       refundDt = #{refunddt,jdbcType=TIMESTAMP}, | 
|       consumeDt = #{consumedt,jdbcType=TIMESTAMP}, | 
|       lastOper = #{lastoper,jdbcType=TINYINT}, | 
|       remarks = #{remarks,jdbcType=VARCHAR} | 
|     where id = #{id,jdbcType=BIGINT} | 
|   </update> | 
|   | 
|   <!--根据农户主键获取水卡列表--> | 
|   <select id="getCardInfoByClientId" resultType="com.dy.pipIrrGlobal.voSe.VoCardInfo"> | 
|     SELECT | 
|         cardNum, | 
|         '用户卡' AS cardType, | 
|         money, | 
|         (CASE | 
|             WHEN state = 1 THEN "正常" | 
|             WHEN state = 2 THEN "已注销" | 
|             ELSE "已挂失" | 
|         END) AS state | 
|     FROM se_client_card | 
|     WHERE clientId = ${clientId} | 
|   </select> | 
|   | 
|   <!--根据水卡编号获取操作记录列表--> | 
|   <select id="getOperateRecordsByCardNum" resultType="java.util.HashMap"> | 
|     SELECT * FROM v_operate WHERE cardNum = ${cardNum} | 
|   </select> | 
|   | 
|   <!--根据水卡编号获取余额--> | 
|   <select id="getMoneyByCardNum" resultType="java.lang.Float"> | 
|     SELECT money FROM se_client_card WHERE cardNum = ${cardNum} | 
|   </select> | 
|   | 
|   <!--根据水卡编号获取充值总额--> | 
|   <select id="sumRechargeByCardNum" resultType="java.lang.Float"> | 
|     SELECT | 
|       SUM(his.amount) AS amount | 
|     FROM se_recharge_history his | 
|         INNER JOIN se_client_card card ON his.cardId = card.id | 
|     WHERE card.cardNum = ${cardNum} | 
|   </select> | 
|   | 
|   <!--根据水卡编号获取卡片状态:1-开卡,2-补卡,3-充值,4-挂失,5-注销,6-解锁,7-冲正,8-消费--> | 
|   <select id="getCardStateByCardNum" resultType="java.lang.String"> | 
| <!--    SELECT--> | 
| <!--      (CASE--> | 
| <!--         WHEN lastOper = 1 THEN "开卡"--> | 
| <!--         WHEN lastOper = 2 THEN "补卡"--> | 
| <!--         WHEN lastOper = 3 THEN "充值"--> | 
| <!--         WHEN lastOper = 4 THEN "挂失"--> | 
| <!--         WHEN lastOper = 5 THEN "注销"--> | 
| <!--         WHEN lastOper = 6 THEN "解锁"--> | 
| <!--         WHEN lastOper = 7 THEN "冲正"--> | 
| <!--         WHEN lastOper = 8 THEN "消费"--> | 
| <!--        END) AS stateName--> | 
| <!--    FROM se_client_card--> | 
| <!--    WHERE cardNum = ${cardNum}--> | 
|     SELECT | 
|         (CASE | 
|             WHEN state = 1 THEN '正常' | 
|             WHEN state = 2 THEN '已注销' | 
|             WHEN state = 3 THEN '已挂失' | 
|         END) AS stateName | 
|     FROM se_client_card | 
|     WHERE cardNum = ${cardNum} | 
|   </select> | 
|   | 
|   <!--根据指定条件获取水卡列表记录数,应用程序使用--> | 
|   <select id="getCardsCount" parameterType="java.util.Map" resultType="java.lang.Long"> | 
|     SELECT | 
|         COUNT(*) AS recordCount | 
|     FROM se_client_card card | 
|         INNER JOIN se_client cli ON card.clientId = cli.id | 
|     <where> | 
|       <if test = "clientNum != null and clientNum !=''"> | 
|         AND cli.clientNum like CONCAT('%',#{clientNum},'%') | 
|       </if> | 
|   | 
|       <if test = "clientName != null and clientName !=''"> | 
|         AND cli.name like CONCAT('%',#{clientName},'%') | 
|       </if> | 
|   | 
|       <if test = "cardNum != null and cardNum !=''"> | 
|         AND card.cardNum like CONCAT('%',#{cardNum},'%') | 
|       </if> | 
|     </where> | 
|   </select> | 
|   | 
|   <!--根据指定条件获取水卡列表,应用程序使用--> | 
|   <select id="getCards" resultType="com.dy.pipIrrGlobal.voSe.VoCards"> | 
|     SELECT | 
|         cli.clientNum, | 
|         cli.name AS clientName, | 
|         card.cardNum, | 
|         cli.phone, | 
|         cli.idCard, | 
|         card.state AS cardState, | 
|         (CASE | 
|             WHEN card.state = 1 THEN '正常' | 
|             WHEN card.state = 2 THEN '已注销' | 
|             WHEN card.state = 3 THEN '已挂失' | 
|         End) AS stateName, | 
|         '农户卡' AS cardType, | 
|         FORMAT(card.money, 2) AS money | 
|     FROM se_client_card card | 
|         INNER JOIN se_client cli ON card.clientId = cli.id | 
|     <where> | 
|       <if test = "clientNum != null and clientNum !=''"> | 
|         AND cli.clientNum like CONCAT('%',#{clientNum},'%') | 
|       </if> | 
|   | 
|       <if test = "clientName != null and clientName !=''"> | 
|         AND cli.name like CONCAT('%',#{clientName},'%') | 
|       </if> | 
|   | 
|       <if test = "cardNum != null and cardNum !=''"> | 
|         AND card.cardNum like CONCAT('%',#{cardNum},'%') | 
|       </if> | 
|     </where> | 
|     ORDER BY card.id | 
|     <trim prefix="limit " > | 
|       <if test="start != null and count != null"> | 
|         #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} | 
|       </if> | 
|     </trim> | 
|   </select> | 
|   | 
|   <!--获取已挂失未补卡的记录数量--> | 
|   <select id="getUnreplacedRecordCount" resultType="java.lang.Long"> | 
|     SELECT | 
|         COUNT(*) AS recordCount | 
|     FROM se_client_card card | 
|            INNER JOIN se_client cli ON card.clientId = cli.id | 
|     WHERE card.state = 3 AND NOT EXISTS (SELECT * FROM se_client_card card2 WHERE card2.original_card_id = card.cardNum) | 
|   </select> | 
|   | 
|   <!--获取已挂失未补卡的记录--> | 
|   <select id="getUnreplaced" resultType="com.dy.pipIrrGlobal.voSe.VoCards"> | 
|     SELECT | 
|         cli.clientNum, | 
|         cli.name AS clientName, | 
|         card.cardNum, | 
|         cli.phone, | 
|         cli.idCard, | 
|         card.state AS cardState, | 
|         (CASE | 
|             WHEN card.state = 1 THEN '正常' | 
|             WHEN card.state = 2 THEN '已注销' | 
|             WHEN card.state = 3 THEN '已挂失' | 
|         End) AS stateName, | 
|         '农户卡' AS cardType, | 
|         FORMAT(card.money,2) AS money | 
|     FROM se_client_card card | 
|         INNER JOIN se_client cli ON card.clientId = cli.id | 
|     WHERE card.state = 3 AND NOT EXISTS (SELECT * FROM se_client_card card2 WHERE card2.original_card_id = card.cardNum) | 
|     ORDER BY card.id | 
|     <trim prefix="limit " > | 
|       <if test="start != null and count != null"> | 
|         #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} | 
|       </if> | 
|     </trim> | 
|   </select> | 
|   | 
|   <!--判断指定水卡是否为挂失状态且无补卡记录--> | 
|   <select id="isLostAndUnreplaced" resultType="java.lang.Integer"> | 
|     SELECT | 
|         COUNT(*) AS recordCount | 
|     FROM se_client_card card | 
|         INNER JOIN se_client_card card2 ON card2.original_card_id = card.cardNum | 
|     <where> | 
|       AND card.state = 3 | 
|       <if test = "cardNum != null and cardNum > 0"> | 
|         AND card.cardNum = #{cardNum} | 
|       </if> | 
|     </where> | 
|   </select> | 
| </mapper> |