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