From e59d2141bc8f9bee8b569deaa54158b3759c431e Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期五, 29 八月 2025 10:42:40 +0800 Subject: [PATCH] bug修改 --- DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 316 ++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 245 insertions(+), 71 deletions(-) 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 7c0f802..1476c81 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 @@ -23,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import javax.annotation.Resource; @@ -32,6 +33,8 @@ import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; +import java.time.Duration; +import java.time.LocalDateTime; import java.util.*; @@ -83,13 +86,17 @@ @Resource private UserInfoMapper userInfoMapper; - + @Autowired + private ITransactionDetailsService transactionDetailsService; @Autowired private ICompanyService companyService; @Autowired private IIncomeService incomeService; - + @Autowired + private ISpecialAreaBillingService specialAreaBillingService; + @Autowired + private PayMoneyUtil payMoneyUtil; @Value("${filePath}") private String filePath; @@ -235,8 +242,16 @@ public void run() { if(pushMinistryOfTransport){ //上传数据 - pushMinistryOfTransportUtil.orderCreate(orderId); - pushMinistryOfTransportUtil.orderMatch(orderId); + try { + pushMinistryOfTransportUtil.orderCreate(orderId); + } catch (Exception e) { + throw new RuntimeException(e); + } + try { + pushMinistryOfTransportUtil.orderMatch(orderId); + } catch (Exception e) { + throw new RuntimeException(e); + } } } }).start(); @@ -286,6 +301,11 @@ }*/ switch (state){ case 3://出发前往预约点 + // 判断是否有其他未完成的单子 + List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.queryByState(orderPrivateCar.getUserId(), 1, 1, 3,4, 5,6); + if(!CollectionUtils.isEmpty(orderPrivateCars)){ + return ResultUtil.error("有未完成的服务订单"); + } orderPrivateCar.setState(3); orderPrivateCar.setSetOutTime(new Date()); systemNoticeService.addSystemNotice(1, "司机已出发,请耐心等待", orderPrivateCar.getUserId()); @@ -323,75 +343,73 @@ // 结束服务时查询轨迹,计算距离 Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); - String tid = gdFalconUtil.selectTerminal(driver.getPhone()); - String result = gdFalconUtil.selectTrack(tid, orderPrivateCar.getTrackId(),1); - - JSONObject jsonObject = JSONObject.parseObject(result); - JSONArray tracks = jsonObject.getJSONArray("tracks"); - Integer counts = jsonObject.getInteger("counts"); - JSONArray points = new JSONArray(); - // 如果一单轨迹点数大于999,需进行分页查询,将所有的点查询出 - if(counts > 999){ - int i = counts%999; - for (int j = 1; j < i + 1; j++) { - String res = gdFalconUtil.selectTrack(tid, orderPrivateCar.getTrackId(),1); - JSONObject jsonObject1 = JSONObject.parseObject(res); - JSONArray tracks1 = jsonObject1.getJSONArray("tracks"); - Object ob = tracks1.get(0); + double sum = 0; + try { + String tid = gdFalconUtil.selectTerminal(driver.getPhone()); + String result = gdFalconUtil.selectTrack(tid, orderPrivateCar.getTrackId(),1); + + JSONObject jsonObject = JSONObject.parseObject(result); + JSONArray tracks = jsonObject.getJSONArray("tracks"); + Integer counts = jsonObject.getInteger("counts"); + JSONArray points = new JSONArray(); + // 如果一单轨迹点数大于999,需进行分页查询,将所有的点查询出 + if(counts > 999){ + int i = counts%999; + for (int j = 1; j < i + 1; j++) { + String res = gdFalconUtil.selectTrack(tid, orderPrivateCar.getTrackId(),1); + JSONObject jsonObject1 = JSONObject.parseObject(res); + JSONArray tracks1 = jsonObject1.getJSONArray("tracks"); + Object ob = tracks1.get(0); + String obs = JSONObject.toJSONString(ob); + JSONObject object = JSONObject.parseObject(obs); + JSONArray point = object.getJSONArray("points"); + points.addAll(point); + } + } + // 轨迹点数小于999,一页查询出即可 + if(counts > 0 && counts < 999){ + Object ob = tracks.get(0); String obs = JSONObject.toJSONString(ob); JSONObject object = JSONObject.parseObject(obs); JSONArray point = object.getJSONArray("points"); points.addAll(point); } - } - // 轨迹点数小于999,一页查询出即可 - if(counts > 0 && counts < 999){ - Object ob = tracks.get(0); - String obs = JSONObject.toJSONString(ob); - JSONObject object = JSONObject.parseObject(obs); - JSONArray point = object.getJSONArray("points"); - points.addAll(point); - } - - System.out.println("轨迹坐标点=====:"+points); - String toLonLat = ""; - double sum = 0; - List<OrderPosition> orderPositions = new ArrayList<>(); - for (Object o : points) { - String s = JSONObject.toJSONString(o); - JSONObject obj = JSONObject.parseObject(s); - String fromLonLat = obj.getString("location"); - String[] split = fromLonLat.split(","); - Long locatetime = obj.getLong("locatetime"); - Date date = new Date(locatetime); - if(date.after(orderPrivateCar.getStartServiceTime()) && date.before(orderPrivateCar.getEndServiceTime())){ - // 封装定位文件里的单个定位对象 - OrderPosition orderPosition = new OrderPosition(); - orderPosition.setOrderId(orderId); - orderPosition.setOrderType(1); - orderPosition.setDriverId(orderPrivateCar.getDriverId()); - orderPosition.setLat(split[1]); - orderPosition.setLon(split[0]); - orderPosition.setAltitude("0"); - orderPosition.setDirectionAngle("0"); - //先计算里程,在存储最新位置 - orderPosition.setInsertTime(new Date()); - orderPositions.add(orderPosition); - if(StringUtils.hasLength(fromLonLat) && StringUtils.hasLength(toLonLat)){ - String[] from = fromLonLat.split(","); - String[] to = toLonLat.split(","); - GlobalCoordinates source = new GlobalCoordinates(Double.valueOf(from[1]), Double.valueOf(from[0])); - GlobalCoordinates target = new GlobalCoordinates(Double.valueOf(to[1]), Double.valueOf(to[0])); - double WGS84 = getDistanceMeter(source, target, Ellipsoid.WGS84); - System.err.println("WGS84坐标系计算结果:"+WGS84 + "米"); - sum += WGS84; + + String toLonLat = ""; + List<OrderPosition> orderPositions = new ArrayList<>(); + for (Object o : points) { + String s = JSONObject.toJSONString(o); + JSONObject obj = JSONObject.parseObject(s); + String fromLonLat = obj.getString("location"); + String[] split = fromLonLat.split(","); + Long locatetime = obj.getLong("locatetime"); + Date date = new Date(locatetime); + if(date.after(orderPrivateCar.getStartServiceTime()) && date.before(orderPrivateCar.getEndServiceTime())){ + // 封装定位文件里的单个定位对象 + OrderPosition orderPosition = new OrderPosition(); + orderPosition.setOrderId(orderId); + orderPosition.setOrderType(1); + orderPosition.setDriverId(orderPrivateCar.getDriverId()); + orderPosition.setLat(split[1]); + orderPosition.setLon(split[0]); + orderPosition.setAltitude("0"); + orderPosition.setDirectionAngle("0"); + //先计算里程,在存储最新位置 + orderPosition.setInsertTime(new Date()); + orderPositions.add(orderPosition); + if(StringUtils.hasLength(fromLonLat) && StringUtils.hasLength(toLonLat)){ + String[] from = fromLonLat.split(","); + String[] to = toLonLat.split(","); + GlobalCoordinates source = new GlobalCoordinates(Double.valueOf(from[1]), Double.valueOf(from[0])); + GlobalCoordinates target = new GlobalCoordinates(Double.valueOf(to[1]), Double.valueOf(to[0])); + double WGS84 = getDistanceMeter(source, target, Ellipsoid.WGS84); + sum += WGS84; + } + toLonLat = fromLonLat; } - toLonLat = fromLonLat; } - } - System.err.println("======服务里程======"+sum); - if(counts < 5){ - orderPrivateCar.setMileage(sum); + + //存储轨迹 // 将数据存储到文件中 File file = new File(filePath + orderId + "_" + 1 + ".txt"); if(!file.exists()){ @@ -403,7 +421,26 @@ out.write(JSON.toJSONString(orderPositions)); out.flush(); out.close(); + }catch (Exception e){ + e.printStackTrace(); + System.err.println("查询高德轨迹出错,使用本地轨迹计算"); + List<OrderPosition> list = orderPositionService.queryPosition(orderId, 1); + String fromLonLat = ""; + for (OrderPosition orderPosition : list) { + String toLonLat = orderPosition.getLon() + "," + orderPosition.getLat(); + if(StringUtils.hasLength(fromLonLat) && StringUtils.hasLength(toLonLat)){ + String[] from = fromLonLat.split(","); + String[] to = toLonLat.split(","); + GlobalCoordinates source = new GlobalCoordinates(Double.valueOf(from[1]), Double.valueOf(from[0])); + GlobalCoordinates target = new GlobalCoordinates(Double.valueOf(to[1]), Double.valueOf(to[0])); + double WGS84 = getDistanceMeter(source, target, Ellipsoid.WGS84); + sum += WGS84; + } + fromLonLat = toLonLat; + } } + orderPrivateCar.setMileage(sum); + orderPrivateCar.setIsAbnormal(0); break; } this.updateById(orderPrivateCar); @@ -439,6 +476,9 @@ @Override public ResultUtil confirmFees(Integer orderId, Integer type, Double parkingFee, Double crossingFee) throws Exception { OrderPrivateCar orderPrivateCar = this.selectById(orderId); + if(Objects.nonNull(orderPrivateCar.getPriceAuditState()) && orderPrivateCar.getPriceAuditState() == 1){ + return ResultUtil.error("待平台审核中"); + } if(orderPrivateCar.getState() != 5){ return ResultUtil.error("异常操作,请刷新订单"); } @@ -446,6 +486,47 @@ orderPrivateCar.setArriveTime(orderPrivateCar.getStartServiceTime()); } orderPrivateCar = this.setMoney(orderPrivateCar, 0D, 0D);//计算费用 + + // 查询起点或者终点在特殊区域中 + List<SpecialAreaBilling> specialAreaBillings = specialAreaBillingService.selectList(new EntityWrapper<SpecialAreaBilling>() + .eq("state", 1)); + if(!CollectionUtils.isEmpty(specialAreaBillings)){ + // 判断起点或者终点在特殊区域中 + Iterator<SpecialAreaBilling> iterator = specialAreaBillings.iterator(); + while (iterator.hasNext()) { + SpecialAreaBilling specialAreaBilling = iterator.next(); + // 起点 + Double startLon = orderPrivateCar.getStartLon(); + Double startLat = orderPrivateCar.getStartLat(); + boolean start = ElectricFenceUtil.monitorElectricFenc(specialAreaBilling.getCoordinate(), startLon + "," + startLat); + // 终点 + Double endLon = orderPrivateCar.getEndLon(); + Double endLat = orderPrivateCar.getEndLat(); + boolean end = ElectricFenceUtil.monitorElectricFenc(specialAreaBilling.getCoordinate(), endLon + "," + endLat); + if(!start && !end){ + iterator.remove(); + } + } + if(!CollectionUtils.isEmpty(specialAreaBillings)){ + // 拿到价格系数最高的特殊区域 + specialAreaBillings.sort(new Comparator<SpecialAreaBilling>() { + @Override + public int compare(SpecialAreaBilling o1, SpecialAreaBilling o2) { + return o2.getPriceCoefficient().compareTo(o1.getPriceCoefficient()); + } + }); + BigDecimal priceCoefficient = specialAreaBillings.get(0).getPriceCoefficient(); + orderPrivateCar.setOrderMoney(Objects.nonNull(orderPrivateCar.getOrderMoney())?new BigDecimal(orderPrivateCar.getOrderMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D); + orderPrivateCar.setStartMoney(Objects.nonNull(orderPrivateCar.getStartMoney())?new BigDecimal(orderPrivateCar.getStartMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D); + orderPrivateCar.setMileageMoney(Objects.nonNull(orderPrivateCar.getMileageMoney())?new BigDecimal(orderPrivateCar.getMileageMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D); + orderPrivateCar.setDurationMoney(Objects.nonNull(orderPrivateCar.getDurationMoney())?new BigDecimal(orderPrivateCar.getDurationMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D); + orderPrivateCar.setWaitMoney(Objects.nonNull(orderPrivateCar.getWaitMoney())?new BigDecimal(orderPrivateCar.getWaitMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D); + orderPrivateCar.setLongDistanceMoney(Objects.nonNull(orderPrivateCar.getLongDistanceMoney())?new BigDecimal(orderPrivateCar.getLongDistanceMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D); + orderPrivateCar.setParkMoney(Objects.nonNull(orderPrivateCar.getParkMoney())?new BigDecimal(orderPrivateCar.getParkMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D); + orderPrivateCar.setRoadTollMoney(Objects.nonNull(orderPrivateCar.getRoadTollMoney())?new BigDecimal(orderPrivateCar.getRoadTollMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D); + } + } + orderPrivateCar.setPayManner(type); orderPrivateCar.setParkMoney(null == parkingFee ? 0D : parkingFee); orderPrivateCar.setRoadTollMoney(null == crossingFee ? 0D : crossingFee); @@ -456,7 +537,7 @@ if(orderNumber<=0){//判断是否是首单 //判断是否免单 UserInfo userInfo = userInfoMapper.selectById(orderPrivateCar.getUserId()); - if(userInfo.getFreeMoney().doubleValue()>0d){ + if(Objects.nonNull(userInfo.getFreeMoney()) && userInfo.getFreeMoney().doubleValue()>0d){ if(orderPrivateCar.getOrderMoney()<=userInfo.getFreeMoney().doubleValue()){ orderPrivateCar.setState(8); orderPrivateCar.setIsFree(2); @@ -475,12 +556,12 @@ c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN); } incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue()); - incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue()); Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); driverService.updateById(driver); + incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(),driver.getBalance()); }else{ orderPrivateCar.setState(7); orderPrivateCar.setOrderMoney(orderPrivateCar.getOrderMoney()-userInfo.getFreeMoney().doubleValue()); @@ -496,10 +577,72 @@ orderPrivateCar.setState(7); } + 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) { + // 退款 + if (orderPrivateCar.getPayType() == 1 && orderPrivateCar.getOrderMoney() != 0) {//微信退款 + // 微信退款 + payMoneyUtil.wxRefund(orderPrivateCar.getTransactionId(), orderPrivateCar.getOrderNum(), String.valueOf(orderPrivateCar.getPaymentAdvanceMoney()), String.valueOf(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).subtract(new BigDecimal(orderPrivateCar.getOrderMoney()))), "/base/transferWXNotify"); + orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getOrderMoney()).doubleValue()); + } + if (orderPrivateCar.getPayType() == 2 && orderPrivateCar.getOrderMoney() != 0) {//支付宝退款 + // 支付宝退款 + payMoneyUtil.aliRefund(orderPrivateCar.getTransactionId(), String.valueOf(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).subtract(new BigDecimal(orderPrivateCar.getOrderMoney())).multiply(new BigDecimal(100)))); + orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getOrderMoney()).doubleValue()); + } + if (orderPrivateCar.getPayType() == 3 && orderPrivateCar.getOrderMoney() != 0) {//余额支付 + BigDecimal refundMoney = new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).subtract(new BigDecimal(orderPrivateCar.getOrderMoney())); + // 余额退款 + UserInfo userInfo = userInfoMapper.selectById(orderPrivateCar.getUserId()); + userInfo.setBalance(new BigDecimal(userInfo.getBalance()).add(refundMoney).doubleValue()); + userInfoMapper.updateById(userInfo); + //添加交易明细 + transactionDetailsService.saveData(orderPrivateCar.getUserId(), "专车差价退款", refundMoney.doubleValue(), 2, 1, 1, 1, orderPrivateCar.getId()); + } + } else { + orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).doubleValue()); + } + //添加已收入明细 + Company company = companyService.selectById(orderPrivateCar.getCompanyId()); + Double speMoney = company.getSpeMoney(); + BigDecimal d = null;//企业收入 + BigDecimal c = null;//司机收入 + if(company.getIsSpeFixedOrProportional() == 2){//固定 + d = new BigDecimal(speMoney); + c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机 + if(c.compareTo(BigDecimal.ZERO)<1){ + c = BigDecimal.ZERO; + } + } + if(company.getIsSpeFixedOrProportional() == 1){//比例 + Double price = orderPrivateCar.getStartMoney() + orderPrivateCar.getMileageMoney() + orderPrivateCar.getWaitMoney() + orderPrivateCar.getDurationMoney() + orderPrivateCar.getLongDistanceMoney(); + d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN))).setScale(2, BigDecimal.ROUND_HALF_EVEN); + c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN); + } + incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue()); + Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); + driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); + driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); + driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); + driverService.updateById(driver); + incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getBalance()); + }else { + orderPrivateCar.setState(7); + } + // Map<String, String> map = chinaMobileUtil.midAxbUnBindSend(orderPrivateCar.getBindId(),orderPrivateCar.getTelX()); // if(String.valueOf(map.get("code")).equals("200")){ // orderPrivateCar.setTelX(""); // orderPrivateCar.setBindId(""); +// } + // 判断预估金额和订单金额差异是否大于3元 + if(BigDecimal.valueOf(orderPrivateCar.getOrderMoney()).subtract(new BigDecimal(orderPrivateCar.getEstimatedPrice())).abs().doubleValue() > 3){ + orderPrivateCar.setIsException(1); + } +// if(orderPrivateCar.getIsException() == 1){ +// orderPrivateCar.setState(13); // } this.updateById(orderPrivateCar); @@ -568,6 +711,14 @@ map.put("couponMoney", orderPrivateCar.getCouponMoney());//优惠券抵扣金额 map.put("discountMoney", orderPrivateCar.getDiscountMoney());//折扣抵扣金额 map.put("discount", orderPrivateCar.getDiscount());//折扣 + if(Objects.isNull(orderPrivateCar.getEstimatedPrice())){ + orderPrivateCar.setEstimatedPrice(0D); + } + if(BigDecimal.valueOf(orderPrivateCar.getOrderMoney()).subtract(new BigDecimal(orderPrivateCar.getEstimatedPrice())).abs().doubleValue() > 3){ + orderPrivateCar.setIsException(1); + } + map.put("estimatedPrice", orderPrivateCar.getEstimatedPrice()); + map.put("isException", orderPrivateCar.getIsException());//是否异常 return map; } @@ -580,6 +731,16 @@ @Override public boolean calculateMileage(Integer orderId, String lon, String lat) throws Exception { OrderPrivateCar orderPrivateCar = this.selectById(orderId); + // 判断距离上一次推送时间是否超过1分钟 + if(Objects.nonNull(orderPrivateCar.getLastPushTime())){ + LocalDateTime now = LocalDateTime.now(); + if(Duration.between(orderPrivateCar.getLastPushTime(), now).toMinutes() > 1){ + orderPrivateCar.setIsException(1); + } + orderPrivateCar.setLastPushTime(now); + }else { + orderPrivateCar.setLastPushTime(LocalDateTime.now()); + } OrderPosition orderPosition = orderPositionService.queryNew(orderId, 1); String now = lon + "," + lat; String old = null; @@ -590,10 +751,10 @@ this.updateById(orderPrivateCar); return true;//第一条数据不作处理,直接存储 } - Map<String, String> distance = gdMapElectricFenceUtil.getDistance(now, old, 0);//直线距离 + Map<String, Double> distance = GeodesyUtil.getDistance(now, old);//直线距离 if(null != distance){ - String distance1 = distance.get("distance"); - if(Double.valueOf(distance1) > 50 && orderPrivateCar.getState()==5/* && orderPosition.getInsertTime().getTime()>=orderPrivateCar.getBoardingTime().getTime()*/){//大于50米表示在移动 + Double distance1 = distance.get("WGS84"); + if(distance1 > 50 && orderPrivateCar.getState()==5){//大于50米表示在移动 orderPrivateCar.setMileage(new BigDecimal(orderPrivateCar.getMileage()).add(new BigDecimal(distance1)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); this.updateById(orderPrivateCar); return true; @@ -841,4 +1002,17 @@ orderPrivateCar.setTrackId(String.valueOf(trackId)); this.updateById(orderPrivateCar); } + + @Override + public void updatePrice(Integer orderId, Integer priceType, BigDecimal updatePrice) { + OrderPrivateCar orderPrivateCar = this.selectById(orderId); + orderPrivateCar.setPriceType(priceType); + orderPrivateCar.setUpdatePrice(updatePrice); + orderPrivateCar.setPriceAuditState(1); + orderPrivateCar.setState(6); + this.updateById(orderPrivateCar); + // 推送新的价格给用户 + pushUtil.pushOrderMoney(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, updatePrice, 0); + pushUtil.pushOrderMoney(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, updatePrice, 0); + } } -- Gitblit v1.7.1