干燥机配套车间生产管理系统/云平台服务端
zhuguifei
2025-10-23 7dfa7ad3e627d379c1dc06334418c95822f4e254
新增

同济堂三方接口同步用户
已添加1个文件
已修改4个文件
135 ■■■■■ 文件已修改
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/bo/TenantUserBo.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/bo/TenantUserBo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package org.jeecg.modules.system.bo;
import lombok.Data;
/**
 * åŒæµŽå ‚用户
 */
@Data
public class TenantUserBo {
    private String birthday;
    private String leader;
    private String jobStatus;
    private String orgName;
    private String firstOrgId;
    private String mobile;
    private String firstOrgName;
    private String postId;
    private String orgId;
    private String leaderId;
    private String workNo;
    private String post;
    private String name;
    private String rank;
    private String id;
    private String status;
}
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
@@ -131,6 +131,18 @@
        return sysUserService.queryPageList(req, queryWrapper, pageSize, pageNo);
    }
    @RequestMapping(value = "/syncTenantUser", method = RequestMethod.GET)
    public Result<?> syncTenantUser(){
       try {
           String message = sysUserService.syncTenantUser();
           return Result.ok(message);
       }catch (Exception e){
           e.printStackTrace();
       }
        return Result.error("操作失败,请联系管理员!");
    }
    /**
     * èŽ·å–ç³»ç»Ÿç”¨æˆ·æ•°æ®ï¼ˆæŸ¥è¯¢å…¨éƒ¨ç”¨æˆ·ï¼Œä¸åšç§Ÿæˆ·éš”ç¦»ï¼‰
     *
@@ -167,7 +179,7 @@
            user.setOrgCode(null);
            // ä¿å­˜ç”¨æˆ·èµ°ä¸€ä¸ªservice ä¿è¯äº‹åŠ¡
            //获取租户ids
            String relTenantIds = jsonObject.getString("realTenantIds");
            String relTenantIds = jsonObject.getString("relTenantIds");
            sysUserService.saveUser(user, selectedRoles, selectedDeparts, relTenantIds);
            baseCommonService.addLog("添加用户,username: " +user.getUsername() ,CommonConstant.LOG_TYPE_2, 2);
            result.success("添加成功!");
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java
@@ -106,6 +106,11 @@
     */
    private Integer loginTenantId;
    /**
     * ç§Ÿæˆ·ID
     */
    private Integer tenantId;
    /**部门名称*/
    private transient String orgCodeTxt;
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
@@ -389,4 +389,6 @@
     * @param departs
     */
    void editTenantUser(SysUser sysUser, String tenantId, String departs, String roles);
    String syncTenantUser();
}
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
@@ -1,6 +1,7 @@
package org.jeecg.modules.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -28,6 +29,7 @@
import org.jeecg.common.util.*;
import org.jeecg.config.mybatis.MybatisPlusSaasConfig;
import org.jeecg.modules.base.service.BaseCommonService;
import org.jeecg.modules.system.bo.TenantUserBo;
import org.jeecg.modules.system.entity.*;
import org.jeecg.modules.system.mapper.*;
import org.jeecg.modules.system.model.SysUserSysDepartModel;
@@ -49,6 +51,8 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -621,6 +625,14 @@
    @Transactional(rollbackFor = Exception.class)
    public void saveUser(SysUser user, String selectedRoles, String selectedDeparts, String relTenantIds) {
        //step.1 ä¿å­˜ç”¨æˆ·
        if(StringUtils.isNotEmpty(relTenantIds)){
            try {
                user.setTenantId(Integer.valueOf(relTenantIds));
                user.setLoginTenantId(Integer.valueOf(relTenantIds));
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        this.save(user);
        //获取用户保存前台传过来的租户id并添加到租户
        this.saveUserTenant(user.getId(),relTenantIds);
@@ -1219,7 +1231,81 @@
        this.updateTenantDepart(user, tenantId, departs);
    }
    /**
    @Override
    @Transactional(rollbackFor = Exception.class)
    public String syncTenantUser() {
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        int tenantId = oConvertUtils.getInt(TenantContext.getTenant(), 0);
        if(tenantId == 0){
            return "请登录租户管理员后同步用户!";
        }
        // æ¨¡æ‹ŸæŽ¥å£æ•°æ® TODO使用接口数据
        String json = "{\"code\":200,\"msg\":\"处理成功\",\"data\":[{\"id\":\"621466726\",\"name\":\"石一\",\"birthday\":\"1992-08-19\",\"rank\":\"bad0f40d-6ed9-4d7a-82f8-95af7d9f47d5\",\"firstOrgName\":\"信息部\",\"firstOrgId\":\"1632356\",\"orgName\":\"信息部\",\"orgId\":\"1632356\",\"post\":null,\"postId\":null,\"status\":\"\",\"jobStatus\":\"\",\"workNo\":\"6518\",\"mobile\":\"13658340793\",\"leaderId\":\"619347944\",\"leader\":\"程亚飞\"},{\"id\":\"621466727\",\"name\":\"张三\",\"birthday\":\"1993-05-15\",\"rank\":\"bad0f40d-6ed9-4d7a-82f8-95af7d9f47d6\",\"firstOrgName\":\"技术部\",\"firstOrgId\":\"1632357\",\"orgName\":\"技术部\",\"orgId\":\"1632357\",\"post\":\"工程师\",\"postId\":\"1001\",\"status\":\"在职\",\"jobStatus\":\"正常\",\"workNo\":\"6519\",\"mobile\":\"13658340794\",\"leaderId\":\"619347945\",\"leader\":\"李四\"},{\"id\":\"621466728\",\"name\":\"王五\",\"birthday\":\"1991-12-20\",\"rank\":\"bad0f40d-6ed9-4d7a-82f8-95af7d9f47d7\",\"firstOrgName\":\"市场部\",\"firstOrgId\":\"1632358\",\"orgName\":\"市场部\",\"orgId\":\"1632358\",\"post\":\"经理\",\"postId\":\"1002\",\"status\":\"在职\",\"jobStatus\":\"正常\",\"workNo\":\"6520\",\"mobile\":\"13658340795\",\"leaderId\":\"619347946\",\"leader\":\"赵六\"}]}";
        JSONObject jsonObject = JSON.parseObject(json);
        JSONArray data = jsonObject.getJSONArray("data");
        List<TenantUserBo> remoteTenantUserList = data.toJavaList(TenantUserBo.class);
        System.err.println(remoteTenantUserList);
        // æŸ¥è¯¢ç§Ÿæˆ·ä¸‹ç”¨æˆ·
        List<String> tenantUserIds = userTenantMapper.getUserIdsByTenantId(tenantId);
        LambdaQueryWrapper<SysUser> userQueryWrapper = new LambdaQueryWrapper<>();
        userQueryWrapper.in(SysUser::getId, tenantUserIds);
        List<SysUser> tenantUserList = this.baseMapper.selectList(userQueryWrapper);
        // æå–tenantUserList中的所有username作为对比依据
        Set<String> tenantUsernames = tenantUserList.stream()
                .map(SysUser::getUsername)
                .collect(Collectors.toSet());
    // 1. remoteTenantUserList中不包含在tenantUserList中的记录
        List<TenantUserBo> remoteNotInTenant = remoteTenantUserList.stream()
                .filter(remoteUser -> !tenantUsernames.contains(remoteUser.getWorkNo()))
                .collect(Collectors.toList());
    // 2. remoteTenantUserList中包含在tenantUserList中的记录
        List<TenantUserBo> remoteInTenant = remoteTenantUserList.stream()
                .filter(remoteUser -> tenantUsernames.contains(remoteUser.getWorkNo()))
                .collect(Collectors.toList());
        AtomicInteger successCount = new AtomicInteger(0);
        AtomicInteger failedCount = new AtomicInteger(0);
        for (int i = 0; i <remoteNotInTenant.size() ; i++) {
            TenantUserBo tenantUserBo = remoteNotInTenant.get(i);
            addUser(tenantUserBo,tenantId,successCount,failedCount);
        }
        if(remoteTenantUserList.size()>0){
           return  "同步"+remoteTenantUserList.size()+"条数据,已存在"+remoteInTenant.size() +"条;成功新增"+successCount.get()+"条,失败"+failedCount.get()+"条";
        }
        return "同步接口未返回数据!";
    }
    private void addUser(TenantUserBo tenantUserBo,Integer tenantId,AtomicInteger successCount, AtomicInteger failedCount) {
        SysUser user = new SysUser();
        user.setLoginTenantId(tenantId);
        user.setTenantId(tenantId);
        user.setCreateTime(new Date());// è®¾ç½®åˆ›å»ºæ—¶é—´
        String salt = oConvertUtils.randomGen(8);
        String passwordEncode = PasswordUtil.encrypt(tenantUserBo.getWorkNo(), "123456", salt);
        user.setSalt(salt);
        user.setUsername(tenantUserBo.getWorkNo());
        user.setRealname(tenantUserBo.getName());
        user.setPassword(passwordEncode);
        user.setPhone(tenantUserBo.getMobile());
        user.setStatus(CommonConstant.USER_UNFREEZE);
        user.setDelFlag(CommonConstant.DEL_FLAG_0);
        user.setActivitiSync(CommonConstant.ACT_SYNC_0);
        boolean save = this.save(user);
        if(save){
            this.saveUserTenant(user.getId(),String.valueOf(tenantId));
            successCount.incrementAndGet();
        }else {
            failedCount.incrementAndGet();
        }
    }
    /**
     * ä¿®æ”¹ç§Ÿæˆ·ä¸‹çš„部门
     * @param departs
     */