zhuo
2025-03-16 32bdae73e49c51b6835ef0a5c7b82c4a83a521df
人事系统对接
已修改12个文件
已重命名3个文件
已添加6个文件
484 ■■■■■ 文件已修改
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/Company.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/Person.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/PersonDto.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/PersonnelHeaderApi.java 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/CompaniesController.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-druid.yml 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-prod.yml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-test.yml 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/config/IfsProperties.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/config/PersonnelProperties.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/config/WechatProperty.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/api/IfsApiUtils.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/UserService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java
@@ -16,7 +16,7 @@
import com.deepoove.poi.data.Pictures;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.DateImageUtil;
import com.ruoyi.common.utils.IfsApiUtils;
import com.ruoyi.common.utils.api.IfsApiUtils;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.dto.IfsStockQueryDTO;
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
@@ -99,14 +99,9 @@
    private InsOrderStateMapper insOrderStateMapper;
    @Resource
    private InsProductMapper insProductMapper;
    @Resource
    private ShiftTimeMapper shiftTimeMapper;
    @Resource
    private PerformanceShiftMapper performanceShiftMapper;
    @Value("${wordUrl}")
    private String wordUrl;
    @Value("${twoCode}")
    private String twoCode;
    @Resource
    private InsReportMapper insReportMapper;
    @Resource
@@ -781,11 +776,13 @@
            int count = 0;
            for (InsProduct product : insProducts) {
                count++;
                str += "<br/>" + count + ":" + product.getInspectionItem() + " " + product.getInspectionItemSubclass() + "<br/>";
                str +=  (count != 0 ? "\n" : "") + count + ":" +
                        product.getInspectionItemClass() + " " +
                        product.getInspectionItem() + " " +
                        product.getInspectionItemSubclass();
            }
            if (ObjectUtils.isNotEmpty(str)) {
                throw new ErrorException("<strong>存在待检验的项目:</strong><br/>" + str);
                throw new ErrorException("存在待检验的项目:" + str);
            }
        }
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -10,14 +10,11 @@
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
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.basic.mapper.IfsInventoryQuantityMapper;
import com.ruoyi.basic.mapper.StandardProductListMapper;
@@ -28,6 +25,7 @@
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.numgen.NumberGenerator;
import com.ruoyi.common.utils.*;
import com.ruoyi.common.utils.api.IfsApiUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.dto.*;
import com.ruoyi.inspect.mapper.*;
@@ -37,11 +35,8 @@
import com.ruoyi.inspect.service.InsProductService;
import com.ruoyi.inspect.service.InsSampleService;
import com.ruoyi.inspect.vo.InsOrderPrintingVo;
import com.ruoyi.inspect.vo.SampleDefectsFatherVo;
import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHours;
import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHoursTemporary;
import com.ruoyi.performance.service.AuxiliaryOutputWorkingHoursTemporaryService;
import com.ruoyi.system.mapper.CustomMapper;
import com.ruoyi.system.mapper.UserMapper;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.StringUtils;
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
@@ -25,9 +25,9 @@
import com.ruoyi.common.constant.MenuJumpPathConstants;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.InformationNotification;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.properties.WechatProperty;
import com.ruoyi.common.config.WechatProperty;
import com.ruoyi.common.utils.*;
import com.ruoyi.common.utils.api.IfsApiUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.dto.ReportPageDto;
import com.ruoyi.inspect.mapper.*;
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
@@ -12,7 +12,6 @@
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.basic.dto.*;
@@ -20,7 +19,7 @@
import com.ruoyi.common.constant.InsOrderTypeConstants;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.properties.WechatProperty;
import com.ruoyi.common.config.WechatProperty;
import com.ruoyi.common.utils.LimsDateUtil;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
@@ -58,7 +57,6 @@
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/**
 * @Author zhuo
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/Company.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.web.controller.api;
import lombok.Data;
/**
 * å…¬å¸ä¿¡æ¯
 */
