package com.doumee.service.business.impl; import cn.hutool.core.lang.PatternPool; import cn.hutool.core.lang.Validator; import cn.hutool.core.util.ReUtil; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Utils; import com.doumee.dao.admin.request.VisitEventQuery; import com.doumee.dao.admin.response.CarEventDTO; import com.doumee.dao.business.CarEventMapper; import com.doumee.dao.business.join.CarEventJoinMapper; import com.doumee.dao.business.model.*; import com.doumee.service.business.CarEventService; 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.List; /** * 停车场事件推送记录表Service实现 * @author 江蹄蹄 * @date 2023/11/30 15:33 */ @Service public class CarEventServiceImpl implements CarEventService { @Autowired private CarEventMapper carEventMapper; @Autowired private CarEventJoinMapper carEventJoinMapper; @Override public Integer create(CarEvent carEvent) { carEventMapper.insert(carEvent); return carEvent.getId(); } @Override public void deleteById(Integer id) { carEventMapper.deleteById(id); } @Override public void delete(CarEvent carEvent) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(carEvent); carEventMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } carEventMapper.deleteBatchIds(ids); } @Override public void updateById(CarEvent carEvent) { carEventMapper.updateById(carEvent); } @Override public void updateByIdInBatch(List carEvents) { if (CollectionUtils.isEmpty(carEvents)) { return; } for (CarEvent carEvent: carEvents) { this.updateById(carEvent); } } @Override public CarEvent findById(Integer id) { return carEventMapper.selectById(id); } @Override public CarEvent findOne(CarEvent carEvent) { QueryWrapper wrapper = new QueryWrapper<>(carEvent); return carEventMapper.selectOne(wrapper); } @Override public List findList(CarEvent carEvent) { QueryWrapper wrapper = new QueryWrapper<>(carEvent); return carEventMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper queryWrapper = new QueryWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); if (pageWrap.getModel().getId() != null) { queryWrapper.lambda().eq(CarEvent::getId, pageWrap.getModel().getId()); } if (pageWrap.getModel().getCreator() != null) { queryWrapper.lambda().eq(CarEvent::getCreator, pageWrap.getModel().getCreator()); } if (pageWrap.getModel().getCreateDate() != null) { queryWrapper.lambda().ge(CarEvent::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); queryWrapper.lambda().le(CarEvent::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); } if (pageWrap.getModel().getEditor() != null) { queryWrapper.lambda().eq(CarEvent::getEditor, pageWrap.getModel().getEditor()); } if (pageWrap.getModel().getEditDate() != null) { queryWrapper.lambda().ge(CarEvent::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); queryWrapper.lambda().le(CarEvent::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); } if (pageWrap.getModel().getIsdeleted() != null) { queryWrapper.lambda().eq(CarEvent::getIsdeleted, pageWrap.getModel().getIsdeleted()); } if (pageWrap.getModel().getRemark() != null) { queryWrapper.lambda().eq(CarEvent::getRemark, pageWrap.getModel().getRemark()); } if (pageWrap.getModel().getEventId() != null) { queryWrapper.lambda().eq(CarEvent::getEventId, pageWrap.getModel().getEventId()); } if (pageWrap.getModel().getSrcIndex() != null) { queryWrapper.lambda().eq(CarEvent::getSrcIndex, pageWrap.getModel().getSrcIndex()); } if (pageWrap.getModel().getSrcType() != null) { queryWrapper.lambda().eq(CarEvent::getSrcType, pageWrap.getModel().getSrcType()); } if (pageWrap.getModel().getSrcName() != null) { queryWrapper.lambda().eq(CarEvent::getSrcName, pageWrap.getModel().getSrcName()); } if (pageWrap.getModel().getEventType() != null) { queryWrapper.lambda().eq(CarEvent::getEventType, pageWrap.getModel().getEventType()); } if (pageWrap.getModel().getStatus() != null) { queryWrapper.lambda().eq(CarEvent::getStatus, pageWrap.getModel().getStatus()); } if (pageWrap.getModel().getTimeout() != null) { queryWrapper.lambda().eq(CarEvent::getTimeout, pageWrap.getModel().getTimeout()); } if (pageWrap.getModel().getHappenTime() != null) { queryWrapper.lambda().eq(CarEvent::getHappenTime, pageWrap.getModel().getHappenTime()); } if (pageWrap.getModel().getSrcParentIndex() != null) { queryWrapper.lambda().eq(CarEvent::getSrcParentIndex, pageWrap.getModel().getSrcParentIndex()); } if (pageWrap.getModel().getAlarmCar() != null) { queryWrapper.lambda().eq(CarEvent::getAlarmCar, pageWrap.getModel().getAlarmCar()); } if (pageWrap.getModel().getCarAttributeName() != null) { queryWrapper.lambda().eq(CarEvent::getCarAttributeName, pageWrap.getModel().getCarAttributeName()); } if (pageWrap.getModel().getCardNo() != null) { queryWrapper.lambda().eq(CarEvent::getCardNo, pageWrap.getModel().getCardNo()); } if (pageWrap.getModel().getEventCmd() != null) { queryWrapper.lambda().eq(CarEvent::getEventCmd, pageWrap.getModel().getEventCmd()); } if (pageWrap.getModel().getEventIndex() != null) { queryWrapper.lambda().eq(CarEvent::getEventIndex, pageWrap.getModel().getEventIndex()); } if (pageWrap.getModel().getGateIndex() != null) { queryWrapper.lambda().eq(CarEvent::getGateIndex, pageWrap.getModel().getGateIndex()); } if (pageWrap.getModel().getGateName() != null) { queryWrapper.lambda().eq(CarEvent::getGateName, pageWrap.getModel().getGateName()); } if (pageWrap.getModel().getReleaseAuth() != null) { queryWrapper.lambda().eq(CarEvent::getReleaseAuth, pageWrap.getModel().getReleaseAuth()); } if (pageWrap.getModel().getReleaseReason() != null) { queryWrapper.lambda().eq(CarEvent::getReleaseReason, pageWrap.getModel().getReleaseReason()); } if (pageWrap.getModel().getReleaseResult() != null) { queryWrapper.lambda().eq(CarEvent::getReleaseResult, pageWrap.getModel().getReleaseResult()); } if (pageWrap.getModel().getReleaseResultEx() != null) { queryWrapper.lambda().eq(CarEvent::getReleaseResultEx, pageWrap.getModel().getReleaseResultEx()); } if (pageWrap.getModel().getReleaseWay() != null) { queryWrapper.lambda().eq(CarEvent::getReleaseWay, pageWrap.getModel().getReleaseWay()); } if (pageWrap.getModel().getInoutType() != null) { queryWrapper.lambda().eq(CarEvent::getInoutType, pageWrap.getModel().getInoutType()); } if (pageWrap.getModel().getPlateNos() != null) { queryWrapper.lambda().eq(CarEvent::getPlateNos, pageWrap.getModel().getPlateNos()); } if (pageWrap.getModel().getMainLogo() != null) { queryWrapper.lambda().eq(CarEvent::getMainLogo, pageWrap.getModel().getMainLogo()); } if (pageWrap.getModel().getParkIndex() != null) { queryWrapper.lambda().eq(CarEvent::getParkIndex, pageWrap.getModel().getParkIndex()); } if (pageWrap.getModel().getParkName() != null) { queryWrapper.lambda().eq(CarEvent::getParkName, pageWrap.getModel().getParkName()); } if (pageWrap.getModel().getPlateColor() != null) { queryWrapper.lambda().eq(CarEvent::getPlateColor, pageWrap.getModel().getPlateColor()); } if (pageWrap.getModel().getPlateBelieve() != null) { queryWrapper.lambda().eq(CarEvent::getPlateBelieve, pageWrap.getModel().getPlateBelieve()); } if (pageWrap.getModel().getPlateType() != null) { queryWrapper.lambda().eq(CarEvent::getPlateType, pageWrap.getModel().getPlateType()); } if (pageWrap.getModel().getRoadwayIndex() != null) { queryWrapper.lambda().eq(CarEvent::getRoadwayIndex, pageWrap.getModel().getRoadwayIndex()); } if (pageWrap.getModel().getRoadwayName() != null) { queryWrapper.lambda().eq(CarEvent::getRoadwayName, pageWrap.getModel().getRoadwayName()); } if (pageWrap.getModel().getRoadwayType() != null) { queryWrapper.lambda().eq(CarEvent::getRoadwayType, pageWrap.getModel().getRoadwayType()); } if (pageWrap.getModel().getSubLogo() != null) { queryWrapper.lambda().eq(CarEvent::getSubLogo, pageWrap.getModel().getSubLogo()); } if (pageWrap.getModel().getSubModel() != null) { queryWrapper.lambda().eq(CarEvent::getSubModel, pageWrap.getModel().getSubModel()); } if (pageWrap.getModel().getTimestr() != null) { queryWrapper.lambda().eq(CarEvent::getTimestr, pageWrap.getModel().getTimestr()); } if (pageWrap.getModel().getVehicleClass() != null) { queryWrapper.lambda().eq(CarEvent::getVehicleClass, pageWrap.getModel().getVehicleClass()); } if (pageWrap.getModel().getVehicleColor() != null) { queryWrapper.lambda().eq(CarEvent::getVehicleColor, pageWrap.getModel().getVehicleColor()); } if (pageWrap.getModel().getVehicleType() != null) { queryWrapper.lambda().eq(CarEvent::getVehicleType, pageWrap.getModel().getVehicleType()); } if (pageWrap.getModel().getVehiclePicUrl() != null) { queryWrapper.lambda().eq(CarEvent::getVehiclePicUrl, pageWrap.getModel().getVehiclePicUrl()); } if (pageWrap.getModel().getPlatePicUrl() != null) { queryWrapper.lambda().eq(CarEvent::getPlatePicUrl, pageWrap.getModel().getPlatePicUrl()); } if (pageWrap.getModel().getSvrIndex() != null) { queryWrapper.lambda().eq(CarEvent::getSvrIndex, pageWrap.getModel().getSvrIndex()); } for(PageWrap.SortData sortData: pageWrap.getSorts()) { if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { queryWrapper.orderByDesc(sortData.getProperty()); } else { queryWrapper.orderByAsc(sortData.getProperty()); } } return PageData.from(carEventMapper.selectPage(page, queryWrapper)); } @Override public long count(CarEvent carEvent) { QueryWrapper wrapper = new QueryWrapper<>(carEvent); return carEventMapper.selectCount(wrapper); } @Override public PageData findVisitCarPage(PageWrap pageWrap) { //是否是数字 boolean number = Validator.isNumber(pageWrap.getModel().getKeyWords()); //是否包含中文 boolean b = Validator.hasChinese(pageWrap.getModel().getKeyWords()); //是否包含英文 boolean hasWord = ReUtil.contains(PatternPool.WORD, pageWrap.getModel().getKeyWords()); IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); queryWrapper.leftJoin(Cars.class,Cars::getCode,CarEvent::getPlateNos) .leftJoin(Member.class,Member::getId,Cars::getMemberId) .leftJoin(Company.class,Company::getId,Member::getCompanyId); queryWrapper.selectAll(CarEvent.class) .selectAs(Member::getType,CarEventDTO::getPersonType) .selectAs(Member::getPhone,CarEventDTO::getPersonPhone) .selectAs(Member::getIdcardDecode,CarEventDTO::getPersonIdcardDecode) .selectAs(Member::getName,CarEventDTO::getPersonName) .selectAs(Company::getName,CarEventDTO::getPersonCompanyName); queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCarNo()), CarEvent::getCardNo, pageWrap.getModel().getCarNo()) .like(number, Member::getPhone, pageWrap.getModel().getKeyWords()) .like((b || hasWord), Member::getPhone, pageWrap.getModel().getKeyWords()) .like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()), Company::getName, pageWrap.getModel().getCompanyName()) .eq(StringUtils.isNotBlank(pageWrap.getModel().getMemberType()), Member::getType, pageWrap.getModel().getMemberType()) .eq(StringUtils.isNotBlank(pageWrap.getModel().getSrcType()), CarEvent::getSrcType, pageWrap.getModel().getSrcType()); IPage carEventDTOIPage = carEventJoinMapper.selectJoinPage(page, CarEventDTO.class, queryWrapper); return PageData.from(carEventDTOIPage); } }