zhubaomin
2024-10-24 e5ac29afd5569196a54bd4f77457848afc7adf55
2024-10-24 朱宝民 添加反写接口,完善各相关查询接口,兼容反写信息
11个文件已修改
110 ■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeGeneralMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoRefund.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/enums/OperateTypeENUM.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/LastOperateENUM.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
@@ -251,7 +251,7 @@
        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)
      AND ope.operate_type in(1, 2, 5,10)
      AND ope.operate_valid = 2
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
@@ -300,6 +300,7 @@
        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
@@ -309,7 +310,7 @@
        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)
      AND ope.operate_type in(1, 2, 5,10)
      AND ope.operate_valid = 2
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
@@ -341,7 +342,7 @@
        LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
        INNER JOIN ba_user us ON ope.operator = us.id
    <where>
      AND ope.operate_type IN(1,2,3,5)
      AND ope.operate_type IN(1,2,3,5,10)
      AND ope.operate_valid = 2
      <if test = "villageId != null and villageId > 0">
        AND cli.villageId = #{villageId}
@@ -371,6 +372,7 @@
            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,
@@ -395,7 +397,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)
      AND ope.operate_type IN(1,2,3,5,10)
      AND ope.operate_valid = 2
      <if test = "villageId != null and villageId > 0">
        AND cli.villageId = #{villageId}
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
@@ -454,7 +454,7 @@
    <select id="getCardsCount" parameterType="java.util.Map" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM se_client_card card
            INNER JOIN se_client cli ON card.clientId = cli.id
            LEFT JOIN se_client cli ON card.clientId = cli.id
        <where>
            AND card.state = 1
            <if test="clientNum != null and clientNum != ''">
@@ -483,7 +483,7 @@
            '农户卡' AS cardType,
            FORMAT(card.money, 2) AS money
        FROM se_client_card card
            INNER JOIN se_client cli ON card.clientId = cli.id
            LEFT JOIN se_client cli ON card.clientId = cli.id
        <where>
            AND card.state = 1
            <if test="clientNum != null and clientNum != ''">
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeGeneralMapper.xml
@@ -294,6 +294,7 @@
            WHEN ope.operate_type = 3 THEN '销卡'
            WHEN ope.operate_type = 4 THEN '补卡'
            WHEN ope.operate_type = 5 THEN '返还'
            WHEN ope.operate_type = 10 THEN '反写'
        END AS operateType,
        Date(ope.operate_dt) AS tradeDate,
        COUNT(*) AS count,
@@ -304,7 +305,7 @@
    FROM se_card_operate ope
        INNER JOIN ba_user us ON us.id = ope.operator
    <where>
      AND ope.operate_type IN(1,2,3,4,5)
      AND ope.operate_type IN(1,2,3,4,5,10)
      AND ope.operate_valid = 2
      <if test = "cashierId != null and cashierId > 0">
        AND us.id = #{cashierId}
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml
@@ -189,7 +189,7 @@
    SELECT
      id,
      vc_num AS vcNum,
      money,
      ROUND(money / 100, 2) AS money,
      in_use AS inUse,
      (CASE
        WHEN money &lt;= #{alarmValue} THEN true
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java
@@ -614,8 +614,7 @@
    }
    /**
     * 补扣
     *
     * 补扣、反写
     * @param po
     * @param bindingResult
     * @return
@@ -633,10 +632,11 @@
         * clientId         农户编号(非传入参数,由cardNum反查)
         * cardNum          水卡编号
         * money            卡片余额
         * refund           补扣余额
         * refund           补扣余额/反写金额
         * remarks          备注
         * operator         操作人编号
         * refundTime       补扣时间
         * operateType      操作类型:1-补扣,2-反写
         */
        Long cardId = 0L;
        Long clientId = 0L;
@@ -645,7 +645,7 @@
        Float refund = po.getRefund();
        String remarks = po.getRemarks();
        Long operator = po.getOperator();
        Date refundTime = new Date();
        Integer operateType = po.getOperateType();
        // 验证水卡状态是否支持当前操作
        String stateName = Optional.ofNullable(clientCardSv.getCardStateByCardNum(cardNum)).orElse("");
@@ -685,16 +685,29 @@
        SeCardOperate seCardOperate = new SeCardOperate();
        seCardOperate.setCardId(cardId);
        seCardOperate.setClientId(clientId);
        seCardOperate.setMoney(money);
        if(operateType == 1) {
            // 补扣
            seCardOperate.setMoney(money);
            seCardOperate.setOperateType(OperateTypeENUM.REFUND.getCode());
        }else {
            // 反写
            seCardOperate.setMoney(refund);
            seCardOperate.setOperateType(OperateTypeENUM.WRITE_BACK.getCode());
        }
        //seCardOperate.setMoney(money);
        seCardOperate.setRefundAmount(refund);
        seCardOperate.setOperateType(OperateTypeENUM.REFUND.getCode());
        //seCardOperate.setOperateType(OperateTypeENUM.REFUND.getCode());
        seCardOperate.setRemarks(remarks);
        seCardOperate.setOperator(operator);
        seCardOperate.setOperateDt(refundTime);
        seCardOperate.setOperateDt(new Date());
        seCardOperate.setOperateValid((byte) 1);
        Long rec = Optional.ofNullable(cardOperateSv.add(seCardOperate)).orElse(0L);
        if (rec == 0) {
            return BaseResponseUtils.buildErrorMsg(SellResultCode.REFUND_FAIL_WRITE_REFUND_ERROR.getMessage());
            if(operateType == 1) {
                return BaseResponseUtils.buildErrorMsg(SellResultCode.REFUND_FAIL_WRITE_REFUND_ERROR.getMessage());
            }else {
                return BaseResponseUtils.buildErrorMsg(SellResultCode.WRITE_BACK_FAIL_WRITE_BACK_ERROR.getMessage());
            }
        }
        return BaseResponseUtils.buildSuccess(true);
