| | |
| | | @Autowired |
| | | private ICompanyFundFlowService companyFundFlowService; |
| | | |
| | | @Autowired |
| | | private IBranchOfficeService branchOfficeService; |
| | | |
| | | @Value("${callbackPath}") |
| | | private String callbackPath;//支付回调网关地址 |
| | | |
| | |
| | | Driver driver = driverService.selectById(uid); |
| | | |
| | | DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", uid).eq("status", 1)); |
| | | Order order1 = this.selectOne(new EntityWrapper<Order>().eq("driverId", uid).eq("status", 1).in("state", Arrays.asList(102, 103, 104, 105, 201, 401))); |
| | | // Order order1 = this.selectOne(new EntityWrapper<Order>().eq("driverId", uid).eq("status", 1).in("state", Arrays.asList(102, 103, 104, 105, 201, 401))); |
| | | Order order = new Order(); |
| | | if(driver.getServerStatus().equals(1)){ |
| | | order.setDriverId(driver.getId()); |
| | | order.setState(104); |
| | | }else if(driverWork != null && null == order1){ |
| | | if(null != driverWork && driver.getServerStatus().equals(1)){ |
| | | order.setState(102); |
| | | order.setDriverId(uid); |
| | | driver.setServerStatus(2); |
| | | order.setOrderTakingTime(new Date()); |
| | | driver.setServerStatus(2); |
| | | } |
| | | |
| | | order.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(5)); |
| | | order.setSource(2); |
| | | |
| | |
| | | if(null != appUser){ |
| | | order.setUserId(appUser.getId()); |
| | | } |
| | | |
| | | |
| | | String startAddress = addOrderWarpper.getStartAddress(); |
| | | startAddress = startAddress.replaceAll("& #40;", "("); |
| | |
| | | order.setEstimatedTime(Integer.valueOf(distance.get("duration")) / 60); |
| | | } |
| | | String city = ""; |
| | | District geocode = MapUtil.geocode(order.getStartLng(), order.getStartLat()); |
| | | Integer branchOfficeId = null; |
| | | District geocode = MapUtil.geocode(order.getEndLng(), order.getEndLat()); |
| | | if(null != geocode){ |
| | | WeatherCity weatherCity = weatherCityService.selectOne(new EntityWrapper<WeatherCity>() |
| | | .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') ")); |
| | | city = null != weatherCity ? weatherCity.getId().toString() : ""; |
| | | String districtCode = geocode.getDistrictCode(); |
| | | BranchOffice branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("districtCode", districtCode)); |
| | | if(null == branchOffice){ |
| | | String cityCode = geocode.getCityCode(); |
| | | branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("cityCode", cityCode)); |
| | | if(null == branchOffice){ |
| | | String provinceCode = geocode.getProvinceCode(); |
| | | branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("provinceCode", provinceCode)); |
| | | } |
| | | } |
| | | if(null == branchOffice){ |
| | | return ResultUtil.error("起点暂无企业服务"); |
| | | } |
| | | branchOfficeId = branchOffice.getId(); |
| | | } |
| | | order.setCreateTime(new Date()); |
| | | order = getOrderPrice(1, d, 0, order, city); |
| | | order = getOrderPrice(1, d, 0, order, city, branchOfficeId); |
| | | if(!driver.getServerStatus().equals(1)) { |
| | | order.setState(null == order.getDriverId() ? 101 : 102); |
| | | } |
| | |
| | | * @param city 查询天气的城市 |
| | | * @return |
| | | */ |
| | | public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city) { |
| | | public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city, Integer branchOfficeId) { |
| | | order = getOrderInitialPrice(order); |
| | | SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5)); |
| | | SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5).eq("companyId", branchOfficeId)); |
| | | if (null == systemConfig) { |
| | | if (type == 1) {//预估金额 |
| | | order.setEstimatedPrice(0D); |
| | |
| | | Double num7 = extraCost.getDouble("num7");//恶劣天气超出公里 |
| | | Double num8 = extraCost.getDouble("num8");//恶劣天气超出公里单价 X/公里 |
| | | Double num9 = extraCost.getDouble("num9");//恶劣天气最高收取金额 |
| | | Double num10 = extraCost.getDouble("num10");//节假日 |
| | | |
| | | //等待费用 |
| | | if (waitTime.compareTo(num1 * 60) >= 0) { |
| | |
| | | } |
| | | |
| | | //恶劣天气 |
| | | systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 8)); |
| | | systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 8).eq("companyId", branchOfficeId)); |
| | | if (null != systemConfig) { |
| | | JSONObject jsonObject1 = JSON.parseObject(systemConfig.getContent()); |
| | | Integer num11 = jsonObject1.getInteger("num1");//开启恶劣天气计价 |
| | | if (1 == num11) { |
| | | boolean badWeather = WeatherUtil.isBadWeather(city); |
| | | if (badWeather) { |
| | | order.setBadWeatherDistance(num5);//恶劣天气公里 |
| | | order.setBadWeatherPrice(num6);//恶劣天气费 |
| | | if (distance.compareTo(num7) > 0) { |
| | |
| | | } |
| | | } |
| | | } |
| | | Integer num33 = jsonObject1.getInteger("num3");//节假日 |
| | | if (1 == num33) { |
| | | order.setHolidayPrice(num10); |
| | | } |
| | | |
| | | |
| | | //计算折扣 |
| | | if (null != order.getUserId()) { |
| | |
| | | |
| | | //计算总金额 |
| | | BigDecimal bigDecimal = new BigDecimal(order.getStartPrice() + order.getOverDrivePrice() + order.getLongDistancePrice() + order.getOverLongDistancePrice() + |
| | | order.getWaitTimePrice() + order.getOutWaitTimePrice() + order.getBadWeatherPrice() + order.getOverBadWeatherPrice() - order.getDiscountAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN); |
| | | order.getWaitTimePrice() + order.getOutWaitTimePrice() + order.getBadWeatherPrice() + order.getOverBadWeatherPrice() + order.getHolidayPrice() - order.getDiscountAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN); |
| | | |
| | | if (type == 1) {//预估价 |
| | | order.setEstimatedPrice(bigDecimal.doubleValue()); |
| | |
| | | } |
| | | //开始计算费用 |
| | | String city = ""; |
| | | Integer branchOfficeId = null; |
| | | District geocode = MapUtil.geocode(order.getEndLng(), order.getEndLat()); |
| | | if(null != geocode){ |
| | | WeatherCity weatherCity = weatherCityService.selectOne(new EntityWrapper<WeatherCity>() |
| | | .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') ")); |
| | | city = null != weatherCity ? weatherCity.getId().toString() : ""; |
| | | String districtCode = geocode.getDistrictCode(); |
| | | BranchOffice branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("districtCode", districtCode)); |
| | | if(null == branchOffice){ |
| | | String cityCode = geocode.getCityCode(); |
| | | branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("cityCode", cityCode)); |
| | | if(null == branchOffice){ |
| | | String provinceCode = geocode.getProvinceCode(); |
| | | branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("provinceCode", provinceCode)); |
| | | } |
| | | } |
| | | if(null == branchOffice){ |
| | | return ResultUtil.error("起点暂无企业服务"); |
| | | } |
| | | branchOfficeId = branchOffice.getId(); |
| | | } |
| | | try { |
| | | order = getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, city); |
| | | order = getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, city, branchOfficeId); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.error("计算费用异常"); |
| | |
| | | @Override |
| | | public void pushOrderInfo(Long orderId){ |
| | | Order order = this.selectById(orderId); |
| | | if(null == order){ |
| | | return; |
| | | } |
| | | Integer driverId = order.getDriverId(); |
| | | String value = redisUtil.getValue("DRIVER" + driverId); |
| | | if(order.getState() == 106 || order.getState() == 301){ |
| | |
| | | order.setDriverId(driver.getId()); |
| | | orderTransfer.setNewDriverId(driver.getId()); |
| | | } |
| | | order.setState(104); |
| | | // order.setState(104); |
| | | driver.setServerStatus(2); |
| | | driverService.updateById(driver); |
| | | Driver driver1 = driverService.selectById(oldId); |
| | | driver1.setServerStatus(1); |
| | | driverService.updateById(driver1); |
| | | }else { |
| | | order.setOldState(order.getState()); |
| | | order.setState(201); |
| | | } |
| | | |
| | | order.setOldState(order.getState()); |
| | | |
| | | this.updateById(order); |
| | | |
| | | |
| | |
| | | order.setEstimatedMileage(d); |
| | | order.setEstimatedTime(Integer.valueOf(distance.get("duration")) / 60); |
| | | String city = ""; |
| | | District geocode = MapUtil.geocode(order.getStartLng(), order.getStartLat()); |
| | | Integer branchOfficeId = null; |
| | | District geocode = MapUtil.geocode(order.getEndLng(), order.getEndLat()); |
| | | if(null != geocode){ |
| | | WeatherCity weatherCity = weatherCityService.selectOne(new EntityWrapper<WeatherCity>() |
| | | .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') ")); |
| | | city = null != weatherCity ? weatherCity.getId().toString() : ""; |
| | | String districtCode = geocode.getDistrictCode(); |
| | | BranchOffice branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("districtCode", districtCode)); |
| | | if(null == branchOffice){ |
| | | String cityCode = geocode.getCityCode(); |
| | | branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("cityCode", cityCode)); |
| | | if(null == branchOffice){ |
| | | String provinceCode = geocode.getProvinceCode(); |
| | | branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("provinceCode", provinceCode)); |
| | | } |
| | | order = getOrderPrice(1, d, 0, order, city); |
| | | } |
| | | if(null == branchOffice){ |
| | | return ResultUtil.error("起点暂无企业服务"); |
| | | } |
| | | branchOfficeId = branchOffice.getId(); |
| | | } |
| | | order = getOrderPrice(1, d, 0, order, city, branchOfficeId); |
| | | this.updateById(order); |
| | | return ResultUtil.success(); |
| | | } |
| | |
| | | } |
| | | orderPriceWarpper.setWxCollectionCode(driver.getWxCollectionCode()); |
| | | orderPriceWarpper.setZfbCollectionCode(driver.getZfbCollectionCode()); |
| | | orderPriceWarpper.setHolidayPrice(order.getHolidayPrice()); |
| | | return orderPriceWarpper; |
| | | } |
| | | |