From 659015039683e9d9b24bf19b39e4eae0c55f645c Mon Sep 17 00:00:00 2001 From: Yen Date: Mon, 13 Feb 2023 16:22:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7=E7=A6=BB?= =?UTF-8?q?=E8=81=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qs/serve/common/model/enums/BizType.java | 2 + .../seeyon/entity/XltPaymentRecord.java | 2 +- .../sys/controller/SysAttachController.java | 6 +- .../sys/controller/SysUserController.java | 79 ++++++----- .../serve/modules/sys/entity/SysAttach.java | 2 + .../qs/serve/modules/sys/entity/SysUser.java | 18 ++- .../modules/sys/entity/SysUserLeave.java | 132 ++++++++++++++++++ .../modules/sys/entity/bo/SysUserLeaveBo.java | 51 +++++++ .../sys/entity/dto/SysUserSalesTreeVo.java | 13 +- .../sys/mapper/SysUserLeaveMapper.java | 14 ++ .../sys/service/SysUserLeaveService.java | 17 +++ .../modules/sys/service/SysUserService.java | 28 +++- .../service/impl/SysUserLeaveServiceImpl.java | 29 ++++ .../sys/service/impl/SysUserServiceImpl.java | 98 ++++++++++++- 14 files changed, 449 insertions(+), 42 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/sys/entity/SysUserLeave.java create mode 100644 src/main/java/com/qs/serve/modules/sys/entity/bo/SysUserLeaveBo.java create mode 100644 src/main/java/com/qs/serve/modules/sys/mapper/SysUserLeaveMapper.java create mode 100644 src/main/java/com/qs/serve/modules/sys/service/SysUserLeaveService.java create mode 100644 src/main/java/com/qs/serve/modules/sys/service/impl/SysUserLeaveServiceImpl.java diff --git a/src/main/java/com/qs/serve/common/model/enums/BizType.java b/src/main/java/com/qs/serve/common/model/enums/BizType.java index 278c6358..dae22d8a 100644 --- a/src/main/java/com/qs/serve/common/model/enums/BizType.java +++ b/src/main/java/com/qs/serve/common/model/enums/BizType.java @@ -43,6 +43,8 @@ public enum BizType { QUERY("查询"), + LEAVE("离职"), + RESET("重置"); String value; diff --git a/src/main/java/com/qs/serve/modules/seeyon/entity/XltPaymentRecord.java b/src/main/java/com/qs/serve/modules/seeyon/entity/XltPaymentRecord.java index f05028c2..db8f8a25 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/entity/XltPaymentRecord.java +++ b/src/main/java/com/qs/serve/modules/seeyon/entity/XltPaymentRecord.java @@ -86,7 +86,7 @@ public class XltPaymentRecord implements Serializable { @Length(max = 50,message = "发票编号长度不能超过50字") private String cSBVCode; - /** 发货单 */ + /** */ @Length(max = 1000,message = "发货单长度不能超过1000字") private String cDLCode; diff --git a/src/main/java/com/qs/serve/modules/sys/controller/SysAttachController.java b/src/main/java/com/qs/serve/modules/sys/controller/SysAttachController.java index 371c2a21..10eefc84 100644 --- a/src/main/java/com/qs/serve/modules/sys/controller/SysAttachController.java +++ b/src/main/java/com/qs/serve/modules/sys/controller/SysAttachController.java @@ -68,15 +68,17 @@ public class SysAttachController { FileUtil.createTempFile(new File(uploadPath+prefix)); String newName = IdUtil.timeStampId(); String fileType = mimeType.toLowerCase(Locale.ROOT); - File dest = new File(uploadPath + prefix + newName + fileType); + String relativeName = prefix + newName + fileType; + File dest = new File(uploadPath + relativeName); Long size = file.getSize(); file.transferTo(dest); - String path = uploadProperties.getProxyUrl() + prefix + newName + fileType; + String path = uploadProperties.getProxyUrl() + relativeName; SysAttach attach = new SysAttach(); attach.setName(fileOrgName); attach.setPath(path); attach.setSize(size); attach.setFileType(fileType); + attach.setRelativePath(relativeName); sysAttachService.save(attach); return R.ok(attach); } catch (IOException e) { diff --git a/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java b/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java index 80017da6..eeea2515 100644 --- a/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java +++ b/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java @@ -11,10 +11,7 @@ import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.util.*; import com.qs.serve.modules.sys.entity.*; -import com.qs.serve.modules.sys.entity.bo.SysUserBatchBo; -import com.qs.serve.modules.sys.entity.bo.SysUserBo; -import com.qs.serve.modules.sys.entity.bo.SysUserParentParam; -import com.qs.serve.modules.sys.entity.bo.SysUserSalesParam; +import com.qs.serve.modules.sys.entity.bo.*; import com.qs.serve.modules.sys.entity.dto.*; import com.qs.serve.modules.sys.service.*; import com.qs.serve.modules.wx.entity.WxUser; @@ -133,41 +130,13 @@ public class SysUserController { SysUser sysUser = sysUserService.getById(loginUser.getUserId()); sysUser.setAuthorIds(loginUser.getAuthorIds()); sysUser.setAuthorList(loginUser.getAuthorList()); - sysUserService.relateInfo(sysUser); + sysUserService.relateInfo(sysUser,true); sysUser.setPassword(null); return R.ok(sysUser); } - - //获取检测工号 -// @LimitSubmit(message = "请勿频繁操作!!") -// @GetMapping("/getUserCode") -// @PreAuthorize("hasRole('sys:user:query')") -// public R getUserCode(){ -// LocalDateTime localDateTime = LocalDateTime.now(); -// String timeKey = localDateTime.getYear() + String.format("%02d",localDateTime.getMonthValue()); -// String key = RedisCacheKeys.SYS_USER_CODE_KEY + timeKey; -// Integer val = redisService.getInteger(key); -// if(val==null){ -// val = 1; -// }else { -// val +=1; -// } -// redisService.set(key,val); -// return R.ok("A"+timeKey+val,R.SUCCESS_TIPS); -// } - - - //检测工号是否已被使用 -// @GetMapping("/checkCode") -// @PreAuthorize("hasRole('sys:user:query')") -// public R checkCode(String code){ -// return R.ok(sysUserMapper.checkCode(code)>0L); -// } - - /** * 翻页查询 * @param param @@ -185,7 +154,7 @@ public class SysUserController { PageUtil.startPage(); List list = sysUserService.listUser(param); //前端页面展示参数 - list.forEach(a->sysUserService.relateInfo(a)); + list.forEach(a->sysUserService.relateInfo(a,false)); return R.byPageHelperList(list); } @@ -227,7 +196,7 @@ public class SysUserController { return R.ok(); } sysUser.setPassword(null); - sysUserService.relateInfo(sysUser); + sysUserService.relateInfo(sysUser,true); List wxUserList = wxUserService.getBySysUserId(sysUser.getId()); sysUser.setWxUserInfoList(wxUserList); return R.ok(sysUser); @@ -455,5 +424,45 @@ public class SysUserController { return R.ok(); } + /** + * 人员离职(更新即将离职信息) + * @param userLeaveParam + * @return + */ + @SysLog(title = "人员",desc = "离职调整",biz = BizType.LEAVE) + @PostMapping("/leave") + //@PreAuthorize("hasRole('sys:user:leave')") + public R leave(@RequestBody @Valid SysUserLeaveBo userLeaveParam){ + sysUserService.leave(userLeaveParam); + return R.ok(); + } + + + /** + * 取消离职 + * @param uid + * @return + */ + @SysLog(title = "人员",desc = "取消离职",biz = BizType.RESET) + @PostMapping("/cancelLeave/{uid}") + //@PreAuthorize("hasRole('sys:user:leave')") + public R cancelLeave(@PathVariable("uid") String uid){ + sysUserService.cancelLeave(uid); + return R.ok(); + } + + /** + * 重新入职 + * @param uid + * @return + */ + @SysLog(title = "人员",desc = "重新入职",biz = BizType.RESET) + @PostMapping("/reEntry/{uid}") + //@PreAuthorize("hasRole('sys:user:leave')") + public R reEntry(@PathVariable("uid") String uid){ + sysUserService.reEntry(uid); + return R.ok(); + } + } diff --git a/src/main/java/com/qs/serve/modules/sys/entity/SysAttach.java b/src/main/java/com/qs/serve/modules/sys/entity/SysAttach.java index 3b3a4f89..dce35698 100644 --- a/src/main/java/com/qs/serve/modules/sys/entity/SysAttach.java +++ b/src/main/java/com/qs/serve/modules/sys/entity/SysAttach.java @@ -37,6 +37,8 @@ public class SysAttach implements Serializable { /** 文件类型 */ private String fileType; + private String relativePath; + /** 创建时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") diff --git a/src/main/java/com/qs/serve/modules/sys/entity/SysUser.java b/src/main/java/com/qs/serve/modules/sys/entity/SysUser.java index ce7a0cf4..b2818667 100644 --- a/src/main/java/com/qs/serve/modules/sys/entity/SysUser.java +++ b/src/main/java/com/qs/serve/modules/sys/entity/SysUser.java @@ -74,9 +74,19 @@ public class SysUser implements Serializable { /** 系统登录权限【0->停用;1->启用】 */ private Integer loginEnable; - /** 在职状态【0->离职;1->在职】 */ + /** 在职状态【0->离职;1->在职;2->准备离职】 */ private Integer servingState; + /** 入职/复职日期 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate servingDate; + + /** 离职或上一次离职的日期 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate servingLeaveDate; + /** 是否销售人员 */ private Integer salesFlag; @@ -173,6 +183,12 @@ public class SysUser implements Serializable { @TableField(exist = false) private String parentId; + /** + * 离职信息 + */ + @TableField(exist = false) + private Object leaveInfo; + /** * 返回前端,过滤敏感信息 * @return diff --git a/src/main/java/com/qs/serve/modules/sys/entity/SysUserLeave.java b/src/main/java/com/qs/serve/modules/sys/entity/SysUserLeave.java new file mode 100644 index 00000000..03d030dd --- /dev/null +++ b/src/main/java/com/qs/serve/modules/sys/entity/SysUserLeave.java @@ -0,0 +1,132 @@ +package com.qs.serve.modules.sys.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 用户离职 实体类 + * @author YenHex + * @since 2023-02-13 + */ +@Data +@TableName("sys_user_leave") +public class SysUserLeave implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 离职员工id */ + @NotBlank(message = "离职员工id不能为空") + @Length(max = 32,message = "离职员工id长度不能超过32字") + private String userId; + + /** 离职员工 */ + @Length(max = 32,message = "离职员工长度不能超过32字") + private String userName; + + /** 离职员工工号 */ + @Length(max = 32,message = "离职员工工号长度不能超过32字") + private String userCode; + + /** 状态:0-待处理;1-已处理;2-取消离职 */ + @NotNull(message = "状态:0-待处理;1-已处理;2-取消离职不能为空") + private Integer leaveStatus; + + /** 离职原因 */ + @Length(max = 255,message = "离职原因长度不能超过255字") + private String leaveReason; + + /** 离职取消日期 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime leaveCancelDate; + + /** 离职生效日期 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate leaveEffectDate; + + /** 工作交接人id */ + @Length(max = 32,message = "工作交接人id长度不能超过32字") + private String flowUserId; + + /** 工作交接人 */ + @Length(max = 32,message = "工作交接人长度不能超过32字") + private String flowUserName; + + /** 工作交接人工号 */ + @Length(max = 32,message = "工作交接人工号长度不能超过32字") + private String flowUserCode; + + /** 客户交接人id */ + @Length(max = 32,message = "客户交接人id长度不能超过32字") + private String cusUserId; + + /** 客户交接人 */ + @Length(max = 32,message = "客户交接人长度不能超过32字") + private String cusUserName; + + /** 客户交接人工号 */ + @Length(max = 32,message = "客户交接人工号长度不能超过32字") + private String cusUserCode; + + /** 角色交接人id */ + @Length(max = 32,message = "角色交接人id长度不能超过32字") + private String roleUserId; + + /** 角色交接人 */ + @Length(max = 32,message = "角色交接人长度不能超过32字") + private String roleUserName; + + /** 角色交接人工号 */ + @Length(max = 32,message = "角色交接人工号长度不能超过32字") + private String roleUserCode; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 删除标识 */ + @JsonIgnore + @JsonProperty + private Boolean delFlag; + + /** 系统id */ + @JsonIgnore + @JsonProperty + private String tenantId; + +} + diff --git a/src/main/java/com/qs/serve/modules/sys/entity/bo/SysUserLeaveBo.java b/src/main/java/com/qs/serve/modules/sys/entity/bo/SysUserLeaveBo.java new file mode 100644 index 00000000..1aec384d --- /dev/null +++ b/src/main/java/com/qs/serve/modules/sys/entity/bo/SysUserLeaveBo.java @@ -0,0 +1,51 @@ +package com.qs.serve.modules.sys.entity.bo; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 用户离职 Bo + * @author YenHex + * @since 2023-02-13 + */ +@Data +public class SysUserLeaveBo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + private Long id; + + /** 离职员工id */ + private String userId; + + /** 离职原因 */ + private String leaveReason; + + /** 离职生效日期 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate leaveEffectDate; + + /** 工作交接人id */ + private String flowUserId; + + /** 客户交接人id */ + private String cusUserId; + + /** 角色交接人id */ + private String roleUserId; + +} + diff --git a/src/main/java/com/qs/serve/modules/sys/entity/dto/SysUserSalesTreeVo.java b/src/main/java/com/qs/serve/modules/sys/entity/dto/SysUserSalesTreeVo.java index 5712d55e..94dca4a9 100644 --- a/src/main/java/com/qs/serve/modules/sys/entity/dto/SysUserSalesTreeVo.java +++ b/src/main/java/com/qs/serve/modules/sys/entity/dto/SysUserSalesTreeVo.java @@ -10,6 +10,7 @@ import lombok.Data; import org.hibernate.validator.constraints.Length; import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDate; import java.time.LocalDateTime; /** @@ -54,10 +55,20 @@ public class SysUserSalesTreeVo extends TreeNode { @TableField(exist = false) private Integer loginEnable; - /** 在职状态【0->离职;1->在职】 */ + /** 在职状态【0->离职;1->在职;2->准备离职】 */ @TableField(exist = false) private Integer servingState; + /** 入职/复职日期 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate servingDate; + + /** 离职或上一次离职的日期 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate servingLeaveDate; + /** 是否销售人员 */ @TableField(exist = false) private Integer salesFlag; diff --git a/src/main/java/com/qs/serve/modules/sys/mapper/SysUserLeaveMapper.java b/src/main/java/com/qs/serve/modules/sys/mapper/SysUserLeaveMapper.java new file mode 100644 index 00000000..1ee83dab --- /dev/null +++ b/src/main/java/com/qs/serve/modules/sys/mapper/SysUserLeaveMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.sys.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.sys.entity.SysUserLeave; + +/** + * 用户离职 Mapper + * @author YenHex + * @date 2023-02-13 + */ +public interface SysUserLeaveMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/sys/service/SysUserLeaveService.java b/src/main/java/com/qs/serve/modules/sys/service/SysUserLeaveService.java new file mode 100644 index 00000000..cec9e02f --- /dev/null +++ b/src/main/java/com/qs/serve/modules/sys/service/SysUserLeaveService.java @@ -0,0 +1,17 @@ +package com.qs.serve.modules.sys.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.entity.SysUserLeave; + +/** + * 用户离职 服务接口 + * @author YenHex + * @date 2023-02-13 + */ +public interface SysUserLeaveService extends IService { + + SysUserLeave getOneByUserId(String userId); + +} + diff --git a/src/main/java/com/qs/serve/modules/sys/service/SysUserService.java b/src/main/java/com/qs/serve/modules/sys/service/SysUserService.java index 20524d3b..e351d39f 100644 --- a/src/main/java/com/qs/serve/modules/sys/service/SysUserService.java +++ b/src/main/java/com/qs/serve/modules/sys/service/SysUserService.java @@ -3,7 +3,9 @@ package com.qs.serve.modules.sys.service; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.common.framework.security.model.LoginUser; import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.entity.bo.SysUserLeaveBo; +import java.time.LocalDate; import java.util.List; /** @@ -34,7 +36,7 @@ public interface SysUserService extends IService { */ List listUser(SysUser sysUser); - void relateInfo(SysUser sysUser); + void relateInfo(SysUser sysUser,boolean loadLeave); LoginUser buildLoginUser(SysUser sysUser); @@ -42,5 +44,29 @@ public interface SysUserService extends IService { SysUser listByOaMemberId(String memberId); + /** + * 用户离职 + * @param userLeaveParam + */ + void leave(SysUserLeaveBo userLeaveParam); + + /** + * 离职执行函数 + * @param date 执行日期 + */ + void leaveAction(LocalDate date); + + /** + * 取消离职 + * @param userId + */ + void cancelLeave(String userId); + + /** + * 重新入职 + * @param userId + */ + void reEntry(String userId); + } diff --git a/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserLeaveServiceImpl.java b/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserLeaveServiceImpl.java new file mode 100644 index 00000000..aae85d2e --- /dev/null +++ b/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserLeaveServiceImpl.java @@ -0,0 +1,29 @@ +package com.qs.serve.modules.sys.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.sys.entity.SysUserLeave; +import com.qs.serve.modules.sys.service.SysUserLeaveService; +import com.qs.serve.modules.sys.mapper.SysUserLeaveMapper; + +/** + * 用户离职 服务实现类 + * @author YenHex + * @since 2023-02-13 + */ +@Slf4j +@Service +@AllArgsConstructor +public class SysUserLeaveServiceImpl extends ServiceImpl implements SysUserLeaveService { + + @Override + public SysUserLeave getOneByUserId(String userId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(SysUserLeave::getUserId,userId); + return getOne(lqw,false); + } +} + diff --git a/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserServiceImpl.java b/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserServiceImpl.java index 6eac2f7b..631b64f3 100644 --- a/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserServiceImpl.java @@ -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 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 impl } @Override - public void relateInfo(SysUser sysUser) { + public void relateInfo(SysUser sysUser,boolean loadLeave) { if(sysUser==null){return;} sysUser.setPassword(null); List userRoles = sysUserRoleService.listByUid(sysUser.getId()); @@ -92,6 +96,10 @@ public class SysUserServiceImpl extends ServiceImpl 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 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 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 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); + } + }