From 844594bc560ba6c5dd7f92ce3301295fb980282a Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期四, 08 五月 2025 21:09:42 +0800
Subject: [PATCH] 充值机模块,获取农户及开卡三个接口
---
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/ActiveCard.java | 69 +
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/pom.xml | 138 +++
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermClient.java | 45 +
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/qo/QoClient.java | 25
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/application(233服务器).yml | 4
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java | 1
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/log4j2.yml | 80 ++
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientCtrl.java | 67 +
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java | 52 +
pipIrr-platform/pipIrr-global/src/main/resources/application-global(166web文件花生壳).yml | 4
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/application(121服务器).yml | 4
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java | 267 +++++++
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/test/java/com/dy/pipIrrTerminal/PipIrrWebTerminalApplicationTests.java | 13
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/config/WebFilterConfiguration.java | 52 +
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/CardStateENUM.java | 23
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientMapper.java | 22
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoRecharge.java | 73 +
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/.gitattributes | 2
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/application.yml | 3
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/mvnw | 259 ++++++
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCardOperate.java | 9
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/.gitignore | 33
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/config/WebListenerConfiguration.java | 35
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermRecharge.java | 36
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml | 488 ++++++------
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java | 10
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/OperateTypeENUM.java | 29
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml | 79 ++
pipIrr-platform/pipIrr-web/pom.xml | 1
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/mvnw.cmd | 149 +++
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/IcCardSv.java | 1
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/application-self.yml | 19
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/.mvn/wrapper/maven-wrapper.properties | 19
pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml | 4
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientSv.java | 57 +
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/PipIrrTerminalApplication.java | 28
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/LastOperateENUM.java | 29
37 files changed, 1,981 insertions(+), 248 deletions(-)
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java
index f0c50d1..e20d911 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java
@@ -1,11 +1,9 @@
package com.dy.pipIrrGlobal.daoSe;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoSe.SeCardOperate;
import com.dy.pipIrrGlobal.voSe.*;
import com.dy.pipIrrGlobal.voSt.VoClientOpenCardCount;
import com.dy.pipIrrGlobal.voSt.VoClientRechargeTotal;
-import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -13,13 +11,11 @@
/**
* @author ZhuBaoMin
- * @date 2024-02-02 16:00
- * @LastEditTime 2024-02-02 16:00
+ * @date 2025-05-08 17:15
+ * @LastEditTime 2025-05-08 17:15
* @Description
*/
-
-@Mapper
-public interface SeCardOperateMapper extends BaseMapper<SeCardOperate> {
+public interface SeCardOperateMapper {
int deleteByPrimaryKey(Long id);
int insert(SeCardOperate record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientMapper.java
index 67e5da8..f5eff16 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientMapper.java
@@ -4,6 +4,7 @@
import com.dy.pipIrrGlobal.pojoSe.SeClient;
import com.dy.pipIrrGlobal.voSe.VoClient;
import com.dy.pipIrrGlobal.voSe.VoClientWechat;
+import com.dy.pipIrrGlobal.voSe.VoTermClient;
import com.dy.pipIrrGlobal.voSt.VoCardUsage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -127,4 +128,25 @@
* @return
*/
List<VoCardUsage> getClientUsages(Map<String, Object> params);
+
+ /**
+ * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍐滄埛璁板綍鏁癬鍏呭�兼満
+ * @param params
+ * @return
+ */
+ Long getTermClientCount(Map<?, ?> params);
+
+ /**
+ * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍐滄埛鏁版嵁_鍏呭�兼満
+ * @param params
+ * @return
+ */
+ List<VoTermClient> getTermClients(Map<?, ?> params);
+
+ /**
+ * 鏍规嵁鍐滄埛ID鑾峰彇涓�涓啘鎴锋暟鎹甠鍏呭�兼満
+ * @param clientId
+ * @return
+ */
+ VoTermClient getTermOneClient(@Param("clientId") Long clientId);
}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCardOperate.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCardOperate.java
index 428f765..a402151 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCardOperate.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCardOperate.java
@@ -17,8 +17,8 @@
/**
* @author ZhuBaoMin
- * @date 2024-01-18 19:10
- * @LastEditTime 2024-02-02 16:00
+ * @date 2025-05-08 17:15
+ * @LastEditTime 2025-05-08 17:15
* @Description
*/
@@ -152,6 +152,11 @@
private Date operateDt;
/**
+ * 鎿嶄綔璁㈠崟鍙�
+ */
+ private String orderNo;
+
+ /**
* 鎿嶄綔鏄惁鏈夋晥
*/
@Length(message = "鎿嶄綔鏈夋晥鎬т笉澶т簬{max}锛屼笉灏忎簬{min}", min = 1, max = 2)
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermClient.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermClient.java
new file mode 100644
index 0000000..76f7b7a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermClient.java
@@ -0,0 +1,45 @@
+package com.dy.pipIrrGlobal.voSe;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-05-07 16:57
+ * @LastEditTime 2025-05-07 16:57
+ * @Description 鍏呭�兼満鍐滄埛瑙嗗浘瀵硅薄
+ */
+
+@Data
+@JsonPropertyOrder({"clientId", "clientNum", "name", "districtNum", "phone", "idCard", "villageName", "address", "cardCount", "operateDt"})
+public class VoTermClient {
+ public static final long serialVersionUID = 202505071705001L;
+
+ @JSONField(serializeUsing= ObjectWriterImplToString.class)
+ private Long clientId;
+
+ private String clientNum;
+
+ private String name;
+
+ @JSONField(serializeUsing= ObjectWriterImplToString.class)
+ private Long districtNum;
+
+ private String phone;
+
+ private String idCard;
+
+ private String villageName;;
+
+ private String address;
+
+ private Integer cardCount;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date operateDt;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermRecharge.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermRecharge.java
new file mode 100644
index 0000000..e0d69f8
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermRecharge.java
@@ -0,0 +1,36 @@
+package com.dy.pipIrrGlobal.voSe;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-05-08 15:59
+ * @LastEditTime 2025-05-08 15:59
+ * @Description
+ */
+
+@Data
+@JsonPropertyOrder({"projectNo", "cardNum", "balance", "waterPrice", "time", "orderNo"})
+public class VoTermRecharge {
+ public static final long serialVersionUID = 202505081559001L;
+
+ private Integer projectNo;
+
+ @JSONField(serializeUsing= ObjectWriterImplToString.class)
+ private Long cardNum;
+
+ private Float balance;
+
+ private Double waterPrice;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date time;
+
+ private String orderNo;
+}
diff --git "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050166web\346\226\207\344\273\266\350\212\261\347\224\237\345\243\263\051.yml" "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050166web\346\226\207\344\273\266\350\212\261\347\224\237\345\243\263\051.yml"
index bc9864b..b4f1c39 100644
--- "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050166web\346\226\207\344\273\266\350\212\261\347\224\237\345\243\263\051.yml"
+++ "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050166web\346\226\207\344\273\266\350\212\261\347\224\237\345\243\263\051.yml"
@@ -146,6 +146,10 @@
webPort: 8089
actutorPort: 9089
idSuffix: 11
+ terminal:
+ webPort: 8090
+ actutorPort: 9090
+ idSuffix: 12
# 2023-10-24鏂板锛岀敤浜庢墽琛屼复鏃朵换鍔★紝渚嬪鍒犻櫎鏁版嵁搴撲腑涓婁簺鍑洪敊鐨勬暟鎹�
temp:
webPort: 8099
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
index 89434e4..b302ccc 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -146,6 +146,10 @@
webPort: 8089
actutorPort: 9089
idSuffix: 11
+ terminal:
+ webPort: 8090
+ actutorPort: 9090
+ idSuffix: 12
# 2023-10-24鏂板锛岀敤浜庢墽琛屼复鏃朵换鍔★紝渚嬪鍒犻櫎鏁版嵁搴撲腑涓婁簺鍑洪敊鐨勬暟鎹�
temp:
webPort: 8099
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
index cf15a1f..84dc129 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
@@ -20,12 +20,14 @@
<result column="remarks" jdbcType="VARCHAR" property="remarks" />
<result column="operator" jdbcType="BIGINT" property="operator" />
<result column="operate_dt" jdbcType="TIMESTAMP" property="operateDt" />
+ <result column="order_no" jdbcType="VARCHAR" property="orderNo" />
<result column="operate_valid" jdbcType="TINYINT" property="operateValid" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, card_id, client_id, money, system_balance, trade_amount, price, card_cost, gift,
- refund_amount, no_trade_amount, operate_type, payment_id, remarks, `operator`, operate_dt, operate_valid
+ refund_amount, no_trade_amount, operate_type, payment_id, remarks, `operator`, operate_dt,
+ order_no, operate_valid
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
<!--@mbg.generated-->
@@ -46,13 +48,15 @@
price, card_cost, gift,
refund_amount, no_trade_amount, operate_type,
payment_id, remarks, `operator`,
- operate_dt, operate_valid)
+ operate_dt, order_no, operate_valid
+ )
values (#{id,jdbcType=BIGINT}, #{cardId,jdbcType=BIGINT}, #{clientId,jdbcType=BIGINT},
#{money,jdbcType=FLOAT}, #{systemBalance,jdbcType=FLOAT}, #{tradeAmount,jdbcType=FLOAT},
#{price,jdbcType=FLOAT}, #{cardCost,jdbcType=INTEGER}, #{gift,jdbcType=FLOAT},
#{refundAmount,jdbcType=FLOAT}, #{noTradeAmount,jdbcType=FLOAT}, #{operateType,jdbcType=TINYINT},
#{paymentId,jdbcType=BIGINT}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT},
- #{operateDt,jdbcType=TIMESTAMP}, #{operateValid,jdbcType=TINYINT})
+ #{operateDt,jdbcType=TIMESTAMP}, #{orderNo,jdbcType=VARCHAR}, #{operateValid,jdbcType=TINYINT}
+ )
</insert>
<insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeCardOperate">
<!--@mbg.generated-->
@@ -106,6 +110,9 @@
<if test="operateDt != null">
operate_dt,
</if>
+ <if test="orderNo != null">
+ order_no,
+ </if>
<if test="operateValid != null">
operate_valid,
</if>
@@ -158,6 +165,9 @@
</if>
<if test="operateDt != null">
#{operateDt,jdbcType=TIMESTAMP},
+ </if>
+ <if test="orderNo != null">
+ #{orderNo,jdbcType=VARCHAR},
</if>
<if test="operateValid != null">
#{operateValid,jdbcType=TINYINT},
@@ -213,6 +223,9 @@
<if test="operateDt != null">
operate_dt = #{operateDt,jdbcType=TIMESTAMP},
</if>
+ <if test="orderNo != null">
+ order_no = #{orderNo,jdbcType=VARCHAR},
+ </if>
<if test="operateValid != null">
operate_valid = #{operateValid,jdbcType=TINYINT},
</if>
@@ -237,6 +250,7 @@
remarks = #{remarks,jdbcType=VARCHAR},
`operator` = #{operator,jdbcType=BIGINT},
operate_dt = #{operateDt,jdbcType=TIMESTAMP},
+ order_no = #{orderNo,jdbcType=VARCHAR},
operate_valid = #{operateValid,jdbcType=TINYINT}
where id = #{id,jdbcType=BIGINT}
</update>
@@ -244,12 +258,12 @@
<!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍏呭�艰褰曟暟閲�-->
<select id="getRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
select
- COUNT(*) AS recordCount
+ COUNT(*) AS recordCount
FROM se_card_operate ope
- LEFT JOIN se_client_card card ON ope.card_id = card.id
- LEFT JOIN se_client cli ON ope.client_id = cli.id
- LEFT JOIN ba_user us ON ope.operator = us.id
- LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
+ LEFT JOIN se_client_card card ON ope.card_id = card.id
+ LEFT JOIN se_client cli ON ope.client_id = cli.id
+ LEFT JOIN ba_user us ON ope.operator = us.id
+ LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
<where>
AND ope.operate_type in(1, 2, 5,10)
AND ope.operate_valid = 2
@@ -278,37 +292,37 @@
<!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍏呭�艰褰�-->
<select id="getRecharges" resultType="com.dy.pipIrrGlobal.voSe.VoRecharge">
SELECT
- ope.id AS opeId,
- card.id AS cardId,
- cli.name AS clientName,
- cli.phone,
- cli.idCard,
- cli.clientNum,
- dis.name AS villageName,
- cli.address,
- card.money,
- cardNum,
- IFNULL(ope.card_cost,0) AS cardCost,
- IFNULL(ope.trade_amount, 0) AS amount,
- IFNULL(ope.gift, 0) AS gift,
- IFNULL(ope.refund_amount, 0) AS refundAmount,
- (IFNULL(ope.money, 0) + IFNULL(ope.trade_amount, 0) + IFNULL(ope.gift, 0)) AS afterRecharge,
- pay.name AS paymentName,
- ope.price,
- us.name AS opr,
- (CASE
- WHEN ope.operate_type = 1 THEN '寮�鍗�'
- WHEN ope.operate_type = 2 THEN '鍏呭��'
- WHEN ope.operate_type = 5 THEN '杩旇繕'
- WHEN ope.operate_type = 10 THEN '鍙嶅啓'
- END) AS operateType,
- ope.operate_dt
+ ope.id AS opeId,
+ card.id AS cardId,
+ cli.name AS clientName,
+ cli.phone,
+ cli.idCard,
+ cli.clientNum,
+ dis.name AS villageName,
+ cli.address,
+ card.money,
+ cardNum,
+ IFNULL(ope.card_cost,0) AS cardCost,
+ IFNULL(ope.trade_amount, 0) AS amount,
+ IFNULL(ope.gift, 0) AS gift,
+ IFNULL(ope.refund_amount, 0) AS refundAmount,
+ (IFNULL(ope.money, 0) + IFNULL(ope.trade_amount, 0) + IFNULL(ope.gift, 0)) AS afterRecharge,
+ pay.name AS paymentName,
+ ope.price,
+ us.name AS opr,
+ (CASE
+ WHEN ope.operate_type = 1 THEN '寮�鍗�'
+ WHEN ope.operate_type = 2 THEN '鍏呭��'
+ WHEN ope.operate_type = 5 THEN '杩旇繕'
+ WHEN ope.operate_type = 10 THEN '鍙嶅啓'
+ END) AS operateType,
+ ope.operate_dt
FROM se_card_operate ope
- LEFT JOIN se_client_card card ON ope.card_id = card.id
- LEFT JOIN se_client cli ON ope.client_id = cli.id
- LEFT JOIN ba_district dis ON dis.id = cli.villageId
- LEFT JOIN ba_user us ON ope.operator = us.id
- Left JOIN se_payment_method pay ON ope.payment_id = pay.id
+ LEFT JOIN se_client_card card ON ope.card_id = card.id
+ LEFT JOIN se_client cli ON ope.client_id = cli.id
+ LEFT JOIN ba_district dis ON dis.id = cli.villageId
+ LEFT JOIN ba_user us ON ope.operator = us.id
+ Left JOIN se_payment_method pay ON ope.payment_id = pay.id
<where>
AND ope.operate_type in(1, 2, 5,10)
AND ope.operate_valid = 2
@@ -335,7 +349,7 @@
<!--鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗璁板綍鏁�-->
<select id="getTransactionRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
SELECT
- COUNT(*) AS recordCount
+ COUNT(*) AS recordCount
FROM se_card_operate ope
LEFT JOIN se_client cli ON ope.client_id = cli.id
LEFT JOIN se_client_card card ON card.id = ope.card_id
@@ -361,41 +375,41 @@
<!--鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗璁板綍-->
<select id="getTransactions" resultType="com.dy.pipIrrGlobal.voSe.VoTradeDetails">
SELECT
- ope.id AS orderNumber,
- cli.name AS clientName,
- card.cardNum AS cardNum,
- cli.idCard,
- cli.clientNum,
- cli.phone,
- (CASE ope.operate_type
- WHEN 1 THEN '寮�鍗�'
- WHEN 2 THEN '鍏呭��'
- WHEN 3 THEN '閿�鍗�'
- WHEN 5 THEN '琛ユ墸'
- WHEN 10 THEN '鍙嶅啓'
- END) AS operateType,
- (IFNULL(ope.trade_amount,0.00) + IFNULL(ope.card_cost,0.00)) AS tradeAmount,
- IFNULL(ope.trade_amount,0.00) AS waterCost,
- IFNULL(ope.card_cost,0.00) AS cardCost,
- IFNULL(ope.gift,0.00) AS gift,
- IFNULL(ope.refund_amount,0.00) AS refundAmount,
- (IFNULL(ope.money, 0) + IFNULL(ope.trade_amount, 0) + IFNULL(ope.gift, 0)) AS money,
- pay.name AS paymentName,
- ope.operate_dt as tradeTime,
- us.id AS cashierId,
- us.name AS cashierName,
- (CASE card.state
- WHEN 1 THEN '姝e父'
- WHEN 2 THEN '宸叉敞閿�'
- WHEN 3 THEN '宸叉寕澶�'
- END) AS cardState,
- cli.districtTitle,
- cli.villageId AS villageId
+ ope.id AS orderNumber,
+ cli.name AS clientName,
+ card.cardNum AS cardNum,
+ cli.idCard,
+ cli.clientNum,
+ cli.phone,
+ (CASE ope.operate_type
+ WHEN 1 THEN '寮�鍗�'
+ WHEN 2 THEN '鍏呭��'
+ WHEN 3 THEN '閿�鍗�'
+ WHEN 5 THEN '琛ユ墸'
+ WHEN 10 THEN '鍙嶅啓'
+ END) AS operateType,
+ (IFNULL(ope.trade_amount,0.00) + IFNULL(ope.card_cost,0.00)) AS tradeAmount,
+ IFNULL(ope.trade_amount,0.00) AS waterCost,
+ IFNULL(ope.card_cost,0.00) AS cardCost,
+ IFNULL(ope.gift,0.00) AS gift,
+ IFNULL(ope.refund_amount,0.00) AS refundAmount,
+ (IFNULL(ope.money, 0) + IFNULL(ope.trade_amount, 0) + IFNULL(ope.gift, 0)) AS money,
+ pay.name AS paymentName,
+ ope.operate_dt as tradeTime,
+ us.id AS cashierId,
+ us.name AS cashierName,
+ (CASE card.state
+ WHEN 1 THEN '姝e父'
+ WHEN 2 THEN '宸叉敞閿�'
+ WHEN 3 THEN '宸叉寕澶�'
+ END) AS cardState,
+ cli.districtTitle,
+ cli.villageId AS villageId
FROM se_card_operate ope
- LEFT JOIN se_client cli ON ope.client_id = cli.id
- LEFT JOIN se_client_card card ON card.id = ope.card_id
- LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
- LEFT JOIN ba_user us ON ope.operator = us.id
+ LEFT JOIN se_client cli ON ope.client_id = cli.id
+ LEFT JOIN se_client_card card ON card.id = ope.card_id
+ LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
+ LEFT JOIN ba_user us ON ope.operator = us.id
<where>
AND ope.operate_type IN(1,2,3,5,10)
AND ope.operate_valid = 2
@@ -422,11 +436,11 @@
<!--鏍规嵁鎸囧畾鏉′欢鑾峰彇寮�鍗¤褰曟暟閲�-->
<select id="getActiveCardRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
select
- COUNT(*) AS recordCount
+ COUNT(*) AS recordCount
FROM se_card_operate ope
- LEFT JOIN se_client_card card ON ope.card_id = card.id
- LEFT JOIN se_client cli ON ope.client_id = cli.id
- LEFT JOIN se_payment_method pay ON pay.id = ope.payment_id
+ LEFT JOIN se_client_card card ON ope.card_id = card.id
+ LEFT JOIN se_client cli ON ope.client_id = cli.id
+ LEFT JOIN se_payment_method pay ON pay.id = ope.payment_id
<where>
AND ope.operate_type = 1
AND ope.operate_valid = 2
@@ -451,24 +465,24 @@
<!--鏍规嵁鎸囧畾鏉′欢鑾峰彇寮�鍗¤褰�-->
<select id="getActiveCards" resultType="com.dy.pipIrrGlobal.voSe.VoActiveCard">
SELECT
- ope.id,
- cli.name AS clientName,
- cli.clientNum AS clientNum,
- card.cardNum AS cardNum,
- card.state AS state,
- (CASE
- WHEN card.state = 1 THEN '姝e父'
- WHEN card.state = 2 THEN '宸叉敞閿�'
- WHEN card.state = 3 THEN '宸叉寕澶�'
- END) AS stateName,
- ope.card_cost AS cardCost,
- pay.name AS paymentName,
- (SELECT `name` FROM ba_user WHERE id = ope.operator) AS operator,
- ope.operate_dt AS operateDt
+ ope.id,
+ cli.name AS clientName,
+ cli.clientNum AS clientNum,
+ card.cardNum AS cardNum,
+ card.state AS state,
+ (CASE
+ WHEN card.state = 1 THEN '姝e父'
+ WHEN card.state = 2 THEN '宸叉敞閿�'
+ WHEN card.state = 3 THEN '宸叉寕澶�'
+ END) AS stateName,
+ ope.card_cost AS cardCost,
+ pay.name AS paymentName,
+ (SELECT `name` FROM ba_user WHERE id = ope.operator) AS operator,
+ ope.operate_dt AS operateDt
FROM se_card_operate ope
- LEFT JOIN se_client_card card ON ope.card_id = card.id
- LEFT JOIN se_client cli ON ope.client_id = cli.id
- LEFT JOIN se_payment_method pay ON pay.id = ope.payment_id
+ LEFT JOIN se_client_card card ON ope.card_id = card.id
+ LEFT JOIN se_client cli ON ope.client_id = cli.id
+ LEFT JOIN se_payment_method pay ON pay.id = ope.payment_id
<where>
AND ope.operate_type = 1
AND ope.operate_valid = 2
@@ -499,10 +513,10 @@
<!--鏍规嵁鎸囧畾鏉′欢鑾峰彇琛ュ崱璁板綍鏁伴噺-->
<select id="getReissueCardRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
select
- COUNT(*) AS recordCount
+ COUNT(*) AS recordCount
FROM se_card_operate ope
- LEFT JOIN se_client_card card ON ope.card_id = card.id
- LEFT JOIN se_client cli ON ope.client_id = cli.id
+ LEFT JOIN se_client_card card ON ope.card_id = card.id
+ LEFT JOIN se_client cli ON ope.client_id = cli.id
<where>
AND ope.operate_type = 4
AND ope.operate_valid = 2
@@ -523,17 +537,17 @@
<!--鏍规嵁鎸囧畾鏉′欢鑾峰彇琛ュ崱璁板綍-->
<select id="getReissueCards" resultType="com.dy.pipIrrGlobal.voSe.VoReissueCard">
SELECT
- CAST(ope.id AS char) AS id ,
- cli.name AS clientName,
- cli.clientNum AS clientNum,
- card.cardNum AS cardNum,
- ope.card_cost AS cardCost,
- IFNULL(ope.no_trade_amount,0) AS reissueAmount,
- (SELECT `name` FROM ba_user WHERE id = ope.operator) AS operator,
- ope.operate_dt AS operateDt
+ CAST(ope.id AS char) AS id ,
+ cli.name AS clientName,
+ cli.clientNum AS clientNum,
+ card.cardNum AS cardNum,
+ ope.card_cost AS cardCost,
+ IFNULL(ope.no_trade_amount,0) AS reissueAmount,
+ (SELECT `name` FROM ba_user WHERE id = ope.operator) AS operator,
+ ope.operate_dt AS operateDt
FROM se_card_operate ope
- LEFT JOIN se_client_card card ON ope.card_id = card.id
- LEFT JOIN se_client cli ON ope.client_id = cli.id
+ LEFT JOIN se_client_card card ON ope.card_id = card.id
+ LEFT JOIN se_client cli ON ope.client_id = cli.id
<where>
AND ope.operate_type = 4
AND ope.operate_valid = 2
@@ -560,11 +574,11 @@
<!--鏍规嵁鎸囧畾鏉′欢鑾峰彇閫氱敤鎿嶄綔璁板綍鏁伴噺-->
<select id="getCommonOperationRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
select
- COUNT(*) AS recordCount
+ COUNT(*) AS recordCount
FROM se_card_operate ope
- LEFT JOIN se_client cli ON ope.client_id = cli.id
- LEFT JOIN se_client_card card ON ope.card_id = card.id
- LEFT JOIN ba_user us ON ope.operator = us.id
+ LEFT JOIN se_client cli ON ope.client_id = cli.id
+ LEFT JOIN se_client_card card ON ope.card_id = card.id
+ LEFT JOIN ba_user us ON ope.operator = us.id
<where>
AND ope.operate_valid = 2
<if test = "operateType != null and operateType > 0">
@@ -588,21 +602,21 @@
<!--鏍规嵁鎸囧畾鏉′欢鑾峰彇閫氱敤鎿嶄綔璁板綍-->
<select id="getCommonOperations" resultType="com.dy.pipIrrGlobal.voSe.VoOperate">
SELECT
- cli.name AS clientName,
- cli.clientNum,
- CAST(card.cardNum AS char) AS cardNum,
- us.name AS operator,
- ope.operate_dt AS operateDt,
- IFNULL(ope.trade_amount,0) AS refund,
- (CASE
- WHEN ope.payment_id = 1 THEN '鐜伴噾'
- END) AS refundTypeName,
- card.money,
- IFNULL(ope.system_balance,0) AS systemBalance
+ cli.name AS clientName,
+ cli.clientNum,
+ CAST(card.cardNum AS char) AS cardNum,
+ us.name AS operator,
+ ope.operate_dt AS operateDt,
+ IFNULL(ope.trade_amount,0) AS refund,
+ (CASE
+ WHEN ope.payment_id = 1 THEN '鐜伴噾'
+ END) AS refundTypeName,
+ card.money,
+ IFNULL(ope.system_balance,0) AS systemBalance
FROM se_card_operate ope
- LEFT JOIN se_client cli ON ope.client_id = cli.id
- LEFT JOIN se_client_card card ON ope.card_id = card.id
- LEFT JOIN ba_user us ON ope.operator = us.id
+ LEFT JOIN se_client cli ON ope.client_id = cli.id
+ LEFT JOIN se_client_card card ON ope.card_id = card.id
+ LEFT JOIN ba_user us ON ope.operator = us.id
<where>
AND ope.operate_valid = 2
<if test = "operateType != null and operateType > 0">
@@ -632,14 +646,14 @@
<!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鏀舵嵁鍒楄〃鏁�-->
<select id="getReceiptsRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
SELECT
- COUNT(*) AS recordCount
+ COUNT(*) AS recordCount
FROM se_card_operate ope
- LEFT JOIN se_client cli ON ope.client_id = cli.id
- LEFT JOIN se_client_card card ON ope.card_id = card.id
- LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
- LEFT JOIN ba_user us ON ope.operator = us.id
- LEFT JOIN ba_district vil ON cli.villageId = vil.id
- LEFT JOIN ba_district tow ON cli.townId = tow.id
+ LEFT JOIN se_client cli ON ope.client_id = cli.id
+ LEFT JOIN se_client_card card ON ope.card_id = card.id
+ LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
+ LEFT JOIN ba_user us ON ope.operator = us.id
+ LEFT JOIN ba_district vil ON cli.villageId = vil.id
+ LEFT JOIN ba_district tow ON cli.townId = tow.id
<where>
AND ope.operate_type IN(1,2)
AND ope.operate_valid = 2
@@ -668,34 +682,34 @@
<!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鏀舵嵁鍒楄〃-->
<select id="getReceipts" resultType="com.dy.pipIrrGlobal.voSe.VoReceipt">
SELECT
- ope.id AS orderNumber,
- tow.name AS townName,
- vil.name AS villageName,
- cli.`name`,
- cli.phone,
- cli.clientNum,
- card.cardNum,
- (CASE
- WHEN ope.operate_type = 1 THEN '寮�鍗�'
- WHEN ope.operate_type = 2 THEN '鍏呭��'
- END) AS operateType,
- IFNULL(ope.trade_amount,0) AS waterCost,
- IFNULL(ope.gift,0) AS gift,
- IFNULL(ope.card_cost,0) AS cardCost,
- (IFNULL(ope.trade_amount,0) + IFNULL(ope.card_cost,0)) AS amount,
- card.money,
- pay.`name` AS paymentName,
- us.`name` AS operatorName,
- ope.operate_dt AS operateTime,
- ope.operator AS cashierId,
- NOW() AS currentTime
+ ope.id AS orderNumber,
+ tow.name AS townName,
+ vil.name AS villageName,
+ cli.`name`,
+ cli.phone,
+ cli.clientNum,
+ card.cardNum,
+ (CASE
+ WHEN ope.operate_type = 1 THEN '寮�鍗�'
+ WHEN ope.operate_type = 2 THEN '鍏呭��'
+ END) AS operateType,
+ IFNULL(ope.trade_amount,0) AS waterCost,
+ IFNULL(ope.gift,0) AS gift,
+ IFNULL(ope.card_cost,0) AS cardCost,
+ (IFNULL(ope.trade_amount,0) + IFNULL(ope.card_cost,0)) AS amount,
+ card.money,
+ pay.`name` AS paymentName,
+ us.`name` AS operatorName,
+ ope.operate_dt AS operateTime,
+ ope.operator AS cashierId,
+ NOW() AS currentTime
FROM se_card_operate ope
- LEFT JOIN se_client cli ON ope.client_id = cli.id
- LEFT JOIN se_client_card card ON ope.card_id = card.id
- LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
- LEFT JOIN ba_user us ON ope.operator = us.id
- LEFT JOIN ba_district vil ON cli.villageId = vil.id
- LEFT JOIN ba_district tow ON cli.townId = tow.id
+ LEFT JOIN se_client cli ON ope.client_id = cli.id
+ LEFT JOIN se_client_card card ON ope.card_id = card.id
+ LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
+ LEFT JOIN ba_user us ON ope.operator = us.id
+ LEFT JOIN ba_district vil ON cli.villageId = vil.id
+ LEFT JOIN ba_district tow ON cli.townId = tow.id
<where>
AND ope.operate_type IN(1,2)
AND ope.operate_valid = 2
@@ -730,14 +744,14 @@
<!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鏀舵嵁鏀惰垂閲戦鍚堣-->
<select id="getTotalAmount" parameterType="java.util.Map" resultType="java.lang.Double">
SELECT
- SUM(IFNULL(ope.trade_amount,0) + IFNULL(ope.card_cost,0)) AS totalAmount
+ SUM(IFNULL(ope.trade_amount,0) + IFNULL(ope.card_cost,0)) AS totalAmount
FROM se_card_operate ope
- LEFT JOIN se_client cli ON ope.client_id = cli.id
- LEFT JOIN se_client_card card ON ope.card_id = card.id
- LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
- LEFT JOIN ba_user us ON ope.operator = us.id
- LEFT JOIN ba_district vil ON cli.villageId = vil.id
- LEFT JOIN ba_district tow ON cli.townId = tow.id
+ LEFT JOIN se_client cli ON ope.client_id = cli.id
+ LEFT JOIN se_client_card card ON ope.card_id = card.id
+ LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
+ LEFT JOIN ba_user us ON ope.operator = us.id
+ LEFT JOIN ba_district vil ON cli.villageId = vil.id
+ LEFT JOIN ba_district tow ON cli.townId = tow.id
<where>
AND ope.operate_type IN(1,2)
AND ope.operate_valid = 2
@@ -758,9 +772,9 @@
<!--鏍规嵁姘村崱缂栧彿鑾峰彇鍏舵寕澶辨椂閫�娆鹃噾棰濓紙琛ュ崱鏃跺垽鏂娇鐢級-->
<select id="getTradeAmountByCardNo" resultType="java.lang.Double">
SELECT
- ope.trade_amount AS tradeAmount
+ ope.trade_amount AS tradeAmount
FROM se_client_card card
- INNER JOIN se_card_operate ope ON ope.card_id = card.id
+ INNER JOIN se_card_operate ope ON ope.card_id = card.id
<where>
AND ope.operate_type = 6
AND card.cardNum = #{cardNum}
@@ -800,7 +814,7 @@
select
count(*)
from
- (
+ (
SELECT
sco.client_id AS clientId,
sc.`name` AS clientName,
@@ -815,22 +829,22 @@
WHERE
sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 1 AND sc.deleted = 0 AND sc.disabled = 0 AND sco.operate_valid = 2
GROUP BY sc.id) c
- </select>
+ </select>
<!--鎸囧畾鏃堕棿娈靛唴寮�鐗╃悊鍗″啘鎴�-->
<select id="getOpenIcCardClients" resultType="com.dy.pipIrrGlobal.voSt.VoClientOpenCardCount">
SELECT
- sco.client_id AS clientId,
- sc.`name` AS clientName,
- sc.clientNum AS clientNum,
- sc.address AS address,
- sc.phone AS phone,
- sc.idCard AS idCard,
- COUNT(sc.id) AS openCardCount
+ sco.client_id AS clientId,
+ sc.`name` AS clientName,
+ sc.clientNum AS clientNum,
+ sc.address AS address,
+ sc.phone AS phone,
+ sc.idCard AS idCard,
+ COUNT(sc.id) AS openCardCount
FROM
- `se_card_operate` sco
- INNER JOIN se_client sc ON sc.id = sco.client_id
+ `se_card_operate` sco
+ INNER JOIN se_client sc ON sc.id = sco.client_id
WHERE
- sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 1 AND sc.deleted = 0 AND sc.disabled = 0 AND sco.operate_valid = 2
+ sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 1 AND sc.deleted = 0 AND sc.disabled = 0 AND sco.operate_valid = 2
GROUP BY sc.id
ORDER BY sc.id DESC
<trim prefix="limit " >
@@ -863,18 +877,18 @@
<!--鎸囧畾鏃堕棿娈靛唴姣忎釜鍐滄埛鍏呭�煎悎璁�-->
<select id="getRechargeTotalClients" resultType="com.dy.pipIrrGlobal.voSt.VoClientRechargeTotal">
SELECT
- sco.client_id AS clientId,
- sc.`name` AS clientName,
- sc.clientNum AS clientNum,
- sc.address AS address,
- sc.phone AS phone,
- sc.idCard AS idCard,
- IFNULL(SUM(sco.trade_amount),0) AS rechargeTotal
+ sco.client_id AS clientId,
+ sc.`name` AS clientName,
+ sc.clientNum AS clientNum,
+ sc.address AS address,
+ sc.phone AS phone,
+ sc.idCard AS idCard,
+ IFNULL(SUM(sco.trade_amount),0) AS rechargeTotal
FROM
- `se_card_operate` sco
- INNER JOIN se_client sc ON sc.id = sco.client_id
+ `se_card_operate` sco
+ INNER JOIN se_client sc ON sc.id = sco.client_id
WHERE
- sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 2 AND sc.deleted = 0 AND sc.disabled = 0 AND sco.operate_valid = 2
+ sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 2 AND sc.deleted = 0 AND sc.disabled = 0 AND sco.operate_valid = 2
GROUP BY sc.id
ORDER BY sc.id DESC
<trim prefix="limit " >
@@ -908,18 +922,18 @@
<!--鎸囧畾鏃堕棿娈靛唴鐗╃悊鍗″厖鍊奸噾棰濊秴杩囨寚瀹氬�肩殑鍐滄埛-->
<select id="getRechargeTotalGtValueClients" resultType="com.dy.pipIrrGlobal.voSt.VoClientRechargeTotal">
SELECT
- sco.client_id AS clientId,
- sc.`name` AS clientName,
- sc.clientNum AS clientNum,
- sc.address AS address,
- sc.phone AS phone,
- sc.idCard AS idCard,
- IFNULL(SUM(sco.trade_amount),0) AS rechargeTotal
+ sco.client_id AS clientId,
+ sc.`name` AS clientName,
+ sc.clientNum AS clientNum,
+ sc.address AS address,
+ sc.phone AS phone,
+ sc.idCard AS idCard,
+ IFNULL(SUM(sco.trade_amount),0) AS rechargeTotal
FROM
- `se_card_operate` sco
- INNER JOIN se_client sc ON sc.id = sco.client_id
+ `se_card_operate` sco
+ INNER JOIN se_client sc ON sc.id = sco.client_id
WHERE
- sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 2 AND sc.deleted = 0 AND sc.disabled = 0 AND sco.operate_valid = 2
+ sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 2 AND sc.deleted = 0 AND sc.disabled = 0 AND sco.operate_valid = 2
GROUP BY sc.id
HAVING IFNULL(SUM(sco.trade_amount),0) > #{value}
ORDER BY sc.id DESC
@@ -934,10 +948,10 @@
<select id="getRechargesCountNew" resultType="java.lang.Long">
SELECT COUNT(*) AS recordCount
FROM se_client_card card
- LEFT JOIN se_client cli ON cli.id = card.clientId
- LEFT JOIN se_recharge_history rch ON rch.cardId = card.id
- LEFT JOIN se_payment_method pay ON pay.id = rch.paymentId
- LEFT JOIN ba_user us ON us.id = rch.operator
+ LEFT JOIN se_client cli ON cli.id = card.clientId
+ LEFT JOIN se_recharge_history rch ON rch.cardId = card.id
+ LEFT JOIN se_payment_method pay ON pay.id = rch.paymentId
+ LEFT JOIN ba_user us ON us.id = rch.operator
<where>
AND rch.operate_valid = 2
<if test = "clientName != null and clientName !=''">
@@ -957,20 +971,20 @@
<!--鑾峰彇鍏呭�艰褰曪紝绠$悊骞冲彴鍏呭�煎垪琛ㄤ娇鐢紝APP鏈娇鐢�-->
<select id="getRechargesNew" resultType="com.dy.pipIrrGlobal.voSe.VoRechargeNew">
SELECT
- cli.name AS clientName,
- cli.clientNum,
- card.cardNum,
- IFNULL(rch.amount, 0) AS amount,
- IFNULL(rch.gift, 0) AS gift,
- IFNULL(rch.afterRecharge, 0) AS afterRecharge,
- pay.name AS paymentName,
- us.name AS operator,
- rch.operateDt AS operateTime
+ cli.name AS clientName,
+ cli.clientNum,
+ card.cardNum,
+ IFNULL(rch.amount, 0) AS amount,
+ IFNULL(rch.gift, 0) AS gift,
+ IFNULL(rch.afterRecharge, 0) AS afterRecharge,
+ pay.name AS paymentName,
+ us.name AS operator,
+ rch.operateDt AS operateTime
FROM se_client_card card
- LEFT JOIN se_client cli ON cli.id = card.clientId
- LEFT JOIN se_recharge_history rch ON rch.cardId = card.id
- LEFT JOIN se_payment_method pay ON pay.id = rch.paymentId
- LEFT JOIN ba_user us ON us.id = rch.operator
+ LEFT JOIN se_client cli ON cli.id = card.clientId
+ LEFT JOIN se_recharge_history rch ON rch.cardId = card.id
+ LEFT JOIN se_payment_method pay ON pay.id = rch.paymentId
+ LEFT JOIN ba_user us ON us.id = rch.operator
<where>
AND rch.operate_valid = 2
<if test = "clientName != null and clientName !=''">
@@ -997,9 +1011,9 @@
<select id="getRefundsCount" resultType="java.lang.Long">
SELECT COUNT(*) AS recordCount
FROM se_client_card card
- INNER JOIN se_client cli ON cli.id = card.clientId
- LEFT JOIN se_card_operate ope ON ope.card_id = card.id
- INNER JOIN ba_user us ON us.id = ope.operator
+ INNER JOIN se_client cli ON cli.id = card.clientId
+ LEFT JOIN se_card_operate ope ON ope.card_id = card.id
+ INNER JOIN ba_user us ON us.id = ope.operator
<where>
AND ope.operate_type = 5
AND ope.operate_valid = 2
@@ -1020,17 +1034,17 @@
<!--鑾峰彇杩旇繕璁板綍锛岀鐞嗗钩鍙板厖鍊煎垪琛ㄤ娇鐢�-->
<select id="getRefunds" resultType="com.dy.pipIrrGlobal.voSe.VoRefund">
SELECT
- cli.name AS clientName,
- cli.clientNum,
- card.cardNum,
- IFNULL(ope.money, 0) AS money,
- IFNULL(ope.refund_amount, 0) AS refundAmount,
- us.name AS operator,
- ope.operate_dt AS operateTime
+ cli.name AS clientName,
+ cli.clientNum,
+ card.cardNum,
+ IFNULL(ope.money, 0) AS money,
+ IFNULL(ope.refund_amount, 0) AS refundAmount,
+ us.name AS operator,
+ ope.operate_dt AS operateTime
FROM se_client_card card
- INNER JOIN se_client cli ON cli.id = card.clientId
- LEFT JOIN se_card_operate ope ON ope.card_id = card.id
- INNER JOIN ba_user us ON us.id = ope.operator
+ INNER JOIN se_client cli ON cli.id = card.clientId
+ LEFT JOIN se_card_operate ope ON ope.card_id = card.id
+ INNER JOIN ba_user us ON us.id = ope.operator
<where>
AND ope.operate_type = 5
AND ope.operate_valid = 2
@@ -1058,14 +1072,14 @@
<!--鏍规嵁姘村崱ID銆佹搷浣滅被鍨嬭幏鍙栬幏鍙栨渶鍚庝竴鏉¤褰曪紝鍒ゆ柇寮�鍗℃槸鍚﹀悓姝ュ厖鍊间娇鐢�-->
<update id="turnOperateValidByCardId">
UPDATE se_card_operate
- SET operate_valid = 2
+ SET operate_valid = 2
WHERE id = (
- SELECT id FROM (
- SELECT id
- FROM se_card_operate
- WHERE operate_valid = 1 AND operate_type = #{operateType} AND card_id = #{cardId}
- ORDER BY id DESC
- LIMIT 1) AS subquery
+ SELECT id FROM (
+ SELECT id
+ FROM se_card_operate
+ WHERE operate_valid = 1 AND operate_type = #{operateType} AND card_id = #{cardId}
+ ORDER BY id DESC
+ LIMIT 1) AS subquery
);
</update>
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml
index 91c9588..5b0014b 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml
@@ -549,4 +549,83 @@
</if>
</trim>
</select>
+
+ <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍐滄埛璁板綍鏁癬鍏呭�兼満-->
+ <select id="getTermClientCount" resultType="java.lang.Long">
+ SELECT
+ count(*)
+ FROM se_client cli
+ LEFT JOIN ba_district dis_village ON cli.villageId = dis_village.id
+ <where>
+ AND cli.disabled = 0
+ AND cli.deleted = 0
+ <if test = "name != null and name !=''">
+ AND cli.name like CONCAT('%',#{name},'%')
+ </if>
+
+ <if test = "clientNum != null and clientNum !=''">
+ AND cli.clientNum like CONCAT('%',#{clientNum},'%')
+ </if>
+
+ <if test = "phone != null and phone !=''">
+ AND cli.phone like CONCAT('%',#{phone},'%')
+ </if>
+ </where>
+ </select>
+
+ <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍐滄埛鏁版嵁_鍏呭�兼満-->
+ <select id="getTermClients" resultType="com.dy.pipIrrGlobal.voSe.VoTermClient">
+ SELECT
+ cli.id AS clientId,
+ cli.clientNum,
+ cli.name,
+ cli.phone,
+ cli.idCard,
+ dis_village.name AS villageName,
+ cli.address,
+ (SELECT COUNT(*) FROM se_client_card WHERE clientId = cli.id)+(SELECT COUNT(*) FROM se_virtual_card WHERE client_id = cli.id) AS cardCount,
+ cli.operateDt,
+ cli.districtNum
+ FROM se_client cli
+ LEFT JOIN ba_district dis_village ON cli.villageId = dis_village.id
+ <where>
+ AND cli.disabled = 0
+ AND cli.deleted = 0
+ <if test = "name != null and name !=''">
+ AND cli.name like CONCAT('%',#{name},'%')
+ </if>
+
+ <if test = "clientNum != null and clientNum !=''">
+ AND cli.clientNum like CONCAT('%',#{clientNum},'%')
+ </if>
+
+ <if test = "phone != null and phone !=''">
+ AND cli.phone like CONCAT('%',#{phone},'%')
+ </if>
+ </where>
+ ORDER BY cli.operateDt DESC
+ <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="getTermOneClient" resultType="com.dy.pipIrrGlobal.voSe.VoTermClient">
+ SELECT
+ cli.id AS clientId,
+ cli.clientNum,
+ cli.name,
+ cli.phone,
+ cli.idCard,
+ dis_village.name AS villageName,
+ cli.address,
+ (SELECT COUNT(*) FROM se_client_card WHERE clientId = cli.id)+(SELECT COUNT(*) FROM se_virtual_card WHERE client_id = cli.id) AS cardCount,
+ cli.operateDt,
+ cli.districtNum
+ FROM se_client cli
+ LEFT JOIN ba_district dis_village ON cli.villageId = dis_village.id
+ WHERE cli.disabled = 0 AND cli.deleted = 0 AND cli.id = #{clientId}
+ </select>
</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/IcCardSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/IcCardSv.java
index f798af0..3a03493 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/IcCardSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/IcCardSv.java
@@ -1,7 +1,6 @@
package com.dy.pipIrrStatistics.card;
import com.dy.common.webUtil.QueryResultVo;
-import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper;
import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper;
import com.dy.pipIrrGlobal.voSt.VoCardUsage;
import com.dy.pipIrrGlobal.voSt.VoICCard;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java
index 5a61fcf..e825abd 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java
@@ -3,7 +3,6 @@
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoRm.RmClientAmountDayLastMapper;
import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveHistoryMapper;
-import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper;
import com.dy.pipIrrGlobal.daoSe.SeClientMapper;
import com.dy.pipIrrGlobal.voSt.*;
import com.dy.pipIrrStatistics.card.IcCardqo.CommonQO;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/.gitattributes b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/.gitattributes
new file mode 100644
index 0000000..3b41682
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/.gitattributes
@@ -0,0 +1,2 @@
+/mvnw text eol=lf
+*.cmd text eol=crlf
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/.gitignore b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/.gitignore
new file mode 100644
index 0000000..549e00a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/.gitignore
@@ -0,0 +1,33 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/.mvn/wrapper/maven-wrapper.properties b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000..d58dfb7
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+wrapperVersion=3.3.2
+distributionType=only-script
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/mvnw b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/mvnw
new file mode 100644
index 0000000..19529dd
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/mvnw
@@ -0,0 +1,259 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ----------------------------------------------------------------------------
+
+# ----------------------------------------------------------------------------
+# Apache Maven Wrapper startup batch script, version 3.3.2
+#
+# Optional ENV vars
+# -----------------
+# JAVA_HOME - location of a JDK home dir, required when download maven via java source
+# MVNW_REPOURL - repo url base for downloading maven distribution
+# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
+# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output
+# ----------------------------------------------------------------------------
+
+set -euf
+[ "${MVNW_VERBOSE-}" != debug ] || set -x
+
+# OS specific support.
+native_path() { printf %s\\n "$1"; }
+case "$(uname)" in
+CYGWIN* | MINGW*)
+ [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")"
+ native_path() { cygpath --path --windows "$1"; }
+ ;;
+esac
+
+# set JAVACMD and JAVACCMD
+set_java_home() {
+ # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched
+ if [ -n "${JAVA_HOME-}" ]; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ]; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ JAVACCMD="$JAVA_HOME/jre/sh/javac"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ JAVACCMD="$JAVA_HOME/bin/javac"
+
+ if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then
+ echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2
+ echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2
+ return 1
+ fi
+ fi
+ else
+ JAVACMD="$(
+ 'set' +e
+ 'unset' -f command 2>/dev/null
+ 'command' -v java
+ )" || :
+ JAVACCMD="$(
+ 'set' +e
+ 'unset' -f command 2>/dev/null
+ 'command' -v javac
+ )" || :
+
+ if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then
+ echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2
+ return 1
+ fi
+ fi
+}
+
+# hash string like Java String::hashCode
+hash_string() {
+ str="${1:-}" h=0
+ while [ -n "$str" ]; do
+ char="${str%"${str#?}"}"
+ h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296))
+ str="${str#?}"
+ done
+ printf %x\\n $h
+}
+
+verbose() { :; }
+[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; }
+
+die() {
+ printf %s\\n "$1" >&2
+ exit 1
+}
+
+trim() {
+ # MWRAPPER-139:
+ # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds.
+ # Needed for removing poorly interpreted newline sequences when running in more
+ # exotic environments such as mingw bash on Windows.
+ printf "%s" "${1}" | tr -d '[:space:]'
+}
+
+# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties
+while IFS="=" read -r key value; do
+ case "${key-}" in
+ distributionUrl) distributionUrl=$(trim "${value-}") ;;
+ distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
+ esac
+done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties"
+[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties"
+
+case "${distributionUrl##*/}" in
+maven-mvnd-*bin.*)
+ MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/
+ case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in
+ *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;;
+ :Darwin*x86_64) distributionPlatform=darwin-amd64 ;;
+ :Darwin*arm64) distributionPlatform=darwin-aarch64 ;;
+ :Linux*x86_64*) distributionPlatform=linux-amd64 ;;
+ *)
+ echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2
+ distributionPlatform=linux-amd64
+ ;;
+ esac
+ distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
+ ;;
+maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
+*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
+esac
+
+# apply MVNW_REPOURL and calculate MAVEN_HOME
+# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
+[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}"
+distributionUrlName="${distributionUrl##*/}"
+distributionUrlNameMain="${distributionUrlName%.*}"
+distributionUrlNameMain="${distributionUrlNameMain%-bin}"
+MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}"
+MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")"
+
+exec_maven() {
+ unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || :
+ exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD"
+}
+
+if [ -d "$MAVEN_HOME" ]; then
+ verbose "found existing MAVEN_HOME at $MAVEN_HOME"
+ exec_maven "$@"
+fi
+
+case "${distributionUrl-}" in
+*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;;
+*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;;
+esac
+
+# prepare tmp dir
+if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then
+ clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; }
+ trap clean HUP INT TERM EXIT
+else
+ die "cannot create temp dir"
+fi
+
+mkdir -p -- "${MAVEN_HOME%/*}"
+
+# Download and Install Apache Maven
+verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
+verbose "Downloading from: $distributionUrl"
+verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
+
+# select .zip or .tar.gz
+if ! command -v unzip >/dev/null; then
+ distributionUrl="${distributionUrl%.zip}.tar.gz"
+ distributionUrlName="${distributionUrl##*/}"
+fi
+
+# verbose opt
+__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR=''
+[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v
+
+# normalize http auth
+case "${MVNW_PASSWORD:+has-password}" in
+'') MVNW_USERNAME='' MVNW_PASSWORD='' ;;
+has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;;
+esac
+
+if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then
+ verbose "Found wget ... using wget"
+ wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl"
+elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then
+ verbose "Found curl ... using curl"
+ curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl"
+elif set_java_home; then
+ verbose "Falling back to use Java to download"
+ javaSource="$TMP_DOWNLOAD_DIR/Downloader.java"
+ targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName"
+ cat >"$javaSource" <<-END
+ public class Downloader extends java.net.Authenticator
+ {
+ protected java.net.PasswordAuthentication getPasswordAuthentication()
+ {
+ return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() );
+ }
+ public static void main( String[] args ) throws Exception
+ {
+ setDefault( new Downloader() );
+ java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() );
+ }
+ }
+ END
+ # For Cygwin/MinGW, switch paths to Windows format before running javac and java
+ verbose " - Compiling Downloader.java ..."
+ "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java"
+ verbose " - Running Downloader.java ..."
+ "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")"
+fi
+
+# If specified, validate the SHA-256 sum of the Maven distribution zip file
+if [ -n "${distributionSha256Sum-}" ]; then
+ distributionSha256Result=false
+ if [ "$MVN_CMD" = mvnd.sh ]; then
+ echo "Checksum validation is not supported for maven-mvnd." >&2
+ echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
+ exit 1
+ elif command -v sha256sum >/dev/null; then
+ if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then
+ distributionSha256Result=true
+ fi
+ elif command -v shasum >/dev/null; then
+ if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then
+ distributionSha256Result=true
+ fi
+ else
+ echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2
+ echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
+ exit 1
+ fi
+ if [ $distributionSha256Result = false ]; then
+ echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2
+ echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2
+ exit 1
+ fi
+fi
+
+# unzip and move
+if command -v unzip >/dev/null; then
+ unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip"
+else
+ tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar"
+fi
+printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url"
+mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
+
+clean || :
+exec_maven "$@"
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/mvnw.cmd b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/mvnw.cmd
new file mode 100644
index 0000000..249bdf3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/mvnw.cmd
@@ -0,0 +1,149 @@
+<# : batch portion
+@REM ----------------------------------------------------------------------------
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM ----------------------------------------------------------------------------
+
+@REM ----------------------------------------------------------------------------
+@REM Apache Maven Wrapper startup batch script, version 3.3.2
+@REM
+@REM Optional ENV vars
+@REM MVNW_REPOURL - repo url base for downloading maven distribution
+@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
+@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output
+@REM ----------------------------------------------------------------------------
+
+@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0)
+@SET __MVNW_CMD__=
+@SET __MVNW_ERROR__=
+@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%
+@SET PSModulePath=
+@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @(
+ IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B)
+)
+@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%
+@SET __MVNW_PSMODULEP_SAVE=
+@SET __MVNW_ARG0_NAME__=
+@SET MVNW_USERNAME=
+@SET MVNW_PASSWORD=
+@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*)
+@echo Cannot start maven from wrapper >&2 && exit /b 1
+@GOTO :EOF
+: end batch / begin powershell #>
+
+$ErrorActionPreference = "Stop"
+if ($env:MVNW_VERBOSE -eq "true") {
+ $VerbosePreference = "Continue"
+}
+
+# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
+$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl
+if (!$distributionUrl) {
+ Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
+}
+
+switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
+ "maven-mvnd-*" {
+ $USE_MVND = $true
+ $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip"
+ $MVN_CMD = "mvnd.cmd"
+ break
+ }
+ default {
+ $USE_MVND = $false
+ $MVN_CMD = $script -replace '^mvnw','mvn'
+ break
+ }
+}
+
+# apply MVNW_REPOURL and calculate MAVEN_HOME
+# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
+if ($env:MVNW_REPOURL) {
+ $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" }
+ $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')"
+}
+$distributionUrlName = $distributionUrl -replace '^.*/',''
+$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$',''
+$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain"
+if ($env:MAVEN_USER_HOME) {
+ $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain"
+}
+$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join ''
+$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"
+
+if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
+ Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME"
+ Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
+ exit $?
+}
+
+if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {
+ Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl"
+}
+
+# prepare tmp dir
+$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
+$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir"
+$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
+trap {
+ if ($TMP_DOWNLOAD_DIR.Exists) {
+ try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
+ catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
+ }
+}
+
+New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null
+
+# Download and Install Apache Maven
+Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
+Write-Verbose "Downloading from: $distributionUrl"
+Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
+
+$webclient = New-Object System.Net.WebClient
+if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {
+ $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
+}
+[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
+$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null
+
+# If specified, validate the SHA-256 sum of the Maven distribution zip file
+$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum
+if ($distributionSha256Sum) {
+ if ($USE_MVND) {
+ Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties."
+ }
+ Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
+ if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {
+ Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property."
+ }
+}
+
+# unzip and move
+Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null
+Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null
+try {
+ Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null
+} catch {
+ if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) {
+ Write-Error "fail to move MAVEN_HOME"
+ }
+} finally {
+ try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
+ catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
+}
+
+Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/pom.xml b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/pom.xml
new file mode 100644
index 0000000..addccc1
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/pom.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <artifactId>pipIrr-web</artifactId>
+ <groupId>com.dy</groupId>
+ <version>1.0.0</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <packaging>jar</packaging>
+ <artifactId>pipIrr-web-terminal</artifactId>
+ <name>pipIrr-web-terminal</name>
+ <description>鍏呭�兼満绯荤粺</description>
+
+ <build>
+ <plugins>
+ <!-- 鐢熸垚涓嶅寘鍚緷璧杍ar鐨勫彲鎵цjar鍖�
+ <plugin>
+ !- spring boot鎻愪緵鐨刴aven鎵撳寘鎻掍欢 -
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ !-
+ <goals>
+ <goal>repackage</goal>
+ </goals>
+ -
+ <configuration>
+ !- 涓嶅姞鐨勮瘽鏈�缁堝寘鍚嶄负: ${artifactId}-${version}.jar, 鍔犱簡鐨勮瘽鏈�缁堝寘鍚�: ${artifactId}-${version}-${classifier}.jar -
+ <classifier>execute</classifier>
+ !- 涓嶆寚瀹氱敓鎴愯矾寰勭殑璇�, 榛樿淇濆瓨鍦� ${build.directory} 涓� -
+ <outputDirectory>${project.build.directory}/execute</outputDirectory>
+ <finalName>${artifactId}-${version}</finalName>
+ <layout>ZIP</layout>
+ <mainClass>com.dy.pipIrrBase.PipIrrBaseApplication</mainClass>
+ <includes>
+ <include>
+ <groupId>com.dy</groupId>
+ <artifactId>pipIrr-common</artifactId>
+ </include>
+ <include>
+ <groupId>com.dy</groupId>
+ <artifactId>pipIrr-global</artifactId>
+ </include>
+ </includes>
+ <excludes>
+ <exclude>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ </exclude>
+ </excludes>
+ </configuration>
+ </execution>
+ </executions>
+
+ </plugin>
+ -->
+ <!-- 鎷疯礉渚濊禆鐨刯ar鍖呭埌lib鐩綍-->
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <configuration>
+ <!-- 涓嶅姞鐨勮瘽鏈�缁堝寘鍚嶄负: ${artifactId}-${version}.jar, 鍔犱簡鐨勮瘽鏈�缁堝寘鍚�: ${artifactId}-${version}-${classifier}.jar
+ <classifier>execute</classifier>
+ -->
+ <!-- ${project.build.directory}鏄痬aven鍙橀噺锛屽唴缃殑锛岃〃绀簍arget鐩綍,濡傛灉涓嶅啓锛屽皢鍦ㄦ牴鐩綍涓嬪垱寤�/lib -->
+ <outputDirectory>${project.build.directory}/lib</outputDirectory>
+ <!-- excludeTransitive:鏄惁涓嶅寘鍚棿鎺ヤ緷璧栧寘锛屾瘮濡傛垜浠緷璧朅锛屼絾鏄疉鍙堜緷璧栦簡B锛屾垜浠槸鍚︿篃瑕佹妸B鎵撹繘鍘� 榛樿涓嶆墦-->
+ <excludeTransitive>false</excludeTransitive>
+ <!-- 澶嶅埗鐨刯ar鏂囦欢鍘绘帀鐗堟湰淇℃伅 -->
+ <stripVersion>false</stripVersion>
+ <finalName>${project.artifactId}-${project.version}</finalName>
+ <layout>ZIP</layout>
+ <mainClass>com.dy.pipIrrBase.PipIrrBaseApplication</mainClass>
+ <includes>
+ <include>
+ <groupId>com.dy</groupId>
+ <artifactId>pipIrr-common</artifactId>
+ </include>
+ <include>
+ <groupId>com.dy</groupId>
+ <artifactId>pipIrr-global</artifactId>
+ </include>
+ </includes>
+ <excludes>
+ <exclude>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ </exclude>
+ </excludes>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <!-- 璁剧疆java缂栬瘧鐗堟湰锛岃繍琛岀幆澧冪増鏈� -->
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <!-- source锛� 婧愪唬鐮佺紪璇戠増鏈紱target锛� 鐩爣骞冲彴缂栬瘧鐗堟湰锛沞ncoding锛� 瀛楃闆嗙紪鐮併�� -->
+ <configuration>
+ <source>${java.version}</source>
+ <target>${java.version}</target>
+ <encoding>${encoding}</encoding>
+ </configuration>
+ </plugin>
+ <plugin>
+ <!-- 瑙e喅璧勬簮鏂囦欢鐨勭紪鐮侀棶棰� -->
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <configuration>
+ <encoding>${encoding}</encoding>
+ </configuration>
+ </plugin>
+ <plugin>
+ <!-- maven閲屾墽琛屾祴璇曠敤渚嬬殑鎻掍欢 -->
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <skipTests>true</skipTests>
+ </configuration>
+ </plugin>
+ <plugin>
+ <!-- 涓嬮潰瑙e喅锛氬綋杩涜Maven Lifecycle package鏃舵姤閿欙細Could not find artifact org.apache.mina:mina-core:bundle:2.2.1 in maven (https://repo1.maven.org/maven2/)-->
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/PipIrrTerminalApplication.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/PipIrrTerminalApplication.java
new file mode 100644
index 0000000..e27b024
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/PipIrrTerminalApplication.java
@@ -0,0 +1,28 @@
+package com.dy.pipIrrTerminal;
+
+import com.dy.common.multiDataSource.EnableMultiDataSource;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.context.annotation.FilterType;
+
+@SpringBootApplication
+@EnableAspectJAutoProxy
+@EnableMultiDataSource
+@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrTerminal"},
+ excludeFilters = {
+ @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
+ com.dy.common.singleDataSource.DruidDataSourceConfig.class //鎺掗櫎鍗曟暟鎹簮
+ })
+ }
+)
+@MapperScan({"com.dy.pipIrrGlobal.daoPr", "com.dy.pipIrrGlobal.daoBa","com.dy.pipIrrGlobal.daoFi", "com.dy.pipIrrGlobal.daoSe"})
+public class PipIrrTerminalApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(PipIrrTerminalApplication.class, args);
+ }
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java
new file mode 100644
index 0000000..1c6cc15
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java
@@ -0,0 +1,52 @@
+package com.dy.pipIrrTerminal.card;
+
+import com.dy.common.aop.SsoAop;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.pipIrrGlobal.voSe.VoTermRecharge;
+import com.dy.pipIrrTerminal.card.dto.ActiveCard;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.MediaType;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-05-08 10:15
+ * @LastEditTime 2025-05-08 10:15
+ * @Description
+ */
+
+@Slf4j
+@RestController
+@RequestMapping(path = "card")
+@RequiredArgsConstructor
+public class CardCtrl {
+ private final CardSv cardSv;
+
+ @PostMapping(path = "activeTermCard", consumes = MediaType.APPLICATION_JSON_VALUE)
+ @Transactional(rollbackFor = Exception.class)
+ @SsoAop()
+ public BaseResponse<VoTermRecharge> activeTermCard(@RequestBody @Valid ActiveCard po, BindingResult bindingResult) {
+ if (bindingResult != null && bindingResult.hasErrors()) {
+ return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+ }
+
+ Map map_result = cardSv.activeOrReissueTermCard(po);
+ if(map_result.get("success").equals(false)) {
+ return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString());
+ }
+ return BaseResponseUtils.buildSuccess(map_result.get("content")) ;
+
+ }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java
new file mode 100644
index 0000000..e244ab3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java
@@ -0,0 +1,267 @@
+package com.dy.pipIrrTerminal.card;
+
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper;
+import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper;
+import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper;
+import com.dy.pipIrrGlobal.daoSe.SeClientMapper;
+import com.dy.pipIrrGlobal.pojoSe.SeCardOperate;
+import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
+import com.dy.pipIrrGlobal.voSe.VoTermRecharge;
+import com.dy.pipIrrTerminal.card.dto.ActiveCard;
+import com.dy.pipIrrTerminal.card.dto.DtoRecharge;
+import com.dy.pipIrrTerminal.card.enums.CardStateENUM;
+import com.dy.pipIrrTerminal.card.enums.LastOperateENUM;
+import com.dy.pipIrrTerminal.card.enums.OperateTypeENUM;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-05-08 10:15
+ * @LastEditTime 2025-05-08 10:15
+ * @Description
+ */
+
+@Slf4j
+@Service
+public class CardSv {
+ @Autowired
+ private SeCardOperateMapper seCardOperateMapper;
+
+ @Autowired
+ private SeClientCardMapper seClientCardMapper;
+
+ @Autowired
+ private SeClientMapper seClientMapper;
+
+ @Autowired
+ private PrWaterPriceMapper prWaterPriceMapper;
+
+ @Value("${project.projectNo}")
+ private Integer projectNo;
+
+ /**
+ * 鏍规嵁姘村崱鍦板潃鍒ゆ柇璇ュ崱鏄惁鍙互寮�鍗�
+ * @param cardAddr
+ * @return true:鍙互寮�鍗�
+ */
+ public Boolean canActiveCard(String cardAddr) {
+ // 鎸囧畾姘村崱鍦板潃鐨勬按鍗℃暟閲忥紝鏃犳晥鍗$墖鎺掗櫎鍦ㄥ
+ Long cardCount = Optional.ofNullable(seClientCardMapper.getCountByCardAddr(cardAddr)).orElse(0L);
+ if (cardCount == 0) {
+ return true;
+ }
+
+ // 鎸囧畾姘村崱鍦板潃涓旀甯哥姸鎬佹垨鎸傚け鐘舵�佺殑姘村崱鏁伴噺
+ cardCount = Optional.ofNullable(seClientCardMapper.getCountByCardAddrAndState(cardAddr)).orElse(0L);
+ if (cardCount == 0) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * 鏍规嵁鍐滄埛缂栧彿鑾峰彇5绾ц鏀垮尯鍒掍覆areaCode锛岃ˉ鍗¤繃绋嬩腑寮�鏂板崱浣跨敤
+ * @param clientId
+ * @return
+ */
+ public Long getAreaCodeById(Long clientId) {
+ return seClientMapper.getAreaCodeById(clientId);
+ }
+
+ public String getCardNumOfMax(String areaCode) {
+ return seClientCardMapper.getCardNumOfMax(areaCode);
+ }
+
+ public Map generateCardNum(Long clientId) {
+ Map map_cardNum = new HashMap<>();
+ map_cardNum.put("success", false);
+ map_cardNum.put("content", null);
+
+ // 鑾峰彇5绾ц鏀垮尯鍒掍覆areaCode
+ Long areaCodeL = getAreaCodeById(clientId);
+ if (areaCodeL == null) {
+ map_cardNum.put("msg", "璇ュ啘鎴疯鏀垮尯鍒掑紓甯�");
+ return map_cardNum;
+ }
+
+ String areaCode = String.valueOf(areaCodeL);
+ String cardNum = Optional.ofNullable(getCardNumOfMax(areaCode)).orElse("");
+ if (cardNum != null && cardNum.trim().length() > 0) {
+ Integer number = Integer.parseInt(cardNum.substring(12));
+ number = number + 1;
+ if (number > 65535) {
+ map_cardNum.put("msg", "姘村崱缂栧彿宸叉弧");
+ return map_cardNum;
+ }
+ cardNum = cardNum.substring(0, 12) + String.format("%05d", number);
+ } else {
+ cardNum = areaCode + "00001";
+ }
+
+ map_cardNum.put("success", true);
+ map_cardNum.put("content", cardNum);
+ return map_cardNum;
+ }
+
+ public String generateOrderNo() {
+ DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyMMddHHmmss");
+ LocalDateTime dateTime = LocalDateTime.now();
+ Random random = new Random();
+ String CHARACTERS = "0123456789";
+ StringBuilder sb = new StringBuilder(4);
+ for (int i = 0; i < 4; i++) {
+ int index = random.nextInt(CHARACTERS.length());
+ sb.append(CHARACTERS.charAt(index));
+ }
+ return dtf.format(dateTime) + sb.toString();
+ }
+
+
+ public Map addCardAndOperate(ActiveCard po, Long cardNum, String orderNo) {
+ Map map = new HashMap<>();
+ map.put("success", false);
+ map.put("content", null);
+
+ // amount锛氬厖鍊兼帴鍙d负杈撳叆鍙傛暟锛岃ˉ鍗℃帴鍙d负鍘熷崱閫�杩橀噾棰�
+ SeClientCard seClientCard = new SeClientCard();
+ seClientCard.setProtocol(po.getProtocol());
+ seClientCard.setCardaddr(po.getCardAddr());
+ seClientCard.setCardnum(String.valueOf(cardNum));
+ seClientCard.setClientid(po.getClientId());
+ seClientCard.setMoney(po.getAmount());
+ seClientCard.setState(CardStateENUM.INVALID.getCode());
+ if (po.getOriginalCardId() != null) {
+ // 琛ュ崱
+ seClientCard.setOriginalCardId(po.getOriginalCardId());
+ seClientCard.setLastoper(LastOperateENUM.REPLACE.getCode());
+ seClientCard.setReplacedt(new Date());
+ } else {
+ // 寮�鏂板崱
+ seClientCard.setLastoper(LastOperateENUM.ACTIVE.getCode());
+ seClientCard.setCreatedt(new Date());
+ }
+
+ seClientCardMapper.insert(seClientCard);
+ Long cardId = Optional.ofNullable(seClientCard.getId()).orElse(0L);
+ if (cardId == 0) {
+ map.put("msg", "寮�鍗″け璐�-鍐滄埛鍗″啓鍏ュ紓甯�");
+ return map;
+ }
+
+ SeCardOperate seCardOperate = new SeCardOperate();
+ seCardOperate.setCardId(cardId);
+ seCardOperate.setClientId(po.getClientId());
+ seCardOperate.setMoney(0f);
+ seCardOperate.setCardCost(po.getCardCost());
+ seCardOperate.setPaymentId(po.getPaymentId());
+ if (po.getOriginalCardId() != null) {
+ // 琛ュ崱
+ seCardOperate.setOperateType(OperateTypeENUM.REISSUE.getCode());
+ seCardOperate.setNoTradeAmount(po.getAmount());
+ } else {
+ // 寮�鏂板崱
+ seCardOperate.setOperateType(OperateTypeENUM.ACTIVE.getCode());
+ }
+ seCardOperate.setRemarks(po.getRemarks());
+ seCardOperate.setOperator(po.getOperator());
+ seCardOperate.setOperateDt(new Date());
+ seCardOperate.setOrderNo(orderNo);
+ seCardOperate.setOperateValid((byte) 1);
+
+ seCardOperateMapper.insert(seCardOperate);
+ Long rec = Optional.ofNullable(seCardOperate.getId()).orElse(0L);
+ if (rec == 0) {
+ map.put("msg", "寮�鍗″け璐�-寮�鍗¤褰曞啓鍏ュ紓甯�");
+ return map;
+ }
+
+ map.put("success", true);
+ return map;
+ }
+
+ public Map plusRecharge(ActiveCard po, Long cardNum) {
+ Map map = new HashMap<>();
+ map.put("success", false);
+ map.put("content", null);
+
+ DtoRecharge dtoRecharge = new DtoRecharge();
+ dtoRecharge.setCardNum(cardNum);
+ dtoRecharge.setAmount(po.getAmount());
+ dtoRecharge.setPaymentId(po.getPaymentId());
+ dtoRecharge.setRemarks(po.getRemarks());
+ dtoRecharge.setOperator(po.getOperator());
+ dtoRecharge.setMoney(0f);
+ dtoRecharge.setGift(0f);
+ dtoRecharge.setPrice(0f);
+ //BaseResponse<Boolean> job = cardOperateSv.addRecharge(dtoRecharge);
+ BaseResponse<Boolean> job = null;
+ if (!job.getCode().equals("0001")) {
+ map.put("msg", "寮�鍗″け璐�-鍏呭�煎紓甯�");
+ return map;
+ }
+
+ map.put("success", true);
+ return map;
+ }
+
+ public Map activeOrReissueTermCard(ActiveCard po) {
+ Map map = new HashMap<>();
+ map.put("success", false);
+ map.put("content", null);
+ Float amount = po.getAmount();
+ Long originalCardId = po.getOriginalCardId();
+
+ if (!canActiveCard(po.getCardAddr())) {
+ map.put("msg", "寮�鍗″け璐�-姝ゅ崱宸插瓨鍦�");
+ return map;
+ }
+
+ Map map_cardNum = generateCardNum(po.getClientId());
+ if(map_cardNum.get("success").equals(false)) {
+ map.put("msg", map_cardNum.get("msg").toString());
+ return map;
+ }
+ Long cardNum = Long.parseLong(map_cardNum.get("content").toString());
+
+ String orderNo = generateOrderNo();
+ Map map_addCardAndOperate = addCardAndOperate(po, cardNum, orderNo);
+ if(map_addCardAndOperate.get("success").equals(false)) {
+ map.put("msg", map_addCardAndOperate.get("msg").toString());
+ return map;
+ }
+
+ if (amount != null && amount > 0 && originalCardId == null) {
+ Map map_plusRecharge = plusRecharge(po, cardNum);
+ if(map_plusRecharge.get("success").equals(false)) {
+ map.put("msg", map_plusRecharge.get("msg").toString());
+ return map;
+ }
+ }
+
+ Float balance = Optional.ofNullable(seClientCardMapper.getMoneyByCardNum(cardNum)).orElse(0f);
+ Double waterPrice = prWaterPriceMapper.getPrice();
+
+ VoTermRecharge voTermRecharge = new VoTermRecharge();
+ voTermRecharge.setProjectNo(projectNo);
+ voTermRecharge.setCardNum(cardNum);
+ voTermRecharge.setBalance(balance);
+ voTermRecharge.setWaterPrice(waterPrice);
+ voTermRecharge.setTime(new Date());
+ voTermRecharge.setOrderNo(orderNo);
+
+ map.put("success", true);
+ map.put("msg", "鎿嶄綔鎴愬姛");
+ map.put("content", voTermRecharge);
+ return map;
+ }
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/ActiveCard.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/ActiveCard.java
new file mode 100644
index 0000000..5e5f365
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/ActiveCard.java
@@ -0,0 +1,69 @@
+package com.dy.pipIrrTerminal.card.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-05-08 10:26
+ * @LastEditTime 2025-05-08 10:26
+ * @Description
+ */
+
+@Data
+public class ActiveCard {
+ public static final long serialVersionUID = 202505081027001L;
+
+ /**
+ * 鍗忚鍚嶇О
+ */
+ @NotBlank(message = "鍗忚涓嶈兘涓虹┖")
+ private String protocol;
+
+ /**
+ * 姘村崱鍦板潃锛屼粎淇濆瓨锛屾棤涓氬姟
+ */
+ @NotBlank(message = "姘村崱鍦板潃涓嶈兘涓虹┖")
+ private String cardAddr;
+
+ /**
+ * 鍐滄埛ID锛堜富閿級
+ */
+ @NotNull(message = "鍐滄埛涓嶈兘涓虹┖")
+ private Long clientId;
+
+ /**
+ * 鍘熸寕澶卞崱ID锛岃ˉ鍗¤繃绋嬪紑鍗¢渶瑕�
+ */
+ private Long originalCardId;
+
+ /**
+ * 鍗$墖璐圭敤
+ */
+ @NotNull(message = "鍗$墖璐圭敤涓嶈兘涓虹┖")
+ private Integer cardCost;
+
+ /**
+ * 鍏呭�奸噾棰�
+ */
+ private Float amount;
+
+ /**
+ * 鏀粯鏂瑰紡缂栧彿
+ */
+ @NotNull(message = "浠樻柟寮忎笉鑳戒负绌�")
+ private Long paymentId;
+
+ /**
+ * 澶囨敞淇℃伅
+ */
+ private String remarks;
+
+ /**
+ * 鎿嶄綔浜虹紪鍙�
+ */
+ @NotNull(message = "鎿嶄綔浜轰笉鑳戒负绌�")
+ private Long operator;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoRecharge.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoRecharge.java
new file mode 100644
index 0000000..0497da6
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoRecharge.java
@@ -0,0 +1,73 @@
+package com.dy.pipIrrTerminal.card.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Positive;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-05-08 14:46
+ * @LastEditTime 2025-05-08 14:46
+ * @Description
+ */
+
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class DtoRecharge {
+ public static final long serialVersionUID = 202505081447001L;
+
+ /**
+ * 姘村崱缂栧彿
+ */
+ @NotNull(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
+ private Long cardNum;
+
+ /**
+ * 鍐滄埛ID锛屼笉鏄厖鍊兼帴鍙d紶鍏ワ紝鐢卞紑鍗″璞′紶鍏ワ紝淇濆瓨鍏呭�艰褰曢渶瑕�
+ */
+ private Long clientId;
+
+ /**
+ * 鍗$墖浣欓
+ */
+ @Min(value = 0, message="鍗$墖浣欓涓嶈兘灏忎簬0")
+ private Float money;
+
+ /**
+ * 鍏呭�奸噾棰�
+ */
+ private Float amount;
+
+ /**
+ * 璧犻�侀噾棰�
+ */
+ @Min(value = 0, message="璧犻�侀噾棰濅笉鑳藉皬浜�0")
+ private Float gift;
+
+ /**
+ * 浠樻鏂瑰紡缂栧彿
+ */
+ private Long paymentId;
+
+ /**
+ * 姘翠环
+ */
+ @Min(value = 0, message="姘翠环涓嶈兘灏忎簬0")
+ private Float price;
+
+ /**
+ * 澶囨敞淇℃伅
+ */
+ private String remarks;
+
+ /**
+ * 鎿嶄綔浜虹紪鍙�
+ */
+ @Positive(message = "鎿嶄綔浜虹紪鍙峰繀椤讳负澶т簬0鐨勬暣鏁�")
+ private Long operator;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/CardStateENUM.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/CardStateENUM.java
new file mode 100644
index 0000000..1db31e2
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/CardStateENUM.java
@@ -0,0 +1,23 @@
+package com.dy.pipIrrTerminal.card.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-05-08 11:36
+ * @LastEditTime 2025-05-08 11:36
+ * @Description
+ */
+
+@Getter
+@AllArgsConstructor
+public enum CardStateENUM {
+ NORMAL((byte)1, "姝e父"),
+ CANCELLED((byte)2, "宸叉敞閿�"),
+ LOSS((byte)3, "宸叉寕澶�"),
+ INVALID((byte)4, "鏃犳晥鐨�");
+
+ private final Byte code;
+ private final String message;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/LastOperateENUM.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/LastOperateENUM.java
new file mode 100644
index 0000000..54c5781
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/LastOperateENUM.java
@@ -0,0 +1,29 @@
+package com.dy.pipIrrTerminal.card.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-05-08 11:34
+ * @LastEditTime 2025-05-08 11:34
+ * @Description
+ */
+
+@Getter
+@AllArgsConstructor
+public enum LastOperateENUM {
+ ACTIVE((byte)1, "寮�鍗�"),
+ RECHARGE((byte)2, "鍏呭��"),
+ CANCEL((byte)3, "娉ㄩ攢"),
+ REPLACE((byte)4, "琛ュ崱"),
+ REFUND((byte)5, "琛ユ墸"),
+ LOSS((byte)6, "鎸傚け"),
+ REVERSAL((byte)7, "鍐叉"),
+ UNLOCK((byte)8, "瑙i攣"),
+ CONSUME((byte)9, "娑堣垂"),
+ WRITE_BACK((byte)10, "鍙嶅啓");
+
+ private final Byte code;
+ private final String message;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/OperateTypeENUM.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/OperateTypeENUM.java
new file mode 100644
index 0000000..059420e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/OperateTypeENUM.java
@@ -0,0 +1,29 @@
+package com.dy.pipIrrTerminal.card.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-05-08 11:45
+ * @LastEditTime 2025-05-08 11:45
+ * @Description
+ */
+
+@Getter
+@AllArgsConstructor
+public enum OperateTypeENUM {
+ ACTIVE((byte)1, "寮�鍗�"),
+ RECHARGE((byte)2, "鍏呭��"),
+ CANCEL((byte)3, "閿�鍗�"),
+ REISSUE((byte)4, "琛ュ崱"),
+ REFUND((byte)5, "琛ユ墸"),
+ LOSS((byte)6, "鎸傚け"),
+ REVERSAL((byte)7, "鍐叉"),
+ UNLOCK((byte)8, "瑙i攣"),
+ CONSUME((byte)9, "娑堣垂"),
+ WRITE_BACK((byte)10, "鍙嶅啓");
+
+ private final Byte code;
+ private final String message;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientCtrl.java
new file mode 100644
index 0000000..59e84d5
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientCtrl.java
@@ -0,0 +1,67 @@
+package com.dy.pipIrrTerminal.client;
+
+import com.dy.common.aop.SsoAop;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pipIrrGlobal.voSe.VoTermClient;
+import com.dy.pipIrrTerminal.client.qo.QoClient;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-05-07 17:23
+ * @LastEditTime 2025-05-07 17:23
+ * @Description
+ */
+
+@Slf4j
+@RestController
+@RequestMapping(path = "client")
+@RequiredArgsConstructor
+public class ClientCtrl {
+ private final ClientSv clientSv;
+
+ /**
+ * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍐滄埛鏁版嵁_鍏呭�兼満
+ * @param vo
+ * @return
+ */
+ @GetMapping(path = "getTermClients")
+ @SsoAop()
+ public BaseResponse<QueryResultVo<List<VoTermClient>>> getTermClients(QoClient vo){
+ try {
+ QueryResultVo<List<VoTermClient>> res = clientSv.getTermClients(vo);
+ return BaseResponseUtils.buildSuccess(res);
+ } catch (Exception e) {
+ log.error("鏌ヨ鍐滄埛寮傚父", e);
+ return BaseResponseUtils.buildException(e.getMessage()) ;
+ }
+ }
+
+ /**
+ * 鏍规嵁鍐滄埛ID鑾峰彇涓�涓啘鎴锋暟鎹甠鍏呭�兼満
+ * @param id
+ * @return
+ */
+ @GetMapping(path = "/getTermOne/{id}")
+ @SsoAop()
+ public BaseResponse<VoTermClient> getTermOneClient(@PathVariable("id") Long id){
+ if(id == null) {
+ return BaseResponseUtils.buildErrorMsg("鍐滄埛ID涓嶈兘涓虹┖");
+ }
+ try {
+ return BaseResponseUtils.buildSuccess(clientSv.getTermOneClient(id));
+ } catch (Exception e) {
+ log.error("鏌ヨ鍐滄埛寮傚父", e);
+ return BaseResponseUtils.buildException(e.getMessage()) ;
+ }
+ }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientSv.java
new file mode 100644
index 0000000..2760b73
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientSv.java
@@ -0,0 +1,57 @@
+package com.dy.pipIrrTerminal.client;
+
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pipIrrGlobal.daoSe.SeClientMapper;
+import com.dy.pipIrrGlobal.voSe.VoClient;
+import com.dy.pipIrrGlobal.voSe.VoTermClient;
+import com.dy.pipIrrTerminal.client.qo.QoClient;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.common.utils.PojoUtils;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-05-07 17:25
+ * @LastEditTime 2025-05-07 17:25
+ * @Description
+ */
+
+@Slf4j
+@Service
+public class ClientSv {
+ @Autowired
+ private SeClientMapper seClientMapper;
+
+ /**
+ * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍐滄埛鏁版嵁_鍏呭�兼満
+ * @param queryVo
+ * @return
+ */
+ public QueryResultVo<List<VoTermClient>> getTermClients(QoClient queryVo){
+ Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo) ;
+
+ Long itemTotal = (long)seClientMapper.getTermClientCount(params);
+ QueryResultVo<List<VoTermClient>> rsVo = new QueryResultVo<>() ;
+ rsVo.pageSize = queryVo.pageSize ;
+ rsVo.pageCurr = queryVo.pageCurr ;
+
+ rsVo.calculateAndSet(itemTotal, params);
+ rsVo.obj = seClientMapper.getTermClients(params);
+
+ return rsVo ;
+ }
+
+ /**
+ * 鏍规嵁鍐滄埛ID鑾峰彇涓�涓啘鎴锋暟鎹甠鍏呭�兼満
+ * @param clientId
+ * @return
+ */
+ public VoTermClient getTermOneClient(Long clientId) {
+ return seClientMapper.getTermOneClient(clientId);
+ }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/qo/QoClient.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/qo/QoClient.java
new file mode 100644
index 0000000..cd52785
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/qo/QoClient.java
@@ -0,0 +1,25 @@
+package com.dy.pipIrrTerminal.client.qo;
+
+import com.dy.common.webUtil.QueryConditionVo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-05-07 17:16
+ * @LastEditTime 2025-05-07 17:16
+ * @Description 鍏呭�兼満鍐滄埛鏌ヨ瀵硅薄
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class QoClient extends QueryConditionVo {
+
+ public String name;
+
+ public String clientNum;
+
+ public String phone;
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/config/WebFilterConfiguration.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/config/WebFilterConfiguration.java
new file mode 100644
index 0000000..2a3007a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/config/WebFilterConfiguration.java
@@ -0,0 +1,52 @@
+package com.dy.pipIrrTerminal.config;
+
+import com.dy.common.webFilter.DevOfDataSourceNameSetFilter;
+import com.dy.common.webFilter.UserTokenFilter;
+import jakarta.servlet.Filter;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025/05/07 16:02
+ * @LastEditTime 2025/05/07 16:02
+ * @Description
+ */
+
+@Configuration
+public class WebFilterConfiguration {
+
+ @Value("${pipIrr.global.dev}")
+ public String isDevStage ;//鏄惁涓哄紑鍙戦樁娈�
+ @Value("${pipIrr.global.dsName}")
+ public String dsName ;//寮�鍙戦樁娈电殑鏁版嵁婧愬悕绉�
+
+ /**
+ * DevOfDataSourceNameSetFilter涓嶶serTokenFilter鍙兘涓�涓閰嶇疆涓婏紝
+ * 鎵�浠ヤ粬浠殑order閮芥槸1
+ */
+ private static final int order_UserTokenFilter = 1 ;//涓庝笅闈�
+ private static final int order_DevOfDataSourceNameSetFilter = 1 ;
+
+
+ @Bean
+ public FilterRegistrationBean<? extends Filter> RegFilter() {
+ FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<>();
+ if(this.isDevStage != null && !this.isDevStage.trim().equals("") && this.isDevStage.trim().equalsIgnoreCase("true")){
+ filterRegistrationBean.setFilter(new DevOfDataSourceNameSetFilter());
+ filterRegistrationBean.addUrlPatterns("/*");//閰嶇疆杩囨护瑙勫垯
+ filterRegistrationBean.addInitParameter("dataSourceName",dsName);//璁剧疆init鍙傛暟
+ filterRegistrationBean.setName("DevOfDataSourceNameSetFilter");//璁剧疆杩囨护鍣ㄥ悕绉�
+ filterRegistrationBean.setOrder(order_DevOfDataSourceNameSetFilter);//鎵ц娆″簭
+ }else{
+ filterRegistrationBean.setFilter(new UserTokenFilter());
+ filterRegistrationBean.addUrlPatterns("/*");//閰嶇疆杩囨护瑙勫垯
+ filterRegistrationBean.setName("UserTokenFilter");//璁剧疆杩囨护鍣ㄥ悕绉�
+ filterRegistrationBean.setOrder(order_UserTokenFilter);//鎵ц娆″簭
+ }
+ return filterRegistrationBean;
+ }
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/config/WebListenerConfiguration.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/config/WebListenerConfiguration.java
new file mode 100644
index 0000000..c45d0f8
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/config/WebListenerConfiguration.java
@@ -0,0 +1,35 @@
+package com.dy.pipIrrTerminal.config;
+
+import com.dy.common.webListener.GenerateIdSetSuffixListener;
+import jakarta.servlet.ServletContextListener;
+import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025/05/07 16:02
+ * @LastEditTime 2025/05/07 16:02
+ * @Description
+ */
+@Configuration
+public class WebListenerConfiguration {
+
+ /**
+ * 鍚姩椤哄簭
+ */
+ private static final int order_idSetSuffix = 1 ;
+
+
+ /**
+ * 鍐呴儴鎻愪緵listener锛岃listener鍦ㄧ郴缁熷惎鍔ㄦ椂锛屾牴鎹厤缃� 璁剧疆ID浜х敓鍣ㄧ殑鍚庣紑
+ * @return 娉ㄥ唽Bean
+ */
+ @Bean
+ public ServletListenerRegistrationBean<? extends ServletContextListener> regSsoListener() {
+ ServletListenerRegistrationBean<GenerateIdSetSuffixListener> listenerRegistrationBean = new ServletListenerRegistrationBean<>();
+ listenerRegistrationBean.setListener(new GenerateIdSetSuffixListener());
+ listenerRegistrationBean.setOrder(order_idSetSuffix);
+ return listenerRegistrationBean;
+ }
+}
diff --git "a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/application\050121\346\234\215\345\212\241\345\231\250\051.yml" "b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/application\050121\346\234\215\345\212\241\345\231\250\051.yml"
new file mode 100644
index 0000000..1907b46
--- /dev/null
+++ "b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/application\050121\346\234\215\345\212\241\345\231\250\051.yml"
@@ -0,0 +1,4 @@
+spring:
+ profiles:
+ #121鏈嶅姟鍣細common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self
+ include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self
diff --git "a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/application\050233\346\234\215\345\212\241\345\231\250\051.yml" "b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/application\050233\346\234\215\345\212\241\345\231\250\051.yml"
new file mode 100644
index 0000000..50d9255
--- /dev/null
+++ "b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/application\050233\346\234\215\345\212\241\345\231\250\051.yml"
@@ -0,0 +1,4 @@
+spring:
+ profiles:
+ #233鏈嶅姟鍣細common-web, global, database, database-ym, database-sp, database-test,database-mj, self
+ include: common-web, global, database, database-ym, database-sp, database-test,database-mj, self
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/application-self.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/application-self.yml
new file mode 100644
index 0000000..e2c47b9
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/application-self.yml
@@ -0,0 +1,19 @@
+#actutor鐨剋eb绔彛
+management:
+ server:
+ port: ${pipIrr.terminal.actutorPort}
+#web鏈嶅姟绔彛锛宼omcat榛樿鏄�8090
+server:
+ port: ${pipIrr.terminal.webPort}
+ servlet:
+ context-path: /terminal #web璁块棶涓婁笅鏂囪矾寰�
+ context-parameters:
+ #GenerateIdSetSuffixListener涓簲鐢紝鍙栧�艰寖鍥存槸0-99
+ idSuffix: ${pipIrr.terminal.idSuffix}
+
+logging:
+ level:
+ com:
+ dy:
+ pipIrrGlobal:
+ daoSe: trace
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/application.yml
new file mode 100644
index 0000000..a24b0b5
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/application.yml
@@ -0,0 +1,3 @@
+spring:
+ profiles:
+ include: common-web, global, database, database-ym, database-sp, database-test,database-mj, self
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/log4j2.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/log4j2.yml
new file mode 100644
index 0000000..0e7508c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/resources/log4j2.yml
@@ -0,0 +1,80 @@
+Configuration:
+ #status锛岃繖涓敤浜庤缃甽og4j2鑷韩鍐呴儴鐨勪俊鎭緭鍑猴紝鍙互涓嶈缃紝褰撹缃垚trace鏃讹紝浣犱細鐪嬪埌log4j2鍐呴儴鍚勭璇︾粏杈撳嚭锛涘彲浠ヨ缃垚Off(鍏抽棴)鎴朎rror(鍙緭鍑洪敊璇俊鎭�)
+ status: Error
+
+ Properties: # 瀹氫箟鍏ㄥ眬鍙橀噺
+ Property:
+ #鏃ュ織鏂囦欢瀛樺偍鐨勭洰褰�
+ - name: log.path
+ value: ./logs
+ #鏃ュ織鏂囦欢瀛樺偍鍚嶇О
+ - name: project.name
+ value: pipIrrOperation
+
+ #瀹氫箟杈撳嚭鍣紝鍙互杈撳嚭鍒版帶鍒跺彴鍜屾枃浠�.
+ Appenders:
+ #杈撳嚭鍒版帶鍒跺彴
+ Console:
+ #Appender鍛藉悕
+ name: CONSOLE
+ target: SYSTEM_OUT
+ ThresholdFilter:
+ level: debug #杈撳嚭鏃ュ織绾у埆锛岃緭鍑烘棩蹇楁椂锛岄鍏堢敱Loggers.Root.level鎴朙oggers.Logger.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢辨湰level鍒ゆ柇鏄惁杈撳嚭
+ onMatch: ACCEPT #onMatch=ACCEPT 澶т簬绛変簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織杈撳嚭
+ onMismatch: DENY #onMismatch=DENY 灏忎簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織涓嶈緭鍑�
+ #鏃ュ織鍐呭鏍峰紡
+ PatternLayout:
+ #%n-鎹㈣
+ #%m-鏃ュ織鍐呭锛岃緭鍑轰唬鐮佷腑鎸囧畾鐨勬棩蹇椾俊鎭�
+ #%p-杈撳嚭浼樺厛绾э紝鍗矰EBUG,INFO,WARN,ERROR,FATAL
+ #%r-绋嬪簭鍚姩鍒扮幇鍦ㄧ殑姣鏁�
+ #%%- 杈撳嚭涓�涓�"%" 瀛楃
+ #%t-褰撳墠绾跨▼鍚�
+ #%d-鏃ユ湡鍜屾椂闂�, 甯哥敤鐨勬牸寮忔湁%d{DATE},%d{ABSOLUTE},%d{HH:mm:ss,SSS},%d{ddMMyyyyHH:mm:ss,SSS}
+ #%l-鍚�%F%L%C%M
+ #%F-java婧愭枃浠跺悕
+ #%L-java婧愮爜琛屾暟
+ #%C-java绫诲悕,%C{1}杈撳嚭鏈�鍚庝竴涓厓绱�
+ #%M-java鏂规硶鍚�
+ pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%C.%M:%L) - %m%n"
+ # 杈撳嚭鍒版枃浠讹紝瓒呰繃10MB褰掓。
+ RollingFile:
+ - name: ROLLING_FILE
+ ignoreExceptions: false
+ fileName: ${log.path}/${project.name}.log
+ filePattern: "${log.path}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
+ ThresholdFilter:
+ level: error #杈撳嚭鏃ュ織绾у埆锛岃緭鍑烘棩蹇楁椂锛岄鍏堢敱Loggers.Root.level鎴朙oggers.Logger.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢辨湰level鍒ゆ柇鏄惁杈撳嚭
+ onMatch: ACCEPT #onMatch=ACCEPT 澶т簬绛変簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織杈撳嚭
+ onMismatch: DENY #onMismatch=DENY 灏忎簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織涓嶈緭鍑�
+ #鏃ュ織鍐呭鏍峰紡
+ PatternLayout:
+ pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%C.%M:%L) - %m%n"
+ Policies:
+ # 姣忓ぉ鏃ュ織鏂囦欢鎸夊ぇ灏忓垎瀛愭枃浠�
+ SizeBasedTriggeringPolicy:
+ size: "1 MB"
+ DefaultRolloverStrategy:
+ max: 10 #涓�澶╁唴鏃ュ織鏂囦欢鏈�澶т釜鏁�
+ Delete:
+ basePath: "${log.path}"
+ maxDepth: 2 #鍒犻櫎鏃ュ織鏂囦欢鐨勬渶澶ф繁搴�
+ IfFileName:
+ glob: "${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
+ IfLastModified:
+ age: "30d" #鏃ュ織鏂囦欢淇濈暀鐨勬渶澶уぉ鏁�
+ Loggers:
+ Root:
+ level: info #鏃ュ織杈撳嚭绾у埆锛屽叡鏈�8涓骇鍒紝鎸夌収浠庝綆鍒伴珮涓猴細all < trace < debug < info < warn < error < fatal < off
+ AppenderRef: #Root鐨勫瓙鑺傜偣锛岀敤鏉ユ寚瀹氳鏃ュ織杈撳嚭鍒板摢涓狝ppender.
+ - ref: CONSOLE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.Console.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+ - ref: ROLLING_FILE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.RollingFile.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+ # 涓哄寘閰嶇疆鐗规畩鐨凩og绾у埆锛屾柟渚胯皟璇曪紝
+ # 涓嶅彈Loggers.Root.level闄愬埗
+ Logger:
+ - name: org.apache.dubbo
+ additivity: false #鍘婚櫎閲嶅鐨刲og
+ level: error #杈撳嚭鏃ュ織绾у埆
+ AppenderRef:
+ - ref: CONSOLE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.Console.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+ - ref: ROLLING_FILE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.RollingFile.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/test/java/com/dy/pipIrrTerminal/PipIrrWebTerminalApplicationTests.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/test/java/com/dy/pipIrrTerminal/PipIrrWebTerminalApplicationTests.java
new file mode 100644
index 0000000..891ce21
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/test/java/com/dy/pipIrrTerminal/PipIrrWebTerminalApplicationTests.java
@@ -0,0 +1,13 @@
+package com.dy.pipIrrTerminal;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class PipIrrWebTerminalApplicationTests {
+
+ @Test
+ void contextLoads() {
+ }
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pom.xml b/pipIrr-platform/pipIrr-web/pom.xml
index 077869b..8050fdf 100644
--- a/pipIrr-platform/pipIrr-web/pom.xml
+++ b/pipIrr-platform/pipIrr-web/pom.xml
@@ -33,6 +33,7 @@
<module>pipIrr-web-operation</module>
<module>pipIrr-web-file</module>
<module>pipIrr-web-temp</module>
+ <module>pipIrr-web-terminal</module>
</modules>
<dependencies>
--
Gitblit v1.8.0