//package com.ruoyi.personnel.service.impl;
//
//import com.alibaba.excel.EasyExcel;
//import com.alibaba.excel.ExcelWriter;
//import com.alibaba.excel.write.metadata.WriteSheet;
//import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
//import com.alibaba.fastjson2.JSON;
//import com.alibaba.fastjson2.JSONObject;
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.baomidou.mybatisplus.core.metadata.IPage;
//import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
//import com.ruoyi.common.core.domain.entity.DepartmentDto;
//import com.ruoyi.common.core.domain.entity.DepartmentLims;
//import com.ruoyi.common.core.domain.entity.User;
//import com.ruoyi.common.utils.QueryWrappers;
//import com.ruoyi.framework.exception.ErrorException;
//import com.ruoyi.personnel.dto.PersonBasicInfoDto;
//import com.ruoyi.personnel.dto.UserPageDto;
//import com.ruoyi.personnel.mapper.AnnexMapper;
//import com.ruoyi.personnel.mapper.PersonBasicInfoFileMapper;
//import com.ruoyi.personnel.mapper.PersonBasicInfoMapper;
//import com.ruoyi.personnel.mapper.PersonBasicInfoWorkMapper;
//import com.ruoyi.personnel.pojo.Annex;
//import com.ruoyi.personnel.pojo.PersonBasicInfo;
//import com.ruoyi.personnel.pojo.PersonBasicInfoFile;
//import com.ruoyi.personnel.pojo.PersonBasicInfoWork;
//import com.ruoyi.personnel.service.PersonBasicInfoService;
//import com.ruoyi.system.mapper.DepartmentLimsMapper;
//import com.ruoyi.system.mapper.UserMapper;
//import org.apache.poi.xwpf.usermodel.XWPFTable;
//import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
//import org.springframework.beans.BeanUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Transactional;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletResponse;
//import java.io.File;
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.OutputStream;
//import java.net.URLEncoder;
//import java.time.LocalDateTime;
//import java.time.format.DateTimeFormatter;
//import java.util.*;
//import java.util.stream.Collectors;
//
///**
// *
// * 服务实现类
// *
// *
// * @author 江苏鵷雏网络科技有限公司
// * @since 2024-08-30 09:19:57
// */
//
//@Service
//@Transactional(rollbackFor = Exception.class)
//public class PersonBasicInfoServiceImpl extends ServiceImpl implements PersonBasicInfoService {
//
// @Autowired
// private DepartmentLimsMapper departmentMapper;
// @Value("${file.path}")
// private String imgUrl;
// @Value("${wordUrl}")
// private String wordUrl;
// @Resource
// private UserMapper userMapper;
// @Resource
// private AnnexMapper annexMapper;
// @Resource
// private PersonBasicInfoFileMapper personBasicInfoFileMapper;
// @Resource
// private PersonBasicInfoWorkMapper personBasicInfoWorkMapper;
//
// @Override
// public List selectCNSAPersonTree() {
// List departments = departmentMapper.selectDepartment();
// List limsUser = baseMapper.selectLimsUser();
// departments.addAll(limsUser);
// //获取父节点
// return departments.stream().filter(m -> m.getFatherId() == null).peek(
// (m) -> m.setChildren(getChildren(m, departments))
// ).collect(Collectors.toList());
// }
//
// @Override
// public Map getCNASPersonnelInfo(Integer userId) {
// Map map = new HashMap<>();
// Map> childrenMap = new HashMap<>();
// List deptS = departmentMapper.selectList(null);
// for (DepartmentLims dept : deptS) {
// if(!Objects.isNull(dept.getFatherId())) {
// if(!childrenMap.containsKey(dept.getFatherId())) {
// childrenMap.put(dept.getFatherId(),new ArrayList<>());
// }
// childrenMap.get(dept.getFatherId()).add(dept);
// }
// }
// // 父节点
// List deptF = new ArrayList<>();
// for (DepartmentLims dept : deptS) {
// if(Objects.isNull(dept.getFatherId())) {
// deptF.add(buildTree(dept,childrenMap));
// }
// }
// map.put("department",deptF);
// map.put("PersonBasicInfoDto",baseMapper.getCNASPersonnelInfo(userId));
// map.put("annexList",annexMapper.selectList(new LambdaQueryWrapper().eq(Annex::getUserId,userId)));
// return map;
// }
//
// private DepartmentLims buildTree(DepartmentLims departmentLims, Map> childrenMap) {
// if(childrenMap.containsKey(departmentLims.getId())) {
// departmentLims.setChildren(childrenMap.get(departmentLims.getId()));
// for (DepartmentLims departmentLims1 : departmentLims.getChildren()) {
// buildTree(departmentLims1,childrenMap);
// }
// }
// return departmentLims;
// }
//
// @Override
// public void saveCNASPersonnelInfo(PersonBasicInfoDto personBasicInfoDto) {
// User user = new User();
// user.setId(personBasicInfoDto.getUserId());
// user.setAccount(personBasicInfoDto.getAccount());
// user.setName(personBasicInfoDto.getName());
// user.setNameEn(personBasicInfoDto.getNameEn());
// user.setAge(personBasicInfoDto.getAge());
// user.setPhone(personBasicInfoDto.getPhone());
// user.setEmail(personBasicInfoDto.getEmail());
// user.setSignatureUrl(personBasicInfoDto.getSignatureUrl());
// user.setPictureUrl(personBasicInfoDto.getPictureUrl());
// user.setDepartLimsId(personBasicInfoDto.getDepartLimsId());
// userMapper.updateById(user);
// PersonBasicInfo personBasicInfo = JSONObject.parseObject(JSON.toJSONString(personBasicInfoDto), PersonBasicInfo.class);
// PersonBasicInfo one = baseMapper.selectOne(new LambdaQueryWrapper()
// .eq(PersonBasicInfo::getUserId, personBasicInfoDto.getUserId()));
// if(Objects.isNull(one)) {
// baseMapper.insert(personBasicInfo);
// }else {
// baseMapper.updateById(personBasicInfo);
// }
// }
//
// @Override
// public IPage