chenxiaofei 2 месяцев назад
Родитель
Сommit
8c62571bcd

+ 8 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfDriverController.java

@@ -16,6 +16,7 @@ import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.fleet.model.dto.*;
 import com.sckw.fleet.model.dto.*;
 import com.sckw.fleet.model.request.AssociatedTrackAddRequest;
 import com.sckw.fleet.model.request.AssociatedTrackAddRequest;
 import com.sckw.fleet.model.request.AssociatedTrackRequest;
 import com.sckw.fleet.model.request.AssociatedTrackRequest;
+import com.sckw.fleet.model.request.DriverAssociatedTruckSaveRequest;
 import com.sckw.fleet.model.vo.KwfDriverAssociatedTrackVO;
 import com.sckw.fleet.model.vo.KwfDriverAssociatedTrackVO;
 import com.sckw.fleet.model.vo.KwfDriverDetailVo;
 import com.sckw.fleet.model.vo.KwfDriverDetailVo;
 import com.sckw.fleet.model.vo.KwfDriverVo;
 import com.sckw.fleet.model.vo.KwfDriverVo;
@@ -308,6 +309,13 @@ public class KwfDriverController {
         return BaseResult.success();
         return BaseResult.success();
     }
     }
 
 
+    @Operation(summary = "保存车辆并关联司机", description = "保存车辆档案并关联司机")
+    @PostMapping("/saveTruckAndAssociate")
+    public BaseResult saveTruckAndAssociate(@RequestBody @Valid DriverAssociatedTruckSaveRequest param){
+        driverService.saveTruckAndAssociate(param);
+        return BaseResult.success();
+    }
+
     /**
     /**
      * 删除司机关联车辆
      * 删除司机关联车辆
      *
      *

+ 71 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/request/DriverAssociatedTruckSaveRequest.java

@@ -0,0 +1,71 @@
+package com.sckw.fleet.model.request;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 司机侧新增车辆并关联请求
+ */
+@Data
+public class DriverAssociatedTruckSaveRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -5419891383273186634L;
+
+    @Schema(description = "司机id")
+    @NotNull(message = "司机id不能为空")
+    private Long driverId;
+
+    @Schema(description = "车牌号")
+    @NotBlank(message = "车牌号不能为空")
+    private String truckNo;
+
+    @Schema(description = "车辆类型")
+    @NotNull(message = "车辆类型不能为空")
+    private Integer type;
+
+    @Schema(description = "车轴配置id")
+    @NotNull(message = "车辆轴数不能为空")
+    private Long truckAxleId;
+
+    @Schema(description = "发动机号")
+    @NotBlank(message = "发动机号不能为空")
+    private String engineNo;
+
+    @Schema(description = "能源类型")
+    @NotNull(message = "能源类型不能为空")
+    private Integer energyType;
+
+    @Schema(description = "排放标准")
+    @NotNull(message = "排放标准不能为空")
+    private Integer eev;
+
+    @Schema(description = "货车行驶证")
+    @NotBlank(message = "货车行驶证不能为空")
+    private String truckLicense;
+
+    @Schema(description = "环保清单")
+    @NotBlank(message = "环保清单不能为空")
+    private String environmentalList;
+
+    @Schema(description = "道路运输许可证")
+    @NotBlank(message = "道路运输许可证不能为空")
+    private String transportLicense;
+
+    @Schema(description = "车队id")
+    private Long fleetId;
+
+    @Schema(description = "vin")
+    private String vin;
+
+    @Schema(description = "品牌")
+    private String brand;
+
+    @Schema(description = "定位设备")
+    private String positionDevice;
+}

+ 68 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfDriverService.java

@@ -12,6 +12,7 @@ import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.common.enums.enums.ErrorCodeEnum;
 import com.sckw.core.common.enums.enums.ErrorCodeEnum;
 import com.sckw.core.common.enums.enums.FileEnum;
 import com.sckw.core.common.enums.enums.FileEnum;
+import com.sckw.core.exception.BusinessException;
 import com.sckw.core.exception.BusinessPlatfromException;
 import com.sckw.core.exception.BusinessPlatfromException;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.base.BaseModel;
 import com.sckw.core.model.base.BaseModel;
@@ -30,6 +31,8 @@ import com.sckw.fleet.model.*;
 import com.sckw.fleet.model.dto.*;
 import com.sckw.fleet.model.dto.*;
 import com.sckw.fleet.model.request.AssociatedTrackAddRequest;
 import com.sckw.fleet.model.request.AssociatedTrackAddRequest;
 import com.sckw.fleet.model.request.AssociatedTrackRequest;
 import com.sckw.fleet.model.request.AssociatedTrackRequest;
