package com.doumee.service.business.impl; 
 | 
  
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 
 | 
import com.baomidou.mybatisplus.core.metadata.IPage; 
 | 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
 | 
import com.doumee.core.model.PageData; 
 | 
import com.doumee.core.model.PageWrap; 
 | 
import com.doumee.core.utils.Constants; 
 | 
import com.doumee.core.utils.Utils; 
 | 
import com.doumee.dao.admin.request.CarsQuery; 
 | 
import com.doumee.dao.admin.response.CarsDTO; 
 | 
import com.doumee.dao.admin.response.MemberInfoDTO; 
 | 
import com.doumee.dao.business.CarsMapper; 
 | 
import com.doumee.dao.business.join.CarJoinMapper; 
 | 
import com.doumee.dao.business.join.ParkBookJoinMapper; 
 | 
import com.doumee.dao.business.model.*; 
 | 
import com.doumee.service.business.CarsService; 
 | 
import com.github.yulichang.wrapper.MPJLambdaWrapper; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.util.CollectionUtils; 
 | 
  
 | 
import java.util.List; 
 | 
import java.util.Objects; 
 | 
  
 | 
/** 
 | 
 * 车辆信息表Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2023/11/30 15:33 
 | 
 */ 
 | 
@Service 
 | 
public class CarsServiceImpl implements CarsService { 
 | 
  
 | 
    @Autowired 
 | 
    private CarsMapper carsMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private CarJoinMapper carJoinMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private ParkBookJoinMapper parkBookJoinMapper; 
 | 
  
 | 
    @Override 
 | 
    public Integer create(Cars cars) { 
 | 
        carsMapper.insert(cars); 
 | 
        return cars.getId(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteById(Integer id) { 
 | 
        carsMapper.deleteById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void delete(Cars cars) { 
 | 
        UpdateWrapper<Cars> deleteWrapper = new UpdateWrapper<>(cars); 
 | 
        carsMapper.delete(deleteWrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<Integer> ids) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        carsMapper.deleteBatchIds(ids); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateById(Cars cars) { 
 | 
        carsMapper.updateById(cars); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByIdInBatch(List<Cars> carss) { 
 | 
        if (CollectionUtils.isEmpty(carss)) { 
 | 
            return; 
 | 
        } 
 | 
        for (Cars cars: carss) { 
 | 
            this.updateById(cars); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public Cars findById(Integer id) { 
 | 
        return carsMapper.selectById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public Cars findOne(Cars cars) { 
 | 
        QueryWrapper<Cars> wrapper = new QueryWrapper<>(cars); 
 | 
        return carsMapper.selectOne(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<Cars> findList(Cars cars) { 
 | 
        QueryWrapper<Cars> wrapper = new QueryWrapper<>(cars); 
 | 
        return carsMapper.selectList(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public PageData<Cars> findPage(PageWrap<Cars> pageWrap) { 
 | 
  
 | 
  
 | 
        IPage<Cars> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        MPJLambdaWrapper<Cars> queryWrapper = new MPJLambdaWrapper<>(); 
 | 
  
 | 
        queryWrapper.selectAll(Cars.class); 
 | 
        queryWrapper.selectAs(Parks::getName,Cars::getParksName); 
 | 
        queryWrapper.selectAs(Member::getType,Cars::getMemberType); 
 | 
        queryWrapper.selectAs(Member::getName,Cars::getMemberName); 
 | 
        queryWrapper.selectAs(Member::getPhone,Cars::getMemberPhone); 
 | 
        queryWrapper.selectAs(Company::getName,Cars::getCompanyName); 
 | 
  
 | 
        queryWrapper.leftJoin(Parks.class,Parks::getId,Cars::getParkId); 
 | 
        queryWrapper.leftJoin(Member.class,Member::getId,Cars::getMemberId); 
 | 
        queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId); 
 | 
  
 | 
  
 | 
        queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getMemberName()), ms->ms.like(Member::getName,pageWrap.getModel().getMemberName()) 
 | 
                .or().like(Member::getPhone,pageWrap.getModel().getMemberName())); 
 | 
        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),Company::getName,pageWrap.getModel().getCompanyName()); 
 | 
        queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getMemberType()),Member::getType,pageWrap.getModel().getMemberType()); 
 | 
        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCode()),Cars::getCode,pageWrap.getModel().getCode()); 
 | 
        queryWrapper.eq(Cars::getIsdeleted,Constants.ZERO); 
 | 
  
 | 
        queryWrapper.orderByDesc(Cars::getCreateDate); 
 | 
        IPage<Cars> result = carJoinMapper.selectJoinPage(page, Cars.class,queryWrapper); 
 | 
        return PageData.from(result); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public long count(Cars cars) { 
 | 
        QueryWrapper<Cars> wrapper = new QueryWrapper<>(cars); 
 | 
        return carsMapper.selectCount(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public PageData<CarsDTO> findCarPage(PageWrap<CarsQuery> pageWrap) { 
 | 
        MPJLambdaWrapper<ParkBook> wrapper = new MPJLambdaWrapper<>(); 
 | 
        IPage<Cars> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        Utils.MP.blankToNull(pageWrap.getModel()); 
 | 
        wrapper.leftJoin(Member.class,Member::getId,ParkBook::getMemberId) 
 | 
                .leftJoin(Company.class,Company::getId,Member::getCompanyId) 
 | 
                .leftJoin(Parks.class,Parks::getId,ParkBook::getParkId); 
 | 
        wrapper.selectAs(ParkBook::getCarCode,CarsDTO::getCode) 
 | 
                .selectAs(ParkBook::getParkId,CarsDTO::getParkId) 
 | 
                .selectAs(ParkBook::getRemark,CarsDTO::getRemark) 
 | 
                .selectAs(Parks::getName,CarsDTO::getParkName) 
 | 
                .selectAs(ParkBook::getMemberId,CarsDTO::getMemberId) 
 | 
                .selectAs(Member::getName,CarsDTO::getMemberName) 
 | 
                .selectAs(Member::getType,CarsDTO::getMemberType) 
 | 
                .selectAs(Company::getName,CarsDTO::getCompanyName) 
 | 
                .selectAs(ParkBook::getTimeType,CarsDTO::getTimeType) 
 | 
                .selectAs(ParkBook::getStartTime,CarsDTO::getStartTime) 
 | 
                .selectAs(ParkBook::getEndTime,CarsDTO::getEndTime) 
 | 
                .selectAs(ParkBook::getCreateDate,CarsDTO::getCreateDate); 
 | 
        wrapper.orderByDesc(ParkBook::getCreateDate); 
 | 
        IPage<CarsDTO> carsDTOIPage = parkBookJoinMapper.selectJoinPage(page, CarsDTO.class, wrapper); 
 | 
  
 | 
        return PageData.from(carsDTOIPage); 
 | 
    } 
 | 
} 
 |