| | |
| | | |
| | | //推单操作 |
| | | if(orderPrivateCar.getState() == 1){ |
| | | this.pushOrder(orderPrivateCar); |
| | | Integer id = orderPrivateCar.getId(); |
| | | redisUtil.addListRight("push_order_ids", id.toString()); |
| | | } |
| | | |
| | | //添加消息 |
| | |
| | | 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(); |
| | | } |
| | | |
| | |
| | | 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; |
| | |
| | | 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(); |
| | |
| | | } |
| | | } |
| | | } |
| | | System.err.println("------" + JSON.toJSONString(driver1)); |
| | | if(null != driver1){ |
| | | orderPrivateCar.setDriverId(driver1.getId()); |
| | | orderPrivateCar.setCarId(driver1.getCarId()); |
| | |
| | | @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); |
| | |
| | | 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{ |