zhuo
2025-02-22 b620ed21a126a5a138685e51056b4b8f679bd372
人员移植
已修改2个文件
已添加24个文件
1350 ■■■■■ 文件已修改
cnas-personnel/pom.xml 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoDto.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/UserPageDto.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/AnnexMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoFileMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoWorkMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/Annex.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfo.java 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfoFile.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfoWork.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/AnnexService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoFileService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoService.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoWorkService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/AnnexServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoFileServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoServiceImpl.java 336 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoWorkServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/pom.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentLims.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/DepartmentLimsMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/DepartmentLimsMapper.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.ruoyi</groupId>
        <artifactId>ruoyi</artifactId>
        <version>3.8.9</version>
    </parent>
    <artifactId>cnas-personnel</artifactId>
    <dependencies>
        <!-- é€šç”¨å·¥å…·-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-common</artifactId>
        </dependency>
        <!-- æ ¸å¿ƒæ¨¡å—-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-framework</artifactId>
        </dependency>
        <!-- ç³»ç»Ÿæ¨¡å—-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-system</artifactId>
        </dependency>
        <!-- ç³»ç»Ÿæ¨¡å—-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>inspect-server</artifactId>
        </dependency>
    </dependencies>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>
cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,225 @@
//package com.ruoyi.personnel.controller;
//
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.baomidou.mybatisplus.core.metadata.IPage;
//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.ruoyi.personnel.service.AnnexService;
//import com.ruoyi.personnel.service.PersonBasicInfoFileService;
//import com.ruoyi.personnel.service.PersonBasicInfoService;
//import com.ruoyi.personnel.service.PersonBasicInfoWorkService;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletResponse;
//import java.util.List;
//import java.util.Map;
//
///**
// * <p>
// *  å‰ç«¯æŽ§åˆ¶å™¨
// * </p>
// *
// * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
// * @since 2024-08-30 09:19:57
// */
//@Api(tags = "人员-人员基本信息")
//@RestController
//@RequestMapping("/personBasicInfo")
//public class PersonBasicInfoController {
//
//    @Resource
//    private PersonBasicInfoService personBasicInfoService;
//
//    @Resource
//    private PersonBasicInfoFileService personBasicInfoFileService;
//    @Resource
//    private PersonBasicInfoWorkService personBasicInfoWorkService;
//
//    @Resource
//    private AnnexService annexService;
//
//
//    @ValueClassify("人员基本信息")
//    @ApiOperation(value = "查询CNAS人员侧边栏")
//    @GetMapping("/selectCNSAPersonTree")
//    public Result<List<DepartmentDto>> selectCNSAPersonTree() {
//        return Result.success(personBasicInfoService.selectCNSAPersonTree());
//    }
//
//    @ValueClassify("人员基本信息")
//    @ApiOperation(value = "获取CNAS人员基本信息")
//    @GetMapping("/getCNASPersonnelInfo")
//    public Result getCNASPersonnelInfo(Integer userId) {
//        return Result.success(personBasicInfoService.getCNASPersonnelInfo(userId));
//    }
//
//    @ValueClassify("人员基本信息")
//    @ApiOperation(value = "保存CNAS人员基本信息")
//    @PostMapping("/saveCNASPersonnelInfo")
//    public Result saveCNASPersonnelInfo(@RequestBody PersonBasicInfoDto personBasicInfoDto) {
//        personBasicInfoService.saveCNASPersonnelInfo(personBasicInfoDto);
//        return Result.success();
//    }
//
//    @ApiOperation(value = "人员明细分页查询")
//    @ValueClassify("人员基本信息")
//    @GetMapping("basicInformationOfPersonnelSelectPage")
//    public Result<IPage<Map<String, Object>>> basicInformationOfPersonnelSelectPage(Page<List<PersonBasicInfoDetailsDto>> page, String name, Integer departmentId) {
//        return Result.success(personBasicInfoService.basicInformationOfPersonnelSelectPage(page, name, departmentId));
//    }
//
//    // ä¸Šä¼ æ–‡ä»¶æŽ¥å£
//    @ApiOperation(value = "上传文件接口")
//    @PostMapping("/saveCNASFile")
//    public Result saveFile(@RequestPart("file") MultipartFile file) {
//        String s = FileSaveUtil.uploadWordFile(file);
//        return Result.success("上传成功", s);
//    }
//
//    @GetMapping("/getAnnexByUserId")
//    public Result<List<Annex>> getAnnexByUserId(Integer userId) {
//        List<Annex> list = annexService.list(new LambdaQueryWrapper<Annex>().eq(Annex::getUserId, userId));
//        return Result.success(list);
//    }
//
//    // åˆ é™¤æ–‡ä»¶
//    @DeleteMapping("/deleteCNASFile")
//    public Result saveFile(String fileName) {
//        String[] split = fileName.split(",");
//        for (String s : split) {
//            FileSaveUtil.DeleteFile(s);
//        }
//        return Result.success();
//
//    }
//
//    /**
//     * äººå‘˜åŸºæœ¬ä¿¡æ¯é™„件新增
//     */
//    @PostMapping("/addAnnex")
//    public Result addAnnex(@RequestBody Annex annex) {
//        annexService.save(annex);
//        return Result.success();
//    }
//
//    @GetMapping("/getAnnex")
//    public Result<Annex> getAnnex(Integer id) {
//        return Result.success(annexService.getById(id));
//    }
//    /**
//     * äººå‘˜åŸºæœ¬ä¿¡æ¯é™„件删除
//     */
//    @DeleteMapping("/deleteAnnex/{id}")
//    public Result deleteAnnex(@PathVariable("id") Integer id) {
//        annexService.removeById(id);
//        return Result.success();
//    }
//
//    /**
//     * äººå‘˜åŸºæœ¬ä¿¡æ¯é™„件修改
//     *
//     */
//    @PostMapping("/updateAnnex")
//    public Result updateAnnex(@RequestBody Annex annex) {
//        annexService.updateById(annex);
//        return Result.success();
//    }
//
//    @ApiOperation(value = "导出人员基本信息")
//    @PostMapping("/exportPersonBasicInfo")
//    public void exportPersonBasicInfo(@RequestBody Map<String, Object> data, HttpServletResponse response) throws Exception {
//        UserPageDto userPageDto = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), UserPageDto.class);
//        personBasicInfoService.exportPersonBasicInfo(userPageDto,response);
//    }
//
//    @ApiOperation(value = "下载人员档案卡")
//    @GetMapping("/exportPersonBasicInfoById")
//    public Result exportPersonBasicInfoById(Integer id, HttpServletResponse response) {
//        return Result.success(personBasicInfoService.exportPersonBasicInfoById(id,response));
//    }
//
//    /**
//     * äººå‘˜åŸ¹è®­åŸºæœ¬ä¿¡æ¯é™„件新增
//     * @param userId
//     * @param file
//     * @return
//     */
//    @ApiOperation(value = "人员培训基本信息附件新增")
//    @PostMapping("/uploadBasicInfoFile")
//    public Result<?> uploadBasicInfoFile(Integer userId, MultipartFile file) {
//        return Result.success(personBasicInfoService.uploadBasicInfoFile(userId, file));
//    }
//
//
//    /**
//     * äººå‘˜åŸ¹è®­åŸºæœ¬ä¿¡æ¯é™„件列表
//     * @return
//     */
//    @ApiOperation(value = "人员培训基本信息附件列表")
//    @GetMapping("/getBasicInfoFileList")
//    public Result<List<PersonBasicInfoFile>> getBasicInfoFileList(Integer userId){
//        return Result.success(personBasicInfoFileService.list(Wrappers.<PersonBasicInfoFile>lambdaQuery()
//                .eq(PersonBasicInfoFile::getUserId, userId)));
//    }
//
//    /**
//     * äººå‘˜åŸ¹è®­åŸºæœ¬ä¿¡æ¯é™„件删除
//     * @return
//     */
//    @ApiOperation(value = "人员培训基本信息附件删除")
//    @GetMapping("/delBasicInfoFileList")
//    public Result delBasicInfoFileList(Integer basicInfoFileId){
//        return Result.success(personBasicInfoFileService.removeById(basicInfoFileId));
//    }
//
//    /**
//     * äººå‘˜åŸ¹è®­åŸºæœ¬ä¿¡æ¯å·¥ä½œç»åŽ†æ–°å¢ž
//     * @return
//     */
//    @ApiOperation(value = "人员培训基本信息工作经历新增")
//    @PostMapping("/addBasicInfoWork")
//    public Result<?> addBasicInfoWork(@RequestBody PersonBasicInfoWork basicInfoWork) {
//        if (basicInfoWork.getUserId() == null) {
//            throw new ErrorException("缺少人员id");
//        }
//        basicInfoWork.setUserId(basicInfoWork.getUserId());
//        return Result.success(personBasicInfoWorkService.save(basicInfoWork));
//    }
//
//
//    /**
//     * äººå‘˜å·¥ä½œç»åŽ†åˆ—è¡¨
//     * @return
//     */
//    @ApiOperation(value = "人员工作经历列表")
//    @GetMapping("/getBasicInfoWorkList")
//    public Result<List<PersonBasicInfoWork>> getBasicInfoWorkList(Integer userId){
//        return Result.success(personBasicInfoWorkService.list(Wrappers.<PersonBasicInfoWork>lambdaQuery()
//                .eq(PersonBasicInfoWork::getUserId, userId)));
//    }
//
//    /**
//     * äººå‘˜å·¥ä½œç»åŽ†åˆ é™¤
//     * @return
//     */
//    @ApiOperation(value = "人员工作经历删除")
//    @GetMapping("/delBasicInfoWorkList")
//    public Result delBasicInfoWorkList(Integer basicInfoWorkId){
//        return Result.success(personBasicInfoWorkService.removeById(basicInfoWorkId));
//    }
//
//    /**
//     * äººå‘˜åŸºæœ¬ä¿¡æ¯é™„件删除
//     * @return
//     */
//    @ApiOperation(value = "人员工作经历修改")
//    @PostMapping("/updateBasicInfoWorkList")
//    public Result updateBasicInfoWorkList(@RequestBody PersonBasicInfoWork basicInfoWork){
//        return Result.success(personBasicInfoWorkService.updateById(basicInfoWork));
//    }
//}
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
package com.ruoyi.personnel.dto;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.ruoyi.personnel.pojo.PersonBasicInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@ExcelIgnoreUnannotated
public class PersonBasicInfoDto extends PersonBasicInfo {
    @ApiModelProperty(value = "账号")
    @ExcelProperty("员工编号")
    private String account;
    @ApiModelProperty(value = "姓名")
    @ExcelProperty("姓名")
    private String name;
    @ApiModelProperty(value = "姓名(英文)")
    private String nameEn;
    @ApiModelProperty(value = "年龄")
    private Integer age;
    @ApiModelProperty(value = "电话号码")
    @ExcelProperty("手机号")
    private String phone;
    @ApiModelProperty(value = "邮箱")
    private String email;
    @ApiModelProperty(value = "部门")
    private String department;
    @ApiModelProperty(value = "lims组织架构")
    private String departLimsId;
    @ApiModelProperty(value = "签名照片地址")
    private String signatureUrl;
    @ApiModelProperty(value = "自身照片地址")
    private String pictureUrl;
}
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/UserPageDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.ruoyi.personnel.dto;
import com.ruoyi.common.core.domain.entity.User;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserPageDto extends User {
    @ApiModelProperty(value = "创建用户")
    private String createUserName;
    @ApiModelProperty(value = "更新用户")
    private String updateUserName;
    @ApiModelProperty(value = "角色")
    private String roleName;
}
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/AnnexMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.ruoyi.personnel.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.personnel.pojo.Annex;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AnnexMapper extends BaseMapper<Annex> {
}
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoFileMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.personnel.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.personnel.pojo.PersonBasicInfoFile;
/**
 * <p>
 * äººå‘˜åŸºæœ¬ä¿¡æ¯é™„ä»¶ Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2025-01-09 05:28:55
 */