+import com.sckw.fleet.model.request.DriverAssociatedTruckSaveRequest;
+import com.sckw.fleet.model.request.TruckSaveParam;
 import com.sckw.fleet.model.vo.*;
 import com.sckw.fleet.model.vo.*;
 import com.sckw.fleet.repository.*;
 import com.sckw.fleet.repository.*;
 import com.sckw.redis.constant.RedisConstant;
 import com.sckw.redis.constant.RedisConstant;
@@ -368,6 +371,71 @@ public class KwfDriverService {
         return truck;
         return truck;
     }
     }
 
 
+    @Transactional(rollbackFor = Exception.class)
+    public void saveTruckAndAssociate(DriverAssociatedTruckSaveRequest request) {
+        log.info("开始新增车辆档案并关联司机,request={}", JSON.toJSONString(request));
+        
+        Long entId = LoginUserHolder.getEntId();
+        if (entId == null) {
+            log.error("新增车辆档案失败:企业id不能为空");
+            throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "企业id不能为空");
+        }
+
+        // 构建车辆保存参数
+        TruckSaveParam truckSaveParam = new TruckSaveParam();
+        truckSaveParam.setTruckNo(request.getTruckNo());
+        truckSaveParam.setType(request.getType());
+        truckSaveParam.setCarAxis(String.valueOf(request.getTruckAxleId()));
+        truckSaveParam.setEnergyType(request.getEnergyType());
+        truckSaveParam.setEev(request.getEev());
+        truckSaveParam.setEngineNo(request.getEngineNo());
+        truckSaveParam.setTruckLicense(request.getTruckLicense());
+        truckSaveParam.setTransportLicense(request.getTransportLicense());
+        truckSaveParam.setEnvironmentalList(request.getEnvironmentalList());
+        truckSaveParam.setFleetId(request.getFleetId());
+        truckSaveParam.setVin(request.getVin());
+        truckSaveParam.setBrand(request.getBrand());
+        truckSaveParam.setPositionDevice(request.getPositionDevice());
+        
+        log.info("调用truckService.saveTruck保存车辆档案,truckNo={}", request.getTruckNo());
+        try {
+            truckService.saveTruck(truckSaveParam);
+            log.info("车辆档案保存成功,truckNo={}", request.getTruckNo());
+        } catch (Exception e) {
+            log.error("车辆档案保存异常,truckNo={}", request.getTruckNo(), e);
+            throw new BusinessException("车辆档案保存异常");
+        }
+
+        // 查询刚保存的车辆信息
+        log.info("查询刚保存的车辆信息,truckNo={}", request.getTruckNo());
+        KwfTruck truck = truckRepository.getOne(Wrappers.<KwfTruck>lambdaQuery()
+                .eq(KwfTruck::getTruckNo, request.getTruckNo())
+                .last("limit 1"));
+        
+        if (truck == null) {
+            log.error("车辆档案保存后查询失败,truckNo={}", request.getTruckNo());
+            throw new BusinessPlatfromException(ErrorCodeEnum.TRUCK_NOT_FOUND, "车辆档案保存失败");
+        }
+        log.info("查询车辆信息成功,truckId={}, truckNo={}", truck.getId(), truck.getTruckNo());
+
+        // 构建关联请求并执行关联
+        AssociatedTrackAddRequest associatedTrackAddRequest = new AssociatedTrackAddRequest();
+        associatedTrackAddRequest.setEntId(entId);
+        associatedTrackAddRequest.setDriverId(request.getDriverId());
+        associatedTrackAddRequest.setTruckNo(truck.getTruckNo());
+        associatedTrackAddRequest.setTruckAxleId(request.getTruckAxleId());
+        
+        log.info("开始关联司机与车辆,driverId={}, truckNo={}", request.getDriverId(), truck.getTruckNo());
+        try {
+            addAssociatedTrack(associatedTrackAddRequest);
+            log.info("司机与车辆关联成功,driverId={}, truckNo={}", request.getDriverId(), truck.getTruckNo());
+        } catch (Exception e) {
+            log.error("司机与车辆关联异常,driverId={}, truckNo={}", request.getDriverId(), truck.getTruckNo(), e);
+            throw new BusinessException( "司机与车辆关联异常");
+        }
+        
+        log.info("新增车辆档案并关联司机流程结束");
+    }
 
 
     /**
     /**
      * 查询司机的当天完成量、7天完成量、30天完成量
      * 查询司机的当天完成量、7天完成量、30天完成量