From d9326c6f02ff4dae1a301f6ad9dd5539450aa1ba Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 06 三月 2025 09:00:16 +0800
Subject: [PATCH] 用户管理&权限管理调整

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/api/AuthApi.java                 |   57 +++++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/api/HeaderToken.java             |  191 +++++++++++++++++++++++
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java                |   27 +++
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                            |    3 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/User.java                   |    3 
 inspect-server/src/main/resources/lib/license.xml                                          |   13 +
 ruoyi-admin/src/main/resources/application.yml                                             |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserController.java              |   25 +++
 cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentListServiceImpl.java |    2 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/Person.java                 |   38 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserServiceImpl.java              |   50 ++++++
 ruoyi-common/src/main/java/com/ruoyi/common/core/dto/PersonDto.java                        |   18 ++
 inspect-server/src/main/resources/static/report-template.docx                              |    0 
 inspect-server/src/main/resources/lib/aspose-words-15.12.0-jdk16.jar                       |    0 
 ruoyi-system/src/main/java/com/ruoyi/system/service/UserService.java                       |    2 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/Company.java                |   17 ++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/CustomController.java            |    2 
 ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml                            |    1 
 18 files changed, 447 insertions(+), 4 deletions(-)

diff --git a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentListServiceImpl.java b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentListServiceImpl.java
index 247d1d9..f73db3e 100644
--- a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentListServiceImpl.java
+++ b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentListServiceImpl.java
@@ -22,9 +22,7 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
diff --git a/inspect-server/src/main/resources/lib/aspose-words-15.12.0-jdk16.jar b/inspect-server/src/main/resources/lib/aspose-words-15.12.0-jdk16.jar
new file mode 100644
index 0000000..84320cf
--- /dev/null
+++ b/inspect-server/src/main/resources/lib/aspose-words-15.12.0-jdk16.jar
Binary files differ
diff --git a/inspect-server/src/main/resources/lib/license.xml b/inspect-server/src/main/resources/lib/license.xml
new file mode 100644
index 0000000..ecd46c1
--- /dev/null
+++ b/inspect-server/src/main/resources/lib/license.xml
@@ -0,0 +1,13 @@
+<License>
+    <Data>
+        <Products>
+            <Product>Aspose.Total for Java</Product>
+            <Product>Aspose.Words for Java</Product>
+        </Products>
+        <EditionType>Enterprise</EditionType>
+        <SubscriptionExpiry>20991231</SubscriptionExpiry>
+        <LicenseExpiry>20991231</LicenseExpiry>
+        <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>
+    </Data>
+    <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>
+</License>
diff --git a/inspect-server/src/main/resources/static/report-template.docx b/inspect-server/src/main/resources/static/report-template.docx
new file mode 100644
index 0000000..771345f
--- /dev/null
+++ b/inspect-server/src/main/resources/static/report-template.docx
Binary files differ
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/CustomController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/CustomController.java
index 040af38..978d7ee 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/CustomController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/CustomController.java
@@ -30,7 +30,7 @@
 
     @ApiOperation(value = "鑾峰彇瀹㈡埛鍒楄〃")
     @GetMapping("/selectCustomPageList")
