From b620ed21a126a5a138685e51056b4b8f679bd372 Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期六, 22 二月 2025 20:08:00 +0800
Subject: [PATCH] 人员移植
---
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentLims.java | 42 +
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/Annex.java | 48 ++
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/AnnexServiceImpl.java | 13
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoWorkService.java | 16
pom.xml | 8
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoDto.java | 47 ++
cnas-personnel/src/main/java/com/ruoyi/personnel/service/AnnexService.java | 7
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/UserPageDto.java | 24 +
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoFileService.java | 16
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoServiceImpl.java | 336 ++++++++++++++
ruoyi-system/src/main/java/com/ruoyi/system/mapper/DepartmentLimsMapper.java | 27 +
ruoyi-system/src/main/resources/mapper/system/DepartmentLimsMapper.xml | 25 +
cnas-personnel/pom.xml | 46 ++
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfoWork.java | 53 ++
cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java | 225 +++++++++
ruoyi-admin/pom.xml | 12
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoFileMapper.java | 16
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoFileServiceImpl.java | 20
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentDto.java | 23 +
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoWorkMapper.java | 16
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoWorkServiceImpl.java | 20
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfo.java | 156 ++++++
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoService.java | 45 +
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/AnnexMapper.java | 9
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java | 42 +
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfoFile.java | 58 ++
26 files changed, 1,350 insertions(+), 0 deletions(-)
diff --git a/cnas-personnel/pom.xml b/cnas-personnel/pom.xml
new file mode 100644
index 0000000..689a7a9
--- /dev/null
+++ b/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>
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java
new file mode 100644
index 0000000..32b9224
--- /dev/null
+++ b/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 = "涓嬭浇浜哄憳妗f鍗�")
+// @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));
+// }
+//}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoDto.java
new file mode 100644
index 0000000..b5cd643
--- /dev/null
+++ b/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;
+
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/UserPageDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/UserPageDto.java
new file mode 100644
index 0000000..856b6f4
--- /dev/null
+++ b/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;
+
+
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/AnnexMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/AnnexMapper.java
new file mode 100644
index 0000000..9fee604
--- /dev/null
+++ b/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> {
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoFileMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoFileMapper.java
new file mode 100644
index 0000000..fb0e2f5
--- /dev/null
+++ b/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> {
+
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java
new file mode 100644
index 0000000..f23ba5f
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoWorkMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoWorkMapper.java
new file mode 100644
index 0000000..df8d2d4
--- /dev/null
+++ b/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> {
+
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/Annex.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/Annex.java
new file mode 100644
index 0000000..bbf2017
--- /dev/null
+++ b/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琛╥d")
+ 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;
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfo.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfo.java
new file mode 100644
index 0000000..abf3880
--- /dev/null
+++ b/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锛塱d")
+ 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;
+
+
+
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfoFile.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfoFile.java
new file mode 100644
index 0000000..0b366f8
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfoWork.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfoWork.java
new file mode 100644
index 0000000..2d15afa
--- /dev/null
+++ b/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;
+
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/AnnexService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/AnnexService.java
new file mode 100644
index 0000000..8de7b15
--- /dev/null
+++ b/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> {
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoFileService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoFileService.java
new file mode 100644
index 0000000..1fb5ba6
--- /dev/null
+++ b/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> {
+
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoService.java
new file mode 100644
index 0000000..fcc4d69
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoWorkService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoWorkService.java
new file mode 100644
index 0000000..cfd944f
--- /dev/null
+++ b/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> {
+
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/AnnexServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/AnnexServiceImpl.java
new file mode 100644
index 0000000..d944b3b
--- /dev/null
+++ b/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 {
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoFileServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoFileServiceImpl.java
new file mode 100644
index 0000000..a70f196
--- /dev/null
+++ b/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 {
+
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoServiceImpl.java
new file mode 100644
index 0000000..7d0e695
--- /dev/null
+++ b/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") + "浜哄憳妗f", "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);
+// }
+// }
+// }
+//}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoWorkServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoWorkServiceImpl.java
new file mode 100644
index 0000000..3ed8882
--- /dev/null
+++ b/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 {
+
+}
diff --git a/pom.xml b/pom.xml
index 9d36e98..0dbf825 100644
--- a/pom.xml
+++ b/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>
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 7dd0fdb..485e28d 100644
--- a/ruoyi-admin/pom.xml
+++ b/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>
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentDto.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentDto.java
new file mode 100644
index 0000000..9fa947a
--- /dev/null
+++ b/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;
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentLims.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentLims.java
new file mode 100644
index 0000000..4ec52e2
--- /dev/null
+++ b/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;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DepartmentLimsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DepartmentLimsMapper.java
new file mode 100644
index 0000000..3e2a51e
--- /dev/null
+++ b/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 閽堝琛ㄣ�恉epartment_lims(閮ㄩ棬鏄庣粏)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2024-05-22 14:08:17
+* @Entity com.yuanchu.mom.pojo.DepartmentLims
+*/
+public interface DepartmentLimsMapper extends BaseMapper<DepartmentLims> {
+
+ //鑾峰彇閮ㄩ棬鏍�
+ List<DepartmentDto> selectDepartment();
+
+ //鏍规嵁閮ㄩ棬id,鏌ヨ浠栫殑鎵�鏈夊瓙绫籭d
+ List<Integer> selectSonById(Integer id);
+
+}
+
+
+
+
diff --git a/ruoyi-system/src/main/resources/mapper/system/DepartmentLimsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/DepartmentLimsMapper.xml
new file mode 100644
index 0000000..48c7d39
--- /dev/null
+++ b/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>
--
Gitblit v1.9.3