LingangCarInfoServiceImpl.java 9.1 KB
package com.ruoyi.service.impl.carinfo;

import com.ruoyi.domain.DriverScheduling;
import com.ruoyi.domain.key.info.KeyInfo;
import com.ruoyi.service.carinfo.LingangCarInfoService;
import com.ruoyi.service.key.info.KeyInfoService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;

import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

import com.ruoyi.domain.OrderEntity;
import com.ruoyi.domain.caiinfo.LingangCarInfo;
import com.ruoyi.mapper.carinfo.LingangCarInfoMapper;

@Slf4j
@Service
/**车辆信息 Service实现类*/
public class LingangCarInfoServiceImpl extends ServiceImpl<LingangCarInfoMapper, LingangCarInfo> implements LingangCarInfoService {
    @Autowired
    private LingangCarInfoMapper lingangCarInfoMapper;
    @Autowired
    private KeyInfoService keyInfoService;

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

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

        IPage<LingangCarInfo> returnPage = new Page<LingangCarInfo>();
        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<LingangCarInfo> list(LingangCarInfo entity) {
        return list(new LambdaQueryWrapper<>(entity));
    }
    // @Override
    // public List<LingangCarInfo> listOfSelect(LingangCarInfo entity) {
    //      LambdaQueryWrapper<LingangCarInfo> wrapper = new LambdaQueryWrapper<>(entity);
    //     wrapper.select(LingangCarInfo::, LingangCarInfo::);
    //      return list(wrapper);
    //  }

    // @Override
    // public List<LingangCarInfo> listOfIds(java.util.Collection<java.lang.Integer> ids) {
    //     if (org.springframework.util.CollectionUtils.isEmpty(ids)) {
    //         return java.util.Collections.emptyList();
    //    }
    //   LambdaQueryWrapper<LingangCarInfo> wrapper = new LambdaQueryWrapper<>();
    //   wrapper.select(LingangCarInfo::getId,LingangCarInfo::);
    //   wrapper.in(LingangCarInfo::getId, ids);
    //   return list(wrapper);
    // }

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

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


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

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

    @Override
    public boolean insert(List<DriverScheduling> bcList) {
        if (CollectionUtils.isEmpty(bcList)) {
            return Boolean.TRUE;
        }
        Set<String> nbbms = bcList.stream().map(DriverScheduling::getNbbm).collect(Collectors.toSet());
        nbbms.stream().forEach(nbbm -> {
            LingangCarInfo carInfo = new LingangCarInfo();
            carInfo.setNbbm(nbbm);
            carInfo.setStatus(1);

            int count = lingangCarInfoMapper.insertNotExit(carInfo);
            if (count > 0) {
                log.info("添加车辆:[{}}", carInfo.getNbbm());
            }

            LambdaQueryWrapper<LingangCarInfo> wrapper = new LambdaQueryWrapper<>();
            wrapper.eq(LingangCarInfo::getNbbm, nbbm);
            carInfo = list(wrapper).get(0);

            KeyInfo keyInfo = new KeyInfo();
            keyInfo.setName("自编号为" + nbbm + "的车辆钥匙");
            keyInfo.setDelFlag(Boolean.FALSE);
            keyInfo.setPlateNum(carInfo.getPlateNum());
            keyInfo.setNmmb(nbbm);
            keyInfo.setKeyCode(nbbm + RandomUtils.nextInt(1, 100));
            count = keyInfoService.insertNotExists(keyInfo);

            if (count > 0) {
                log.info("添加车辆钥匙:[{}}", carInfo.getNbbm());
            }

        });

        return true;
    }

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

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


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