| | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.lang.Validator; |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | |
| | | import com.xiaopeng.common.core.exception.ServiceException; |
| | | import com.xiaopeng.common.core.utils.DateUtils; |
| | | import com.xiaopeng.common.core.utils.GeodesyUtil; |
| | | import com.xiaopeng.common.core.utils.SensitiveDataCryptoUtil; |
| | | import com.xiaopeng.common.core.web.page.PageInfo; |
| | | import com.xiaopeng.common.redis.service.RedisService; |
| | | import com.xiaopeng.evi.oss.service.AliOssService; |
| | |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.Serializable; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.LocalTime; |
| | |
| | | .ne(excludeId != null, XpVehicle::getId, excludeId) |
| | | .and(w -> w.eq(XpVehicle::getVehicleCode, vehicleCode) |
| | | .or() |
| | | .eq(XpVehicle::getVehicleVin, vehicleVin) |
| | | .in(XpVehicle::getVehicleVin, SensitiveDataCryptoUtil.queryValues(vehicleVin)) |
| | | .or() |
| | | .eq(XpVehicle::getPlateNumber, plateNumber)) |
| | | .last("limit 3") |
| | |
| | | throw new ServiceException("车辆编码已存在", I18nKeyConstant.VEHICLE_CODE_EXISTS, new Object[]{vehicleCode}); |
| | | } |
| | | |
| | | boolean vehicleVinExists = duplicates.stream().anyMatch(v -> vehicleVin.equals(v.getVehicleVin())); |
| | | boolean vehicleVinExists = duplicates.stream().anyMatch(v -> vehicleVin.equals(SensitiveDataCryptoUtil.decryptIfPossible(v.getVehicleVin()))); |
| | | if (vehicleVinExists) { |
| | | throw new ServiceException("车辆VIN码已存在", I18nKeyConstant.VEHICLE_VIN_EXISTS, new Object[]{vehicleVin}); |
| | | } |
| | |
| | | |
| | | @Override |
| | | public PageInfo<XpVehicle> vehiclePageList(VehiclePageQuery query) { |
| | | query.setVehicleVinQueryValues(SensitiveDataCryptoUtil.queryValues(query.getVehicleVin())); |
| | | PageInfo<XpVehicle> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); |
| | | List<XpVehicle> list = this.baseMapper.vehiclePageList(pageInfo, query); |
| | | decryptVehicles(list); |
| | | //查询运营区域名称 |
| | | List<Long> electronicIds = list.stream() |
| | | .map(XpVehicle::getElectronicId) |
| | |
| | | |
| | | @Override |
| | | public List<XpVehicle> vehicleExportList(VehicleExportQuery query) { |
| | | return this.baseMapper.vehicleExportList(query); |
| | | query.setVehicleVinQueryValues(SensitiveDataCryptoUtil.queryValues(query.getVehicleVin())); |
| | | List<XpVehicle> list = this.baseMapper.vehicleExportList(query); |
| | | decryptVehicles(list); |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | |
| | | LambdaQueryWrapper<XpVehicle> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(XpVehicle::getVehicleType, 2) |
| | | .like(StringUtils.isNotBlank(query.getVehicleCode()), XpVehicle::getVehicleCode, query.getVehicleCode()) |
| | | .like(StringUtils.isNotBlank(query.getVehicleVin()), XpVehicle::getVehicleVin, query.getVehicleVin()) |
| | | .in(StringUtils.isNotBlank(query.getVehicleVin()), XpVehicle::getVehicleVin, SensitiveDataCryptoUtil.queryValues(query.getVehicleVin())) |
| | | .like(StringUtils.isNotBlank(query.getPlateNumber()), XpVehicle::getPlateNumber, query.getPlateNumber()) |
| | | .eq(Objects.nonNull(query.getOperatingStatus()), XpVehicle::getOperatingStatus, query.getOperatingStatus()) |
| | | .eq(Objects.nonNull(query.getElectronicId()), XpVehicle::getElectronicId, query.getElectronicId()); |
| | |
| | | LambdaQueryWrapper<XpVehicle> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(XpVehicle::getVehicleType, 2) |
| | | .like(StringUtils.isNotBlank(query.getVehicleCode()), XpVehicle::getVehicleCode, query.getVehicleCode()) |
| | | .like(StringUtils.isNotBlank(query.getVehicleVin()), XpVehicle::getVehicleVin, query.getVehicleVin()) |
| | | .in(StringUtils.isNotBlank(query.getVehicleVin()), XpVehicle::getVehicleVin, SensitiveDataCryptoUtil.queryValues(query.getVehicleVin())) |
| | | .like(StringUtils.isNotBlank(query.getPlateNumber()), XpVehicle::getPlateNumber, query.getPlateNumber()) |
| | | .eq(Objects.nonNull(query.getOperatingStatus()), XpVehicle::getOperatingStatus, query.getOperatingStatus()) |
| | | .eq(Objects.nonNull(query.getElectronicId()), XpVehicle::getElectronicId, query.getOperatingStatus()) |
| | |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public XpVehicle getById(Serializable id) { |
| | | XpVehicle vehicle = super.getById(id); |
| | | decryptVehicle(vehicle); |
| | | return vehicle; |
| | | } |
| | | |
| | | @Override |
| | | public boolean save(XpVehicle entity) { |
| | | encryptVehicle(entity); |
| | | try { |
| | | return super.save(entity); |
| | | } finally { |
| | | decryptVehicle(entity); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public boolean saveBatch(Collection<XpVehicle> entityList) { |
| | | if (entityList != null) { |
| | | entityList.forEach(this::encryptVehicle); |
| | | } |
| | | try { |
| | | return super.saveBatch(entityList); |
| | | } finally { |
| | | decryptVehicles(entityList); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public boolean updateById(XpVehicle entity) { |
| | | encryptVehicle(entity); |
| | | try { |
| | | return super.updateById(entity); |
| | | } finally { |
| | | decryptVehicle(entity); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public List<XpVehicle> list() { |
| | | List<XpVehicle> list = super.list(); |
| | | decryptVehicles(list); |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public List<XpVehicle> list(Wrapper<XpVehicle> queryWrapper) { |
| | | List<XpVehicle> list = super.list(queryWrapper); |
| | | decryptVehicles(list); |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public XpVehicle getOne(Wrapper<XpVehicle> queryWrapper) { |
| | | XpVehicle vehicle = super.getOne(queryWrapper); |
| | | decryptVehicle(vehicle); |
| | | return vehicle; |
| | | } |
| | | |
| | | private void encryptVehicle(XpVehicle vehicle) { |
| | | if (vehicle != null) { |
| | | vehicle.setVehicleVin(SensitiveDataCryptoUtil.encrypt(vehicle.getVehicleVin())); |
| | | } |
| | | } |
| | | |
| | | private void decryptVehicle(XpVehicle vehicle) { |
| | | if (vehicle != null) { |
| | | vehicle.setVehicleVin(SensitiveDataCryptoUtil.decryptIfPossible(vehicle.getVehicleVin())); |
| | | } |
| | | } |
| | | |
| | | private void decryptVehicles(Collection<? extends XpVehicle> vehicles) { |
| | | if (vehicles != null) { |
| | | vehicles.forEach(this::decryptVehicle); |
| | | } |
| | | } |
| | | } |