public interface PersonBasicInfoFileMapper extends BaseMapper<PersonBasicInfoFile> {
}
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.ruoyi.personnel.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.entity.DepartmentDto;
import com.ruoyi.personnel.dto.PersonBasicInfoDto;
import com.ruoyi.personnel.pojo.PersonBasicInfo;
import java.util.List;
import java.util.Map;
/**
 * <p>
 *  Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-08-30 09:19:57
 */
public interface PersonBasicInfoMapper extends BaseMapper<PersonBasicInfo> {
    List<DepartmentDto> selectLimsUser();
    PersonBasicInfoDto getCNASPersonnelInfo(Integer userId);
    /**
     * äººå‘˜åŸºæœ¬ä¿¡æ¯åˆ†é¡µæŸ¥è¯¢
     * @param page
     * @param name
     * @param departmentId
     * @return
     */
    IPage<Map<String, Object>> selectPersonBasecInfoAndUser(Page page, String name, Integer departmentId);
    /**
     * å¯¼å‡ºæŸ¥è¯¢äººå‘˜ä¿¡æ¯
     * @param userId
     * @return
     */
    Map<String, Object> selectexportPersonBasic(Integer userId);
}
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoWorkMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.personnel.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.personnel.pojo.PersonBasicInfoWork;
/**
 * <p>
 * äººå‘˜åŸºæœ¬ä¿¡æ¯ Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2025-01-09 05:45:04
 */
