|  |  | 
 |  |  | 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 org.springframework.stereotype.Service; | 
 |  |  | import org.springframework.util.CollectionUtils; | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Objects; | 
 |  |  | import java.util.*; | 
 |  |  | import java.util.function.Function; | 
 |  |  | import java.util.stream.Collectors; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 停车场事件推送记录表Service实现 | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private CarEventJoinMapper carEventJoinMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private SystemDictDataMapper systemDictDataMapper; | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public Integer create(CarEvent carEvent) { | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public PageData<CarEventDTO> findVisitCarPage(PageWrap<CarEvent> 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<CarEventDTO> carEventDTOIPage = getDataInfo(pageWrap); | 
 |  |  |         if(null != carEventDTOIPage && carEventDTOIPage.getRecords().size() > 0) { | 
 |  |  |             carEventDTOIPage.setRecords(newCarEventDTO(carEventDTOIPage.getRecords())); | 
 |  |  |         } | 
 |  |  |         return PageData.from(carEventDTOIPage); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |         IPage<VisitEvent> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
 |  |  |     @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(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()); | 
 |  |  |                 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(Cars.class,Cars::getCode,CarEvent::getPlateNos) | 
 |  |  |                     .leftJoin(Member.class,Member::getId,Cars::getMemberId) | 
 |  |  |                     .leftJoin(Company.class,Company::getId,Member::getCompanyId); | 
 |  |  |         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()) | 
 |  |  |                     .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(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()); | 
 |  |  |         IPage<CarEventDTO> carEventDTOIPage = carEventJoinMapper.selectJoinPage(page, CarEventDTO.class, queryWrapper); | 
 |  |  |                 .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); | 
 |  |  |  | 
 |  |  |         return PageData.from(carEventDTOIPage); | 
 |  |  |         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<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; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |