|  |  |  | 
|---|
|  |  |  | import cn.hutool.core.lang.Validator; | 
|---|
|  |  |  | import cn.hutool.core.util.PhoneUtil; | 
|---|
|  |  |  | 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.DateUtil; | 
|---|
|  |  |  | import com.doumee.core.utils.Utils; | 
|---|
|  |  |  | import com.doumee.dao.admin.request.DeviceEventQuery; | 
|---|
|  |  |  | import com.doumee.dao.admin.response.DeviceEventDTO; | 
|---|
|  |  |  | import com.doumee.dao.business.DeviceEventMapper; | 
|---|
|  |  |  | import com.doumee.dao.business.join.DeviceEventJoinMapper; | 
|---|
|  |  |  | import com.doumee.dao.business.model.Company; | 
|---|
|  |  |  | import com.doumee.dao.business.model.DeviceEvent; | 
|---|
|  |  |  | import com.doumee.dao.business.model.Member; | 
|---|
|  |  |  | 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.DeviceEventVo; | 
|---|
|  |  |  | import com.doumee.dao.system.vo.SystemDictDataListVO; | 
|---|
|  |  |  | import com.doumee.service.business.DeviceEventService; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
|---|
|  |  |  | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  | import org.springframework.util.CollectionUtils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.text.ParseException; | 
|---|
|  |  |  | import java.text.SimpleDateFormat; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  | import java.util.function.Function; | 
|---|
|  |  |  | import java.util.stream.Collectors; | 
|---|
|  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public PageData<DeviceEventDTO> findDeviceEventDTOPage(PageWrap<DeviceEvent> pageWrap) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | IPage<DeviceEventDTO> deviceEventDTOIPage = getDataInfo(pageWrap); | 
|---|
|  |  |  | if(null != deviceEventDTOIPage && deviceEventDTOIPage.getRecords().size() > 0) { | 
|---|
|  |  |  | deviceEventDTOIPage.setRecords(newDeviceEvent(deviceEventDTOIPage.getRecords())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return PageData.from(deviceEventDTOIPage); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<DeviceEventVo> findDeviceEventExcel(PageWrap<DeviceEvent> pageWrap) { | 
|---|
|  |  |  | IPage<DeviceEventDTO> deviceEventExcel = getDataInfo(pageWrap); | 
|---|
|  |  |  | List<DeviceEventVo> voList = new ArrayList<>(); | 
|---|
|  |  |  | if(null != deviceEventExcel && deviceEventExcel.getRecords().size() > 0) { | 
|---|
|  |  |  | deviceEventExcel.getRecords().stream().forEach(obj-> { | 
|---|
|  |  |  | DeviceEventVo eventVo = new DeviceEventVo(); | 
|---|
|  |  |  | if(null != obj.getPersonType()) { | 
|---|
|  |  |  | if(Constants.ZERO == obj.getPersonType()){ | 
|---|
|  |  |  | eventVo.setPersonTypeName(Constants.Status.LW_FK.getDes()); | 
|---|
|  |  |  | }else if(Constants.ONE == obj.getPersonType()) { | 
|---|
|  |  |  | eventVo.setPersonTypeName(Constants.Status.PT_FK.getDes()); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | eventVo.setPersonTypeName(Constants.Status.NB_FK.getDes()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | eventVo.setPersonTypeName(""); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | eventVo.setPersonName(obj.getPersonName()); | 
|---|
|  |  |  | eventVo.setPersonPhone(obj.getPersonName()); | 
|---|
|  |  |  | eventVo.setPersonIdcardDecode(obj.getPersonIdcardDecode()); | 
|---|
|  |  |  | eventVo.setPersonCompanyName(obj.getPersonCompanyName()); | 
|---|
|  |  |  | eventVo.setDevName(obj.getDevName()); | 
|---|
|  |  |  | eventVo.setSrcName(obj.getSrcName()); | 
|---|
|  |  |  | if(null != obj.getExtEventInOut()) { | 
|---|
|  |  |  | if(Constants.ZERO == obj.getExtEventInOut()){ | 
|---|
|  |  |  | eventVo.setExtEventInOutName(Constants.Status.OUT.getDes()); | 
|---|
|  |  |  | }else if(Constants.ONE == obj.getPersonType()) { | 
|---|
|  |  |  | eventVo.setExtEventInOutName(Constants.Status.PT_FK.getDes()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | eventVo.setExtEventInOutName(""); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | eventVo.setEventTypeName(HKConstants.EventTypes.getName(obj.getEventType())) ; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | eventVo.setHappenTime(DateUtil.timeEscape(obj.getHappenTime())); | 
|---|
|  |  |  | } catch (ParseException e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | voList.add(eventVo); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return voList; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private IPage<DeviceEventDTO> getDataInfo(PageWrap<DeviceEvent> pageWrap) { | 
|---|
|  |  |  | IPage<DeviceEvent> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
|---|
|  |  |  | MPJLambdaWrapper<DeviceEvent> queryWrapper = new MPJLambdaWrapper<>(); | 
|---|
|  |  |  | Utils.MP.blankToNull(pageWrap.getModel()); | 
|---|
|  |  |  | 
|---|
|  |  |  | //是否包含英文 | 
|---|
|  |  |  | boolean hasWord = ReUtil.contains(PatternPool.WORD, pageWrap.getModel().getKeyWords()); | 
|---|
|  |  |  | queryWrapper.leftJoin(Member.class,Member::getHkId,DeviceEvent::getExtEventPersonNo) | 
|---|
|  |  |  | .leftJoin(Company.class,Company::getId,Member::getCompanyId) | 
|---|
|  |  |  | .selectAll(DeviceEvent.class) | 
|---|
|  |  |  | .selectAs(Member::getName,DeviceEventDTO::getPersonName) | 
|---|
|  |  |  | .selectAs(Member::getType,DeviceEventDTO::getPersonType) | 
|---|
|  |  |  | .selectAs(Member::getPhone,DeviceEventDTO::getPersonPhone) | 
|---|
|  |  |  | .selectAs(Member::getIdcardDecode,DeviceEventDTO::getPersonIdcardDecode) | 
|---|
|  |  |  | .selectAs(Company::getName,DeviceEventDTO::getPersonCompanyName); | 
|---|
|  |  |  | queryWrapper.like(number, Member::getPhone, pageWrap.getModel().getKeyWords()) | 
|---|
|  |  |  | .like((b||hasWord),Member::getName, pageWrap.getModel().getKeyWords()) | 
|---|
|  |  |  | .eq(StringUtils.isNotBlank(pageWrap.getModel().getPersonType()), | 
|---|
|  |  |  | Member::getType, | 
|---|
|  |  |  | pageWrap.getModel().getPersonType()) | 
|---|
|  |  |  | .eq( pageWrap.getModel().getEventType()!=null, | 
|---|
|  |  |  | DeviceEvent::getEventType, | 
|---|
|  |  |  | pageWrap.getModel().getEventType()) | 
|---|
|  |  |  | .ge(Objects.nonNull(pageWrap.getModel().getStartTime()), | 
|---|
|  |  |  | DeviceEvent::getCreateDate, | 
|---|
|  |  |  | pageWrap.getModel().getStartTime()) | 
|---|
|  |  |  | .le(Objects.nonNull(pageWrap.getModel().getEndTime()), | 
|---|
|  |  |  | DeviceEvent::getCreateDate, | 
|---|
|  |  |  | pageWrap.getModel().getEndTime()); | 
|---|
|  |  |  | .leftJoin(Company.class,Company::getId,Member::getCompanyId) | 
|---|
|  |  |  | .leftJoin(Device.class,Device::getHkId,DeviceEvent::getSrcParentIndex) | 
|---|
|  |  |  | .selectAll(DeviceEvent.class) | 
|---|
|  |  |  | .selectAs(Member::getName,DeviceEventDTO::getPersonName) | 
|---|
|  |  |  | .selectAs(Member::getId,DeviceEventDTO::getMemberId) | 
|---|
|  |  |  | .selectAs(Member::getType,DeviceEventDTO::getPersonType) | 
|---|
|  |  |  | .selectAs(Member::getPhone,DeviceEventDTO::getPersonPhone) | 
|---|
|  |  |  | .selectAs(Member::getIdcardDecode,DeviceEventDTO::getPersonIdcardDecode) | 
|---|
|  |  |  | .selectAs(Device::getName,DeviceEventDTO::getDevName) | 
|---|
|  |  |  | .selectAs(Company::getName,DeviceEventDTO::getPersonCompanyName); | 
|---|
|  |  |  | queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getKeyWords()),w-> | 
|---|
|  |  |  | w.like(Member::getName,pageWrap.getModel().getKeyWords()).or().like(Member::getPhone,pageWrap.getModel().getKeyWords())) | 
|---|
|  |  |  | .eq(StringUtils.equals(pageWrap.getModel().getPersonType(),Constants.TWO+""), | 
|---|
|  |  |  | Member::getType, | 
|---|
|  |  |  | pageWrap.getModel().getPersonType()) | 
|---|
|  |  |  | .eq(Objects.nonNull(pageWrap.getModel().getEventType()), | 
|---|
|  |  |  | DeviceEvent::getEventType, | 
|---|
|  |  |  | pageWrap.getModel().getEventType()) | 
|---|
|  |  |  | .like(Objects.nonNull(pageWrap.getModel().getCompanyName()),Company::getName, | 
|---|
|  |  |  | pageWrap.getModel().getCompanyName()) | 
|---|
|  |  |  | .ge(Objects.nonNull(pageWrap.getModel().getStartTime()), | 
|---|
|  |  |  | DeviceEvent::getCreateDate, | 
|---|
|  |  |  | pageWrap.getModel().getStartTime()) | 
|---|
|  |  |  | .le(Objects.nonNull(pageWrap.getModel().getEndTime()), | 
|---|
|  |  |  | DeviceEvent::getCreateDate, | 
|---|
|  |  |  | pageWrap.getModel().getEndTime()) | 
|---|
|  |  |  | .isNull(StringUtils.isNotBlank(pageWrap.getModel().getPersonType()) && !StringUtils.equals(pageWrap.getModel().getPersonType(),Constants.TWO+""),Member::getId)//除了内部人员都是外来访客 | 
|---|
|  |  |  | .orderByDesc(DeviceEvent::getCreateDate); | 
|---|
|  |  |  | queryWrapper.orderByDesc(DeviceEvent::getHappenTime); | 
|---|
|  |  |  | IPage<DeviceEventDTO> deviceEventDTOIPage = deviceEventJoinMapper.selectJoinPage(page, DeviceEventDTO.class, queryWrapper); | 
|---|
|  |  |  | if(null != deviceEventDTOIPage && deviceEventDTOIPage.getRecords().size() > 0) { | 
|---|
|  |  |  | deviceEventDTOIPage.setRecords(newDeviceEvent(deviceEventDTOIPage.getRecords())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return PageData.from(deviceEventDTOIPage); | 
|---|
|  |  |  | return deviceEventDTOIPage; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 对图片进行判断处理 | 
|---|
|  |  |  | private List<DeviceEventDTO> newDeviceEvent(List<DeviceEventDTO> DeviceEventDTOList) { | 
|---|
|  |  |  | List<DeviceEventDTO> newDeviceEventDTOS = new ArrayList<>(); | 
|---|
|  |  |  | List<String> codes = Arrays.asList(Constants.FTP_RESOURCE_PATH,Constants.DEVICE_EVENT_IMG); | 
|---|
|  |  |  | List<SystemDictData> list = systemDictDataMapper.list(codes); | 
|---|
|  |  |  | for (DeviceEventDTO dto:DeviceEventDTOList) { | 
|---|
|  |  |  | if(StringUtils.isNotBlank(dto.getExtEventPictureURL())) { | 
|---|
|  |  |  | String extEventPictureURL = dto.getExtEventPictureURL(); | 
|---|
|  |  |  | // 使用split("/")将URL按照"/"进行分割成多个部分 | 
|---|
|  |  |  | String[] parts = extEventPictureURL.split("\\\\"); | 
|---|
|  |  |  | String newStr = parts[0]; | 
|---|
|  |  |  | boolean number = Validator.isNumber(newStr); | 
|---|
|  |  |  | if(number) { | 
|---|
|  |  |  | List<String> codes = Arrays.asList(Constants.FTP_RESOURCE_PATH,Constants.DEVICE_EVENT_IMG); | 
|---|
|  |  |  | List<SystemDictData> list = systemDictDataMapper.list(codes); | 
|---|
|  |  |  | if(StringUtils.isNotBlank(dto.getExtEventPictureURL()) | 
|---|
|  |  |  | && !dto.getExtEventPictureURL().startsWith(HKConstants.IMG_INDEX) | 
|---|
|  |  |  | && !dto.getExtEventPictureURL().startsWith(HKConstants.IMG_INDEX_ERROR)) { | 
|---|
|  |  |  | if(null != list && list.size() > 0) { | 
|---|
|  |  |  | Map<String,SystemDictData> dataMap = list.stream().collect(Collectors.toMap(SystemDictData::getLabel, Function.identity())); | 
|---|
|  |  |  | dto.setExtEventPictureURL(dataMap.get(Constants.FTP_RESOURCE_PATH).getCode() | 
|---|
|  |  |  | +dataMap.get(Constants.DEVICE_EVENT_IMG).getCode() | 
|---|
|  |  |  | +dto.getExtEventPictureURL()); | 
|---|
|  |  |  | if(StringUtils.isNotBlank(dto.getExtEventPictureURL())){ | 
|---|
|  |  |  | dto.setExtEventPictureURL(dataMap.get(Constants.FTP_RESOURCE_PATH).getCode() | 
|---|
|  |  |  | +dataMap.get(Constants.DEVICE_EVENT_IMG).getCode() | 
|---|
|  |  |  | +dto.getExtEventPictureURL()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | dto.setExtEventPictureURL(null); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | dto.setEventTypeName(HKConstants.EventTypes.getName(dto.getEventType())) ; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | dto.setHappenTime(DateUtil.timeEscape(dto.getHappenTime())); | 
|---|
|  |  |  | } catch (ParseException e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | newDeviceEventDTOS.add(dto); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return newDeviceEventDTOS; | 
|---|