diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/XhpcPileOrderController.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/XhpcPileOrderController.java index 01f40b07..c2be83d4 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/XhpcPileOrderController.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/XhpcPileOrderController.java @@ -287,11 +287,28 @@ public class XhpcPileOrderController extends BaseController { } //获取充电订单 XhpcChargeOrder xhpcChargeOrder = xhpcChargeOrderService.getSerialNumberMessage(orderNo); - - if ("".equals(cacheMap.get("realtimeDataList")) || null==cacheMap.get("realtimeDataList")) { - xhpcChargeOrder.setStatus(2); + Map pushOrder = redisService.getCacheMap("pushOrder:"+orderNo); + //判断结算订单是否有回复启动成功 + boolean judge =false; + if(pushOrder !=null){ + if(pushOrder.get("internetSerialNumber") ==null){ + xhpcChargeOrder.setStatus(2); + xhpcChargeOrder.setUpdateTime(new Date()); + xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder); + return R.ok(); + }else if("2".equals(pushOrder.get("internetSerialNumber").toString())){ + //正常结算 + }else{ + judge=true; + } + }else{ + judge =true; + } + if (judge) { + xhpcChargeOrder.setStatus(3); xhpcChargeOrder.setUpdateTime(new Date()); xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder); + xhpcRealTimeOrderService.addZeroHistoryOrder(xhpcChargeOrder); logger.info("订单无实时数据>>>>>orderNo:" + orderNo); return R.ok(); } @@ -452,7 +469,7 @@ public class XhpcPileOrderController extends BaseController { return R.fail(500,"添加订单回调失败"); } }else{ - Map pushOrder = redisService.getCacheMap("pushOrder:"+orderNo); + if(pushOrder !=null){ if(pushOrder.get("internetSerialNumber") !=null){ xhpcHistoryOrder.setInternetSerialNumber(pushOrder.get("internetSerialNumber").toString()); diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcRealTimeOrderService.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcRealTimeOrderService.java index 109cad6b..2a71cae3 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcRealTimeOrderService.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcRealTimeOrderService.java @@ -144,4 +144,9 @@ public interface IXhpcRealTimeOrderService { * 获取一条实时数据 */ XhpcRealTimeOrder getChargingOrderId(Long chargingOrderId,Integer type); + + /** + * 添加一条金额为0的数据 + */ + void addZeroHistoryOrder(XhpcChargeOrder xhpcChargeOrder); } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java index e3b57d9c..5b8789f1 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java @@ -425,7 +425,7 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe //先计算第三方优惠力度 Integer source = xhpcChargeOrder.getSource(); String internetSerialNumber = xhpcChargeOrder.getInternetSerialNumber(); - if(source==1 && internetSerialNumber!=null){ + if(source==UserTypeUtil.INTERNET_TYPE && internetSerialNumber!=null){ String substring = internetSerialNumber.substring(0, 9); xhpcHistoryOrder.setInternetSerialNumber(xhpcChargeOrder.getInternetSerialNumber()); Map operatorIdEvcs = xhpcRealTimeOrderMapper.getOperatorIdEvcs(substring); @@ -952,6 +952,60 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe return xhpcRealTimeOrderMapper.getChargingOrderId(chargingOrderId, type); } + /** + * 添加一条金额为0的数据 + * + * @param xhpcChargeOrder + */ + @Override + public void addZeroHistoryOrder(XhpcChargeOrder xhpcChargeOrder) { + + XhpcHistoryOrder xhpcHistoryOrder = new XhpcHistoryOrder(); + xhpcHistoryOrder.setChargeOrderId(xhpcChargeOrder.getChargeOrderId()); + xhpcHistoryOrder.setChargingStationId(xhpcChargeOrder.getChargingStationId()); + xhpcHistoryOrder.setUserId(xhpcChargeOrder.getUserId()); + xhpcHistoryOrder.setTerminalId(xhpcChargeOrder.getTerminalId()); + xhpcHistoryOrder.setSerialNumber(xhpcChargeOrder.getSerialNumber()); + xhpcHistoryOrder.setInternetSerialNumber(xhpcChargeOrder.getInternetSerialNumber()); + xhpcHistoryOrder.setType(2); + Date date = new Date(); + xhpcHistoryOrder.setCreateTime(date); + Map pushOrder = redisService.getCacheMap("pushOrder:"+xhpcChargeOrder.getSerialNumber()); + if(pushOrder !=null){ + if(pushOrder.get("internetSerialNumber") !=null){ + xhpcHistoryOrder.setInternetSerialNumber(pushOrder.get("internetSerialNumber").toString()); + } + if(pushOrder.get("operatorId3rdpty") !=null){ + xhpcHistoryOrder.setOperatorId3rdptyEvcs((String) pushOrder.get("operatorId3rdpty")); + } + } + //获取运营商 + Map operatorMessage = xhpcChargeOrderService.getOperatorMessage(xhpcChargeOrder.getChargingStationId()); + if(operatorMessage !=null){ + if(operatorMessage.get("operatorIdEvcs")!=null){ + if(operatorMessage.get("operatorIdEvcs") !=null && !"".equals(operatorMessage.get("operatorIdEvcs").toString())){ + String stw = operatorMessage.get("operatorIdEvcs").toString(); + if(stw.length()>9){ + xhpcHistoryOrder.setOperatorIdEvcs(stw.substring(8, stw.length() - 1)); + } + } + } + } + xhpcHistoryOrder.setStartTime(xhpcChargeOrder.getStartTime()); + xhpcHistoryOrder.setEndTime(xhpcChargeOrder.getStartTime()); + xhpcHistoryOrder.setStopReasonEvcs(45); + if(UserTypeUtil.COMMUNIT_TYPE.equals(xhpcChargeOrder.getSource()) || UserTypeUtil.CUSTOMERS_TYPE.equals(xhpcChargeOrder.getSource())){ + xhpcHistoryOrder.setChargeModelEvcs(2); + }else{ + xhpcHistoryOrder.setChargeModelEvcs(xhpcChargeOrder.getChargeModelEvcs()); + } + xhpcHistoryOrder.setTenantId(xhpcChargeOrder.getTenantId()); + xhpcHistoryOrder.setSource(xhpcChargeOrder.getSource()); + xhpcHistoryOrder.setRateModelId(xhpcChargeOrder.getRateModelId()); + xhpcHistoryOrder.setChargingMode(xhpcChargeOrder.getChargingMode()); + xhpcHistoryOrderService.insert(xhpcHistoryOrder); + } + private BigDecimal getBigDecimal(Long rateModelId, String startTime, String updateTime, BigDecimal powerPriceTotal, BigDecimal divide) { List> reatTimeList = xhpcHistoryOrderService.getReatTimeList(startTime,updateTime, rateModelId); for (int i = 0; i