From 20afccf343cd9c2f8efb1a20a0e92d4844a4adfa Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期五, 06 六月 2025 17:30:44 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml |  600 ++++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 406 insertions(+), 194 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
index 71d1989..a6c5b32 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
@@ -11,7 +11,7 @@
     <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="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" />
@@ -23,11 +23,13 @@
     <result column="consumeDt" jdbcType="TIMESTAMP" property="consumedt" />
     <result column="lastOper" jdbcType="TINYINT" property="lastoper" />
     <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+    <result column="order_no" jdbcType="VARCHAR" property="orderNo" />
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, protocol, cardAddr, cardNum, clientId, money, `state`, original_card_id, createDt, replaceDt, rechargeDt,
-    lossDtDt, cancelDt, unlockDt, reversalDt, refundDt, consumeDt, lastOper, remarks
+    id, protocol, cardAddr, cardNum, clientId, money, `state`, original_card_id, createDt, 
+    replaceDt, rechargeDt, lossDtDt, cancelDt, unlockDt, reversalDt, refundDt, consumeDt, 
+    lastOper, remarks, order_no
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
@@ -41,69 +43,30 @@
     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,
-      protocol
-    FROM se_client_card card
-    INNER JOIN se_client cli ON card.clientId = cli.id
-    WHERE card.cardNum = #{cardNum}
-  </select>
-
-  <!-- 鏍规嵁姘村崱缂栧彿鑾峰彇姘村崱瀵瑰簲鐨勫啘鎴穒d鍜屽鍚� -->
-  <select id="getClientIdAndNameByCardAddrAndCardNo" resultType="java.util.Map">
-    SELECT
-    cli.id AS clientId,
-    cli.name AS clientName
-    FROM se_client_card card
-    INNER JOIN se_client cli ON card.clientId = cli.id
-    WHERE card.cardAddr = #{cardAddr} and  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">
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard">
     <!--@mbg.generated-->
-    insert into se_client_card (id, protocol, cardAddr, cardNum, clientId,
-      money, `state`, original_card_id, createDt,
+    insert into se_client_card (id, protocol, cardAddr, 
+      cardNum, clientId, money, 
+      `state`, original_card_id, createDt, 
       replaceDt, rechargeDt, lossDtDt, 
-      cancelDt, unlockDt, reversalDt, refundDt,
-      consumeDt, lastOper, remarks
-      )
-    values (#{id,jdbcType=BIGINT}, #{protocol,jdbcType=VARCHAR}, #{cardaddr,jdbcType=VARCHAR}, #{cardnum,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT},
-      #{money,jdbcType=FLOAT}, #{state,jdbcType=TINYINT}, #{originalCardId,jdbcType=BIGINT}, #{createdt,jdbcType=TIMESTAMP},
+      cancelDt, unlockDt, reversalDt, 
+      refundDt, consumeDt, lastOper, 
+      remarks, order_no)
+    values (#{id,jdbcType=BIGINT}, #{protocol,jdbcType=VARCHAR}, #{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}
-      )
-
+      #{canceldt,jdbcType=TIMESTAMP}, #{unlockdt,jdbcType=TIMESTAMP}, #{reversaldt,jdbcType=TIMESTAMP}, 
+      #{refunddt,jdbcType=TIMESTAMP}, #{consumedt,jdbcType=TIMESTAMP}, #{lastoper,jdbcType=TINYINT}, 
+      #{remarks,jdbcType=VARCHAR}, #{orderNo,jdbcType=VARCHAR})
   </insert>
-  <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard" useGeneratedKeys="true">
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard">
     <!--@mbg.generated-->
     insert into se_client_card
     <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
       <if test="protocol != null">
         protocol,
       </if>
@@ -158,8 +121,14 @@
       <if test="remarks != null">
         remarks,
       </if>
+      <if test="orderNo != null">
+        order_no,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
       <if test="protocol != null">
         #{protocol,jdbcType=VARCHAR},
       </if>
@@ -214,6 +183,9 @@
       <if test="remarks != null">
         #{remarks,jdbcType=VARCHAR},
       </if>
+      <if test="orderNo != null">
+        #{orderNo,jdbcType=VARCHAR},
+      </if>
     </trim>
   </insert>
   <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard">
@@ -239,7 +211,7 @@
         `state` = #{state,jdbcType=TINYINT},
       </if>
       <if test="originalCardId != null">
-        `original_card_id` = #{originalCardId,jdbcType=BIGINT},
+        original_card_id = #{originalCardId,jdbcType=BIGINT},
       </if>
       <if test="createdt != null">
         createDt = #{createdt,jdbcType=TIMESTAMP},
@@ -274,14 +246,17 @@
       <if test="remarks != null">
         remarks = #{remarks,jdbcType=VARCHAR},
       </if>
+      <if test="orderNo != null">
+        order_no = #{orderNo,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 protocol = #{protocol,jdbcType=VARCHAR}
-    cardAddr = #{cardaddr,jdbcType=VARCHAR},
+    set protocol = #{protocol,jdbcType=VARCHAR},
+      cardAddr = #{cardaddr,jdbcType=VARCHAR},
       cardNum = #{cardnum,jdbcType=BIGINT},
       clientId = #{clientid,jdbcType=BIGINT},
       money = #{money,jdbcType=FLOAT},
@@ -297,130 +272,231 @@
       refundDt = #{refunddt,jdbcType=TIMESTAMP},
       consumeDt = #{consumedt,jdbcType=TIMESTAMP},
       lastOper = #{lastoper,jdbcType=TINYINT},
-      remarks = #{remarks,jdbcType=VARCHAR}
+      remarks = #{remarks,jdbcType=VARCHAR},
+      order_no = #{orderNo,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 "姝e父"
-            WHEN state = 2 THEN "宸叉敞閿�"
-            ELSE "宸叉寕澶�"
-        END) AS state
+  <!--渚濇嵁姘村崱鍦板潃鑾峰彇姘村崱缂栧彿锛�12鏈�19鏃ュ簾寮冿級-->
+  <!--2024-06-30鍙栨秷搴熷純锛屾仮澶嶄娇鐢�-->
+  <select id="getCardIdByAddr" resultType="java.lang.Long">
+    SELECT id AS cardId
     FROM se_client_card
