Administrator
2024-02-05 0e2f3f937e4cb7f6d4c9eb2d5bd379fe7caae175
2024-02-05 朱宝民 注销、挂失、冲正、解锁共用一个通用查询接口
5个文件已修改
3个文件已添加
318 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoOperate.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoCancel.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoCommonOperate.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java
@@ -71,7 +71,7 @@
     * @param params
     * @return
     */
    List<VoActiveCardNew> getActiveCards(Map<?, ?> params);
    List<VoActiveCard> getActiveCards(Map<?, ?> params);
    /**
@@ -89,6 +89,23 @@
    List<VoReissueCard> getReissueCards(Map<?, ?> params);
    /**
     * 根据指定条件获取通用操作记录数量
     * 注销、挂失、冲正、解锁通用
     * @param params
     * @return
     */
    Long getCommonOperationRecordCount(Map<?, ?> params);
    /**
     * 根据指定条件获取通用操作记录
     * 注销、挂失、冲正、解锁通用
     * @param params
     * @return
     */
    List<VoOperate> getCommonOperations(Map<?, ?> params);
    /**
     * 根据指定条件获取收据列表数
     * @param params
     * @return
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoOperate.java
New file
@@ -0,0 +1,55 @@
package com.dy.pipIrrGlobal.voSe;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
 * @author ZhuBaoMin
 * @date 2024-02-05 11:23
 * @LastEditTime 2024-02-05 11:23
 * @Description
 */
@Data
@Schema(title = "通用操作记录视图对象")
public class VoOperate {
    private static final long serialVersionUID = 202402051126001L;
    @Schema(title = "农户姓名")
    private String clientName;
    @Schema(title = "农户编号")
    private String clientNum;
    @Schema(title = "水卡编号")
    private String cardNum;
    @Schema(title = "操作人")
    private String operator;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Schema(title = "操作时间")
    private Date operateDt;
    //注销查询2个返回值
    @Schema(title = "退回金额")
    private Float refund;
    @Schema(title = "退款方式名称")
    private String refundTypeName;
    //挂失1个返回值
    @Schema(title = "卡片余额及冲正后余额")
    private Double money;
    //冲正2个返回值,冲正后余额与挂失共用
    @Schema(title = "冲正前余额")
    private Double systemBalance;
    //解锁1个返回值,与挂失共用
}
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
@@ -387,7 +387,7 @@
  </select>
  <!--根据指定条件获取开卡记录-->
  <select id="getActiveCards" resultType="com.dy.pipIrrGlobal.voSe.VoActiveCardNew">
  <select id="getActiveCards" resultType="com.dy.pipIrrGlobal.voSe.VoActiveCard">
    SELECT
    CAST(ope.id AS char) AS id ,
    cli.name AS clientName,