@Data
public class Company {
    private String companyId;
    private String companyName;
    private String parentCompanyId;
    private String description;
    private String status;
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/Person.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package com.ruoyi.web.controller.api;
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;
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/PersonDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.web.controller.api;
import lombok.Data;
import java.util.List;
/**
 * äººäº‹ä¿¡æ¯
 */
@Data
public class PersonDto {
    private List<Person> person;
    private List<Company> company;
    private Integer roleId;
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/PersonnelHeaderApi.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,199 @@
package com.ruoyi.web.controller.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.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.config.PersonnelProperties;
import com.ruoyi.common.core.domain.entity.Custom;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.mapper.UserMapper;
import com.ruoyi.system.service.CustomService;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.DigestUtils;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
 * èŽ·å–äººäº‹ç³»ç»Ÿ
 */
@Component
public class PersonnelHeaderApi {
    @Resource
    private RedisTemplate redisTemplate;
    @Resource
    private PersonnelProperties personnelProperties;
    @Resource
    private CustomService customService;
    @Resource
    private UserMapper userMapper;
    public String fetchNewAccessToken() {
        HttpRequest request = HttpRequest.post(personnelProperties.getCode())
                .header("Content-Type", "application/x-www-form-urlencoded")
                .form("grant_type", "client_credentials")
                .form("client_id", personnelProperties.getAppId())
                .form("client_secret", personnelProperties.getAppSecret());
        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("personnelAccessToken:idToken:", accessToken, jsonNode.get("expires_in").asInt() - 60, TimeUnit.SECONDS);
            return accessToken;
        } catch (Exception e) {
            throw new RuntimeException(e.getMessage());
        }
    }
    //判断是否存在
    public String getAccessToken() {
        String accessToken;
        if (!redisTemplate.hasKey("personnelAccessToken:idToken:")) {
            accessToken = fetchNewAccessToken();
        } else {
            accessToken = redisTemplate.opsForValue().get("personnelAccessToken:idToken:") + "";
        }
        return accessToken;
    }
    //调用
    public List<Company> companyUrl() {
        String accessToken = getAccessToken();
        HttpRequest request = HttpRequest.get(personnelProperties.getCompanies())
                .header("Authorization", "Bearer " + accessToken);
        List<Company> companies;
        try {
            companies = JSON.parseArray(request.execute().body(), Company.class);
        } catch (Exception e) {
            throw new RuntimeException(e.getMessage());
        }
        return companies.stream().filter(ob -> {
            if (Objects.equals(ob.getStatus(), "enabled")) return true;
            return false;
        }).collect(Collectors.toList());
    }
    public List<Person> userUrl(String companyId) {
        String accessToken = getAccessToken();
        HttpRequest request = HttpRequest.get(personnelProperties.getSimple() + 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 RuntimeException(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 List<JSONObject> getDepartment(String companyId) {
        String accessToken = getAccessToken();
        HttpRequest request = HttpRequest.get(personnelProperties.getDepartment().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 RuntimeException(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(personnelProperties.getPerson() + 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 RuntimeException(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;
    }
    /**
     * å°†äººäº‹ç³»ç»Ÿå‹¾é€‰çš„内容转移到本系统
     * @param personDto
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public Object addPersonUser(PersonDto personDto) {
        personDto.getPerson().forEach(person -> {
            User user = userMapper.selectOne(Wrappers.<User>lambdaQuery().eq(User::getAccount, person.getEmployeeID()));
            List<Company> company = personDto.getCompany();
            String companyName = "";
            Custom custom = null;
            // å¡«å……工厂信息
            companyName = company.stream().filter(a -> a.getCompanyId().equals(person.getCompanyId())).findFirst().get().getCompanyName();
            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(0);
                user.setPassword(SecurityUtils.encryptPassword("zttZTT123!"));
                user.setCompany(BeanUtil.isNotEmpty(custom) ? (custom.getId() + "") : companyName);
                userMapper.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);
                userMapper.updateById(user);
            }
        });
        return 1;
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/CompaniesController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package com.ruoyi.web.controller.system;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.system.mapper.UserMapper;
import com.ruoyi.system.service.UserService;
import com.ruoyi.web.controller.api.Company;
import com.ruoyi.web.controller.api.PersonDto;
import com.ruoyi.web.controller.api.PersonnelHeaderApi;
import com.ruoyi.web.controller.api.Person;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@AllArgsConstructor
@RequestMapping("/companies")
@Api(tags = "用户模块")
public class CompaniesController {
    private PersonnelHeaderApi personnelHeaderApi;
    private UserService userService;
    @PostMapping("/getSampleUser")
    @ApiOperation(value = "查看指定部门的人事系统组织架构")
    public Result<?> getSampleUser() {
        return Result.success();
    }
    @ApiOperation(value = "查看人事系统组织架构")
    @GetMapping(value = "/selectCompaniesList")
    public Result<List<Company>> selectCompaniesList() {
        return Result.success(personnelHeaderApi.companyUrl());
    }
    @ApiOperation("获取人事系统组织下的人员")
    @PostMapping(value = "/selectSimpleList")
    public Result<?> selectSimpleList(String companyId) {
        return Result.success(personnelHeaderApi.userUrl(companyId));
    }
    @ApiOperation("将人事系统勾选的内容转移到本系统")
    @PostMapping(value = "/addPersonUser")
    public Result<?> addPersonUser(@RequestBody PersonDto personDto) {
        return Result.success(personnelHeaderApi.addPersonUser(personDto));
    }
    @ApiOperation("通过员工号获取员工")
    @PostMapping(value = "/selectPersonUser")
    public Result<?> selectPersonUser(String code) {
        Person person = personnelHeaderApi.selectPersonUser(code);
        return Result.success(person);
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -4,7 +4,6 @@
import java.util.Set;
import java.util.UUID;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.config.SsoBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
ruoyi-admin/src/main/resources/application-druid.yml
@@ -8,9 +8,9 @@
    druid:
      # ä¸»åº“数据源
      master:
        url: jdbc:mysql://114.132.189.42:9004/lims-ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        url: jdbc:mysql://10.16.173.59:3306/lims-ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        username: root
        password: 123456
        password: zttZTT123!
      # ä»Žåº“数据源
      slave:
        # ä»Žæ•°æ®æºå¼€å…³/默认关闭
@@ -96,7 +96,7 @@
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: false
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    log-impl: # org.apache.ibatis.logging.stdout.StdOutImpl
# Swagger配置
swagger:
@@ -125,7 +125,6 @@
  allowed: png,jpg,jpeg,gif
wordUrl: D:\项目文件存储\word
twoCode: D:\项目文件存储\two_code
#oa:
@@ -133,6 +132,18 @@
#    prodIp: http://192.168.21.53:8081
#    unqualifiedProcessId: 41974
# äººäº‹ç³»ç»Ÿ
personnel:
  code:
  appId:
  appSecret:
  companies:
  simple:
  password:
  department:
  person:
# ä¼ä¸šå¾®ä¿¡é€šçŸ¥
wechat:
  # è´¨é‡æŠ¥æ£€é€šçŸ¥
  examiningUrl: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=21993616-9966-4fe4-81b0-68e99a40c964
ruoyi-admin/src/main/resources/application-prod.yml
@@ -125,7 +125,6 @@
  allowed: png,jpg,jpeg,gif
wordUrl: /javaWork/lims-ruoyi/file/word
twoCode: /javaWork/lims-ruoyi/file/two_code
#oa:
ruoyi-admin/src/main/resources/application-test.yml
@@ -124,16 +124,28 @@
  path: /center-lims/Work/img
  # ä¸Šä¼ æ–‡ä»¶å…è®¸çš„æ‰©å±•名
  allowed: png,jpg,jpeg,gif
# æŠ¥å‘Šåœ°å€
wordUrl: /center-lims/Work/word
twoCode: /center-lims/Work/two_code
#oa:
#    oaHost: http://192.168.0.49:8000/oa_workflowrequest.asmx?wsdl
#    prodIp: http://192.168.21.53:8081
#    unqualifiedProcessId: 41974
# äººäº‹ç³»ç»Ÿ
personnel:
  # æ­£å¼åœ°å€
  code: https://ztt-sso.ztt.cn/oauth2/token
  # è£…备人事正式库
  appId: 6f5f6a0c-2a01-4ef6-9e75-c8a6f0c2f044
  appSecret: 9b9c4735b1e5ee9d6a8544b9b38bb03
  companies: https://ztt-connector.ztt.cn/api/org/v1/companies
  simple: https://ztt-connector.ztt.cn/api/org/v1/employees/simple?companyId=
  # äººå‘˜å¯†ç èŽ·å–
  password: https://ztt-connector.ztt.cn/api/org/v1/employees/original_pwd/
  department: https://ztt-connector.ztt.cn/api/org/v1/companies/companyId/departments
  person: https://ztt-connector.ztt.cn/api/org/v1/employees/simple/
wechat:
  # è´¨é‡æŠ¥æ£€é€šçŸ¥
  examiningUrl: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=21993616-9966-4fe4-81b0-68e99a40c964
ruoyi-common/src/main/java/com/ruoyi/common/config/IfsProperties.java
ÎļþÃû´Ó ruoyi-common/src/main/java/com/ruoyi/common/properties/IfsProperties.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ruoyi.common.properties;
package com.ruoyi.common.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
ruoyi-common/src/main/java/com/ruoyi/common/config/PersonnelProperties.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
package com.ruoyi.common.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
 * äººäº‹ç³»ç»Ÿapi
 *
 * @Author zhuo
 * @Date 2025/3/16
 */
@Configuration
@ConfigurationProperties(prefix = "personnel")
@Data
public class PersonnelProperties {
    /**
     * æ­£å¼åœ°å€
     * */
    private String code;
    /**
     * è£…备人事正式库
     * */
    private String appId;
    private String appSecret;
    private String companies;
    private String simple;
    /**
     * äººå‘˜å¯†ç èŽ·å–
     * */
    private String password;
    private String department;
    private String person;
}
ruoyi-common/src/main/java/com/ruoyi/common/config/WechatProperty.java
ÎļþÃû´Ó ruoyi-common/src/main/java/com/ruoyi/common/properties/WechatProperty.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ruoyi.common.properties;
package com.ruoyi.common.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
ruoyi-common/src/main/java/com/ruoyi/common/utils/api/IfsApiUtils.java
ÎļþÃû´Ó ruoyi-common/src/main/java/com/ruoyi/common/utils/IfsApiUtils.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ruoyi.common.utils;
package com.ruoyi.common.utils.api;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONUtil;
@@ -7,7 +7,7 @@
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.properties.IfsProperties;
import com.ruoyi.common.config.IfsProperties;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -4,13 +4,10 @@
import javax.net.ssl.SSLContext;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.config.SsoBean;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.framework.model.SsoOauthTokenModel;
import com.ruoyi.framework.model.SsoUserInfoModel;
import com.ruoyi.framework.web.ssoAuth.SsoCodeAuthenticationToken;
import com.ruoyi.system.mapper.UserMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
ruoyi-system/src/main/java/com/ruoyi/system/service/UserService.java
@@ -35,9 +35,19 @@
     */
    String selectUserDepartmentLimsName();
    /**
     * ä¿®æ”¹äººå‘˜æ˜Žç»†æ‰€åœ¨ç»„织架构
     * @param ids
     * @param id
     * @return
     */
    int upUserDepardLimsId(String ids, String id);
    /**
     * åˆ é™¤äººå‘˜æ˜Žç»†æ‰€åœ¨ç»„织架构
     * @param id
     * @return
     */
    int delUserDepardLimsId(Integer id);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserServiceImpl.java
@@ -52,12 +52,23 @@
        return baseMapper.selectUserDepartmentLimsName(SecurityUtils.getUserId().intValue());
    }
    /**
     * ä¿®æ”¹äººå‘˜æ˜Žç»†æ‰€åœ¨ç»„织架构
     * @param ids
     * @param id
     * @return
     */
    @Override
    public int upUserDepardLimsId(String ids, String id) {
        List<Integer> userIds = JSON.parseArray(ids, Integer.class);
        return baseMapper.update(null, Wrappers.<User>lambdaUpdate().in(User::getId, userIds).set(User::getDepartLimsId, id).set(User::getUpdateTime, LocalDateTime.now()).set(User::getUpdateBy,SecurityUtils.getLoginUser().getUsername()));
    }
    /**
     * åˆ é™¤äººå‘˜æ˜Žç»†æ‰€åœ¨ç»„织架构
     * @param id
     * @return
     */
    @Override
    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()));