-    WHERE clientId = ${clientId}
+    WHERE cardAddr = #{cardAddr}
+    ORDER BY id DESC
+    LIMIT 1
+  </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,
+    protocol
+    FROM se_client_card card
+    INNER JOIN se_client cli ON card.clientId = cli.id
+    WHERE card.cardNum = #{cardNum}
+  </select>
+
+  <!-- 鏍规嵁姘村崱缂栧彿鑾峰彇姘村崱瀵瑰簲鐨勫啘鎴穒d鍜屽鍚� -->
+  <select id="getClientIdAndNameByCardAddrAndCardNo" resultType="java.util.Map">
+    SELECT cli.id   AS clientId,
+    cli.name AS clientName,
+    cli.address AS clientAddress
+    FROM se_client_card card
+    INNER JOIN se_client cli ON card.clientId = cli.id
+    WHERE card.cardAddr = #{cardAddr}
+    and card.cardNum = #{cardNum}
+  </select>
+
+
+  <!-- 鏍规嵁姘村崱缂栧彿鑾峰彇姘村崱 -->
+  <select id="getCardsByAddrAndNum" resultType="com.dy.pipIrrGlobal.voSe.VoCardInfo1">
+    SELECT id,
+    money
+    FROM se_client_card
+    WHERE cardAddr = #{cardAddr}
+    and 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>
+
+  <update id="updateMoney">
+    update se_client_card
+    set money = #{money,jdbcType=FLOAT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <!--鏍规嵁鍐滄埛涓婚敭鑾峰彇姘村崱鍒楄〃锛堢墿鐞嗗崱+铏氭嫙鍗★級-->
+  <select id="getCardInfoByClientId" resultType="com.dy.pipIrrGlobal.voSe.VoCardInfo">
+    SELECT *
+    FROM (SELECT
+    '鐗╃悊鍗�' AS cardType,
+    card.cardNum AS cardNum,
+    card.money   AS money,
+    (CASE
+    WHEN card.state = 1 THEN '姝e父'
+    WHEN card.state = 2 THEN '宸叉敞閿�'
+    ELSE '宸叉寕澶�'
+    END) AS state
+    FROM se_client_card card
+    INNER JOIN se_client cli ON cli.id = card.clientId
+    WHERE state != 4 AND card.clientId = #{clientId,jdbcType=BIGINT}
+    UNION ALL
+    SELECT
+    '铏氭嫙鍗�' AS cardType,
+    vc.vc_num AS cardNum,
+    ROUND(vc.money /100, 2)  AS money,
+    (CASE
+    WHEN vc.in_use = 0 THEN '鏈娇鐢�'
+    WHEN vc.in_use = 1 THEN '浣跨敤涓�'
+    END) AS state
+    FROM se_virtual_card vc
+    INNER JOIN se_client cli ON cli.id = vc.client_id
+    WHERE vc.state = 1 AND vc.client_id = #{clientId,jdbcType=BIGINT}
+    ) card
+    ORDER BY card.Money DESC, card.State DESC
   </select>
 
   <!--鏍规嵁姘村崱缂栧彿鑾峰彇鎿嶄綔璁板綍鍒楄〃-->
   <select id="getOperateRecordsByCardNum" resultType="java.util.HashMap">
-    SELECT * FROM v_operate WHERE cardNum = ${cardNum}
+    SELECT
+    ope.id AS orderNumber,
+    cli.villageId,
+    cli.districtTitle,
+    cli.clientNum,
+    cli.`name`,
+    card.cardNum,
+    cli.idCard,
+    cli.phone,
+    IFNULL(ope.money,0) AS money,
+    IFNULL(ope.gift,0) AS gift,
+    IFNULL(ope.card_cost,0) AS cardCost,
+    IFNULL((ope.money + ope.trade_amount + ope.gift),0) AS afterRecharge,
+    ope.payment_id AS paymentId,
+    pay.name AS paymentMethod,
+    CASE
+    WHEN ope.operate_type = 1 THEN '寮�鍗�'
+    WHEN ope.operate_type = 2 THEN '鍏呭��'
+    WHEN ope.operate_type = 3 THEN '閿�鍗�'
+    END AS operateType,
+    ope.operate_dt AS operateDt,
+    user.name AS operatorName
+    FROM se_card_operate ope
+    LEFT JOIN se_client cli ON cli.id = ope.client_id
+    LEFT JOIN se_client_card card ON card.id = ope.card_id
+    LEFT JOIN se_payment_method pay ON pay.id = ope.payment_id
+    LEFT JOIN ba_user user ON user.id = ope.operator
+    WHERE ope.operate_valid = 2 AND ope.operate_type in (1,2,3) AND cardNum = #{cardNum,jdbcType=BIGINT}
+    <!--        SELECT *-->
+    <!--        FROM v_operate-->
+    <!--        WHERE cardNum = #{cardNum,jdbcType=BIGINT}-->
   </select>
 
   <!--鏍规嵁姘村崱缂栧彿鑾峰彇浣欓-->
   <select id="getMoneyByCardNum" resultType="java.lang.Float">
-    SELECT money FROM se_client_card WHERE cardNum = ${cardNum}
+    SELECT money
+    FROM se_client_card
+    WHERE cardNum = #{cardNum,jdbcType=BIGINT}
   </select>
 
   <!--鏍规嵁姘村崱缂栧彿鑾峰彇鍏呭�兼�婚-->
   <select id="sumRechargeByCardNum" resultType="java.lang.Float">
-    SELECT
-      SUM(his.amount) AS amount
+    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}
+    INNER JOIN se_client_card card ON his.cardId = card.id
+    WHERE card.cardNum = #{cardNum,jdbcType=BIGINT}
   </select>
 
   <!--鏍规嵁姘村崱缂栧彿鑾峰彇鍗$墖鐘舵�侊細1-寮�鍗★紝2-琛ュ崱锛�3-鍏呭�硷紝4-鎸傚け锛�5-娉ㄩ攢锛�6-瑙i攣锛�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 "瑙i攣"-->
