|  |  | 
 |  |  | 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.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 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; | 
 |  |  | 
 |  |  |     @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(); | 
 |  |  |     } | 
 |  |  | 
 |  |  |         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"); | 
 |  |  | // | 
 |  |  | // | 
 |  |  | // | 
 |  |  | // | 
 |  |  | // | 
 |  |  | //    } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } |