From 0467b2c78c12aba5922e5b900eed5205824e9220 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期五, 15 八月 2025 09:44:33 +0800 Subject: [PATCH] bug修改 --- DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 8 +- UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml | 89 ++++++++++++++++++++++ UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java | 6 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 22 +++++ DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java | 6 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java | 45 +++++++++- UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverMapper.java | 9 ++ UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java | 2 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderServerWarpper.java | 21 +++++ 9 files changed, 191 insertions(+), 17 deletions(-) diff --git a/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java b/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java index 4e46bf9..339a911 100644 --- a/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java +++ b/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java @@ -434,7 +434,7 @@ private Integer priceType; @ApiModelProperty(value = "预估价") @TableField("estimatedPrice") - private BigDecimal estimatedPrice; + private Double estimatedPrice; @ApiModelProperty(value = "上一次定位推送时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @@ -521,11 +521,11 @@ this.priceType = priceType; } - public BigDecimal getEstimatedPrice() { + public Double getEstimatedPrice() { return estimatedPrice; } - public void setEstimatedPrice(BigDecimal estimatedPrice) { + public void setEstimatedPrice(Double estimatedPrice) { this.estimatedPrice = estimatedPrice; } diff --git a/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java index 48e6314..e25f596 100644 --- a/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java +++ b/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java @@ -569,7 +569,7 @@ orderPrivateCar.setState(7); } - if(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(BigDecimal.ZERO)>0 && new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(new BigDecimal(orderPrivateCar.getOrderMoney()))>-1) { + if(orderPrivateCar.getPayMethod() == 0 && new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(BigDecimal.ZERO)>0 && new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(new BigDecimal(orderPrivateCar.getOrderMoney()))>-1) { orderPrivateCar.setState(8); // 退款情况 if (new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(new BigDecimal(orderPrivateCar.getOrderMoney())) > 0) { @@ -630,7 +630,7 @@ // orderPrivateCar.setBindId(""); // } // 判断预估金额和订单金额差异是否大于3元 - if(BigDecimal.valueOf(orderPrivateCar.getOrderMoney()).subtract(orderPrivateCar.getEstimatedPrice()).abs().doubleValue() > 3){ + if(BigDecimal.valueOf(orderPrivateCar.getOrderMoney()).subtract(new BigDecimal(orderPrivateCar.getEstimatedPrice())).abs().doubleValue() > 3){ orderPrivateCar.setIsException(1); } if(orderPrivateCar.getIsException() == 1){ @@ -704,9 +704,9 @@ map.put("discountMoney", orderPrivateCar.getDiscountMoney());//折扣抵扣金额 map.put("discount", orderPrivateCar.getDiscount());//折扣 if(Objects.isNull(orderPrivateCar.getEstimatedPrice())){ - orderPrivateCar.setEstimatedPrice(BigDecimal.ZERO); + orderPrivateCar.setEstimatedPrice(0D); } - if(BigDecimal.valueOf(orderPrivateCar.getOrderMoney()).subtract(orderPrivateCar.getEstimatedPrice()).abs().doubleValue() > 3){ + if(BigDecimal.valueOf(orderPrivateCar.getOrderMoney()).subtract(new BigDecimal(orderPrivateCar.getEstimatedPrice())).abs().doubleValue() > 3){ orderPrivateCar.setIsException(1); } map.put("estimatedPrice", orderPrivateCar.getEstimatedPrice()); diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java index e30593c..8b7add8 100644 --- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java +++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java @@ -396,7 +396,7 @@ private Integer priceType; @ApiModelProperty(value = "预估价") @TableField("estimatedPrice") - private BigDecimal estimatedPrice; + private Double estimatedPrice; @ApiModelProperty(value = "上一次定位推送时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @@ -484,11 +484,11 @@ this.priceType = priceType; } - public BigDecimal getEstimatedPrice() { + public Double getEstimatedPrice() { return estimatedPrice; } - public void setEstimatedPrice(BigDecimal estimatedPrice) { + public void setEstimatedPrice(Double estimatedPrice) { this.estimatedPrice = estimatedPrice; } public Integer getIsplatPay() { diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java index 0fc2013..7631755 100644 --- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java +++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java @@ -287,7 +287,6 @@ orderPrivateCar.setTravelTime(travelTime); orderPrivateCar.setOrderType(reservation); orderPrivateCar.setOrderSource(orderSource); - orderPrivateCar.setEstimatedPrice(estimatedPrice); if(orderSource == 2){//扫码下单 Driver driver = driverService.selectById(driverId); if(null == driver){ @@ -349,8 +348,10 @@ 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.setPayMethod(0); this.insert(orderPrivateCar); @@ -361,6 +362,11 @@ baseWarpper.setAmount(orderPrivateCar.getOrderMoney()); return ResultUtil.success(baseWarpper); }else { + if(orderSource == 2){ + orderPrivateCar.setEstimatedPrice(data.get(0).getAmount()); + }else { + orderPrivateCar.setEstimatedPrice(data.get(carIndex).getAmount()); + } orderPrivateCar.setIsReassign(1); orderPrivateCar.setIsDelete(1); orderPrivateCar.setPayMethod(1); @@ -1166,7 +1172,11 @@ for(int i = 1; i <= querys.size(); i++){ PushOrder pushOrder = pushOrderService.querys(i, 1, query.getId()).get(0); //获取空闲司机 +// List<Driver> list = driverService.queryIdleDriver(1, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 List<Driver> list = driverService.queryIdleDriver(1, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 + List<Driver> list1 = driverService.queryIdleDriver_(1, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), 2.0D, null);//所有附近空闲司机 + list.addAll(list1); + list = list.stream().distinct().collect(Collectors.toList()); if(list.size() > 0){ // 查询预约单 List<Integer> driverIds = list.stream().map(Driver::getId).collect(Collectors.toList()); @@ -2121,6 +2131,16 @@ List<OrderPosition> list = JSONArray.parseArray(sb.toString(), OrderPosition.class); orderServerWarpper.setOrderPositionList(JSONObject.toJSONString(list)); } + // 查询司机服务中的订单 + OrderPrivateCar one = this.selectOne(new EntityWrapper<OrderPrivateCar>() + .eq("driverId", orderPrivateCar.getDriverId()) + .eq("state", 5) + .orderBy("insertTime", false) + .last("LIMIT 1")); + if(Objects.nonNull(one)){ + orderServerWarpper.setLastLon(one.getEndLon()+""); + orderServerWarpper.setLastLat(one.getEndLat()+""); + } return orderServerWarpper; } diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverMapper.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverMapper.java index 5e42500..16f4b83 100644 --- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverMapper.java +++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverMapper.java @@ -27,6 +27,15 @@ */ List<Driver> queryIdleDriver_(@Param("type") Integer type, @Param("serverCarModelId") Integer serverCarModelId, @Param("companyId") Integer companyId); + /** + * 获取当前已上班type业务类型、设置了可以接此类型的单据、服务车型匹配且空闲的司机 + * @param type + * @param serverCarModelId + * @param companyId + * @return + */ + List<Driver> queryIdleDriverService_(@Param("type") Integer type, @Param("serverCarModelId") Integer serverCarModelId, + @Param("companyId") Integer companyId); /** diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml index a00c013..f94fd95 100644 --- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml +++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml @@ -254,6 +254,95 @@ ) </select> + <select id="queryIdleDriverService_" resultType="Driver"> + select + id as id, + account as account, + jobNumber as jobNumber, + phone as phone, + password as password, + name as name, + sex as sex, + idCard as idCard, + companyId as companyId, + franchiseeId as franchiseeId, + headImgUrl as headImgUrl, + faceImgUrl as faceImgUrl, + idCardImgUrl1 as idCardImgUrl1, + idCardImgUrl2 as idCardImgUrl2, + placeOfEmployment as placeOfEmployment, + birthday as birthday, + bankCardNumber as bankCardNumber, + driverNationality as driverNationality, + driverNation as driverNation, + driverMaritalStatus as driverMaritalStatus, + driverLanguageLevel as driverLanguageLevel, + driverEducation as driverEducation, + driverCensus as driverCensus, + driverAddress as driverAddress, + driverContactAddress as driverContactAddress, + driverAge as driverAge, + driveCard as driveCard, + driveCardImgUrl as driveCardImgUrl, + driverType as driverType, + getDriverLicenseDate as getDriverLicenseDate, + driverLicenseOn as driverLicenseOn, + driverLicenseOff as driverLicenseOff, + taxiDriver as taxiDriver, + taxiAptitudeCard as taxiAptitudeCard, + networkCarlssueImg as networkCarlssueImg, + networkCarlssueOrganization as networkCarlssueOrganization, + networkCarlssueDate as networkCarlssueDate, + getNetworkCarProofDate as getNetworkCarProofDate, + networkCarProofOn as networkCarProofOn, + networkCarProofOff as networkCarProofOff, + registerDate as registerDate, + fullTimeDriver as fullTimeDriver, + inDriverBlacklist as inDriverBlacklist, + commercialType as commercialType, + contractCompany as contractCompany, + contractOn as contractOn, + contractOff as contractOff, + emergencyContact as emergencyContact, + emergencyContactPhone as emergencyContactPhone, + emergencyContactAddress as emergencyContactAddress, + remark as remark, + isPlatCar as isPlatCar, + carId as carId, + authState as authState, + state as state, + addType as addType, + balance as balance, + flag as flag, + insertTime as insertTime, + insertUser as insertUser, + updateTime as updateTime, + updateUser as updateUser + from t_driver + where flag != 3 and state = 3 and authState = 2 + <if test="null != companyId"> + <choose> + <when test="companyId != 1"> + and companyId = #{companyId} or franchiseeId = #{companyId} + </when> + <otherwise> + and companyId is null or companyId = 0 or companyId = 1 or franchiseeId is null or franchiseeId = 0 + </otherwise> + </choose> + + </if> + and id in + ( + select driverId from t_driver_work where startTime < now() and state = 1 and `type` like CONCAT('%', #{type}, '%') + ) + and id in (select driverId from t_driver_orders where `type` = #{type}) + and carId in (select carId from t_car_service where `type` = #{type} + <if test="null != serverCarModelId"> + and serverCarModelId = #{serverCarModelId} + </if> + ) + </select> + <select id="queryOrderDriver" resultType="map"> diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java index 1a0766f..f8d8589 100644 --- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java +++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java @@ -62,4 +62,6 @@ List<BaseWarpper> queryBusiness(Integer uid) throws Exception; List<Driver> queryDriverLimitTen(Integer type, Double lon, Double lat); + + List<Driver> queryIdleDriver_(Integer type, Integer serverCarModelId, Double lon, Double lat, Double distance, Integer companyId); } diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java index 246b928..c2337d0 100644 --- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java +++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java @@ -17,10 +17,7 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Service @@ -65,7 +62,7 @@ list.add(driver); } }else{ - System.err.println(driver.getName() + "-----------------没有上传经纬度----------------"); +// System.err.println(driver.getName() + "-----------------没有上传经纬度----------------"); } } return list; @@ -88,7 +85,38 @@ List<Driver> drivers = driverMapper.queryIdleDriver_(type, serverCarModelId, companyId); List<Driver> list = new ArrayList<>(); for(Driver driver : drivers){ + if(driver.getId() == 2448){ + System.err.println("司机名称---"+driver.getName()); + } String value = redisUtil.getValue("DRIVER" + String.valueOf(driver.getId())); + if(null != value){ + /*Map<String, String> distance1 = gdMapElectricFenceUtil.getDistance(lon + "," + lat, value, 0);//计算距离 + double d = Double.valueOf(distance1.get("distance")).doubleValue();*/ +// double d = GDMapGeocodingUtil.getDistance(lat,lon,Double.parseDouble(value.split(",")[1]),Double.parseDouble(value.split(",")[0])); + double d = gdMapElectricFenceUtil.getDrivingRoute(lat,lon,Double.parseDouble(value.split(",")[1]),Double.parseDouble(value.split(",")[0])); + if(d < (distance * 1000)){ + list.add(driver); + } + } + } + return list; + } + /** + * 获取给定车型且空闲的司机 + * @param type + * @param serverCarModelId + * @param lon + * @param lat + * @param distance + * @param companyId + * @return + */ + @Override + public List<Driver> queryIdleDriver_(Integer type, Integer serverCarModelId, Double lon, Double lat, Double distance, Integer companyId) { + List<Driver> drivers = driverMapper.queryIdleDriverService_(type, serverCarModelId, companyId); + List<Driver> list = new ArrayList<>(); + for(Driver driver : drivers){ + String value = redisUtil.getValue("DRIVER" + driver.getId()); if(null != value){ /*Map<String, String> distance1 = gdMapElectricFenceUtil.getDistance(lon + "," + lat, value, 0);//计算距离 double d = Double.valueOf(distance1.get("distance")).doubleValue();*/ @@ -169,13 +197,18 @@ if(CollectionUtils.isEmpty(drivers)){ return new ArrayList<>(); } - for (Driver driver : drivers) { + Iterator<Driver> iterator = drivers.iterator(); + while (iterator.hasNext()){ + Driver driver = iterator.next(); String value = redisUtil.getValue("DRIVER" + driver.getId()); if(null != value){ double d = GDMapGeocodingUtil.getDistance(lat,lon,Double.parseDouble(value.split(",")[1]),Double.parseDouble(value.split(",")[0])); driver.setLon(Double.parseDouble(value.split(",")[0])); driver.setLat(Double.parseDouble(value.split(",")[1])); driver.setDistance(d); + }else { + System.err.println(driver.getName() + "------没有上传经纬度------"); + iterator.remove(); } } if(drivers.size() > 10){ diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderServerWarpper.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderServerWarpper.java index 5f6fb97..47653b5 100644 --- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderServerWarpper.java +++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderServerWarpper.java @@ -34,6 +34,27 @@ private Integer reassignNotice; private String orderPositionList; + @ApiModelProperty("司机上一单位置经度") + private String lastLon; + @ApiModelProperty("司机上一单位置纬度") + private String lastLat; + + public String getLastLon() { + return lastLon; + } + + public void setLastLon(String lastLon) { + this.lastLon = lastLon; + } + + public String getLastLat() { + return lastLat; + } + + public void setLastLat(String lastLat) { + this.lastLat = lastLat; + } + public String getOrderPositionList() { return orderPositionList; } -- Gitblit v1.7.1