2024-02-02 朱宝民 重构IC卡操作表,调整补扣接口及充值记录查询接口,重构开卡明细记录查询接口
11个文件已修改
405 ■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCardOperate.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRecharge.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTradeDetails.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml 269 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeGeneralMapper.xml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoTransaction.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralSv.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/qo/QoToAudit.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java
@@ -11,13 +11,13 @@
/**
 * @author ZhuBaoMin
 * @date 2024-01-18 19:28
 * @LastEditTime 2024-01-18 19:28
 * @date 2024-02-02 16:00
 * @LastEditTime 2024-02-02 16:00
 * @Description
 */
@Mapper
public interface SeCardOperateMapper extends BaseMapper {
public interface SeCardOperateMapper extends BaseMapper<SeCardOperate> {
    int deleteByPrimaryKey(Long id);
    int insert(SeCardOperate record);
@@ -57,14 +57,8 @@
     * @param params
     * @return
     */
    List<VoTransaction> getTransactions(Map<?, ?> params);
    /**
     * 根据指定条件获取购水汇总和购卡汇总,获取交易明细使用
     * @param params
     * @return
     */
    Map getTransactionSums(Map<?, ?> params);
    /*List<VoTransaction> getTransactions(Map<?, ?> params);*/
    List<VoTradeDetails> getTransactions(Map<?, ?> params);
    /**
     * 根据指定条件获取交易统计记录数
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCardOperate.java
@@ -17,7 +17,7 @@
/**
 * @author ZhuBaoMin
 * @date 2024-01-18 19:10
 * @LastEditTime 2024-01-18 19:10
 * @LastEditTime 2024-02-02 16:00
 * @Description
 */
@@ -96,6 +96,13 @@
    private Float gift;
    /**
     * 返还金额;补扣操作时返还的金额
     */
    @Schema(description = "返还金额", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @Length(message = "返还金额不小于{min}", min = 0)
    private Float refundAmount;
    /**
     * 非交易金额;补卡金额、补扣金额、剩余金额(解锁)
     */
    @Schema(description = "非交易金额", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRecharge.java
@@ -35,11 +35,14 @@
    @Schema(title = "充值金额")
    private Float amount;
    @Schema(title = "返回金额")
    private Float refundAmount;
    @Schema(title = "充值后金额")
    private Float afterRecharge;
    @Schema(title = "支付方式")
    private Integer paymentId;
    private String paymentName;
    @Schema(title = "水价")
    private Float price;
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTradeDetails.java
@@ -20,6 +20,15 @@
public class VoTradeDetails implements BaseEntity {
    private static final long serialVersionUID = 202402012040001L;
    @Schema(title = "收银员ID")
    private String cashierId;
    @Schema(title = "区划名称串")
    private String districtTitle;
    @Schema(title = "村庄ID")
    private String villageId;
    @Schema(title = "农户姓名")
    private String clientName;
@@ -35,11 +44,23 @@
    @Schema(title = "交易金额")
    private Double tradeAmount;
    @Schema(title = "购水金额")
    private Double waterCost;
    @Schema(title = "购卡金额")
    private Double cardCost;
    @Schema(title = "赠送金额")
    private Double gift;
    @Schema(title = "返回金额")
    private Double refundAmount;
    @Schema(title = "付款方式")
    private String paymentName;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Schema(title = "交易时间")
    private Date tradeDate;
    private Date tradeTime;
}
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
@@ -13,8 +13,9 @@
    <result column="price" jdbcType="FLOAT" property="price" />
    <result column="card_cost" jdbcType="INTEGER" property="cardCost" />
    <result column="gift" jdbcType="FLOAT" property="gift" />
    <result column="refund_amount" jdbcType="FLOAT" property="refundAmount" />
    <result column="no_trade_amount" jdbcType="FLOAT" property="noTradeAmount" />
    <result column="operate_type_id" jdbcType="BIGINT" property="operateType" />
    <result column="operate_type" jdbcType="TINYINT" property="operateType" />
    <result column="payment_id" jdbcType="BIGINT" property="paymentId" />
    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
    <result column="operator" jdbcType="BIGINT" property="operator" />
@@ -23,7 +24,7 @@
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, card_id, client_id, money, system_balance, trade_amount, price, card_cost, gift, 
    no_trade_amount, operate_type_id, payment_id, remarks, `operator`, operate_dt
    refund_amount, no_trade_amount, operate_type, payment_id, remarks, `operator`, operate_dt
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
@@ -42,15 +43,15 @@
    insert into se_card_operate (id, card_id, client_id, 
      money, system_balance, trade_amount, 
      price, card_cost, gift, 
      no_trade_amount, operate_type, payment_id,
      remarks, `operator`, operate_dt
      )
      refund_amount, no_trade_amount, operate_type,
      payment_id, remarks, `operator`,
      operate_dt)
    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}, 
      #{noTradeAmount,jdbcType=FLOAT}, #{operateType,jdbcType=BIGINT}, #{paymentId,jdbcType=BIGINT},
      #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, #{operateDt,jdbcType=TIMESTAMP}
      )
      #{refundAmount,jdbcType=FLOAT}, #{noTradeAmount,jdbcType=FLOAT}, #{operateType,jdbcType=TINYINT},
      #{paymentId,jdbcType=BIGINT}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT},
      #{operateDt,jdbcType=TIMESTAMP})
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeCardOperate">
    <!--@mbg.generated-->
@@ -83,11 +84,14 @@
      <if test="gift != null">
        gift,
      </if>
      <if test="refundAmount != null">
        refund_amount,
      </if>
      <if test="noTradeAmount != null">
        no_trade_amount,
      </if>
      <if test="operateType != null">
        operate_type_id,
        operate_type,
      </if>
      <if test="paymentId != null">
        payment_id,
@@ -130,11 +134,14 @@
      <if test="gift != null">
        #{gift,jdbcType=FLOAT},
      </if>
      <if test="refundAmount != null">
        #{refundAmount,jdbcType=FLOAT},
      </if>
      <if test="noTradeAmount != null">
        #{noTradeAmount,jdbcType=FLOAT},
      </if>
      <if test="operateType != null">
        #{operateType,jdbcType=BIGINT},
        #{operateType,jdbcType=TINYINT},
      </if>
      <if test="paymentId != null">
        #{paymentId,jdbcType=BIGINT},
@@ -178,11 +185,14 @@
      <if test="gift != null">
        gift = #{gift,jdbcType=FLOAT},
      </if>
      <if test="refundAmount != null">
        refund_amount = #{refundAmount,jdbcType=FLOAT},
      </if>
      <if test="noTradeAmount != null">
        no_trade_amount = #{noTradeAmount,jdbcType=FLOAT},
      </if>
      <if test="operateType != null">
        operate_type_id = #{operateType,jdbcType=BIGINT},
        operate_type = #{operateType,jdbcType=TINYINT},
      </if>
      <if test="paymentId != null">
        payment_id = #{paymentId,jdbcType=BIGINT},
@@ -210,8 +220,9 @@
      price = #{price,jdbcType=FLOAT},
      card_cost = #{cardCost,jdbcType=INTEGER},
      gift = #{gift,jdbcType=FLOAT},
      refund_amount = #{refundAmount,jdbcType=FLOAT},
      no_trade_amount = #{noTradeAmount,jdbcType=FLOAT},
      operate_type_id = #{operateType,jdbcType=BIGINT},
      operate_type = #{operateType,jdbcType=TINYINT},
      payment_id = #{paymentId,jdbcType=BIGINT},
      remarks = #{remarks,jdbcType=VARCHAR},
      `operator` = #{operator,jdbcType=BIGINT},
@@ -226,8 +237,10 @@
    FROM se_card_operate ope
        INNER JOIN se_client_card card ON ope.card_id = card.id
        INNER JOIN se_client cli ON ope.client_id = cli.id
        INNER 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 = 2
      AND ope.operate_type in(2, 5)
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
@@ -253,21 +266,25 @@
  <!--根据指定条件获取充值记录-->
  <select id="getRecharges" resultType="com.dy.pipIrrGlobal.voSe.VoRecharge">
    SELECT
        CAST(ope.id AS char) AS id ,
        CAST(ope.id AS char) AS id,
        cli.name AS clientName,
        cli.clientNum,
        card.cardNum,
        ope.trade_amount AS amount,
        (ope.money + ope.trade_amount) AS afterRecharge,
        ope.payment_id,
        CAST(card.cardNum AS char) AS cardNum,
        IFNULL(ope.trade_amount, 0) AS amount,
        IFNULL(ope.refund_amount, 0) AS refundAmount,
        (IFNULL(ope.money, 0) + IFNULL(ope.trade_amount, 0)) AS afterRecharge,
        --     ope.payment_id AS paymentId,
        pay.name AS paymentName,
        ope.price,
        (SELECT `name` FROM ba_user WHERE id =  ope.operator) AS operator,
        us.name AS operator,
        ope.operate_dt
    FROM se_card_operate ope
        INNER JOIN se_client_card card ON ope.card_id = card.id
    INNER JOIN se_client_card card ON ope.card_id = card.id
        INNER JOIN se_client cli ON ope.client_id = cli.id
        INNER 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 = 2
      AND ope.operate_type in(2, 5)
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
@@ -300,111 +317,53 @@
  <select id="getTransactionRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
    SELECT
        COUNT(*) AS recordCount
    FROM se_card_operate ope
        INNER JOIN se_client cli ON ope.client_id = cli.id
        INNER JOIN se_client_card card ON ope.card_id = card.id
        INNER JOIN ba_user user ON ope.operator = user.id
        INNER JOIN se_payment_method pay ON ope.payment_id = pay.id
    FROM v_trade_details
    <where>
      AND ope.operate_type IN(1,2,3,4)
      <if test = "villageId != null and villageId > 0">
        AND cli.villageId = ${villageId}
      </if>
      <if test = "cardNum != null and cardNum >0">
        AND card.cardNum = ${cardNum}
        AND villageId = ${villageId}
      </if>
      <if test = "operateTimeStart != null and operateTimeStop != null">
        AND ope.operate_dt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
        AND tradeTime BETWEEN #{operateTimeStart} AND #{operateTimeStop}
      </if>
      <if test = "cashierId != null and cashierId > 0">
        AND cashierId = ${cashierId}
      </if>
      <if test = "tradeTime != null">
        AND tradeTime = #{tradeTime}
      </if>
    </where>
  </select>
  <!--根据指定条件获取交易记录-->
  <select id="getTransactions" resultType="com.dy.pipIrrGlobal.voSe.VoTransaction">
    SELECT
        ope.id AS orderNumber,
        cli.villageId,
        cli.districtTitle,
        cli.clientNum,
        cli.`name`,
        card.cardNum,
        cli.idCard,
        cli.phone,
        (CASE operate_type
            WHEN 1 THEN '开卡'
            WHEN 2 THEN '充值'
            WHEN 3 THEN '销卡'
            WHEN 4 THEN '补卡'
        END) AS operateType,
        ope.operate_dt AS operateTime,
        IFNULL(ope.money, 0) AS money,
        IFNULL(ope.trade_amount, 0) AS waterCost,
        IFNULL(ope.gift, 0) AS gift,
        IFNULL(ope.card_cost, 0) AS cardCost,
        pay.`name` paymentMethod,
        user.name AS operatorName
    FROM se_card_operate ope
        INNER JOIN se_client cli ON ope.client_id = cli.id
        INNER JOIN se_client_card card ON ope.card_id = card.id
        INNER JOIN ba_user user ON ope.operator = user.id
        INNER JOIN se_payment_method pay ON ope.payment_id = pay.id
  <select id="getTransactions" resultType="com.dy.pipIrrGlobal.voSe.VoTradeDetails">
    SELECT * FROM v_trade_details
    <where>
      AND ope.operate_type IN(1,2,3,4)
      <if test = "villageId != null and villageId > 0">
        AND cli.villageId = ${villageId}
      </if>
      <if test = "cardNum != null and cardNum >0">
        AND card.cardNum = ${cardNum}
        AND villageId = ${villageId}
      </if>
      <if test = "operateTimeStart != null and operateTimeStop != null">
        AND ope.operate_dt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
        AND tradeTime BETWEEN #{operateTimeStart} AND #{operateTimeStop}
      </if>
      <if test = "cashierId != null and cashierId > 0">
        AND user.id = ${cashierId}
        AND cashierId = ${cashierId}
      </if>
    </where>
    ORDER BY ope.operate_dt
    ORDER BY tradeTime
    <if test="pageCurr != null and pageSize != null">
      LIMIT ${pageCurr}, ${pageSize}
    </if>
  </select>
  <!--根据指定条件获取购水汇总和购卡汇总,获取交易明细使用-->
  <select id="getTransactionSums" resultType="java.util.Map">
    SELECT
        IFNULL(SUM(trade_amount),0) AS waterCost,
        IFNULL(SUM(card_cost),0) AS cardCost
    FROM se_card_operate ope
        INNER JOIN se_client cli ON ope.client_id = cli.id
        INNER JOIN se_client_card card ON ope.card_id = card.id
        INNER JOIN ba_user user ON ope.operator = user.id
        INNER JOIN se_payment_method pay ON ope.payment_id = pay.id
    <where>
      AND ope.operate_type IN(1,2,3,4)
      <if test = "villageId != null and villageId > 0">
        AND cli.villageId = ${villageId}
      </if>
      <if test = "cardNum != null and cardNum >0">
        AND card.cardNum = ${cardNum}
      </if>
      <if test = "operateTimeStart != null and operateTimeStop != null">
        AND ope.operate_dt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
      </if>
    </where>
  </select>
  <!--根据指定条件获取交易统计记录数-->
  <select id="getTransactionStatisticsRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
    SELECT
        COUNT(*) AS recordCount
    COUNT(*) AS recordCount
    FROM v_transactionstatistics
    <where>
      <if test = "operateTimeStart != null and operateTimeStop != null">
@@ -430,9 +389,9 @@
  <!--根基指定条件获取笔数合计、实收金额合计、赠送金额合计-->
  <select id="getTransactionStatisticsSums" resultType="java.util.Map">
    SELECT
      SUM(count) AS totalCount,
      SUM(received) AS totalReceived,
      SUM(gift) AS totalGift
    SUM(count) AS totalCount,
    SUM(received) AS totalReceived,
    SUM(gift) AS totalGift
    FROM v_transactionstatistics
    <where>
      <if test = "operateTimeStart != null and operateTimeStop != null">
@@ -444,7 +403,7 @@
  <!--获取指定日期、指定支付方式实收金额合计-->
  <select id="getPaymentSums" resultType="java.lang.Float">
    SELECT
      SUM(ope.trade_amount) AS tradeAmount
    SUM(ope.trade_amount) AS tradeAmount
    FROM se_card_operate ope
    <where>
      <if test = "tradeDate != null and tradeDate !=''">
@@ -488,23 +447,23 @@
  <!--根据指定条件获取开卡记录-->
  <select id="getActiveCards" resultType="com.dy.pipIrrGlobal.voSe.VoActiveCardNew">
    SELECT
        CAST(ope.id AS char) AS id ,
        cli.name AS clientName,
        cli.clientNum AS clientNum,
        card.cardNum AS cardNum,
        card.state AS state,
        (CASE
          WHEN card.state = 1 THEN "正常"
          WHEN card.state = 2 THEN "已注销"
          WHEN card.state = 3 THEN "已挂失"
        END) AS stateName,
        ope.card_cost AS cardCost,
        ope.payment_id AS paymentId,
        (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,
    card.state AS state,
    (CASE
    WHEN card.state = 1 THEN "正常"
    WHEN card.state = 2 THEN "已注销"
    WHEN card.state = 3 THEN "已挂失"
    END) AS stateName,
    ope.card_cost AS cardCost,
    ope.payment_id AS paymentId,
    (SELECT `name` FROM ba_user WHERE id =  ope.operator) AS operator,
    ope.operate_dt AS operateDt
    FROM se_card_operate ope
      INNER JOIN se_client_card card ON ope.card_id = card.id
      INNER JOIN se_client cli ON ope.client_id = cli.id
    INNER JOIN se_client_card card ON ope.card_id = card.id
    INNER JOIN se_client cli ON ope.client_id = cli.id
    <where>
      AND ope.operate_type = 1
      <if test = "clientName != null and clientName !=''">
@@ -593,14 +552,14 @@
  <!--根据指定条件获取收据列表数-->
  <select id="getReceiptsRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
    SELECT
        COUNT(*) AS recordCount
    COUNT(*) AS recordCount
    FROM se_card_operate ope
      INNER JOIN se_client cli ON ope.client_id = cli.id
      INNER JOIN se_client_card card ON ope.card_id = card.id
      INNER JOIN se_payment_method pay ON ope.payment_id = pay.id
      INNER JOIN ba_user us ON ope.operator = us.id
      INNER JOIN ba_district vil ON cli.villageId = vil.id
      INNER JOIN ba_district tow ON cli.townId = tow.id
    INNER JOIN se_client cli ON ope.client_id = cli.id
    INNER JOIN se_client_card card ON ope.card_id = card.id
    INNER JOIN se_payment_method pay ON ope.payment_id = pay.id
    INNER JOIN ba_user us ON ope.operator = us.id
    INNER JOIN ba_district vil ON cli.villageId = vil.id
    INNER JOIN ba_district tow ON cli.townId = tow.id
    <where>
      AND ope.operate_type IN(1,2)
      <if test = "operateId != null and operateId > 0">
@@ -620,32 +579,32 @@
  <!--根据指定条件获取收据列表-->
  <select id="getReceipts" resultType="com.dy.pipIrrGlobal.voSe.VoReceipt">
    SELECT
      CAST(ope.id AS char) AS orderNumber,
      tow.name AS townName,
      vil.name AS villageName,
      cli.`name`,
      cli.phone,
      CAST(cli.clientNum AS char) AS clientNum,
      CAST(card.cardNum AS char) AS 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.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,
      NOW() AS currentTime
    CAST(ope.id AS char) AS orderNumber,
    tow.name AS townName,
    vil.name AS villageName,
    cli.`name`,
    cli.phone,
    CAST(cli.clientNum AS char) AS clientNum,
    CAST(card.cardNum AS char) AS 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.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,
    NOW() AS currentTime
    FROM se_card_operate ope
      INNER JOIN se_client cli ON ope.client_id = cli.id
      INNER JOIN se_client_card card ON ope.card_id = card.id
      INNER JOIN se_payment_method pay ON ope.payment_id = pay.id
      INNER JOIN ba_user us ON ope.operator = us.id
      INNER JOIN ba_district vil ON cli.villageId = vil.id
      INNER JOIN ba_district tow ON cli.townId = tow.id
    INNER JOIN se_client cli ON ope.client_id = cli.id
    INNER JOIN se_client_card card ON ope.card_id = card.id
    INNER JOIN se_payment_method pay ON ope.payment_id = pay.id
    INNER JOIN ba_user us ON ope.operator = us.id
    INNER JOIN ba_district vil ON cli.villageId = vil.id
    INNER JOIN ba_district tow ON cli.townId = tow.id
    <where>
      AND ope.operate_type IN(1,2)
      <if test = "operateId != null and operateId > 0">
@@ -673,12 +632,12 @@
    SELECT
    SUM(IFNULL(ope.trade_amount,0) + IFNULL(ope.card_cost,0)) AS totalAmount
    FROM se_card_operate ope
      INNER JOIN se_client cli ON ope.client_id = cli.id
      INNER JOIN se_client_card card ON ope.card_id = card.id
      INNER JOIN se_payment_method pay ON ope.payment_id = pay.id
      INNER JOIN ba_user us ON ope.operator = us.id
      INNER JOIN ba_district vil ON cli.villageId = vil.id
      INNER JOIN ba_district tow ON cli.townId = tow.id
    INNER JOIN se_client cli ON ope.client_id = cli.id
    INNER JOIN se_client_card card ON ope.card_id = card.id
    INNER JOIN se_payment_method pay ON ope.payment_id = pay.id
    INNER JOIN ba_user us ON ope.operator = us.id
    INNER JOIN ba_district vil ON cli.villageId = vil.id
    INNER JOIN ba_district tow ON cli.townId = tow.id
    <where>
      AND ope.operate_type IN(1,2)
      <if test = "operateId != null and operateId > 0">
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeGeneralMapper.xml
@@ -338,10 +338,15 @@
        AND cashierId = ${cashierId}
      </if>
      <if test = "tradeDate != null">
        AND tradeDate = #{tradeDate}
      <if test = "tradeTime != null">
        AND tradeTime = #{tradeTime}
      </if>
    </where>
    ORDER BY tradeDate
    ORDER BY tradeTime
    <trim prefix="limit " >
      <if test="start != null and count != null">
        #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
      </if>
    </trim>
  </select>
</mapper>
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java
@@ -10,7 +10,10 @@
import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
import com.dy.pipIrrGlobal.util.AmountToChinese;
import com.dy.pipIrrGlobal.util.Constant;
import com.dy.pipIrrGlobal.voSe.*;
import com.dy.pipIrrGlobal.voSe.VoActiveCard;
import com.dy.pipIrrGlobal.voSe.VoActiveCardNew;
import com.dy.pipIrrGlobal.voSe.VoRecharge;
import com.dy.pipIrrGlobal.voSe.VoReissueCard;
import com.dy.pipIrrSell.cardOperate.converter.RechargeDtoMapper;
import com.dy.pipIrrSell.cardOperate.dto.*;
import com.dy.pipIrrSell.cardOperate.enums.OperateTypeENUM;
@@ -666,7 +669,8 @@
        seCardOperate.setCardId(cardId);
        seCardOperate.setClientId(clientId);
        seCardOperate.setMoney(money);
        seCardOperate.setNoTradeAmount(refund);
        //seCardOperate.setNoTradeAmount(refund);
        seCardOperate.setRefundAmount(refund);
        seCardOperate.setOperateType(OperateTypeENUM.REFUND.getCode());
        seCardOperate.setRemarks(remarks);
        seCardOperate.setOperator(operator);
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
@@ -1,5 +1,6 @@
package com.dy.pipIrrSell.cardOperate;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.webUtil.BaseResponse;
@@ -8,6 +9,7 @@
import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper;
import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper;
import com.dy.pipIrrGlobal.daoSe.SeClientMapper;
import com.dy.pipIrrGlobal.daoSe.SeGeneralMapper;
import com.dy.pipIrrGlobal.pojoSe.SeCardOperate;
import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
import com.dy.pipIrrGlobal.voSe.*;
@@ -48,6 +50,9 @@
    @Autowired
    private ClientCardSv clientCardSv;
    @Autowired
    private SeGeneralMapper seGeneralMapper;
    /**
@@ -235,6 +240,7 @@
     * @return
     */
    public Map getTransactions(QoTransaction vo){
        DecimalFormat df = new DecimalFormat("0.00");
        // 补齐查询时间
        String operateTimeStart = vo.operateTimeStart;
        String operateTimeStop = vo.operateTimeStop;
@@ -250,38 +256,33 @@
        // 生成查询参数
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo) ;
        // 获取汇总的购水金额、购卡金额
        Float waterCost = 0f;
        Float cardCost = 0f;
        Map map_sum = Optional.ofNullable(seCardOperateMapper.getTransactionSums(params)).orElse(new HashMap());
        if(map_sum.size() > 0) {
            waterCost = Float.parseFloat(map_sum.get("waterCost").toString());
            cardCost = Float.parseFloat(map_sum.get("cardCost").toString());
        // 获取符合条件的记录数
        Long itemTotal = Optional.ofNullable(seCardOperateMapper.getTransactionRecordCount(params)).orElse(0L);
        List<VoTradeDetails> list = seCardOperateMapper.getTransactions(params);
        if(list.size() == 0) {
            return new HashMap();
        }
        // 获取符合条件的记录数
        Long itemTotal = seCardOperateMapper.getTransactionRecordCount(params);
        // 遍历交易明细记录,汇总购水金额、购卡金额
        Double totalWaterCost = 0.0;
        Double totalCardCost = 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);
            totalWaterCost = totalWaterCost + waterCost;
            totalCardCost = totalCardCost + cardCost;
        }
        Integer pageSize = vo.getPageSize();
        // 计算总页数
        Integer pageTotal ;
        pageTotal = (int)Math.ceil((itemTotal==null?0.0D:itemTotal.doubleValue())/pageSize);
        // 根据当前页码及每页数量计算偏移量
        Integer pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString());
        params.put("pageCurr", pageCurr);
        List<VoTransaction> lit = seCardOperateMapper.getTransactions(params);
        Map map_record = new HashMap();
        map_record.put("itemTotal", itemTotal);
        map_record.put("pageCurr", vo.pageCurr);
        map_record.put("pageSize", pageSize);
        map_record.put("pageTotal", pageTotal);
        map_record.put("list", lit);
        map_record.put("list", list);
        Map map_result = new HashMap();
        map_result.put("waterCost", waterCost);
        map_result.put("cardCost", cardCost);
        map_result.put("waterCost", df.format(totalWaterCost));
        map_result.put("cardCost", df.format(totalCardCost));
        map_result.put("records", map_record);
        return map_result;
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoTransaction.java
@@ -22,8 +22,8 @@
    @Schema(description = "村ID")
    public Long villageId;
    @Schema(description = "水卡编号")
    public Long cardNum;
    //@Schema(description = "水卡编号")
    //public Long cardNum;
    @Schema(description = "交易查询起始时间")
    public String operateTimeStart;
