Compare commits

...

2 Commits

3 changed files with 277 additions and 1 deletions

View File

@ -274,4 +274,13 @@ public class NuEmployeesAdvisoryInfo implements Serializable {
//信息修改状态 没提交过修改 1修改申请中 2通过 3驳回*/
@TableField(exist = false)
private String modifyState;
private String lastLoginOrg;//最近一次登录机构编码
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private java.util.Date lastLoginTime;//最近上一次登录时间
private String izInit;//是否需要员工初始化 0否 1是
}

View File

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.google.common.collect.Maps;
import com.nu.dto.EmployeesApplyMQDto;
import com.nu.dto.EmployeesStatusMQDto;
import com.nu.dto.SysUserMQDto;
import com.nu.entity.WxNoticeEntity;
import com.nu.enums.WxClientType;
import com.nu.modules.employees.entity.EmployeesOrg;
@ -26,6 +27,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -45,7 +47,7 @@ public class EmployeesMQListener {
private ISysBaseAPI sysBaseAPI;
/**
* 员工-机构关系状态调整
* 员工-机构关系状态调整并判断是否初始化账号
* 只修改审核状态审核备注
*
* @param dto
@ -72,7 +74,165 @@ public class EmployeesMQListener {
uw.eq("org_code", dto.getOrgCode());
uw.eq("iz_history", "1");
employeesOrgService.update(employeesOrg, uw);
//审批通过判断是否需要通知业务系统初始化登录账户需要初始化则直接通知不需要初始化则需要从已存在的业务系统中获取账号信息并将账号信息通知给此审批的业务系统
if ("2".equals(dto.getAuditStatus())) {
NuEmployeesAdvisoryInfo employeesAd = employeesAdvisoryInfoService.getById(dto.getEmployeeId());
if(employeesAd.getIzInit().equals("1")){
//需要初始化直接通知审批业务系统进行初始化
SysUserMQDto sysUserMQDto = new SysUserMQDto();
sysUserMQDto.setEmployeeId(dto.getEmployeeId());
sysUserMQDto.setIzInit("1");
sysUserMQDto.setIzInitPassword("0");//不需要更新其他业务平台密码
rabbitMQUtil.sendToExchange("hldy.employees", dto.getOrgCode() + ".employees.initsysuser", sysUserMQDto);
}else{
long diffInMillis = Math.abs((new Date()).getTime() - employeesAd.getLastLoginTime().getTime());
// 30天的毫秒数近似值
long oneMonthInMillis = 30L * 24 * 60 * 60 * 1000;
if(diffInMillis > oneMonthInMillis){
//最近登录时间大于30天也需要初始化
SysUserMQDto sysUserMQDto = new SysUserMQDto();
sysUserMQDto.setEmployeeId(dto.getEmployeeId());
sysUserMQDto.setIzInit("1");
sysUserMQDto.setIzInitPassword("1");//需要更新其他业务平台密码
rabbitMQUtil.sendToExchange("hldy.employees", dto.getOrgCode() + ".employees.initsysuser", sysUserMQDto);
}else{
UpdateWrapper<EmployeesOrg> uwOrg = new UpdateWrapper<>();
uwOrg.eq("employees_id", dto.getEmployeeId());
uwOrg.eq("status", "2");//审批通过
uwOrg.eq("iz_history", "1");//非历史
uwOrg.eq("iz_freeze", "0");//未冻结
uwOrg.eq("org_code", employeesAd.getLastLoginOrg());//机构
EmployeesOrg empOrg = employeesOrgService.getOne(uwOrg);
if(empOrg!=null){
//不需要初始化发送MQ从原业务系统获取账号信息MQ收到账号信息后再通知给审批业务系统
SysUserMQDto sysUserMQDto = new SysUserMQDto();
sysUserMQDto.setEmployeeId(dto.getEmployeeId());
sysUserMQDto.setTargetOrgCode(dto.getOrgCode());
rabbitMQUtil.sendToExchange("hldy.employees", employeesAd.getLastLoginOrg() + ".employees.sysuser.info", sysUserMQDto);
}else{
//原账号冻结也需要初始化
SysUserMQDto sysUserMQDto = new SysUserMQDto();
sysUserMQDto.setEmployeeId(dto.getEmployeeId());
sysUserMQDto.setIzInit("1");
sysUserMQDto.setIzInitPassword("1");//需要更新其他业务平台密码
rabbitMQUtil.sendToExchange("hldy.employees", dto.getOrgCode() + ".employees.initsysuser", sysUserMQDto);
}
}
}
}
}
/**
* 修改员工账户最近一次登录信息
*
* @param dto
*/
@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "hldy.employeesorg.lastlogin", durable = "true"),
exchange = @Exchange(name = "hldy.employees", type = ExchangeTypes.DIRECT),
key = "hldy.employeesorg.lastlogin"), errorHandler = "employeesMQErrorHandler")
public void handleEmpLastLogin(SysUserMQDto dto) {
NuEmployeesAdvisoryInfo employeesAd = new NuEmployeesAdvisoryInfo();
employeesAd.setId(dto.getEmployeeId());
employeesAd.setIzInit("0");
employeesAd.setLastLoginOrg(dto.getOrgCode());
employeesAd.setLastLoginTime(new Date());
employeesAdvisoryInfoService.updateById(employeesAd);
}
/**
* 员工账户密码同步
*
* @param dto
*/
@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "hldy.employeesorg.sysuser.sync", durable = "true"),
exchange = @Exchange(name = "hldy.employees", type = ExchangeTypes.DIRECT),
key = "hldy.employeesorg.sysuser.sync"), errorHandler = "employeesMQErrorHandler")
public void handleSysuserPwd(SysUserMQDto dto) {
UpdateWrapper<EmployeesOrg> uw = new UpdateWrapper<>();
uw.eq("employees_id", dto.getEmployeeId());
uw.eq("status", "2");//审批通过
uw.eq("iz_history", "1");//非历史
uw.eq("iz_freeze", "0");//未冻结
List<EmployeesOrg> list = employeesOrgService.list(uw);
if(list.size()>0){
for(int i=0;i<list.size();i++){
EmployeesOrg entity = list.get(i);
rabbitMQUtil.sendToExchange("hldy.employees", entity.getOrgCode() + ".employees.sysuser.pwd.sync", dto);
}
}
}
/**
* 员工账户信息同步到目标机构
*
* @param dto
*/
@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "hldy.employeesorg.sysuser.info", durable = "true"),
exchange = @Exchange(name = "hldy.employees", type = ExchangeTypes.DIRECT),
key = "hldy.employeesorg.sysuser.info"), errorHandler = "employeesMQErrorHandler")
public void handleSysuserInfo(SysUserMQDto dto) {
dto.setIzInit("0");
dto.setIzInitPassword("0");//需要更新其他业务平台密码
rabbitMQUtil.sendToExchange("hldy.employees", dto.getTargetOrgCode() + ".employees.initsysuser", dto);
}
/**
* 判断业务如何创建登录账号
* 只修改审核状态审核备注
*
* @param dto
*/
@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "hldy.employeesorg.howtoinitsysuser", durable = "true"),
exchange = @Exchange(name = "hldy.employees", type = ExchangeTypes.DIRECT),
key = "hldy.employeesorg.howtoinitsysuser"), errorHandler = "employeesMQErrorHandler")
public void handleHowToInitSysuser(SysUserMQDto dto) {
NuEmployeesAdvisoryInfo employeesAd = employeesAdvisoryInfoService.getById(dto.getEmployeeId());
if(employeesAd.getIzInit().equals("1")){
//需要初始化直接通知审批业务系统进行初始化
SysUserMQDto sysUserMQDto = new SysUserMQDto();
sysUserMQDto.setEmployeeId(dto.getEmployeeId());
sysUserMQDto.setIzInit("1");
sysUserMQDto.setIzInitPassword("0");//不需要更新其他业务平台密码
rabbitMQUtil.sendToExchange("hldy.employees", dto.getOrgCode() + ".employees.initsysuser", sysUserMQDto);
}else{
long diffInMillis = Math.abs((new Date()).getTime() - employeesAd.getLastLoginTime().getTime());
// 30天的毫秒数近似值
long oneMonthInMillis = 30L * 24 * 60 * 60 * 1000;
if(diffInMillis > oneMonthInMillis){
//最近登录时间大于30天也需要初始化
SysUserMQDto sysUserMQDto = new SysUserMQDto();
sysUserMQDto.setEmployeeId(dto.getEmployeeId());
sysUserMQDto.setIzInit("1");
sysUserMQDto.setIzInitPassword("1");//需要更新其他业务平台密码
rabbitMQUtil.sendToExchange("hldy.employees", dto.getOrgCode() + ".employees.initsysuser", sysUserMQDto);
}else{
UpdateWrapper<EmployeesOrg> uwOrg = new UpdateWrapper<>();
uwOrg.eq("employees_id", dto.getEmployeeId());
uwOrg.eq("status", "2");//审批通过
uwOrg.eq("iz_history", "1");//非历史
uwOrg.eq("iz_freeze", "0");//未冻结
uwOrg.eq("org_code", employeesAd.getLastLoginOrg());//机构
EmployeesOrg empOrg = employeesOrgService.getOne(uwOrg);
if(empOrg!=null){
//不需要初始化发送MQ从原业务系统获取账号信息MQ收到账号信息后再通知给审批业务系统
SysUserMQDto sysUserMQDto = new SysUserMQDto();
sysUserMQDto.setEmployeeId(dto.getEmployeeId());
sysUserMQDto.setTargetOrgCode(dto.getOrgCode());
rabbitMQUtil.sendToExchange("hldy.employees", employeesAd.getLastLoginOrg() + ".employees.sysuser.info", sysUserMQDto);
}else{
//原账号冻结也需要初始化
SysUserMQDto sysUserMQDto = new SysUserMQDto();
sysUserMQDto.setEmployeeId(dto.getEmployeeId());
sysUserMQDto.setIzInit("1");
sysUserMQDto.setIzInitPassword("1");//需要更新其他业务平台密码
rabbitMQUtil.sendToExchange("hldy.employees", dto.getOrgCode() + ".employees.initsysuser", sysUserMQDto);
}
}
}
}
/**
* 员工-机构关系状态调整

View File

@ -0,0 +1,107 @@
package com.nu.dto;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 用户表
* </p>
*
* @Author scott
* @since 2018-12-20
*/
@Data
public class SysUserMQDto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 员工Id
*/
private String employeeId;
/**
* 登录账号
*/
private String username;
/**
* 真实姓名
*/
private String realname;
/**
* 密码
*/
private String password;
/**
* md5密码盐
*/
private String salt;
/**
* 头像
*/
private String avatar;
/**
* 生日
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
/**
* 性别1 2
*/
private Integer sex;
/**
* 电子邮件
*/
private String email;
/**
* 电话
*/
private String phone;
/**
* 结构编码
*/
private String orgCode;
/**
* 目的结构编码
*/
private String targetOrgCode;
/**
* 状态(1正常 2冻结
*/
private Integer status;
/**
* 删除状态0正常1已删除
*/
private Integer delFlag;
/**
* 是否需要初始化01是
*/
private String izInit;
/**
* 是否需要初始化密码01是
*/
private String izInitPassword;
}