From e330368cb9fdfaede328c6622abac6ecbdd6f223 Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期四, 26 六月 2025 15:46:21 +0800
Subject: [PATCH] 获取交易明细接口,根据水卡编号或水卡地址获取操作记录接口

---
 pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java           |  153 ++++++++++++++++++++++++++++++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml                               |    4 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml                                |   38 ++++++-
 pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/qo/QoTransaction.java |   37 +++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java         |   35 +++++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java                 |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/ClientCardSv.java       |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/qo/QoCards.java       |   18 ++
 8 files changed, 278 insertions(+), 19 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java
index 8757677..e75da6e 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java
@@ -97,7 +97,7 @@
      * @param cardNum 姘村崱缂栧彿
      * @return 姘村崱鎿嶄綔璁板綍鍒楄〃
      */
-    List<Map<String, Object>> getOperateRecordsByCardNum(@Param("cardNum") Long cardNum);
+    List<Map<String, Object>> getOperateRecordsByCardNum(@Param("cardNum") Long cardNum, @Param("cardAddr") String cardAddr);
 
     /**
      * 鏍规嵁姘村崱缂栧彿鑾峰彇浣欓
@@ -105,7 +105,7 @@
      * @param cardNum 姘村崱缂栧彿
      * @return 浣欓
      */
-    Float getMoneyByCardNum(@Param("cardNum") Long cardNum);
+    Float getMoneyByCardNum(@Param("cardNum") Long cardNum, @Param("cardAddr") String cardAddr);
 
     /**
      * 鏍规嵁姘村崱缂栧彿鑾峰彇鍏呭�兼�婚
@@ -113,7 +113,7 @@
      * @param cardNum
      * @return
      */
