From 8c8be02883e58d28727d3b510e5260474fc955ae Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期一, 24 二月 2025 10:55:13 +0800
Subject: [PATCH] 人员沟通记录移植

---
 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonCommunicationAbilityDto.java                  |   14 
 cnas-personnel/src/main/resources/mapper/PersonCommunicationAbilityMapper.xml                            |   19 +
 cnas-manage/src/main/java/com/ruoyi/manage/controller/ClientSatisfactionController.java                  |    2 
 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityExportDto.java               |  101 +++++
 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPersonnelCapacityMapper.java               |   29 +
 cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonPersonnelCapacityController.java       |  186 +++++-----
 cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonCommunicationAbilityController.java    |   61 +++
 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonCommunicationAbilityServiceImpl.java |  113 ++++++
 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPersonnelCapacityServiceImpl.java    |  158 +++++++++
 cnas-personnel/src/main/resources/mapper/PersonPersonnelCapacityMapper.xml                               |  118 ++++++
 cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonCommunicationAbility.java                    |   61 +++
 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityDto.java                     |   30 +
 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonCommunicationAbilityMapper.java            |   21 +
 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonCommunicationAbilityService.java          |   25 +
 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonPersonnelCapacityService.java             |   69 ++--
 15 files changed, 878 insertions(+), 129 deletions(-)

diff --git a/cnas-manage/src/main/java/com/ruoyi/manage/controller/ClientSatisfactionController.java b/cnas-manage/src/main/java/com/ruoyi/manage/controller/ClientSatisfactionController.java
index 0251cac..c5b1067 100644
--- a/cnas-manage/src/main/java/com/ruoyi/manage/controller/ClientSatisfactionController.java
+++ b/cnas-manage/src/main/java/com/ruoyi/manage/controller/ClientSatisfactionController.java
@@ -71,7 +71,7 @@
      */
 
     @ApiOperation(value = "瀹㈡埛婊℃剰搴﹁皟鏌ユ柊澧�")
