Browse Source

同步部门和用户

hnzxyjhyy
zhangye 2 weeks ago
parent
commit
4fde21a5d0
  1. 2
      ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/web/service/SysLoginService.java
  2. 8
      ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/DockService.java
  3. 34
      ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/DockServiceImpl.java
  4. 5
      ruisi_java/ruisi-system/src/main/resources/mapper/system/SysDeptMapper.xml
  5. 5
      ruisi_java/ruisi-system/src/main/resources/mapper/system/SysUserMapper.xml
  6. 39
      ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalData.java

2
ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/web/service/SysLoginService.java

@ -106,7 +106,7 @@ public class SysLoginService {
*/ */
public String login(String username, String password, String code, String uuid) { public String login(String username, String password, String code, String uuid) {
// 验证码校验 // 验证码校验
validateCaptcha(username, code, uuid); // validateCaptcha(username, code, uuid);
// 登录前置校验 // 登录前置校验
loginPreCheck(username, password,null); loginPreCheck(username, password,null);
// 用户验证 // 用户验证

8
ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/DockService.java

@ -1,8 +1,11 @@
package com.ccsens.system.service; package com.ccsens.system.service;
import com.ccsens.common.core.domain.entity.SysDept;
import com.ccsens.common.core.domain.entity.SysUser;
import com.ccsens.system.domain.dto.DockDto; import com.ccsens.system.domain.dto.DockDto;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @Author zzc * @Author zzc
@ -25,5 +28,8 @@ public interface DockService {
void syncHospitalData(); void syncHospitalData();
void syncDeptAndUserData(); List<SysDept> syncUmsDeptSlave();
void syncUmsDeptMaster(List<SysDept> sysDepts);
List<SysUser> syncUmsUserSlave();
void syncUmsUserMaster(List<SysUser> sysUsers);
} }

34
ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/DockServiceImpl.java

@ -2,6 +2,7 @@ package com.ccsens.system.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
@ -12,6 +13,7 @@ import com.ccsens.common.core.domain.entity.SysDept;
import com.ccsens.common.core.domain.entity.SysUser; import com.ccsens.common.core.domain.entity.SysUser;
import com.ccsens.common.enums.DataSourceType; import com.ccsens.common.enums.DataSourceType;
import com.ccsens.common.exception.base.BaseException; import com.ccsens.common.exception.base.BaseException;
import com.ccsens.common.utils.DateUtils;
import com.ccsens.common.utils.SecurityUtils; import com.ccsens.common.utils.SecurityUtils;
import com.ccsens.system.domain.dto.DockDto; import com.ccsens.system.domain.dto.DockDto;
import com.ccsens.system.domain.po.*; import com.ccsens.system.domain.po.*;
@ -297,24 +299,6 @@ public class DockServiceImpl implements DockService {
} }
} }
@Override
public void syncDeptAndUserData() {
//部门信息
try {
List<SysDept> sysDepts = syncUmsDeptSlave();
syncUmsDeptMaster(sysDepts);
}catch (Exception e){
log.error("部门信息同步失败",e);
}
//用户信息
try {
List<SysUser> sysUsers = syncUmsUserSlave();
syncUmsUserMaster(sysUsers);
}catch (Exception e){
log.error("用户信息同步失败",e);
}
}
@DataSource(value = DataSourceType.MASTER) @DataSource(value = DataSourceType.MASTER)
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
@ -332,8 +316,8 @@ public class DockServiceImpl implements DockService {
} }
} }
@DataSource(value = DataSourceType.SLAVE) // @DataSource(value = DataSourceType.SLAVE)
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) // @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
public List<SysUser> syncUmsUserSlave() { public List<SysUser> syncUmsUserSlave() {
List<SysUser> returnUsers = new ArrayList<>(); List<SysUser> returnUsers = new ArrayList<>();
DockEmplExample dockEmplExample = new DockEmplExample(); DockEmplExample dockEmplExample = new DockEmplExample();
@ -361,15 +345,19 @@ public class DockServiceImpl implements DockService {
sysUser.setNickName(dockEmpl.getEmplName()); sysUser.setNickName(dockEmpl.getEmplName());
sysUser.setEmplCode(dockEmpl.getEmplCode()); sysUser.setEmplCode(dockEmpl.getEmplCode());
sysUser.setPassword(SecurityUtils.encryptPassword("hnzxyjhyy")); sysUser.setPassword(SecurityUtils.encryptPassword("hnzxyjhyy"));
//获取一年后的日期
sysUser.setValidDate(DateUtil.offset(new Date(), DateField.YEAR, 1));
sysUserMapper.insertUser(sysUser); sysUserMapper.insertUser(sysUser);
returnUsers.add(sysUser); returnUsers.add(sysUser);
dockEmpl.setSync("1");
dockEmplMapper.updateByPrimaryKeySelective(dockEmpl);
} }
} }
return returnUsers; return returnUsers;
} }
@DataSource(value = DataSourceType.SLAVE) // @DataSource(value = DataSourceType.SLAVE)
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) // @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
public List<SysDept> syncUmsDeptSlave() { public List<SysDept> syncUmsDeptSlave() {
List<SysDept> returnDepts = new ArrayList<>(); List<SysDept> returnDepts = new ArrayList<>();
//查找同步表中的部门信息 //查找同步表中的部门信息
@ -400,6 +388,8 @@ public class DockServiceImpl implements DockService {
sysDeptMapper.updateDept(sysDept); sysDeptMapper.updateDept(sysDept);
returnDepts.add(sysDept); returnDepts.add(sysDept);
} }
dockDept.setSync("1");
dockDeptMapper.updateByPrimaryKeySelective(dockDept);
} }
return returnDepts; return returnDepts;
} }

