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.dao.business.vo.VisitEventCountVO;
|
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.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().getInOrOut() != null) {
|
queryWrapper.lambda().eq(VisitEvent::getInOrOut, pageWrap.getModel().getInOrOut());
|
}
|
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 VisitEventCountVO countNum(VisitEvent model){
|
VisitEventCountVO data = new VisitEventCountVO();
|
data.setEventNum(0l);
|
data.setVisitorNum(0l);
|
Long count = visitEventJoinMapper.selectCount(new QueryWrapper<VisitEvent>().lambda()
|
.ge(StringUtils.isNotBlank(model.getStartTime()), VisitEvent::getCreateDate, model.getStartTime())
|
.le(StringUtils.isNotBlank(model.getEndTime()), VisitEvent::getCreateDate,model.getEndTime())
|
.eq(VisitEvent::getInOrOut,Constants.ZERO)
|
.isNotNull(VisitEvent::getVisitorId)
|
.eq(VisitEvent::getEventType,HKConstants.EventTypes.VISIT_SIGN_ICCM_PASS.getKey())
|
);
|
if(count!=null){
|
data.setEventNum(count);
|
}
|
Long count1 = visitEventJoinMapper.selectCount(new QueryWrapper<VisitEvent>().lambda()
|
.ge(StringUtils.isNotBlank(model.getStartTime()),VisitEvent::getCreateDate, model.getStartTime())
|
.le(StringUtils.isNotBlank(model.getEndTime()), VisitEvent::getCreateDate,model.getEndTime())
|
.eq( VisitEvent::getIsdeleted,Constants.ZERO)
|
.eq( VisitEvent::getInOrOut,Constants.ZERO)
|
.isNotNull(VisitEvent::getVisitorId)
|
.eq(VisitEvent::getEventType,HKConstants.EventTypes.VISIT_SIGN_ICCM_PASS.getKey())
|
.groupBy(VisitEvent::getVisitorId)
|
);
|
if(count1!=null){
|
data.setVisitorNum(count);
|
}
|
return data;
|
}
|
@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())
|
.eq(Objects.nonNull(pageWrap.getModel().getInOrOut()),
|
VisitEvent::getInOrOut,
|
pageWrap.getModel().getInOrOut())
|
.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;
|
}
|
}
|