| package com.doumee.service.business.impl; | 
|   | 
| import com.doumee.core.haikang.model.HKConstants; | 
| import com.doumee.service.business.third.model.PageData; | 
| import com.doumee.service.business.third.model.PageWrap; | 
| import com.doumee.core.utils.Constants; | 
| import com.doumee.core.utils.Utils; | 
| 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.dao.business.vo.CarEventVo; | 
| import com.doumee.dao.business.model.Member; | 
| import com.doumee.dao.system.SystemDictDataMapper; | 
| import com.doumee.dao.system.model.SystemDictData; | 
| 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<CarEvent> deleteWrapper = new UpdateWrapper<>(carEvent); | 
|         carEventMapper.delete(deleteWrapper); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteByIdInBatch(List<Integer> ids) { | 
|         if (CollectionUtils.isEmpty(ids)) { | 
|             return; | 
|         } | 
|         carEventMapper.deleteBatchIds(ids); | 
|     } | 
|   | 
|     @Override | 
|     public void updateById(CarEvent carEvent) { | 
|         carEventMapper.updateById(carEvent); | 
|     } | 
|   | 
|     @Override | 
|     public void updateByIdInBatch(List<CarEvent> 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<CarEvent> wrapper = new QueryWrapper<>(carEvent); | 
|         return carEventMapper.selectOne(wrapper); | 
|     } | 
|   | 
|     @Override | 
|     public List<CarEvent> findList(CarEvent carEvent) { | 
|         QueryWrapper<CarEvent> wrapper = new QueryWrapper<>(carEvent); | 
|         return carEventMapper.selectList(wrapper); | 
|     } | 
|   | 
|     @Override | 
|     public PageData<CarEvent> findPage(PageWrap<CarEvent> pageWrap) { | 
|         IPage<CarEvent> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
|         QueryWrapper<CarEvent> 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<CarEvent> wrapper = new QueryWrapper<>(carEvent); | 
|         return carEventMapper.selectCount(wrapper); | 
|     } | 
|   | 
|     @Override | 
|     public PageData<CarEventDTO> findVisitCarPage(PageWrap<CarEvent> pageWrap) { | 
|         IPage<CarEventDTO> carEventDTOIPage = getDataInfo(pageWrap); | 
|         if(null != carEventDTOIPage && carEventDTOIPage.getRecords().size() > 0) { | 
|             carEventDTOIPage.setRecords(newCarEventDTO(carEventDTOIPage.getRecords())); | 
|         } | 
|         return PageData.from(carEventDTOIPage); | 
|     } | 
|   | 
|     @Override | 
|     public List<CarEventVo> findPageExcel(PageWrap<CarEvent> pageWrap) { | 
|         IPage<CarEventDTO> carEventExcel = getDataInfo(pageWrap); | 
|         List<CarEventVo> 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(obj.getCompanyType() == null){ | 
|                     obj.setCompanyType(Constants.THREE); | 
|                 } | 
|                 vo.setTypeName(Constants.Status.COMPANY_TYPE_FK.getDes()); | 
|                 if(null != obj.getCompanyType()) { | 
|                     if(Constants.ZERO == obj.getCompanyType()){ | 
|                         vo.setTypeName(Constants.Status.COMPANY_TYPE_REL.getDes()); | 
|                     }else if(Constants.ONE == obj.getCompanyType()) { | 
|                         vo.setTypeName(Constants.Status.COMPANY_TYPE_INTERNAL.getDes()); | 
|                     } | 
|                 } | 
|                 vo.setPlateNos(obj.getPlateNos()); | 
|                 vo.setPersonName(obj.getPersonName()); | 
|                 vo.setPersonPhone(obj.getPersonPhone()); | 
|                 if(!Constants.equalsInteger(obj.getPersonType(),Constants.TWO)){ | 
|                     //如果不是内部人员,显示访客企业名称 | 
|                     vo.setPersonCompanyName(obj.getVisitCompanyName()); | 
|                 } | 
|                 vo.setParkName(obj.getParkName()); | 
|                 vo.setGateName(obj.getGateName()); | 
|                 vo.setInoutType(obj.getInoutType()); | 
|                 vo.setHappenTime(obj.getHappenTime()); | 
|                 newDataList.add(vo); | 
|             }); | 
|         } | 
|         return newDataList; | 
|     } | 
|   | 
|     private IPage<CarEventDTO> getDataInfo(PageWrap<CarEvent> pageWrap) { | 
|   | 
|         IPage<CarEvent> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
|         MPJLambdaWrapper<CarEvent> 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(Member::getVisitCompanyName,CarEventDTO::getVisitCompanyName) | 
|                 .selectAs(Company::getName,CarEventDTO::getPersonCompanyName) | 
|                 .selectAs(Company::getType,CarEventDTO::getCompanyType); | 
|         queryWrapper | 
|                 .like(StringUtils.isNotBlank(pageWrap.getModel().getPlateNos()), | 
|                 CarEvent::getPlateNos, | 
|                 pageWrap.getModel().getPlateNos()) | 
|   | 
|                 .and(StringUtils.isNotBlank(pageWrap.getModel().getKeyWords()),i->i.like(Member::getName,pageWrap.getModel().getKeyWords()).or().like(Member::getPhone, | 
|                         pageWrap.getModel().getKeyWords())) | 
|                 .like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()), | 
|                         Company::getName, | 
|                         pageWrap.getModel().getCompanyName()) | 
|   | 
|   | 
|                 .eq( pageWrap.getModel().getQueryUserType()!=null&&Constants.equalsInteger(pageWrap.getModel().getQueryUserType(),Constants.ONE), | 
|                         Company::getType, Constants.ZERO) | 
|   | 
|                 .isNull( pageWrap.getModel().getQueryUserType()!=null&&Constants.equalsInteger(pageWrap.getModel().getQueryUserType(),Constants.ZERO), | 
|                         Member::getCompanyId) | 
|   | 
|                 .eq( pageWrap.getModel().getQueryUserType()!=null&&Constants.equalsInteger(pageWrap.getModel().getQueryUserType(),Constants.TWO), | 
|                         Company::getType, Constants.ONE) | 
|   | 
|   | 
|                 .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<CarEventDTO> carEventDTOIPage = carEventJoinMapper.selectJoinPage(page, CarEventDTO.class, queryWrapper); | 
|         return carEventDTOIPage; | 
|     } | 
|   | 
|     private List<CarEventDTO> newCarEventDTO(List<CarEventDTO> newCarEventDTOList) { | 
|         List<String> codes = Arrays.asList(Constants.FTP_RESOURCE_PATH,Constants.CAR_EVENT_IMG); | 
|         List<SystemDictData> list = systemDictDataMapper.list(codes); | 
|         Map<String,SystemDictData> dataMap = list.stream().collect(Collectors.toMap(SystemDictData::getLabel, Function.identity())); | 
|         List<CarEventDTO> 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()); | 
|             } | 
|             if(!Constants.equalsInteger(obj.getPersonType(),Constants.TWO)){ | 
|                 //如果不是内部人员,显示访客企业名称 | 
|                 obj.setPersonCompanyName(obj.getVisitCompanyName()); | 
|             } | 
|              obj.setEventTypeName(HKConstants.EventTypes.getName(obj.getEventType()) ); | 
|             newDataList.add(obj); | 
|         }); | 
|         return newDataList; | 
|     } | 
|   | 
| } |