-<!--         WHEN lastOper = 7 THEN "鍐叉"-->
-<!--         WHEN lastOper = 8 THEN "娑堣垂"-->
-<!--        END) AS stateName-->
-<!--    FROM se_client_card-->
-<!--    WHERE cardNum = ${cardNum}-->
-    SELECT
-        (CASE
-            WHEN state = 1 THEN '姝e父'
-            WHEN state = 2 THEN '宸叉敞閿�'
-            WHEN state = 3 THEN '宸叉寕澶�'
-        END) AS stateName
+    <!--    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 "瑙i攣"-->
+    <!--         WHEN lastOper = 7 THEN "鍐叉"-->
+    <!--         WHEN lastOper = 8 THEN "娑堣垂"-->
+    <!--        END) AS stateName-->
+    <!--    FROM se_client_card-->
+    <!--    WHERE cardNum = ${cardNum}-->
+    SELECT (CASE
+    WHEN state = 1 THEN '姝e父'
+    WHEN state = 2 THEN '宸叉敞閿�'
+    WHEN state = 3 THEN '宸叉寕澶�'
+    WHEN state = 4 THEN '鏃犳晥鍗$墖'
+    END) AS stateName
     FROM se_client_card
-    WHERE cardNum = ${cardNum}
+    WHERE cardNum = #{cardNum,jdbcType=BIGINT}
   </select>
 
   <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇姘村崱鍒楄〃璁板綍鏁帮紝搴旂敤绋嬪簭浣跨敤-->
   <select id="getCardsCount" parameterType="java.util.Map" resultType="java.lang.Long">
-    SELECT
-        COUNT(*) AS recordCount
+    SELECT COUNT(*) AS recordCount
     FROM se_client_card card
-      INNER JOIN se_client cli ON card.clientId = cli.id
+    LEFT JOIN se_client cli ON card.clientId = cli.id
     <where>
       AND card.state = 1
-      <if test = "clientNum != null and clientNum !=''">
-        AND cli.clientNum like CONCAT('%',#{clientNum},'%')
+      <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 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 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,
-        cardNum,
-<!--        CASE-->
-<!--            WHEN card.cardNum LIKE '10%' THEN CONCAT(SUBSTRING(card.cardNum, 7, 6),SUBSTRING(card.cardNum, 14, 4))-->
-<!--            ELSE card.cardNum-->
-<!--        END AS cardNum,-->
-        cli.phone,
-        cli.idCard,
-        card.state AS cardState,
-<!--        (CASE-->
-<!--            WHEN card.state = 1 THEN '姝e父'-->
-<!--            WHEN card.state = 2 THEN '宸叉敞閿�'-->
-<!--            WHEN card.state = 3 THEN '宸叉寕澶�'-->
-<!--        End) AS stateName,-->
-        '姝e父' AS stateName,
-        '鍐滄埛鍗�' AS cardType,
-        FORMAT(card.money, 2) AS money
+    SELECT cli.clientNum,
+    cli.name AS clientName,
+    cardNum,
+    cli.phone,
+    cli.idCard,
+    card.state AS cardState,
+    '姝e父' 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
+    LEFT JOIN se_client cli ON card.clientId = cli.id
     <where>
       AND card.state = 1
-      <if test = "clientNum != null and clientNum !=''">
-        AND cli.clientNum like CONCAT('%',#{clientNum},'%')
+      <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 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 test="cardNum != null and cardNum != ''">
+        AND card.cardNum like CONCAT('%', #{cardNum}, '%')
       </if>
     </where>
     ORDER BY card.id
-    <trim prefix="limit " >
+    <trim prefix="limit ">
       <if test="start != null and count != null">
         #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
       </if>
@@ -429,48 +505,44 @@
 
   <!--鑾峰彇宸叉寕澶辨湭琛ュ崱鐨勮褰曟暟閲�-->
   <select id="getUnreplacedRecordCount" resultType="java.lang.Long">
-    SELECT
-        COUNT(*) AS recordCount
+    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)
+    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,
-        cardNum,
-<!--        CASE-->
-<!--          WHEN card.cardNum LIKE '10%' THEN CONCAT(SUBSTRING(card.cardNum, 7, 6),SUBSTRING(card.cardNum, 14, 4))-->
-<!--          ELSE card.cardNum-->
-<!--        END AS cardNum,-->
-        cli.phone,
-        cli.idCard,
-        card.state AS cardState,
-        '宸叉寕澶�' AS stateName,
-        '鍐滄埛鍗�' AS cardType,
-        FORMAT(card.money,2) AS money
+    cli.clientNum,
+    cli.name AS clientName,
+    cardNum,
+    cli.phone,
+    cli.idCard,
+    card.state AS cardState,
+    '宸叉寕澶�' 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.id)
+    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.id)
     ORDER BY card.id