@@ -33,4 +33,6 @@
    @Schema(description = "收银员ID")
    public Long cashierId;
}
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralSv.java
@@ -128,7 +128,7 @@
        // 接收传入参数:操作日期、收银员ID
        JSONArray array_paymentSums = new JSONArray();
        String tradeDate = vo.getTradeDate();
        String tradeDate = vo.getTradeTime();
        Long cashierId = vo.cashierId;
        // 分别计算指定日期、指定收银员、指定支付方式实收金额
@@ -216,9 +216,12 @@
        Map map_record = new HashMap();
        map_record.put("itemTotal", rsVo.itemTotal);
        map_record.put("pageCurr", rsVo.pageCurr);
        map_record.put("pageSize", rsVo.pageSize);
        map_record.put("pageTotal", rsVo.pageTotal);
        map_record.put("list", list);
        Map map_result = new HashMap();
        map_result.put("totalTradeAmount", df.format(totalTradeAmount));
        map_result.put("records", map_record);
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/qo/QoToAudit.java
@@ -20,7 +20,7 @@
@Schema(name = "待审核交易汇总查询条件")
public class QoToAudit extends QueryConditionVo {
    @Schema(description = "交易时间")
    public String tradeDate;
    public String tradeTime;
    @Schema(description = "收银员ID")
    public Long cashierId;