Blame view

MemberServiceImpl.java 6.43 KB
涂亚平 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
package com.subsidy.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.subsidy.dto.member.AddProjectMembersDTO;
import com.subsidy.dto.member.DownloadFailClassMembers;
import com.subsidy.dto.member.DownloadFailClassMembersDTO;
import com.subsidy.dto.member.ImportClassMemberDTO;
import com.subsidy.mapper.*;
import com.subsidy.model.GroupMemberMappingDO;
import com.subsidy.model.LaborGroupDictDO;
import com.subsidy.model.MemberDO;
import com.subsidy.model.ProjectDO;
import com.subsidy.service.MemberService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.util.excel.ExcelUtil;
import com.subsidy.vo.member.GetMembersVO;
import com.subsidy.vo.member.GroupMembersVO;
import com.subsidy.vo.member.ImportClassMembersVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author Tuyp
 * @since 2024-07-18
 */
@Service
public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberDO> implements MemberService {

    @Autowired
    private LaborGroupDictMapper laborGroupDictMapper;

    @Autowired
    private GroupMemberMappingMapper groupMemberMappingMapper;

    @Autowired
    private ProjectMemberMappingMapper projectMemberMappingMapper;

    @Autowired
    private ProjectMapper projectMapper;

    @Autowired
    private MemberMapper memberMapper;

    public GetMembersVO getMembers(ProjectDO projectDO) {

        GetMembersVO getMembersVO = new GetMembersVO();

        ProjectDO projectDO1 = projectMapper.selectById(projectDO.getId());

        LaborGroupDictDO laborGroupDictDO1 = laborGroupDictMapper.selectOne(new QueryWrapper<LaborGroupDictDO>()
                .lambda()
                .eq(LaborGroupDictDO::getLaborId, projectDO1.getLaborServiceId())
                .isNull(LaborGroupDictDO::getParentId));

        //父节点
        getMembersVO.setId(laborGroupDictDO1.getId());
        getMembersVO.setGroupName(laborGroupDictDO1.getGroupName());
        //人
        List<GroupMembersVO> groupMembersVOS = groupMemberMappingMapper.groupMembers(laborGroupDictDO1.getId(),projectDO.getId());
        getMembersVO.setGroupMembersVOS(groupMembersVOS);

        //子节点
        List<LaborGroupDictDO> laborGroupDictDOS = laborGroupDictMapper.selectList(new QueryWrapper<LaborGroupDictDO>()
                .lambda()
                .eq(LaborGroupDictDO::getParentId, laborGroupDictDO1.getId()));

        List<GetMembersVO> getMembersVOS = new ArrayList<>();

        for (LaborGroupDictDO laborGroupDictDO2 : laborGroupDictDOS) {
            GetMembersVO getMembersVO1 = new GetMembersVO();
            List<GroupMembersVO> groupMembersVOS1 = groupMemberMappingMapper.groupMembers(laborGroupDictDO2.getId(),projectDO.getId());
            getMembersVO1.setGroupName(laborGroupDictDO2.getGroupName());
            getMembersVO1.setId(laborGroupDictDO2.getId());
            getMembersVO1.setGroupMembersVOS(groupMembersVOS1);
            getMembersVOS.add(getMembersVO1);
        }
        getMembersVO.setGetMembersVOS(getMembersVOS);

        return getMembersVO;
    }


    public ImportClassMembersVO importClassMembers(MultipartFile multipartFile, Long projectId) {

        ImportClassMembersVO importClassMembersVO = new ImportClassMembersVO();

        ProjectDO projectDO = projectMapper.selectById(projectId);

        List<ImportClassMemberDTO> importClassMemberDTOS = ExcelUtil.readExcel(null, ImportClassMemberDTO.class, multipartFile);

        //查找企业下所有的学员的手机号    手机 姓名 身份证
        List<String> companyMembers = groupMemberMappingMapper.allLaborMembers(projectDO.getLaborServiceId());
        //查找项目下已经存在的人
        List<String> projectMembers = groupMemberMappingMapper.allProjectMembers(projectDO.getId());

        List<ImportClassMemberDTO> successMembers = new ArrayList<>();
        List<ImportClassMemberDTO> failMembers = new ArrayList<>();

        //查看该学员是否该企业下的人,不是的话就要返回  是的话直接导入成功
        for (ImportClassMemberDTO imd : importClassMemberDTOS) {

            //这个人是否已经在项目里了,在的话就不属于失败
            if (null == imd.getUserName() || null == imd.getTelephone() || null == imd.getIdCard()) {
                imd.setReason("人员信息不完整");
                failMembers.add(imd);
            } else if (!companyMembers.contains(imd.getUserName() + imd.getIdCard())) {
                imd.setReason("企业内未查询到该成员信息");
                failMembers.add(imd);
            } else if (successMembers.contains(imd.getUserName() + imd.getIdCard())||projectMembers.contains(imd.getUserName() + imd.getIdCard())) {
                imd.setReason("人员信息重复");
                failMembers.add(imd);
            } else{
                MemberDO memberDO = memberMapper.selectOne(new QueryWrapper<MemberDO>()
                .lambda()
                .eq(MemberDO::getTelephone,imd.getTelephone()));
                imd.setId(memberDO.getId());
                imd.setLaborId(projectDO.getLaborServiceId());

                GroupMemberMappingDO groupMemberMappingDO = groupMemberMappingMapper.selectOne(new QueryWrapper<GroupMemberMappingDO>()
                .lambda()
                .eq(GroupMemberMappingDO::getMemberId,memberDO.getId()));
                imd.setGroupId(groupMemberMappingDO.getGroupId());
                successMembers.add(imd);
            }
        }
        importClassMembersVO.setSuccessMembers(successMembers);
        importClassMembersVO.setFailureMembers(failMembers);
        return importClassMembersVO;
    }

    public void downloadFailClassMembers(DownloadFailClassMembers downloadFailClassMembers) {
        List<DownloadFailClassMembersDTO> downloadFailClassMembersDTOS = downloadFailClassMembers.getDownloadFailClassMembersDTOS();
        ExcelUtil.writeExcel(downloadFailClassMembersDTOS, DownloadFailClassMembersDTO.class);
    }

    public void addProjectMembers(AddProjectMembersDTO addProjectMembersDTO) {
        addProjectMembersDTO.getProjectMemberMappingDOS().stream().forEach(x->{
            x.setProjectId(addProjectMembersDTO.getProjectId());
            x.setStatus(1);
            projectMemberMappingMapper.insert(x);
        });
    }

}