员工入职机构

This commit is contained in:
1378012178@qq.com 2025-09-11 08:58:58 +08:00
parent d1acb58d7e
commit 44accb2336
12 changed files with 116 additions and 17 deletions

View File

@ -8,7 +8,7 @@ import java.util.List;
public interface EmployeesOrgLocalApi {
String apply(EmployeesApplyEntity dto);
List<EmployeesOrgApiEntity> queryAll(String orgCodes);
List<EmployeesOrgApiEntity> queryAll(String orgCodes,String openId);
String canApply(String employeeId, String orgCode);
}

View File

@ -49,4 +49,6 @@ public class EmployeesOrgApiEntity implements Serializable {
private String status;
/**审核备注*/
private String auditContent;
/**是否为被邀请 0被邀请 1主动申请*/
private java.lang.String isInvited;
}

View File

@ -14,4 +14,6 @@ public class EmployeesApiEntity {
private java.lang.String izOnline;
/**冻结状态 0未冻结 1冻结*/
private java.lang.String izFreeze;
/**是否为被邀请 0被邀请 1主动申请*/
private java.lang.String isInvited;
}

View File

@ -178,6 +178,8 @@ public class OrgAllInfoApiEntity implements Serializable {
private String izOnline;
/** 是否冻结 0是1否*/
private String izFreeze;
/**是否为被邀请 0被邀请 1主动申请*/
private java.lang.String isInvited;
/** 入职时间*/
private String entryTime;
/**申请日期*/

View File

@ -88,4 +88,12 @@ public class EmployeesOrg implements Serializable {
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "入职时间")
private java.util.Date entryTime;
/**是否历史数据 0历史 1非历史*/
@Excel(name = "是否历史数据", width = 15)
@ApiModelProperty(value = "是否历史数据")
private java.lang.String izHistory;
/**是否为被邀请 0被邀请 1主动申请*/
@Excel(name = "是否为被邀请", width = 15)
@ApiModelProperty(value = "是否为被邀请")
private java.lang.String isInvited;
}

View File

