whywhyo
2023-05-19 aa989ba0e4f3839dd7bbb47f422f8e7d6785af7e
zhang-content/src/main/java/com/ruoyi/service/impl/ZInfoUserServiceImpl.java
@@ -16,6 +16,8 @@
import com.ruoyi.domain.ZfEvent;
import com.ruoyi.domain.ZfRelation;
import com.ruoyi.domain.dto.EmpowerDto;
import com.ruoyi.domain.dto.Genealogy;
import com.ruoyi.domain.dto.GenealogyExportDto;
import com.ruoyi.domain.dto.UserRelationDto;
import com.ruoyi.mapper.ZInfoUserMapper;
import com.ruoyi.service.ZInfoUserService;
@@ -26,10 +28,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -303,8 +302,10 @@
        try {
            result = allPeopleList.stream().filter(people -> people.getUserId()!=1&&(people.getFatherId() == 0||people.getMomId()==0))
                    .map(people -> {
                        if(depth>1)
                        if(depth>1){
                            people.setIdentity(1);
                            people.setChildList(fillChildren(people, allPeopleList, depth-1));
                        }
                        return people;
                    }).collect(Collectors.toList());
        } catch (NullPointerException e) {
@@ -312,6 +313,140 @@
        }
        return AjaxResult.success(result);
    }
    /**
     * 条件获取家庭成员
     * @return
     */
    public AjaxResult listWithTreeByCondition(Integer depth,Genealogy genealogy) {
        ZInfoUser zInfoUser = new ZInfoUser();
        BeanUtils.copyProperties(genealogy,zInfoUser);
        LambdaQueryWrapper<ZInfoUser> lqw = new LambdaQueryWrapper<>();
        lqw.eq(zInfoUser.getIdentity()!=null,ZInfoUser::getIdentity,zInfoUser.getIdentity());
        lqw.eq(zInfoUser.getSex()!=null,ZInfoUser::getSex,zInfoUser.getSex());
        lqw.like(StringUtils.isNotEmpty(zInfoUser.getNickName()),ZInfoUser::getNickName,zInfoUser.getNickName());
        lqw.eq(zInfoUser.getBirth()!=null,ZInfoUser::getBirth,zInfoUser.getBirth());
        List<ZInfoUser> allPeopleList = list(lqw);
        List<ZInfoUser> result = null;
        try {
            result = allPeopleList.stream().filter(people -> people.getUserId()!=1&&(people.getFatherId() == 0||people.getMomId()==0))
                    .map(people -> {
                        if(depth>1){
                            people.setIdentity(1);
                            people.setChildList(fillChildren(people, allPeopleList, depth-1));
                        }
                        return people;
                    }).collect(Collectors.toList());
        } catch (NullPointerException e) {
            throw new RuntimeException("您在加入成员的时候没有指定该成员的父亲或者母亲");
        }
        return AjaxResult.success(result);
    }
    private List<ZInfoUser> userList = new ArrayList<>();
    /**
     * 家谱信息
     * @param genealogy
     * @return
     */
    @Override
    public AjaxResult listGenealogy(Genealogy genealogy,Integer pageNum,Integer pageSize) {
        List<ZInfoUser> treeList= (List<ZInfoUser>) listWithTreeByCondition(100,genealogy).get("data");
        recursionFindUser(treeList);
        List<Genealogy> allData = userList.stream().map(
                zInfoUser -> {
                    Genealogy newGenealogy = new Genealogy();
                    BeanUtils.copyProperties(zInfoUser, newGenealogy);
                    if(zInfoUser.getSpouseId()!=null){
                        ZInfoUser spouse = getById(zInfoUser.getSpouseId());
                        newGenealogy.setSpouseName(spouse.getNickName());
                    }
                    return newGenealogy;
                }
        ).collect(Collectors.toList());
        List<Genealogy> collect = allData.stream().distinct().sorted(Comparator.comparing(Genealogy::getIdentity)).collect(Collectors.toList());
        List<Genealogy> resultData= new ArrayList<>();
        for (int i = (pageNum-1)*pageSize; i <pageNum*pageSize+pageSize; i++) {
            if(i>=collect.size()){
                break;
            }
            resultData.add(collect.get(i));
        }
        HashMap<String, Object> resultMap = new HashMap<>();
        resultMap.put("data",resultData);
        resultMap.put("total",collect.size());
        resultMap.put("pageNum",pageNum);
        resultMap.put("pageSize",pageSize);
        return AjaxResult.success(resultMap);
    }
    @Override
    public List<Genealogy> selectByIds(Long[] ids) {
        List<ZInfoUser> zInfoUsers = listByIds(Arrays.asList(ids));
        ArrayList<Genealogy> result = new ArrayList<>();
        for (ZInfoUser zInfoUser : zInfoUsers) {
            Genealogy genealogy = new Genealogy();
            BeanUtils.copyProperties(zInfoUser,genealogy);
            if(zInfoUser.getSpouseId()!=null){
                ZInfoUser spouse = getById(zInfoUser.getSpouseId());
                genealogy.setSpouseName(spouse.getNickName());
            }
            result.add(genealogy);
        }
        System.out.println("导出的数据为:"+result);
        return result;
    }
    @Override
    public List<Genealogy> selectDatas(List<GenealogyExportDto> params) {
        ArrayList<Long> ids = new ArrayList<>();
        for (GenealogyExportDto param : params) {
            ids.add(param.getId());
        }
        List<ZInfoUser> zInfoUsers = listByIds(ids);
        ArrayList<Genealogy> result = new ArrayList<>();
        for (int i = 0; i < zInfoUsers.size(); i++) {
            Genealogy genealogy = new Genealogy();
            BeanUtils.copyProperties(zInfoUsers.get(i),genealogy);
            genealogy.setIdentity(params.get(i).getIdentity());
            if(zInfoUsers.get(i).getSpouseId()!=null){
                ZInfoUser spouse = getById(zInfoUsers.get(i).getSpouseId());
                genealogy.setSpouseName(spouse.getNickName());
            }
            result.add(genealogy);
        }
        System.out.println("导出的数据为:"+result);
        return result;
    }
    private void recursionFindUser(List<ZInfoUser> treeList){
        if (treeList==null||treeList.isEmpty()){
            return;
        }
        for (ZInfoUser zInfoUser : treeList) {
            userList.add(zInfoUser);
            if (!zInfoUser.getChildList().isEmpty()){
                recursionFindUser(zInfoUser.getChildList());
            }
        }
    }
    /**
@@ -360,6 +495,8 @@
        return AjaxResult.success(zInfoUsers);
    }
    /**
     * 递归算法
     * @param people
@@ -380,6 +517,7 @@
                    if(depth==1)
                        return one;
                    else {
                        one.setIdentity(people.getIdentity()+1);
                        List<ZInfoUser> zinfo = fillChildren(one, allPeopleList, depth - 1);
                        one.setChildList(zinfo);
                        System.out.println(one);