feat(user): 添加用户变更记录中的姓名字段并实现跨企业变更功能

dev_human_push
zhaokai 2026-06-23 16:38:12 +08:00
parent d57c5e9d1c
commit a21668bde4
15 changed files with 200 additions and 10 deletions

View File

@ -156,6 +156,9 @@ public class ZcloudUserFacadeImpl implements ZcloudUserFacade {
if (userDO != null && !StringUtils.hasText(userUpdateCmd.getUserId())) { if (userDO != null && !StringUtils.hasText(userUpdateCmd.getUserId())) {
userUpdateCmd.setUserId(userDO.getUserId()); userUpdateCmd.setUserId(userDO.getUserId());
} }
if (userDO != null && !StringUtils.hasText(userUpdateCmd.getName())) {
userUpdateCmd.setName(userDO.getName());
}
if (userDO != null && !StringUtils.hasText(userUpdateCmd.getPhone())) { if (userDO != null && !StringUtils.hasText(userUpdateCmd.getPhone())) {
userUpdateCmd.setPhone(userDO.getPhone()); userUpdateCmd.setPhone(userDO.getPhone());
} }

View File

@ -76,6 +76,11 @@ public class UserController {
public PageResponse<UserCO> pageByNopermission(@RequestBody UserPageQry qry) { public PageResponse<UserCO> pageByNopermission(@RequestBody UserPageQry qry) {
return userService.pageByNopermission(qry); return userService.pageByNopermission(qry);
} }
@ApiOperation("其他页面的用户分页,不需要权限控制,查询所有用户包括已离职和删除用户")
@PostMapping("/pageByNopermissionAll")
public PageResponse<UserCO> pageByNopermissionAll(@RequestBody UserPageQry qry) {
return userService.pageByNopermissionAll(qry);
}
@ApiOperation("所有数据") @ApiOperation("所有数据")
@GetMapping("/listAll") @GetMapping("/listAll")

View File

@ -380,6 +380,7 @@ public class HumanUserUpdateExe {
userChangeRecordE.setDepartmentNameBefore(resolveDepartmentName(oldUserDO)); userChangeRecordE.setDepartmentNameBefore(resolveDepartmentName(oldUserDO));
userChangeRecordE.setPostIdBefore(oldUserDO.getPostId()); userChangeRecordE.setPostIdBefore(oldUserDO.getPostId());
userChangeRecordE.setPostNameBefore(oldUserDO.getPostName()); userChangeRecordE.setPostNameBefore(oldUserDO.getPostName());
userChangeRecordE.setUserNameBefore(oldUserDO.getName());
userChangeRecordE.setUserStatusBefore(oldUserDO.getEmploymentFlag()); userChangeRecordE.setUserStatusBefore(oldUserDO.getEmploymentFlag());
userChangeRecordE.setCorpinfoIdAfter(userUpdateCmd.getCorpinfoId()); userChangeRecordE.setCorpinfoIdAfter(userUpdateCmd.getCorpinfoId());
@ -388,6 +389,7 @@ public class HumanUserUpdateExe {
userChangeRecordE.setDepartmentNameAfter(resolveChangedDepartmentName(userUpdateCmd, oldUserDO)); userChangeRecordE.setDepartmentNameAfter(resolveChangedDepartmentName(userUpdateCmd, oldUserDO));
userChangeRecordE.setPostIdAfter(userUpdateCmd.getPostId()); userChangeRecordE.setPostIdAfter(userUpdateCmd.getPostId());
userChangeRecordE.setPostNameAfter(resolveChangedPostName(userUpdateCmd, oldUserDO)); userChangeRecordE.setPostNameAfter(resolveChangedPostName(userUpdateCmd, oldUserDO));
userChangeRecordE.setUserNameAfter(resolveChangedUserName(userUpdateCmd, oldUserDO));
userChangeRecordE.setUserStatusAfter(UserEmploymentFlagEnum.ON.getCode()); userChangeRecordE.setUserStatusAfter(UserEmploymentFlagEnum.ON.getCode());
userChangeRecordE.setStatus(UserChangeRecordStatusEnum.PENDING.getCode()); userChangeRecordE.setStatus(UserChangeRecordStatusEnum.PENDING.getCode());
return userChangeRecordE; return userChangeRecordE;
@ -412,6 +414,8 @@ public class HumanUserUpdateExe {
userChangeRecordENew.setId(null); userChangeRecordENew.setId(null);
userChangeRecordENew.setUserChangeRecordId(null); userChangeRecordENew.setUserChangeRecordId(null);
userChangeRecordENew.setUserId(userId); userChangeRecordENew.setUserId(userId);
userChangeRecordENew.setUserNameBefore(userChangeRecordE.getUserNameBefore());
userChangeRecordENew.setUserNameAfter(userChangeRecordE.getUserNameAfter());
userChangeRecordENew.setStatus(UserChangeRecordStatusEnum.APPROVED.getCode()); userChangeRecordENew.setStatus(UserChangeRecordStatusEnum.APPROVED.getCode());
userChangeRecordGateway.add(userChangeRecordENew); userChangeRecordGateway.add(userChangeRecordENew);
log.info("跨企业变更新企业入职完成原用户id:{}, 新用户id:{}, 新企业id:{}", log.info("跨企业变更新企业入职完成原用户id:{}, 新用户id:{}, 新企业id:{}",
@ -419,6 +423,22 @@ public class HumanUserUpdateExe {
return userId; return userId;
} }
/**
*
*
* 沿
*
* @param userUpdateCmd
* @param oldUserDO
* @return
*/
private String resolveChangedUserName(UserUpdateCmd userUpdateCmd, UserDO oldUserDO) {
if (StringUtils.hasText(userUpdateCmd.getName())) {
return userUpdateCmd.getName();
}
return oldUserDO == null ? null : oldUserDO.getName();
}
/** /**
* 使 after * 使 after
* *
@ -437,7 +457,9 @@ public class HumanUserUpdateExe {
userAddCmd.setPostName(userChangeRecordE.getPostNameAfter()); userAddCmd.setPostName(userChangeRecordE.getPostNameAfter());
userAddCmd.setUsername(oldUserDO.getUsername()); userAddCmd.setUsername(oldUserDO.getUsername());
userAddCmd.setPhone(oldUserDO.getPhone()); userAddCmd.setPhone(oldUserDO.getPhone());
userAddCmd.setName(oldUserDO.getName()); userAddCmd.setName(StringUtils.hasText(userChangeRecordE.getUserNameAfter())
? userChangeRecordE.getUserNameAfter()
: oldUserDO.getName());
userAddCmd.setUserId(oldUserDO.getUserId()); userAddCmd.setUserId(oldUserDO.getUserId());
return userAddCmd; return userAddCmd;
} }

View File

@ -629,7 +629,9 @@ public class UserChangeRecordWorkChangeExe {
userAddCmd.setUserId(oldUserDO.getUserId()); userAddCmd.setUserId(oldUserDO.getUserId());
userAddCmd.setUsername(oldUserDO.getUsername()); userAddCmd.setUsername(oldUserDO.getUsername());
userAddCmd.setPhone(oldUserDO.getPhone()); userAddCmd.setPhone(oldUserDO.getPhone());
userAddCmd.setName(oldUserDO.getName()); userAddCmd.setName(StringUtils.hasText(userChangeRecordDO.getUserNameAfter())
? userChangeRecordDO.getUserNameAfter()
: oldUserDO.getName());
userAddCmd.setCorpinfoId(userChangeRecordDO.getCorpinfoIdAfter()); userAddCmd.setCorpinfoId(userChangeRecordDO.getCorpinfoIdAfter());
userAddCmd.setCorpinfoName(userChangeRecordDO.getCorpinfoNameAfter()); userAddCmd.setCorpinfoName(userChangeRecordDO.getCorpinfoNameAfter());
userAddCmd.setDepartmentId(userChangeRecordDO.getDepartmentIdAfter()); userAddCmd.setDepartmentId(userChangeRecordDO.getDepartmentIdAfter());

View File

@ -370,5 +370,15 @@ public class UserQueryExe {
public List<UserImgDO> listBase64ByUrl(Map<String, Object> map){ public List<UserImgDO> listBase64ByUrl(Map<String, Object> map){
return userRepository.listBase64ByUrl(map); return userRepository.listBase64ByUrl(map);
} }
public PageResponse<UserCO> pageByNopermissionAll(UserPageQry userPageQry) {
Map<String, Object> params = PageQueryHelper.toHashMap(userPageQry);
UserE userE = new UserE();
userE.dataProcessingRights(AuthContext.getTenantId(), params);
PageResponse<UserDO> pageResponse = userRepository.pageByNopermissionAll(params);
List<UserCO> examCenterCOS = userCoConvertor.converDOsToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
} }

View File

@ -273,5 +273,10 @@ public class UserServiceImpl implements UserServiceI {
public SingleResponse<Long> updateHumanUser(UserUpdateCmd userUpdateCmd) { public SingleResponse<Long> updateHumanUser(UserUpdateCmd userUpdateCmd) {
return humanUserUpdateExe.updateHumanUser(userUpdateCmd); return humanUserUpdateExe.updateHumanUser(userUpdateCmd);
} }
@Override
public PageResponse<UserCO> pageByNopermissionAll(UserPageQry qry) {
return userQueryExe.pageByNopermissionAll(qry);
}
} }

View File

@ -106,5 +106,7 @@ public interface UserServiceI {
SingleResponse<Long> addHumanUser(UserAddCmd cmd); SingleResponse<Long> addHumanUser(UserAddCmd cmd);
SingleResponse<Long> updateHumanUser(UserUpdateCmd userUpdateCmd); SingleResponse<Long> updateHumanUser(UserUpdateCmd userUpdateCmd);
PageResponse<UserCO> pageByNopermissionAll(UserPageQry qry);
} }

View File

@ -53,6 +53,8 @@ public class UserChangeRecordCO extends ClientObject {
//变更前负责岗位名称 //变更前负责岗位名称
@ApiModelProperty(value = "变更前负责岗位名称") @ApiModelProperty(value = "变更前负责岗位名称")
private String postNameBefore; private String postNameBefore;
@ApiModelProperty(value = "变更前用户名称")
private String userNameBefore;
//变更前状态 //变更前状态
@ApiModelProperty(value = "变更前状态") @ApiModelProperty(value = "变更前状态")
private Integer userStatusBefore; private Integer userStatusBefore;
@ -74,6 +76,8 @@ public class UserChangeRecordCO extends ClientObject {
//变更后负责岗位名称 //变更后负责岗位名称
@ApiModelProperty(value = "变更后负责岗位名称") @ApiModelProperty(value = "变更后负责岗位名称")
private String postNameAfter; private String postNameAfter;
@ApiModelProperty(value = "变更后用户名称")
private String userNameAfter;
//变更后状态 //变更后状态
@ApiModelProperty(value = "变更后状态") @ApiModelProperty(value = "变更后状态")
private Integer userStatusAfter; private Integer userStatusAfter;

View File

@ -3,13 +3,13 @@ package com.zcloud.basic.info.domain.enums;
import lombok.Getter; import lombok.Getter;
/** /**
* 0-, 1-, 2-, 3-, 4-, 5-, 6-退, 7-, 8-, 11-, 10-', * 0-1-2-3-4-5-
* * 6-退7-8-11-10-
*/ */
@Getter @Getter
public enum UserEmploymentFlagEnum { public enum UserEmploymentFlagEnum {
/** /**
* *
*/ */
RESIGNATION(0, "离职"), RESIGNATION(0, "离职"),
ON(1, "在职"), ON(1, "在职"),
@ -21,8 +21,8 @@ public enum UserEmploymentFlagEnum {
LABOR_DISPATCH(7, "劳务派遣"), LABOR_DISPATCH(7, "劳务派遣"),
END_OF_LABOR_DISPATCH(8, "劳务派遣结束"), END_OF_LABOR_DISPATCH(8, "劳务派遣结束"),
ENTRY_AUDIT(11, "入职待审核"), ENTRY_AUDIT(11, "入职待审核"),
RESIGNATION_AUDIT(10, "离职待审核"), RESIGNATION_AUDIT(10, "离职待审核");
;
private final Integer code; private final Integer code;
private final String desc; private final String desc;
@ -30,7 +30,13 @@ public enum UserEmploymentFlagEnum {
this.code = code; this.code = code;
this.desc = desc; this.desc = desc;
} }
//根据code获取枚举值
/**
*
*
* @param code
* @return
*/
public static UserEmploymentFlagEnum getByCode(Integer code) { public static UserEmploymentFlagEnum getByCode(Integer code) {
for (UserEmploymentFlagEnum item : values()) { for (UserEmploymentFlagEnum item : values()) {
if (item.getCode().equals(code)) { if (item.getCode().equals(code)) {
@ -40,7 +46,12 @@ public enum UserEmploymentFlagEnum {
return null; return null;
} }
//根据枚举获取code /**
*
*
* @param desc
* @return
*/
public static UserEmploymentFlagEnum getByDesc(String desc) { public static UserEmploymentFlagEnum getByDesc(String desc) {
for (UserEmploymentFlagEnum item : values()) { for (UserEmploymentFlagEnum item : values()) {
if (item.getDesc().equals(desc)) { if (item.getDesc().equals(desc)) {

View File

@ -38,6 +38,8 @@ public class UserChangeRecordE extends BaseE {
private Long postIdBefore; private Long postIdBefore;
//变更前负责岗位名称 //变更前负责岗位名称
private String postNameBefore; private String postNameBefore;
//变更前用户名
private String userNameBefore;
//变更前状态 //变更前状态
private Integer userStatusBefore; private Integer userStatusBefore;
//变更后企业id //变更后企业id
@ -52,6 +54,8 @@ public class UserChangeRecordE extends BaseE {
private Long postIdAfter; private Long postIdAfter;
//变更后负责岗位名称 //变更后负责岗位名称
private String postNameAfter; private String postNameAfter;
//变更后用户名
private String userNameAfter;
//变更后状态 //变更后状态
private Integer userStatusAfter; private Integer userStatusAfter;
// //
@ -66,6 +70,7 @@ public class UserChangeRecordE extends BaseE {
this.setDepartmentNameAfter(departmentName); this.setDepartmentNameAfter(departmentName);
this.setPostIdAfter(userE.getPostId()); this.setPostIdAfter(userE.getPostId());
this.setPostNameAfter(userE.getPostName()); this.setPostNameAfter(userE.getPostName());
this.setUserNameAfter(userE.getName());
this.setUserStatusAfter(UserEmploymentFlagEnum.ON.getCode()); this.setUserStatusAfter(UserEmploymentFlagEnum.ON.getCode());
this.setStatus(UserChangeRecordStatusEnum.APPROVED.getCode()); this.setStatus(UserChangeRecordStatusEnum.APPROVED.getCode());
} }
@ -79,6 +84,7 @@ public class UserChangeRecordE extends BaseE {
this.setDepartmentNameAfter(departmentName); this.setDepartmentNameAfter(departmentName);
this.setPostIdAfter(userE.getPostId()); this.setPostIdAfter(userE.getPostId());
this.setPostNameAfter(userE.getPostName()); this.setPostNameAfter(userE.getPostName());
this.setUserNameAfter(userE.getName());
this.setUserStatusAfter(UserEmploymentFlagEnum.ON.getCode()); this.setUserStatusAfter(UserEmploymentFlagEnum.ON.getCode());
this.setStatus(UserChangeRecordStatusEnum.PENDING.getCode()); this.setStatus(UserChangeRecordStatusEnum.PENDING.getCode());
} }
@ -122,6 +128,7 @@ public class UserChangeRecordE extends BaseE {
this.setDepartmentNameBefore(oldUserE.getDepartmentName()); this.setDepartmentNameBefore(oldUserE.getDepartmentName());
this.setPostIdBefore(oldUserE.getPostId()); this.setPostIdBefore(oldUserE.getPostId());
this.setPostNameBefore(oldUserE.getPostName()); this.setPostNameBefore(oldUserE.getPostName());
this.setUserNameBefore(oldUserE.getName());
this.setUserStatusBefore(oldUserE.getEmploymentFlag()); this.setUserStatusBefore(oldUserE.getEmploymentFlag());
this.setCorpinfoIdAfter(userE.getCorpinfoId()); this.setCorpinfoIdAfter(userE.getCorpinfoId());
this.setCorpinfoNameAfter(corpName); this.setCorpinfoNameAfter(corpName);
@ -129,6 +136,7 @@ public class UserChangeRecordE extends BaseE {
this.setDepartmentNameAfter(name); this.setDepartmentNameAfter(name);
this.setPostIdAfter(userE.getPostId()); this.setPostIdAfter(userE.getPostId());
this.setPostNameAfter(userE.getPostName()); this.setPostNameAfter(userE.getPostName());
this.setUserNameAfter(userE.getName());
this.setUserStatusAfter(oldUserE.getEmploymentFlag()); this.setUserStatusAfter(oldUserE.getEmploymentFlag());
this.setStatus(UserChangeRecordStatusEnum.APPROVED.getCode()); this.setStatus(UserChangeRecordStatusEnum.APPROVED.getCode());
} }
@ -206,4 +214,3 @@ public class UserChangeRecordE extends BaseE {
} }
} }

View File

@ -50,6 +50,9 @@ public class UserChangeRecordDO extends BaseDO {
//变更前负责岗位名称 //变更前负责岗位名称
@ApiModelProperty(value = "变更前负责岗位名称") @ApiModelProperty(value = "变更前负责岗位名称")
private String postNameBefore; private String postNameBefore;
//变更前用户名称
@ApiModelProperty(value = "变更前用户名称")
private String userNameBefore;
//变更前状态 //变更前状态
@ApiModelProperty(value = "变更前状态") @ApiModelProperty(value = "变更前状态")
private Integer userStatusBefore; private Integer userStatusBefore;
@ -71,6 +74,9 @@ public class UserChangeRecordDO extends BaseDO {
//变更后负责岗位名称 //变更后负责岗位名称
@ApiModelProperty(value = "变更后负责岗位名称") @ApiModelProperty(value = "变更后负责岗位名称")
private String postNameAfter; private String postNameAfter;
//变更后用户名称
@ApiModelProperty(value = "变更后用户名称")
private String userNameAfter;
//变更后状态 //变更后状态
@ApiModelProperty(value = "变更后状态") @ApiModelProperty(value = "变更后状态")
private Integer userStatusAfter; private Integer userStatusAfter;

View File

@ -55,5 +55,7 @@ public interface UserMapper extends BaseMapper<UserDO> {
List<UserImgDO> listBase64ByUrl(@Param("params") Map<String, Object> params); List<UserImgDO> listBase64ByUrl(@Param("params") Map<String, Object> params);
void updateEmploymentFlagAndDeleteEnum(Long userId, Integer employmentFlag, String deleteEnum); void updateEmploymentFlagAndDeleteEnum(Long userId, Integer employmentFlag, String deleteEnum);
IPage<UserDO> pageByNopermissionAll(IPage<UserDO> iPage, @Param("ew") QueryWrapper<UserDO> queryWrapper);
} }

View File

@ -116,5 +116,7 @@ public interface UserRepository extends BaseRepository<UserDO> {
List<UserDO> listUserByInfo(Map<String, Object> parmas); List<UserDO> listUserByInfo(Map<String, Object> parmas);
void updateEmploymentFlagAndDeleteEnum(Long id, Integer code, String aTrue); void updateEmploymentFlagAndDeleteEnum(Long id, Integer code, String aTrue);
PageResponse<UserDO> pageByNopermissionAll(Map<String, Object> params);
} }

View File

@ -157,6 +157,39 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserMapper, UserDO> i
return PageHelper.pageToResponse(result, result.getRecords()); return PageHelper.pageToResponse(result, result.getRecords());
} }
@Override
public PageResponse<UserDO> pageByNopermissionAll(Map<String, Object> params) {
if (params.get("inDepartmentId") != null) {
Long[] inDepartmentIds = (Long[]) params.get("inDepartmentId");
if (inDepartmentIds == null || inDepartmentIds.length == 0) {
params.remove("inDepartmentId");
}
}
QueryWrapper<UserDO> queryWrapper = new QueryWrapper<>();
List<Integer> enterpriseType = CorpTypeEnum.getCodesByEnterpriseType((Integer) params.get("enterpriseType"));
if (CollUtil.isNotEmpty(enterpriseType)) {
params.remove("enterpriseType");
queryWrapper.in("c.type", enterpriseType);
queryWrapper.eq("c.use_flag", 1);
}
List<Integer> inType = (List<Integer>) params.get("inType");
if (CollUtil.isNotEmpty(inType)) {
queryWrapper.in("c.type", inType);
queryWrapper.eq("c.use_flag", 1);
}
params.remove("inType");
IPage<UserDO> iPage = new Query<UserDO>().getPage(params);
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params, "u.");
queryWrapper.apply("(u.employment_flag = 0 OR u.delete_enum = 'FALSE')");
if (!ObjectUtils.isEmpty(params.get("noMain"))) {
queryWrapper.apply("u.id != u.corpinfo_id");
}
queryWrapper.orderByAsc("c.corp_order").orderByAsc("u.sort").orderByDesc("u.create_time");
IPage<UserDO> result = userMapper.pageByNopermissionAll(iPage, queryWrapper);
return PageHelper.pageToResponse(result, result.getRecords());
}
@DubboReference @DubboReference
private ZcloudImgFilesFacade zcloudImgFilesFacade; private ZcloudImgFilesFacade zcloudImgFilesFacade;

View File

@ -605,5 +605,81 @@
delete_enum = #{deleteEnum} delete_enum = #{deleteEnum}
WHERE id = #{userId} WHERE id = #{userId}
</update> </update>
<select id="pageByNopermissionAll" resultType="com.zcloud.basic.info.persistence.dataobject.UserDO">
select
d.name as department_name,
CASE
WHEN c.type IN (3,4, 5) THEN u.post_name
ELSE p.post_name
END AS post_name,
c.corp_name as corpinfoName,
u.id,
u.user_id,
u.username,
u.name,
u.corpinfo_id,
u.main_corp_flag,
u.user_type,
u.department_id,
u.post_id,
u.role_id,
u.email,
u.phone,
u.personnel_type,
u.personnel_type_name,
u.nation,
u.nation_name,
u.user_id_card,
u.user_avatar_url,
u.current_address,
u.location_address,
u.rank_level,
u.rank_level_name,
u.sort,
u.version,
u.create_id,
u.create_name,
u.create_time,
u.update_id,
u.update_name,
u.update_time,
u.remarks,
u.delete_enum,
u.tenant_id,
u.org_id,
u.env,
u.department_leader_flag,
u.deputy_leader_flag,
u.cultural_level,
u.cultural_level_name,
u.marital_status,
u.marital_status_name,
u.political_affiliation,
u.political_affiliation_name,
u.employment_flag,
u.flow_flag,
u.rz_flag,
CASE
WHEN LENGTH(FROM_BASE64(u.user_id_card)) > 0
AND MOD(SUBSTRING(FROM_BASE64(u.user_id_card), 17, 1), 2) = 1 THEN
'男'
WHEN LENGTH(FROM_BASE64(u.user_id_card)) > 0
AND MOD(SUBSTRING(FROM_BASE64(u.user_id_card), 17, 1), 2) = 0 THEN
'女'
END AS sex,
CASE
WHEN LENGTH(FROM_BASE64(u.user_id_card)) > 0 THEN
(YEAR(NOW()) - SUBSTRING(FROM_BASE64(u.user_id_card), 7, 4)) ELSE NULL
END AS age,
cast(substring(FROM_BASE64(u.user_id_card), 7, 8) AS DATE) AS birthday
from user u
left join corp_info c on c.id = u.corpinfo_id
left join department d on d.id = u.department_id
left join post p on p.id = u.post_id
${ew.customSqlSegment}
</select>
</mapper> </mapper>