From 001f24d4efd7b818bc2224b976c82faf4f9e564c Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 01 十一月 2024 11:25:00 +0800
Subject: [PATCH] 1、通信协议要增加版本号(目的为远程升级准备),原来没有版本号的协议默认为版本号为1,所以调整了程序命名; 2、流浪控制器与控制器数据库表都增加了协议版本号字段; 3、VO中Double和Float类型的属性增加注解@JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" )
---
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml | 245 ++++++++++++++++++++++++++++++++++--------------
1 files changed, 174 insertions(+), 71 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 5f2f303..2753352 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
@@ -61,10 +61,13 @@
</delete>
<!--渚濇嵁姘村崱鍦板潃鑾峰彇姘村崱缂栧彿锛�12鏈�19鏃ュ簾寮冿級-->
+ <!--2024-06-30鍙栨秷搴熷純锛屾仮澶嶄娇鐢�-->
<select id="getCardIdByAddr" resultType="java.lang.Long">
SELECT id AS cardId
FROM se_client_card
WHERE cardAddr = #{cardAddr}
+ ORDER BY id DESC
+ LIMIT 1
</select>
<!--鏍规嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿紙12鏈�19鏃ユ坊鍔犲悗搴熷純锛�-->
@@ -346,47 +349,67 @@
<!--鏍规嵁鍐滄埛涓婚敭鑾峰彇姘村崱鍒楄〃锛堢墿鐞嗗崱+铏氭嫙鍗★級-->
<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 (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 card.clientId = #{clientId,jdbcType=BIGINT}
+ 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,
- vc.money AS money,
- (CASE
- WHEN vc.in_use = 0 THEN '鏈娇鐢�'
- WHEN vc.in_use = 1 THEN '浣跨敤涓�'
- END) AS state
+ 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.client_id = #{clientId,jdbcType=BIGINT}
- <!-- SELECT '铏氭嫙鍗�' AS cardType,-->
- <!-- virtualCard.vc_num AS CardNum,-->
- <!-- virtualCard.money AS vcMoney,-->
- <!-- (CASE-->
- <!-- WHEN virtualCard.in_use = 0 THEN '鏈娇鐢�'-->
- <!-- WHEN virtualCard.in_use = 1 THEN '浣跨敤涓�'-->
- <!-- END) AS State-->
- <!-- FROM se_client client-->
- <!-- LEFT JOIN se_virtual_card virtualCard ON client.id = virtualCard.client_id-->
- <!-- WHERE client.id = #{clientId,jdbcType=BIGINT}-->
+ 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,jdbcType=BIGINT}
+ 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>
<!--鏍规嵁姘村崱缂栧彿鑾峰彇浣欓-->
@@ -423,6 +446,7 @@
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,jdbcType=BIGINT}
@@ -432,7 +456,7 @@
<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
+ LEFT JOIN se_client cli ON card.clientId = cli.id
<where>
AND card.state = 1
<if test="clientNum != null and clientNum != ''">
@@ -452,25 +476,16 @@
<!--鏍规嵁鎸囧畾鏉′欢鑾峰彇姘村崱鍒楄〃锛屽簲鐢ㄧ▼搴忎娇鐢�-->
<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
+ 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 != ''">
@@ -504,23 +519,20 @@
<!--鑾峰彇宸叉寕澶辨湭琛ュ崱鐨勮褰�-->
<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
+ SELECT
+ 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
+ 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)
+ AND NOT EXISTS(SELECT * FROM se_client_card card2 WHERE card2.original_card_id = card.id)
ORDER BY card.id
<trim prefix="limit ">
<if test="start != null and count != null">
@@ -529,7 +541,7 @@
</trim>
</select>
- <!--鏍规嵁鎸囧畾姘村崱缂栧彿鑾峰彇鎸傚け浜嬭褰曟暟閲忥紙琛ュ崱銆佽В閿佷娇鐢級-->
+ <!--鏍规嵁鎸囧畾姘村崱缂栧彿鑾峰彇鎸傚け璁板綍鏁伴噺锛堣ˉ鍗°�佽В閿佷娇鐢級-->
<select id="getLostCount" resultType="java.lang.Integer">
SELECT COUNT(*) AS recordCount
FROM se_client_card card
@@ -556,7 +568,7 @@
<select id="getCardsByClientNameAndPhoneCount" resultType="java.lang.Long">
SELECT COUNT(*) AS recordCount
FROM se_client_card card
- INNER JOIN se_client cli ON card.clientId = cli.id
+ INNER JOIN se_client cli ON card.clientId = cli.id
<where>
card.state = 1
<if test="clientName != null and clientName != ''">
@@ -586,7 +598,7 @@
'鍐滄埛鍗�' 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 != ''">
@@ -636,11 +648,11 @@
WHERE state = 1
</select>
- <!--鏍规嵁姘村崱鍦板潃鑾峰彇姘村崱鏁伴噺-->
+ <!--鏍规嵁姘村崱鍦板潃鑾峰彇姘村崱鏁伴噺锛屾棤鏁堝崱鐗囨帓闄ゅ湪澶�-->
<select id="getCountByCardAddr" resultType="java.lang.Long">
SELECT COUNT(*) AS recordCount
FROM se_client_card
- WHERE cardAddr = #{cardAddr}
+ WHERE cardAddr = #{cardAddr} AND se_client_card.state != 4
</select>
<!--鏍规嵁姘村崱鍦板潃鑾峰彇鎸囧畾鐘舵�佺殑姘村崱鏁伴噺-->
@@ -650,4 +662,95 @@
WHERE cardAddr = #{cardAddr}
AND state IN (1, 3)
</select>
+
+ <!--鑾峰彇鎸囧畾鏃堕棿娈垫按鍗′娇鐢ㄦ儏鍐佃褰曟暟閲�-->
+ <select id="getCardUsagesCount" resultType="com.dy.pipIrrGlobal.voSt.VoCardUsage">
+ SELECT
+ cli.name AS clientName,
+ card.cardNum,
+ (SELECT ROUND(SUM(rch.amount),2) FROM se_recharge_history rch WHERE rch.cardId = card.id AND rch.operateDt BETWEEN #{timeStart} AND #{timeStop}) AS totalRecharge,
+ (SELECT ROUND(SUM(his.cl_this_money),2) FROM rm_open_close_valve_history his WHERE his.cl_ic_card_no = card.cardNum AND his.cl_dt BETWEEN #{timeStart} AND #{timeStop}) AS totalConsumption,
+ ROUND(card.money,2) AS balance
+ FROM se_client_card card
+ INNER JOIN se_client cli ON cli.id = card.clientId
+ INNER JOIN se_recharge_history rch ON rch.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
+ cli.name AS clientName,
+ card.cardNum,
+ (SELECT ROUND(SUM(rch.amount),2) FROM se_recharge_history rch WHERE rch.cardId = card.id AND rch.operateDt BETWEEN #{timeStart} AND #{timeStop}) AS totalRecharge,
+ (SELECT ROUND(SUM(his.cl_this_money),2) FROM rm_open_close_valve_history his WHERE his.cl_ic_card_no = card.cardNum AND his.cl_dt BETWEEN #{timeStart} AND #{timeStop}) AS totalConsumption,
+ ROUND(card.money,2) AS balance
+ FROM se_client_card card
+ INNER JOIN se_client cli ON cli.id = card.clientId
+ INNER JOIN se_recharge_history rch ON rch.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>
+
+ <!--鏍规嵁姘村崱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