package com.ruoyi.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.MapUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.domain.*; import com.ruoyi.domain.dto.*; import com.ruoyi.mapper.ZInfoUserMapper; import com.ruoyi.service.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author ojq * @since 2023-03-14 */ @Service @Slf4j public class ZInfoUserServiceImpl extends ServiceImpl implements ZInfoUserService { @Autowired private ZfRelationService zfRelationService; @Autowired private ZInfoUserService zInfoUserService; @Resource private ZfFamilyService zfFamilyService; @Resource private ZfRoleService zfRoleService; @Resource private ZfClanService zfClanService; @Override public void setSpouseOnly(Long spouse){ UpdateWrapper wrapper = new UpdateWrapper<>(); System.out.println("{{{{{{{{{{{{{"+spouse); wrapper.eq("spouse_id", spouse) // 使用字符串字段名 .set("spouse_id", null); // 直接设置字段值 this.update(null, wrapper); // 执行更新 } @Override public AjaxResult selectInfoList(ZInfoUser zInfoUser, Integer pageNum, Integer pageSize) { LambdaQueryWrapper lqw = buildCondition(zInfoUser); Page zInfoUserPage = new Page<>(pageNum, pageSize); Page pageResult = page(zInfoUserPage, lqw); HashMap data = MapUtils.getResult(pageResult); return AjaxResult.success(data); } @Override public Boolean findByuid(Long uid, Long tfid) { if(uid==null) return false; // System.out.println(tfid); // System.out.println("00000000000---------------"); ZInfoUser infu = this.getById(tfid); if(infu==null) return false; if(infu.getFatherId()!=null && uid.equals(infu.getFatherId())) return true; if(infu.getMomId()!=null && uid.equals(infu.getMomId())) return true; return findByuid(uid, infu.getFatherId()) || findByuid(uid, infu.getMomId()); } @Override public List findByUaidToFaid(String usid) { if(usid!=null) { ZInfoUser zInfoUser = new ZInfoUser(); zInfoUser.setUaid(usid); LambdaQueryWrapper lqw = buildCondition(zInfoUser); List ls = list(lqw); // System.out.println(ls.size()+":==========sdfs55dfsdf"); return ls; }else { return new ArrayList<>(); } } @Override public List selectByClanId(Integer clanId) { ZInfoUser zInfoUser = new ZInfoUser(); zInfoUser.setClanId(clanId); LambdaQueryWrapper lqw = buildCondition(zInfoUser); return list(lqw); } // public List selectByNickName(String nickName){ // ZInfoUser zInfoUser = new ZInfoUser(); // zInfoUser.setNickName(nickName); // LambdaQueryWrapper lqw = buildCondition(zInfoUser); // return list(lqw); // } @Override public AjaxResult findUserNameAClan(List nickNames) { List shareOtherClans = new ArrayList<>(); for (String nickName:nickNames) { ZInfoUser zInfoUser = new ZInfoUser(); zInfoUser.setNickName(nickName); LambdaQueryWrapper lqw = buildCondition(zInfoUser); List zInfoUsers = list(lqw); for (ZInfoUser zInfoUser1: zInfoUsers) { ZfShareOther shareOtherClan = new ZfShareOther(); shareOtherClan.setUserName(zInfoUser1.getNickName()); shareOtherClan.setUserId(zInfoUser1.getUserId().intValue()); shareOtherClan.setClanId(zInfoUser1.getClanId()); shareOtherClan.setClanName(zfClanService.getById(zInfoUser1.getClanId()).getClanName()); shareOtherClans.add(shareOtherClan); }} return AjaxResult.success(shareOtherClans); } @Override public ZInfoUser getInfoBysysId(Long sysid) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZInfoUser::getSysId, sysid); List list = list(lqw); if(list.size()>0) return list.get(0); else return null; } @Override public List getDataBySex(Integer sex, Integer clanId){ LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZInfoUser::getSex, sex); lqw.eq(ZInfoUser::getClanId, clanId); List list = list(lqw); return list; } @Override public AjaxResult getInfoByfid(Long fid) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZInfoUser::getFamilyId, fid); lqw.eq(ZInfoUser::getIsMyFamily, 1L); lqw.isNull(ZInfoUser::getSpouseId); List list = list(lqw); return AjaxResult.success(list); } private LambdaQueryWrapper buildCondition(ZInfoUser zInfoUser) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(zInfoUser.getUserId() != null, ZInfoUser::getUserId, zInfoUser.getUserId()); lqw.like(StringUtils.isNotEmpty(zInfoUser.getAlwaysAddress()), ZInfoUser::getAlwaysAddress, zInfoUser.getAlwaysAddress()); lqw.like(StringUtils.isNotEmpty(zInfoUser.getAlwaysPolice()), ZInfoUser::getAlwaysPolice, zInfoUser.getAlwaysPolice()); lqw.like(StringUtils.isNotEmpty(zInfoUser.getIdNum()), ZInfoUser::getIdNum, zInfoUser.getIdNum()); lqw.like(StringUtils.isNotEmpty(zInfoUser.getLocationAddress()), ZInfoUser::getLocationAddress, zInfoUser.getLocationAddress()); lqw.like(StringUtils.isNotEmpty(zInfoUser.getLocationPolice()), ZInfoUser::getLocationPolice, zInfoUser.getLocationPolice()); lqw.like(StringUtils.isNotEmpty(zInfoUser.getNation()), ZInfoUser::getNation, zInfoUser.getNation()); lqw.like(StringUtils.isNotEmpty(zInfoUser.getNationality()), ZInfoUser::getNationality, zInfoUser.getNationality()); lqw.like(StringUtils.isNotEmpty(zInfoUser.getNickName()), ZInfoUser::getNickName, zInfoUser.getNickName()); lqw.like(StringUtils.isNotEmpty(zInfoUser.getOldName()), ZInfoUser::getOldName, zInfoUser.getOldName()); lqw.like(StringUtils.isNotEmpty(zInfoUser.getPhoneNumber()), ZInfoUser::getPhoneNumber, zInfoUser.getPhoneNumber()); lqw.like(StringUtils.isNotEmpty(zInfoUser.getPoliticalOutlook()), ZInfoUser::getPoliticalOutlook, zInfoUser.getPoliticalOutlook()); lqw.like(StringUtils.isNotEmpty(zInfoUser.getPosition()), ZInfoUser::getPosition, zInfoUser.getPosition()); lqw.like(StringUtils.isNotEmpty(zInfoUser.getUnit()), ZInfoUser::getUnit, zInfoUser.getUnit()); lqw.like(zInfoUser.getSex() != null, ZInfoUser::getSex, zInfoUser.getSex()); lqw.like(zInfoUser.getMaritalStatus() != null, ZInfoUser::getMaritalStatus, zInfoUser.getMaritalStatus()); lqw.le(zInfoUser.getBirth() != null, ZInfoUser::getBirth, zInfoUser.getBirth()); lqw.like(zInfoUser.getClanId() != null, ZInfoUser::getClanId, zInfoUser.getClanId()); lqw.eq(zInfoUser.getUaid() !=null, ZInfoUser::getUaid, zInfoUser.getUaid()); return lqw; } @Override public List selectByCondition(ZInfoUser zInfoUser) { LambdaQueryWrapper lambdaQueryWrapper = buildCondition(zInfoUser); List list = list(lambdaQueryWrapper); log.info("返回的数据为:{}", list); return list; } @Override public AjaxResult removeByUserName(List userName) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.in(ZInfoUser::getNickName,String.valueOf(userName.get(0))); System.out.println(userName.get(0)); List beanRecords = list(lqw); System.out.println("555555555555555555"+beanRecords); List ids = list(lqw).stream().map(ZInfoUser::getUserId).collect(Collectors.toList());; removeByIds(ids); return AjaxResult.success("删除成功"); } @Override public List selectByFamId(long fid) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZfFamily::getId, fid); ZfFamily zfFamily = zfFamilyService.list(lqw).get(0); LambdaQueryWrapper lqws = new LambdaQueryWrapper<>(); lqws.eq(ZInfoUser::getFatherId, zfFamily.getFid()); // lqws.eq(ZInfoUser::getMomId, zfFamily.getMid()); List list = list(lqws); return list; } @Override public AjaxResult searchMyRelation() { SysUser user = SecurityUtils.getLoginUser().getUser(); Long userId = user.getUserId(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZfRelation::getMyId, userId); List list = zfRelationService.list(lqw); return AjaxResult.success(list); } @Override @Transactional public AjaxResult addRelation(ZfRelation zfRelation) { SysUser user = SecurityUtils.getLoginUser().getUser(); Long userId = user.getUserId(); zfRelation.setMyId(userId); zfRelationService.save(zfRelation); return AjaxResult.success(); } @Override @Transactional public AjaxResult updateRelation(ZfRelation zfRelation) { zfRelationService.updateById(zfRelation); return AjaxResult.success(); } @Override public AjaxResult deleteRelation(Long[] ids) { zfRelationService.removeByIds(Arrays.asList(ids)); return AjaxResult.success(); } // @Override // public AjaxResult empower(EmpowerDto empowerDto) { // return null; // } // /** // * 给用户授权的方法 // * @param empowerDto // * @return // */ // @Override // @Transactional // public AjaxResult empower(EmpowerDto empowerDto) { // // //得到dto中的信息 // String otherUserId = empowerDto.getUserId(); // String destinationFamilyId = empowerDto.getFamilyId(); // List authorityList = empowerDto.getAuthorityList(); // // String familyId = getMyFamilyId(); // checkAuthorization(familyId, destinationFamilyId,true); // // //授权 //3{2007 1988 1004} // String finalStr = getFinalStr(destinationFamilyId, authorityList); // // //更新被授权用户的权限 // LambdaQueryWrapper lqw2 = new LambdaQueryWrapper<>(); // lqw2.eq(ZInfoUser::getUserId,otherUserId); // ZInfoUser otherUser = getOne(lqw2); // String secondFamilyId = otherUser.getSecondFamilyId(); // // String replaceFamilyId=null; // // boolean save=true; // // if (StringUtils.isNotEmpty(secondFamilyId)){ // //如果原来就已经有被赋予权限了,那么需要判断是不是跟这个家庭号有关的权限 // // //这个secondFamilyId是当前用户的完整权限字段 // if(secondFamilyId.contains(",")){ // String[] split = secondFamilyId.split(","); // for (int i = 0; i < split.length; i++) { // String fid = split[i].substring(0, split[i].indexOf("{"));//从权限块中拿到被授权的家庭号 // if(fid.equals(finalStr.substring(0,finalStr.indexOf("{")))){ // //如果匹配到了对应的家庭号,那么就替换掉对应的权限块就可以了,不需要追加 // save=false; // split[i]=finalStr; // break; // } // } // List finalList = Arrays.asList(split); // StringBuilder stringBuilder = new StringBuilder(); // for (String s : finalList) { // stringBuilder.append(s).append(","); // } // stringBuilder.deleteCharAt(stringBuilder.length()-1); // // replaceFamilyId = stringBuilder.toString(); // // }else { // String fid = secondFamilyId.substring(0, secondFamilyId.indexOf("{"));//从权限块中拿到被授权的家庭号 // if(fid.equals(finalStr.substring(0,finalStr.indexOf("{")))){ // //如果匹配到了对应的家庭号,那么就替换掉对应的权限块就可以了,不需要追加 // save=false; // replaceFamilyId=finalStr; // } // } // // if(save){ // //需要追加,没有匹配到对应的家庭号 // replaceFamilyId=secondFamilyId+","+finalStr; // }else { // //不需要追加 // } // // }else { // //原来就没有权限了 // replaceFamilyId=finalStr; // } // // LambdaUpdateWrapper uw = new LambdaUpdateWrapper<>(); // uw.eq(ZInfoUser::getUserId,otherUserId).set(ZInfoUser::getSecondFamilyId,replaceFamilyId); // if (update(null,uw)) { // return AjaxResult.success(); // }else { // return AjaxResult.error(); // } // // } private void checkAuthorization(String familyId, String destinationFamilyId, boolean flag) { String text = null; if (flag) { text = "授权"; } else { text = "取消授权"; } //对本人的家庭号进行处理 if (familyId.contains(",")) { String[] familyIds = familyId.split(","); List idList = Arrays.asList(familyIds); if (!idList.contains(destinationFamilyId)) { throw new RuntimeException("不能" + text + "不属于自己家庭的数据"); } } else { if (!familyId.equals(destinationFamilyId)) { throw new RuntimeException("不能" + text + "不属于自己家庭的数据"); } } } private Long getMyFamilyId() { //得到自己的家庭id信息 SysUser user = SecurityUtils.getLoginUser().getUser(); Long myUserId = user.getUserId(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZInfoUser::getUserId, myUserId); ZInfoUser zInfoUser = getOne(lqw); Long familyId = zInfoUser.getFamilyId(); return familyId; } private String getFinalStr(String destinationFamilyId, List authorityList) { String authorityListStr = authorityList.stream().collect(Collectors.joining(" ", "{", "}")); String finalStr = destinationFamilyId + authorityListStr; //3{2007 1988 1004} return finalStr; } /** * 获取家根网 * * @return */ @Override public AjaxResult listWithTree(Integer depth, Integer clanId) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(clanId!=null, ZInfoUser::getClanId, clanId); // List list = list(lqw); List allPeopleList = list(lqw); List 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); // //根据配偶id查询配偶的数据,封装好一起返回 // Long spouseId = people.getSpouseId(); // ZInfoUser spouse = zInfoUserService.getById(spouseId); // spouse.setIdentity(1); // people.setSpouse(spouse); // people.setChildList(fillChildren(people, allPeopleList, depth-1)); // } // return people; // }).collect(Collectors.toList()); // } catch (NullPointerException e) { // throw new RuntimeException("您在加入成员的时候没有指定该成员的父亲或者母亲"); // } List myFamilyPeopleList = allPeopleList.stream().filter(people -> people.getUserId() != 1 && people.getIsMyFamily() == 1).collect(Collectors.toList()); result = allPeopleList.stream().filter(people -> people!=null && people.getUserId() != 1 && ((people.getFatherId()!=null &&people.getFatherId() == 0 )|| (people.getMomId()!=null&&people.getMomId() == 0)) && people.getIsMyFamily() == 1) .map(people -> { // System.out.println("======================================="); // System.out.println(people); if (depth > 1) { if(people!=null) { people.setIdentity(1); //根据配偶id查询配偶的数据,封装好一起返回 Long spouseId = people.getSpouseId(); if (spouseId != null) { ZInfoUser spouse = zInfoUserService.getById(spouseId); spouse.setIdentity(1); people.setSpouse(spouse); } people.setChildList(fillChildren(people, myFamilyPeopleList, depth - 1)); } } // System.out.println("+++++++++++++++++++++++++++++"); // System.out.println(people); return people; }).collect(Collectors.toList()); // //System.out.println("--------------++++++++++++++++--------------"); //System.out.println(result); return AjaxResult.success(result); } /** * 条件获取家庭成员 * * @return */ public AjaxResult listWithTreeByCondition(Integer depth, Genealogy genealogy) { ZInfoUser zInfoUser = new ZInfoUser(); BeanUtils.copyProperties(genealogy, zInfoUser); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); // lqw.eq(zInfoUser.getSex() != null, ZInfoUser::getSex, zInfoUser.getSex()); // lqw.like(StringUtils.isNotEmpty(zInfoUser.getNickName()), ZInfoUser::getNickName, zInfoUser.getNickName()); // lqw.between(zInfoUser.getBirth() != null, ZInfoUser::getBirth, zInfoUser.getBirth(),zInfoUser.getBirth()); lqw.eq(zInfoUser.getClanId()!=null, ZInfoUser::getClanId,zInfoUser.getClanId()); List allPeopleList = list(lqw); // System.out.println(allPeopleList); //System.out.println("============z=============zzzzzzzzzzzzzzzzzzz"); // List allPeopleList = list(); List result = null; try { result = allPeopleList.stream().filter(people -> people.getUserId() != 1 && ((people.getFatherId()!=null&&people.getFatherId() == 0) || (people.getMomId()!=null&&people.getMomId() == 0))) .map(people -> { if (depth >= 1) { people.setIdentity(1); people.setChildList(fillChildren2(people, allPeopleList, depth - 1)); } return people; }).collect(Collectors.toList()); } catch (NullPointerException e) { throw new RuntimeException("您在加入成员的时候没有指定该成员的父亲或者母亲"); } // System.out.println(result); // result.stream().map( // data->{ // if(genealogy.getIdentity()!=null){ // if(data.getIdentity()!=genealogy.getIdentity()){ // result.remove(data); // } // } // // if(genealogy.getNickName()!=null){ // // } // // if(genealogy.getSex()!=null){ // // } // // if(genealogy.getBirth()!=null){ // // } // } // ) // if(genealogy.getIdentity()!=null){ // result = result.stream().filter(data -> data.getIdentity() == genealogy.getIdentity()).collect(Collectors.toList()); // } return AjaxResult.success(result); } private List userList = new ArrayList<>(); /** * 家谱信息 * * @param genealogy * @return */ @Override public AjaxResult listGenealogy(Genealogy genealogy, Integer pageNum, Integer pageSize) { userList.clear(); List treeList = (List) listWithTreeByCondition(100, genealogy).get("data"); recursionFindUser(treeList); List allData = userList.stream().map( zInfoUser -> { Genealogy newGenealogy = new Genealogy(); BeanUtils.copyProperties(zInfoUser, newGenealogy); if (zInfoUser.getSpouseId() != null) { ZInfoUser spouse = getById(zInfoUser.getSpouseId()); Genealogy spouseInfo = new Genealogy(); BeanUtils.copyProperties(spouse,spouseInfo); newGenealogy.setSpouse(spouseInfo); spouseInfo.setIdentity(newGenealogy.getIdentity()); spouseInfo.setSpouseName(zInfoUser.getNickName()); newGenealogy.setSpouseName(spouse.getNickName()); } System.out.println(newGenealogy); return newGenealogy; } ).collect(Collectors.toList()); List collect = allData.stream() .distinct() .filter((data)-> data.getIsMyFamily() == 1) .sorted(Comparator.comparing(Genealogy::getIdentity)) .collect(Collectors.toList()); List resultData = new ArrayList<>(); // System.out.println(resultData); // System.out.println("999999999988888888888++++++++++++++++++++++"); // // //对result做一个条件筛选 Iterator it = collect.iterator(); while(it.hasNext()){ Genealogy data = it.next(); if(genealogy.getIdentity()!=null){ if(data.getIdentity()!=genealogy.getIdentity()){ it.remove(); continue; } } if(genealogy.getNickName()!=null){ if(!data.getNickName().contains(genealogy.getNickName())){ it.remove(); continue; } } if(genealogy.getSex()!=null){ if(data.getSex()!=genealogy.getSex()){ it.remove(); continue; } } if(genealogy.getPhoneNumber()!=null){ if(data.getPhoneNumber()!=genealogy.getPhoneNumber()){ it.remove(); continue; } } if(genealogy.getUnit()!=null){ if(data.getUnit()!=genealogy.getUnit()){ it.remove(); continue; } } if(genealogy.getBirth()!=null){ if(data.getBirth()!=null) { if (data.getBirth().compareTo(genealogy.getBirth()) != 0) { it.remove(); } } else it.remove(); } } // System.out.println(resultData); // System.out.println("================++++++++++++++66666666666666666999999999"); // for (Genealogy data : resultData) { // // if(genealogy.getIdentity()!=null){ // if(data.getIdentity()!=genealogy.getIdentity()){ // resultData.remove(data); // } // } // // if(genealogy.getNickName()!=null){ // if(!data.getNickName().contains(genealogy.getNickName())){ // resultData.remove(data); // } // } // // if(genealogy.getSex()!=null){ // if(data.getSex()!=genealogy.getSex()){ // resultData.remove(data); // } // } // // if(genealogy.getBirth()!=null){ // if(data.getBirth()!=genealogy.getBirth()){ // resultData.remove(data); // } // } // // } for (int i = (pageNum - 1) * pageSize; i < pageNum * pageSize; i++) { if (i >= collect.size()) { break; } System.out.println(i+"//////"+collect.get(i)); resultData.add(collect.get(i)); } HashMap 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 selectByIds(Long[] ids) { List zInfoUsers = listByIds(Arrays.asList(ids)); ArrayList 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 spouseInfo = new Genealogy(); BeanUtils.copyProperties(spouse,spouseInfo); spouseInfo.setIdentity(genealogy.getIdentity()); spouseInfo.setSpouseName(zInfoUser.getNickName()); genealogy.setSpouse(spouseInfo); genealogy.setSpouseName(spouse.getNickName()); } result.add(genealogy); } System.out.println("导出的数据为:" + result); return result; } @Override public List selectDatas(List params) { ArrayList ids = new ArrayList<>(); for (GenealogyExportDto param : params) { ids.add(param.getId()); } List zInfoUsers = listByIds(ids); ArrayList 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 spouseInfo = new Genealogy(); BeanUtils.copyProperties(spouse,spouseInfo); spouseInfo.setIdentity(genealogy.getIdentity()); genealogy.setSpouseName(spouse.getNickName()); spouseInfo.setSpouseName(zInfoUsers.get(i).getNickName()); genealogy.setSpouse(spouseInfo); } result.add(genealogy); } System.out.println("导出的数据为:" + result); return result; } @Override public ZInfoUser getInfoById(Long userId) { ZInfoUser user = getInfoBysysId(userId); if(user==null) { //利用userId查询 LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZInfoUser::getUserId, userId); List list = list(lqw); if(list.size()>0) user = list.get(0); else return null; } Long familyId = user.getFamilyId(); // System.out.println("dddddddddddddddddddd"); if(user.getRoleId()==null) user.setRoleId(3L); String roleName = zfRoleService.getById(user.getRoleId()).getName(); user.setRoleName(roleName); return user; } // @Override // public ZInfoUser getInfoById(Long userId) { // // ZInfoUser user = getById(userId); // // //用逗号隔开的家庭id // String familyId = user.getFamilyId(); // // //在自己家庭中角色的id // Long roleId = user.getRoleId(); // // ArrayList familyList = new ArrayList<>(); // // //填充所属家庭 // if(familyId.contains(",")){ // String[] familyIds = familyId.split(","); // for (String id : familyIds) { // familyList.add(zfFamilyService.getById(id).getName()); // } // }else { // familyList.add(zfFamilyService.getById(familyId).getName()); // } // // user.setFamilyList(familyList); // // //填充所在家庭的角色 // user.setRole(zfRoleService.getById(roleId).getName()); // // return user; // } @Override public ZInfoUser getMyself() { SysUser user = SecurityUtils.getLoginUser().getUser(); Long userId = user.getUserId(); // System.out.println(userId); //System.out.println("-----------------++++++++9999++++++++++----------"); ZInfoUser zInfoUser = new ZInfoUser(); zInfoUser.setSysId(userId); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(zInfoUser.getSysId() != null, ZInfoUser::getSysId, zInfoUser.getSysId()); List list = list(lqw); if(!list.isEmpty()) return list.get(0); else return null; } @Override public AjaxResult listGenealogy2(Genealogy genealogy, Integer pageNum, Integer pageSize) { return null; } private void recursionFindUser(List treeList) { if (treeList == null || treeList.isEmpty()) { return; } for (ZInfoUser zInfoUser : treeList) { userList.add(zInfoUser); if (!zInfoUser.getChildList().isEmpty()) { recursionFindUser(zInfoUser.getChildList()); } } } /** * 为了家根网、新增或者修改父子关系 * * @param fatherId * @param motherId * @return */ @Override public AjaxResult addParent(Long fatherId, Long motherId) { SysUser user = SecurityUtils.getLoginUser().getUser(); Long userId = user.getUserId(); LambdaQueryWrapper zInfoUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); zInfoUserLambdaQueryWrapper.eq(ZInfoUser::getUserId, userId); ZInfoUser zInfoUser = getOne(zInfoUserLambdaQueryWrapper); zInfoUser.setFatherId(fatherId); zInfoUser.setMomId(motherId); updateById(zInfoUser); return AjaxResult.success(); } @Override public AjaxResult listAllExceptAdmin() { List collect = list().stream().filter(zInfoUser -> zInfoUser.getUserId() != 1).collect(Collectors.toList()); return AjaxResult.success(collect); } @Override public AjaxResult listAllFamilyPeople(Integer clanId) { // List lis = list(); // for(ZInfoUser tm: lis) // { // System.out.println(tm.getRoleId()); // } LambdaQueryWrapper zInfoUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); zInfoUserLambdaQueryWrapper.eq(ZInfoUser::getClanId, clanId); List lis = list(zInfoUserLambdaQueryWrapper); List collect = lis.stream().filter(zInfoUser -> zInfoUser!=null&&zInfoUser.getRoleId()!=null&&zInfoUser.getRoleId()== 3).collect(Collectors.toList()); return AjaxResult.success(collect); } @Override public AjaxResult listMySelfAndSpouse(Long id) { LambdaQueryWrapper lqw1 = new LambdaQueryWrapper<>(); lqw1.eq(ZInfoUser::getUserId, id); ZInfoUser myself = getOne(lqw1); Long spouseId = myself.getSpouseId(); LambdaQueryWrapper lqw2 = new LambdaQueryWrapper<>(); lqw2.eq(ZInfoUser::getUserId, spouseId); ZInfoUser spouse = getOne(lqw2); ArrayList zInfoUsers = new ArrayList<>(); zInfoUsers.add(myself); zInfoUsers.add(spouse); return AjaxResult.success(zInfoUsers); } /** * 递归算法 * * @param people * @param allPeopleList * @return */ private List fillChildren(ZInfoUser people, List allPeopleList, Integer depth) { // TODO: 2023-05-05 控制递归的次数 // if(depth==layer) // layer = layer + 1; // System.out.println(depth); // List myFamilyPeopleList = allPeopleList.stream().filter( // one -> (one.getFatherId() == people.getUserId() || one.getMomId() == people.getUserId()) && (people.getIsMyFamily() == 1) // ).collect(Collectors.toList()); List collect = allPeopleList.stream().filter( one -> (((one.getFamilyId()!=null && Objects.equals(one.getFatherId(), people.getUserId())) || (one.getMomId()!=null&& one.getMomId().equals(people.getUserId()))) && (one.getIsMyFamily() == 1)) ).map( one -> { // System.out.println("++++++++++----0009999"); // System.out.println(one); if (depth == 0) { one.setIdentity(people.getIdentity() + 1); //根据配偶id查询配偶的数据,封装好一起返回 Long spouseId = one.getSpouseId(); if (spouseId != null) { ZInfoUser spouse = zInfoUserService.getById(spouseId); spouse.setIdentity(people.getIdentity() + 1); one.setSpouse(spouse); } return one; } else { one.setIdentity(people.getIdentity() + 1); //根据配偶id查询配偶的数据,封装好一起返回 Long spouseId = one.getSpouseId(); if (spouseId != null) { ZInfoUser spouse = zInfoUserService.getById(spouseId); // System.out.println(spouseId); // System.out.println(spouse); // System.out.println("0000))))))))))))))))"); spouse.setIdentity(people.getIdentity() + 1); one.setSpouse(spouse); } List zinfo = fillChildren(one, allPeopleList, depth - 1); one.setChildList(zinfo); // System.out.println(one); return one; } //return one; } ).collect(Collectors.toList()); // System.out.println(collect); return collect; } /** * 递归算法家谱用 * * @param people * @param allPeopleList * @return */ private List fillChildren2(ZInfoUser people, List allPeopleList, Integer depth) { // TODO: 2023-05-05 控制递归的次数 // if(depth==layer) // layer = layer + 1; // System.out.println(depth); List collect = allPeopleList.stream().filter( one -> Objects.equals(one.getFatherId(), people.getUserId()) || Objects.equals(one.getMomId(),people.getUserId()) ).map( one -> { if (depth == 1) return one; else { one.setIdentity(people.getIdentity() + 1); //根据配偶id查询配偶的数据,封装好一起返回 Long spouseId = one.getSpouseId(); if (spouseId != null) { ZInfoUser spouse = zInfoUserService.getById(spouseId); spouse.setIdentity(people.getIdentity() + 1); one.setSpouse(spouse); } List zinfo = fillChildren2(one, allPeopleList, depth - 1); one.setChildList(zinfo); // System.out.println(one); return one; } //return one; } ).collect(Collectors.toList()); // System.out.println(collect); return collect; } }