CarInfoServiceImpl.java 9 KB
package com.ruoyi.service.impl.carinfo;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.ruoyi.domain.OrderEntity;
import com.ruoyi.domain.caiinfo.CarInfo;
import com.ruoyi.mapper.carinfo.CarInfoMapper;
import com.ruoyi.service.carinfo.CarInfoService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Objects;

@Service
public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> implements CarInfoService {
    @Autowired
    private CarInfoMapper CarInfoMapper;

    /**
     * 分页查询
     */
    @Override
    public IPage<CarInfo> pageList(Page<CarInfo> page, CarInfo entity, OrderEntity orderEntity) {
        LambdaQueryWrapper<CarInfo> countWrapper = new LambdaQueryWrapper<>(entity);
        countWrapper.select(CarInfo::getId);
        int count = count(countWrapper);

        List<CarInfo> lists = Collections.emptyList();
        if (count > 0) {
            PageHelper.startPage((int) page.getCurrent(), (int) page.getSize(), false);
            LambdaQueryWrapper<CarInfo> selectWrapper = new LambdaQueryWrapper<>(entity);
            orderColumn(selectWrapper, orderEntity);
            lists = list(selectWrapper);
        }

        IPage<CarInfo> returnPage = new Page<CarInfo>();
        returnPage.setRecords(lists);
        returnPage.setPages(count % page.getSize() == 0 ? count / page.getSize() : count / page.getSize() + 1);
        returnPage.setCurrent(page.getCurrent());
        returnPage.setSize(page.getSize());
        returnPage.setTotal(count);

        return returnPage;
    }

    @Override
    public List<CarInfo> list(CarInfo entity) {
        return list(new LambdaQueryWrapper<>(entity));
    }

    @Override
    public List<CarInfo> listLikeNbbs(CarInfo carInfo) {
        String nbbs = carInfo.getNbbm();
        carInfo.setNbbm(null);
        LambdaQueryWrapper<CarInfo> wrapper = new LambdaQueryWrapper<>(carInfo);
        if (StringUtils.isNotEmpty(nbbs)) {
            wrapper.like(CarInfo::getNbbm, nbbs);
        }
        return list(wrapper);
    }

    @Override
    public List<CarInfo> likePlateNumPlateNumTop30(CarInfo entity) {
        String plateNum = entity.getPlateNum();
        entity.setPlateNum(null);

        LambdaQueryWrapper<CarInfo> wrapper = new LambdaQueryWrapper<>(entity);
        wrapper.select(CarInfo::getPlateNum);
        wrapper.like(CarInfo::getPlateNum, plateNum);
        wrapper.groupBy(CarInfo::getPlateNum);

        PageHelper.startPage(1, 30, false);
        return list(wrapper);
    }

    @Override
    public List<CarInfo> list(Collection<String> nbbms) {
        if (CollectionUtils.isEmpty(nbbms)) {
            return Collections.emptyList();
        }
        LambdaQueryWrapper<CarInfo> wrapper = new LambdaQueryWrapper<>();
        wrapper.in(CarInfo::getNbbm, nbbms);
        return list(wrapper);
    }

    @Override
    public List<CarInfo> listPlateNums(Collection<String> plateNums) {
        if (CollectionUtils.isEmpty(plateNums)) {
            return Collections.emptyList();
        }
        LambdaQueryWrapper<CarInfo> wrapper = new LambdaQueryWrapper<>();
        wrapper.in(CarInfo::getPlateNum, plateNums);
        return list(wrapper);
    }

    @Override
    public List<CarInfo> list(CarInfo carInfo, Collection<String> nbbms) {
        LambdaQueryWrapper<CarInfo> wrapper = null;
        if (Objects.isNull(carInfo)) {
            wrapper = new LambdaQueryWrapper<>();
        } else {
            wrapper = new LambdaQueryWrapper<>(carInfo);
        }

        if (CollectionUtils.isNotEmpty(nbbms)) {
            wrapper.in(CarInfo::getNbbm, nbbms);
        }
        return list(wrapper);
    }

    @Override
    public List<CarInfo> listOfSelect(CarInfo entity) {
        LambdaQueryWrapper<CarInfo> wrapper = new LambdaQueryWrapper<>(entity);
        wrapper.select(CarInfo::getId, CarInfo::getPlateNum);
        return list(wrapper);
    }

    @Override
    public List<CarInfo> listOfIds(Collection<Integer> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return Collections.emptyList();
        }
        LambdaQueryWrapper<CarInfo> wrapper = new LambdaQueryWrapper<>();
        wrapper.select(CarInfo::getId, CarInfo::getPlateNum);
        wrapper.in(CarInfo::getId, ids);
        return list(wrapper);
    }

    @Override
    public CarInfo getOne(CarInfo entity) {
        return getOne(new LambdaQueryWrapper<>(entity));
    }

    @Override
    public CarInfo getOneByPlateNum(String plateNum) {
        CarInfo carInfo = new CarInfo();
        carInfo.setPlateNum(plateNum);
        return getOne(carInfo);
    }

    @Override
    public CarInfo getOneByNbbm(String nbbm) {
        CarInfo carInfo = new CarInfo();
        carInfo.setNbbm(nbbm);
        return getOne(carInfo);
    }

    @Override
    public Integer countId(CarInfo entity) {
        LambdaQueryWrapper<CarInfo> wrapper = new LambdaQueryWrapper<>(entity);
        wrapper.select(CarInfo::getId);
        return count(wrapper);
    }


    /**
     * 插入有值的列
     */
    @Override
    public int insertSelective(CarInfo entity) {
        return CarInfoMapper.insertSelective(entity);
    }

    /**
     * 插入数据
     */
    @Override
    public boolean insert(CarInfo entity) {
        return save(entity);
    }

    /**
     * 根据主键修改数据
     */
    @Override
    public boolean updateByPrimaryKey(CarInfo entity) {
        return updateById(entity);
    }

    /***根据主键删除数据*/
    @Override
    public boolean deleteById(Integer id) {
        return removeById(id);
    }

    public static void orderColumn(LambdaQueryWrapper<CarInfo> wrapper, com.ruoyi.domain.OrderEntity orderEntity) {
        if (org.apache.commons.lang3.StringUtils.equals("ascending", orderEntity.getOrder())) {
            if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "id")) {
                wrapper.orderByAsc(CarInfo::getId);
            }
            if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "plateNum")) {
                wrapper.orderByAsc(CarInfo::getPlateNum);
            }
            if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "parkingNo")) {
                wrapper.orderByAsc(CarInfo::getParkingNo);
            }
            if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "status")) {
                wrapper.orderByAsc(CarInfo::getStatus);
            }
            if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "createBy")) {
                wrapper.orderByAsc(CarInfo::getCreateBy);
            }
            if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "createTime")) {
                wrapper.orderByAsc(CarInfo::getCreateTime);
            }
            if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "updateBy")) {
                wrapper.orderByAsc(CarInfo::getUpdateBy);
            }
            if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "updateTime")) {
                wrapper.orderByAsc(CarInfo::getUpdateTime);
            }
        } else if (org.apache.commons.lang3.StringUtils.equals("descending", orderEntity.getOrder())) {
            if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "id")) {
                wrapper.orderByDesc(CarInfo::getId);
            }
            if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "plateNum")) {
                wrapper.orderByDesc(CarInfo::getPlateNum);
            }
            if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "parkingNo")) {
                wrapper.orderByDesc(CarInfo::getParkingNo);
            }
            if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "status")) {
                wrapper.orderByDesc(CarInfo::getStatus);
            }
            if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "createBy")) {
                wrapper.orderByDesc(CarInfo::getCreateBy);
            }
            if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "createTime")) {
                wrapper.orderByDesc(CarInfo::getCreateTime);
            }
            if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "updateBy")) {
                wrapper.orderByDesc(CarInfo::getUpdateBy);
            }
            if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "updateTime")) {
                wrapper.orderByDesc(CarInfo::getUpdateTime);
            }
        } else {
            wrapper.orderByDesc(CarInfo::getCreateTime);
        }
    }
}