public interface PersonBasicInfoWorkMapper extends BaseMapper<PersonBasicInfoWork> {
}
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/Annex.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
package com.ruoyi.personnel.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
@TableName("cnas_annex")
@ApiModel("人员基本信息附件表")
public class Annex implements Serializable {
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty(value = "user表id")
    private Integer userId;
    @ApiModelProperty(value = "证件号")
    private String idNumber;
    @ApiModelProperty(value = "发证单位")
    private String issueUnit;
    @ApiModelProperty(value = "文件名称")
    private String fileName;
    @ApiModelProperty(value = "级别")
    private String level;
    @ApiModelProperty(value = "有效期")
    private String periodValidity;
    @ApiModelProperty(value = "添加时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty(value = "复印件")
    private String copy;
    @ApiModelProperty(value = "原件")
    private String original;
}
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,156 @@
package com.ruoyi.personnel.pojo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 *
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-08-30 09:19:57
 */
@Getter
@Setter
@TableName("cnas_person_basic_info")
@ApiModel(value = "PersonBasicInfo对象", description = "")
public class PersonBasicInfo implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("主键id")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("当前状态")
    private String currentState;
    @ApiModelProperty("职称")
    @ExcelProperty("职称")
    private String professionalTitle;
    @ApiModelProperty("性别")
    private String sex;
    @ApiModelProperty("人员分类")
    private String personnelClassification;
    @ApiModelProperty("出生日期")
    @TableField(updateStrategy = FieldStrategy.IGNORED) // ä¸ºç©ºå¯ä»¥æ›´æ–°
    private LocalDateTime dateBirth;
    @ApiModelProperty("身份证号")
    @ExcelProperty("证件号码")
    private String identityCard;
    @ApiModelProperty("民族")
    private String nation;
    @ApiModelProperty("政治面貌")
    private String politicalStatus;
    @ApiModelProperty("最高学历")
    @ExcelProperty("最高学历")
    private String officialAcademicRedentials;
    @ApiModelProperty("毕业时间1")
    @ExcelProperty("毕业时间")
    private LocalDateTime graduationTime1;
    @ApiModelProperty("毕业院校1")
    @ExcelProperty("毕业院校")
    private String graduatedInstitutions1;
    @ApiModelProperty("专业1")
    @ExcelProperty("所学专业")
    private String major1;
    @ApiModelProperty("毕业时间2")
    @TableField(updateStrategy = FieldStrategy.IGNORED) // ä¸ºç©ºå¯ä»¥æ›´æ–°
    private LocalDateTime graduationTime2;
    @ApiModelProperty("毕业院校2")
    private String graduatedInstitutions2;
    @ApiModelProperty("专业2")
    private String major2;
    @ApiModelProperty("手机号")
    private String telephone;
    @ApiModelProperty("备注")
    private String remarks;
    @ApiModelProperty("用户表(user)id")
    private Integer userId;
    @ApiModelProperty("公司名称")
    private String corporateName;
    @ApiModelProperty("岗位名称")
    private String postName;
    @ApiModelProperty("入集团时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @TableField(updateStrategy = FieldStrategy.IGNORED) // ä¸ºç©ºå¯ä»¥æ›´æ–°
    @ExcelProperty("入集团时间")
    private LocalDateTime groupTime;
    @ApiModelProperty("劳动关系")
    private Integer laborRelations;
    @ApiModelProperty("工作时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @TableField(updateStrategy = FieldStrategy.IGNORED) // ä¸ºç©ºå¯ä»¥æ›´æ–°
    private LocalDateTime workingTime;
    @ApiModelProperty("合同有效期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @TableField(updateStrategy = FieldStrategy.IGNORED) // ä¸ºç©ºå¯ä»¥æ›´æ–°
    private LocalDateTime contractLifeTime;
    @ApiModelProperty("籍贯")
    @ExcelProperty("籍贯")
    private String nativePlace;
    @ApiModelProperty("证件有效期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @TableField(updateStrategy = FieldStrategy.IGNORED) // ä¸ºç©ºå¯ä»¥æ›´æ–°
    private LocalDateTime validityPeriod;
    @ApiModelProperty("婚姻状况")
    private Integer maritalStatus;
    @ApiModelProperty("证件地址")
    @ExcelProperty("证件地址")
    private String idAddress;
    @ApiModelProperty("证件详细地址")
    private String idDetailAddress;
    @ApiModelProperty("入党/团时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @TableField(updateStrategy = FieldStrategy.IGNORED) // ä¸ºç©ºå¯ä»¥æ›´æ–°
    private LocalDateTime dumplingTime;
    @ApiModelProperty("最高学位")
    @ExcelProperty("最高学位")
    private String highestDegree;
    @ApiModelProperty("最后更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime lastUpdateTime;
}
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfoFile.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
package com.ruoyi.personnel.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 * äººå‘˜åŸºæœ¬ä¿¡æ¯é™„ä»¶
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2025-01-09 05:28:55
 */
@Getter
@Setter
@TableName("cnas_person_basic_info_file")
@ApiModel(value = "PersonBasicInfoFile对象", description = "人员基本信息附件")
public class PersonBasicInfoFile implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "basic_info_file_id", type = IdType.AUTO)
    private Integer basicInfoFileId;
    @ApiModelProperty("人员基本信息id")
    private Integer userId;
    @ApiModelProperty("类型:1图片/2文件")
    private Integer type;
    @ApiModelProperty("附件路径")
    private String fileUrl;
    @ApiModelProperty("附件名称")
    private String fileName;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfoWork.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
package com.ruoyi.personnel.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 * äººå‘˜åŸºæœ¬ä¿¡æ¯
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2025-01-09 05:45:04
 */
@Getter
@Setter
@TableName("cnas_person_basic_info_work")
@ApiModel(value = "PersonBasicInfoWork对象", description = "人员基本信息")
public class PersonBasicInfoWork implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "basic_info_work_id", type = IdType.AUTO)
    private Integer basicInfoWorkId;
    @ApiModelProperty("人员id")
    private Integer userId;
    @ApiModelProperty("工作经历")
    private String workExperience;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-personnel/src/main/java/com/ruoyi/personnel/service/AnnexService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package com.ruoyi.personnel.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.personnel.pojo.Annex;
public interface AnnexService extends IService<Annex> {
}
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoFileService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.personnel.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.personnel.pojo.PersonBasicInfoFile;
/**
 * <p>
 * äººå‘˜åŸºæœ¬ä¿¡æ¯é™„ä»¶ æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2025-01-09 05:28:55
 */
public interface PersonBasicInfoFileService extends IService<PersonBasicInfoFile> {
}
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.ruoyi.personnel.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.entity.DepartmentDto;
import com.ruoyi.personnel.dto.PersonBasicInfoDto;
import com.ruoyi.personnel.dto.UserPageDto;
import com.ruoyi.personnel.pojo.PersonBasicInfo;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
 * <p>
 *  æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-08-30 09:19:57
 */
public interface PersonBasicInfoService extends IService<PersonBasicInfo> {
    List<DepartmentDto> selectCNSAPersonTree();
    Map<String,Object> getCNASPersonnelInfo(Integer userId);
    void saveCNASPersonnelInfo(PersonBasicInfoDto personBasicInfoDto);
    IPage<Map<String, Object>> basicInformationOfPersonnelSelectPage(Page page, String name, Integer departmentId);
    void exportPersonBasicInfo(UserPageDto userPageDto, HttpServletResponse response) throws Exception;
    String exportPersonBasicInfoById(Integer id, HttpServletResponse response);
    /**
     * äººå‘˜åŸ¹è®­åŸºæœ¬ä¿¡æ¯é™„件新增
     * @param basicInfoId
     * @param file
     * @return
     */
    boolean uploadBasicInfoFile(Integer basicInfoId, MultipartFile file);
}
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoWorkService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.personnel.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.personnel.pojo.PersonBasicInfoWork;
/**
 * <p>
 * äººå‘˜åŸºæœ¬ä¿¡æ¯ æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2025-01-09 05:45:04
 */
public interface PersonBasicInfoWorkService extends IService<PersonBasicInfoWork> {
}
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/AnnexServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.ruoyi.personnel.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.personnel.mapper.AnnexMapper;
import com.ruoyi.personnel.pojo.Annex;
import com.ruoyi.personnel.service.AnnexService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@AllArgsConstructor
public class AnnexServiceImpl extends ServiceImpl<AnnexMapper, Annex> implements AnnexService {
}
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoFileServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.personnel.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.personnel.mapper.PersonBasicInfoFileMapper;
import com.ruoyi.personnel.pojo.PersonBasicInfoFile;
import com.ruoyi.personnel.service.PersonBasicInfoFileService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * äººå‘˜åŸºæœ¬ä¿¡æ¯é™„ä»¶ æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2025-01-09 05:28:55
 */
@Service
public class PersonBasicInfoFileServiceImpl extends ServiceImpl<PersonBasicInfoFileMapper, PersonBasicInfoFile> implements PersonBasicInfoFileService {
}
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,336 @@
//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;
//
///**
// * <p>
// *  æœåŠ¡å®žçŽ°ç±»
// * </p>
// *
// * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
// * @since 2024-08-30 09:19:57
// */
//
//@Service
//@Transactional(rollbackFor = Exception.class)
//public class PersonBasicInfoServiceImpl extends ServiceImpl<PersonBasicInfoMapper, PersonBasicInfo> 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<DepartmentDto> selectCNSAPersonTree() {
//        List<DepartmentDto> departments = departmentMapper.selectDepartment();
//        List<DepartmentDto> 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<String,Object> getCNASPersonnelInfo(Integer userId) {
//        Map<String, Object> map = new HashMap<>();
//        Map<Integer,List<DepartmentLims>>  childrenMap = new HashMap<>();
//        List<DepartmentLims> 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<DepartmentLims> 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<Annex>().eq(Annex::getUserId,userId)));
//        return map;
//    }
//
//    private DepartmentLims buildTree(DepartmentLims departmentLims, Map<Integer,List<DepartmentLims>> 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<PersonBasicInfo>()
//                .eq(PersonBasicInfo::getUserId, personBasicInfoDto.getUserId()));
//        if(Objects.isNull(one)) {
//            baseMapper.insert(personBasicInfo);
//        }else {
//            baseMapper.updateById(personBasicInfo);
//        }
//    }
//
//    @Override
//    public IPage<Map<String, Object>> basicInformationOfPersonnelSelectPage(Page page, String name, Integer departmentId) {
//        return baseMapper.selectPersonBasecInfoAndUser(page, name, departmentId);
//    }
//
//    @Override
//    public void exportPersonBasicInfo(UserPageDto userPageDto, HttpServletResponse response) throws Exception {
//        ArrayList<PersonBasicInfoDto> data = new ArrayList<>();
//        List<User> list = userMapper.selectUserDtoPageList(new Page(-1, -1), QueryWrappers.queryWrappers(userPageDto)).getRecords();
//        for (User user : list) {
//            PersonBasicInfoDto personBasicInfoDto = new PersonBasicInfoDto();
//            PersonBasicInfo personBasicInfo = baseMapper.selectOne(Wrappers.<PersonBasicInfo>lambdaQuery().eq(PersonBasicInfo::getUserId, user.getId()));
//            if (ObjectUtils.isNotEmpty(personBasicInfo)) {
//                BeanUtils.copyProperties(personBasicInfo, personBasicInfoDto);
//            }
//            personBasicInfoDto.setName(user.getName());
//            personBasicInfoDto.setAccount(user.getAccount());
//            personBasicInfoDto.setPhone(ObjectUtils.isNotEmpty(user.getPhone()) ? user.getPhone() : " ");
//            data.add(personBasicInfoDto);
//        }
//        response.setContentType("application/vnd.ms-excel");
//        response.setCharacterEncoding("UTF-8");
//        String fileName = URLEncoder.encode("人员基本信息列表导出", "UTF-8");
//        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
//        try {
//            // æ–°å»ºExcelWriter
//            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
//            WriteSheet mainSheet = EasyExcel.writerSheet(0, "人员基本信息导出").head(PersonBasicInfoDto.class).build();
//            excelWriter.write(data, mainSheet);
//            // å…³é—­æµ
//            excelWriter.finish();
//        } catch (IOException e) {
//            throw new RuntimeException("导出失败");
//        }
//    }
//
//    @Override
//    public String exportPersonBasicInfoById(Integer id, HttpServletResponse response) {
//        Map<String, Object> userMap = baseMapper.selectexportPersonBasic(id);
//        User user = userMapper.selectById(id);
//        PersonBasicInfo personBasicInfo = baseMapper.selectOne(Wrappers.<PersonBasicInfo>lambdaQuery().eq(PersonBasicInfo::getUserId, user.getId()));
//        if (ObjectUtils.isEmpty(personBasicInfo)){
//            throw new ErrorException("该用户的基本信息没有录入,暂无法导出");
//        }
//        // è¯ä»¶
//        List<Annex> annexList = annexMapper.selectList(Wrappers.<Annex>lambdaQuery()
//                .eq(Annex::getUserId, id));
//        // å·¥ä½œç»åކ
//        List<PersonBasicInfoWork> personBasicInfoWorks = personBasicInfoWorkMapper.selectList(Wrappers.<PersonBasicInfoWork>lambdaQuery()
//                .eq(PersonBasicInfoWork::getUserId, id));
//
//        List<PersonBasicInfoWorkDto> workList = personBasicInfoWorks.stream().map(basicInfoWork -> {
//            PersonBasicInfoWorkDto personBasicInfoWorkDto = new PersonBasicInfoWorkDto();
//            personBasicInfoWorkDto.setWorkExperience(basicInfoWork.getWorkExperience());
//            personBasicInfoWorkDto.setFill("主要工作经历\nMain work experience∑1");
//            return personBasicInfoWorkDto;
//        }).collect(Collectors.toList());
//
//        // æ£€æŸ¥åˆ—表长度并填充空对象
//        while (annexList.size() < 10) {
//            annexList.add(new Annex());
//        }
//
//        // æ£€æŸ¥åˆ—表长度并填充空对象
//        while (workList.size() < 4) {
//            workList.add(new PersonBasicInfoWorkDto());
//        }
//
//        // èŽ·å–è·¯å¾„
//        InputStream inputStream = this.getClass().getResourceAsStream("/static/person-basic-info.docx");
//        Configure configure = Configure.builder()
//                .bind("annexList", new HackLoopTableRenderPolicy())
//                .bind("workList", new HackLoopTableRenderPolicy())
//                .build();
//        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
//                new HashMap<String, Object>() {{
//                    put("user", userMap);
//                    put("annexList", annexList);
//                    put("workList", workList);
//                }});
//
//        try {
//            response.setContentType("application/msword");
//            String fileName = URLEncoder.encode(
//                    userMap.get("name") + "人员档案", "UTF-8");
//            response.setHeader("Content-disposition",
//                    "attachment;filename=" + fileName + ".docx");
//            OutputStream os = response.getOutputStream();
//            template.write(os);
//            os.flush();
//            os.close();
//        } catch (Exception e) {
//            e.printStackTrace();
//            throw new RuntimeException("导出失败");
//        }
//
//        return null;
//    }
//
//    /**
//     * äººå‘˜åŸ¹è®­åŸºæœ¬ä¿¡æ¯é™„件新增
//     * @param userId
//     * @param file
//     * @return
//     */
//    @Override
//    public boolean uploadBasicInfoFile(Integer userId, MultipartFile file) {
//        if (userId == null) {
//            throw new ErrorException("缺少人员id");
//        }
//
//        String urlString;
//        String pathName;
//        String path;
//        String filename = file.getOriginalFilename();
//        String contentType = file.getContentType();
//        PersonBasicInfoFile personBasicInfoFile = new PersonBasicInfoFile();
//        personBasicInfoFile.setUserId(userId);
//        personBasicInfoFile.setFileName(filename);
//        if (contentType != null && contentType.startsWith("image/")) {
//            // æ˜¯å›¾ç‰‡
//            path = imgUrl;
//            personBasicInfoFile.setType(1);
//        } else {
//            // æ˜¯æ–‡ä»¶
//            path = wordUrl;
//            personBasicInfoFile.setType(2);
//        }
//        try {
//            File realpath = new File(path);
//            if (!realpath.exists()) {
//                realpath.mkdirs();
//            }
//            pathName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")) + "_" + file.getOriginalFilename();
//            urlString = realpath + "/" + pathName;
//            file.transferTo(new File(urlString));
//            personBasicInfoFile.setFileUrl(pathName);
//            personBasicInfoFileMapper.insert(personBasicInfoFile);
//            return true;
//        } catch (Exception e) {
//            e.printStackTrace();
//            System.err.println("附件上传错误");
//            return false;
//        }
//    }
//
//    /**
//     * é€’归查询子节点
//     * @param root  æ ¹èŠ‚ç‚¹
//     * @param all   æ‰€æœ‰èŠ‚ç‚¹
//     * @return æ ¹èŠ‚ç‚¹ä¿¡æ¯
//     */
//    private List<DepartmentDto> getChildren(DepartmentDto root, List<DepartmentDto> all) {
//        if (ObjectUtils.isNotEmpty(root.getId())) {
//            return all.stream().filter(m -> Objects.equals(m.getFatherId(), root.getId())).peek(
//                    (m) -> m.setChildren(getChildren(m, all))
//            ).collect(Collectors.toList());
//        } else {
//            return Collections.emptyList();
//        }
//    }
//
//    // æ°´å¹³åˆå¹¶å•元格
//    private static void mergeCellsHorizontally(XWPFTable table, int row, int fromCol, int toCol) {
//        for (int i = fromCol; i <= toCol; i++) {
//            if (i == fromCol) {
//                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
//            } else {
//                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
//            }
//        }
//    }
//
//    // åž‚直合并单元格
//    private static void mergeCellsVertically(XWPFTable table, int col, int fromRow, int toRow) {
//        for (int i = fromRow; i <= toRow; i++) {
//            if (i == fromRow) {
//                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
//            } else {
//                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
//            }
//        }
//    }
//}
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoWorkServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.personnel.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.personnel.mapper.PersonBasicInfoWorkMapper;
import com.ruoyi.personnel.pojo.PersonBasicInfoWork;
import com.ruoyi.personnel.service.PersonBasicInfoWorkService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * äººå‘˜åŸºæœ¬ä¿¡æ¯ æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2025-01-09 05:45:04
 */
@Service
public class PersonBasicInfoWorkServiceImpl extends ServiceImpl<PersonBasicInfoWorkMapper, PersonBasicInfoWork> implements PersonBasicInfoWorkService {
}
pom.xml
@@ -278,6 +278,13 @@
                <version>${ruoyi.version}</version>
            </dependency>
            <!--cnas人员-->
            <dependency>
                <groupId>com.ruoyi</groupId>
                <artifactId>cnas-personnel</artifactId>
                <version>${ruoyi.version}</version>
            </dependency>
            <!-- minio -->
            <dependency>
                <groupId>io.minio</groupId>
@@ -392,6 +399,7 @@
        <module>cnas-manage</module>
        <module>cnas-device</module>
        <module>cnas-process</module>
        <module>cnas-personnel</module>
    </modules>
    <packaging>pom</packaging>
ruoyi-admin/pom.xml
@@ -97,6 +97,18 @@
            <artifactId>cnas-device</artifactId>
        </dependency>
        <!--cnas资源要求-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>cnas-process</artifactId>
        </dependency>
        <!--cnas人员-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>cnas-personnel</artifactId>
        </dependency>
    </dependencies>
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.ruoyi.common.core.domain.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DepartmentDto {
    private Integer id;
    private String name;
    private Integer userId;
    private Integer fatherId;
    private List<DepartmentDto> children;
}
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentLims.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.ruoyi.common.core.domain.entity;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
 * éƒ¨é—¨æ˜Žç»†
 * @TableName department_lims
 */
@TableName(value ="department_lims")
@Data
public class DepartmentLims implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("名称")
    private String name;
    @ApiModelProperty("父级id")
    private Integer fatherId;
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @TableField(exist = false)
    private List<DepartmentLims> children;
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/DepartmentLimsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.common.core.domain.entity.DepartmentDto;
import com.ruoyi.common.core.domain.entity.DepartmentLims;
import java.util.List;
/**
* @author z1292
* @description é’ˆå¯¹è¡¨ã€department_lims(部门明细)】的数据库操作Mapper
* @createDate 2024-05-22 14:08:17
* @Entity com.yuanchu.mom.pojo.DepartmentLims
*/
public interface DepartmentLimsMapper extends BaseMapper<DepartmentLims> {
    //获取部门树
    List<DepartmentDto> selectDepartment();
    //根据部门id,查询他的所有子类id
    List<Integer> selectSonById(Integer id);
}
ruoyi-system/src/main/resources/mapper/system/DepartmentLimsMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.DepartmentLimsMapper">
    <select id="selectDepartment" resultType="com.ruoyi.common.core.domain.entity.DepartmentDto">
        SELECT id, name, father_id
        FROM department_lims
    </select>
    <select id="selectSonById" resultType="java.lang.Integer">
        SELECT au.id
        FROM (SELECT * FROM department_lims WHERE father_id IS NOT NULL) au,
             (SELECT @father_id := #{id}) pd
        WHERE FIND_IN_SET(father_id, @father_id) > 0
                  AND @father_id := concat(@father_id, ',', id)
        UNION
        SELECT id
        FROM department_lims
        WHERE id = #{id}
        ORDER BY id
    </select>
</mapper>