@@ -491,6 +491,76 @@
    </trim>
  </select>
  <!--根据指定条件获取通用操作记录数量-->
  <select id="getCommonOperationRecordCount" 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 us ON ope.operator = us.id
    <where>
      <if test = "operateType != null and operateType > 0">
        AND ope.operate_type = ${operateType}
      </if>
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
      <if test = "cardNum != null and cardNum !=''">
        AND card.cardNum like CONCAT('%',#{cardNum},'%')
      </if>
      <if test = "timeStart != null and timeStop != null">
        AND ope.operate_dt BETWEEN #{timeStart} AND #{timeStop}
      </if>
    </where>
  </select>
  <!--根据指定条件获取通用操作记录-->
  <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
    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 us ON ope.operator = us.id
    <where>
      <if test = "operateType != null and operateType > 0">
        AND ope.operate_type = ${operateType}
      </if>
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
      <if test = "cardNum != null and cardNum !=''">
        AND card.cardNum like CONCAT('%',#{cardNum},'%')
      </if>
      <if test = "timeStart != null and timeStop != null">
        AND ope.operate_dt BETWEEN #{timeStart} AND #{timeStop}
      </if>
    </where>
    ORDER BY ope.operate_dt DESC
    <trim prefix="limit " >
      <if test="start != null and count != null">
        #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
      </if>
    </trim>
  </select>
  <!--根据指定条件获取收据列表数-->
  <select id="getReceiptsRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
    SELECT
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java
@@ -10,10 +10,7 @@
import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
import com.dy.pipIrrGlobal.util.AmountToChinese;
import com.dy.pipIrrGlobal.util.Constant;
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.pipIrrGlobal.voSe.*;
import com.dy.pipIrrSell.cardOperate.converter.RechargeDtoMapper;
import com.dy.pipIrrSell.cardOperate.dto.*;
import com.dy.pipIrrSell.cardOperate.enums.OperateTypeENUM;
@@ -484,6 +481,7 @@
        seCardOperate.setClientId(clientId);
        seCardOperate.setMoney(money);
        seCardOperate.setTradeAmount(-refund);
        seCardOperate.setPaymentId(1L);
        seCardOperate.setOperateType(OperateTypeENUM.LOSS.getCode());
        seCardOperate.setRemarks(remarks);
        seCardOperate.setOperator(operator);
@@ -794,13 +792,15 @@
    public BaseResponse<QueryResultVo<List<VoRecharge>>> get(QoRecharge vo){
        try {
            QueryResultVo<List<VoRecharge>> res = cardOperateSv.getRecharges(vo);
            if(res.itemTotal == 0) {
                return BaseResponseUtils.buildFail(SellResultCode.No_RECHARGES.getMessage());
            }
            return BaseResponseUtils.buildSuccess(res);
        } catch (Exception e) {
            log.error("获取充值记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
    }
    /**
     * 根据指定条件获取交易明细
@@ -845,9 +845,9 @@
    })
    @GetMapping(path = "/getActiveCards")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoActiveCardNew>>> getActiveCards(QoActiveCard vo){
    public BaseResponse<QueryResultVo<List<VoActiveCard>>> getActiveCards(QoActiveCard vo){
        try {
            QueryResultVo<List<VoActiveCardNew>> res = cardOperateSv.getActiveCards(vo);
            QueryResultVo<List<VoActiveCard>> res = cardOperateSv.getActiveCards(vo);
            if(res.itemTotal == 0) {
                return BaseResponseUtils.buildFail(SellResultCode.No_ActiveCards.getMessage());
            }
@@ -857,8 +857,6 @@
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
    }
    /**
     * 根据指定条件获取补卡记录
@@ -890,6 +888,43 @@
    }
    /**
     * 根据指定条件获取通用操作记录
     * 注销、挂失、冲正、解锁通用
     * 注销-3,挂失-6,冲正-7,解锁-8
     * @param vo
     * @return
     */
    @Operation(summary = "获取通用操作记录", description = "返回通用操作记录")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "返回一页开卡数据(BaseResponse.content:QueryResultVo[{}])",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = VoActiveCard.class))}
            )
    })
    @GetMapping(path = "/getOptions")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoOperate>>> getCommonOperations(QoCommonOperate vo){
        // 验证操作类型是否正确
        Integer operateType = Optional.ofNullable(vo.getOperateType()).orElse(0);
        if(operateType != 3 && operateType != 6 && operateType != 7 && operateType != 8) {
            return BaseResponseUtils.buildFail(SellResultCode.PARAMS_ERROR.getMessage());
        }
        try {
            QueryResultVo<List<VoOperate>> res = cardOperateSv.getCommonOperations(vo);
            if(res.itemTotal == 0) {
                return BaseResponseUtils.buildFail(SellResultCode.No_CANCELS.getMessage());
            }
            return BaseResponseUtils.buildSuccess(res);
        } catch (Exception e) {
            log.error("获取开卡记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
    }
    /**
     * 根据指定条件获取收据列表
     * @param vo
     * @return
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
@@ -231,7 +231,6 @@
        return rsVo ;
    }
    /**
     * 根据指定条件获取交易记录
     * @param vo
@@ -291,7 +290,7 @@
     * @param queryVo
     * @return
     */
    public QueryResultVo<List<VoActiveCardNew>> getActiveCards(QoActiveCard queryVo) {
    public QueryResultVo<List<VoActiveCard>> getActiveCards(QoActiveCard queryVo) {
        //完善查询充值记录的起止时间
        String activeTimeStart = queryVo.activeTimeStart;
        String activeTimeStop = queryVo.activeTimeStop;
@@ -308,7 +307,7 @@
        Long itemTotal = seCardOperateMapper.getActiveCardRecordCount(params);
        QueryResultVo<List<VoActiveCardNew>> rsVo = new QueryResultVo<>() ;
        QueryResultVo<List<VoActiveCard>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = queryVo.pageSize ;
        rsVo.pageCurr = queryVo.pageCurr ;
@@ -351,6 +350,38 @@
    }
    /**
     * 根据指定条件获取IC卡注销记录
     * @param queryVo
     * @return
     */
    public QueryResultVo<List<VoOperate>> getCommonOperations(QoCommonOperate queryVo) {
        //完善查询充值记录的起止时间
        String timeStart = queryVo.getTimeStart();
        String timeStop = queryVo.getTimeStop();
        if(timeStart != null) {
            timeStart = timeStart + " 00:00:00";
            queryVo.setTimeStart(timeStart);
        }
        if(timeStop != null) {
            timeStop = timeStop + " 23:59:59";
            queryVo.setTimeStop(timeStop);
        }
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
        Long itemTotal = Optional.ofNullable(seCardOperateMapper.getCommonOperationRecordCount(params)).orElse(0L);
        QueryResultVo<List<VoOperate>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = queryVo.pageSize ;
        rsVo.pageCurr = queryVo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = seCardOperateMapper.getCommonOperations(params);
        return rsVo ;
    }
    /**
     * 根据指定条件获取收据列表
     * @param queryVo
     * @return
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoCancel.java
New file
@@ -0,0 +1,34 @@
package com.dy.pipIrrSell.cardOperate.qo;
import com.dy.common.webUtil.QueryConditionVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
/**
 * @author ZhuBaoMin
 * @date 2024-02-05 9:29
 * @LastEditTime 2024-02-05 9:29
 * @Description
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ToString(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(name = "IC卡注销记录查询条件")
public class QoCancel extends QueryConditionVo {
    @Schema(description = "农户姓名")
    public String clientName;
    @Schema(description = "水卡编号")
    public String cardNum;
    @Schema(description = "注销时间_开始")
    public String timeStart;
    @Schema(description = "注销时间_结束")
    public String timeStop;
}
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoCommonOperate.java
New file
@@ -0,0 +1,39 @@
package com.dy.pipIrrSell.cardOperate.qo;
import com.dy.common.webUtil.QueryConditionVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
/**
 * @author ZhuBaoMin
 * @date 2024-02-05 11:00
 * @LastEditTime 2024-02-05 11:00
 * @Description
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ToString(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(name = "IC卡挂失记录查询条件")
public class QoCommonOperate extends QueryConditionVo {
    /**
     * 注销-3,挂失-6,冲正-7,解锁-8
     */
    @Schema(description = "操作类型")
    public Integer operateType;
    @Schema(description = "农户姓名")
    public String clientName;
    @Schema(description = "水卡编号")
    public Long cardNum;
    @Schema(description = "挂失时间_开始")
    public String timeStart;
    @Schema(description = "挂失时间_结束")
    public String timeStop;
}
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java
@@ -25,10 +25,13 @@
    REPLACE_FAIL_WRITE_CLIENT_CARD_ERROR(10007, "补卡失败-农户卡修改异常"),
    REPLACE_FAIL_WRITE_RECHARGE_ERROR(10008, "补卡失败-补卡记录写入异常"),
    No_ActiveCards(10009, "没有符合条件的开卡数据"),
    No_ReissueCards(10010, "没有符合条件的补卡数据"),
    No_RECHARGES(10010, "没有符合条件的充值数据"),
    No_ReissueCards(10011, "没有符合条件的补卡数据"),
    No_CANCELS(10010, "没有符合条件的注销数据"),
    PARAMS_ERROR(10010, "操作类型参数错误"),
    THE_CARD_NOT_EXIST(10011, "没有符合条件的水卡"),
    THE_CARD_NOT_SUPPORT_THIS_OPERATION(10012, "水卡状态不支持当前操作"),
    THE_CARD_NOT_EXIST(10012, "没有符合条件的水卡"),
    THE_CARD_NOT_SUPPORT_THIS_OPERATION(10013, "水卡状态不支持当前操作"),
    /**
     * 充值