|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 补扣 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * 补扣、反写 | 
|---|
|  |  |  | * @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(); | 
|---|
|  |  |  | } | 
|---|