-    <trim prefix="limit " >
+    <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="getLostCount" resultType="java.lang.Integer">
-    SELECT
-        COUNT(*) AS recordCount
+    SELECT COUNT(*) AS recordCount
     FROM se_client_card card
     <where>
       AND card.state = 3
-      <if test = "cardNum != null and cardNum > 0">
+      <if test="cardNum != null and cardNum > 0">
         AND card.cardNum = #{cardNum}
       </if>
     </where>
@@ -478,65 +550,62 @@
 
   <!--鏍规嵁鎸囧畾姘村崱缂栧彿鑾峰彇宸茶ˉ鍗℃暟閲忥紙琛ュ崱銆佽В閿佷娇鐢級-->
   <select id="getReplacedCount" resultType="java.lang.Integer">
-    SELECT
-        COUNT(*) AS recordCount
+    SELECT COUNT(*) AS recordCount
     FROM se_client_card card
-        INNER JOIN se_client_card card2 ON card2.original_card_id = card.id
+    INNER JOIN se_client_card card2 ON card2.original_card_id = card.id
     <where>
-      <if test = "cardNum != null and cardNum > 0">
+      <if test="cardNum != null and cardNum > 0">
         AND card.cardNum = #{cardNum}
       </if>
     </where>
   </select>
   <!--鏍规嵁鍐滄埛濮撳悕鍜屾墜鏈哄彿鑾峰彇姘村崱鍒楄〃璁板綍鏁帮紝搴旂敤绋嬪簭浣跨敤-->
   <select id="getCardsByClientNameAndPhoneCount" resultType="java.lang.Long">
-    SELECT
-      COUNT(*) AS recordCount
+    SELECT COUNT(*) AS recordCount
     FROM se_client_card card
     INNER JOIN se_client cli ON card.clientId = cli.id
     <where>
       card.state = 1
