liukangdong
2024-05-21 4658e9353f7aa76a833d36ed988d77bf362ad0ea
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
@@ -1,20 +1,32 @@
package com.doumee.service.business.impl;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DESUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.CarUseBookMapper;
import com.doumee.dao.business.model.CarUseBook;
import com.doumee.dao.business.CarsMapper;
import com.doumee.dao.business.join.CarUseBookJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.service.business.CarUseBookService;
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.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.Date;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
 * 车辆_用车申请信息表Service实现
@@ -27,8 +39,54 @@
    @Autowired
    private CarUseBookMapper carUseBookMapper;
    @Autowired
    private CarUseBookJoinMapper carUseBookJoinMapper;
    @Autowired
    private CarsMapper carsMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Override
    public Integer create(CarUseBook carUseBook) {
        if(Objects.isNull(carUseBook)
            || Objects.isNull(carUseBook.getCarId())
                || Objects.isNull(carUseBook.getStartTime())
                || Objects.isNull(carUseBook.getEndTime())
                || Objects.isNull(carUseBook.getCreator())
                || Objects.isNull(carUseBook.getMemberId())
                || Objects.isNull(carUseBook.getPlanUseDate())
                || Objects.isNull(carUseBook.getType())
                || StringUtils.isEmpty(carUseBook.getMemberIds())
                || StringUtils.isEmpty(carUseBook.getMemberNames())
                || StringUtils.isEmpty(carUseBook.getContent())
                || StringUtils.isEmpty(carUseBook.getAddr())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        carUseBook.setStatus(Constants.ZERO);
        carUseBook.setCreateDate(new Date());
        Cars cars = carsMapper.selectById(carUseBook.getCarId());
        if(Objects.isNull(cars)||!cars.getType().equals(Constants.ONE)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"车辆信息异常");
        }
        //TODO 查询车辆提交时间是否存在冲突的预约记录
        List<CarUseBook> carUseBookList = carUseBookJoinMapper.selectJoinList(CarUseBook.class,
                new MPJLambdaWrapper<CarUseBook>()
                        .selectAll(CarUseBook.class)
                        .selectAs(Member::getName,CarUseBook::getMemberName)
                        .selectAs(Member::getPhone,CarUseBook::getMemberMobile)
                        .leftJoin(Member.class,Member::getId,CarUseBook::getMemberId)
                        .eq(CarUseBook::getId,carUseBook.getCarId())
                        .in(CarUseBook::getStatus,0,1,2)
//                        .in( " ( '"+carUseBook.getStartTime()+"' < t.start_time AND '"+ carUseBook.getEndTime()+"'> t.end_time ) " )
        );
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(carUseBookList)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在车辆预约时间与已预约时间冲突~");
        }
        carUseBookMapper.insert(carUseBook);
        return carUseBook.getId();
    }
@@ -69,7 +127,20 @@
    @Override
    public CarUseBook findById(Integer id) {
        return carUseBookMapper.selectById(id);
        MPJLambdaWrapper<CarUseBook>  queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(CarUseBook.class);
        queryWrapper.select("t1.name",CarUseBook::getMemberName);
        queryWrapper.select("t1.phone",CarUseBook::getMemberPhone);
        queryWrapper.select("t2.name",CarUseBook::getDriverName);
        queryWrapper.select("t3.phone",CarUseBook::getDriverPhone);
        queryWrapper.select("t4.company_name_path",CarUseBook::getCompanyName);
        queryWrapper.leftJoin(Member.class,Member::getId,CarUseBook::getMemberId)
                .leftJoin("company t4 on t1.company_id=t4.id")
                .leftJoin(Member.class,Member::getId,CarUseBook::getDriverId)
                .eq(CarUseBook::getId,id)
                .last("limit 1"  );
        CarUseBook model = carUseBookMapper.selectJoinOne(CarUseBook.class,queryWrapper);
        return  model;
    }
    @Override
