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.haikang.model.HKConstants; 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.VisitEventQuery; import com.doumee.dao.admin.response.CarEventDTO; import com.doumee.dao.admin.response.DeviceEventDTO; import com.doumee.dao.admin.response.VisitEventDTO; import com.doumee.dao.business.CarEventMapper; import com.doumee.dao.business.join.CarEventJoinMapper; import com.doumee.dao.business.model.*; import com.doumee.dao.system.SystemDictDataMapper; import com.doumee.dao.system.model.SystemDictData; import com.doumee.dao.system.vo.CarEventVo; 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.*; import java.util.function.Function; import java.util.stream.Collectors; /** * 停车场事件推送记录表Service实现 * @author 江蹄蹄 * @date 2023/11/30 15:33 */ @Service public class CarEventServiceImpl implements CarEventService { @Autowired private CarEventMapper carEventMapper; @Autowired private CarEventJoinMapper carEventJoinMapper; @Autowired private SystemDictDataMapper systemDictDataMapper; @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) { IPage carEventDTOIPage = getDataInfo(pageWrap); if(null != carEventDTOIPage && carEventDTOIPage.getRecords().size() > 0) { carEventDTOIPage.setRecords(newCarEventDTO(carEventDTOIPage.getRecords())); } return PageData.from(carEventDTOIPage); } @Override public List findPageExcel(PageWrap pageWrap) { IPage carEventExcel = getDataInfo(pageWrap); List newDataList = new ArrayList<>(); if(null != carEventExcel && carEventExcel.getRecords().size() > 0) { carEventExcel.getRecords().stream().forEach(obj->{ CarEventVo vo = new CarEventVo(); vo.setEventTypeName(HKConstants.EventTypes.getName(obj.getEventType())) ; if(null != obj.getPersonType()) { if(Constants.ZERO == obj.getPersonType()){ vo.setTypeName(Constants.Status.LW_FK.getDes()); }else if(Constants.ONE == obj.getPersonType()) { vo.setTypeName(Constants.Status.PT_FK.getDes()); }else { vo.setTypeName(Constants.Status.NB_FK.getDes()); } }else { vo.setTypeName(""); } vo.setPlateNos(obj.getPlateNos()); vo.setPersonName(obj.getPersonName()); vo.setPersonPhone(obj.getPersonPhone()); vo.setPersonCompanyName(obj.getPersonCompanyName()); vo.setParkName(obj.getParkName()); vo.setGateName(obj.getGateName()); vo.setInoutType(obj.getInoutType()); vo.setHappenTime(obj.getHappenTime()); newDataList.add(vo); }); } return newDataList; } private IPage getDataInfo(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); queryWrapper .leftJoin(Member.class,Member::getId,CarEvent::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().getPlateNos()), CarEvent::getPlateNos, pageWrap.getModel().getPlateNos()) .and(StringUtils.isNotBlank(pageWrap.getModel().getKeyWords()),i->i.like(Member::getPhone,pageWrap.getModel().getKeyWords()).or().like(Member::getPhone, pageWrap.getModel().getKeyWords())) .like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()), Company::getName, pageWrap.getModel().getCompanyName()) .eq( pageWrap.getModel().getMemberType()!=null, Member::getType, pageWrap.getModel().getMemberType()) .eq(Objects.nonNull(pageWrap.getModel().getEventType()), CarEvent::getEventType, pageWrap.getModel().getEventType()) .ge(Objects.nonNull(pageWrap.getModel().getStartTime()), CarEvent::getCreateDate, pageWrap.getModel().getStartTime()) .le(Objects.nonNull(pageWrap.getModel().getEndTime()), CarEvent::getCreateDate, pageWrap.getModel().getEndTime()) .orderByDesc(CarEvent::getCreateDate); IPage carEventDTOIPage = carEventJoinMapper.selectJoinPage(page, CarEventDTO.class, queryWrapper); return carEventDTOIPage; } private List newCarEventDTO(List newCarEventDTOList) { List codes = Arrays.asList(Constants.FTP_RESOURCE_PATH,Constants.CAR_EVENT_IMG); List list = systemDictDataMapper.list(codes); Map dataMap = list.stream().collect(Collectors.toMap(SystemDictData::getLabel, Function.identity())); List newDataList = new ArrayList<>(); newCarEventDTOList.stream().forEach(obj->{ if(obj.getVehiclePicUrl()!=null && !obj.getVehiclePicUrl().startsWith(HKConstants.IMG_INDEX) && !obj.getVehiclePicUrl().startsWith(HKConstants.IMG_INDEX_ERROR)){ obj.setVehiclePicUrl(dataMap.get(Constants.FTP_RESOURCE_PATH).getCode() +dataMap.get(Constants.CAR_EVENT_IMG).getCode() +obj.getVehiclePicUrl()); } if(obj.getPlatePicUrl()!=null && !obj.getVehiclePicUrl().startsWith(HKConstants.IMG_INDEX) && !obj.getVehiclePicUrl().startsWith(HKConstants.IMG_INDEX_ERROR)){ obj.setPlatePicUrl(dataMap.get(Constants.FTP_RESOURCE_PATH).getCode() +dataMap.get(Constants.CAR_EVENT_IMG).getCode() +obj.getPlatePicUrl()); } obj.setEventTypeName(HKConstants.EventTypes.getName(obj.getEventType()) ); newDataList.add(obj); }); return newDataList; } }