-      <if test = "clientName != null and clientName !=''">
-        AND cli.name like CONCAT('%',#{clientName},'%')
+      <if test="clientName != null and clientName != ''">
+        AND cli.name like CONCAT('%', #{clientName}, '%')
       </if>
 
-      <if test = "phone != null and phone !=''">
-        AND cli.phone like CONCAT('%',#{phone},'%')
+      <if test="phone != null and phone != ''">
+        AND cli.phone like CONCAT('%', #{phone}, '%')
       </if>
     </where>
-    </select>
+  </select>
   <!--鏍规嵁鍐滄埛濮撳悕鍜屾墜鏈哄彿鑾峰彇姘村崱鍒楄〃锛屽簲鐢ㄧ▼搴忎娇鐢�-->
   <select id="getCardsByClientNameAndPhone" resultType="com.dy.pipIrrGlobal.voSe.VoCards2">
-    SELECT
-    card.id AS clientCardId,
-    cli.id AS clientId,
+    SELECT card.id               AS clientCardId,
+    cli.id                AS clientId,
     cli.clientNum,
-    cli.name AS clientName,
+    cli.name              AS clientName,
     card.cardNum,
     cli.phone,
     cli.idCard,
-    card.state AS cardState,
+    card.state            AS cardState,
     (CASE
     WHEN card.state = 1 THEN '姝e父'
     WHEN card.state = 2 THEN '宸叉敞閿�'
     WHEN card.state = 3 THEN '宸叉寕澶�'
-    End) AS stateName,
-    '鍐滄埛鍗�' AS cardType,
+    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
+    LEFT JOIN se_client cli ON card.clientId = cli.id
     <where>
       card.state = 1
-      <if test = "clientName != null and clientName !=''">
-        AND cli.name like CONCAT('%',#{clientName},'%')
+      <if test="clientName != null and clientName != ''">
+        AND cli.name like CONCAT('%', #{clientName}, '%')
       </if>
 
-      <if test = "phone != null and phone !=''">
-        AND cli.phone like CONCAT('%',#{phone},'%')
+      <if test="phone != null and phone != ''">
+        AND cli.phone like CONCAT('%', #{phone}, '%')
       </if>
     </where>
     ORDER BY card.id
-    <trim prefix="limit " >
+    <trim prefix="limit ">
       <if test="start != null and count != null">
         #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
       </if>
@@ -544,29 +613,172 @@
   </select>
   <!--鏍规嵁鍐滄埛ID鏌ヨ姝e父鐘舵�佺殑姘村崱鍒楄〃,灏忕▼搴忎娇鐢�-->
   <select id="getCardsByClientID" resultType="com.dy.pipIrrGlobal.voWe.VoCards3">
-    SELECT
-    card.id AS clientCardId,
-    cli.id AS clientId,
+    SELECT card.id               AS clientCardId,
+    cli.id                AS clientId,
     cli.clientNum,
-    cli.name AS clientName,
+    cli.name              AS clientName,
     card.cardNum,
     cli.phone,
     cli.idCard,
-    card.state AS cardState,
+    card.state            AS cardState,
     (CASE
     WHEN card.state = 1 THEN '姝e父'
     WHEN card.state = 2 THEN '宸叉敞閿�'
     WHEN card.state = 3 THEN '宸叉寕澶�'
-    End) AS stateName,
-    '鍐滄埛鍗�' AS cardType,
+    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 = 1
-      AND cli.id like CONCAT('%',#{clientId},'%')
+    where card.state = 1
+    AND cli.id like CONCAT('%', #{clientId}, '%')
 
 
     ORDER BY card.id
   </select>
+  <!--褰撳墠浣欓鎬婚噺锛堢墿鐞嗗崱锛�-->
+  <select id="getTotalMoneyIcCards" resultType="java.lang.Double">
+    SELECT IFNULL(SUM(money), 0) AS totalMoney
+    FROM `se_client_card`
+    WHERE state = 1
+  </select>
+
+  <!--鏍规嵁姘村崱鍦板潃鑾峰彇姘村崱鏁伴噺锛屾棤鏁堝崱鐗囨帓闄ゅ湪澶�-->
+  <select id="getCountByCardAddr" resultType="java.lang.Long">
+    SELECT COUNT(*) AS recordCount
+    FROM se_client_card
+    WHERE cardAddr = #{cardAddr} AND se_client_card.state != 4
+  </select>
+
+  <!--鏍规嵁姘村崱鍦板潃鑾峰彇鎸囧畾鐘舵�佺殑姘村崱鏁伴噺-->
+  <select id="getCountByCardAddrAndState" resultType="java.lang.Long">
+    SELECT COUNT(*) AS recordCount
+    FROM se_client_card
+    WHERE cardAddr = #{cardAddr}
+    AND state IN (1, 3)
+  </select>
+
+  <!--鑾峰彇鎸囧畾鏃堕棿娈垫按鍗′娇鐢ㄦ儏鍐佃褰曟暟閲�-->
+  <select id="getCardUsagesCount" resultType="com.dy.pipIrrGlobal.voSt.VoCardUsage">
+    SELECT
+    card.id as cardId,
+    cli.name AS clientName,
+    card.cardNum,
+    a.cl_ic_card_no,
+    card.money AS balance,
+    a.totalConsumption,
+    b.totalRecharge
+    FROM  se_client_card card
+    INNER JOIN se_client cli ON cli.id = card.clientId
+    LEFT JOIN  (
+    SELECT his.cl_ic_card_no, SUM(his.cl_this_money) AS totalConsumption
+    FROM rm_open_close_valve_history his
+    WHERE his.cl_dt BETWEEN #{timeStart} AND #{timeStop}
+    GROUP BY his.cl_ic_card_no
+    ) a ON  a.cl_ic_card_no = CAST(card.cardNum AS CHAR)
+    LEFT JOIN  (
+    SELECT rch.cardId,ROUND(SUM(rch.amount),2) as totalRecharge
+    FROM se_recharge_history rch
+    WHERE rch.operate_valid = 2  AND rch.operateDt BETWEEN #{timeStart} AND #{timeStop}
+    GROUP BY rch.cardId
+    ) b ON b.cardId = card.id
+    <where>
+      <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>
+
+      <if test="clientNum != null and clientNum != ''">
+        AND cli.clientNum like CONCAT('%', #{clientNum}, '%')
+      </if>
+    </where>
+  </select>
+
+  <!--鑾峰彇鎸囧畾鏃堕棿娈垫按鍗′娇鐢ㄦ儏鍐碉細鍏呭�煎悎璁°�佹秷璐瑰悎璁°�佷綑棰�-->
+  <select id="getCardUsages" resultType="com.dy.pipIrrGlobal.voSt.VoCardUsage">
+    SELECT
+    card.id as cardId,
+    cli.name AS clientName,
+    card.cardNum,
+    a.cl_ic_card_no,
+    card.money AS balance,
+    a.totalConsumption,
+    b.totalRecharge
+    FROM  se_client_card card
+    INNER JOIN se_client cli ON cli.id = card.clientId
+    LEFT JOIN  (
+    SELECT his.cl_ic_card_no, SUM(his.cl_this_money) AS totalConsumption
+    FROM rm_open_close_valve_history his
+    WHERE his.cl_dt BETWEEN #{timeStart} AND #{timeStop}
+    GROUP BY his.cl_ic_card_no
+    ) a ON  a.cl_ic_card_no = CAST(card.cardNum AS CHAR)
+    LEFT JOIN  (
+    SELECT rch.cardId,ROUND(SUM(rch.amount),2) as totalRecharge
+    FROM se_recharge_history rch
+    WHERE rch.operate_valid = 2  AND rch.operateDt BETWEEN #{timeStart} AND #{timeStop}
+    GROUP BY rch.cardId
+    ) b ON b.cardId = card.id
+    <where>
+      <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>
+
+      <if test="clientNum != null and clientNum != ''">
+        AND cli.clientNum like CONCAT('%', #{clientNum}, '%')
+      </if>
+    </where>
+    ORDER BY cli.name, card.cardNum
+    <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="getTotalRecharge" resultType="java.lang.Float">
+    SELECT ROUND(SUM(amount),2) AS totalRecharge
+    FROM se_recharge_history
+    WHERE operateDt BETWEEN #{timeStart} AND #{timeStop}
+  </select>
+
+  <!--鑾峰彇鎸囧畾鏃堕棿娈靛唴姘村崱娑堣垂鎬昏-->
+  <select id="getTotalConsumption" resultType="java.lang.Float">
+    SELECT ROUND(SUM(cl_this_money),2) AS totalConsumption
+    FROM rm_open_close_valve_history
+    WHERE cl_dt BETWEEN #{timeStart} AND #{timeStop}
+  </select>
+
+  <!--渚濇嵁姘村崱鍦板潃灏嗘渶鍚庝竴鏉℃棤鏁堢姸鎬佺殑鎸囧畾鎿嶄綔璁板綍鏀逛负鏈夋晥-->
+  <update id="turnCardValidByAddr">
+    UPDATE se_client_card
+    SET state = 1
+    WHERE id = (
+    SELECT id FROM (
+    SELECT id
+    FROM se_client_card
+    WHERE state = 4 AND cardAddr = #{cardAddr} AND lastOper  = #{operateType}
+    ORDER BY id DESC
+    LIMIT 1) AS subquery
+    );
+  </update>
+
+  <!--鍏呭�兼満鐢ㄦ牴鎹鍗曞彿灏嗘按鍗℃敼涓烘湁鏁�-->
+  <update id="turnCardValidByOrderNumber">
+    UPDATE se_client_card
+    SET state = 1
+    WHERE state = 4 AND order_no = #{orderNumber}
+  </update>
+
+  <!--鏍规嵁姘村崱ID鑾峰彇鍘熸按鍗D锛岃ˉ鍗¢�氱煡涓娇鐢�-->
+  <select id="getOriginalCardIdByCardId" resultType="java.lang.Long">
+    SELECT original_card_id AS originalCardId FROM se_client_card WHERE id = #{cardId};
+  </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0