-    public Result<IPage<Custom>> selectCustomPageList(Page page, Custom custom) throws Exception {
+    public Result<IPage<Custom>> selectCustomPageList(Page page, Custom custom) {
         return Result.success(customService.selectCustomPageList(page, custom));
     }
     @ApiOperation(value = "鍒犻櫎瀹㈡埛淇℃伅")
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserController.java
index 16e812b..67cc35f 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserController.java
@@ -2,13 +2,18 @@
 
 
 import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.core.domain.entity.Company;
 import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.common.core.dto.PersonDto;
 import com.ruoyi.system.service.UserService;
 import com.ruoyi.web.controller.dto.UpdateUserDto;
+import com.ruoyi.web.controller.system.api.HeaderToken;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 
 /**
@@ -23,6 +28,9 @@
 
     @Resource
     private UserService userService;
+
+    @Autowired
+    private HeaderToken headerToken;
 
     /**
      * todo:  type : 1: 鑾峰彇妫�娴嬩汉鍛樹俊鎭�
@@ -70,6 +78,23 @@
     }
 
 
+    @ApiOperation(value = "鏌ョ湅浜轰簨绯荤粺缁勭粐鏋舵瀯")
+    @GetMapping(value = "/selectCompaniesList")
+    public Result<List<Company>> selectCompaniesList() {
+        return Result.success(headerToken.companyUrl());
+    }
+
+    @ApiOperation("鑾峰彇浜轰簨绯荤粺缁勭粐涓嬬殑浜哄憳")
+    @GetMapping(value = "/selectSimpleList")
+    public Result<?> selectSimpleList(String companyId) {
+        return Result.success(headerToken.userUrl(companyId));
+    }
+
+    @ApiOperation("灏嗕汉浜嬬郴缁熷嬀閫夌殑鍐呭杞Щ鍒版湰绯荤粺")
+    @PostMapping(value = "/addPersonUser")
+    public Result<?> addPersonUser(@RequestBody PersonDto personDto) {
+        return Result.success(userService.addPersonUser(personDto));
+    }
 
 }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/api/AuthApi.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/api/AuthApi.java
new file mode 100644
index 0000000..0a38ac9
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/api/AuthApi.java
@@ -0,0 +1,57 @@
+package com.ruoyi.web.controller.system.api;
+
+public class AuthApi {
+
+    /**
+     * 娴嬭瘯鍦板潃
+     * */
+//    private String code = "https://ztt-sso.asuncloud.net/oauth2/token";
+    /**
+     * 姝e紡鍦板潃
+     * */
+    public static String code = "https://ztt-sso.ztt.cn/oauth2/token";
+
+    /**
+     * 娌冲彛浜轰簨娴嬭瘯搴�
+     * */
+//    private String appId = "8b2f2c7e-2ab9-4718-8193-c0c636dceba8";
+//    private String appSecret = "db59b70d28ab1865aafe4008f59d4760";
+    /**
+     * 娌冲彛浜轰簨姝e紡搴�
+     * */
+    public static String appId = "f6f3d70f-3666-4d3d-b9c5-430de3f6007c";
+    public static String appSecret = "a18923496542302066b0a7bec993a4e2";
+/**
+ * 瑁呭浜轰簨娴嬭瘯搴�
+ * */
+//    private String appId = "0acf9b63-31e3-45c4-99c1-af1aac88b985";
+//    private String appSecret = "7fb7a4026c71619345c31fa12ba31f4f";
+    /**
+     * 瑁呭浜轰簨姝e紡搴�
+     * */
+//    private String appId = "6f5f6a0c-2a01-4ef6-9e75-c8a6f0c2f044";
+//    private String appSecret = "89b9c4735b1e5ee9d6a8544b9b38bb03";
+
+    /**
+     * 鏌ヨ缁勭粐鏋舵瀯
+     */
+    public static String companies = "https://ztt-connector.ztt.cn/api/org/v1/companies";
+
+    public static String simple="https://ztt-connector.ztt.cn/api/org/v1/employees/simple?companyId=";
+
+    /**
+     * 鑾峰彇鎵�鏈変汉鍛�
+     */
+    public static String employees = "https://ztt-connector.ztt.cn/api/org/v1/employees";
+
+
+    /**
+     * 浜哄憳瀵嗙爜鑾峰彇
+     * */
+    public static String password = "https://ztt-connector.ztt.cn/api/org/v1/employees/original_pwd/";
+
+    public static String department = "https://ztt-connector.ztt.cn/api/org/v1/companies/companyId/departments";
+
+    public static String person = "https://ztt-connector.ztt.cn/api/org/v1/employees/simple/";
+
+}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/api/HeaderToken.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/api/HeaderToken.java
new file mode 100644
index 0000000..d1407cf
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/api/HeaderToken.java
@@ -0,0 +1,191 @@
+package com.ruoyi.web.controller.system.api;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.log.Log;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ruoyi.common.core.domain.entity.Company;
+import com.ruoyi.common.core.domain.entity.Person;
+import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.system.mapper.UserMapper;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+@Component
+public class HeaderToken {
+
+    @Resource
+    private RedisTemplate redisTemplate;
+
+    @Resource
+    private UserMapper userMapper;
+
+    public String fetchNewAccessToken() {
+        HttpRequest request = HttpRequest.post(AuthApi.code)
+                .header("Content-Type", "application/x-www-form-urlencoded")
+                .form("grant_type", "client_credentials")
+                .form("client_id", AuthApi.appId)
+                .form("client_secret", AuthApi.appSecret);
+        HttpResponse response = request.execute();
+        ObjectMapper objectMapper = new ObjectMapper();
+        JsonNode jsonNode;
+        try {
+            jsonNode = objectMapper.readTree(response.body());
+            String accessToken = jsonNode.get("access_token").asText();
+            Log.get().info("鑾峰彇浜轰簨绯荤粺token锛�"+accessToken);
+            redisTemplate.opsForValue().set("access_token",accessToken,jsonNode.get("expires_in").asInt() - 60,TimeUnit.SECONDS);
+            return accessToken;
+        } catch (Exception e) {
+            throw new ErrorException(e.getMessage());
+        }
+    }
+
+    //鍒ゆ柇鏄惁瀛樺湪
+    public String getAccessToken() {
+        String accessToken;
+        if (!redisTemplate.hasKey("access_token")) {
+            accessToken = fetchNewAccessToken();
+        }else{
+            accessToken = redisTemplate.opsForValue().get("access_token")+"";
+        }
+        return accessToken;
+    }
+
+    //璋冪敤
+    public List<Company> companyUrl() {
+        String accessToken = getAccessToken();
+        HttpRequest request = HttpRequest.get(AuthApi.companies)
+                .header("Authorization", "Bearer " + accessToken);
+        List<Company> companies;
+        try {
+            companies = JSON.parseArray(request.execute().body(), Company.class);
+        }catch (Exception e){
+            throw new ErrorException(e.getMessage());
+        }
+        return companies.stream().filter(ob->{
+            if(Objects.equals(ob.getStatus(), "enabled")) return true;
+            return false;
+        }).collect(Collectors.toList());
+//        return companies;
+    }
+
+    public List<Person> userUrl(String companyId) {
+        String accessToken = getAccessToken();
+        HttpRequest request = HttpRequest.get(AuthApi.simple+companyId)
+                .header("Authorization", "Bearer " + accessToken)
+                .header("Content-Type", "application/form-data");
+        List<Person> person;
+        try {
+            person = JSON.parseArray(request.execute().body(), Person.class);
+        }catch (Exception e){
+            throw new ErrorException(e.getMessage());
+        }
+        List<JSONObject> department = getDepartment(companyId);
+        return person.stream().filter(ob->{
+            if(Objects.equals(ob.getStatus(), "enabled")) {
+                ob.setIsLive(userMapper.selectCount(Wrappers.<User>lambdaQuery().eq(User::getAccount, ob.getEmployeeID())));
+                ob.setDepartment(getDepartmentStr(department, ob.getDepartmentCode()).replaceFirst("/", ""));
+                return true;
+            }
+            return false;
+        }).collect(Collectors.toList());
+    }
+
+    public String getDepartmentStr(List<JSONObject> department, String code){
+        String str = "";
+        Optional<JSONObject> depart = department.stream().filter(a -> code.equals(a.get("departmentCode"))).findFirst();
+        str = "/" + depart.get().get("departmentName") + str;
+        if(depart.get().get("parentDepartmentCode") != null){
+            str = getDepartmentStr(department, depart.get().get("parentDepartmentCode").toString()) + str;
+        }
+        return str;
+    }
+
+    public String getPassword(String employeeId) {
+        String accessToken = getAccessToken();
+        HttpRequest request = HttpRequest.get(AuthApi.password + employeeId)
+                .header("Authorization", "Bearer " + accessToken);
+        System.out.println(AuthApi.password + employeeId);
+        System.out.println(request.execute().body());
+        return JSON.parseObject(request.execute().body()).get("originalPwd").toString();
+    }
+
+    public List<JSONObject> getDepartment(String companyId){
+        String accessToken = getAccessToken();
+        HttpRequest request = HttpRequest.get(AuthApi.department.replace("companyId", companyId))
+                .header("Authorization", "Bearer " + accessToken)
+                .header("Content-Type", "application/form-data");
+        List<JSONObject> list;
+        try {
+            list = JSON.parseArray(request.execute().body());
+        }catch (Exception e){
+            throw new ErrorException(e.getMessage());
+        }
+        return list.stream().filter(ob->{
+            if(Objects.equals(ob.get("status"), "enabled")) return true;
+            return false;
+        }).collect(Collectors.toList());
+    }
+
+    public Person selectPersonUser(String code){
+        String accessToken = getAccessToken();
+        HttpRequest request = HttpRequest.get(AuthApi.person + code)
+                .header("Authorization", "Bearer " + accessToken)
+                .header("Content-Type", "application/form-data");
+        Person person;
+        try {
+            person = JSON.parseObject(request.execute().body(), Person.class);
+            if(BeanUtil.isEmpty(person))return null;
+        }catch (Exception e){
+            throw new ErrorException(e.getMessage());
+        }
+        List<JSONObject> department = getDepartment(person.getCompanyId());
+        person.setDepartment(getDepartmentStr(department, person.getDepartmentCode()).replaceFirst("/", ""));
+        person.setIsLive(userMapper.selectCount(Wrappers.<User>lambdaQuery().eq(User::getAccount, person.getEmployeeID())));
+        return person;
+    }
+
+
+    // 鑾峰彇鎵�鏈変汉鍛樹俊鎭�
+    public List<Map> getEmployees() {
+        // 鑾峰彇token
+        String accessToken = getAccessToken();
+        HttpRequest request = HttpRequest.get(AuthApi.employees).header("Authorization", "Bearer " + accessToken)
+                .header("Content-Type", "application/form-data");
+        String body = request.execute().body();
+        List<Map> maps = JSONArray.parseArray(body, Map.class);
+        return  maps;
+    }
+
+
+    // 鑾峰彇浜哄憳淇℃伅
+    public Map getEmployee(String employeeId) {
+        // 鑾峰彇token
+        String accessToken = getAccessToken();
+        System.out.println("token " + accessToken);
+        String url = AuthApi.employees + "/" + employeeId;
+        HttpRequest request = HttpRequest.get(url).header("Authorization", "Bearer " + accessToken);
+        String body = request.execute().body();
+        ObjectMapper objectMapper = new ObjectMapper();
+        Map map = new HashMap<>();
+        try {
+             map = objectMapper.readValue(body, Map.class);
+        } catch (JsonProcessingException e) {
+            throw new RuntimeException(e);
+        }
+        return map;
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 9147fdd..3fd660c 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -64,7 +64,7 @@
   devtools:
     restart:
       # 鐑儴缃插紑鍏�
-      enabled: true
+      enabled: false
   # redis 閰嶇疆
   redis:
     # 鍦板潃
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/Company.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/Company.java
new file mode 100644
index 0000000..bf1b1e7
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/Company.java
@@ -0,0 +1,17 @@
+package com.ruoyi.common.core.domain.entity;
+
+import lombok.Data;
+
+@Data
+public class Company {
+
+    private String companyId;
+
+    private String companyName;
+
+    private String parentCompanyId;
+
+    private String description;
+
+    private String status;
+}
\ No newline at end of file
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/Person.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/Person.java
new file mode 100644
index 0000000..98b10d4
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/Person.java
@@ -0,0 +1,38 @@
+package com.ruoyi.common.core.domain.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class Person {
+
+    private String name;
+
+    //浜哄憳缂栧彿锛屽叏灞�鍞竴
+    private String employeeID;
+//宀椾綅
+    private String position;
+//宀椾綅缂栫爜
+    private String positionCode;
+//鎵嬫満鍙风爜
+    private String phoneNumber;
+
+    //鎬у埆 1:鐢� 2:濂�
+    private Integer gender;
+
+    //缁勭粐鐘舵�� enable:鍦ㄨ亴 disabled:绂昏亴
+    private String status;
+//鎵�灞炵粍缁囩紪鐮�
+    private String companyId;
+//鍏徃閭(鍙敤浜庨偖绠辩郴缁�)
+    private String companyEmail;
+//鍏ヨ亴鍏徃鏃堕棿
+    private String dateOfJoiningTheCompany;
+//缁勭粐鍐呯殑閮ㄩ棬缂栫爜
+    private String departmentCode;
+
+    @ApiModelProperty(">1锛氬瓨鍦� =0锛氫笉瀛樺湪")
+    private Long isLive;
+
+    private String department;
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
index ad73692..5d769fa 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
@@ -69,6 +69,32 @@
     /** 瀛愯彍鍗� */
     private List<SysMenu> children = new ArrayList<SysMenu>();
 
+    /** 鏄惁鍙互閫夋嫨浠呯湅鎴�, 0:鍚�, 1:鏄� */
+    private Integer isRersonalButton;
+
+    /** 浠呯湅鎴�, 0:鍚�, 1:鏄� */
+    private Integer isRersonal;
+
+    public Integer getIsRersonalButton()
+    {
+        return isRersonalButton;
+    }
+
+    public void setIsRersonalButton(Integer isRersonalButton)
+    {
+        this.isRersonalButton = isRersonalButton;
+    }
+
+    public Integer getIsRersonal()
+    {
+        return isRersonal;
+    }
+
+    public void setIsRersonal(Integer isRersonal)
+    {
+        this.isRersonal = isRersonal;
+    }
+
     public Long getMenuId()
     {
         return menuId;
@@ -269,6 +295,7 @@
             .append("updateBy", getUpdateBy())
             .append("updateTime", getUpdateTime())
             .append("remark", getRemark())
+            .append("isRersonalButton", getIsRersonalButton())
             .toString();
     }
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/User.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/User.java
index eb50fe3..2662b2d 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/User.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/User.java
@@ -96,5 +96,8 @@
     @ApiModelProperty(value = "澶囨敞")
     private String remark;
 
+    @ApiModelProperty(value = "鎵�灞炵粍缁囩紪鐮�")
+    private String companyId;
+
 }
 
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/dto/PersonDto.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/dto/PersonDto.java
new file mode 100644
index 0000000..a54b9c3
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/dto/PersonDto.java
@@ -0,0 +1,18 @@
+package com.ruoyi.common.core.dto;
+
+import com.ruoyi.common.core.domain.entity.Company;
+import com.ruoyi.common.core.domain.entity.Person;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PersonDto {
+
+    private List<Person> person;
+
+    private List<Company> company;
+
+    private Integer roleId;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/UserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/UserService.java
index 65d660a..34d7974 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/UserService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/UserService.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.common.core.dto.PersonDto;
 
 import java.util.List;
 
@@ -38,5 +39,6 @@
 
     int delUserDepardLimsId(Integer id);
 
+    int addPersonUser(PersonDto personDto);
 }
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserServiceImpl.java
index f097b32..08331cd 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserServiceImpl.java
@@ -1,14 +1,21 @@
 package com.ruoyi.system.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.entity.Custom;
 import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.common.core.dto.PersonDto;
 import com.ruoyi.common.utils.QueryWrappers;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.system.mapper.UserMapper;
+import com.ruoyi.system.service.CustomService;
 import com.ruoyi.system.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.DigestUtils;
 
 import java.time.LocalDateTime;
 import java.util.List;
@@ -21,6 +28,10 @@
  */
 @Service
 public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
+
+    @Autowired
+    private CustomService customService;
+
     /**
      * 鏍规嵁鏉′欢鑾峰彇鐢ㄦ埛鍒楄〃
      * @param user
@@ -60,5 +71,44 @@
     public int delUserDepardLimsId(Integer id) {
         return baseMapper.update(null, Wrappers.<User>lambdaUpdate().eq(User::getId, id).set(User::getDepartLimsId, null).set(User::getUpdateTime, LocalDateTime.now()).set(User::getUpdateBy, SecurityUtils.getUsername()));
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int addPersonUser(PersonDto personDto) {
+        personDto.getPerson().forEach(person -> {
+            User user = baseMapper.selectOne(Wrappers.<User>lambdaQuery().eq(User::getAccount, person.getEmployeeID()));
+            String companyName = personDto.getCompany().stream().filter(a -> a.getCompanyId().equals(person.getCompanyId())).findFirst().get().getCompanyName();
+            Custom custom = customService.getCustomId(companyName);
+            if (BeanUtil.isEmpty(user)) {
+                user = new User();
+                user.setName(person.getName());
+                user.setNameEn("not write");
+                user.setAccount(person.getEmployeeID());
+                user.setPhone(person.getPhoneNumber());
+                user.setEmail(person.getCompanyEmail());
+                user.setIsCustom(person.getCompanyId().equals("SC2463") ? 0 : 1);
+//                user.setPassword(DigestUtils.md5DigestAsHex(headerToken.getPassword(person.getEmployeeID()).getBytes()));
+                user.setPassword(SecurityUtils.encryptPassword("zttZTT123!"));
+                user.setCompany(BeanUtil.isNotEmpty(custom) ? (custom.getId() + "") : companyName);
+//                user.setAddress("鏈~鍐�");
+//                user.setRoleId(personDto.getRoleId() > 10000 ? 0 : personDto.getRoleId());
+                user.setCompanyId(person.getCompanyId());
+                baseMapper.insert(user);
+            } else {
+                user.setName(person.getName());
+                user.setPhone(person.getPhoneNumber());
+                user.setEmail(person.getCompanyEmail());
+                user.setIsCustom(0);
+                user.setCompany(BeanUtil.isNotEmpty(custom) ? (custom.getId() + "") : companyName);
+//                user.setCreateUser(null);
+//                user.setCreateTime(null);
+//                user.setUpdateUser(null);
+//                user.setUpdateTime(null);
+                user.setCompanyId(person.getCompanyId());
+                baseMapper.updateById(user);
+            }
+        });
+        return 1;
+    }
 }
 
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
index 9284614..7c43969 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
@@ -26,6 +26,7 @@
 		<result property="updateTime"     column="update_time"    />
 		<result property="updateBy"       column="update_by"      />
 		<result property="remark"         column="remark"         />
+		<result property="isRersonalButton" column="is_rersonal_button"/>
 	</resultMap>
 
 	<sql id="selectMenuVo">
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 8757304..0b30ccc 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -69,6 +69,9 @@
 		<if test="userName != null and userName != ''">
 			AND u.account like concat('%', #{userName}, '%')
 		</if>
+		<if test="nickName != null and nickName != ''">
+			AND u.name like concat('%', #{nickName}, '%')
+		</if>
 		<if test="status != null and status != ''">
 			AND u.status = #{status}
 		</if>

--
Gitblit v1.9.3