| | |
| | | |
| | | @Autowired |
| | | private ITDriverService tDriverService; |
| | | |
| | | @Autowired |
| | | private ITOrderTaxiService tOrderTaxiService; |
| | | |
| | | @Autowired |
| | | private ITOrderCrossCityService tOrderCrossCityService; |
| | | |
| | | @Autowired |
| | | private ITCompanyCityService tCompanyCityService; |
| | | |
| | | @Autowired |
| | | private GDMapGeocodingUtil gdMapGeocodingUtil; |
| | | |
| | | @Autowired |
| | | private GDMapElectricFenceUtil gdMapElectricFenceUtil; |
| | | |
| | | @Autowired |
| | | private PushMinistryOfTransportUtil pushMinistryOfTransportUtil; |
| | |
| | | public Object add(TOrderPrivateCar privateCar) { |
| | | TUser user = userService.selectOne(new EntityWrapper<TUser>().eq("phone", privateCar.getPassengersPhone())); |
| | | if (ToolUtil.isNotEmpty(user)) {/// 用户是平台用户 |
| | | privateCar.setOrderNum("PRIVATE" + String.valueOf(1000000 + privateCar.selectList(null).size() + 1).substring(1)); |
| | | if (hasUnfinishedTravelOrder(user.getId())) { |
| | | return new ErrorTip(500, "该乘客有未完成的订单"); |
| | | } |
| | | privateCar.setOrderNum(getPrivateCarOrderNum()); |
| | | privateCar.setUserId(user.getId()); |
| | | privateCar.setState(1); |
| | | privateCar.setInsertTime(DateUtil.parseTime(DateUtil.getTime())); |
| | |
| | | } else { |
| | | privateCar.setOrderType(1); |
| | | } |
| | | fillDispatchPrivateCarOrder(privateCar); |
| | | tOrderPrivateCarService.insert(privateCar); |
| | | } else {/// 用户不是平台用户时 |
| | | TUser tUser = new TUser(); |
| | |
| | | userService.insert(tUser); |
| | | |
| | | /// 存入订单信息 |
| | | privateCar.setOrderNum("PRIVATE" + String.valueOf(1000000 + tOrderPrivateCarService.selectList(null).size() + 1).substring(1)); |
| | | privateCar.setOrderNum(getPrivateCarOrderNum()); |
| | | privateCar.setUserId(tUser.getId()); |
| | | privateCar.setState(1); |
| | | privateCar.setInsertTime(DateUtil.parseTime(DateUtil.getTime())); |
| | |
| | | } else { |
| | | privateCar.setOrderType(1); |
| | | } |
| | | fillDispatchPrivateCarOrder(privateCar); |
| | | tOrderPrivateCarService.insert(privateCar); |
| | | } |
| | | |
| | |
| | | System.out.println("添加订单推单调用结果:" + result); |
| | | return SUCCESS_TIP; |
| | | } |
| | | |
| | | private String getPrivateCarOrderNum() { |
| | | return "PR" + new java.text.SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + UUIDUtil.getRandomCode().substring(0, 5); |
| | | } |
| | | |
| | | private boolean hasUnfinishedTravelOrder(Integer userId) { |
| | | if (userId == null) { |
| | | return false; |
| | | } |
| | | return tOrderPrivateCarService.selectCount(new EntityWrapper<TOrderPrivateCar>() |
| | | .eq("isDelete", 1) |
| | | .eq("userId", userId) |
| | | .notIn("state", 8, 9, 10, 12)) > 0 |
| | | || tOrderTaxiService.selectCount(new EntityWrapper<TOrderTaxi>() |
| | | .eq("isDelete", 1) |
| | | .eq("userId", userId) |
| | | .notIn("state", 8, 9, 10, 12)) > 0 |
| | | || tOrderCrossCityService.selectCount(new EntityWrapper<TOrderCrossCity>() |
| | | .eq("isDelete", 1) |
| | | .eq("userId", userId) |
| | | .notIn("state", 8, 9, 10, 12)) > 0; |
| | | } |
| | | |
| | | private void fillDispatchPrivateCarOrder(TOrderPrivateCar privateCar) { |
| | | privateCar.setIsDelete(1); |
| | | privateCar.setTotalPeopleNum(1); |
| | | fillPlacementAndCompany(privateCar); |
| | | fillEstimateDistance(privateCar); |
| | | } |
| | | |
| | | private void fillPlacementAndCompany(TOrderPrivateCar privateCar) { |
| | | if (privateCar.getStartLon() == null || privateCar.getStartLat() == null) { |
| | | return; |
| | | } |
| | | try { |
| | | Map<String, String> geocode = gdMapGeocodingUtil.geocode(privateCar.getStartLon().toString(), privateCar.getStartLat().toString()); |
| | | if (ToolUtil.isNotEmpty(geocode.get("address"))) { |
| | | privateCar.setPlacementAddress(geocode.get("address")); |
| | | } |
| | | if (ToolUtil.isNotEmpty(geocode.get("districtCode"))) { |
| | | TCompanyCity companyCity = tCompanyCityService.selectOne(new EntityWrapper<TCompanyCity>() |
| | | .eq("areaCode", Integer.valueOf(geocode.get("districtCode"))) |
| | | .eq("state", 1)); |
| | | if (companyCity != null) { |
| | | privateCar.setCompanyId(companyCity.getCompanyId()); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | System.err.println("管理端添加快车单补充下单地/公司失败:" + e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | private void fillEstimateDistance(TOrderPrivateCar privateCar) { |
| | | if (privateCar.getStartLon() == null || privateCar.getStartLat() == null |
| | | || privateCar.getEndLon() == null || privateCar.getEndLat() == null) { |
| | | return; |
| | | } |
| | | try { |
| | | Map<String, String> distanceMap = gdMapElectricFenceUtil.getDistance( |
| | | privateCar.getStartLon() + "," + privateCar.getStartLat(), |
| | | privateCar.getEndLon() + "," + privateCar.getEndLat(), 1); |
| | | if (distanceMap != null) { |
| | | if (ToolUtil.isNotEmpty(distanceMap.get("distance"))) { |
| | | privateCar.setEstimateMileage(Double.valueOf(distanceMap.get("distance"))); |
| | | } |
| | | if (ToolUtil.isNotEmpty(distanceMap.get("duration"))) { |
| | | privateCar.setEstimateTime(Double.valueOf(distanceMap.get("duration")) / 60); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | System.err.println("管理端添加快车单补充预估距离失败:" + e.getMessage()); |
| | | } |
| | | } |
| | | } |