| | |
| | | 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 org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.http.HttpEntity; |
| | |
| | | |
| | | @Service |
| | | public class OrderPrivateCarServiceImpl extends ServiceImpl<OrderPrivateCarMapper, OrderPrivateCar> implements IOrderPrivateCarService { |
| | | |
| | | Logger logger = LoggerFactory.getLogger(OrderPrivateCarServiceImpl.class); |
| | | |
| | | @Resource |
| | | private OrderPrivateCarMapper orderPrivateCarMapper; |
| | |
| | | |
| | | @Autowired |
| | | private GDMapElectricFenceUtil gdMapElectricFenceUtil; |
| | | |
| | | @Autowired |
| | | private GeodesyUtil geodesyUtil; |
| | | |
| | | @Autowired |
| | | private IOrderPositionService orderPositionService; |
| | |
| | | if(orderPrivateCars.size() > 0){ |
| | | return ResultUtil.error("有未完成的订单"); |
| | | } |
| | | List<OrderTaxi> list = orderTaxiMapper.queryByState_(uid, 1, 1, 1, 2, 3, 4, 5, 6, 11); |
| | | if(list.size() > 0){ |
| | | return ResultUtil.error("有未完成的订单"); |
| | | } |
| | | // List<OrderTaxi> list = orderTaxiMapper.queryByState_(uid, 1, 1, 1, 2, 3, 4, 5, 6, 11); |
| | | // if(list.size() > 0){ |
| | | // return ResultUtil.error("有未完成的订单"); |
| | | // } |
| | | |
| | | orderPrivateCars = orderPrivateCarMapper.queryByState(uid, 2, 1, 1, 2, 3, 4, 5, 6, 11); |
| | | if(orderPrivateCars.size() > 0 && reservation == 2){ |
| | |
| | | } |
| | | |
| | | |
| | | list = orderTaxiMapper.queryByState_(uid, 2, 1, 1, 2, 3, 4, 5, 6, 11); |
| | | if(list.size() > 0 && reservation == 2){ |
| | | return ResultUtil.error("有未完成的订单"); |
| | | } |
| | | // list = orderTaxiMapper.queryByState_(uid, 2, 1, 1, 2, 3, 4, 5, 6, 11); |
| | | // if(list.size() > 0 && reservation == 2){ |
| | | // return ResultUtil.error("有未完成的订单"); |
| | | // } |
| | | |
| | | startAddress = startAddress.replaceAll("& #40;", "("); |
| | | startAddress = startAddress.replaceAll("& #41;", ")"); |
| | |
| | | orderPrivateCar.setSnatchOrderTime(new Date()); |
| | | driver2.setState(3); |
| | | driverService.updateById(driver2); |
| | | serverCarModelId = query1.getServerCarModelId(); |
| | | } |
| | | long timeMillis1 = System.currentTimeMillis(); |
| | | logger.info("第一段用时:" + (timeMillis1 - timeMillis)); |
| | | timeMillis = timeMillis1; |
| | | // 查询城市的订单额度 |
| | | OpenCity openCity = openCityService.selectOne(new EntityWrapper<OpenCity>() |
| | | .eq("code", cityCode) |
| | |
| | | } |
| | | |
| | | // 查询预估价格 |
| | | ResultUtil<List<ServerCarModelWarpper>> listResultUtil = serverCarModelService.queryServerCarModel(startLon + "," + startLat, endLon + "," + endLat, 1); |
| | | List<ServerCarModelWarpper> data = listResultUtil.getData(); |
| | | if(Objects.isNull(serverCarModelId)){ |
| | | //获取经营业务 |
| | | CarService query = new CarService(); |
| | | query.setCarId(driver2.getCarId()); |
| | | CarService service = carServiceMapper.selectOne(query); |
| | | if(Objects.nonNull(service)){ |
| | | serverCarModelId = service.getServerCarModelId(); |
| | | } |
| | | ResultUtil<ServerCarModelWarpper> listResultUtil = serverCarModelService.queryServerCarModel1(serverCarModelId, startLon + "," + startLat, endLon + "," + endLat, 1); |
| | | if(200 != listResultUtil.getCode()){ |
| | | return ResultUtil.error(listResultUtil.getMsg()); |
| | | } |
| | | Integer finalServerCarModelId = serverCarModelId; |
| | | data = data.stream().filter(e -> finalServerCarModelId.equals(e.getId())).sorted(Comparator.comparing(ServerCarModelWarpper::getAmount)).collect(Collectors.toList()); |
| | | if(Objects.nonNull(openCity) && !CollectionUtils.isEmpty(data) && BigDecimal.valueOf(data.get(0).getAmount()).compareTo(openCity.getOrderMagnitude()) > 0){ |
| | | ServerCarModelWarpper data = listResultUtil.getData(); |
| | | if(Objects.nonNull(openCity) && BigDecimal.valueOf(data.getAmount()).compareTo(openCity.getOrderMagnitude()) > 0){ |
| | | orderPrivateCar.setIsReassign(1); |
| | | orderPrivateCar.setIsDelete(1); |
| | | orderPrivateCar.setState(7); |
| | | if(orderSource == 2){ |
| | | orderPrivateCar.setOrderMoney(data.get(0).getAmount()); |
| | | orderPrivateCar.setEstimatedPrice(data.get(0).getAmount()); |
| | | }else { |
| | | orderPrivateCar.setOrderMoney(data.get(carIndex).getAmount()); |
| | | orderPrivateCar.setEstimatedPrice(data.get(carIndex).getAmount()); |
| | | } |
| | | orderPrivateCar.setOrderMoney(data.getAmount()); |
| | | orderPrivateCar.setEstimatedPrice(data.getAmount()); |
| | | orderPrivateCar.setPayMethod(0); |
| | | this.insert(orderPrivateCar); |
| | | BaseWarpper baseWarpper = new BaseWarpper(); |
| | |
| | | baseWarpper.setAmount(orderPrivateCar.getOrderMoney()); |
| | | return ResultUtil.success(baseWarpper); |
| | | }else { |
| | | if(orderSource == 2){ |
| | | if(!CollectionUtils.isEmpty(data)){ |
| | | orderPrivateCar.setEstimatedPrice(data.get(0).getAmount()); |
| | | } |
| | | }else { |
| | | orderPrivateCar.setEstimatedPrice(data.get(carIndex).getAmount()); |
| | | } |
| | | orderPrivateCar.setEstimatedPrice(data.getAmount()); |
| | | orderPrivateCar.setIsReassign(1); |
| | | orderPrivateCar.setIsDelete(1); |
| | | orderPrivateCar.setPayMethod(1); |
| | |
| | | } |
| | | }).start(); |
| | | } |
| | | |
| | | long timeMillis2 = System.currentTimeMillis(); |
| | | logger.info("第二段用时:" + (timeMillis2 - timeMillis)); |
| | | timeMillis = timeMillis2; |
| | | |
| | | // TODO: 2021/5/11 修改,根据后台设定的派单范围查询范围内有无司机,将单子指派给距离最近的司机(距离相同随机取),范围内没有司机再进行推单流程 |
| | | if(orderPrivateCar.getState() == 1){ |
| | |
| | | for (Driver driver : ds) { |
| | | String value = redisUtil.getValue("DRIVER" + driver.getId()); |
| | | if (null != value) { |
| | | Map<String, String> distance1 = gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value, 1);//计算距离 |
| | | Integer d = Integer.valueOf(distance1.get("distance")); |
| | | if ((0 == m && null == dr) || (d.intValue() < m.intValue())) { |
| | | Map<String, Double> distance = geodesyUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value); |
| | | Double wgs84 = distance.get("WGS84"); |
| | | if ((0 == m && null == dr) || (wgs84.intValue() < m.intValue())) { |
| | | dr = driver; |
| | | m = d; |
| | | m = wgs84.intValue(); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | long timeMillis3 = System.currentTimeMillis(); |
| | | logger.info("第三段用时:" + (timeMillis3 - timeMillis)); |
| | | timeMillis = timeMillis3; |
| | | |
| | | //推单操作 |
| | | if(orderPrivateCar.getState() == 1){ |
| | |
| | | baseWarpper.setState(orderPrivateCar.getState()); |
| | | baseWarpper.setId(orderPrivateCar.getId()); |
| | | baseWarpper.setPayMethod(1); |
| | | long timeMillis4 = System.currentTimeMillis(); |
| | | logger.info("第四段用时:" + (timeMillis4 - timeMillis)); |
| | | timeMillis = timeMillis4; |
| | | return ResultUtil.success(baseWarpper); |
| | | } |
| | | } |