-    Float sumRechargeByCardNum(@Param("cardNum") Long cardNum);
+    Float sumRechargeByCardNum(@Param("cardNum") Long cardNum, @Param("cardAddr") String cardAddr);
 
     /**
      * 鏍规嵁姘村崱缂栧彿鑾峰彇鍗$墖鐘舵��
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 6f3c47b..f039398 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
@@ -386,7 +386,7 @@
     WHEN 2 THEN '鍏呭��'
     WHEN 3 THEN '閿�鍗�'
     WHEN 5 THEN '琛ユ墸'
-    WHEN 10 THEN '鍙嶅啓'
+<!--    WHEN 6 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,
@@ -411,7 +411,7 @@
     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_type IN(1,2,3,5)
       AND ope.operate_valid = 2
       <if test = "villageId != null and villageId > 0">
         AND cli.villageId = #{villageId}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
index 76c469e..ff87890 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
@@ -401,17 +401,34 @@
     LEFT JOIN se_client_card card ON card.id = ope.card_id
     LEFT JOIN se_payment_method pay ON pay.id = ope.payment_id
     LEFT JOIN ba_user user ON user.id = ope.operator
-    WHERE ope.operate_valid = 2 AND ope.operate_type in (1,2,3) AND cardNum = #{cardNum,jdbcType=BIGINT}
-    <!--        SELECT *-->
-    <!--        FROM v_operate-->
-    <!--        WHERE cardNum = #{cardNum,jdbcType=BIGINT}-->
+<!--    WHERE ope.operate_valid = 2 AND ope.operate_type in (1,2,3) AND cardNum = #{cardNum,jdbcType=BIGINT}-->
+    <where>
+      AND ope.operate_valid = 2
+      AND ope.operate_type in (1,2,3)
+      <if test="cardNum != null and cardNum != ''">
+        AND card.cardNum = #{cardNum}
+      </if>
+
+      <if test="cardAddr != null and cardAddr != ''">
+        AND card.cardAddr = #{cardAddr}
+      </if>
+    </where>
   </select>
 
   <!--鏍规嵁姘村崱缂栧彿鑾峰彇浣欓-->
   <select id="getMoneyByCardNum" resultType="java.lang.Float">
     SELECT money
     FROM se_client_card
-    WHERE cardNum = #{cardNum,jdbcType=BIGINT}
+<!--    WHERE cardNum = #{cardNum,jdbcType=BIGINT}-->
+    <where>
+      <if test="cardNum != null and cardNum != ''">
+        AND cardNum = #{cardNum}
+      </if>
+
+      <if test="cardAddr != null and cardAddr != ''">
+        AND cardAddr = #{cardAddr}
+      </if>
+    </where>
   </select>
 
   <!--鏍规嵁姘村崱缂栧彿鑾峰彇鍏呭�兼�婚-->
@@ -419,7 +436,16 @@
     SELECT SUM(his.amount) AS amount
     FROM se_recharge_history his
     INNER JOIN se_client_card card ON his.cardId = card.id
-    WHERE card.cardNum = #{cardNum,jdbcType=BIGINT}
+<!--    WHERE card.cardNum = #{cardNum,jdbcType=BIGINT}-->
+    <where>
+      <if test="cardNum != null and cardNum != ''">
+        AND card.cardNum = #{cardNum}
+      </if>
+
+      <if test="cardAddr != null and cardAddr != ''">
+        AND card.cardAddr = #{cardAddr}
+      </if>
+    </where>
   </select>
 
   <!--鏍规嵁姘村崱缂栧彿鑾峰彇鍗$墖鐘舵�侊細1-寮�鍗★紝2-琛ュ崱锛�3-鍏呭�硷紝4-鎸傚け锛�5-娉ㄩ攢锛�6-瑙i攣锛�7-鍐叉锛�8-娑堣垂-->
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/ClientCardSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/ClientCardSv.java
index c2f14e6..f3850e6 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/ClientCardSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/ClientCardSv.java
@@ -93,9 +93,9 @@
      * @return
      */
     public Map getOperateRecordsAndMoney(Long cardNum) {
-        List<Map<String, Object>> list = Optional.ofNullable(seClientCardMapper.getOperateRecordsByCardNum(cardNum)).orElse(new ArrayList<>());
-        Float mondy = Optional.ofNullable(seClientCardMapper.getMoneyByCardNum(cardNum)).orElse(0f);
-        Float amount = Optional.ofNullable(seClientCardMapper.sumRechargeByCardNum(cardNum)).orElse(0f);
+        List<Map<String, Object>> list = Optional.ofNullable(seClientCardMapper.getOperateRecordsByCardNum(cardNum, null)).orElse(new ArrayList<>());
+        Float mondy = Optional.ofNullable(seClientCardMapper.getMoneyByCardNum(cardNum,null)).orElse(0f);
+        Float amount = Optional.ofNullable(seClientCardMapper.sumRechargeByCardNum(cardNum, null)).orElse(0f);
 
         Map map = new HashMap();
         map.put("mondy", mondy);
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
index 8a4e1b4..fdb93a4 100644
--- 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
@@ -9,6 +9,7 @@
 import com.dy.pipIrrTerminal.card.dto.*;
 import com.dy.pipIrrTerminal.card.qo.QoCards;
 import com.dy.pipIrrTerminal.card.qo.QoLostCards;
+import com.dy.pipIrrTerminal.card.qo.QoTransaction;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.media.Content;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -392,4 +393,38 @@
             return BaseResponseUtils.buildErrorMsg(result.get("msg").toString());
         }
     }
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗鏄庣粏
+     *
+     * @param vo
+     * @return
+     */
+    @GetMapping(path = "getTransactions")
+    @SsoAop()
+    public BaseResponse<Map> getOperates(QoTransaction vo) {
+        try {
+            return BaseResponseUtils.buildSuccess(cardSv.getTransactions(vo));
+        } catch (Exception e) {
+            log.error("鏌ヨ浜ゆ槗璁板綍寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage());
+        }
+    }
+
+    @GetMapping(path = "/getOperateRecords")
+    @SsoAop()
+    public BaseResponse<List<Map<String, Object>>> getOperateRecordsAndMoney(QoCards qo){
+        try {
+            Long cardNum = qo.getCardNum();
+            String cardAddr = qo.getCardAddr();
+            if (cardNum == null && cardAddr == null) {
+                return BaseResponseUtils.buildErrorMsg("璇疯緭鍏ュ崱鍙锋垨鍗″湴鍧�");
+            }
+            Map map = cardSv.getOperateRecordsAndMoney(cardNum, cardAddr);
+            return BaseResponseUtils.buildSuccess(map);
+        } catch (Exception e) {
+            log.error("鏌ヨ鎿嶄綔璁板綍寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
 }
\ No newline at end of file
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
index 31520d5..645050d 100644
--- 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
@@ -1,5 +1,8 @@
 package com.dy.pipIrrTerminal.card;
 
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper;
@@ -17,6 +20,7 @@
 import com.dy.pipIrrTerminal.card.enums.ManagementCardStateENUM;
 import com.dy.pipIrrTerminal.card.enums.OperateTypeENUM;
 import com.dy.pipIrrTerminal.card.enums.RechargeTypeENUM;
+import com.dy.pipIrrTerminal.card.qo.QoTransaction;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.common.utils.PojoUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -25,6 +29,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import com.dy.common.util.IDLongGenerator;
 
+import java.text.DecimalFormat;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -527,7 +532,7 @@
             }
         }
 
-        Float balance = Optional.ofNullable(seClientCardMapper.getMoneyByCardNum(cardNum)).orElse(0f);
+        Float balance = Optional.ofNullable(seClientCardMapper.getMoneyByCardNum(cardNum, null)).orElse(0f);
         Double waterPrice = prWaterPriceMapper.getPrice();
 
         VoTermActiveCard voTermActiveCard = new VoTermActiveCard();
@@ -1414,4 +1419,150 @@
         Long totalCount = seClientCardMapper.checkCardAddrExists(cardAddr);
         return totalCount != null && totalCount > 0;
     }
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗璁板綍
+     *
+     * @param vo
+     * @return
+     */
+    public Map getTransactions(QoTransaction vo) {
+        DecimalFormat df = new DecimalFormat("0.00");
+        // 琛ラ綈鏌ヨ鏃堕棿
+        String operateTimeStart = vo.operateTimeStart;
+        String operateTimeStop = vo.operateTimeStop;
+        if (operateTimeStart != null) {
+            operateTimeStart = operateTimeStart + " 00:00:00";
+            vo.setOperateTimeStart(operateTimeStart);
+        }
+        if (operateTimeStop != null) {
+            operateTimeStop = operateTimeStop + " 23:59:59";
+            vo.setOperateTimeStop(operateTimeStop);
+        }
+
+        // 鐢熸垚鏌ヨ鍙傛暟
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo);
+
+        // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟
+        Long itemTotal = Optional.ofNullable(seCardOperateMapper.getTransactionRecordCount(params)).orElse(0L);
+
+        QueryResultVo<List<VoTradeDetails>> rsVo = new QueryResultVo<>();
+        rsVo.pageSize = vo.pageSize;
+        rsVo.pageCurr = vo.pageCurr;
+        rsVo.calculateAndSet(itemTotal, params);
+
+        rsVo.obj = seCardOperateMapper.getTransactions(params);
+        List<VoTradeDetails> list = rsVo.obj;
+        if (list.size() == 0) {
+            return new HashMap();
+        }
+//鍏冭皨涓�鏈熼檰甯镐附闇�姹傛妸璧犻�侀噾棰濅笌鍏呭�奸噾棰濆垎寮�鏄剧ず
+        for (int i = list.size()-1; i >= 0 ; i--) {
+            Optional.ofNullable(list.get(i).getGift()).orElse(0d);
+            if (!list.get(i).getGift().equals(0d)){
+                Double gift1 = list.get(i).getGift();//璧犻�侀噾棰�
+                String districtTitle = list.get(i).getDistrictTitle();//鍦板潃
+                String clientNum = list.get(i).getClientNum();//鍐滄埛缂栧彿
+                String clientName = list.get(i).getClientName();//鍐滄埛濮撳悕
+                String phone = list.get(i).getPhone();//鎵嬫満鍙�
+                Date tradeTime = list.get(i).getTradeTime();//浜ゆ槗鏃堕棿
+                String orderNumber = list.get(i).getOrderNumber();//璁㈠崟缂栧彿
+                String cardNum = list.get(i).getCardNum();//鍗$紪鍙�
+                String idCard = list.get(i).getIdCard();//韬唤璇�
+                String cashierName = list.get(i).getCashierName();//鎿嶄綔浜�
+                Double money = list.get(i).getMoney();//浣欓
+                Double cardCost1 = list.get(i).getCardCost();//璐崱閲戦
+                Double tradeAmount = list.get(i).getTradeAmount();//浜ゆ槗閲戦
+                Double waterCost1 = list.get(i).getWaterCost();//璐按閲戦
+                Double refundAmount1 = list.get(i).getRefundAmount();//杩斿洖閲戦
+                String paymentName = list.get(i).getPaymentName();//鏀粯鏂瑰紡
+                String operateType = list.get(i).getOperateType();//涓氬姟绫诲瀷
+                String cardState = list.get(i).getCardState();//鍗$姸鎬�
+                Long villageId = list.get(i).getVillageId();//鏉慽d
+                Long cashierId = list.get(i).getCashierId();//鏀堕摱鍛榠d
+
+                list.get(i).setGift(0d);
+                list.get(i).setMoney(money-gift1);
+
+                VoTradeDetails voTradeDetail = new VoTradeDetails();
+                voTradeDetail.setDistrictTitle(districtTitle);//2
+                voTradeDetail.setClientNum(clientNum);//2
+                voTradeDetail.setClientName(clientName);//2
+                voTradeDetail.setPhone(phone);//2
+                voTradeDetail.setOperateType("璧犻��");//2
+                voTradeDetail.setTradeTime(tradeTime);//2
+                voTradeDetail.setWaterCost(0d);//2
+                voTradeDetail.setCardCost(0d);//2
+                voTradeDetail.setGift(gift1);//2
+                voTradeDetail.setTradeAmount(0d);//2
+                voTradeDetail.setRefundAmount(refundAmount1);//2
+                voTradeDetail.setMoney(money);//寰�2
+                voTradeDetail.setPaymentName("璧犻��");//2
+                voTradeDetail.setOrderNumber(orderNumber);//2
+                voTradeDetail.setCardNum(cardNum);//2
+                voTradeDetail.setIdCard(idCard);//2
+                voTradeDetail.setCashierName(cashierName);//2
+                voTradeDetail.setCashierId(cashierId);//2
+                voTradeDetail.setCardState(cardState);//2
+                voTradeDetail.setVillageId(villageId);//2
+
+                list.add(voTradeDetail);
+                itemTotal = itemTotal + 1;
+            }
+        }
+        list.sort(Comparator.comparing(VoTradeDetails::getTradeTime));
+        rsVo.obj = list;
+        rsVo.calculateAndSet(itemTotal, params);
+
+        // 閬嶅巻浜ゆ槗鏄庣粏璁板綍锛屾眹鎬昏喘姘撮噾棰濄�佽喘鍗¢噾棰�
+        Double totalWaterCost = 0.0;
+        Double totalCardCost = 0.0;
+        Double totalGift = 0.0;
+        Double totalRefund = 0.0;
+
+        JSONArray array = JSONArray.parseArray(JSON.toJSONString(list));
+        for (int i = 0; i < array.size(); i++) {
+            JSONObject job = array.getJSONObject(i);
+            Double waterCost = Optional.ofNullable(job.getDouble("waterCost")).orElse(0.0);
+            Double cardCost = Optional.ofNullable(job.getDouble("cardCost")).orElse(0.0);
+            Double gift = Optional.ofNullable(job.getDouble("gift")).orElse(0.0);
+            Double refundAmount = Optional.ofNullable(job.getDouble("refundAmount")).orElse(0.0);
+
+            totalWaterCost = totalWaterCost + waterCost;
+            totalCardCost = totalCardCost + cardCost;
+            totalGift = totalGift + gift;
+            totalRefund = totalRefund + refundAmount;
+        }
+
+        Map map_record = new HashMap();
+        map_record.put("list", rsVo);
+
+        Map map_result = new HashMap();
+        map_result.put("waterCost", df.format(totalWaterCost));
+        map_result.put("cardCost", df.format(totalCardCost));
+        map_result.put("gift", df.format(totalGift));
+        map_result.put("refund", df.format(totalRefund));
+
+        map_result.put("records", map_record);
+
+        return map_result;
+    }
+
+    /**
+     * 鏍规嵁姘村崱缂栧彿鎴栨按鍗″湴鍧�鑾峰彇鎿嶄綔璁板綍鍙婁綑棰�
+     * @param cardNum
+     * @return
+     */
+    public Map getOperateRecordsAndMoney(Long cardNum, String cardAddr) {
+
+        List<Map<String, Object>> list = Optional.ofNullable(seClientCardMapper.getOperateRecordsByCardNum(cardNum, cardAddr)).orElse(new ArrayList<>());
+        Float mondy = Optional.ofNullable(seClientCardMapper.getMoneyByCardNum(cardNum, cardAddr)).orElse(0f);
+        Float amount = Optional.ofNullable(seClientCardMapper.sumRechargeByCardNum(cardNum, cardAddr)).orElse(0f);
+
+        Map map = new HashMap();
+        map.put("mondy", mondy);
+        map.put("amount", amount);
+        map.put("list", list);
+        return map;
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/qo/QoCards.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/qo/QoCards.java
index a816357..6fc3087 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/qo/QoCards.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/qo/QoCards.java
@@ -17,15 +17,25 @@
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-@Schema(name = "姘村崱璁板綍鏌ヨ鏉′欢")
 public class QoCards extends QueryConditionVo {
 
-    @Schema(description = "鍐滄埛缂栧彿")
+    /**
+     * 鍐滄埛缂栧彿
+     */
     public Long clientNum;
 
-    @Schema(description = "鍐滄埛濮撳悕")
+    /**
+     * 鍐滄埛濮撳悕
+     */
     private String clientName;
 
-    @Schema(description = "姘村崱缂栧彿")
+    /**
+     * 姘村崱缂栧彿
+     */
     public Long cardNum;
+
+    /**
+     * 姘村崱鍦板潃
+     */
+    private String cardAddr;
 } 
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/qo/QoTransaction.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/qo/QoTransaction.java
new file mode 100644
index 0000000..66a756b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/qo/QoTransaction.java
@@ -0,0 +1,37 @@
+package com.dy.pipIrrTerminal.card.qo;
+
+import com.dy.common.webUtil.QueryConditionVo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-06-26 10:43
+ * @LastEditTime 2025-06-26 10:43
+ * @Description 浜ゆ槗鏄庣粏鏌ヨ瀵硅薄
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ToString(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class QoTransaction extends QueryConditionVo {
+
+
+    /**
+     * 浜ゆ槗鏌ヨ璧峰鏃堕棿
+     */
+    public String operateTimeStart;
+
+    /**
+     * 浜ゆ槗鏌ヨ缁撴潫鏃堕棿
+     */
+    public String operateTimeStop;
+
+    /**
+     * 鏀堕摱鍛業D
+     */
+    public Long cashierId;
+}

--
Gitblit v1.8.0