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.admin.request.VisitEventQuery;
|
import com.doumee.dao.admin.response.DeviceEventDTO;
|
import com.doumee.dao.admin.response.VisitEventDTO;
|
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<VisitEventDTO> findVisitPage(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 .leftJoin(Visits.class,Visits::getHkId,VisitEvent::getVisitorId);
|
queryWrapper.selectAll(VisitEvent.class)
|
.selectAs(Visits::getCompanyName,VisitEventDTO::getPersonCompanyName);
|
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().getKeyWords())
|
.like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),
|
Company::getName,
|
pageWrap.getModel().getCompanyName())
|
.eq(Objects.nonNull(pageWrap.getModel().getEventType()),
|
VisitEvent::getEventType,
|
pageWrap.getModel().getEventType())
|
.ge(Objects.nonNull(pageWrap.getModel().getStartTime()),
|
VisitEvent::getHappenTime,
|
pageWrap.getModel().getStartTime())
|
.le(Objects.nonNull(pageWrap.getModel().getEndTime()),
|
VisitEvent::getHappenTime,
|
pageWrap.getModel().getEndTime());
|
queryWrapper.orderByDesc(VisitEvent::getHappenTime);
|
IPage<VisitEventDTO> visitEventDTOIPage = visitEventJoinMapper.selectJoinPage(page, VisitEventDTO.class, queryWrapper);
|
if(null != visitEventDTOIPage && visitEventDTOIPage.getRecords().size() > 0) {
|
visitEventDTOIPage.setRecords(newVisitEvent(visitEventDTOIPage.getRecords()));
|
}
|
return PageData.from(visitEventDTOIPage);
|
}
|
|
private List<VisitEventDTO> newVisitEvent(List<VisitEventDTO> 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()));
|
List<VisitEventDTO> newDataList = new ArrayList<>();
|
VisitEventDTOList.stream().forEach(obj->{
|
obj.setCaptureUrl(dataMap.get(Constants.FTP_RESOURCE_PATH).getCode()
|
+dataMap.get(Constants.MEMBER_IMG).getCode()
|
+obj.getCaptureUrl());
|
if(Constants.formatIntegerNum(obj.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_IN.getKey()){
|
obj.setEventTypeName(HKConstants.EventTypes.VISIT_SIGN_IN.getName());
|
}else if(Constants.formatIntegerNum(obj.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_OUT.getKey()){
|
obj.setEventTypeName(HKConstants.EventTypes.VISIT_SIGN_OUT.getName());
|
}
|
newDataList.add(obj);
|
});
|
return newDataList;
|
}
|
}
|