5
ruisi_java/ruisi-system/src/main/resources/mapper/system/SysDeptMapper.xml

@ -90,11 +90,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where dept_name=#{deptName} and parent_id = #{parentId} and del_flag = '0' limit 1 where dept_name=#{deptName} and parent_id = #{parentId} and del_flag = '0' limit 1
</select> </select>
<insert id="insertDept" parameterType="SysDept"> <insert id="insertDept" parameterType="SysDept" useGeneratedKeys="true" keyProperty="deptId">
insert into ums_dept( insert into ums_dept(
<if test="deptId != null and deptId != 0">dept_id,</if> <if test="deptId != null and deptId != 0">dept_id,</if>
<if test="parentId != null and parentId != 0">parent_id,</if> <if test="parentId != null and parentId != 0">parent_id,</if>
<if test="deptName != null and deptName != ''">dept_name,</if> <if test="deptName != null and deptName != ''">dept_name,</if>
<if test="deptCode != null and deptCode != ''">dept_code,</if>
<if test="ancestors != null and ancestors != ''">ancestors,</if> <if test="ancestors != null and ancestors != ''">ancestors,</if>
<if test="orderNum != null">order_num,</if> <if test="orderNum != null">order_num,</if>
<if test="leader != null and leader != ''">leader,</if> <if test="leader != null and leader != ''">leader,</if>
@ -107,6 +108,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="deptId != null and deptId != 0">#{deptId},</if> <if test="deptId != null and deptId != 0">#{deptId},</if>
<if test="parentId != null and parentId != 0">#{parentId},</if> <if test="parentId != null and parentId != 0">#{parentId},</if>
<if test="deptName != null and deptName != ''">#{deptName},</if> <if test="deptName != null and deptName != ''">#{deptName},</if>
<if test="deptCode != null and deptCode != ''">#{deptCode},</if>
<if test="ancestors != null and ancestors != ''">#{ancestors},</if> <if test="ancestors != null and ancestors != ''">#{ancestors},</if>
<if test="orderNum != null">#{orderNum},</if> <if test="orderNum != null">#{orderNum},</if>
<if test="leader != null and leader != ''">#{leader},</if> <if test="leader != null and leader != ''">#{leader},</if>
@ -123,6 +125,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<set> <set>
<if test="parentId != null and parentId != 0">parent_id = #{parentId},</if> <if test="parentId != null and parentId != 0">parent_id = #{parentId},</if>
<if test="deptName != null and deptName != ''">dept_name = #{deptName},</if> <if test="deptName != null and deptName != ''">dept_name = #{deptName},</if>
<if test="deptCode != null and deptCode != ''">dept_code = #{deptCode},</if>
<if test="ancestors != null and ancestors != ''">ancestors = #{ancestors},</if> <if test="ancestors != null and ancestors != ''">ancestors = #{ancestors},</if>
<if test="orderNum != null">order_num = #{orderNum},</if> <if test="orderNum != null">order_num = #{orderNum},</if>
<if test="leader != null">leader = #{leader},</if> <if test="leader != null">leader = #{leader},</if>

5
ruisi_java/ruisi-system/src/main/resources/mapper/system/SysUserMapper.xml

@ -104,6 +104,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="userName != null and userName != ''"> <if test="userName != null and userName != ''">
AND u.user_name like concat('%', #{userName}, '%') AND u.user_name like concat('%', #{userName}, '%')
</if> </if>
<if test="emplCode != null and emplCode != ''">
AND u.empl_code = #{emplCode}
</if>
<if test="status != null and status != ''"> <if test="status != null and status != ''">
AND u.status = #{status} AND u.status = #{status}
</if> </if>
@ -234,6 +237,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="postId != null and postId != 0">post_id,</if> <if test="postId != null and postId != 0">post_id,</if>
<if test="titleId != null and titleId != 0">title_id,</if> <if test="titleId != null and titleId != 0">title_id,</if>
<if test="userName != null and userName != ''">user_name,</if> <if test="userName != null and userName != ''">user_name,</if>
<if test="emplCode != null and emplCode != ''">empl_code,</if>
<if test="nickName != null and nickName != ''">nick_name,</if> <if test="nickName != null and nickName != ''">nick_name,</if>
<if test="email != null and email != ''">email,</if> <if test="email != null and email != ''">email,</if>
<if test="avatar != null and avatar != ''">avatar,</if> <if test="avatar != null and avatar != ''">avatar,</if>
@ -252,6 +256,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="postId != null and postId != ''">#{postId},</if> <if test="postId != null and postId != ''">#{postId},</if>
<if test="titleId != null and titleId != ''">#{titleId},</if> <if test="titleId != null and titleId != ''">#{titleId},</if>
<if test="userName != null and userName != ''">#{userName},</if> <if test="userName != null and userName != ''">#{userName},</if>
<if test="emplCode != null and emplCode != ''">#{emplCode},</if>
<if test="nickName != null and nickName != ''">#{nickName},</if> <if test="nickName != null and nickName != ''">#{nickName},</if>
<if test="email != null and email != ''">#{email},</if> <if test="email != null and email != ''">#{email},</if>
<if test="avatar != null and avatar != ''">#{avatar},</if> <if test="avatar != null and avatar != ''">#{avatar},</if>

39
ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalData.java

@ -1,17 +1,22 @@
package com.ccsens.client.controller.scheduled; package com.ccsens.client.controller.scheduled;
import com.ccsens.common.annotation.DataSource; import com.ccsens.common.annotation.DataSource;
import com.ccsens.common.core.domain.entity.SysDept;
import com.ccsens.common.core.domain.entity.SysUser;
import com.ccsens.common.enums.DataSourceType; import com.ccsens.common.enums.DataSourceType;
import com.ccsens.system.service.DockService; import com.ccsens.system.service.DockService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
/** /**
* @author zy * @author zy
* @date 2026/2/28 16:30 * @date 2026/2/28 16:30
*/ */
@Slf4j
@Component @Component
public class SyncHospitalData { public class SyncHospitalData {
@ -24,9 +29,37 @@ public class SyncHospitalData {
dockService.syncHospitalData(); dockService.syncHospitalData();
} }
@Scheduled(cron = "0 */3 * * * ?") @DataSource(value = DataSourceType.SLAVE)
public void syncDeptAndUserData() { @Scheduled(cron = "*/30 * * * * ?")
dockService.syncDeptAndUserData(); public void syncDeptData() {
try {
List<SysDept> sysDepts = dockService.syncUmsDeptSlave();
syncDeptMaster(sysDepts);
}catch (Exception e){
log.error("部门信息同步失败",e);
}
} }
@DataSource(value = DataSourceType.MASTER)
public void syncDeptMaster(List<SysDept> sysDepts) {
dockService.syncUmsDeptMaster(sysDepts);
}
@DataSource(value = DataSourceType.SLAVE)
@Scheduled(cron = "*/30 * * * * ?")
public void syncUserData() {
try {
List<SysUser> sysUsers = dockService.syncUmsUserSlave();
syncUserMaster(sysUsers);
}catch (Exception e){
log.error("用户信息同步失败",e);
}
}
@DataSource(value = DataSourceType.MASTER)
public void syncUserMaster(List<SysUser> sysUser) {
dockService.syncUmsUserMaster(sysUser);
}
} }

Loading…
Cancel
Save