<?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="protocol" jdbcType="VARCHAR" property="protocol"/>
|
<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,
|
protocol,
|
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日废弃)-->
|
<!--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日添加后废弃)-->
|
<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>
|
|
<!-- 根据水卡编号获取水卡对应的农户id和姓名 -->
|
<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>
|
|
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard">
|
<!--@mbg.generated-->
|
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},
|
#{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="id != null">
|
id,
|
</if>
|
<if test="protocol != null">
|
protocol,
|
</if>
|
<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="id != null">
|
#{id,jdbcType=BIGINT},
|
</if>
|
<if test="protocol != null">
|
#{protocol,jdbcType=VARCHAR},
|
</if>
|
<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="protocol != null">
|
protocol = #{protocol,jdbcType=VARCHAR},
|
</if>
|
<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 protocol = #{protocol,jdbcType=VARCHAR},
|
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>
|
<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 '正常'
|
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
|
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,jdbcType=BIGINT}
|
</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,jdbcType=BIGINT}
|
</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 '已挂失'
|
WHEN state = 4 THEN '无效卡片'
|
END) AS stateName
|
FROM se_client_card
|
WHERE cardNum = #{cardNum,jdbcType=BIGINT}
|
</select>
|
|
<!--根据指定条件获取水卡列表记录数,应用程序使用-->
|
<select id="getCardsCount" parameterType="java.util.Map" resultType="java.lang.Long">
|
SELECT COUNT(*) AS recordCount
|
FROM se_client_card card
|
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>
|
|
<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,
|
cardNum,
|
cli.phone,
|
cli.idCard,
|
card.state AS cardState,
|
'正常' AS stateName,
|
'农户卡' AS cardType,
|
FORMAT(card.money, 2) AS money
|
FROM se_client_card card
|
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>
|
|
<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,
|
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)
|
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="getLostCount" resultType="java.lang.Integer">
|
SELECT COUNT(*) AS recordCount
|
FROM se_client_card card
|
<where>
|
AND card.state = 3
|
<if test="cardNum != null and cardNum > 0">
|
AND card.cardNum = #{cardNum}
|
</if>
|
</where>
|
</select>
|
|
<!--根据指定水卡编号获取已补卡数量(补卡、解锁使用)-->
|
<select id="getReplacedCount" 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.id
|
<where>
|
<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
|
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>
|
|
<if test="phone != null and phone != ''">
|
AND cli.phone like CONCAT('%', #{phone}, '%')
|
</if>
|
</where>
|
</select>
|
<!--根据农户姓名和手机号获取水卡列表,应用程序使用-->
|
<select id="getCardsByClientNameAndPhone" resultType="com.dy.pipIrrGlobal.voSe.VoCards2">
|
SELECT card.id AS clientCardId,
|
cli.id AS clientId,
|
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
|
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>
|
|
<if test="phone != null and phone != ''">
|
AND cli.phone like CONCAT('%', #{phone}, '%')
|
</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>
|
<!--根据农户ID查询正常状态的水卡列表,小程序使用-->
|
<select id="getCardsByClientID" resultType="com.dy.pipIrrGlobal.voWe.VoCards3">
|
SELECT card.id AS clientCardId,
|
cli.id AS clientId,
|
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 = 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>
|
|
<!--根据水卡ID获取原水卡ID,补卡通知中使用-->
|
<select id="getOriginalCardIdByCardId" resultType="java.lang.Long">
|
SELECT original_card_id AS originalCardId FROM se_client_card WHERE id = #{cardId};
|
</select>
|
</mapper>
|