| | |
| | | import com.dy.pipIrrGlobal.pojoSe.SeCardOperate; |
| | | import com.dy.pipIrrGlobal.pojoSe.SeClientCard; |
| | | import com.dy.pipIrrGlobal.pojoSe.SeRechargeHistory; |
| | | import com.dy.pipIrrGlobal.voSe.VoAfterRecharge; |
| | | import com.dy.pipIrrGlobal.voSe.VoTermActiveCard; |
| | | import com.dy.pipIrrGlobal.voSe.VoTermCard; |
| | | import com.dy.pipIrrGlobal.voSe.VoTermCommon; |
| | | import com.dy.pipIrrGlobal.voSe.*; |
| | | import com.dy.pipIrrTerminal.card.dto.*; |
| | | import com.dy.pipIrrTerminal.card.enums.CardStateENUM; |
| | | import com.dy.pipIrrTerminal.card.enums.LastOperateENUM; |
| | |
| | | * @return |
| | | */ |
| | | public Map canCancel(DtoCancel po) { |
| | | Map map = new HashMap<>(); |
| | | map.put("success", false); |
| | | map.put("content", null); |
| | | |
| | | Long cardNum = po.getCardNum(); |
| | | String stateName = seClientCardMapper.getCardStateByCardNum(cardNum); |
| | | if(stateName == null || stateName.equals("") || !stateName.equals("正常")) { |
| | | map.put("msg", stateName + ", " + "水卡状态不支持当前操作"); |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 依据水卡编号获取水卡表主键及农户编号 |
| | | */ |
| | | Map map_card = Optional.ofNullable(seClientCardMapper.getCardIdAndClientNum(cardNum)).orElse(new HashMap()); |
| | | if (map_card == null || map_card.size() <= 0) { |
| | | map.put("msg", "卡号错误,该卡不存在"); |
| | | return map; |
| | | } |
| | | CardSimple card = new CardSimple(); |
| | | card.setCardId(Long.parseLong(map_card.get("cardId").toString())); |
| | | card.setClientId(Long.parseLong(map_card.get("clientId").toString())); |
| | | |
| | | map.put("success", true); |
| | | map.put("content", card); |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 根据水卡编号判断该卡是否可以补扣 |
| | | * @param po |
| | | * @return |
| | | */ |
| | | public Map canRepay(DtoRepaySupplement po) { |
| | | Map map = new HashMap<>(); |
| | | map.put("success", false); |
| | | map.put("content", null); |
| | | |
| | | Long cardNum = po.getCardNum(); |
| | | String stateName = seClientCardMapper.getCardStateByCardNum(cardNum); |
| | | if(stateName == null || stateName.equals("") || !stateName.equals("正常")) { |
| | | map.put("msg", stateName + ", " + "水卡状态不支持当前操作"); |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 依据水卡编号获取水卡表主键及农户编号 |
| | | */ |
| | | Map map_card = Optional.ofNullable(seClientCardMapper.getCardIdAndClientNum(cardNum)).orElse(new HashMap()); |
| | | if (map_card == null || map_card.size() <= 0) { |
| | | map.put("msg", "卡号错误,该卡不存在"); |
| | | return map; |
| | | } |
| | | CardSimple card = new CardSimple(); |
| | | card.setCardId(Long.parseLong(map_card.get("cardId").toString())); |
| | | card.setClientId(Long.parseLong(map_card.get("clientId").toString())); |
| | | |
| | | map.put("success", true); |
| | | map.put("content", card); |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 根据水卡编号判断该卡是否可以返还 |
| | | * @param po |
| | | * @return |
| | | */ |
| | | public Map canSupplement(DtoRepaySupplement po) { |
| | | Map map = new HashMap<>(); |
| | | map.put("success", false); |
| | | map.put("content", null); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 补扣 |
| | | * @param po |
| | | * @return |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Map repay(DtoRepaySupplement po) { |
| | | Map map = new HashMap<>(); |
| | | map.put("success", false); |
| | | map.put("content", null); |
| | | String orderNo = generateOrderNo(); |
| | | Date operateTime = new Date(); |
| | | Double waterPrice = Optional.ofNullable(prWaterPriceMapper.getPrice()).orElse(0.0); |
| | | |
| | | Map map_canRepay = canRepay(po); |
| | | if(map_canRepay.get("success").equals(false)) { |
| | | map.put("msg", map_canRepay.get("msg").toString()); |
| | | return map; |
| | | } |
| | | CardSimple card = (CardSimple) map_canRepay.get("content"); |
| | | Long cardId = card.getCardId(); |
| | | Long clientId = card.getClientId(); |
| | | |
| | | SeCardOperate seCardOperate = new SeCardOperate(); |
| | | seCardOperate.setCardId(cardId); |
| | | seCardOperate.setClientId(clientId); |
| | | seCardOperate.setMoney(po.getBalance()); |
| | | seCardOperate.setRefundAmount(po.getRepayMorny()); |
| | | seCardOperate.setOperateType(OperateTypeENUM.REFUND.getCode()); |
| | | seCardOperate.setRemarks(po.getRemarks()); |
| | | seCardOperate.setOperator(po.getOperator()); |
| | | seCardOperate.setOperateDt(operateTime); |
| | | seCardOperate.setOrderNo(orderNo); |
| | | seCardOperate.setOperateValid((byte) 1); |
| | | seCardOperateMapper.insert(seCardOperate); |
| | | if (seCardOperate.getId() == 0) { |
| | | map.put("msg", "补扣失败-补扣记录写入异常"); |
| | | return map; |
| | | } |
| | | |
| | | VoRepaySupplement voRepaySupplement = new VoRepaySupplement(); |
| | | voRepaySupplement.setBalance(po.getBalance() - po.getRepayMorny()); |
| | | voRepaySupplement.setWaterPrice(waterPrice); |
| | | voRepaySupplement.setTime(operateTime); |
| | | voRepaySupplement.setOrderNo(orderNo); |
| | | |
| | | map.put("success", true); |
| | | map.put("msg", "操作成功"); |
| | | map.put("content", voRepaySupplement); |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 返还 |
| | | * @param po |
| | | * @return |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Map supplement(DtoRepaySupplement po) { |
| | | Map map = new HashMap<>(); |
| | | map.put("success", false); |
| | | map.put("content", null); |
| | | String orderNo = generateOrderNo(); |
| | | Date operateTime = new Date(); |
| | | Double waterPrice = Optional.ofNullable(prWaterPriceMapper.getPrice()).orElse(0.0); |
| | | |
| | | Map map_canSupplement = canSupplement(po); |
| | | if(map_canSupplement.get("success").equals(false)) { |
| | | map.put("msg", map_canSupplement.get("msg").toString()); |
| | | return map; |
| | | } |
| | | CardSimple card = (CardSimple) map_canSupplement.get("content"); |
| | | Long cardId = card.getCardId(); |
| | | Long clientId = card.getClientId(); |
| | | |
| | | SeCardOperate seCardOperate = new SeCardOperate(); |
| | | seCardOperate.setCardId(cardId); |
| | | seCardOperate.setClientId(clientId); |
| | | seCardOperate.setMoney(po.getBalance()); |
| | | seCardOperate.setRefundAmount(po.getSupplementMoney()); |
| | | seCardOperate.setOperateType(OperateTypeENUM.WRITE_BACK.getCode()); |
| | | seCardOperate.setRemarks(po.getRemarks()); |
| | | seCardOperate.setOperator(po.getOperator()); |
| | | seCardOperate.setOperateDt(operateTime); |
| | | seCardOperate.setOrderNo(orderNo); |
| | | seCardOperate.setOperateValid((byte) 1); |
| | | seCardOperateMapper.insert(seCardOperate); |
| | | if (seCardOperate.getId() == 0) { |
| | | map.put("msg", "返还失败-返还记录写入异常"); |
| | | return map; |
| | | } |
| | | VoRepaySupplement voRepaySupplement = new VoRepaySupplement(); |
| | | voRepaySupplement.setBalance(po.getBalance() + po.getSupplementMoney()); |
| | | voRepaySupplement.setWaterPrice(waterPrice); |
| | | voRepaySupplement.setTime(operateTime); |
| | | voRepaySupplement.setOrderNo(orderNo); |
| | | |
| | | map.put("success", true); |
| | | map.put("msg", "操作成功"); |
| | | map.put("content", voRepaySupplement); |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 操作回调 |
| | | * @param po |
| | | * @return |
| | |
| | | map.put("msg", "补卡回调失败"); |
| | | return map; |
| | | } |
| | | |
| | | } else if (operateType == 5) { |
| | | /** |
| | | * 补扣操作执行通知 |
| | | * 1. 操作记录改为有效 |
| | | * 2. 修改水卡表操作信息及余额 |
| | | */ |
| | | Integer rec_ope = turnOperateValidByOrderNumber(orderNumber); |
| | | Integer rec_card = updateCardInfo_repay(cardId, orderNumber); |
| | | if (rec_ope == 0 || rec_card == 0) { |
| | | map.put("msg", "补扣回调失败"); |
| | | return map; |
| | | } |
| | | } else if (operateType == 6) { |
| | | /** |
| | | * 返还操作执行通知 |
| | | * 1. 操作记录改为有效 |
| | | * 2. 修改水卡表操作信息及余额 |
| | | */ |
| | | Integer rec_ope = turnOperateValidByOrderNumber(orderNumber); |
| | | Integer rec_card = updateCardInfo_supplement(cardId, orderNumber); |
| | | if (rec_ope == 0 || rec_card == 0) { |
| | | map.put("msg", "返还回调失败"); |
| | | return map; |
| | | } |
| | | } |
| | | |
| | | map.put("success", true); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 修改补扣水卡表记录及余额 |
| | | * @param cardId |
| | | * @param orderNumber |
| | | * @return |
| | | */ |
| | | public Integer updateCardInfo_repay(Long cardId, String orderNumber) { |
| | | VoRepaySupplementSimple po = seCardOperateMapper.getCardOperateByOrderNumber(orderNumber); |
| | | Float money = Optional.ofNullable(po.getMoney()).orElse(0f); |
| | | Float refundAmount = Optional.ofNullable(po.getRefundAmount()).orElse(0f); |
| | | Date operateTime = po.getOperateTime(); |
| | | |
| | | SeClientCard clientCard = new SeClientCard(); |
| | | clientCard.setId(cardId); |
| | | clientCard.setRefunddt(operateTime); |
| | | clientCard.setMoney(money - refundAmount); |
| | | clientCard.setState(CardStateENUM.NORMAL.getCode()); |
| | | clientCard.setLastoper(LastOperateENUM.REFUND.getCode()); |
| | | return seClientCardMapper.updateByPrimaryKeySelective(clientCard); |
| | | } |
| | | |
| | | /** |
| | | * 修改返还水卡表记录及余额 |
| | | * @param cardId |
| | | * @param orderNumber |
| | | * @return |
| | | */ |
| | | public Integer updateCardInfo_supplement(Long cardId, String orderNumber) { |
| | | VoRepaySupplementSimple po = seCardOperateMapper.getCardOperateByOrderNumber(orderNumber); |
| | | Float money = Optional.ofNullable(po.getMoney()).orElse(0f); |
| | | Float refundAmount = Optional.ofNullable(po.getRefundAmount()).orElse(0f); |
| | | Date operateTime = po.getOperateTime(); |
| | | |
| | | SeClientCard clientCard = new SeClientCard(); |
| | | clientCard.setId(cardId); |
| | | clientCard.setRefunddt(operateTime); |
| | | clientCard.setMoney(money + refundAmount); |
| | | clientCard.setState(CardStateENUM.NORMAL.getCode()); |
| | | clientCard.setLastoper(LastOperateENUM.WRITE_BACK.getCode()); |
| | | return seClientCardMapper.updateByPrimaryKeySelective(clientCard); |
| | | } |
| | | |
| | | /** |
| | | * 判断指定水卡是否为挂失状态且无补卡记录 |
| | | * @param cardNum |
| | | * @return |