美文网首页
mybatis plus使用

mybatis plus使用

作者: 盗生一 | 来源:发表于2020-08-24 11:21 被阅读0次
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;
    }

}

相关文章

网友评论

      本文标题:mybatis plus使用

      本文链接:https://www.haomeiwen.com/subject/fizgjktx.html