package com.gzhj.safecampus.visit.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gzhj.commontools.utils.BeanUtils;
import com.gzhj.commontools.utils.CollectionUtils;
import com.gzhj.core.model.PageInfo;
import com.gzhj.safecampus.visit.entity.AccessingInviteInfo;
import com.gzhj.safecampus.visit.mapper.AccessingInviteMapper;
import com.gzhj.safecampus.visit.service.IAccessingInviteService;
import com.gzhj.safecampus.visit.service.IAccessingRecordService;
import com.gzhj.safecampus.visit.vo.AccessingInviteInfoVo;
import com.gzhj.usermanage.utils.CommonServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* <p>
* 服务实现类
* </p>
*
* @author ZS
* @since 2020-08-20
*/
@Service
public class AccessingInviteServiceImpl extends CommonServiceImpl<AccessingInviteMapper, AccessingInviteInfoVo, AccessingInviteInfo> implements IAccessingInviteService {
@Autowired
private IAccessingRecordService iAccessingRecordService;
@Override
public String entityName() {
return "访问邀请";
}
@Override
public IPage<AccessingInviteInfo> page(AccessingInviteInfoVo queryCondition, PageInfo pageInfo) {
// 10(1,0) 待初审 46(4,6)终审通过
// 构建分页信息
Page<AccessingInviteInfo> page = new Page<>(pageInfo.getPageIndex(), pageInfo.getPageSize());
System.out.println("pageInfo = " + pageInfo.toString());
System.out.println("queryCondition = " + queryCondition);
//查询条件:单位ID 访问对象名 审核状态 起止时间
Page<AccessingInviteInfo> pageList = super.lambdaQuery().eq(StringUtils.isNotBlank(queryCondition.getUnitID()), AccessingInviteInfo::getUnitID, queryCondition.getUnitID())
.like(StringUtils.isNotBlank(queryCondition.getIntervieweesName()), AccessingInviteInfo::getIntervieweesName, queryCondition.getIntervieweesName())
.ge(queryCondition.getStartDate() != null, AccessingInviteInfo::getAccessingTime, queryCondition.getStartDate())
.le(queryCondition.getEndDate() != null, AccessingInviteInfo::getBeOffTime, queryCondition.getEndDate())
.and(queryCondition.getStatus() != null, wrapper -> wrapper.in(queryCondition.getStatus() == 10, AccessingInviteInfo::getStatus, Arrays.asList(0, 1))
.in(queryCondition.getStatus() == 46, AccessingInviteInfo::getStatus, Arrays.asList(4, 6))
.in(queryCondition.getStatus() != 10 && queryCondition.getStatus() != 46, AccessingInviteInfo::getStatus, queryCondition.getStatus()))
.orderByDesc(AccessingInviteInfo::getCreateTime)
.page(page);
// 查询结果处理
if (CollectionUtils.isNotEmpty(pageList.getRecords())) {
// 处理附件预览地址
processListEntityFileUrl(pageList.getRecords());
// 处理结果数据
pageList.setRecords(this.afterQuery(pageList.getRecords()));
}
return pageList;
}
@Override
public List<AccessingInviteInfo> afterQuery(List<AccessingInviteInfo> list) {
// 获取邀请id集合
List<Integer> lstInviteId = list.stream().map(AccessingInviteInfo::getAccessingInviteID).collect(Collectors.toList());
// 通过邀请id集合获取对应邀请的签到人数
Map<Integer, Integer> inviteIDComingNumberMap = this.iAccessingRecordService.selectComingNumber(lstInviteId);
// 遍历列表构造Vo对象
AccessingInviteInfoVo infoVo;
List<AccessingInviteInfo> lstVoInfo = new ArrayList<>(list.size());
for (AccessingInviteInfo accessingInviteInfo : list) {
infoVo = new AccessingInviteInfoVo();
// 复制对象信息
BeanUtils.copy(accessingInviteInfo, infoVo);
// 设置签到人数
infoVo.setComingNumber(inviteIDComingNumberMap.getOrDefault(accessingInviteInfo.getAccessingInviteID(), 0));
lstVoInfo.add(infoVo);
}
return lstVoInfo;
}
}
网友评论