-    @GetMapping("/delClientSatisfaction")
+    @DeleteMapping("/delClientSatisfaction")
     public Result updateClientSatisfaction(Integer clientSatisfactionId){
         return Result.success(clientSatisfactionService.removeById(clientSatisfactionId));
     }
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonCommunicationAbilityController.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonCommunicationAbilityController.java
new file mode 100644
index 0000000..3aef8b9
--- /dev/null
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonCommunicationAbilityController.java
@@ -0,0 +1,61 @@
+package com.ruoyi.personnel.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.personnel.dto.PersonCommunicationAbilityDto;
+import com.ruoyi.personnel.pojo.PersonCommunicationAbility;
+import com.ruoyi.personnel.service.PersonCommunicationAbilityService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 娌熼�氳褰� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-10-09 12:00:57
+ */
+@Api(tags = "浜哄憳 - 娌熼�氳褰�")
+@RestController
+@RequestMapping("/personCommunicationAbility")
+public class PersonCommunicationAbilityController {
+
+    @Autowired
+    private PersonCommunicationAbilityService personCommunicationAbilityService;
+
+    @ApiOperation(value = "鏂板/鏇存柊 娌熼�氳褰�")
+    @PostMapping("addOrUpdatePersonCommunicationAbility")
+    public Result<?> addOrUpdatePersonCommunicationAbility(@RequestBody PersonCommunicationAbility personCommunicationAbility) {
+        personCommunicationAbilityService.saveOrUpdate(personCommunicationAbility);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鍒犻櫎 娌熼�氳褰�")
+    @DeleteMapping("deletePersonCommunicationAbility")
+    public Result<?> deletePersonCommunicationAbility(@RequestParam("id") Integer id) {
+        personCommunicationAbilityService.removeById(id);
+        return Result.success();
+    }
+
+
+    @ApiOperation(value = "鏌ヨ 娌熼�氳褰�")
+    @GetMapping("personPersonCommunicationAbilityPage")
+    public Result<IPage<PersonCommunicationAbilityDto>> personPersonCommunicationAbilityPage(Page page,
+                                                                                             Integer departLimsId,
+                                                                                             Integer userId,
+                                                                                             String userName) {
+        return Result.success(personCommunicationAbilityService.personPersonCommunicationAbilityPage(page, departLimsId, userId, userName));
+    }
+
+    @ApiOperation(value = "瀵煎嚭娌熼�氳褰�")
+    @PostMapping("exportPersonCommunicationAbility")
+    public void exportPersonCommunicationAbility(Integer id, HttpServletResponse response) throws Exception{
+        personCommunicationAbilityService.exportPersonCommunicationAbility(id,response);
+    }
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonPersonnelCapacityController.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonPersonnelCapacityController.java
index b98f1de..a066615 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonPersonnelCapacityController.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonPersonnelCapacityController.java
@@ -1,94 +1,92 @@
-//package com.ruoyi.personnel.controller;
-//
-//import com.baomidou.mybatisplus.core.metadata.IPage;
-//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-//import com.yuanchu.mom.annotation.ValueAuth;
-//import com.yuanchu.mom.common.GetLook;
-//import com.yuanchu.mom.dto.PersonPersonnelCapacityDto;
-//import com.yuanchu.mom.pojo.PersonPersonnelCapacity;
-//import com.yuanchu.mom.service.PersonPersonnelCapacityService;
-//import com.yuanchu.mom.vo.Result;
-//import io.swagger.annotations.Api;
-//import io.swagger.annotations.ApiOperation;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.web.bind.annotation.*;
-//
-//import javax.servlet.http.HttpServletResponse;
-//import java.time.LocalDateTime;
-//
-///**
-// * <p>
-// * 浜哄憳鑳藉姏 鍓嶇鎺у埗鍣�
-// * </p>
-// *
-// * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
-// * @since 2024-10-10 11:26:18
-// */
-//@Api(tags = "浜哄憳 - 浜哄憳鑳藉姏")
-//@RestController
-//@RequestMapping("/personPersonnelCapacity")
-//public class PersonPersonnelCapacityController {
-//
-//    @Autowired
-//    private PersonPersonnelCapacityService personPersonnelCapacityService;
-//
-//
-//    @ApiOperation(value = "鏂板/鏇存柊 浜哄憳鑳藉姏")
-//    @PostMapping("addOrUpdatePersonPersonnelCapacity")
-//    public Result<?> addOrUpdatePersonPersonnelCapacity(@RequestBody PersonPersonnelCapacity personPersonnelCapacity) {
-//        personPersonnelCapacityService.saveOrUpdate(personPersonnelCapacity);
-//        return Result.success();
-//    }
-//
-//    @ApiOperation(value = "鍒犻櫎 浜哄憳鑳藉姏")
-//    @DeleteMapping("deletePersonPersonnelCapacity")
-//    public Result<?> deletePersonPersonnelCapacity(@RequestParam("id") Integer id) {
-//        // 鍒犻櫎鏁版嵁
-//        personPersonnelCapacityService.removeById(id);
-//        return Result.success();
-//    }
-//
-//    @ApiOperation(value = "鏌ヨ 浜哄憳鑳藉姏")
-//    @GetMapping("personPersonnelCapacityPage")
-//    public Result<IPage<PersonPersonnelCapacityDto>> personPersonnelCapacityPage(Page page,
-//                                                                                 Integer departmentId,
-//                                                                                 Integer userId,
-//                                                                                 String userName) {
-//        return Result.success(personPersonnelCapacityService.personPersonnelCapacityPage(page, departmentId, userId, userName));
-//    }
-//
-//    @ApiOperation(value = "纭 浜哄憳鑳藉姏")
-//    @GetMapping("confirmPersonnelCapability")
-//    public Result<?> confirmPersonnelCapability(@RequestParam("id") Integer id) {
-//        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
-//        personPersonnelCapacityService.update(Wrappers.<PersonPersonnelCapacity>lambdaUpdate()
-//                .eq(PersonPersonnelCapacity::getId, id)
-//                .set(PersonPersonnelCapacity::getConfirmOperatingPersonnelId, userId)
-//                .set(PersonPersonnelCapacity::getConfirmDate, LocalDateTime.now()));
-//        return Result.success();
-//    }
-//
-//    /**
-//     * 瀵煎嚭浜哄憳鑳藉姏
-//     * @return
-//     */
-//    @ValueAuth
-//    @ApiOperation(value = "瀵煎嚭浜哄憳鑳藉姏")
-//    @GetMapping("/exportPersonnelCapacity")
-//    public void exportPersonnelCapacity(Integer id, HttpServletResponse response){
-//        personPersonnelCapacityService.exportPersonnelCapacity(id, response);
-//    }
-//
-//    /**
-//     * 鎻愪氦纭浜哄憳鑳藉姏
-//     * @param personPersonnelCapacity
-//     * @return
-//     */
-//    @ApiOperation(value = "鎻愪氦")
-//    @PostMapping("submitConfirmPersonnelCapability")
-//    public Result<?> submitConfirmPersonnelCapability(@RequestBody PersonPersonnelCapacity personPersonnelCapacity) {
-//        personPersonnelCapacityService.submitConfirmPersonnelCapability(personPersonnelCapacity);
-//        return Result.success();
-//    }
-//}
+package com.ruoyi.personnel.controller;
+
+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.common.core.domain.Result;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.personnel.dto.PersonPersonnelCapacityDto;
+import com.ruoyi.personnel.pojo.PersonPersonnelCapacity;
+import com.ruoyi.personnel.service.PersonPersonnelCapacityService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 浜哄憳鑳藉姏 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-10-10 11:26:18
+ */
+@Api(tags = "浜哄憳 - 浜哄憳鑳藉姏")
+@RestController
+@RequestMapping("/personPersonnelCapacity")
+public class PersonPersonnelCapacityController {
+
+    @Autowired
+    private PersonPersonnelCapacityService personPersonnelCapacityService;
+
+
+    @ApiOperation(value = "鏂板/鏇存柊 浜哄憳鑳藉姏")
+    @PostMapping("addOrUpdatePersonPersonnelCapacity")
+    public Result<?> addOrUpdatePersonPersonnelCapacity(@RequestBody PersonPersonnelCapacity personPersonnelCapacity) {
+        personPersonnelCapacityService.saveOrUpdate(personPersonnelCapacity);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鍒犻櫎 浜哄憳鑳藉姏")
+    @DeleteMapping("deletePersonPersonnelCapacity")
+    public Result<?> deletePersonPersonnelCapacity(@RequestParam("id") Integer id) {
+        // 鍒犻櫎鏁版嵁
+        personPersonnelCapacityService.removeById(id);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鏌ヨ 浜哄憳鑳藉姏")
+    @GetMapping("personPersonnelCapacityPage")
+    public Result<IPage<PersonPersonnelCapacityDto>> personPersonnelCapacityPage(Page page,
+                                                                                 Integer departmentId,
+                                                                                 Integer userId,
+                                                                                 String userName) {
+        return Result.success(personPersonnelCapacityService.personPersonnelCapacityPage(page, departmentId, userId, userName));
+    }
+
+    @ApiOperation(value = "纭 浜哄憳鑳藉姏")
+    @GetMapping("confirmPersonnelCapability")
+    public Result<?> confirmPersonnelCapability(@RequestParam("id") Integer id) {
+        Integer userId = SecurityUtils.getUserId().intValue();
+        personPersonnelCapacityService.update(Wrappers.<PersonPersonnelCapacity>lambdaUpdate()
+                .eq(PersonPersonnelCapacity::getId, id)
+                .set(PersonPersonnelCapacity::getConfirmOperatingPersonnelId, userId)
+                .set(PersonPersonnelCapacity::getConfirmDate, LocalDateTime.now()));
+        return Result.success();
+    }
+
+    /**
+     * 瀵煎嚭浜哄憳鑳藉姏
+     * @return
+     */
+    @ApiOperation(value = "瀵煎嚭浜哄憳鑳藉姏")
+    @GetMapping("/exportPersonnelCapacity")
+    public void exportPersonnelCapacity(Integer id, HttpServletResponse response){
+        personPersonnelCapacityService.exportPersonnelCapacity(id, response);
+    }
+
+    /**
+     * 鎻愪氦纭浜哄憳鑳藉姏
+     * @param personPersonnelCapacity
+     * @return
+     */
+    @ApiOperation(value = "鎻愪氦")
+    @PostMapping("submitConfirmPersonnelCapability")
+    public Result<?> submitConfirmPersonnelCapability(@RequestBody PersonPersonnelCapacity personPersonnelCapacity) {
+        personPersonnelCapacityService.submitConfirmPersonnelCapability(personPersonnelCapacity);
+        return Result.success();
+    }
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonCommunicationAbilityDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonCommunicationAbilityDto.java
new file mode 100644
index 0000000..d3cb18e
--- /dev/null
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonCommunicationAbilityDto.java
@@ -0,0 +1,14 @@
+package com.ruoyi.personnel.dto;
+
+import com.ruoyi.personnel.pojo.PersonCommunicationAbility;
+import lombok.Data;
+
+@Data
+public class PersonCommunicationAbilityDto extends PersonCommunicationAbility {
+
+    private String userName;
+
+    private String account;
+
+    private String createUserName;
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityDto.java
new file mode 100644
index 0000000..5e77690
--- /dev/null
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityDto.java
@@ -0,0 +1,30 @@
+package com.ruoyi.personnel.dto;
+
+import com.ruoyi.personnel.pojo.PersonPersonnelCapacity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class PersonPersonnelCapacityDto extends PersonPersonnelCapacity {
+
+    @ApiModelProperty("鎿嶄綔浜哄鍚�")
+    private String confirmOperatingPersonnelName;
+
+    @ApiModelProperty("浜哄憳濮撳悕")
+    private String userName;
+
+    @ApiModelProperty("宀椾綅鍚嶇О")
+    private String postName;
+
+    @ApiModelProperty("宀椾綅鑱岃矗")
+    private String responsibilities;
+
+    @ApiModelProperty("宸ヤ綔缁忓巻")
+    private String placeWork;
+
+    @ApiModelProperty("涓撲笟")
+    private String major;
+
+    @ApiModelProperty(value = "鑱岀О")
+    private String professionalTitle;
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityExportDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityExportDto.java
new file mode 100644
index 0000000..20526b6
--- /dev/null
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityExportDto.java
@@ -0,0 +1,101 @@
+package com.ruoyi.personnel.dto;
+
+import com.ruoyi.personnel.pojo.PersonPersonnelCapacity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author zhuo
+ * @Date 2024/11/28
+ */
+@Data
+public class PersonPersonnelCapacityExportDto extends PersonPersonnelCapacity {
+
+    @ApiModelProperty("宀椾綅鍚嶇О")
+    private String postName;
+
+    @ApiModelProperty("浜哄憳濮撳悕")
+    private String userName;
+
+    @ApiModelProperty("瀛﹀巻")
+    private String officialAcademicRedentials;
+
+    @ApiModelProperty("涓撲笟")
+    private String major;
+
+    @ApiModelProperty("鑱岀О")
+    private String professionalTitle;
+
+    @ApiModelProperty("宸ヤ綔缁忓巻")
+    private String placeWork;
+
+    @ApiModelProperty("瀛﹀巻 绗﹀悎涓庡惁(1锛氱鍚�)")
+    private String academicConformNot1 = "鈻�";
+    @ApiModelProperty("瀛﹀巻 绗﹀悎涓庡惁(2锛氫笉绗﹀悎)")
+    private String academicConformNot2 = "鈻�";
+    @ApiModelProperty("瀛﹀巻 绗﹀悎涓庡惁(3锛氫笉閫傜敤)")
+    private String academicConformNot3 = "鈻�";
+
+    @ApiModelProperty("鐩稿叧骞撮檺  绗﹀悎涓庡惁(1锛氱鍚�)")
+    private String relatedYearsConformNot1 = "鈻�";
+    @ApiModelProperty("鐩稿叧骞撮檺  绗﹀悎涓庡惁(2锛氫笉绗﹀悎)")
+    private String relatedYearsConformNot2 = "鈻�";
+    @ApiModelProperty("鐩稿叧骞撮檺  绗﹀悎涓庡惁(3锛氫笉閫傜敤)")
+    private String relatedYearsConformNot3 = "鈻�";
+
+    @ApiModelProperty("鐩稿叧鍩硅 绗﹀悎涓庡惁(1锛氱鍚�)")
+    private String relatedTrainingConformNot1 = "鈻�";
+    @ApiModelProperty("鐩稿叧鍩硅 绗﹀悎涓庡惁(2锛氫笉绗﹀悎)")
+    private String relatedTrainingConformNot2 = "鈻�";
+    @ApiModelProperty("鐩稿叧鍩硅 绗﹀悎涓庡惁(3锛氫笉閫傜敤)")
+    private String relatedTrainingConformNot3 = "鈻�";
+
+    @ApiModelProperty("鐩稿叧缁忛獙 绗﹀悎涓庡惁(1锛氱鍚�)")
+    private String relevantExperienceConformNot1 = "鈻�";
+    @ApiModelProperty("鐩稿叧缁忛獙 绗﹀悎涓庡惁(2锛氫笉绗﹀悎)")
+    private String relevantExperienceConformNot2 = "鈻�";
+    @ApiModelProperty("鐩稿叧缁忛獙 绗﹀悎涓庡惁(3锛氫笉閫傜敤)")
+    private String relevantExperienceConformNot3 = "鈻�";
+
+    @ApiModelProperty("涓婂矖璇� 绗﹀悎涓庡惁(1锛氱鍚�)")
+    private String workLicenseConformNot1 = "鈻�";
+    @ApiModelProperty("涓婂矖璇� 绗﹀悎涓庡惁(2锛氫笉绗﹀悎)")
+    private String workLicenseConformNot2 = "鈻�";
+    @ApiModelProperty("涓婂矖璇� 绗﹀悎涓庡惁(3锛氫笉閫傜敤)")
+    private String workLicenseConformNot3 = "鈻�";
+
+    @ApiModelProperty("宀椾綅鑱岃矗1(鐔熸倝鏈矖浣嶇殑浜у搧妫�娴嬫牱鍝佸埗澶囧拰鐩稿叧浜у搧鍩虹鐭ヨ瘑)")
+    private String jobResponsibilities1 = "鈻�";
+    @ApiModelProperty("宀椾綅鑱岃矗2(鐔熸倝鏈矖浣嶆牱鍝佹娴嬫祦绋�)")
+    private String jobResponsibilities2 = "鈻�";
+    @ApiModelProperty("宀椾綅鑱岃矗3(姝g‘鐔熺粌鎿嶄綔鏈矖浣嶄华琛ㄨ澶�)")
+    private String jobResponsibilities3 = "鈻�";
+    @ApiModelProperty("宀椾綅鑱岃矗4(鐔熸倝鏈矖浣嶇浉鍏虫娴嬫爣鍑�)")
+    private String jobResponsibilities4 = "鈻�";
+    @ApiModelProperty("宀椾綅鑱岃矗5(鐔熸倝鏈矖浣嶄骇鍝佹�ц兘鍙婄粨鏋滃垽鏂�佸垎鏋�)")
+    private String jobResponsibilities5 = "鈻�";
+    @ApiModelProperty("宀椾綅鑱岃矗6(瀹屾垚鐩稿簲鐨勫巶楠屻�佽璇�)")
+    private String jobResponsibilities6 = "鈻�";
+    @ApiModelProperty("宀椾綅鑱岃矗7(缂栧啓鐩稿叧妫�娴嬫墜椤�)")
+    private String jobResponsibilities7 = "鈻�";
+    @ApiModelProperty("宀椾綅鑱岃矗8(浜嗚В浠櫒璁惧鍩烘湰缁撴瀯涓庣畝鍗曠淮鎶や繚鍏�)")
+    private String jobResponsibilities8 = "鈻�";
+    @ApiModelProperty("宀椾綅鑱岃矗9(鍏峰鎶�鑳藉煿璁殑鑳藉姏)")
+    private String jobResponsibilities9 = "鈻�";
+    @ApiModelProperty("宀椾綅鑱岃矗10(鍏峰妫�娴嬩华鍣ㄦ敼閫犺兘鍔�)")
+    private String jobResponsibilities10 = "鈻�";
+
+    @ApiModelProperty("宀椾綅鑱岃矗 绗﹀悎涓庡惁(1锛氱鍚�)")
+    private String jobResponsibilitiesConformNot1 = "鈻�";
+    @ApiModelProperty("宀椾綅鑱岃矗 绗﹀悎涓庡惁(2锛氫笉绗﹀悎)")
+    private String jobResponsibilitiesConformNot2 = "鈻�";
+    @ApiModelProperty("宀椾綅鑱岃矗 绗﹀悎涓庡惁(3锛氫笉閫傜敤)")
+    private String jobResponsibilitiesConformNot3 = "鈻�";
+
+    @ApiModelProperty("缁煎悎璇勪环1(鍙儨浠昏宀椾綅)")
+    private String comprehensiveAssessment1 = "鈻�";
+    @ApiModelProperty("缁煎悎璇勪环2(鍙竟鍩硅杈逛笂宀�)")
+    private String comprehensiveAssessment2 = "鈻�";
+    @ApiModelProperty("缁煎悎璇勪环3(涓嶈儨浠昏宀椾綅)")
+    private String comprehensiveAssessment3 = "鈻�";
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonCommunicationAbilityMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonCommunicationAbilityMapper.java
new file mode 100644
index 0000000..0888b35
--- /dev/null
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonCommunicationAbilityMapper.java
@@ -0,0 +1,21 @@
+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.personnel.dto.PersonCommunicationAbilityDto;
+import com.ruoyi.personnel.pojo.PersonCommunicationAbility;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 娌熼�氳兘鍔� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-10-09 12:00:57
+ */
+public interface PersonCommunicationAbilityMapper extends BaseMapper<PersonCommunicationAbility> {
+
+    IPage<PersonCommunicationAbilityDto> personPersonCommunicationAbilityPage(Page page, @Param("departLimsId") Integer departLimsId, @Param("userId") Integer userId, @Param("userName") String userName);
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPersonnelCapacityMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPersonnelCapacityMapper.java
new file mode 100644
index 0000000..b2bb671
--- /dev/null
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPersonnelCapacityMapper.java
@@ -0,0 +1,29 @@
+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.personnel.dto.PersonPersonnelCapacityDto;
+import com.ruoyi.personnel.dto.PersonPersonnelCapacityExportDto;
+import com.ruoyi.personnel.pojo.PersonPersonnelCapacity;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 浜哄憳鑳藉姏 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-10-10 11:26:18
+ */
+public interface PersonPersonnelCapacityMapper extends BaseMapper<PersonPersonnelCapacity> {
+
+    IPage<PersonPersonnelCapacityDto> personPersonnelCapacityPage(Page page, Integer departLimsId, Integer userId, String userName);
+
+    /**
+     * 鏌ヨ浜哄憳鑳藉姏鎺ュ彛
+     * @param id
+     * @return
+     */
+    PersonPersonnelCapacityExportDto selectExportPersonnelCapacity(@Param("id") Integer id);
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonCommunicationAbility.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonCommunicationAbility.java
new file mode 100644
index 0000000..4df192d
--- /dev/null
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonCommunicationAbility.java
@@ -0,0 +1,61 @@
+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.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 娌熼�氳褰�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-10-09 12:00:57
+ */
+@Getter
+@Setter
+@TableName("cnas_person_communication_ability")
+@ApiModel(value = "PersonCommunicationAbility瀵硅薄", description = "娌熼�氳褰�")
+public class PersonCommunicationAbility implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("涓婚敭id")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("娌熼�氫汉id")
+    private String userId;
+
+    @ApiModelProperty("娌熼�氭椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime communicationTime;
+
+    @ApiModelProperty("娌熼�氬湴鐐�")
+    private String communicationPlace;
+
+    @ApiModelProperty("娌熼�氬唴瀹�")
+    private String communicationContent;
+
+    @ApiModelProperty("鍒涘缓浜篿d")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty(value = "鏇存柊浜篿d", hidden = true)
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true)
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true)
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonCommunicationAbilityService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonCommunicationAbilityService.java
new file mode 100644
index 0000000..a5186be
--- /dev/null
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonCommunicationAbilityService.java
@@ -0,0 +1,25 @@
+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.personnel.dto.PersonCommunicationAbilityDto;
+import com.ruoyi.personnel.pojo.PersonCommunicationAbility;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 娌熼�氳兘鍔� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-10-09 12:00:57
+ */
+public interface PersonCommunicationAbilityService extends IService<PersonCommunicationAbility> {
+
+    IPage<PersonCommunicationAbilityDto> personPersonCommunicationAbilityPage(Page page,
+                                                                              Integer departLimsId, Integer userId, String userName);
+
+    void exportPersonCommunicationAbility(Integer id, HttpServletResponse response)throws Exception;
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonPersonnelCapacityService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonPersonnelCapacityService.java
index 44820ed..dfff72a 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonPersonnelCapacityService.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonPersonnelCapacityService.java
@@ -1,34 +1,35 @@
-//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.personnel.pojo.PersonPersonnelCapacity;
-//
-//import javax.servlet.http.HttpServletResponse;
-//
-///**
-// * <p>
-// * 浜哄憳鑳藉姏 鏈嶅姟绫�
-// * </p>
-// *
-// * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
-// * @since 2024-10-10 11:26:18
-// */
-//public interface PersonPersonnelCapacityService extends IService<PersonPersonnelCapacity> {
-//
-//    IPage<PersonPersonnelCapacityDto> personPersonnelCapacityPage(Page page, Integer departLimsId, Integer userId, String userName);
-//
-//    /**
-//     * 瀵煎嚭浜哄憳鑳藉姏
-//     * @param id
-//     * @param response
-//     */
-//    void exportPersonnelCapacity(Integer id, HttpServletResponse response);
-//
-//    /**
-//     * submitConfirmPersonnelCapability
-//     * @param personPersonnelCapacity
-//     */
-//    void submitConfirmPersonnelCapability(PersonPersonnelCapacity personPersonnelCapacity);
-//}
+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.personnel.dto.PersonPersonnelCapacityDto;
+import com.ruoyi.personnel.pojo.PersonPersonnelCapacity;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 浜哄憳鑳藉姏 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-10-10 11:26:18
+ */
+public interface PersonPersonnelCapacityService extends IService<PersonPersonnelCapacity> {
+
+    IPage<PersonPersonnelCapacityDto> personPersonnelCapacityPage(Page page, Integer departLimsId, Integer userId, String userName);
+
+    /**
+     * 瀵煎嚭浜哄憳鑳藉姏
+     * @param id
+     * @param response
+     */
+    void exportPersonnelCapacity(Integer id, HttpServletResponse response);
+
+    /**
+     * submitConfirmPersonnelCapability
+     * @param personPersonnelCapacity
+     */
+    void submitConfirmPersonnelCapability(PersonPersonnelCapacity personPersonnelCapacity);
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonCommunicationAbilityServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonCommunicationAbilityServiceImpl.java
new file mode 100644
index 0000000..2c1a227
--- /dev/null
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonCommunicationAbilityServiceImpl.java
@@ -0,0 +1,113 @@
+package com.ruoyi.personnel.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.config.ConfigureBuilder;
+import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.personnel.dto.PersonCommunicationAbilityDto;
+import com.ruoyi.personnel.mapper.PersonCommunicationAbilityMapper;
+import com.ruoyi.personnel.pojo.PersonCommunicationAbility;
+import com.ruoyi.personnel.service.PersonCommunicationAbilityService;
+import com.ruoyi.system.mapper.UserMapper;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 娌熼�氳兘鍔� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-10-09 12:00:57
+ */
+@Service
+public class PersonCommunicationAbilityServiceImpl extends ServiceImpl<PersonCommunicationAbilityMapper, PersonCommunicationAbility> implements PersonCommunicationAbilityService {
+
+    @Resource
+    private UserMapper userMapper;
+
+    @Override
+    public IPage<PersonCommunicationAbilityDto> personPersonCommunicationAbilityPage(Page page, Integer departLimsId, Integer userId, String userName) {
+        IPage<PersonCommunicationAbilityDto> personCommunicationAbilityDtoIPage = baseMapper.personPersonCommunicationAbilityPage(page, departLimsId, userId, userName);
+        List<PersonCommunicationAbilityDto> collect = personCommunicationAbilityDtoIPage.getRecords().stream().map(personCommunicationAbilityDto -> {
+            if (ObjectUtils.isNotEmpty(personCommunicationAbilityDto.getUserId())) {
+                List<String> account = new ArrayList<>();
+                List<String> name = new ArrayList<>();
+                for (String s : personCommunicationAbilityDto.getUserId().split(",")) {
+                    User user = userMapper.selectById(Integer.parseInt(s));
+                    account.add(user.getAccount());
+                    name.add(user.getName());
+                }
+                personCommunicationAbilityDto.setAccount(account.stream().collect(Collectors.joining(",")));
+                personCommunicationAbilityDto.setUserName(name.stream().collect(Collectors.joining(",")));
+            }
+            return personCommunicationAbilityDto;  // 杩欓噷鍙互瀵硅繑鍥炵殑鏁版嵁杩涜澶勭悊锛屽娣诲姞涓�浜涙柊鐨勫睘鎬ф垨杞崲绛夈��
+        }).collect(Collectors.toList());
+        personCommunicationAbilityDtoIPage.setRecords(collect);
+        return personCommunicationAbilityDtoIPage;
+    }
+
+    @Override
+    public void exportPersonCommunicationAbility(Integer id, HttpServletResponse response) throws Exception {
+        PersonCommunicationAbility personCommunicationAbility = baseMapper.selectById(id);
+        //娌熼�氫汉
+        String collect = " ";
+        if (ObjectUtils.isNotEmpty(personCommunicationAbility.getUserId())) {
+            List<String> name = new ArrayList<>();
+            for (String s : personCommunicationAbility.getUserId().split(",")) {
+                User user = userMapper.selectById(Integer.parseInt(s));
+                name.add(user.getName());
+            }
+            collect = name.stream().collect(Collectors.joining(","));
+        }
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�");
+
+        //鏃堕棿
+        String communicationTime = "";
+        if (ObjectUtils.isNotEmpty(personCommunicationAbility.getCommunicationTime())) {
+            communicationTime = personCommunicationAbility.getCommunicationTime().format(formatter);
+        }
+
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/communication-deal.docx");
+        ConfigureBuilder builder = Configure.builder();
+        builder.useSpringEL(true);
+        String finalCollect = collect;
+        String finalCommunicationTime = communicationTime;
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
+                new HashMap<String, Object>() {{
+                    put("userName", finalCollect);
+                    put("communicationTime", finalCommunicationTime);
+                    put("communicationPlace", personCommunicationAbility.getCommunicationPlace());
+                    put("communicationContent", personCommunicationAbility.getCommunicationContent());
+                }});
+
+        try {
+            response.setContentType("application/msword");
+            String fileName = URLEncoder.encode(
+                    "娌熼�氳褰�", "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("瀵煎嚭澶辫触");
+        }
+    }
+}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPersonnelCapacityServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPersonnelCapacityServiceImpl.java
new file mode 100644
index 0000000..0c056f1
--- /dev/null
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPersonnelCapacityServiceImpl.java
@@ -0,0 +1,158 @@
+package com.ruoyi.personnel.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.config.ConfigureBuilder;
+import com.deepoove.poi.data.Pictures;
+import com.ruoyi.common.core.domain.entity.InformationNotification;
+import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.common.utils.DateImageUtil;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.WxCpUtils;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.personnel.dto.PersonPersonnelCapacityDto;
+import com.ruoyi.personnel.dto.PersonPersonnelCapacityExportDto;
+import com.ruoyi.personnel.pojo.PersonPersonnelCapacity;
+import com.ruoyi.personnel.mapper.PersonPersonnelCapacityMapper;
+import com.ruoyi.personnel.service.PersonPersonnelCapacityService;
+import com.ruoyi.system.mapper.UserMapper;
+import com.ruoyi.system.service.InformationNotificationService;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.util.HashMap;
+
+/**
+ * <p>
+ * 浜哄憳鑳藉姏 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-10-10 11:26:18
+ */
+@Service
+public class PersonPersonnelCapacityServiceImpl extends ServiceImpl<PersonPersonnelCapacityMapper, PersonPersonnelCapacity> implements PersonPersonnelCapacityService {
+
+    @Resource
+    private UserMapper userMapper;
+    @Resource
+    private InformationNotificationService informationNotificationService;
+
+    @Resource
+    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
+
+
+    @Value("${file.path}")
+    private String imgUrl;
+
+    @Override
+    public IPage<PersonPersonnelCapacityDto> personPersonnelCapacityPage(Page page, Integer departLimsId, Integer userId, String userName) {
+        return baseMapper.personPersonnelCapacityPage(page, departLimsId, userId, userName);
+    }
+
+    /**
+     * 瀵煎嚭浜哄憳鑳藉姏
+     * @param id
+     * @param response
+     */
+    @Override
+    public void exportPersonnelCapacity(Integer id, HttpServletResponse response) {
+        PersonPersonnelCapacityExportDto capacityExportDto = baseMapper.selectExportPersonnelCapacity(id);
+
+        // 纭浜�
+        String confirmUrl = null;
+        if (capacityExportDto.getConfirmOperatingPersonnelId() != null) {
+            confirmUrl = userMapper.selectById(capacityExportDto.getConfirmOperatingPersonnelId()).getSignatureUrl();
+            if (StringUtils.isBlank(confirmUrl)) {
+                throw new ErrorException("缂哄皯纭浜虹鍚�");
+            }
+        }
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/personnel-capacity.docx");
+        ConfigureBuilder builder = Configure.builder();
+        builder.useSpringEL(true);
+        String finalConfirmUrl = confirmUrl;
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
+                new HashMap<String, Object>() {{
+                    put("capacity", capacityExportDto);
+                    put("confirmUrl", StringUtils.isNotBlank(finalConfirmUrl) ? Pictures.ofLocal(imgUrl + "/" + finalConfirmUrl).create() : null);
+                    put("confirmDateUrl", capacityExportDto.getConfirmDate() != null ?
+                            Pictures.ofStream(DateImageUtil.createDateImage(capacityExportDto.getConfirmDate())).create() : null);
+                }});
+
+        try {
+            response.setContentType("application/msword");
+            String fileName = URLEncoder.encode(
+                    "浜哄憳鑳藉姏", "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("瀵煎嚭澶辫触");
+        }
+    }
+
+    /**
+     * 鎻愪氦纭浜哄憳鑳藉姏
+     * @param personPersonnelCapacity
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void submitConfirmPersonnelCapability(PersonPersonnelCapacity personPersonnelCapacity) {
+        if (personPersonnelCapacity.getConfirmOperatingPersonnelId() == null) {
+            throw new ErrorException("缂哄皯纭浜�");
+        }
+        User formUser = userMapper.selectById(personPersonnelCapacity.getUserId());
+
+        Integer userId = SecurityUtils.getUserId().intValue();
+        User user = userMapper.selectById(userId);
+        // 娑堟伅鍙戦��
+        InformationNotification info = new InformationNotification();
+        // 鍙戦�佷汉
+        info.setCreateUser(user.getName());
+        info.setMessageType("6");
+        info.setTheme("CNAS浜哄憳鑳藉姏纭閫氱煡");
+        info.setContent(formUser.getName() + "鐨勪汉鍛樿兘鍔涘緟纭");
+        info.setSenderId(userId);
+        // 鎺ユ敹浜�
+        info.setConsigneeId(personPersonnelCapacity.getConfirmOperatingPersonnelId());
+        info.setJumpPath("a6-personnel");
+        informationNotificationService.addInformationNotification(info);
+        this.saveOrUpdate(personPersonnelCapacity);
+
+        // 鍙戦�佷紒涓氬井淇¢�氱煡
+        threadPoolTaskExecutor.execute(() -> {
+            // 鏌ヨ鎺ユ敹浜�
+            User personnel = userMapper.selectById(personPersonnelCapacity.getConfirmOperatingPersonnelId());
+
+            String message = "";
+            message += "CNAS浜哄憳鑳藉姏纭閫氱煡";
+            message += "\n璇峰幓璧勬簮绠$悊-浜哄憳-浜哄憳鑳藉姏濉啓";
+            message += "\n" + formUser.getName() + "鐨勪汉鍛樿兘鍔涘緟纭";
+            //鍙戦�佷紒涓氬井淇℃秷鎭�氱煡
+            try {
+                WxCpUtils.inform(personnel.getAccount(), message, null);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        });
+
+    }
+
+}
diff --git a/cnas-personnel/src/main/resources/mapper/PersonCommunicationAbilityMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonCommunicationAbilityMapper.xml
new file mode 100644
index 0000000..2ea0c72
--- /dev/null
+++ b/cnas-personnel/src/main/resources/mapper/PersonCommunicationAbilityMapper.xml
@@ -0,0 +1,19 @@
+<?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.personnel.mapper.PersonCommunicationAbilityMapper">
+
+
+    <select id="personPersonCommunicationAbilityPage" resultType="com.ruoyi.personnel.dto.PersonCommunicationAbilityDto">
+        select cpca.*, us.name create_user_name
+        from cnas_person_communication_ability cpca
+        left join user us on cpca.create_user = us.id
+        <where>
+            <if test="userId != null and userId != ''">
+                and FIND_IN_SET(#{userId},cpca.user_id)
+            </if>
+            <if test="departLimsId != null and departLimsId != ''">
+                and FIND_IN_SET(#{departLimsId},us.depart_lims_id)
+            </if>
+        </where>
+    </select>
+</mapper>
diff --git a/cnas-personnel/src/main/resources/mapper/PersonPersonnelCapacityMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonPersonnelCapacityMapper.xml
new file mode 100644
index 0000000..96e0358
--- /dev/null
+++ b/cnas-personnel/src/main/resources/mapper/PersonPersonnelCapacityMapper.xml
@@ -0,0 +1,118 @@
+<?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.personnel.mapper.PersonPersonnelCapacityMapper">
+
+    <select id="personPersonnelCapacityPage" resultType="com.ruoyi.personnel.dto.PersonPersonnelCapacityDto">
+        select cppc.*,
+        u2.name confirm_operating_personnel_name,
+        u3.name user_name,
+        cpbi.post_name,
+        ecp.responsibilities,
+        cpbi.professional_title,
+        TRIM(',' FROM CONCAT(cpbi.major1, ',', cpbi.major2)) AS major
+        from cnas_person_personnel_capacity cppc
+        left join user u2 on cppc.confirm_operating_personnel_id = u2.id
+        left join user u3 on cppc.user_id = u3.id
+        -- 鍙栧矖浣�
+        left join cnas_person_basic_info cpbi on cpbi.user_id = cppc.user_id
+        -- 鍙栦汉鍛樿兘鍔涚殑宀椾綅鑱岃矗
+        left join (SELECT GROUP_CONCAT(e.label) responsibilities, cppc.id
+        from cnas_person_personnel_capacity cppc
+        left join enums e on FIND_IN_SET(e.value, cppc.job_responsibilities)
+        where e.category = '宀椾綅鑱岃矗'
+        GROUP BY cppc.id) ecp on ecp.id = cppc.id
+        <where>
+            <if test="userId != null and userId != ''">
+                and cppc.user_id = #{userId}
+            </if>
+            <if test="departLimsId != null and departLimsId != ''">
+                and FIND_IN_SET(#{departLimsId}, u3.depart_lims_id)
+            </if>
+            <if test="userName != null and userName != ''">
+                and u3.name like concat('%', #{userName}, '%')
+            </if>
+        </where>
+    </select>
+
+    <!-- 鏌ヨ浜哄憳鑳藉姏鎺ュ彛 -->
+    <select id="selectExportPersonnelCapacity"
+            resultType="com.ruoyi.personnel.dto.PersonPersonnelCapacityExportDto">
+        select cppc.*,
+               cpbi.post_name,
+               u1.name   userName,
+               cpbi.official_academic_redentials,
+               cpbi.major1,
+               cpbi.professional_title,
+               p.place_work,
+               TRIM(',' FROM CONCAT(cpbi.major1, ',', cpbi.major2)) AS major,
+               case when cppc.academic_conform_not = 1 then '鈽�'
+                    else '鈻�' end academicConformNot1,-- 瀛﹀巻
+               case when cppc.academic_conform_not = 2 then '鈽�'
+                    else '鈻�' end academicConformNot2,
+               case when cppc.academic_conform_not = 3 then '鈽�'
+                    else '鈻�' end academicConformNot3,
+               case when cppc.related_years_conform_not = 1 then '鈽�'
+                    else '鈻�' end relatedYearsConformNot1,-- 鐩稿叧骞撮檺
+               case when cppc.related_years_conform_not = 2 then '鈽�'
+                    else '鈻�' end relatedYearsConformNot2,
+               case when cppc.related_years_conform_not = 3 then '鈽�'
+                    else '鈻�' end relatedYearsConformNot3,
+               case when cppc.related_training_conform_not = 1 then '鈽�'
+                    else '鈻�' end relatedTrainingConformNot1,-- 鐩稿叧鍩硅
+               case when cppc.related_training_conform_not = 2 then '鈽�'
+                    else '鈻�' end relatedTrainingConformNot2,
+               case when cppc.related_training_conform_not = 3 then '鈽�'
+                    else '鈻�' end relatedTrainingConformNot3,
+               case when cppc.relevant_experience_conform_not = 1 then '鈽�'
+                    else '鈻�' end relevantExperienceConformNot1,-- 鐩稿叧缁忛獙
+               case when cppc.relevant_experience_conform_not = 2 then '鈽�'
+                    else '鈻�' end relevantExperienceConformNot2,
+               case when cppc.relevant_experience_conform_not = 3 then '鈽�'
+                    else '鈻�' end relevantExperienceConformNot3,
+               case when cppc.work_license_conform_not = 1 then '鈽�'
+                    else '鈻�' end workLicenseConformNot1,-- 涓婂矖璇�
+               case when cppc.work_license_conform_not = 2 then '鈽�'
+                    else '鈻�' end workLicenseConformNot2,
+               case when cppc.work_license_conform_not = 3 then '鈽�'
+                    else '鈻�' end workLicenseConformNot3,
+               case when cppc.job_responsibilities_conform_not = 1 then '鈽�'
+                    else '鈻�' end jobResponsibilitiesConformNot1,-- 宀椾綅鑱岃矗
+               case when cppc.job_responsibilities_conform_not = 2 then '鈽�'
+                    else '鈻�' end jobResponsibilitiesConformNot2,
+               case when cppc.job_responsibilities_conform_not = 3 then '鈽�'
+                    else '鈻�' end jobResponsibilitiesConformNot3,
+               case when cppc.comprehensive_assessment = 'Qualified this position' then '鈽�'
+                    else '鈻�' end comprehensiveAssessment1,-- 缁煎悎璇勪环
+               case when cppc.comprehensive_assessment = 'You can work while training' then '鈽�'
+                    else '鈻�' end comprehensiveAssessment2,
+               case when cppc.comprehensive_assessment = 'Iconpetent for the position' then '鈽�'
+                    else '鈻�' end comprehensiveAssessment3,
+               case when find_in_set(1, cppc.job_responsibilities) then '鈽�'
+                    else '鈻�' end jobResponsibilities1,
+               case when find_in_set(2, cppc.job_responsibilities) then '鈽�'
+                    else '鈻�' end jobResponsibilities2,
+               case when find_in_set(3, cppc.job_responsibilities) then '鈽�'
+                    else '鈻�' end jobResponsibilities3,
+               case when find_in_set(4, cppc.job_responsibilities) then '鈽�'
+                    else '鈻�' end jobResponsibilities4,
+               case when find_in_set(5, cppc.job_responsibilities) then '鈽�'
+                    else '鈻�' end jobResponsibilities5,
+               case when find_in_set(6, cppc.job_responsibilities) then '鈽�'
+                    else '鈻�' end jobResponsibilities6,
+               case when find_in_set(7, cppc.job_responsibilities) then '鈽�'
+                    else '鈻�' end jobResponsibilities7,
+               case when find_in_set(8, cppc.job_responsibilities) then '鈽�'
+                    else '鈻�' end jobResponsibilities8,
+               case when find_in_set(9, cppc.job_responsibilities) then '鈽�'
+                    else '鈻�' end jobResponsibilities9,
+               case when find_in_set(10, cppc.job_responsibilities) then '鈽�'
+                    else '鈻�' end jobResponsibilities10
+        from cnas_person_personnel_capacity cppc
+                 left join user u1 on cppc.user_id = u1.id
+                 left join cnas_person_basic_info cpbi on cpbi.user_id = cppc.user_id
+                 left join (select GROUP_CONCAT(cptr.work_experience) place_work, cptr.user_id
+                            from cnas_person_basic_info_work cptr
+                            GROUP BY cptr.user_id) p on u1.id = p.user_id
+        where cppc.id = #{id}
+    </select>
+</mapper>

--
Gitblit v1.9.3