一人可多车,一车只能挂一人

This commit is contained in:
2026-05-20 09:36:35 +08:00
parent 0c2e40500d
commit c5cf3f8a2a
5 changed files with 354 additions and 105 deletions

View File

@@ -737,54 +737,20 @@ public class HotDriverServiceImpl implements IHotDriverService {
removeDriverPortFromUser(oldDriver.getPhone(), oldDriver.getCompanyId()); removeDriverPortFromUser(oldDriver.getPhone(), oldDriver.getCompanyId());
} }
// 处理车牌号变更:同步车辆信息的当前驾驶员 Set<String> impactedDriverIds = new LinkedHashSet<>();
String oldPlate = oldDriver != null ? oldDriver.getPlateNumber() : null; impactedDriverIds.add(driverId);
String newPlate = update.getPlateNumber(); if (oldDriver != null) {
if (!StringUtils.equals(oldPlate, newPlate)) { impactedDriverIds.addAll(findOtherDriversBoundToVehicles(companyId, splitCsv(oldDriver.getVehicleId()), driverId));
// 1. 如果旧车牌存在,从旧车辆的当前驾驶员列表中移除当前司机
if (StringUtils.isNotBlank(oldPlate)) {
HotVehicle oldVehicle = vehicleMapper.selectOne(new LambdaQueryWrapper<HotVehicle>()
.eq(HotVehicle::getPlateNumber, oldPlate)
.eq(HotVehicle::getCompanyId, update.getCompanyId()));
if (oldVehicle != null && StringUtils.isNotBlank(oldVehicle.getCurrentDriver())) {
List<String> driverList = new ArrayList<>(Arrays.asList(oldVehicle.getCurrentDriver().split(",")));
if (driverList.remove(driverId)) {
String newDriverStr = String.join(",", driverList);
// 如果结果为空字符串设为null或空
vehicleMapper.update(null,
new LambdaUpdateWrapper<HotVehicle>()
.set(HotVehicle::getCurrentDriver, StringUtils.isBlank(newDriverStr) ? null : newDriverStr)
.eq(HotVehicle::getId, oldVehicle.getId()));
}
}
}
// 2. 如果新车牌存在,将当前司机追加到新车辆的当前驾驶员列表
if (StringUtils.isNotBlank(newPlate)) {
HotVehicle newVehicle = vehicleMapper.selectOne(new LambdaQueryWrapper<HotVehicle>()
.eq(HotVehicle::getPlateNumber, newPlate)
.eq(HotVehicle::getCompanyId, update.getCompanyId()));
if (newVehicle != null) {
String currentDriverStr = newVehicle.getCurrentDriver();
List<String> driverList = StringUtils.isBlank(currentDriverStr)
? new ArrayList<>()
: new ArrayList<>(Arrays.asList(currentDriverStr.split(",")));
// 避免重复添加
if (!driverList.contains(driverId)) {
driverList.add(driverId);
String newDriverStr = String.join(",", driverList);
vehicleMapper.update(null,
new LambdaUpdateWrapper<HotVehicle>()
.set(HotVehicle::getCurrentDriver, newDriverStr)
.eq(HotVehicle::getId, newVehicle.getId()));
}
}
}
} }
boolean bindingSpecified = bo.getVehicleId() != null || bo.getPlateNumber() != null;
if (bindingSpecified) {
List<HotVehicle> targetVehicles = resolveDriverTargetVehicles(bo, companyId);
impactedDriverIds.addAll(syncVehicleBindingsForDriver(driverId, companyId, targetVehicles));
}
syncDriverVehicleRelationsByDriverIds(companyId, impactedDriverIds);
// 同步最新的驾驶员信息到用户表(包含状态变更、基本信息变更) // 同步最新的驾驶员信息到用户表(包含状态变更、基本信息变更)
HotDriver newDriver = baseMapper.selectById(driverId); HotDriver newDriver = baseMapper.selectById(driverId);
syncDriverToSysUser(newDriver, null); syncDriverToSysUser(newDriver, null);
@@ -933,6 +899,168 @@ public class HotDriverServiceImpl implements IHotDriverService {
} }
} }
private List<HotVehicle> resolveDriverTargetVehicles(HotDriverBo bo, Long companyId) {
List<String> vehicleIds = splitCsv(bo.getVehicleId());
if (CollUtil.isNotEmpty(vehicleIds)) {
List<HotVehicle> vehicles = vehicleMapper.selectList(Wrappers.<HotVehicle>lambdaQuery()
.eq(HotVehicle::getCompanyId, companyId)
.in(HotVehicle::getId, vehicleIds)
.eq(HotVehicle::getIsDeleted, 0L));
validateVehicleSelection(vehicleIds, vehicles, true);
return vehicles;
}
List<String> plateNumbers = splitCsv(bo.getPlateNumber());
if (CollUtil.isEmpty(plateNumbers)) {
return new ArrayList<>();
}
List<HotVehicle> vehicles = vehicleMapper.selectList(Wrappers.<HotVehicle>lambdaQuery()
.eq(HotVehicle::getCompanyId, companyId)
.in(HotVehicle::getPlateNumber, plateNumbers)
.eq(HotVehicle::getIsDeleted, 0L));
validateVehicleSelection(plateNumbers, vehicles, false);
return vehicles;
}
private void validateVehicleSelection(List<String> expectedValues, List<HotVehicle> vehicles, boolean useVehicleId) {
Set<String> actualValues = vehicles.stream()
.map(vehicle -> useVehicleId ? vehicle.getId() : vehicle.getPlateNumber())
.filter(StringUtils::isNotBlank)
.collect(Collectors.toSet());
List<String> missingValues = expectedValues.stream()
.filter(value -> !actualValues.contains(value))
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(missingValues)) {
throw new ServiceException(useVehicleId
? "存在未找到的车辆ID" + String.join(",", missingValues)
: "存在未找到的车牌号:" + String.join(",", missingValues));
}
}
private Set<String> syncVehicleBindingsForDriver(String driverId, Long companyId, List<HotVehicle> targetVehicles) {
Set<String> impactedDriverIds = new LinkedHashSet<>();
impactedDriverIds.add(driverId);
if (StringUtils.isBlank(driverId) || companyId == null) {
return impactedDriverIds;
}
Set<String> targetVehicleIds = targetVehicles.stream()
.map(HotVehicle::getId)
.filter(StringUtils::isNotBlank)
.collect(Collectors.toCollection(LinkedHashSet::new));
List<HotVehicle> companyVehicles = vehicleMapper.selectList(Wrappers.<HotVehicle>lambdaQuery()
.eq(HotVehicle::getCompanyId, companyId)
.eq(HotVehicle::getIsDeleted, 0L));
for (HotVehicle vehicle : companyVehicles) {
List<String> currentDrivers = splitCsv(vehicle.getCurrentDriver());
boolean currentlyBoundToDriver = currentDrivers.contains(driverId);
boolean shouldBindToDriver = targetVehicleIds.contains(vehicle.getId());
if (!currentlyBoundToDriver && !shouldBindToDriver) {
continue;
}
if (shouldBindToDriver) {
impactedDriverIds.addAll(currentDrivers);
if (!currentlyBoundToDriver || currentDrivers.size() != 1) {
vehicleMapper.update(null, new LambdaUpdateWrapper<HotVehicle>()
.set(HotVehicle::getCurrentDriver, driverId)
.eq(HotVehicle::getId, vehicle.getId())
.eq(HotVehicle::getCompanyId, companyId));
}
continue;
}
List<String> remainingDrivers = new ArrayList<>(currentDrivers);
remainingDrivers.removeIf(driverId::equals);
impactedDriverIds.addAll(remainingDrivers);
vehicleMapper.update(null, new LambdaUpdateWrapper<HotVehicle>()
.set(HotVehicle::getCurrentDriver, normalizeSingleBindingValue(remainingDrivers))
.eq(HotVehicle::getId, vehicle.getId())
.eq(HotVehicle::getCompanyId, companyId));
}
return impactedDriverIds;
}
private Set<String> findOtherDriversBoundToVehicles(Long companyId, Collection<String> vehicleIds, String excludeDriverId) {
Set<String> driverIds = new LinkedHashSet<>();
if (companyId == null || CollUtil.isEmpty(vehicleIds)) {
return driverIds;
}
List<HotVehicle> vehicles = vehicleMapper.selectList(Wrappers.<HotVehicle>lambdaQuery()
.eq(HotVehicle::getCompanyId, companyId)
.in(HotVehicle::getId, vehicleIds)
.eq(HotVehicle::getIsDeleted, 0L));
for (HotVehicle vehicle : vehicles) {
for (String driverId : splitCsv(vehicle.getCurrentDriver())) {
if (!StringUtils.equals(driverId, excludeDriverId)) {
driverIds.add(driverId);
}
}
}
return driverIds;
}
private void syncDriverVehicleRelationsByDriverIds(Long companyId, Collection<String> driverIds) {
if (companyId == null || CollUtil.isEmpty(driverIds)) {
return;
}
List<HotVehicle> vehicles = vehicleMapper.selectList(Wrappers.<HotVehicle>lambdaQuery()
.eq(HotVehicle::getCompanyId, companyId)
.eq(HotVehicle::getIsDeleted, 0L));
for (String driverId : driverIds) {
if (StringUtils.isBlank(driverId)) {
continue;
}
List<String> vehicleIds = new ArrayList<>();
List<String> plateNumbers = new ArrayList<>();
for (HotVehicle vehicle : vehicles) {
if (!splitCsv(vehicle.getCurrentDriver()).contains(driverId)) {
continue;
}
vehicleIds.add(vehicle.getId());
plateNumbers.add(vehicle.getPlateNumber());
}
driverMapper.update(null, new LambdaUpdateWrapper<HotDriver>()
.set(HotDriver::getVehicleId, joinCsv(vehicleIds))
.set(HotDriver::getPlateNumber, joinCsv(plateNumbers))
.eq(HotDriver::getId, driverId)
.eq(HotDriver::getCompanyId, companyId));
}
}
private List<String> splitCsv(String value) {
if (StringUtils.isBlank(value)) {
return new ArrayList<>();
}
return Arrays.stream(value.split(","))
.map(String::trim)
.filter(StringUtils::isNotBlank)
.distinct()
.collect(Collectors.toList());
}
private String joinCsv(Collection<String> values) {
if (CollUtil.isEmpty(values)) {
return null;
}
return values.stream()
.filter(StringUtils::isNotBlank)
.distinct()
.collect(Collectors.joining(","));
}
private String normalizeSingleBindingValue(Collection<String> values) {
if (CollUtil.isEmpty(values)) {
return null;
}
return values.stream()
.filter(StringUtils::isNotBlank)
.findFirst()
.orElse(null);
}
/** /**
* 保存驾驶员家庭成员 * 保存驾驶员家庭成员
*/ */
@@ -997,6 +1125,25 @@ public class HotDriverServiceImpl implements IHotDriverService {
return; return;
} }
Set<String> impactedDriverIds = new LinkedHashSet<>();
impactedDriverIds.add(driverId);
List<HotVehicle> vehicles = vehicleMapper.selectList(Wrappers.<HotVehicle>lambdaQuery()
.eq(HotVehicle::getCompanyId, companyId)
.eq(HotVehicle::getIsDeleted, 0L));
for (HotVehicle vehicle : vehicles) {
List<String> driverIds = splitCsv(vehicle.getCurrentDriver());
if (!driverIds.contains(driverId)) {
continue;
}
driverIds.removeIf(driverId::equals);
impactedDriverIds.addAll(driverIds);
vehicleMapper.update(null, new LambdaUpdateWrapper<HotVehicle>()
.set(HotVehicle::getCurrentDriver, normalizeSingleBindingValue(driverIds))
.eq(HotVehicle::getId, vehicle.getId())
.eq(HotVehicle::getCompanyId, companyId));
}
syncDriverVehicleRelationsByDriverIds(companyId, impactedDriverIds);
// 2. 将该驾驶员从所有组中移除 // 2. 将该驾驶员从所有组中移除
// 查找包含该驾驶员的所有组 // 查找包含该驾驶员的所有组
List<HotDriverGroup> groups = groupMapper.selectList( List<HotDriverGroup> groups = groupMapper.selectList(

View File

@@ -165,15 +165,50 @@ public class HotVehicleChangeServiceImpl implements IHotVehicleChangeService {
.filter(StringUtils::isNotBlank) .filter(StringUtils::isNotBlank)
.collect(Collectors.toList()); .collect(Collectors.toList());
if (!driverIds.isEmpty()) { if (!driverIds.isEmpty()) {
driverMapper.update(null, new LambdaUpdateWrapper<HotDriver>() for (String driverId : driverIds) {
.set(HotDriver::getVehicleId, null) recalculateDriverVehicleRelations(driverId, bo.getCompanyId());
.set(HotDriver::getPlateNumber, null) }
.in(HotDriver::getId, driverIds)
.eq(HotDriver::getCompanyId, bo.getCompanyId()));
} }
} }
} }
private void recalculateDriverVehicleRelations(String driverId, Long companyId) {
if (StringUtils.isBlank(driverId) || companyId == null) {
return;
}
List<HotVehicle> vehicles = vehicleMapper.selectList(Wrappers.<HotVehicle>lambdaQuery()
.eq(HotVehicle::getCompanyId, companyId)
.eq(HotVehicle::getIsDeleted, 0L));
List<String> vehicleIds = new ArrayList<>();
List<String> plateNumbers = new ArrayList<>();
for (HotVehicle item : vehicles) {
List<String> currentDrivers = Arrays.stream(StringUtils.defaultString(item.getCurrentDriver()).split(","))
.map(String::trim)
.filter(StringUtils::isNotBlank)
.collect(Collectors.toList());
if (!currentDrivers.contains(driverId)) {
continue;
}
vehicleIds.add(item.getId());
plateNumbers.add(item.getPlateNumber());
}
driverMapper.update(null, new LambdaUpdateWrapper<HotDriver>()
.set(HotDriver::getVehicleId, joinCsv(vehicleIds))
.set(HotDriver::getPlateNumber, joinCsv(plateNumbers))
.eq(HotDriver::getId, driverId)
.eq(HotDriver::getCompanyId, companyId));
}
private String joinCsv(Collection<String> values) {
if (values == null || values.isEmpty()) {
return null;
}
return values.stream()
.filter(StringUtils::isNotBlank)
.distinct()
.collect(Collectors.joining(","));
}
/** /**
* 校验并批量删除车辆变更记录信息 * 校验并批量删除车辆变更记录信息
* *

View File

@@ -501,10 +501,14 @@ public class HotVehicleServiceImpl implements IHotVehicleService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(HotVehicleBo bo) { public Boolean updateByBo(HotVehicleBo bo) {
validateSingleCurrentDriverBinding(bo.getCurrentDriver());
// 获取旧数据用于比对 // 获取旧数据用于比对
HotVehicle oldVehicle = baseMapper.selectById(bo.getId()); HotVehicle oldVehicle = baseMapper.selectById(bo.getId());
HotVehicle update = MapstructUtils.convert(bo, HotVehicle.class); HotVehicle update = MapstructUtils.convert(bo, HotVehicle.class);
String normalizedCurrentDriver = normalizeSingleBindingValue(update.getCurrentDriver());
update.setCurrentDriver(normalizedCurrentDriver);
bo.setCurrentDriver(normalizedCurrentDriver);
if (update.getOperationStatus() != null && CLEAR_DRIVER_OPERATION_STATUS.contains(update.getOperationStatus())) { if (update.getOperationStatus() != null && CLEAR_DRIVER_OPERATION_STATUS.contains(update.getOperationStatus())) {
update.setCurrentDriver(null); update.setCurrentDriver(null);
bo.setCurrentDriver(null); bo.setCurrentDriver(null);
@@ -515,60 +519,14 @@ public class HotVehicleServiceImpl implements IHotVehicleService {
String vehicleId = update.getId(); String vehicleId = update.getId();
Long companyId = update.getCompanyId(); Long companyId = update.getCompanyId();
// 处理驾驶员变更:同步驾驶员信息的车牌号 // 处理驾驶员变更:车辆侧只允许单个驾驶员,驾驶员侧回写多车列表
String oldDriverId = oldVehicle != null ? oldVehicle.getCurrentDriver() : null; List<String> oldDriverIds = splitCsv(oldVehicle != null ? oldVehicle.getCurrentDriver() : null);
String newDriverId = update.getCurrentDriver(); List<String> newDriverIds = splitCsv(update.getCurrentDriver());
String oldDriverId = oldDriverIds.isEmpty() ? null : oldDriverIds.get(0);
String newDriverId = newDriverIds.isEmpty() ? null : newDriverIds.get(0);
String oldPlate = oldVehicle != null ? oldVehicle.getPlateNumber() : null; String oldPlate = oldVehicle != null ? oldVehicle.getPlateNumber() : null;
String newPlate = update.getPlateNumber(); String newPlate = update.getPlateNumber();
boolean bindingChanged = !oldDriverIds.equals(newDriverIds) || !StringUtils.equals(oldPlate, newPlate);
// 如果驾驶员发生变化 或 车牌号发生变化
if (!StringUtils.equals(oldDriverId, newDriverId) || !StringUtils.equals(oldPlate, newPlate)) {
List<String> oldDrivers = StringUtils.isBlank(oldDriverId) ? new ArrayList<>() : Arrays.asList(oldDriverId.split(","));
List<String> newDrivers = StringUtils.isBlank(newDriverId) ? new ArrayList<>() : Arrays.asList(newDriverId.split(","));
// 1. 处理移除的驾驶员 (在旧列表中但不在新列表中 -> 清除车牌关联)
List<String> removedDrivers = oldDrivers.stream()
.filter(d -> !newDrivers.contains(d))
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(removedDrivers)) {
driverMapper.update(null,
new LambdaUpdateWrapper<HotDriver>()
.set(HotDriver::getPlateNumber, null)
.set(HotDriver::getVehicleId, null)
.in(HotDriver::getId, removedDrivers)
.eq(HotDriver::getCompanyId, companyId));
}
// 2. 处理当前的驾驶员 (无论是新增的还是保留的,都统一更新为当前车辆信息)
if (CollUtil.isNotEmpty(newDrivers)) {
driverMapper.update(null,
new LambdaUpdateWrapper<HotDriver>()
.set(HotDriver::getPlateNumber, newPlate)
.set(HotDriver::getVehicleId, vehicleId)
.in(HotDriver::getId, newDrivers)
.eq(HotDriver::getCompanyId, companyId));
// 2.1 对新增绑定的驾驶员发送系统消息
List<String> addedDrivers = newDrivers.stream()
.filter(d -> !oldDrivers.contains(d))
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(addedDrivers) && StringUtils.isNotBlank(newPlate)) {
HotSystemNotificationGroupBo bos = new HotSystemNotificationGroupBo();
bos.setLevel("普通");
bos.setContent("您已经绑定车辆【" + newPlate + "】。");
bos.setSourceType("驾驶员管理");
bos.setSenderType("SYSTEM");
bos.setReceiverType("驾驶员");
bos.setReceiverIds(addedDrivers);
bos.setIsDeleted(0L);
try {
notificationService.insertByBo(bos);
} catch (Exception e) {
log.warn("发送驾驶员绑定车辆通知失败 companyId={} vehicleId={} plate={}", companyId, vehicleId, newPlate, e);
}
}
}
}
// 更新合同信息 // 更新合同信息
if (CollUtil.isNotEmpty(bo.getVehicleContracts())) { if (CollUtil.isNotEmpty(bo.getVehicleContracts())) {
@@ -643,6 +601,29 @@ public class HotVehicleServiceImpl implements IHotVehicleService {
} }
if (flag) { if (flag) {
if (bindingChanged && companyId != null) {
Set<String> impactedDriverIds = new LinkedHashSet<>();
impactedDriverIds.addAll(oldDriverIds);
impactedDriverIds.addAll(newDriverIds);
syncDriverVehicleRelationsByDriverIds(companyId, impactedDriverIds);
}
if (StringUtils.isNotBlank(newDriverId) && !oldDriverIds.contains(newDriverId) && StringUtils.isNotBlank(newPlate)) {
HotSystemNotificationGroupBo bos = new HotSystemNotificationGroupBo();
bos.setLevel("普通");
bos.setContent("您已经绑定车辆【" + newPlate + "】。");
bos.setSourceType("驾驶员管理");
bos.setSenderType("SYSTEM");
bos.setReceiverType("驾驶员");
bos.setReceiverIds(Collections.singletonList(newDriverId));
bos.setIsDeleted(0L);
try {
notificationService.insertByBo(bos);
} catch (Exception e) {
log.warn("发送驾驶员绑定车辆通知失败 companyId={} vehicleId={} plate={}", companyId, vehicleId, newPlate, e);
}
}
Long oldVehicleStatus = oldVehicle != null ? oldVehicle.getVehicleStatus() : null; Long oldVehicleStatus = oldVehicle != null ? oldVehicle.getVehicleStatus() : null;
Long newVehicleStatus = update.getVehicleStatus(); Long newVehicleStatus = update.getVehicleStatus();
Long oldOperationStatus = oldVehicle != null ? oldVehicle.getOperationStatus() : null; Long oldOperationStatus = oldVehicle != null ? oldVehicle.getOperationStatus() : null;
@@ -723,6 +704,66 @@ public class HotVehicleServiceImpl implements IHotVehicleService {
} }
} }
private void validateSingleCurrentDriverBinding(String currentDriver) {
if (splitCsv(currentDriver).size() > 1) {
throw new ServiceException("一辆车只能绑定一个驾驶员");
}
}
private String normalizeSingleBindingValue(String value) {
List<String> values = splitCsv(value);
return values.isEmpty() ? null : values.get(0);
}
private List<String> splitCsv(String value) {
if (StringUtils.isBlank(value)) {
return new ArrayList<>();
}
return Arrays.stream(value.split(","))
.map(String::trim)
.filter(StringUtils::isNotBlank)
.distinct()
.collect(Collectors.toList());
}
private String joinCsv(Collection<String> values) {
if (CollUtil.isEmpty(values)) {
return null;
}
return values.stream()
.filter(StringUtils::isNotBlank)
.distinct()
.collect(Collectors.joining(","));
}
private void syncDriverVehicleRelationsByDriverIds(Long companyId, Collection<String> driverIds) {
if (companyId == null || CollUtil.isEmpty(driverIds)) {
return;
}
List<HotVehicle> vehicles = baseMapper.selectList(Wrappers.<HotVehicle>lambdaQuery()
.eq(HotVehicle::getCompanyId, companyId)
.eq(HotVehicle::getIsDeleted, 0L));
for (String driverId : driverIds) {
if (StringUtils.isBlank(driverId)) {
continue;
}
List<String> vehicleIds = new ArrayList<>();
List<String> plateNumbers = new ArrayList<>();
for (HotVehicle vehicle : vehicles) {
if (!splitCsv(vehicle.getCurrentDriver()).contains(driverId)) {
continue;
}
vehicleIds.add(vehicle.getId());
plateNumbers.add(vehicle.getPlateNumber());
}
driverMapper.update(null, new LambdaUpdateWrapper<HotDriver>()
.set(HotDriver::getVehicleId, joinCsv(vehicleIds))
.set(HotDriver::getPlateNumber, joinCsv(plateNumbers))
.eq(HotDriver::getId, driverId)
.eq(HotDriver::getCompanyId, companyId));
}
}
/** /**
* 校验并批量删除公司车辆信息信息 * 校验并批量删除公司车辆信息信息
* *

View File

@@ -91,7 +91,7 @@ public class HotHiddenDangerInspectionServiceImpl implements IHotHiddenDangerIns
if (isDriver) { if (isDriver) {
HotDriver driver = DriverLoginContextHelper.getCurrentDriver(); HotDriver driver = DriverLoginContextHelper.getCurrentDriver();
driverId = driver.getId(); driverId = driver.getId();
vehicleId = driver.getVehicleId(); vehicleId = firstCsvValue(driver.getVehicleId());
} }
String currentMonth = YearMonth.now().toString(); String currentMonth = YearMonth.now().toString();
Page<HotHiddenDangerInspectionVo> page = pageQuery.build(); Page<HotHiddenDangerInspectionVo> page = pageQuery.build();
@@ -109,6 +109,19 @@ public class HotHiddenDangerInspectionServiceImpl implements IHotHiddenDangerIns
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
private String firstCsvValue(String value) {
if (StringUtils.isBlank(value)) {
return null;
}
for (String item : value.split(",")) {
String trimmed = StringUtils.trim(item);
if (StringUtils.isNotBlank(trimmed)) {
return trimmed;
}
}
return null;
}
/** /**
* 查询符合条件的隐患排查-排查项目列表 * 查询符合条件的隐患排查-排查项目列表
* *

View File

@@ -206,7 +206,7 @@ public class SysUserController extends BaseController {
if (StringUtils.isNotBlank(user.getBusinessUserId())) { if (StringUtils.isNotBlank(user.getBusinessUserId())) {
HotDriverVo driver = hotDriverService.queryById(user.getBusinessUserId()); HotDriverVo driver = hotDriverService.queryById(user.getBusinessUserId());
if (driver != null) { if (driver != null) {
user.setVehicleId(driver.getVehicleId()); user.setVehicleId(firstCsvValue(driver.getVehicleId()));
user.setDriverAuditStatus(String.valueOf(driver.getAuditStatus())); user.setDriverAuditStatus(String.valueOf(driver.getAuditStatus()));
user.setHasFaceInitialPhoto(StringUtils.isNotBlank(driver.getPortraitUrl())); user.setHasFaceInitialPhoto(StringUtils.isNotBlank(driver.getPortraitUrl()));
user.setUserName(driver.getName()); user.setUserName(driver.getName());
@@ -237,6 +237,19 @@ public class SysUserController extends BaseController {
return R.ok(userInfoVo); return R.ok(userInfoVo);
} }
private String firstCsvValue(String value) {
if (StringUtils.isBlank(value)) {
return null;
}
for (String item : value.split(",")) {
String trimmed = StringUtils.trim(item);
if (StringUtils.isNotBlank(trimmed)) {
return trimmed;
}
}
return null;
}
private byte[] compressImage(MultipartFile file) throws Exception { private byte[] compressImage(MultipartFile file) throws Exception {
java.awt.image.BufferedImage src = javax.imageio.ImageIO.read(file.getInputStream()); java.awt.image.BufferedImage src = javax.imageio.ImageIO.read(file.getInputStream());
if (src == null) { if (src == null) {