@ -2,6 +2,7 @@ package com.nu.modules.employees.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.nu.entity.EmployeesApplyEntity;
import com.nu.modules.EmployessInfo.api.EmployeesOrgLocalApi;
import com.nu.modules.EmployessInfo.entity.EmployeesOrgApiEntity;
@ -25,6 +26,14 @@ public class EmployeesOrgServiceImpl extends ServiceImpl<EmployeesOrgMapper, Emp
@Override
public String apply(EmployeesApplyEntity dto) {
//先将旧数据置为历史状态
UpdateWrapper<EmployeesOrg> uw = new UpdateWrapper<>();
uw.eq("employees_id",dto.getEmployeeId());
uw.eq("org_code",dto.getOrgCode());
EmployeesOrg udto = new EmployeesOrg();
udto.setIzHistory("0");
baseMapper.update(udto,uw);
EmployeesOrg employeesOrg = new EmployeesOrg();
employeesOrg.setOpenId(dto.getOpenId());
employeesOrg.setEmployeesId(dto.getEmployeeId());
@ -32,14 +41,17 @@ public class EmployeesOrgServiceImpl extends ServiceImpl<EmployeesOrgMapper, Emp
employeesOrg.setStatus("1");
employeesOrg.setIzOnline("1");
employeesOrg.setIzFreeze("0");
employeesOrg.setIsInvited("1");
baseMapper.insert(employeesOrg);
return employeesOrg.getId();
}
@Override
public List<EmployeesOrgApiEntity> queryAll(String orgCodes) {
public List<EmployeesOrgApiEntity> queryAll(String orgCodes,String openId) {
QueryWrapper<EmployeesOrg> qw = new QueryWrapper<>();
qw.in("org_code", orgCodes.split(","));
qw.eq("open_id",openId);
qw.eq("iz_history","1");
List<EmployeesOrg> list = baseMapper.selectList(qw);
List<EmployeesOrgApiEntity> result = BeanUtil.copyToList(list, EmployeesOrgApiEntity.class);
return result;
@ -50,6 +62,7 @@ public class EmployeesOrgServiceImpl extends ServiceImpl<EmployeesOrgMapper, Emp
QueryWrapper<EmployeesOrg> qw = new QueryWrapper<>();
qw.eq("employees_id", employeeId);
qw.eq("org_code",orgCode);
qw.eq("iz_history","1");
EmployeesOrg employeesOrg = baseMapper.selectOne(qw);
if(employeesOrg != null ){
if("1".equals(employeesOrg.getStatus())){

View File

@ -177,6 +177,8 @@ public class OrgAllInfo implements Serializable {
private String izOnline;
/** 是否冻结 0是1否*/
private String izFreeze;
/**是否为被邀请 0被邀请 1主动申请*/
private java.lang.String isInvited;
/** 入职时间*/
private String entryTime;
/**申请日期*/

View File

@ -83,6 +83,7 @@
eo.status AS applyStatus,
eo.iz_online,
eo.iz_freeze,
eo.iz_invited,
eo.entry_time,
eo.create_time AS apply_time,
eo.update_time AS audit_time
@ -93,8 +94,12 @@
o.status = '2'
and d.del_flag = '0'
AND eo.open_id = #{openId}
AND eo.iz_history = '1'
<if test="status != null and status != ''">
and eo.status = #{status}
and eo.status in
<foreach collection="status.split(',')" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
<choose>
@ -102,7 +107,14 @@
ORDER BY (d.org_code + 0) ASC
</when>
<otherwise>
ORDER BY eo.create_time DESC
ORDER BY
CASE eo.status
WHEN '2' THEN 1
WHEN '1' THEN 2
WHEN '3' THEN 3
ELSE 4
END,
eo.create_time DESC
</otherwise>
</choose>

View File

@ -1,17 +1,21 @@
package com.nu.mq.employees.listener;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.nu.dto.EmployeesApplyMQDto;
import com.nu.dto.EmployeesStatusMQDto;
import com.nu.modules.employees.entity.EmployeesOrg;
import com.nu.modules.employees.entity.NuEmployeesAdvisoryInfo;
import com.nu.modules.employees.service.IEmployeesOrgService;
import com.nu.modules.employees.service.INuEmployeesAdvisoryInfoService;
import com.nu.utils.RabbitMQUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@ -23,10 +27,13 @@ public class EmployeesMQListener {
private IEmployeesOrgService employeesOrgService;
@Autowired
private INuEmployeesAdvisoryInfoService employeesAdvisoryInfoService;
@Autowired
private RabbitMQUtil rabbitMQUtil;
/**
* 员工-机构关系状态调整
* 只修改审核状态审核备注
*
* @param dto
*/
@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "hldy.employeesorg.auditstatus.sync", durable = "true"),
@ -36,7 +43,7 @@ public class EmployeesMQListener {
EmployeesOrg employeesOrg = new EmployeesOrg();
employeesOrg.setStatus(dto.getAuditStatus());
employeesOrg.setAuditContent(dto.getAuditContent());
if("2".equals(dto.getAuditStatus())){
if ("2".equals(dto.getAuditStatus())) {
employeesOrg.setEntryTime(dto.getEntryTime());//审批通过的话将入职时间设置进去
//修改员工注册表的入驻状态
NuEmployeesAdvisoryInfo employeesAd = new NuEmployeesAdvisoryInfo();
@ -45,14 +52,16 @@ public class EmployeesMQListener {
employeesAdvisoryInfoService.updateById(employeesAd);
}
UpdateWrapper<EmployeesOrg> uw = new UpdateWrapper<>();
uw.eq("employees_id",dto.getEmployeeId());
uw.eq("org_code",dto.getOrgCode());
employeesOrgService.update(employeesOrg,uw);
uw.eq("employees_id", dto.getEmployeeId());
uw.eq("org_code", dto.getOrgCode());
uw.eq("iz_history", "1");
employeesOrgService.update(employeesOrg, uw);
}
/**
* 员工-机构关系状态调整
* 只修改在线状态
*
* @param dto
*/
@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "hldy.employeesorg.onlinestatus.sync", durable = "true"),
@ -62,14 +71,16 @@ public class EmployeesMQListener {
EmployeesOrg employeesOrg = new EmployeesOrg();
employeesOrg.setIzOnline(dto.getIzOnline());
UpdateWrapper<EmployeesOrg> uw = new UpdateWrapper<>();
uw.eq("employees_id",dto.getEmployeeId());
uw.eq("org_code",dto.getOrgCode());
employeesOrgService.update(employeesOrg,uw);
uw.eq("employees_id", dto.getEmployeeId());
uw.eq("org_code", dto.getOrgCode());
uw.eq("iz_history", "1");
employeesOrgService.update(employeesOrg, uw);
}
/**
* 员工-机构关系状态调整
* 只修改冻结状态
*
* @param dto
*/
@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "hldy.employeesorg.freezestatus.sync", durable = "true"),
@ -79,9 +90,49 @@ public class EmployeesMQListener {
EmployeesOrg employeesOrg = new EmployeesOrg();
employeesOrg.setIzFreeze(dto.getIzFreeze());
UpdateWrapper<EmployeesOrg> uw = new UpdateWrapper<>();
uw.eq("employees_id",dto.getEmployeeId());
uw.eq("org_code",dto.getOrgCode());
employeesOrgService.update(employeesOrg,uw);
uw.eq("employees_id", dto.getEmployeeId());
uw.eq("org_code", dto.getOrgCode());
uw.eq("iz_history", "1");
employeesOrgService.update(employeesOrg, uw);
}
/**
* 机构邀请员工
*
* @param dto
*/
@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "hldy.employees.invide", durable = "true"),
exchange = @Exchange(name = "hldy.employees", type = ExchangeTypes.DIRECT),
key = "hldy.employees.invide"), errorHandler = "employeesMQErrorHandler")
public void handleInvided(EmployeesApplyMQDto dto) {
//先查询此人是否已经提交了申请信息 出现问题概率可能在1-2秒内同时申请与邀请 如果网络不好则大幅增加时长
QueryWrapper<EmployeesOrg> qw = new QueryWrapper<>();
qw.eq("employees_id", dto.getEmployeeId());
qw.eq("org_code", dto.getOrgCode());
qw.eq("iz_history", "1");
EmployeesOrg one = employeesOrgService.getOne(qw);
if (one != null) {
rabbitMQUtil.sendToExchange("hldy.employees", dto.getOrgCode()+ "employees.cannotinvided", dto);
return;
}
//先把之前的数据都改为历史数据
UpdateWrapper<EmployeesOrg> uw = new UpdateWrapper<>();
uw.eq("employees_id", dto.getEmployeeId());
uw.eq("org_code", dto.getOrgCode());
EmployeesOrg udto = new EmployeesOrg();
udto.setIzHistory("0");
employeesOrgService.update(udto, uw);
//向员工-机构关系表插数据
EmployeesOrg employeesOrg = new EmployeesOrg();
employeesOrg.setOpenId(dto.getOpenId());
employeesOrg.setEmployeesId(dto.getEmployeeId());
employeesOrg.setOrgCode(dto.getOrgCode());
employeesOrg.setStatus("1");
employeesOrg.setIzOnline("1");
employeesOrg.setIzFreeze("0");
employeesOrg.setIsInvited("0");
employeesOrgService.save(employeesOrg);
}
}

View File

@ -1,7 +1,6 @@
package com.nu.modules.wechat.employess.api;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Maps;
import com.nu.dto.EmployeesApplyMQDto;
import com.nu.entity.EmployeesApplyEntity;
@ -70,7 +69,8 @@ public class EmployessApplyApi {
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "8") Integer pageSize,
@RequestParam(value = "orgCode", defaultValue = "", required = false) String orgCode,
@RequestParam(value = "title", defaultValue = "", required = false) String title) {
@RequestParam(value = "title", defaultValue = "", required = false) String title,
@RequestParam(value = "openId") String openId) {
IPage<OrgAllInfoApiEntity> result = orgApplyInfoApi.queryOrgAllInfo(pageNo, pageSize, orgCode, title);
List<OrgAllInfoApiEntity> sourceRecords = result.getRecords();
if (sourceRecords == null || sourceRecords.size() <= 0) {
@ -85,7 +85,7 @@ public class EmployessApplyApi {
if (orgCodes.endsWith(",")) {
orgCodes.substring(0, orgCodes.length() - 2);
}
List<EmployeesOrgApiEntity> employeesOrgList = employeesOrgLocalApi.queryAll(orgCodes);
List<EmployeesOrgApiEntity> employeesOrgList = employeesOrgLocalApi.queryAll(orgCodes,openId);
if (employeesOrgList != null && employeesOrgList.size() > 0) {
employeesOrgList.stream().forEach(eo -> {
EmployeesApiEntity en = new EmployeesApiEntity();
@ -93,6 +93,7 @@ public class EmployessApplyApi {
en.setAuditContent(eo.getAuditContent());
en.setIzOnline(eo.getIzOnline());
en.setIzFreeze(eo.getIzFreeze());
en.setIsInvited(eo.getIsInvited());
sourceRecords.get(indexMap.get(eo.getOrgCode())).setEmployeesApiEntity(en);
});
result.setRecords(sourceRecords);

View File

@ -29,4 +29,6 @@ public class EmployeesStatusMQDto implements Serializable {
private String orgCode;
/**入职时间*/
private Date entryTime;
/**openId*/
private Date openId;
}

View File

@ -1,6 +1,8 @@
package com.nu.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
@ -32,6 +34,8 @@ public class EmployeesApplyEntity implements Serializable {
/**联系电话*/
private String tel;
/**出生日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy年MM月dd日")
@DateTimeFormat(pattern = "yyyy年MM月dd日")
private Date dateOfBirth;
/**婚否*/
private String marriedOrNot;