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 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实现
|
* @author 江蹄蹄
|
* @since 2024/04/28 16:06
|
*/
|
@Service
|
public class CarUseBookServiceImpl implements CarUseBookService {
|
|
@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();
|
}
|
|
@Override
|
public void deleteById(Integer id) {
|
carUseBookMapper.deleteById(id);
|
}
|
|
@Override
|
public void delete(CarUseBook carUseBook) {
|
UpdateWrapper<CarUseBook> deleteWrapper = new UpdateWrapper<>(carUseBook);
|
carUseBookMapper.delete(deleteWrapper);
|
}
|
|
@Override
|
public void deleteByIdInBatch(List<Integer> ids) {
|
if (CollectionUtils.isEmpty(ids)) {
|
return;
|
}
|
carUseBookMapper.deleteBatchIds(ids);
|
}
|
|
@Override
|
public void updateById(CarUseBook carUseBook) {
|
carUseBookMapper.updateById(carUseBook);
|
}
|
|
@Override
|
public void updateByIdInBatch(List<CarUseBook> carUseBooks) {
|
if (CollectionUtils.isEmpty(carUseBooks)) {
|
return;
|
}
|
for (CarUseBook carUseBook: carUseBooks) {
|
this.updateById(carUseBook);
|
}
|
}
|
|
@Override
|
public CarUseBook findById(Integer 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
|
public CarUseBook findOne(CarUseBook carUseBook) {
|
QueryWrapper<CarUseBook> wrapper = new QueryWrapper<>(carUseBook);
|
return carUseBookMapper.selectOne(wrapper);
|
}
|
|
@Override
|
public List<CarUseBook> findList(CarUseBook carUseBook) {
|
QueryWrapper<CarUseBook> wrapper = new QueryWrapper<>(carUseBook);
|
return carUseBookMapper.selectList(wrapper);
|
}
|
|
@Override
|
public PageData<CarUseBook> findPage(PageWrap<CarUseBook> pageWrap) {
|
IPage<CarUseBook> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
MPJLambdaWrapper<CarUseBook> queryWrapper = new MPJLambdaWrapper<>();
|
Utils.MP.blankToNull(pageWrap.getModel());
|
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()))
|
.le(pageWrap.getModel().getCreateDate() != null, CarUseBook::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
|
.eq(pageWrap.getModel().getEditor() != null, CarUseBook::getEditor, pageWrap.getModel().getEditor())
|
.ge(pageWrap.getModel().getEditDate() != null, CarUseBook::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
|
.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())
|
.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()))
|
.ge(pageWrap.getModel().getEndTime() != null, CarUseBook::getEndTime, Utils.Date.getStart(pageWrap.getModel().getEndTime()))
|
.le(pageWrap.getModel().getEndTime() != null, CarUseBook::getEndTime, Utils.Date.getEnd(pageWrap.getModel().getEndTime()))
|
.eq(pageWrap.getModel().getPlanUseDate() != null, CarUseBook::getPlanUseDate, pageWrap.getModel().getPlanUseDate())
|
.eq(pageWrap.getModel().getStatus() != null, CarUseBook::getStatus, pageWrap.getModel().getStatus())
|
.ge(pageWrap.getModel().getCheckDate() != null, CarUseBook::getCheckDate, Utils.Date.getStart(pageWrap.getModel().getCheckDate()))
|
.le(pageWrap.getModel().getCheckDate() != null, CarUseBook::getCheckDate, Utils.Date.getEnd(pageWrap.getModel().getCheckDate()))
|
.eq(pageWrap.getModel().getCheckUserId() != null, CarUseBook::getCheckUserId, pageWrap.getModel().getCheckUserId())
|
.eq(pageWrap.getModel().getCheckInfo() != null, CarUseBook::getCheckInfo, pageWrap.getModel().getCheckInfo())
|
.ge(pageWrap.getModel().getCancelType() != null, CarUseBook::getCancelType, Utils.Date.getStart(pageWrap.getModel().getCancelType()))
|
.le(pageWrap.getModel().getCancelType() != null, CarUseBook::getCancelType, Utils.Date.getEnd(pageWrap.getModel().getCancelType()))
|
.ge(pageWrap.getModel().getCancelStatus() != null, CarUseBook::getCancelStatus, Utils.Date.getStart(pageWrap.getModel().getCancelStatus()))
|
.le(pageWrap.getModel().getCancelStatus() != null, CarUseBook::getCancelStatus, Utils.Date.getEnd(pageWrap.getModel().getCancelStatus()))
|
.ge(pageWrap.getModel().getCancelTime() != null, CarUseBook::getCancelTime, Utils.Date.getStart(pageWrap.getModel().getCancelTime()))
|
.le(pageWrap.getModel().getCancelTime() != null, CarUseBook::getCancelTime, Utils.Date.getEnd(pageWrap.getModel().getCancelTime()))
|
.eq(pageWrap.getModel().getCancelUser() != null, CarUseBook::getCancelUser, pageWrap.getModel().getCancelUser())
|
.eq(pageWrap.getModel().getCancelInfo() != null, CarUseBook::getCancelInfo, pageWrap.getModel().getCancelInfo())
|
.eq(pageWrap.getModel().getType() != null, CarUseBook::getType, pageWrap.getModel().getType())
|
.eq(pageWrap.getModel().getMemberIds() != null, CarUseBook::getMemberIds, pageWrap.getModel().getMemberIds())
|
.eq(pageWrap.getModel().getMemberNames() != null, CarUseBook::getMemberNames, pageWrap.getModel().getMemberNames())
|
.eq(pageWrap.getModel().getContent() != null, CarUseBook::getContent, pageWrap.getModel().getContent())
|
.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())
|
.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)) {
|
queryWrapper.orderByDesc(sortData.getProperty());
|
} else {
|
queryWrapper.orderByAsc(sortData.getProperty());
|
}
|
}
|
return PageData.from(carUseBookMapper.selectJoinPage(page, CarUseBook.class, queryWrapper));
|
}
|
|
@Override
|
public long count(CarUseBook carUseBook) {
|
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");
|
//
|
//
|
//
|
//
|
//
|
// }
|
|
|
|
}
|