From d09284975427910441eeaf59d34a4d50d2fd5fdc Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 24 十二月 2024 19:02:29 +0800 Subject: [PATCH] 修改bug --- UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 100 +++++++++++++++++++++++--------------------------- 1 files changed, 46 insertions(+), 54 deletions(-) diff --git a/UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java index 6610910..b6c471e 100644 --- a/UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java +++ b/UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java @@ -338,7 +338,8 @@ //推单操作 if(orderPrivateCar.getState() == 1){ - this.pushOrder(orderPrivateCar); + Integer id = orderPrivateCar.getId(); + redisUtil.addListRight("push_order_ids", id.toString()); } //添加消息 @@ -521,36 +522,8 @@ if(orderPrivateCar.getState() != 1){ return ResultUtil.error("订单已被司机接单,不能重复推送"); } - //处理摆渡订单的继续推单操作 - if(orderPrivateCar.getType() == 2){ - OrderCrossCityServiceImpl.pushEndMap.put(orderPrivateCar.getCrossCityOrderId(), false);//还原标识数据 - List<OrderPrivateCar> list = this.selectList(new EntityWrapper<OrderPrivateCar>().eq("type", 2).eq("crossCityOrderId", orderPrivateCar.getCrossCityOrderId()).eq("place", orderPrivateCar.getPlace())); - List<Map<String, Integer>> orders = new ArrayList<>(); - for(OrderPrivateCar orderPrivateCar1 : list){ - if(orderPrivateCar1.getState() != 1){ - return ResultUtil.error("订单已被司机接单,推单取消"); - } - Map<String, Integer> map = new HashMap<>(); - map.put("orderType", 1); - map.put("orderId", orderPrivateCar1.getId()); - orders.add(map); - } -// List<OrderTaxi> list1 = orderTaxiService.selectList(new EntityWrapper<OrderTaxi>().eq("type", 2).eq("crossCityOrderId", orderPrivateCar.getCrossCityOrderId()).eq("place", orderPrivateCar.getPlace())); -// for(OrderTaxi orderTaxi : list1){ -// if(orderTaxi.getState() != 1){ -// return ResultUtil.error("订单已被司机接单,推单取消"); -// } -// Map<String, Integer> map = new HashMap<>(); -// map.put("orderType", 2); -// map.put("orderId", orderTaxi.getId()); -// orders.add(map); -// } - //开始重新推单 - orderCrossCityService.pushOrder(orders); - - }else{ - this.pushOrder(orderPrivateCar); - } + //继续将订单添加到推送列表中 + redisUtil.addListLeft("push_order_ids", id.toString()); return ResultUtil.success(); } @@ -852,11 +825,23 @@ public boolean pushOrder1(Integer id){ try { OrderPrivateCar orderPrivateCar = this.selectById(id); + if(1 != orderPrivateCar.getState()){ + return true; + } + long time = System.currentTimeMillis() - orderPrivateCar.getInsertTime().getTime(); Company query = companyCityService.query(String.valueOf(orderPrivateCar.getStartLon()), String.valueOf(orderPrivateCar.getStartLat()));//获取起点所属分公司 + List<PushOrder> querys = pushOrderService.querys(null, 1, query.getId());//获取需要推送的次数 + long pushTime = 0; + if(null != querys && querys.size() > 0){ + pushTime = querys.stream().mapToInt(PushOrder::getPushTime).sum() * 1000; + } + if(time >= pushTime){ + pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1); + return true; + } + List<Driver> drivers = driverMapper.queryIdleDriver_(1, orderPrivateCar.getServerCarModelId(), query.getId()); - System.err.println("当前获取的司机:"+drivers); - - List<Driver> list = new ArrayList<>(); + System.err.println("当前获取的司机:"+ JSON.toJSONString(drivers)); //找出距离最近且评分最高的司机 Double dis = 100000D; @@ -868,6 +853,7 @@ continue; } String value = redisUtil.getValue("DRIVER" + driver.getId()); + System.err.println("------" + value); if(null != value){ Map<String, Double> distance1 = geodesyUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value); double d = Double.valueOf(distance1.get("WGS84")).doubleValue(); @@ -883,6 +869,7 @@ } } } + System.err.println("------" + JSON.toJSONString(driver1)); if(null != driver1){ orderPrivateCar.setDriverId(driver1.getId()); orderPrivateCar.setCarId(driver1.getCarId()); @@ -1394,28 +1381,33 @@ @Override public OrderServerWarpper queryOrderServer(Integer orderId, Integer uid) throws Exception { OrderPrivateCar orderPrivateCar = this.selectById(orderId); - //计算预计距离和剩余时间 - String value = redisUtil.getValue("DRIVER" + String.valueOf(orderPrivateCar.getDriverId())); - if(null == value || "".equals(value)){ - System.err.println("司机没有上传位置信息"); - - //调用获取轨迹中的数据 - List<Map<String, Object>> list = orderPositionService.queryTrack(orderId, 2); - if(list.size() > 0){ - Map<String, Object> map = list.get(list.size() - 1); - value = map.get("lon") + "," + map.get("lat"); - } - - } - Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), 1); + String value = null; String d = "0"; String t = "0"; - if(null == distance){ - System.err.println("查询距离出错了"); - }else{ - d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString(); - t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + ""; + if(null != orderPrivateCar.getDriverId()){ + //计算预计距离和剩余时间 + value = redisUtil.getValue("DRIVER" + orderPrivateCar.getDriverId()); + if(null == value || "".equals(value)){ + System.err.println("司机没有上传位置信息"); + + //调用获取轨迹中的数据 + List<Map<String, Object>> list = orderPositionService.queryTrack(orderId, 2); + if(list.size() > 0){ + Map<String, Object> map = list.get(list.size() - 1); + value = map.get("lon") + "," + map.get("lat"); + } + + } + Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), 1); + + if(null == distance){ + System.err.println("查询距离出错了"); + }else{ + d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString(); + t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + ""; + } } + OrderServerWarpper orderServerWarpper = new OrderServerWarpper(); orderServerWarpper.setOrderId(orderPrivateCar.getId()); orderServerWarpper.setOrderType(1); @@ -1432,7 +1424,7 @@ orderServerWarpper.setLaveTime("0"); } if(orderPrivateCar.getState() == 5 || orderPrivateCar.getState() == 6){//服务中 - distance = gdMapElectricFenceUtil.getDistance(value, orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), 1); + Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), 1); if(null == distance){ System.err.println("查询距离出错了"); }else{ -- Gitblit v1.7.1