@@ -87,9 +158,19 @@
    @Override
    public PageData<CarUseBook> findPage(PageWrap<CarUseBook> pageWrap) {
        IPage<CarUseBook> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<CarUseBook> queryWrapper = new QueryWrapper<>();
        MPJLambdaWrapper<CarUseBook>  queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        queryWrapper.lambda()
        pageWrap.getModel().setIsdeleted(Constants.ZERO);
        queryWrapper.selectAll(CarUseBook.class);
        queryWrapper.select("t1.name",CarUseBook::getMemberName);
        queryWrapper.select("t1.phone",CarUseBook::getMemberPhone);
        queryWrapper.select("t2.name",CarUseBook::getDriverName);
        queryWrapper.select("t3.phone",CarUseBook::getDriverPhone);
        queryWrapper.select("t4.company_name_path",CarUseBook::getCompanyName);
        queryWrapper.leftJoin(Member.class,Member::getId,CarUseBook::getMemberId)
                    .leftJoin("company t4 on t1.company_id=t4.id")
                    .leftJoin(Member.class,Member::getId,CarUseBook::getDriverId);
        queryWrapper
                .eq(pageWrap.getModel().getId() != null, CarUseBook::getId, pageWrap.getModel().getId())
                .eq(pageWrap.getModel().getCreator() != null, CarUseBook::getCreator, pageWrap.getModel().getCreator())
                .ge(pageWrap.getModel().getCreateDate() != null, CarUseBook::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
@@ -99,7 +180,7 @@
                .le(pageWrap.getModel().getEditDate() != null, CarUseBook::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
                .eq(pageWrap.getModel().getIsdeleted() != null, CarUseBook::getIsdeleted, pageWrap.getModel().getIsdeleted())
                .eq(pageWrap.getModel().getRemark() != null, CarUseBook::getRemark, pageWrap.getModel().getRemark())
                .eq(pageWrap.getModel().getCarCode() != null, CarUseBook::getCarCode, pageWrap.getModel().getCarCode())
                .like(pageWrap.getModel().getCarCode() != null, CarUseBook::getCarCode, pageWrap.getModel().getCarCode())
                .eq(pageWrap.getModel().getCarId() != null, CarUseBook::getCarId, pageWrap.getModel().getCarId())
                .ge(pageWrap.getModel().getStartTime() != null, CarUseBook::getStartTime, Utils.Date.getStart(pageWrap.getModel().getStartTime()))
                .le(pageWrap.getModel().getStartTime() != null, CarUseBook::getStartTime, Utils.Date.getEnd(pageWrap.getModel().getStartTime()))
@@ -126,7 +207,11 @@
                .eq(pageWrap.getModel().getAddr() != null, CarUseBook::getAddr, pageWrap.getModel().getAddr())
                .eq(pageWrap.getModel().getMemberId() != null, CarUseBook::getMemberId, pageWrap.getModel().getMemberId())
                .eq(pageWrap.getModel().getDriverId() != null, CarUseBook::getDriverId, pageWrap.getModel().getDriverId())
                .eq(pageWrap.getModel().getMemberNum() != null, CarUseBook::getMemberNum, pageWrap.getModel().getMemberNum())
                .and(StringUtils.isNotBlank(pageWrap.getModel().getMemberName()), ms->ms.like(Member::getName,pageWrap.getModel().getMemberName())
                        .or().like(Member::getPhone,pageWrap.getModel().getMemberName()))
                .ge(Objects.nonNull(pageWrap.getModel().getQueryStartTime()), Empower::getCreateDate,pageWrap.getModel().getQueryStartTime())
                .le(Objects.nonNull(pageWrap.getModel().getQueryEndTime()),Empower::getCreateDate,pageWrap.getModel().getQueryEndTime())
                .orderByDesc(Visits::getCreateDate)
        ;
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
@@ -135,7 +220,7 @@
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(carUseBookMapper.selectPage(page, queryWrapper));
        return PageData.from(carUseBookMapper.selectJoinPage(page, CarUseBook.class, queryWrapper));
    }
    @Override
@@ -143,4 +228,49 @@
        QueryWrapper<CarUseBook> wrapper = new QueryWrapper<>(carUseBook);
        return carUseBookMapper.selectCount(wrapper);
    }
    /**
     * 查询车辆预约记录
     * @param carUseBook
     * @return
     */
    @Override
    public List<CarUseBook> carUseBookList(CarUseBook carUseBook){
        if(Objects.isNull(carUseBook)
            || Objects.isNull(carUseBook.getCarId())
            || Objects.isNull(carUseBook.getStartTime())
            || Objects.isNull(carUseBook.getEndTime())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        List<CarUseBook> carUseBookList = carUseBookJoinMapper.selectJoinList(CarUseBook.class,
                new MPJLambdaWrapper<CarUseBook>()
                        .selectAll(CarUseBook.class)
                        .selectAs(Member::getName,CarUseBook::getMemberName)
                        .selectAs(Member::getPhone,CarUseBook::getMemberMobile)
                        .leftJoin(Member.class,Member::getId,CarUseBook::getMemberId)
                        .eq(CarUseBook::getId,carUseBook.getCarId())
                        .in(CarUseBook::getStatus,0,1,2)
//                        .in( " ( '"+carUseBook.getStartTime()+"' < t.start_time AND '"+ carUseBook.getEndTime()+"'> t.end_time ) " )
        );
        return carUseBookList;
    }
//    public void checkDateUse(Integer cars,String dateDay){
//
//        SystemDictData workStart = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.WORK_START);
//        SystemDictData workEnd = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.WORK_END);
//        SystemDictData interval = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INTERVAL);
//
//        Date start = DateUtil.StringToDate(dateDay + workStart.getCode(),"yyyy-MM-dd HH:mm:ss");
//
//
//
//
//
//    }
}