2024-10-24 朱宝民 添加反写接口,完善各相关查询接口,兼容反写信息
| | |
| | | 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},'%') |
| | |
| | | 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 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},'%') |
| | |
| | | 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} |
| | |
| | | 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, |
| | |
| | | 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} |
| | |
| | | <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 != ''"> |
| | |
| | | '农户卡' 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 != ''"> |
| | |
| | | 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, |
| | |
| | | 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} |
| | |
| | | SELECT |
| | | id, |
| | | vc_num AS vcNum, |
| | | money, |
| | | ROUND(money / 100, 2) AS money, |
| | | in_use AS inUse, |
| | | (CASE |
| | | WHEN money <= #{alarmValue} THEN true |
| | |
| | | } |
| | | |
| | | /** |
| | | * 补扣 |
| | | * |
| | | * 补扣、反写 |
| | | * @param po |
| | | * @param bindingResult |
| | | * @return |
| | |
| | | * clientId 农户编号(非传入参数,由cardNum反查) |
| | | * cardNum 水卡编号 |
| | | * money 卡片余额 |
| | | * refund 补扣余额 |
| | | * refund 补扣余额/反写金额 |
| | | * remarks 备注 |
| | | * operator 操作人编号 |
| | | * refundTime 补扣时间 |
| | | * operateType 操作类型:1-补扣,2-反写 |
| | | */ |
| | | Long cardId = 0L; |
| | | Long clientId = 0L; |
| | |
| | | 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(""); |
| | |
| | | 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); |
| | |
| | | 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(); |
| | | } |
| | |
| | | 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); |
| | | } |
| | | } |
| | |
| | | @Schema(description = "操作人编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED) |
| | | @Positive(message = "操作人编号必须为大于0的整数") |
| | | private Long operator; |
| | | |
| | | /** |
| | | * 操作类型,1-补扣,2-反写 |
| | | */ |
| | | @NotNull(message = "操作类型不能为空") |
| | | private Integer operateType; |
| | | } |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | REVERSAL_FAIL_WRITE_REVERSAL_ERROR(60002, "冲正失败-冲正记录写入异常"), |
| | | |
| | | /** |
| | | * 补扣 |
| | | * 补扣/反写 |
| | | */ |
| | | REFUND_FAIL_WRITE_REFUND_ERROR(70001, "补扣失败-补扣记录写入异常"), |
| | | WRITE_BACK_FAIL_WRITE_BACK_ERROR(70002, "反写失败-反写记录写入异常"), |
| | | |
| | | /** |
| | | * 总账 |
| | |
| | | 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()); |