wujianwei
2026-03-26 c719cf1cf7890dc0a35a2e5d9016ffbd2820a138
tms/src/main/java/com/ruoyi/tms/service/impl/TmsTripServiceImpl.java
@@ -1,6 +1,7 @@
package com.ruoyi.tms.service.impl;
import java.io.File;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
@@ -156,13 +157,42 @@
        if (tmsDispatchOrder.getStatus() != 1 && tmsDispatchOrder.getStatus() != 2){
            throw new RuntimeException("调度单数据状态异常");
        }
        TmsTrip tmsTrip1 = tmsTripMapper.selectOne(new LambdaQueryWrapper<TmsTrip>()
                .eq(TmsTrip::getDispatchOrderId, dispatchOrderId)
                .orderByDesc(TmsTrip::getId)
                .last("limit 1")
        );
        if (tmsTrip1 != null){
            BigDecimal currentOdometer = tmsTrip.getOdometer();
            BigDecimal lastOdometer = tmsTrip1.getOdometer();
            if (currentOdometer!=null && lastOdometer != null && currentOdometer.compareTo(lastOdometer) < 0) {
                throw new IllegalArgumentException("车辆里程数异常,当前里程必须大于上一行程");
            }
        }
        TmsDriver tmsDriver = tmsDriverMapper.selectTmsDriverById(tmsDispatchOrder.getMainDriverId());
        if (tmsDriver == null){
            throw new RuntimeException("未找到司机数据");
        }
        Integer status = tmsDispatchOrder.getStatus();
        if (status == 1){
            tmsDispatchOrder.setStatus(2);
        }
        if (tmsTrip.getTripType() == 8 || tmsTrip.getTripType() == 100){
            if (status == 2){
                tmsDispatchOrder.setStatus(3);
                tmsDispatchOrder.setOkTime(DateUtils.getNowDate());
                tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername());
            }
        }
        if (tmsTrip.getTripType() == 5){
            tmsDispatchOrder.setIscc(tmsTrip.getIscc());
        }
        if (tmsTrip.getTripType() == 100){
            tmsDispatchOrder.setIsfk(0);
        }
        tmsDispatchOrder.setStatus(2);
        tmsDispatchOrderMapper.updateTmsDispatchOrder(tmsDispatchOrder);
        tmsTrip.setDriverName(tmsDispatchOrder.getMainDriverName());
        tmsTrip.setVehicleId(tmsDispatchOrder.getVehicleId());