From b77c1869930d044db13a0d4a672bf98da1cab2c2 Mon Sep 17 00:00:00 2001 From: zhibing.pu <393733352@qq.com> Date: 星期四, 22 八月 2024 12:00:07 +0800 Subject: [PATCH] 修改bug --- DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java | 226 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 177 insertions(+), 49 deletions(-) diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java index f37df73..1de4706 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java @@ -17,10 +17,7 @@ import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.*; -import com.stylefeng.guns.modular.system.util.GoogleMap.AddressComponentsVo; -import com.stylefeng.guns.modular.system.util.GoogleMap.FleetEngineUtil; -import com.stylefeng.guns.modular.system.util.GoogleMap.GoogleMapUtil; -import com.stylefeng.guns.modular.system.util.GoogleMap.ReverseGeocodeVo; +import com.stylefeng.guns.modular.system.util.GoogleMap.*; import com.stylefeng.guns.modular.system.util.itextpdf.HtmlToPdfUtils; import com.stylefeng.guns.modular.system.warpper.*; import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; @@ -334,6 +331,7 @@ BigDecimal bigDecimal = new BigDecimal("0"); for(Map<String, Object> map : query){ DriverActivityHistory dah = new DriverActivityHistory(); + dah.setDriverActivityId(Integer.valueOf(map.get("driverActivityId").toString())); dah.setActivityId(Integer.valueOf(map.get("id").toString())); dah.setDriverId(uid); dah.setType(1); @@ -529,6 +527,7 @@ BigDecimal bigDecimal = new BigDecimal("0"); for(Map<String, Object> map : query){ DriverActivityHistory dah = new DriverActivityHistory(); + dah.setDriverActivityId(Integer.valueOf(map.get("driverActivityId").toString())); dah.setActivityId(Integer.valueOf(map.get("id").toString())); dah.setDriverId(uid); dah.setType(1); @@ -1097,22 +1096,25 @@ loginWarpper.setJumpCode("200000"); } } - - //司机登录,添加谷歌上的车辆信息 - Car car = carService.selectById(driver.getCarId()); - if(null == car){ - return ResultUtil.error(language == 1 ? "登录失败,请先绑定车辆" : language == 2 ? "Login failed, please bind the vehicle first" : "La connexion a échoué, veuillez d’abord lier le véhicule"); + if(null != driver.getCarId()){ + Car car = carService.selectById(driver.getCarId()); + if(!StringUtils.hasLength(car.getVehicleId())){ + car.setVehicleId(UUIDUtil.getRandomCode()); + carService.updateById(car); + } + new Thread(()->{ + try { + CarModel carModel = carModelMapper.selectById(car.getCarModelId()); + String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId()); + if(ToolUtil.isEmpty(vehicles)) { + fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); + } + }catch (Exception e){ + e.printStackTrace(); + } + }).start(); + loginWarpper.setVehicleId(car.getVehicleId()); } - if(!StringUtils.hasLength(car.getVehicleId())){ - car.setVehicleId(UUIDUtil.getRandomCode()); - carService.updateById(car); - } - String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId()); - if(ToolUtil.isEmpty(vehicles)){ - CarModel carModel = carModelMapper.selectById(car.getCarModelId()); - fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); - } - loginWarpper.setVehicleId(car.getVehicleId()); return ResultUtil.success(loginWarpper); } @@ -1125,6 +1127,9 @@ */ @Override public Map<String, Object> queryHomeData(Integer uid, Integer language) throws Exception { + Driver driver = this.selectById(uid); + driver.setLanguage(language); + this.updateById(driver); Map<String, Object> map = driverMapper.queryHomeData(uid); int size = this.queryMyActivity(uid, new Date(), language).size(); map.put("activity", size); @@ -1186,8 +1191,10 @@ public ResultUtil work(Integer uid, String type, Integer language) throws Exception { DriverWork driverWork = driverWorkMapper.queryNewWork(uid, null, 1); Driver driver = this.selectById(uid); + driver.setLanguage(language); Car car = carService.selectById(driver.getCarId()); String audioUrl = ""; + LoginWarpper loginWarpper = new LoginWarpper(); if(null != driverWork){//作下班操作 //检测是否有未完成的订单 List<Map<String, Object>> list = orderService.queryOrderList(1, 1, 10, uid, language); @@ -1205,26 +1212,32 @@ } //司机下班,修改谷歌上的车辆信息 - CarModel carModel = carModelMapper.selectById(car.getCarModelId()); - String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId()); - if(ToolUtil.isEmpty(vehicles)){ - fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); - }else{ - fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); - } + new Thread(()->{ + try { + CarModel carModel = carModelMapper.selectById(car.getCarModelId()); + String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId()); + if(ToolUtil.isEmpty(vehicles)){ + fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); + fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); + }else{ + fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); + } + }catch (Exception e){ + e.printStackTrace(); + } + }).start(); switch (language){ case 1: - audioUrl = "http://182.160.16.251:81/files/audio/AfterWork-CN.mp3"; + audioUrl = "http://182.160.16.251:81/files/audio/system/AfterWork-CN.mp3"; break; case 2: - audioUrl = "http://182.160.16.251:81/files/audio/AfterWork-EN.mp3"; + audioUrl = "http://182.160.16.251:81/files/audio/system/AfterWork-EN.mp3"; break; case 3: - audioUrl = "http://182.160.16.251:81/files/audio/AfterWork-FR.mp3"; + audioUrl = "http://182.160.16.251:81/files/audio/system/AfterWork-FR.mp3"; break; } }else{ - LoginWarpper loginWarpper = new LoginWarpper(); if(driver.getCompanyId()==null){ loginWarpper.setJumpCode("100000"); return ResultUtil.success(loginWarpper); @@ -1250,6 +1263,8 @@ if(car.getAuthState()==4){ return ResultUtil.error(language == 1 ? "请完善资料后再出车" : language == 2 ? "Please complete data before driving." : "Veuillez compléter les données avant de conduire."); } + + driverWork = new DriverWork(); driverWork.setState(1); driverWork.setDriverId(uid); @@ -1264,28 +1279,40 @@ } //司机上班,修改谷歌上的车辆信息 - CarModel carModel = carModelMapper.selectById(car.getCarModelId()); - String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId()); - if(ToolUtil.isEmpty(vehicles)){ - fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); - }else{ - fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); - } + new Thread(new Runnable() { + @Override + public void run() { + try { + CarModel carModel = carModelMapper.selectById(car.getCarModelId()); + String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId()); + if(ToolUtil.isEmpty(vehicles)){ + fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); + fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); + }else{ + fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); + } + }catch (Exception e){ + e.printStackTrace(); + } + } + }).start(); switch (language){ case 1: - audioUrl = "http://182.160.16.251:81/files/audio/AtWork-CN.mp3"; + audioUrl = "http://182.160.16.251:81/files/audio/system/AtWork-CN.mp3"; break; case 2: - audioUrl = "http://182.160.16.251:81/files/audio/AtWork-EN.mp3"; + audioUrl = "http://182.160.16.251:81/files/audio/system/AtWork-EN.mp3"; break; case 3: - audioUrl = "http://182.160.16.251:81/files/audio/AtWork-FR.mp3"; + audioUrl = "http://182.160.16.251:81/files/audio/system/AtWork-FR.mp3"; break; } } this.updateById(driver); - return ResultUtil.success(audioUrl); + loginWarpper.setAudioUrl(audioUrl); + loginWarpper.setVehicleId(car.getVehicleId()); + return ResultUtil.success(loginWarpper); } @@ -1410,13 +1437,6 @@ } maps.add(baseWarpper); } - DriverOrders query = driverOrdersMapper.query(uid, 1); - if(null == query){ - query = new DriverOrders(); - query.setDriverId(uid); - query.setType(1); - driverOrdersMapper.insert(query); - } return maps; } @@ -1449,7 +1469,6 @@ driver.setQrCode(QrCodeUtil.getQrCode(uid)); driverMapper.updateById(driver); } - //减去本周的收入 return map; } @@ -1815,6 +1834,80 @@ } return list; } + + + @Override + public List<ActivityWarpper> queryHistoryList(Integer uid, Date time, Integer language) throws Exception { + List<ActivityWarpper> list = new ArrayList<>(); + Map<String, Date> date = dateUtil.getStartAndEndDate(time); + List<DriverActivityHistory> driverActivityHistories = driverActivityHistoryMapper.queryHistoryList(uid, null, null, date.get("startTime"), date.get("endTime")); + + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); + for(DriverActivityHistory dah : driverActivityHistories){ + ActivityWarpper activityWarpper = new ActivityWarpper(); + switch (dah.getType()){ + case 1://邀请司机注册 + DriverActivityRegistered driverActivityRegistered = driverActivityRegisteredMapper.selectById(dah.getActivityId()); + activityWarpper.setId(driverActivityRegistered.getId()); + activityWarpper.setContent(language == 1 ? "邀请司机注册奖励GHS" + driverActivityRegistered.getMoney() : + language == 2 ? " Invite drivers to register for a reward of GHS" + driverActivityRegistered.getMoney(): + "Invitez les chauffeurs à s’inscrire pour une récompense de GHS" + driverActivityRegistered.getMoney()); + break; + case 2://邀请用户注册 + DriverActivityRegistered driverActivityRegistered1 = driverActivityRegisteredMapper.selectById(dah.getActivityId()); + activityWarpper.setId(driverActivityRegistered1.getId()); + activityWarpper.setContent(language == 1 ? "邀请用户注册奖励GHS" + driverActivityRegistered1.getMoney() : + language == 2 ? "Invite users to register for a reward of GHS" + driverActivityRegistered1.getMoney(): + "Invitez les utilisateurs à s’inscrire pour une récompense de GHS" + driverActivityRegistered1.getMoney()); + break; + case 3://累计在线 + DriverActivityOnline driverActivityOnline = driverActivityOnlineMapper.selectById(dah.getActivityId()); + activityWarpper.setId(driverActivityOnline.getId()); + StringBuffer sb = new StringBuffer(language == 1 ? "今日" : + language == 2 ? "Today, stay online receiving orders of " : "Aujourd’hui, reste en ligne à recevoir des commandes "); + DriverOnline query = driverOnlineMapper.query(uid, sdf1.format(new Date()), driverActivityOnline.getType(), 0); + Integer hour = 0; + if(null != query){ + hour = Long.valueOf(query.getDuration() / 3600).intValue(); + } + switch (driverActivityOnline.getType()){ + case 1: + sb.append(language == 1 ? "打车" : language == 2 ? "ride" : "de course"); + break; + case 2: + sb.append("出租车"); + continue; + case 3: + sb.append("城际出行"); + continue; + case 4: + sb.append(language == 1 ? "包裹" : language == 2 ? "delivery" : "de livraison"); + break; + } + String str = language == 1 ? "累计在线" +driverActivityOnline.getOnline() + "小时奖励GHS" +driverActivityOnline.getMoney(): + language == 2 ? " for " + driverActivityOnline.getOnline() + " hours to get a reward of GHS" + driverActivityOnline.getMoney(): + " pendant " + driverActivityOnline.getOnline() + " heures afin d'obtenir une récompense de GHS" + driverActivityOnline.getMoney(); + activityWarpper.setContent(sb.append(str).toString()); + activityWarpper.setCarryOut((dah.getCarryOut() == 2 || hour > driverActivityOnline.getOnline()) ? driverActivityOnline.getOnline() + "/" +driverActivityOnline.getOnline() : hour + "/" + driverActivityOnline.getOnline()); + break; + case 4://订单量 + DriverActivityOrder driverActivityOrder = driverActivityOrderMapper.selectById(dah.getActivityId()); + activityWarpper.setId(driverActivityOrder.getId()); + activityWarpper.setContent(language == 1 ? "今日" + driverActivityOrder.getStart() + "-" + driverActivityOrder.getEnd() + "累计接单" + driverActivityOrder.getOrderNum() + "单奖励GHS" + driverActivityOrder.getMoney(): + language == 2 ? "Today " + driverActivityOrder.getStart() + "-" + driverActivityOrder.getEnd() + ", complete " + driverActivityOrder.getOrderNum() + " orders for a reward of GHS" + driverActivityOrder.getMoney() : + "Aujourd’hui de " + driverActivityOrder.getStart() + " à " + driverActivityOrder.getEnd() + ", complétez " + driverActivityOrder.getOrderNum() + " commandes pour une récompense de GHS" + driverActivityOrder.getMoney()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date start = sdf.parse(sdf1.format(time) + " " + driverActivityOrder.getStart() + ":00"); + Date end = sdf.parse(sdf1.format(time) + " " + driverActivityOrder.getEnd() + ":59"); + Integer integer = orderService.queryOrderNum(uid, start, end); + activityWarpper.setCarryOut(integer.compareTo(driverActivityOrder.getOrderNum()) > 0 ? driverActivityOrder.getOrderNum() + "/" + driverActivityOrder.getOrderNum() : integer + "/" + driverActivityOrder.getOrderNum()); + break; + } + list.add(activityWarpper); + } + return list; + } + /** @@ -1854,6 +1947,7 @@ for(Map<String, Object> map : query){ for(Driver driver : drivers){ DriverActivityHistory driverActivityHistory = new DriverActivityHistory(); + driverActivityHistory.setDriverActivityId(Integer.valueOf(map.get("driverActivityId").toString())); driverActivityHistory.setActivityId(Integer.valueOf(String.valueOf(map.get("id")))); driverActivityHistory.setType(1); driverActivityHistory.setDriverId(driver.getId()); @@ -1981,6 +2075,7 @@ for(Map<String, Object> map : query){ for(Driver driver : drivers){ DriverActivityHistory driverActivityHistory = new DriverActivityHistory(); + driverActivityHistory.setDriverActivityId(Integer.valueOf(map.get("driverActivityId").toString())); driverActivityHistory.setActivityId(Integer.valueOf(String.valueOf(map.get("id")))); driverActivityHistory.setType(2); driverActivityHistory.setDriverId(driver.getId()); @@ -2104,6 +2199,7 @@ DriverActivityOnline driverActivityOnline = driverActivityOnlineMapper.selectById(Integer.valueOf(String.valueOf(map.get("id")))); for(Driver driver : drivers){ DriverActivityHistory driverActivityHistory = new DriverActivityHistory(); + driverActivityHistory.setDriverActivityId(Integer.valueOf(map.get("driverActivityId").toString())); driverActivityHistory.setActivityId(Integer.valueOf(String.valueOf(map.get("id")))); driverActivityHistory.setType(3); driverActivityHistory.setDriverId(driver.getId()); @@ -2227,6 +2323,7 @@ DriverActivityOrder driverActivityOrder = driverActivityOrderMapper.selectById(Integer.valueOf(String.valueOf(map.get("id")))); for(Driver driver : drivers){ DriverActivityHistory driverActivityHistory = new DriverActivityHistory(); + driverActivityHistory.setDriverActivityId(Integer.valueOf(map.get("driverActivityId").toString())); driverActivityHistory.setActivityId(Integer.valueOf(String.valueOf(map.get("id")))); driverActivityHistory.setType(4); driverActivityHistory.setDriverId(driver.getId()); @@ -3078,4 +3175,35 @@ public Double getThisWeekMoney(Integer driverId) { return this.baseMapper.getThisWeekMoney(driverId); } + + + /** + * 获取给定车型且空闲的司机 + * @param type + * @param serverCarModelId + * @param lon + * @param lat + * @param distance + * @param companyId + * @return + * @throws Exception + */ + @Override + public List<Driver> queryIdleDriver(Integer type, Integer serverCarModelId, Double lon, Double lat, Double distance, Integer companyId) throws Exception { + List<Driver> drivers = driverMapper.queryIdleDriver_(type, serverCarModelId, companyId); + List<Driver> list = new ArrayList<>(); + for(Driver driver : drivers){ + String value = redisUtil.getValue("DRIVER" + driver.getId()); + if(ToolUtil.isNotEmpty(value)){ + DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(lat, lon, Double.parseDouble(value.split(",")[1]), Double.parseDouble(value.split(",")[0])); + if(null != distancematrix){ + if(distancematrix.getDistance() < (distance * 1000)){ + list.add(driver); + } + } + + } + } + return list; + } } -- Gitblit v1.7.1