|
|
@ -9,6 +9,7 @@ import com.qs.serve.common.framework.security.model.LoginUserType; |
|
|
|
import com.qs.serve.common.model.enums.HttpCode; |
|
|
|
import com.qs.serve.common.util.*; |
|
|
|
import com.qs.serve.modules.sys.entity.*; |
|
|
|
import com.qs.serve.modules.sys.entity.bo.SysUserLeaveBo; |
|
|
|
import com.qs.serve.modules.sys.mapper.*; |
|
|
|
import com.qs.serve.modules.sys.service.*; |
|
|
|
import lombok.AllArgsConstructor; |
|
|
@ -16,6 +17,8 @@ import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
import java.time.LocalDate; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.List; |
|
|
|
import java.util.stream.Collectors; |
|
|
@ -31,6 +34,7 @@ import java.util.stream.Collectors; |
|
|
|
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService { |
|
|
|
|
|
|
|
private final SysUserRoleService sysUserRoleService; |
|
|
|
private final SysUserLeaveService sysUserLeaveService; |
|
|
|
private final SysRoleMenuMapper sysRoleMenuMapper; |
|
|
|
private final SysPermitService sysPermitService; |
|
|
|
private final SysRoleService sysRoleService; |
|
|
@ -79,7 +83,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void relateInfo(SysUser sysUser) { |
|
|
|
public void relateInfo(SysUser sysUser,boolean loadLeave) { |
|
|
|
if(sysUser==null){return;} |
|
|
|
sysUser.setPassword(null); |
|
|
|
List<SysUserRole> userRoles = sysUserRoleService.listByUid(sysUser.getId()); |
|
|
@ -92,6 +96,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl |
|
|
|
if(sysUser.getDeptId()!=null){ |
|
|
|
sysUser.setDeptInfo(sysDeptMapper.selectById(sysUser.getDeptId())); |
|
|
|
} |
|
|
|
if(loadLeave){ |
|
|
|
SysUserLeave sysUserLeave = sysUserLeaveService.getOneByUserId(sysUser.getId()); |
|
|
|
sysUser.setLeaveInfo(sysUserLeave); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -146,5 +154,93 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl |
|
|
|
lqw.eq(SysUser::getSyUserId,memberId); |
|
|
|
return this.getOne(lqw,false); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void leave(SysUserLeaveBo param) { |
|
|
|
LocalDate currDate = LocalDate.now(); |
|
|
|
SysUser leaveUser = this.getById(param.getUserId()); |
|
|
|
if(currDate.isBefore(param.getLeaveEffectDate())){ |
|
|
|
Assert.throwEx("离职日期必须大于等于今天"); |
|
|
|
} |
|
|
|
if(leaveUser.getServingState().equals(0)){ |
|
|
|
Assert.throwEx("员工已离职"); |
|
|
|
} |
|
|
|
LambdaQueryWrapper<SysUserLeave> leaveLqw = new LambdaQueryWrapper<>(); |
|
|
|
leaveLqw.eq(SysUserLeave::getUserId,param.getUserId()); |
|
|
|
leaveLqw.eq(SysUserLeave::getLeaveStatus,0); |
|
|
|
SysUserLeave userLeaveObj = sysUserLeaveService.getOne(leaveLqw); |
|
|
|
if(userLeaveObj==null){ |
|
|
|
userLeaveObj = new SysUserLeave(); |
|
|
|
} |
|
|
|
if(StringUtils.hasText(param.getCusUserId())){ |
|
|
|
SysUser cusUser = this.getById(param.getCusUserId()); |
|
|
|
userLeaveObj.setCusUserId(cusUser.getId()); |
|
|
|
userLeaveObj.setCusUserCode(cusUser.getCode()); |
|
|
|
userLeaveObj.setCusUserName(cusUser.getName()); |
|
|
|
} |
|
|
|
if(StringUtils.hasText(param.getFlowUserId())){ |
|
|
|
SysUser flowUser = this.getById(param.getFlowUserId()); |
|
|
|
userLeaveObj.setFlowUserId(flowUser.getId()); |
|
|
|
userLeaveObj.setFlowUserName(flowUser.getName()); |
|
|
|
userLeaveObj.setFlowUserCode(flowUser.getCode()); |
|
|
|
} |
|
|
|
if(StringUtils.hasText(param.getRoleUserId())){ |
|
|
|
SysUser roleUser = this.getById(param.getRoleUserId()); |
|
|
|
userLeaveObj.setRoleUserId(roleUser.getId()); |
|
|
|
userLeaveObj.setRoleUserCode(roleUser.getCode()); |
|
|
|
userLeaveObj.setRoleUserName(roleUser.getName()); |
|
|
|
} |
|
|
|
userLeaveObj.setLeaveReason(param.getLeaveReason()); |
|
|
|
sysUserLeaveService.save(userLeaveObj); |
|
|
|
//更新员工信息
|
|
|
|
SysUser user = new SysUser(); |
|
|
|
user.setId(leaveUser.getId()); |
|
|
|
user.setServingState(2); |
|
|
|
this.updateById(user); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void leaveAction(LocalDate date) { |
|
|
|
//todo 更新离职业务
|
|
|
|
SysUser user = new SysUser(); |
|
|
|
user.setId(user.getId()); |
|
|
|
user.setServingState(0); |
|
|
|
user.setLoginEnable(0); |
|
|
|
this.updateById(user); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void cancelLeave(String userId) { |
|
|
|
SysUser sysUser = this.getById(userId); |
|
|
|
if(!sysUser.getServingState().equals(2)){ |
|
|
|
Assert.throwEx("非准备离职状态,取消失败"); |
|
|
|
} |
|
|
|
SysUser user = new SysUser(); |
|
|
|
user.setId(user.getId()); |
|
|
|
user.setServingState(1); |
|
|
|
this.updateById(user); |
|
|
|
LambdaQueryWrapper<SysUserLeave> leaveLqw = new LambdaQueryWrapper<>(); |
|
|
|
leaveLqw.eq(SysUserLeave::getUserId,userId); |
|
|
|
leaveLqw.eq(SysUserLeave::getLeaveStatus,0); |
|
|
|
SysUserLeave userLeave = new SysUserLeave(); |
|
|
|
userLeave.setLeaveStatus(2); |
|
|
|
userLeave.setLeaveCancelDate(LocalDateTime.now()); |
|
|
|
sysUserLeaveService.update(userLeave,leaveLqw); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void reEntry(String userId) { |
|
|
|
SysUser sysUser = this.getById(userId); |
|
|
|
if(!sysUser.getServingState().equals(0)){ |
|
|
|
Assert.throwEx("非离职状态,操作失败"); |
|
|
|
} |
|
|
|
SysUser user = new SysUser(); |
|
|
|
user.setId(userId); |
|
|
|
user.setServingDate(LocalDate.now()); |
|
|
|
user.setServingState(1); |
|
|
|
user.setLoginEnable(1); |
|
|
|
this.updateById(user); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|