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.business.VisitEventMapper; 
 | 
import com.doumee.dao.business.join.VisitEventJoinMapper; 
 | 
import com.doumee.dao.business.model.*; 
 | 
import com.doumee.dao.system.SystemDictDataMapper; 
 | 
import com.doumee.dao.system.model.SystemDictData; 
 | 
import com.doumee.service.business.VisitEventService; 
 | 
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 VisitEventServiceImpl implements VisitEventService { 
 | 
  
 | 
    @Autowired 
 | 
    private VisitEventMapper visitEventMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private VisitEventJoinMapper visitEventJoinMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private SystemDictDataMapper systemDictDataMapper; 
 | 
  
 | 
    @Override 
 | 
    public Integer create(VisitEvent visitEvent) { 
 | 
        visitEventMapper.insert(visitEvent); 
 | 
        return visitEvent.getId(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteById(Integer id) { 
 | 
        visitEventMapper.deleteById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void delete(VisitEvent visitEvent) { 
 | 
        UpdateWrapper<VisitEvent> deleteWrapper = new UpdateWrapper<>(visitEvent); 
 | 
        visitEventMapper.delete(deleteWrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<Integer> ids) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        visitEventMapper.deleteBatchIds(ids); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateById(VisitEvent visitEvent) { 
 | 
        visitEventMapper.updateById(visitEvent); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByIdInBatch(List<VisitEvent> visitEvents) { 
 | 
        if (CollectionUtils.isEmpty(visitEvents)) { 
 | 
            return; 
 | 
        } 
 | 
        for (VisitEvent visitEvent: visitEvents) { 
 | 
            this.updateById(visitEvent); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public VisitEvent findById(Integer id) { 
 | 
        return visitEventMapper.selectById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public VisitEvent findOne(VisitEvent visitEvent) { 
 | 
        QueryWrapper<VisitEvent> wrapper = new QueryWrapper<>(visitEvent); 
 | 
        return visitEventMapper.selectOne(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<VisitEvent> findList(VisitEvent visitEvent) { 
 | 
        QueryWrapper<VisitEvent> wrapper = new QueryWrapper<>(visitEvent); 
 | 
        return visitEventMapper.selectList(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public PageData<VisitEvent> findPage(PageWrap<VisitEvent> pageWrap) { 
 | 
        IPage<VisitEvent> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        QueryWrapper<VisitEvent> queryWrapper = new QueryWrapper<>(); 
 | 
        Utils.MP.blankToNull(pageWrap.getModel()); 
 | 
        if (pageWrap.getModel().getId() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getId, pageWrap.getModel().getId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCreator() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getCreator, pageWrap.getModel().getCreator()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCreateDate() != null) { 
 | 
            queryWrapper.lambda().ge(VisitEvent::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); 
 | 
            queryWrapper.lambda().le(VisitEvent::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getEditor() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getEditor, pageWrap.getModel().getEditor()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getEditDate() != null) { 
 | 
            queryWrapper.lambda().ge(VisitEvent::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); 
 | 
            queryWrapper.lambda().le(VisitEvent::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getIsdeleted() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getIsdeleted, pageWrap.getModel().getIsdeleted()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getRemark() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getRemark, pageWrap.getModel().getRemark()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getEventId() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getEventId, pageWrap.getModel().getEventId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getSrcIndex() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getSrcIndex, pageWrap.getModel().getSrcIndex()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getSrcType() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getSrcType, pageWrap.getModel().getSrcType()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getSrcName() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getSrcName, pageWrap.getModel().getSrcName()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getEventType() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getEventType, pageWrap.getModel().getEventType()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getStatus() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getStatus, pageWrap.getModel().getStatus()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getTimeout() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getTimeout, pageWrap.getModel().getTimeout()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getHappenTime() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getHappenTime, pageWrap.getModel().getHappenTime()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getSrcParentIndex() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getSrcParentIndex, pageWrap.getModel().getSrcParentIndex()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getVisitorId() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getVisitorId, pageWrap.getModel().getVisitorId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getPersonName() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getPersonName, pageWrap.getModel().getPersonName()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getSex() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getSex, pageWrap.getModel().getSex()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getIdType() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getIdType, pageWrap.getModel().getIdType()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getIdNo() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getIdNo, pageWrap.getModel().getIdNo()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getBeVisitedPersonName() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getBeVisitedPersonName, pageWrap.getModel().getBeVisitedPersonName()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getBeVisitedPersonOrg() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getBeVisitedPersonOrg, pageWrap.getModel().getBeVisitedPersonOrg()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getVisitorWorkUint() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getVisitorWorkUint, pageWrap.getModel().getVisitorWorkUint()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getVisitorCode() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getVisitorCode, pageWrap.getModel().getVisitorCode()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getPurpose() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getPurpose, pageWrap.getModel().getPurpose()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getSignOrg() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getSignOrg, pageWrap.getModel().getSignOrg()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getStartTime() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getStartTime, pageWrap.getModel().getStartTime()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getEndTime() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getEndTime, pageWrap.getModel().getEndTime()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCarNo() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getCarNo, pageWrap.getModel().getCarNo()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getPhotoUrl() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getPhotoUrl, pageWrap.getModel().getPhotoUrl()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCaptureUrl() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getCaptureUrl, pageWrap.getModel().getCaptureUrl()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getSvrIndexCode() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getSvrIndexCode, pageWrap.getModel().getSvrIndexCode()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getBeVisitedPersonId() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getBeVisitedPersonId, pageWrap.getModel().getBeVisitedPersonId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getBeVisitedPersonOrgId() != null) { 
 | 
            queryWrapper.lambda().eq(VisitEvent::getBeVisitedPersonOrgId, pageWrap.getModel().getBeVisitedPersonOrgId()); 
 | 
        } 
 | 
        for(PageWrap.SortData sortData: pageWrap.getSorts()) { 
 | 
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { 
 | 
                queryWrapper.orderByDesc(sortData.getProperty()); 
 | 
            } else { 
 | 
                queryWrapper.orderByAsc(sortData.getProperty()); 
 | 
            } 
 | 
        } 
 | 
        return PageData.from(visitEventMapper.selectPage(page, queryWrapper)); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public long count(VisitEvent visitEvent) { 
 | 
        QueryWrapper<VisitEvent> wrapper = new QueryWrapper<>(visitEvent); 
 | 
        return visitEventMapper.selectCount(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public PageData<VisitEvent> findVisitPage(PageWrap<VisitEvent> pageWrap) { 
 | 
  
 | 
        IPage<VisitEvent> visitEventDTOIPage = getDataInfo(pageWrap); 
 | 
        if(null != visitEventDTOIPage && visitEventDTOIPage.getRecords().size() > 0) { 
 | 
            visitEventDTOIPage.setRecords(newVisitEvent(visitEventDTOIPage.getRecords())); 
 | 
        } 
 | 
        return PageData.from(visitEventDTOIPage); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<VisitEvent> findPageExcel(PageWrap<VisitEvent> pageWrap) { 
 | 
        IPage<VisitEvent> visitEventExcel = getDataInfo(pageWrap); 
 | 
        return newVisitEvent(visitEventExcel.getRecords()); 
 | 
    } 
 | 
  
 | 
    private IPage<VisitEvent> getDataInfo(PageWrap<VisitEvent> 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<VisitEvent> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        MPJLambdaWrapper<VisitEvent> queryWrapper = new MPJLambdaWrapper<>(); 
 | 
        queryWrapper.selectAll(VisitEvent.class); 
 | 
        queryWrapper.like(number, 
 | 
                VisitEvent::getPhone, 
 | 
                pageWrap.getModel().getKeyWords()) 
 | 
                .like((b ||hasWord), 
 | 
                        VisitEvent::getPersonName, 
 | 
                        pageWrap.getModel().getKeyWords()) 
 | 
                .like(StringUtils.isNotBlank(pageWrap.getModel().getCarNo()), 
 | 
                        VisitEvent::getCarNo, 
 | 
                        pageWrap.getModel().getCarNo()) 
 | 
                .like(StringUtils.isNotBlank(pageWrap.getModel().getVisitorWorkUint()), 
 | 
                        VisitEvent::getVisitorWorkUint, 
 | 
                        pageWrap.getModel().getVisitorWorkUint()) 
 | 
                .like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()), 
 | 
                        Company::getName, 
 | 
                        pageWrap.getModel().getCompanyName()) 
 | 
                .eq(Objects.nonNull(pageWrap.getModel().getEventType()), 
 | 
                        VisitEvent::getEventType, 
 | 
                        pageWrap.getModel().getEventType()) 
 | 
                .ge(StringUtils.isNotBlank(pageWrap.getModel().getStartTime()), 
 | 
                        VisitEvent::getCreateDate, 
 | 
                        pageWrap.getModel().getStartTime()) 
 | 
                .le(StringUtils.isNotBlank(pageWrap.getModel().getEndTime()), 
 | 
                        VisitEvent::getCreateDate, 
 | 
                        pageWrap.getModel().getEndTime()) 
 | 
                .eq(VisitEvent::getIsdeleted,Constants.ZERO); 
 | 
        queryWrapper.orderByDesc(VisitEvent::getHappenTime); 
 | 
        IPage<VisitEvent> visitEventDTOIPage = visitEventJoinMapper.selectJoinPage(page, VisitEvent.class, queryWrapper); 
 | 
        return visitEventDTOIPage; 
 | 
    } 
 | 
  
 | 
  
 | 
    private List<VisitEvent> newVisitEvent(List<VisitEvent> VisitEventDTOList) { 
 | 
        List<String> codes = Arrays.asList(Constants.FTP_RESOURCE_PATH,Constants.MEMBER_IMG); 
 | 
        List<SystemDictData> list = systemDictDataMapper.list(codes); 
 | 
        Map<String,SystemDictData> dataMap = list.stream().collect(Collectors.toMap(SystemDictData::getLabel, Function.identity())); 
 | 
        VisitEventDTOList.stream().forEach(obj->{ 
 | 
  
 | 
            if(StringUtils.isNotBlank( obj.getCaptureUrl()) 
 | 
                    && !obj.getCaptureUrl().startsWith(HKConstants.IMG_INDEX) 
 | 
                    && !obj.getCaptureUrl().startsWith(HKConstants.IMG_INDEX_ERROR)) { 
 | 
                if(null != list && list.size() > 0) { 
 | 
                    obj.setCaptureUrlFull(dataMap.get(Constants.FTP_RESOURCE_PATH).getCode() 
 | 
                            +dataMap.get(Constants.VISIT_EVENT_IMG).getCode() 
 | 
                            +obj.getCaptureUrl()); 
 | 
                } 
 | 
            } 
 | 
            obj.setEventTypeName(HKConstants.EventTypes.getName(obj.getEventType())); ; 
 | 
        }); 
 | 
        return  VisitEventDTOList; 
 | 
    } 
 | 
} 
 |