美文网首页
1.List转为List

1.List转为List

作者: 盗生一 | 来源:发表于2020-09-03 09:43 被阅读0次
    package com.gxhj.safecampus.visit.service.impl;
    
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.baomidou.mybatisplus.core.toolkit.StringUtils;
    import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
    import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    import com.gxhj.commontools.utils.BeanUtils;
    import com.gxhj.commontools.utils.CollectionUtils;
    import com.gxhj.commontools.utils.ConvertUtils;
    import com.gxhj.core.base.service.impl.CommonServiceImpl;
    import com.gxhj.core.exception.BusinessException;
    import com.gxhj.core.model.PageInfo;
    import com.gxhj.safecampus.person.entity.EmployeeInfo;
    import com.gxhj.safecampus.person.service.IEmployeeService;
    import com.gxhj.safecampus.visit.constant.AccessingInviteStatusType;
    import com.gxhj.safecampus.visit.entity.AccessingInviteInfo;
    import com.gxhj.safecampus.visit.mapper.AccessingInviteMapper;
    import com.gxhj.safecampus.visit.service.IAccessingInviteService;
    import com.gxhj.safecampus.visit.service.IAccessingRecordService;
    import com.gxhj.safecampus.visit.vo.AccessingInviteInfoVo;
    import com.gxhj.usermanage.entity.GroupInfo;
    import com.gxhj.usermanage.service.IGroupService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import java.util.function.Function;
    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;
    
        @Autowired
        private IEmployeeService employeeService;
    
        @Autowired
        private IGroupService groupService;
    
        @Override
        public String entityName() {
            return "访问邀请";
        }
    
        @Override
        public AccessingInviteInfo getInfoById(Serializable id) {
                AccessingInviteInfo info = super.getById(id);
                if (info==null) {
                    throw new BusinessException(String.format("%s编号对应信息不存在", this.entityName()));
                }else {
                    EmployeeInfo employeeInfo = employeeService.getById(info.getFirstTrialPersonal());
                    GroupInfo groupInfo = groupService.getById(info.getUnitID());
                    // 邀请人姓名
                    info.setFinalMind(employeeInfo.getDepartment());
                    // 邀请人部门
                    info.setFirstTrialMind(employeeInfo.getDepartment());
                    // 邀请人单位
                    info.setVisitMatter(groupInfo.getName());
                    return info;
                }
        }
    
        @Override
        public IPage<AccessingInviteInfo> page(AccessingInviteInfoVo queryCondition, PageInfo pageInfo) {
            // 10(1,0) 待初审  46(4,6)终审通过
            // 构建分页信息
            Page<AccessingInviteInfo> page = new Page<>(pageInfo.getPageIndex(), pageInfo.getPageSize());
            //查询条件:单位ID 访问对象名 审核状态 起止时间
            // 通过对象名获取 对象id
            List<String> lstEmployeeIds = null;
            if (StringUtils.isNotBlank(queryCondition.getIntervieweesName())) {
                lstEmployeeIds = this.employeeService.lambdaQuery().select(EmployeeInfo::getEmployeeId)
                        .like(EmployeeInfo::getName, queryCondition.getIntervieweesName())
                        .list()
                        .stream().map(EmployeeInfo::getEmployeeId).collect(Collectors.toList());
            }
            LambdaQueryChainWrapper<AccessingInviteInfo> le = super.lambdaQuery()
                    .eq(queryCondition.getUnitID()!=null, AccessingInviteInfo::getUnitID, queryCondition.getUnitID())
                    .ge(queryCondition.getStartDate() != null, AccessingInviteInfo::getAccessingTime, queryCondition.getStartDate())
                    .le(queryCondition.getEndDate() != null, AccessingInviteInfo::getBeOffTime, queryCondition.getEndDate())
                    .in(CollectionUtils.isNotEmpty(lstEmployeeIds), AccessingInviteInfo::getFirstTrialPersonal, lstEmployeeIds);
            Integer status = queryCondition.getStatus();
            if (status != null) {
                // 待初审
                if (status == AccessingInviteStatusType.WAIT_FIRST_TRIAL) {
                    le = le.and(wrapper -> wrapper.in(AccessingInviteInfo::getStatus, AccessingInviteStatusType.firstTrialStatus()));
                }
                // 审核通过
                else if (status == AccessingInviteStatusType.FINAL_TRIAL_SUCCESS) {
                    le = le.and(wrapper -> wrapper.in(AccessingInviteInfo::getStatus, AccessingInviteStatusType.finalTrialSuccess()));
                } else {
                    le = le.and(wrapper -> wrapper.in(AccessingInviteInfo::getStatus, status));
                }
            }
            Page<AccessingInviteInfo> pageList = le.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);
            // 通过groupIds获取单位集合
            List<String> lstGroupId = list.stream().map(v -> ConvertUtils.parseStr(v.getUnitID())).collect(Collectors.toList());
    
            Map<String, GroupInfo> groupInfoMap = this.groupService.lambdaQuery().in(CollectionUtils.isNotEmpty(lstGroupId), GroupInfo::getGroupId, lstGroupId)
                    .list()
                    .stream().collect(Collectors.toMap(GroupInfo::getGroupId, Function.identity()));
    
            // 查初审人和邀请人姓名    // 通过对象id集合  邀请对象名
            List<String> lstEmployeeId = list.stream().map(e-> ConvertUtils.parseStr(e.getFirstTrialPersonal())).collect(Collectors.toList());
            Map<String, EmployeeInfo> employeeInfoMap = this.employeeService.getEmployeeInfoMap(lstEmployeeId);
            // 查终审人姓名
            List<String> finalTrailEmployee = list.stream().map(e -> ConvertUtils.parseStr(e.getFinalPersonal())).collect(Collectors.toList());
            Map<String, EmployeeInfo> finalEmployeeInfoMap = this.employeeService.getEmployeeInfoMap(finalTrailEmployee);
    
            // 遍历列表构造Vo对象
            AccessingInviteInfoVo infoVo;
    
            List<AccessingInviteInfo> lstVoInfo = new ArrayList<>(list.size());
    
            GroupInfo defaultGrp = new GroupInfo();
            EmployeeInfo defaultEmp = new EmployeeInfo();
            GroupInfo findGrp;
            EmployeeInfo findEmp;
            for (AccessingInviteInfo accessingInviteInfo : list) {
                infoVo = new AccessingInviteInfoVo();
                // 复制对象信息
                BeanUtils.copy(accessingInviteInfo, infoVo);
                // 设置签到人数
                infoVo.setComingNumber(inviteIDComingNumberMap.getOrDefault(accessingInviteInfo.getAccessingInviteID(), 0));
    
                findEmp = employeeInfoMap.getOrDefault(accessingInviteInfo.getFirstTrialPersonal(), defaultEmp);
                // 设置邀请名
                infoVo.setIntervieweesName(findEmp.getName());
                // 设置初审人
                infoVo.setFirstTrialName(findEmp.getName());
                // 设置总审人
                infoVo.setFinalTrialName(finalEmployeeInfoMap.getOrDefault(accessingInviteInfo.getFinalPersonal(),findEmp).getName());
                // 设置部门
                infoVo.setDepartment(findEmp.getDepartment());
    
                findGrp = groupInfoMap.getOrDefault(accessingInviteInfo.getUnitID(), defaultGrp);
                // 设置单位
                infoVo.setUnitName(findGrp.getName());
                // 设置地址
                infoVo.setUnitAddress(findGrp.getAddress());
                lstVoInfo.add(infoVo);
            }
            return lstVoInfo;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:1.List转为List

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