From 0cc73a9ffcdd356e0b797e458b400acfb660da94 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期日, 15 六月 2025 02:26:06 +0800 Subject: [PATCH] 更新用户端功能 --- UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 487 ++++++++++++++++++++++++++--------------------------- 1 files changed, 240 insertions(+), 247 deletions(-) diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java index e4cff59..193db93 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java @@ -3,7 +3,6 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.aliyun.oss.ServiceException; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.stylefeng.guns.core.util.ToolUtil; @@ -12,7 +11,6 @@ import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity; import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; import com.stylefeng.guns.modular.crossCity.server.impl.OrderCrossCityServiceImpl; -import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics; import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService; import com.stylefeng.guns.modular.specialTrain.dao.OrderPrivateCarMapper; import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; @@ -28,9 +26,9 @@ import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; import com.stylefeng.guns.modular.taxi.service.IPaymentRecordService; import com.stylefeng.guns.modular.taxi.service.ITransactionDetailsService; -import javafx.concurrent.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; @@ -135,9 +133,9 @@ @Autowired private IUserActivityRedenvelopeService userActivityRedenvelopeService; - + @Autowired - private RedisUtil redisUtil; + private RedisTemplate redisTemplate; @Autowired private GDFalconUtil gdFalconUtil; @@ -431,7 +429,7 @@ JSONObject jsonObject = JSONObject.parseObject(spellOrderRule.getContent()); //判断时间 if(travelTime.getTime()>=order.getTravelTime().getTime()-jsonObject.getInteger("num5")*60000L && travelTime.getTime()<=order.getTravelTime().getTime()+jsonObject.getInteger("num6")*60000L){ - String value = redisUtil.getValue("DRIVER" + String.valueOf(order.getDriverId())); + String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(order.getDriverId())); // Double dis1 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value, 1).get("distance").toString()); // Double dis2 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), order.getEndLon() + "," + order.getEndLat(), 1).get("distance").toString()); @@ -683,7 +681,7 @@ JSONObject jsonObject = JSONObject.parseObject(spellOrderRule.getContent()); //判断时间 if(travelTime.getTime()>=order.getTravelTime().getTime()-jsonObject.getInteger("num5")*60000L && travelTime.getTime()<=order.getTravelTime().getTime()+jsonObject.getInteger("num6")*60000L){ - String value = redisUtil.getValue("DRIVER" + String.valueOf(order.getDriverId())); + String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(order.getDriverId())); // Double dis1 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value, 1).get("distance").toString()); // Double dis2 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), order.getEndLon() + "," + order.getEndLat(), 1).get("distance").toString()); @@ -842,7 +840,7 @@ JSONObject jsonObject = JSONObject.parseObject(spellOrderRule.getContent()); //判断时间 if(orderPrivateCar.getTravelTime().getTime()>=order.getTravelTime().getTime()-jsonObject.getInteger("num5")*60000L && orderPrivateCar.getTravelTime().getTime()<=order.getTravelTime().getTime()+jsonObject.getInteger("num6")*60000L){ - String value = redisUtil.getValue("DRIVER" + String.valueOf(order.getDriverId())); + String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(order.getDriverId())); // Double dis1 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value, 1).get("distance").toString()); // Double dis2 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), order.getEndLon() + "," + order.getEndLat(), 1).get("distance").toString()); // TODO: 2023/11/4 已改成计算直线距离 @@ -1072,7 +1070,7 @@ CancleOrder query = cancleOrderService.query(orderPrivateCar.getOrderType(), 1, orderPrivateCar.getCompanyId()); if(null != query){ if(payType == 1){//微信支付 - String value = redisUtil.getValue("appletOpenId"); + String value = (String) redisTemplate.opsForValue().get("appletOpenId"); String appletsOpenId = null; if(ToolUtil.isNotEmpty(value)){ JSONObject jsonObject = JSON.parseObject(value); @@ -1138,151 +1136,107 @@ return resultUtil; } - - /** - * 推送抢单数据 - * @param orderPrivateCar - * @throws Exception - */ - public void pushOrder(OrderPrivateCar orderPrivateCar) throws Exception{ - new Thread(new Runnable() { - @Override - public void run() { - try { - Integer id = orderPrivateCar.getId(); - Integer orderType = orderPrivateCar.getRideType()==1?1:orderPrivateCar.getRideType()==2?9:8; - orderIds.add(orderPrivateCar.getId());//添加记录,防止调用接口重复提醒无人接单 - String vehicle = redisUtil.getValue("VEHICLE"); - List<Integer> integers = new ArrayList<>(); - if(ToolUtil.isNotEmpty(vehicle)){ - integers = JSON.parseArray(vehicle).toJavaList(Integer.class); - } - Company query = companyCityService.query(String.valueOf(orderPrivateCar.getStartLon()), String.valueOf(orderPrivateCar.getStartLat()));//获取起点所属分公司 - List<PushOrder> querys = pushOrderService.querys(null, 1, query.getId());//获取需要推送的次数 - for(int i = 1; i <= querys.size(); i++){ - OrderPrivateCar orderPrivateCar = orderPrivateCarMapper.selectById(id); - if (null == orderPrivateCar || orderPrivateCar.getState() > 1) { - break; - } - PushOrder pushOrder = pushOrderService.querys(i, 1, query.getId()).get(0); - System.out.println("pushOrder:"+pushOrder); - int i2 = pushOrder.getPushTime() / 10; - if(i2==0){ - i2=1; - } - for (int i1 = 0; i1 < i2 ; i1++) { - if (orderPrivateCar.getState() > 1) { - break; - } - //获取空闲司机 - List<Driver> list = driverService.queryIdleDriver(orderType, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 - if (list.size() > 0) { - double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数 - int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取) - lastIndex = lastIndex == 0 ? list.size() : lastIndex; - list = list.subList(0, lastIndex);//获取空闲司机中占比数据 - for (Driver driver : list) {//开始进行推送 - boolean bo = false; - for (Integer integer : integers) { - if (integer.compareTo(driver.getId()) == 0) { - bo = true; - break; - } - } - if (bo) { - continue; - } - pushUtil.pushOrderState(2, driver.getId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), pushOrder.getPushTime()); - } - } - Thread.sleep(10000);//设置等待时间 - Integer state = orderPrivateCar.getState(); - if (state > 1) { - orderIds.remove(orderPrivateCar.getId()); - return; - } - if (i == querys.size() && state == 1) { - pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1); - orderIds.remove(orderPrivateCar.getId()); - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - }).start(); + @Override + public Map<String, Object> queryOrderInfo(Integer uid, Integer orderId) throws Exception { + Map<String, Object> map = orderPrivateCarMapper.queryOrderInfo(orderId); + if(null == map){ + OrderTaxi orderTaxi = orderTaxiService.selectOne(new EntityWrapper<OrderTaxi>() + .eq("userId", uid) + .eq("isDelete", 1) + .in("state", Arrays.asList(2, 3, 4, 5, 6, 7)) + ); + return orderTaxiService.queryOrderInfo(orderTaxi.getId()); + } + if(null != map.get("reassignNotice") && Integer.valueOf(String.valueOf(map.get("reassignNotice"))) == 2){//改派完成,重新获取了新的司机数据,开始修改数据防止继续调用 + OrderPrivateCar orderPrivateCar = this.selectById(orderId); + orderPrivateCar.setReassignNotice(0); + this.updateById(orderPrivateCar); + } + if(Integer.valueOf(String.valueOf(map.get("state"))) == 11){ + map.put("state", map.get("oldState")); + } + if(Integer.valueOf(String.valueOf(map.get("state"))) != 8 && Integer.valueOf(String.valueOf(map.get("state"))) != 9){ + map.put("redPacketMoney", null); + map.put("couponMoney", null); + } + + String driverId = (String) redisTemplate.opsForValue().get("DEVICE_" + map.get("driverId")); + map.put("device", ToolUtil.isNotEmpty(driverId) ? 2 : 1); + map.put("orderType", 1); + return map; } + /** + * 获取服务中的订单数据 + * @param uid + * @return + * @throws Exception + */ + @Override + public OrderServerWarpper queryOrderServer(Integer orderId, Integer uid) throws Exception { + OrderPrivateCar orderPrivateCar = this.selectById(orderId); + if(null == orderPrivateCar){ + return orderTaxiService.queryOrderServer(orderId, uid); + } + //计算预计距离和剩余时间 + String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(orderPrivateCar.getDriverId())); + if(null == value || "".equals(value)){ + System.err.println("司机没有上传位置信息"); - - public void pushOrder(Integer id, Integer rideType, Integer serverCarModelId, Double startLon, Double startLat) throws Exception{ - new Thread(new Runnable() { - @Override - public void run() { - try { - Integer orderType = rideType==1?1:rideType==2?9:8; - orderIds.add(id);//添加记录,防止调用接口重复提醒无人接单 - String vehicle = redisUtil.getValue("VEHICLE"); - List<Integer> integers = new ArrayList<>(); - if(ToolUtil.isNotEmpty(vehicle)){ - integers = JSON.parseArray(vehicle).toJavaList(Integer.class); - } - Company query = companyCityService.query(startLon.toString(), startLat.toString());//获取起点所属分公司 - List<PushOrder> querys = pushOrderService.querys(null, 1, query.getId());//获取需要推送的次数 - for(int i = 1; i <= querys.size(); i++){ - OrderPrivateCar orderPrivateCar = orderPrivateCarMapper.selectById(id); - if (null == orderPrivateCar || orderPrivateCar.getState() > 1) { - break; - } - PushOrder pushOrder = pushOrderService.querys(i, 1, query.getId()).get(0); - System.out.println("pushOrder:"+pushOrder); - int i2 = pushOrder.getPushTime() / 10; - if(i2==0){ - i2=1; - } - for (int i1 = 0; i1 < i2 ; i1++) { - if (orderPrivateCar.getState() > 1) { - break; - } - //获取空闲司机 - List<Driver> list = driverService.queryIdleDriver(orderType, serverCarModelId, startLon, startLat, pushOrder.getPushDistance(), null);//所有附近空闲司机 - if (list.size() > 0) { - double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数 - int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取) - lastIndex = lastIndex == 0 ? list.size() : lastIndex; - list = list.subList(0, lastIndex);//获取空闲司机中占比数据 - for (Driver driver : list) {//开始进行推送 - boolean bo = false; - for (Integer integer : integers) { - if (integer.compareTo(driver.getId()) == 0) { - bo = true; - break; - } - } - if (bo) { - continue; - } - pushUtil.pushOrderState(2, driver.getId(), id, 1, 1, pushOrder.getPushTime()); - } - } - Thread.sleep(10000);//设置等待时间 - Integer state = orderPrivateCarMapper.selectById(orderPrivateCar.getId()).getState(); - if (state > 1) { - orderIds.remove(orderPrivateCar.getId()); - break; - } - if (i == querys.size()) { - pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1); - orderIds.remove(orderPrivateCar.getId()); - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } + //调用获取轨迹中的数据 + 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"); } - }).start(); + + } + + OrderServerWarpper orderServerWarpper = new OrderServerWarpper(); + orderServerWarpper.setOrderId(orderPrivateCar.getId()); + orderServerWarpper.setOrderType(1); + orderServerWarpper.setState(orderPrivateCar.getState()); + orderServerWarpper.setLon(null != value ? value.split(",")[0] : "0.0"); + orderServerWarpper.setLat(null != value ? value.split(",")[1] : "0.0"); + orderServerWarpper.setReassignNotice(orderPrivateCar.getReassignNotice()); + if(orderPrivateCar.getState() == 2 || orderPrivateCar.getState() == 3){//前往预约地 + // TODO: 2023/11/4 无法修改 + Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), 1); + 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)).toString(); + t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + ""; + } + orderServerWarpper.setReservationMileage(d); + orderServerWarpper.setReservationTime(t); + orderServerWarpper.setServedMileage("0"); + orderServerWarpper.setServedTime("0"); + orderServerWarpper.setLaveMileage("0"); + orderServerWarpper.setLaveTime("0"); + } + if(orderPrivateCar.getState() == 5 || orderPrivateCar.getState() == 6){//服务中 + // TODO: 2023/11/4 无法修改 + Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), 1); + 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)).toString(); + t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + ""; + } + orderServerWarpper.setReservationMileage("0"); + orderServerWarpper.setReservationTime("0"); + orderServerWarpper.setServedMileage(String.valueOf((null == orderPrivateCar.getMileage() ? 0 : orderPrivateCar.getMileage()) / 1000)); + orderServerWarpper.setServedTime(Long.valueOf((new Date().getTime() - orderPrivateCar.getStartServiceTime().getTime()) / 60000).intValue() + ""); + orderServerWarpper.setLaveMileage(d); + orderServerWarpper.setLaveTime(t); + } + + return orderServerWarpper; } @@ -2448,34 +2402,73 @@ return orderPrivateCarMapper.queryInvoiceOrder(type, startTime, endTime, startMoney, endMoney, uid); } - @Override - public Map<String, Object> queryOrderInfo(Integer uid, Integer orderId) throws Exception { - Map<String, Object> map = orderPrivateCarMapper.queryOrderInfo(orderId); - if(null == map){ - OrderTaxi orderTaxi = orderTaxiService.selectOne(new EntityWrapper<OrderTaxi>() - .eq("userId", uid) - .eq("isDelete", 1) - .in("state", Arrays.asList(2, 3, 4, 5, 6, 7)) - ); - return orderTaxiService.queryOrderInfo(orderTaxi.getId()); - } - if(null != map.get("reassignNotice") && Integer.valueOf(String.valueOf(map.get("reassignNotice"))) == 2){//改派完成,重新获取了新的司机数据,开始修改数据防止继续调用 - OrderPrivateCar orderPrivateCar = this.selectById(orderId); - orderPrivateCar.setReassignNotice(0); - this.updateById(orderPrivateCar); - } - if(Integer.valueOf(String.valueOf(map.get("state"))) == 11){ - map.put("state", map.get("oldState")); - } - if(Integer.valueOf(String.valueOf(map.get("state"))) != 8 && Integer.valueOf(String.valueOf(map.get("state"))) != 9){ - map.put("redPacketMoney", null); - map.put("couponMoney", null); - } - - String driverId = redisUtil.getValue("DEVICE_" + map.get("driverId")); - map.put("device", ToolUtil.isNotEmpty(driverId) ? 2 : 1); - map.put("orderType", 1); - return map; + public void pushOrder(Integer id, Integer rideType, Integer serverCarModelId, Double startLon, Double startLat) throws Exception{ + new Thread(new Runnable() { + @Override + public void run() { + try { + Integer orderType = rideType==1?1:rideType==2?9:8; + orderIds.add(id);//添加记录,防止调用接口重复提醒无人接单 + String vehicle = (String) redisTemplate.opsForValue().get("VEHICLE"); + List<Integer> integers = new ArrayList<>(); + if(ToolUtil.isNotEmpty(vehicle)){ + integers = JSON.parseArray(vehicle).toJavaList(Integer.class); + } + Company query = companyCityService.query(startLon.toString(), startLat.toString());//获取起点所属分公司 + List<PushOrder> querys = pushOrderService.querys(null, 1, query.getId());//获取需要推送的次数 + for(int i = 1; i <= querys.size(); i++){ + OrderPrivateCar orderPrivateCar = orderPrivateCarMapper.selectById(id); + if (null == orderPrivateCar || orderPrivateCar.getState() > 1) { + break; + } + PushOrder pushOrder = pushOrderService.querys(i, 1, query.getId()).get(0); + System.out.println("pushOrder:"+pushOrder); + int i2 = pushOrder.getPushTime() / 10; + if(i2==0){ + i2=1; + } + for (int i1 = 0; i1 < i2 ; i1++) { + if (orderPrivateCar.getState() > 1) { + break; + } + //获取空闲司机 + List<Driver> list = driverService.queryIdleDriver(orderType, serverCarModelId, startLon, startLat, pushOrder.getPushDistance(), null);//所有附近空闲司机 + if (list.size() > 0) { + double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数 + int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取) + lastIndex = lastIndex == 0 ? list.size() : lastIndex; + list = list.subList(0, lastIndex);//获取空闲司机中占比数据 + for (Driver driver : list) {//开始进行推送 + boolean bo = false; + for (Integer integer : integers) { + if (integer.compareTo(driver.getId()) == 0) { + bo = true; + break; + } + } + if (bo) { + continue; + } + pushUtil.pushOrderState(2, driver.getId(), id, 1, 1, pushOrder.getPushTime()); + } + } + Thread.sleep(10000);//设置等待时间 + Integer state = orderPrivateCarMapper.selectById(orderPrivateCar.getId()).getState(); + if (state > 1) { + orderIds.remove(orderPrivateCar.getId()); + break; + } + if (i == querys.size()) { + pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1); + orderIds.remove(orderPrivateCar.getId()); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + }).start(); } @Override @@ -2483,79 +2476,79 @@ return orderPrivateCarMapper.queryMyTravelRecord(uid); } - - /** - * 获取服务中的订单数据 - * @param uid - * @return + * 推送抢单数据 + * @param orderPrivateCar * @throws Exception */ - @Override - public OrderServerWarpper queryOrderServer(Integer orderId, Integer uid) throws Exception { - OrderPrivateCar orderPrivateCar = this.selectById(orderId); - if(null == orderPrivateCar){ - return orderTaxiService.queryOrderServer(orderId, uid); - } - //计算预计距离和剩余时间 - 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"); + public void pushOrder(OrderPrivateCar orderPrivateCar) throws Exception{ + new Thread(new Runnable() { + @Override + public void run() { + try { + Integer id = orderPrivateCar.getId(); + Integer orderType = orderPrivateCar.getRideType()==1?1:orderPrivateCar.getRideType()==2?9:8; + orderIds.add(orderPrivateCar.getId());//添加记录,防止调用接口重复提醒无人接单 + String vehicle = (String) redisTemplate.opsForValue().get("VEHICLE"); + List<Integer> integers = new ArrayList<>(); + if(ToolUtil.isNotEmpty(vehicle)){ + integers = JSON.parseArray(vehicle).toJavaList(Integer.class); + } + Company query = companyCityService.query(String.valueOf(orderPrivateCar.getStartLon()), String.valueOf(orderPrivateCar.getStartLat()));//获取起点所属分公司 + List<PushOrder> querys = pushOrderService.querys(null, 1, query.getId());//获取需要推送的次数 + for(int i = 1; i <= querys.size(); i++){ + OrderPrivateCar orderPrivateCar = orderPrivateCarMapper.selectById(id); + if (null == orderPrivateCar || orderPrivateCar.getState() > 1) { + break; + } + PushOrder pushOrder = pushOrderService.querys(i, 1, query.getId()).get(0); + System.out.println("pushOrder:"+pushOrder); + int i2 = pushOrder.getPushTime() / 10; + if(i2==0){ + i2=1; + } + for (int i1 = 0; i1 < i2 ; i1++) { + if (orderPrivateCar.getState() > 1) { + break; + } + //获取空闲司机 + List<Driver> list = driverService.queryIdleDriver(orderType, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 + if (list.size() > 0) { + double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数 + int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取) + lastIndex = lastIndex == 0 ? list.size() : lastIndex; + list = list.subList(0, lastIndex);//获取空闲司机中占比数据 + for (Driver driver : list) {//开始进行推送 + boolean bo = false; + for (Integer integer : integers) { + if (integer.compareTo(driver.getId()) == 0) { + bo = true; + break; + } + } + if (bo) { + continue; + } + pushUtil.pushOrderState(2, driver.getId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), pushOrder.getPushTime()); + } + } + Thread.sleep(10000);//设置等待时间 + Integer state = orderPrivateCar.getState(); + if (state > 1) { + orderIds.remove(orderPrivateCar.getId()); + return; + } + if (i == querys.size() && state == 1) { + pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1); + orderIds.remove(orderPrivateCar.getId()); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } } - - } - - OrderServerWarpper orderServerWarpper = new OrderServerWarpper(); - orderServerWarpper.setOrderId(orderPrivateCar.getId()); - orderServerWarpper.setOrderType(1); - orderServerWarpper.setState(orderPrivateCar.getState()); - orderServerWarpper.setLon(null != value ? value.split(",")[0] : "0.0"); - orderServerWarpper.setLat(null != value ? value.split(",")[1] : "0.0"); - orderServerWarpper.setReassignNotice(orderPrivateCar.getReassignNotice()); - if(orderPrivateCar.getState() == 2 || orderPrivateCar.getState() == 3){//前往预约地 - // TODO: 2023/11/4 无法修改 - Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), 1); - 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)).toString(); - t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + ""; - } - orderServerWarpper.setReservationMileage(d); - orderServerWarpper.setReservationTime(t); - orderServerWarpper.setServedMileage("0"); - orderServerWarpper.setServedTime("0"); - orderServerWarpper.setLaveMileage("0"); - orderServerWarpper.setLaveTime("0"); - } - if(orderPrivateCar.getState() == 5 || orderPrivateCar.getState() == 6){//服务中 - // TODO: 2023/11/4 无法修改 - Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), 1); - 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)).toString(); - t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + ""; - } - orderServerWarpper.setReservationMileage("0"); - orderServerWarpper.setReservationTime("0"); - orderServerWarpper.setServedMileage(String.valueOf((null == orderPrivateCar.getMileage() ? 0 : orderPrivateCar.getMileage()) / 1000)); - orderServerWarpper.setServedTime(Long.valueOf((new Date().getTime() - orderPrivateCar.getStartServiceTime().getTime()) / 60000).intValue() + ""); - orderServerWarpper.setLaveMileage(d); - orderServerWarpper.setLaveTime(t); - } - - return orderServerWarpper; + }).start(); } -- Gitblit v1.7.1