@@ -881,6 +894,16 @@
            cardOperateSv.turnOperateValidByCardId(cardId, operateType);
            cardOperateSv.updateRefund(operateType, cardId);
        }
        else if (operateType == 10) {
            /**
             * 反写操作执行通知
             *  1.操作记录改为有效
             *  2.修改水卡表的操作信息及余额-从操作记录中取money
             *  说明:返还操作记录中的money就是反写金额
             */
            cardOperateSv.turnOperateValidByCardId(cardId, operateType);
            cardOperateSv.updateWriteBack(operateType, cardId);
        }
        return BaseResponseUtils.buildSuccess();
    }
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
@@ -816,4 +816,23 @@
        clientCard.setLastoper(LastOperateENUM.REFUND.getCode());
        return seClientCardMapper.updateByPrimaryKeySelective(clientCard);
    }
    /**
     * 修改反写水卡表的操作信息及余额
     * @param operateType
     * @param cardId
     * @return
     */
    public Integer updateWriteBack(Integer operateType, Long cardId) {
        SeCardOperate cardOperate = seCardOperateMapper.getCardOperate(operateType, cardId);
        Date writeBackTime = Optional.ofNullable(cardOperate.getOperateDt()).orElse(new Date());
        Float money = cardOperate.getMoney();
        SeClientCard clientCard = new SeClientCard();
        clientCard.setId(cardId);
        clientCard.setRefunddt(writeBackTime);
        clientCard.setMoney(money);
        clientCard.setLastoper(LastOperateENUM.WRITE_BACK.getCode());
        return seClientCardMapper.updateByPrimaryKeySelective(clientCard);
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoRefund.java
@@ -55,4 +55,10 @@
    @Schema(description = "操作人编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @Positive(message = "操作人编号必须为大于0的整数")
    private Long operator;
    /**
     * 操作类型,1-补扣,2-反写
     */
    @NotNull(message = "操作类型不能为空")
    private Integer operateType;
}
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/enums/OperateTypeENUM.java
@@ -21,9 +21,8 @@
    LOSS((byte)6, "挂失"),
    REVERSAL((byte)7, "冲正"),
    UNLOCK((byte)8, "解锁"),
    CONSUME((byte)9, "消费");
    //CHANGE_CARD((byte)10, "换卡"),
    //CHANGE_RECHARGE((byte)11, "换卡充值");
    CONSUME((byte)9, "消费"),
    WRITE_BACK((byte)10, "反写");
    private final Byte code;
    private final String message;
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/LastOperateENUM.java
@@ -21,9 +21,8 @@
    LOSS((byte)6, "挂失"),
    REVERSAL((byte)7, "冲正"),
    UNLOCK((byte)8, "解锁"),
    CONSUME((byte)9, "消费");
    //CHANGE_CARD((byte)10,"换卡"),
    //CHANGE_RECHARGE((byte)11,"换卡充值");
    CONSUME((byte)9, "消费"),
    WRITE_BACK((byte)10, "反写");
    private final Byte code;
    private final String message;
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java
@@ -69,9 +69,10 @@
    REVERSAL_FAIL_WRITE_REVERSAL_ERROR(60002, "冲正失败-冲正记录写入异常"),
    /**
     * 补扣
     * 补扣/反写
     */
    REFUND_FAIL_WRITE_REFUND_ERROR(70001, "补扣失败-补扣记录写入异常"),
    WRITE_BACK_FAIL_WRITE_BACK_ERROR(70002, "反写失败-反写记录写入异常"),
    /**
     * 总账
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java
@@ -104,14 +104,16 @@
        JSONObject response = (JSONObject) JSON.toJSON(sendCom2Mw(com));
        if(response != null && response.getString("code").equals("0001")) {
            JSONObject attachment = response.getJSONObject("content").getJSONObject("attachment").getJSONObject("onLineMap");
            HashMap<String, Boolean> onLineMap = JSON.parseObject(attachment.toJSONString(), HashMap.class);
            JSONArray jsonArray = new JSONArray();
            for (Map.Entry<String, Boolean> entry : onLineMap.entrySet()) {
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("rtuAddr", entry.getKey());
                jsonObject.put("isOnLine", entry.getValue());
                jsonArray.add(jsonObject);
            if(attachment != null) {
                HashMap<String, Boolean> onLineMap = JSON.parseObject(attachment.toJSONString(), HashMap.class);
                for (Map.Entry<String, Boolean> entry : onLineMap.entrySet()) {
                    JSONObject jsonObject = new JSONObject();
                    jsonObject.put("rtuAddr", entry.getKey());
                    jsonObject.put("isOnLine", entry.getValue());
                    jsonArray.add(jsonObject);
                }
            }
            System.out.println(jsonArray.toJSONString());