Răsfoiți Sursa

Merge remote-tracking branch 'origin/dev_20260131' into dev_20260131

donglang 1 lună în urmă
părinte
comite
bddb5a4283

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

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

@@ -0,0 +1,73 @@
+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;
+    @Schema(description = "企业id")
+    private String entId;
+}

+ 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.ErrorCodeEnum;
 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.SystemException;
 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.request.AssociatedTrackAddRequest;
 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.repository.*;
 import com.sckw.redis.constant.RedisConstant;
@@ -368,6 +371,71 @@ public class KwfDriverService {
         return truck;
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    public void saveTruckAndAssociate(DriverAssociatedTruckSaveRequest request) {
+        log.info("开始新增车辆档案并关联司机,request={}", JSON.toJSONString(request));
+        
+        String entId = request.getEntId();
+        if (org.apache.commons.lang3.StringUtils.isBlank(entId)) {
+            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(Long.valueOf(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天完成量

+ 10 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsEnterpriseController.java

@@ -380,6 +380,16 @@ public class KwsEnterpriseController {
     public BaseResult<EntInfoResp> queryKwsEnterprise(@RequestBody EntInfoReq req) {
         return BaseResult.success(kwsEntService.queryKwsEnterprise(req));
     }
+
+    /**
+     * 按页面类型查询企业列表
+     */
+    @PostMapping("/queryEnterpriseByPageType")
+    @Operation(summary = "按企业类型查询企业列表")
+    public BaseResult<List<EntInfo>> queryEnterpriseByPageType(@Valid @RequestBody EnterprisePageQueryReqVo req) {
+        return BaseResult.success(kwsEntService.queryEnterpriseByPageType(req));
+    }
+
     /**
      * 查询企业信息
      * @param entName

+ 25 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/EnterprisePageQueryReqVo.java

@@ -0,0 +1,25 @@
+package com.sckw.system.model.vo.req;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 按页面类型查询企业列表请求。
+ */
+@Data
+public class EnterprisePageQueryReqVo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 5625981857792796638L;
+
+    @NotNull(message = "企业类型不能为空")
+    @Schema(description = "企业类型(1供应商,2采购商,3物流属性)")
+    private Integer enterpriseType;
+
+    @Schema(description = "企业名称,支持模糊查询")
+    private String entName;
+}

+ 7 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/repository/KwsEntTypeRepository.java

@@ -33,6 +33,13 @@ public class KwsEntTypeRepository extends ServiceImpl<KwsEntTypeDao, KwsEntType>
                 .in(KwsEntType::getType, entTypes));
     }
 
+
+    public List<KwsEntType> queryByType(Integer entType) {
+        return list(Wrappers.<KwsEntType>lambdaQuery()
+                .eq(BaseModel::getDelFlag,0)
+                .eq(BaseModel::getStatus,0)
+                .eq(KwsEntType::getType, entType));
+    }
     public KwsEntType queryByEntId(String entId) {
         return getOne(Wrappers.<KwsEntType>lambdaQuery().eq(BaseModel::getDelFlag,0)
                 .eq(KwsEntType::getEntId, entId)

+ 32 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java

@@ -1682,6 +1682,38 @@ public class KwsEnterpriseService {
 
     }
 
+    public List<EntInfo> queryEnterpriseByPageType(EnterprisePageQueryReqVo req) {
+        log.info("查询企业信息请求参数:{}", JSON.toJSONString(req));
+
+        List<KwsEntType> entTypes = kwsEntTypeRepository.queryByType(req.getEnterpriseType());
+        if (CollectionUtils.isEmpty(entTypes)) {
+            return Collections.emptyList();
+        }
+
+        Set<Long> entIds = entTypes.stream().map(KwsEntType::getEntId).collect(Collectors.toSet());
+        if (CollectionUtils.isEmpty(entIds)) {
+            return Collections.emptyList();
+        }
+
+        List<KwsEnterprise> enterprises = kwsEnterpriseRepository.list(Wrappers.<KwsEnterprise>lambdaQuery()
+                .eq(BaseModel::getDelFlag, Global.UN_DELETED)
+                .eq(BaseModel::getStatus, Global.NO)
+                .eq(KwsEnterprise::getApproval, ApprovalEnum.OK.getCode())
+                .in(KwsEnterprise::getId, entIds)
+                .like(StringUtils.isNotBlank(req.getEntName()), KwsEnterprise::getFirmName, req.getEntName())
+                .orderByAsc(KwsEnterprise::getFirmName));
+        if (CollectionUtils.isEmpty(enterprises)) {
+            return Collections.emptyList();
+        }
+
+        return enterprises.stream().map(item -> {
+            EntInfo info = new EntInfo();
+            info.setEntId(String.valueOf(item.getId()));
+            info.setEntName(item.getFirmName());
+            return info;
+        }).collect(Collectors.toList());
+    }
+
     public EntInfo queryEnt(String entName) {
         return kwsEnterpriseDao.query(entName);
     }