From a551e3a53125bcad49dfb6dd2413fc9aa3852004 Mon Sep 17 00:00:00 2001 From: yuyang <2265829957@qq.com> Date: Wed, 18 Aug 2021 16:52:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A1=A9=E5=9B=9E=E8=B0=83=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/factory/PileOrderFallbackFactory.java | 2 +- .../order/api/HxpcPileOrderController.java | 378 +++++++++--------- 2 files changed, 196 insertions(+), 184 deletions(-) diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/PileOrderFallbackFactory.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/PileOrderFallbackFactory.java index 624f18c8..bab6db66 100644 --- a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/PileOrderFallbackFactory.java +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/PileOrderFallbackFactory.java @@ -35,7 +35,7 @@ public class PileOrderFallbackFactory implements FallbackFactory cacheMap = redisService.getCacheMap("order:"+orderNo+".lord"); - JSONObject jsonObject = (JSONObject)cacheMap.get("realtimeDataList"); - System.out.println(jsonObject.toString()); + CacheRealtimeData cacheRealtimeData = redisService.getCacheObject("order:"+orderNo+".lord"); + HxpcChargeOrder hxpcChargeOrder = hxpcChargeOrderService.getSerialNumberMessage(orderNo); try{ - CacheRealtimeData cacheRealtimeData = JSON.toJavaObject(jsonObject, CacheRealtimeData.class); - XhpcRealTimeOrder xhpcRealTimeOrder =new XhpcRealTimeOrder(); xhpcRealTimeOrder.setChargingOrderId(hxpcChargeOrder.getChargeOrderId()); xhpcRealTimeOrder.setTransactionNumber(orderNo); @@ -221,9 +222,6 @@ public class HxpcPileOrderController extends BaseController { }catch (Exception e){ return R.fail(500,"无实时数据"); } - - - return R.ok(); } @@ -237,188 +235,202 @@ public class HxpcPileOrderController extends BaseController { public R pileEndOrder(@RequestParam(value = "orderNo") String orderNo) { try{ + //获取实时订单 + Map cacheMap = redisService.getCacheMap("order:"+orderNo); + CacheOrderData cacheOrderData = (CacheOrderData)cacheMap.get("orderData"); //解析订单编号 -// String s = pileEndOrder.getOrderNo().split("\\.")[0]; -// String s1 = s.split(":")[1]; -// Date date = new Date(); -// //总金额 -// BigDecimal money = new BigDecimal((pileEndOrder.getAmountCharged()/100)); -// //总电费 -// BigDecimal powerPrice = new BigDecimal((pileEndOrder.getPowerPrice()/100)); -// //总服务费 -// BigDecimal servicePrice = new BigDecimal((pileEndOrder.getServicePrice()/100)); -// //剩余的电费 -// BigDecimal surplusPowerPrice = powerPrice; -// //剩余的服务费 -// BigDecimal surplusServicePrice = servicePrice; + Date date = new Date(); + //总金额 + BigDecimal money = new BigDecimal((cacheOrderData.getCost()/100)); + int sumCost =cacheOrderData.getT1Cost()+cacheOrderData.getT2Cost()+cacheOrderData.getT3Cost()+cacheOrderData.getT4Cost(); + int sumService = cacheOrderData.getCost()-sumCost; + //总电费 + BigDecimal powerPrice = new BigDecimal((sumCost/100)); + //总服务费 + BigDecimal servicePrice = new BigDecimal((sumService/100)); + //剩余的电费 + BigDecimal surplusPowerPrice = powerPrice; + //剩余的服务费 + BigDecimal surplusServicePrice = servicePrice; + int startSoc = cacheOrderData.getStartSoc(); + int endSoc = cacheOrderData.getEndSoc(); + //获取充电订单 + HxpcChargeOrder hxpcChargeOrder = hxpcChargeOrderService.getSerialNumberMessage(orderNo); + + hxpcChargeOrder.setStartSoc(startSoc+""); + hxpcChargeOrder.setEndSoc(endSoc+""); + hxpcChargeOrder.setStatus(cacheOrderData.getStatus()); + + DateTime startTime = DateUtil.parse(cacheOrderData.getStartTime()); + DateTime endTime = DateUtil.parse(cacheOrderData.getEndTime()); + hxpcChargeOrder.setEndTime(endTime); + + //充电时长 + Long tiem = endTime.getTime()-startTime.getTime(); + + hxpcChargeOrder.setChargingTime(tiem+""); + hxpcChargeOrder.setChargingDegree(cacheOrderData.getTotalPowerQuantity().toString()); + hxpcChargeOrder.setAmountCharged(money.toString()); + String stopReason = cacheOrderData.getStopReason(); + hxpcChargeOrder.setErroRemark(stopReason); + + //历史订单 + Long userId =hxpcChargeOrder.getUserId(); + //生成一条历史订单 + XhpcHistoryOrder xhpcHistoryOrder =new XhpcHistoryOrder(); + + Map userMessage = hxpcChargeOrderService.getUserMessage(userId); + if(userMessage ==null || userMessage.get("balance") ==null){ + //订单异常 + hxpcChargeOrder.setStatus(2); + //异常原因 + hxpcChargeOrder.setErroRemark("桩异常:"+stopReason+">>>>用户id:"+userId+"为空"); + } + BigDecimal balance = new BigDecimal(userMessage.get("balance").toString()).divide(new BigDecimal(100)); + + //电站活动抵扣--抵扣的总金额 + BigDecimal promotionDiscount = new BigDecimal(0); + //实际价格-用户支付的钱 + BigDecimal actPrice =new BigDecimal(0); + //实收电费-运营商电费 + BigDecimal actPowerPrice =new BigDecimal(0); + //实收服务费-运营商服务费 + BigDecimal actServicePrice =new BigDecimal(0); + //流量方总金额抽成 + BigDecimal internetCommission =new BigDecimal(0); + //流量方服务费抽成 + BigDecimal internetSvcCommission =new BigDecimal(0); + //平台总金额抽成 + BigDecimal platformCommission =new BigDecimal(0); + //平台服务费抽成 + BigDecimal platformSvcCommission =new BigDecimal(0); + //运维总抽成 + BigDecimal operationCommission =new BigDecimal(0); + //运维服务费抽成 + BigDecimal operationSvcCommission =new BigDecimal(0); + + //判断是C端用户还是流量端用户 + if(hxpcChargeOrder.getSource() ==0){ + String state =""; + BigDecimal discount =new BigDecimal(0); + //用户第几次充电 + int count = hxpcChargeOrderService.getCount(userId); + if(count==0){ + //活动折扣 + Map promotion = hxpcChargeOrderService.getPromotion(); + if(promotion !=null && promotion.get("state") !=null && promotion.get("discount") !=null){ + //state 1.总金额 2.电费 3.服务费 discount 折扣率 + state = promotion.get("state").toString(); + discount =new BigDecimal(promotion.get("discount").toString()); + } + } + if(!"".equals(state)){ + + if("1".equals(state)){ + //总金额 + promotionDiscount=money.multiply(balance); + actPrice = money.subtract(promotionDiscount); + surplusPowerPrice = surplusPowerPrice.subtract(promotionDiscount.divide(new BigDecimal(2))); + surplusServicePrice= surplusServicePrice.subtract(promotionDiscount.divide(new BigDecimal(2))); + }else if("2".equals(state)){ + //电费 + promotionDiscount =powerPrice.multiply(balance); + actPrice = money.subtract(promotionDiscount); + surplusPowerPrice=surplusPowerPrice.subtract(promotionDiscount); + }else if("3".equals(state)){ + //服务费 + promotionDiscount = servicePrice.multiply(balance); + actPrice = money.subtract(promotionDiscount); + surplusServicePrice =surplusServicePrice.subtract(promotionDiscount); + } + } + xhpcHistoryOrder.setInternetCommission(internetCommission); + xhpcHistoryOrder.setInternetSvcCommission(internetSvcCommission); + }else{ + //流量方,未实现 + } + + //获取运营商 + Map operatorMessage = hxpcChargeOrderService.getOperatorMessage(hxpcChargeOrder.getChargingStationId()); + if(operatorMessage !=null){ + if(operatorMessage.get("maintenanceCommissionRate") !=null && operatorMessage.get("commissionType") !=null && operatorMessage.get("platformCommissionRate") !=null){ + Integer commissionType = (Integer) operatorMessage.get("commissionType"); + //运维提成 + BigDecimal maintenanceCommissionRate = new BigDecimal(userMessage.get("maintenanceCommissionRate").toString()).divide(new BigDecimal(100)); + //平台提成 + BigDecimal platformCommissionRate = new BigDecimal(userMessage.get("platformCommissionRate").toString()).divide(new BigDecimal(100)); + //提成类型(0总金额提成 1服务费提成) + if(commissionType==0){ + BigDecimal multiply1 = surplusPowerPrice.multiply(platformCommissionRate); + BigDecimal multiply2 = surplusServicePrice.multiply(platformCommissionRate); + platformCommission = multiply1.add(multiply2); + //剩下的钱 + surplusPowerPrice = surplusPowerPrice.subtract(multiply1); + surplusServicePrice = surplusServicePrice.subtract(multiply2); + BigDecimal multiply3 = surplusPowerPrice.multiply(maintenanceCommissionRate); + BigDecimal multiply4 = surplusServicePrice.multiply(maintenanceCommissionRate); + operationCommission = multiply1.add(multiply2); + //剩下的钱 + surplusPowerPrice = surplusPowerPrice.subtract(multiply3); + surplusServicePrice = surplusServicePrice.subtract(multiply4); + + }else if(commissionType==1){ + BigDecimal multiply2 = surplusServicePrice.multiply(platformCommissionRate); + platformSvcCommission=multiply2; + //剩下的钱 + surplusServicePrice = surplusServicePrice.subtract(multiply2); + + BigDecimal multiply4 = surplusServicePrice.multiply(maintenanceCommissionRate); + operationCommission = multiply4; + //剩下的钱 + surplusServicePrice = surplusServicePrice.subtract(multiply4); + } + }else{ + //订单异常 + hxpcChargeOrder.setStatus(2); + //异常原因 + hxpcChargeOrder.setErroRemark("桩异常:"+stopReason+">>>>用户id:"+userId+"为空"+">>>>运营商提出为空"); + + } + } + + + xhpcHistoryOrder.setChargeOrderId(hxpcChargeOrder.getChargeOrderId()); + xhpcHistoryOrder.setChargingStationId(hxpcChargeOrder.getChargingStationId()); + xhpcHistoryOrder.setUserId(userId); + xhpcHistoryOrder.setTerminalId(hxpcChargeOrder.getTerminalId()); + xhpcHistoryOrder.setSerialNumber(hxpcChargeOrder.getSerialNumber()); + xhpcHistoryOrder.setStartSoc(hxpcChargeOrder.getStartSoc()); + xhpcHistoryOrder.setReconciliationStatus(0); + xhpcHistoryOrder.setSortingStatus(0); + xhpcHistoryOrder.setType(1); + xhpcHistoryOrder.setStatus(0); + xhpcHistoryOrder.setDelFlag(0); + //订单总价---运维服务费抽成 + xhpcHistoryOrder.setTotalPrice(money); + xhpcHistoryOrder.setPromotionDiscount(promotionDiscount); + xhpcHistoryOrder.setActPowerPrice(actPowerPrice); + xhpcHistoryOrder.setActPowerPrice(surplusPowerPrice); + xhpcHistoryOrder.setActServicePrice(surplusServicePrice); + xhpcHistoryOrder.setInternetCommission(internetCommission); + xhpcHistoryOrder.setInternetSvcCommission(internetSvcCommission); + xhpcHistoryOrder.setPlatformCommission(platformCommission); + xhpcHistoryOrder.setPlatformSvcCommisssion(platformSvcCommission); + xhpcHistoryOrder.setOperationCommission(operationCommission); + xhpcHistoryOrder.setOperationSvcCommission(operationSvcCommission); + xhpcHistoryOrder.setStartSoc(startSoc+""); + xhpcHistoryOrder.setEndSoc(endSoc+""); + xhpcHistoryOrder.setReconciliationStatus(0); + xhpcHistoryOrder.setCreateTime(date); // -// //获取充电订单 -// HxpcChargeOrder hxpcChargeOrder = hxpcChargeOrderService.getSerialNumberMessage(s1); -// hxpcChargeOrder.setStartSoc(pileEndOrder.getStartSoc()); -// hxpcChargeOrder.setEndSoc(pileEndOrder.getEndSoc()); -// hxpcChargeOrder.setStatus(pileEndOrder.getStatus()); -// hxpcChargeOrder.setEndTime(pileEndOrder.getCreateTime()); -// hxpcChargeOrder.setChargingTime(pileEndOrder.getChargingTime().toString()); -// hxpcChargeOrder.setChargingDegree(pileEndOrder.getChargingDegree().toString()); -// hxpcChargeOrder.setAmountCharged(money.toString()); -// hxpcChargeOrder.setErroRemark(pileEndOrder.getErroRemark()); -// -// //历史订单 -// Long userId =hxpcChargeOrder.getUserId(); -// //生成一条历史订单 -// XhpcHistoryOrder xhpcHistoryOrder =new XhpcHistoryOrder(); -// -// Map userMessage = hxpcChargeOrderService.getUserMessage(userId); -// if(userMessage ==null || userMessage.get("balance") ==null){ -// //订单异常 -// hxpcChargeOrder.setStatus(2); -// //异常原因 -// hxpcChargeOrder.setErroRemark("桩异常:"+pileEndOrder.getErroRemark()+">>>>用户id:"+userId+"为空"); -// } -// BigDecimal balance = new BigDecimal(userMessage.get("balance").toString()).divide(new BigDecimal(100)); -// -// //电站活动抵扣--抵扣的总金额 -// BigDecimal promotionDiscount = new BigDecimal(0); -// //实际价格-用户支付的钱 -// BigDecimal actPrice =new BigDecimal(0); -// //实收电费-运营商电费 -// BigDecimal actPowerPrice =new BigDecimal(0); -// //实收服务费-运营商服务费 -// BigDecimal actServicePrice =new BigDecimal(0); -// //流量方总金额抽成 -// BigDecimal internetCommission =new BigDecimal(0); -// //流量方服务费抽成 -// BigDecimal internetSvcCommission =new BigDecimal(0); -// //平台总金额抽成 -// BigDecimal platformCommission =new BigDecimal(0); -// //平台服务费抽成 -// BigDecimal platformSvcCommission =new BigDecimal(0); -// //运维总抽成 -// BigDecimal operationCommission =new BigDecimal(0); -// //运维服务费抽成 -// BigDecimal operationSvcCommission =new BigDecimal(0); -// -// //判断是C端用户还是流量端用户 -// if(hxpcChargeOrder.getSource() ==0){ -// String state =""; -// BigDecimal discount =new BigDecimal(0); -// //用户第几次充电 -// int count = hxpcChargeOrderService.getCount(userId); -// if(count==0){ -// //活动折扣 -// Map promotion = hxpcChargeOrderService.getPromotion(); -// if(promotion !=null && promotion.get("state") !=null && promotion.get("discount") !=null){ -// //state 1.总金额 2.电费 3.服务费 discount 折扣率 -// state = promotion.get("state").toString(); -// discount = (BigDecimal)promotion.get("discount"); -// } -// } -// if(!"".equals(state)){ -// -// if("1".equals(state)){ -// //总金额 -// promotionDiscount=money.multiply(balance); -// actPrice = money.subtract(promotionDiscount); -// surplusPowerPrice = surplusPowerPrice.subtract(promotionDiscount.divide(new BigDecimal(2))); -// surplusServicePrice= surplusServicePrice.subtract(promotionDiscount.divide(new BigDecimal(2))); -// }else if("2".equals(state)){ -// //电费 -// promotionDiscount =powerPrice.multiply(balance); -// actPrice = money.subtract(promotionDiscount); -// surplusPowerPrice=surplusPowerPrice.subtract(promotionDiscount); -// }else if("3".equals(state)){ -// //服务费 -// promotionDiscount = servicePrice.multiply(balance); -// actPrice = money.subtract(promotionDiscount); -// surplusServicePrice =surplusServicePrice.subtract(promotionDiscount); -// } -// } -// xhpcHistoryOrder.setInternetCommission(internetCommission); -// xhpcHistoryOrder.setInternetSvcCommission(internetSvcCommission); -// }else{ -// //流量方,未实现 -// } -// -// //获取运营商 -// Map operatorMessage = hxpcChargeOrderService.getOperatorMessage(hxpcChargeOrder.getChargingStationId()); -// if(operatorMessage !=null){ -// if(operatorMessage.get("maintenanceCommissionRate") !=null && operatorMessage.get("commissionType") !=null && operatorMessage.get("platformCommissionRate") !=null){ -// Integer commissionType = (Integer) operatorMessage.get("commissionType"); -// //运维提成 -// BigDecimal maintenanceCommissionRate = new BigDecimal(userMessage.get("maintenanceCommissionRate").toString()).divide(new BigDecimal(100)); -// //平台提成 -// BigDecimal platformCommissionRate = new BigDecimal(userMessage.get("platformCommissionRate").toString()).divide(new BigDecimal(100)); -// //提成类型(0总金额提成 1服务费提成) -// if(commissionType==0){ -// BigDecimal multiply1 = surplusPowerPrice.multiply(platformCommissionRate); -// BigDecimal multiply2 = surplusServicePrice.multiply(platformCommissionRate); -// platformCommission = multiply1.add(multiply2); -// //剩下的钱 -// surplusPowerPrice = surplusPowerPrice.subtract(multiply1); -// surplusServicePrice = surplusServicePrice.subtract(multiply2); -// BigDecimal multiply3 = surplusPowerPrice.multiply(maintenanceCommissionRate); -// BigDecimal multiply4 = surplusServicePrice.multiply(maintenanceCommissionRate); -// operationCommission = multiply1.add(multiply2); -// //剩下的钱 -// surplusPowerPrice = surplusPowerPrice.subtract(multiply3); -// surplusServicePrice = surplusServicePrice.subtract(multiply4); -// -// }else if(commissionType==1){ -// BigDecimal multiply2 = surplusServicePrice.multiply(platformCommissionRate); -// platformSvcCommission=multiply2; -// //剩下的钱 -// surplusServicePrice = surplusServicePrice.subtract(multiply2); -// -// BigDecimal multiply4 = surplusServicePrice.multiply(maintenanceCommissionRate); -// operationCommission = multiply4; -// //剩下的钱 -// surplusServicePrice = surplusServicePrice.subtract(multiply4); -// } -// }else{ -// //订单异常 -// hxpcChargeOrder.setStatus(2); -// //异常原因 -// hxpcChargeOrder.setErroRemark("桩异常:"+pileEndOrder.getErroRemark()+">>>>用户id:"+userId+"为空"+">>>>运营商提出为空"); -// -// } -// } -// -// -// xhpcHistoryOrder.setChargeOrderId(hxpcChargeOrder.getChargeOrderId()); -// xhpcHistoryOrder.setChargingStationId(hxpcChargeOrder.getChargingStationId()); -// xhpcHistoryOrder.setUserId(userId); -// xhpcHistoryOrder.setTerminalId(hxpcChargeOrder.getTerminalId()); -// xhpcHistoryOrder.setSerialNumber(hxpcChargeOrder.getSerialNumber()); -// xhpcHistoryOrder.setStartSoc(hxpcChargeOrder.getStartSoc()); -// xhpcHistoryOrder.setReconciliationStatus(0); -// xhpcHistoryOrder.setSortingStatus(0); -// xhpcHistoryOrder.setType(1); -// xhpcHistoryOrder.setStatus(0); -// xhpcHistoryOrder.setDelFlag(0); -// //订单总价---运维服务费抽成 -// xhpcHistoryOrder.setTotalPrice(money); -// xhpcHistoryOrder.setPromotionDiscount(promotionDiscount); -// xhpcHistoryOrder.setActPowerPrice(actPowerPrice); -// xhpcHistoryOrder.setActPowerPrice(surplusPowerPrice); -// xhpcHistoryOrder.setActServicePrice(surplusServicePrice); -// xhpcHistoryOrder.setInternetCommission(internetCommission); -// xhpcHistoryOrder.setInternetSvcCommission(internetSvcCommission); -// xhpcHistoryOrder.setPlatformCommission(platformCommission); -// xhpcHistoryOrder.setPlatformSvcCommisssion(platformSvcCommission); -// xhpcHistoryOrder.setOperationCommission(operationCommission); -// xhpcHistoryOrder.setOperationSvcCommission(operationSvcCommission); -// xhpcHistoryOrder.setStartSoc(pileEndOrder.getStartSoc()); -// xhpcHistoryOrder.setEndSoc(pileEndOrder.getEndSoc()); -// xhpcHistoryOrder.setReconciliationStatus(0); -// xhpcHistoryOrder.setCreateTime(date); -// -// xhpcHistoryOrderService.insert(xhpcHistoryOrder); -// hxpcChargeOrderService.updateXhpcChargeOrder(hxpcChargeOrder); + xhpcHistoryOrderService.insert(xhpcHistoryOrder); + hxpcChargeOrderService.updateXhpcChargeOrder(hxpcChargeOrder); //删除实时数据,获取最新的实时数据 //hxpcChargeOrderService.deleteRealTimeOrder(hxpcChargeOrder.getChargeOrderId()); //添加新的实时数据 }catch (Exception e){ + e.printStackTrace(); return R.fail(500,"添加订单回调失败"); } return R.ok();