liujie
2023-08-10 03552ae04973a224b5ccfce34e64999ea6a13d44
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
@@ -316,8 +316,6 @@
            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){
@@ -336,7 +334,6 @@
                            BigDecimal subtract = new BigDecimal(num9).subtract(new BigDecimal(add));
                            order.setOverBadWeatherPrice(subtract.doubleValue());//恶劣天气超出公里费
                        }
                    }
                }
            }
        }
@@ -966,8 +963,26 @@
     * @throws Exception
     */
    @Override
    public ResultUtil transferOrder(Integer uid, Long orderId, String cause) throws Exception {
    public ResultUtil transferOrder(Integer uid, Long orderId, String cause,String phone) throws Exception {
        // 7.13改动
        OrderTransfer orderTransfer = new OrderTransfer();
        Order order = this.selectById(orderId);
        if(phone!=null && !"".equals(phone)) {
            List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("phone", phone));
            if (drivers.size() == 0) {
                return ResultUtil.error("暂无该司机,无法转单");
            } else {
                Driver driver = drivers.get(0);
                if (driver.getServerStatus() != 1) {
                    return ResultUtil.error("司机正在服务中,无法转单。");
                }
                if (driver.getStatus() != 1) {
                    return ResultUtil.error("该司机已被冻结,无法转单。");
                }
                order.setDriverId(driver.getId());
                orderTransfer.setNewDriverId(driver.getId());
            }
        }
        if(order.getDriverId().compareTo(uid) != 0){
            return ResultUtil.error("无权操作");
        }
@@ -978,22 +993,24 @@
        order.setState(201);
        this.updateById(order);
        OrderTransfer orderTransfer = new OrderTransfer();
        orderTransfer.setOrderId(orderId);
        orderTransfer.setOldDriverId(order.getDriverId());
        orderTransfer.setCause(cause);
        orderTransfer.setStatus(1);
        orderTransfer.setCreateTime(new Date());
        orderTransferService.insert(orderTransfer);
        if(phone==null ||"".equals(phone)){
            //开始派单
            Order finalOrder = order;
            new Thread(new Runnable() {
                @Override
                public void run() {
                    pushOrder(finalOrder);
                }
            }).start();
        }
        //开始派单
        Order finalOrder = order;
        new Thread(new Runnable() {
            @Override
            public void run() {
                pushOrder(finalOrder);
            }
        }).start();
        return ResultUtil.success();
    }
@@ -1529,6 +1546,14 @@
        }
        if(type == 3){//收入
            performanceRankingWarppers = revenueService.queryDriverRank(1, time, dayType);
            // 通过司机id 去差订单的优惠金额
            for (PerformanceRankingWarpper performanceRankingWarpper : performanceRankingWarppers) {
                List<Order> orders = this.baseMapper.selectList(new EntityWrapper<Order>().eq("driverId", performanceRankingWarpper.getDriverId()).isNotNull("payMoney"));
                double sum = orders.stream().mapToDouble(Order::getDiscountedPrice).sum();
                double sum1 = orders.stream().mapToDouble(Order::getDiscountAmount).sum();
                performanceRankingWarpper.setAmountOfData(new BigDecimal(performanceRankingWarpper.getAmountOfData()+sum+sum1).setScale(2,RoundingMode.HALF_UP).doubleValue());
            }
        }
        for (int i = 0; i < performanceRankingWarppers.size(); i++) {
            PerformanceRankingWarpper performanceRankingWarpper = performanceRankingWarppers.get(i);