相关方入职离职

dev_xiangguanfang
zhaokai 2025-12-29 16:38:19 +08:00
parent c141bb0c02
commit 2d45e621ba
15 changed files with 159 additions and 88 deletions

View File

@ -117,14 +117,12 @@ public class AppUserController {
}
@ApiOperation("app获取用户在职企业")
@PostMapping("/getUserCorpList/{id}")
public MultiResponse<CorpInfoCO> getUserCorpList(@PathVariable("id") Long id) {
public MultiResponse<UserCorpInfoCO> getUserCorpList(@PathVariable("id") Long id) {
return MultiResponse.of(userService.getUserCorpList(id));
}
@ApiOperation("app获取图形验证码")
@PostMapping("/generateCaptcha")
public Response generateCaptcha() {
CaptchaCO captchaCO = new CaptchaCO();
return SingleResponse.of(userService.generateCaptcha());
}
}

View File

@ -187,6 +187,7 @@ public class UserUpdateExe {
BeanUtils.copyProperties(cmd, userDO);
return userRepository.updateFaceUrl(userDO);
}
@Transactional(rollbackFor = Exception.class)
public void executeResignation(UserResignationCmd userResignationCmd) {
//获取用户信息,并更新离职状态为离职
@ -266,10 +267,10 @@ public class UserUpdateExe {
/* if (UserFlowFlagEnum.FLOW.getCode().equals(userDO.getFlowFlag())) {
userE = userCorpRepository.executeReviewStatus(userDO.getId(), corpinfoId, employmentFlag);
} else {*/
userE = new UserE();
BeanUtils.copyProperties(userDO, userE);
userE.setEmploymentFlag(employmentFlag);
userGateway.update(userE);
userE = new UserE();
BeanUtils.copyProperties(userDO, userE);
userE.setEmploymentFlag(employmentFlag);
userGateway.update(userE);
// }
// if (userE == null) {
// return;
@ -332,10 +333,10 @@ public class UserUpdateExe {
/* if (UserFlowFlagEnum.FLOW.getCode().equals(userDO.getFlowFlag())) {
userE = userCorpRepository.executeReviewStatus(userDO.getId(), corpinfoId, employmentFlag);
} else {*/
userE = new UserE();
BeanUtils.copyProperties(userDO, userE);
userE.setEmploymentFlag(employmentFlag);
userGateway.update(userE);
userE = new UserE();
BeanUtils.copyProperties(userDO, userE);
userE.setEmploymentFlag(employmentFlag);
userGateway.update(userE);
// }
if (userE == null) {
return;
@ -402,22 +403,12 @@ public class UserUpdateExe {
UserE userE = null;
Long corpinfoId = appUserResignationCmd.getCorpinfoId() == null ? AuthContext.getTenantId() : appUserResignationCmd.getCorpinfoId();
Integer employmentFlagBefore = null;
if (UserFlowFlagEnum.FLOW.getCode().equals(userDO.getFlowFlag())) {
UserCorpDO userCorpDO = userCorpRepository.getInfoByUserId(userDO.getId(), corpinfoId);
if (userCorpDO == null) {
return;
}
employmentFlagBefore = userCorpDO.getEmploymentFlag();
userE = userCorpRepository.executeResignation(userCorpDO, corpinfoId, UserEmploymentFlagEnum.RESIGNATION_AUDIT.getCode());
userCorpDO.setEmploymentFlag(UserEmploymentFlagEnum.RESIGNATION_AUDIT.getCode());
userCorpRepository.updateById(userCorpDO);
} else {
userE = new UserE();
BeanUtils.copyProperties(userDO, userE);
employmentFlagBefore = userDO.getEmploymentFlag();
userE.setEmploymentFlag(UserEmploymentFlagEnum.RESIGNATION_AUDIT.getCode());
userGateway.update(userE);
}
userE = new UserE();
BeanUtils.copyProperties(userDO, userE);
employmentFlagBefore = userDO.getEmploymentFlag();
userE.setEmploymentFlag(UserEmploymentFlagEnum.RESIGNATION_AUDIT.getCode());
userGateway.update(userE);
UserCorpRecordDO userCorpRecordDO = userCorpRecordRepository.getInfoByUserId(userDO.getId(), corpinfoId, UserEmploymentFlagEnum.ON.getCode());
userCorpRecordDO.setStatus(UserChangeRecordStatusEnum.PENDING.getCode());
userCorpRecordDO.setResignationReason(appUserResignationCmd.getResignationReason());
@ -515,7 +506,7 @@ public class UserUpdateExe {
// riskCmd.setCorpinfoId(info.getCorpinfoId());
// zcloudRiskFacade.updateListManagerStatusByUserId(riskCmd);
// userJobHandoverRepository.processUserJobHandover(info.getUserChangeRecordId());
//风险辨识检查出异常是直接抛异常
//风险辨识检查出异常是直接抛异常
// break;
}

View File

@ -2,13 +2,11 @@ package com.zcloud.basic.info.command.convertor;
import com.zcloud.basic.info.domain.model.CorpDepartmentE;
import com.zcloud.basic.info.domain.model.DepartmentE;
import com.zcloud.basic.info.dto.clientobject.CorpDepartmentCO;
import com.zcloud.basic.info.dto.clientobject.CorpInfoCO;
import com.zcloud.basic.info.dto.clientobject.CorpInfoXgfItemCO;
import com.zcloud.basic.info.dto.clientobject.CorpUserMiddleCO;
import com.zcloud.basic.info.dto.clientobject.*;
import com.zcloud.basic.info.persistence.dataobject.CorpFormDO;
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
import com.zcloud.basic.info.persistence.dataobject.DepartmentDO;
import com.zcloud.basic.info.persistence.dataobject.UserCorpInfoDO;
import com.zcloud.gbscommon.zcloudcorp.response.ZcloudCorpInfoCO;
import org.mapstruct.Mapper;
@ -40,5 +38,7 @@ public interface CorpInfoCoConvertor {
List<CorpUserMiddleCO> converDOsToMiddleCOs(List<CorpInfoDO> data);
List<CorpInfoXgfItemCO> converDOsToItemCOs(List<CorpFormDO> corpFormDOS);
List<UserCorpInfoCO> converUserInfoDOsToCOs(List<UserCorpInfoDO> userCorpDOS);
}

View File

@ -21,6 +21,7 @@ import com.zcloud.basic.info.dto.*;
import com.zcloud.basic.info.dto.clientobject.*;
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
import com.zcloud.basic.info.persistence.dataobject.UserCorpDO;
import com.zcloud.basic.info.persistence.dataobject.UserCorpInfoDO;
import com.zcloud.basic.info.persistence.dataobject.UserDO;
import com.zcloud.basic.info.persistence.repository.CorpInfoRepository;
import com.zcloud.basic.info.persistence.repository.UserCorpRepository;
@ -224,69 +225,47 @@ public class UserQueryExe {
if(captcha == null || !captcha.toString().equals(cmd.getCaptchaCode())){
throw new BizException("验证码错误");
}
//返回企业列表
UserDO userDO = userRepository.getByPhone(cmd.getPhone());
if(userDO == null){
throw new BizException("手机号不存在");
//根据手机号获取用户列表
List<UserDO> userDOList = userRepository.getListByPhone(cmd.getPhone());
if(CollUtil.isEmpty(userDOList)){
throw new BizException("用户不存在");
}
//判断密码是否正确
UserE userE = new UserE();
userE.setPassword(userDO.getPassword());
Boolean checkUserPassword = userE.checkUserPassword(cmd.getPassword(), userDO.getPassword());
userE.setPassword(userDOList.get(0).getPassword());
Boolean checkUserPassword = userE.checkUserPassword(cmd.getPassword(), userDOList.get(0).getPassword());
if(!checkUserPassword){
throw new BizException("密码错误");
}
//判断用户信息是否完善
UserE userCheck = new UserE();
BeanUtils.copyProperties(userDO, userCheck);
BeanUtils.copyProperties(userDOList.get(0), userCheck);
Boolean b = userCheck.checkUserInfoComplete(userCheck);
userLoginCO.setIsInfoComplete(b);
List<CorpInfoCO> corpInfoCOList = new ArrayList<>();
//判断是流动人员还是固定人员
if(UserFlowFlagEnum.FIXED.getCode().equals(userDO.getFlowFlag()) && userDO.getCorpinfoId() != null && UserEmploymentFlagEnum.ON.getCode().equals(userDO.getEmploymentFlag())){
CorpInfoDO corpInfoDO = corpInfoRepository.getById(userDO.getCorpinfoId());
CorpInfoCO corpInfoCO = new CorpInfoCO();
BeanUtils.copyProperties(corpInfoDO, corpInfoCO);
corpInfoCOList.add(corpInfoCO);
}
if(UserFlowFlagEnum.FLOW.getCode().equals(userDO.getFlowFlag())){
List<UserCorpDO> userCorpDOS = userCorpRepository.getONCorpInfo(userDO.getId());
if(CollUtil.isNotEmpty(userCorpDOS)){
List<Long> corpinfoIds = userCorpDOS.stream().map(UserCorpDO::getCorpinfoId).collect(Collectors.toList());
List<CorpInfoDO> corpInfoDOList = corpInfoRepository.getByIdList(corpinfoIds);
List<CorpInfoCO> corpInfoCOS = corpInfoCoConvertor.converDOsToCOs(corpInfoDOList);
corpInfoCOList.addAll(corpInfoCOS);
}
List<Long> userIds = userDOList.stream().map(UserDO::getId).collect(Collectors.toList());
List<UserCorpInfoDO> userCorpDOS = userCorpRepository.getListByUserIds(userIds);
List<UserCorpInfoCO> corpInfoCOS = corpInfoCoConvertor.converUserInfoDOsToCOs(userCorpDOS);
}
userLoginCO.setCorpInfoCOList(corpInfoCOList);
userLoginCO.setUserCorpInfoCOList(corpInfoCOS);
UserDO userDO = userRepository.getInfoById(userDOList.get(0).getId());
userLoginCO.setUserCO(userCoConvertor.converDOToCO(userDO));
return userLoginCO;
}
public List<CorpInfoCO> getUserCorpList(Long id) {
public List<UserCorpInfoCO> getUserCorpList(Long id) {
//返回企业列表
UserDO userDO = userRepository.getById(id);
//判断是流动人员还是固定人员
if(UserFlowFlagEnum.FIXED.getCode().equals(userDO.getFlowFlag()) && userDO.getCorpinfoId() != null){
CorpInfoDO corpInfoDO = corpInfoRepository.getById(userDO.getCorpinfoId());
CorpInfoCO corpInfoCO = new CorpInfoCO();
BeanUtils.copyProperties(corpInfoDO, corpInfoCO);
return Arrays.asList(corpInfoCO);
}
if(UserFlowFlagEnum.FLOW.getCode().equals(userDO.getFlowFlag())){
List<UserCorpDO> userCorpDOS = userCorpRepository.getONCorpInfo(userDO.getId());
if(CollUtil.isEmpty(userCorpDOS)){
return null;
}
List<Long> corpinfoIds = userCorpDOS.stream().map(UserCorpDO::getCorpinfoId).collect(Collectors.toList());
List<CorpInfoDO> corpInfoDOList = corpInfoRepository.getByIdList(corpinfoIds);
List<CorpInfoCO> corpInfoCOS = corpInfoCoConvertor.converDOsToCOs(corpInfoDOList);
return corpInfoCOS;
}
return null;
//根据手机号获取用户列表
List<UserDO> userDOList = userRepository.getListByPhone(userDO.getPhone());
List<Long> userIds = userDOList.stream().map(UserDO::getId).collect(Collectors.toList());
List<UserCorpInfoDO> userCorpDOS = userCorpRepository.getListByUserIds(userIds);
List<UserCorpInfoCO> corpInfoCOS = corpInfoCoConvertor.converUserInfoDOsToCOs(userCorpDOS);
return corpInfoCOS;
}
public CaptchaCO generateCaptcha() {

View File

@ -11,10 +11,7 @@ import com.zcloud.basic.info.command.UserRemoveExe;
import com.zcloud.basic.info.command.UserUpdateExe;
import com.zcloud.basic.info.command.query.UserQueryExe;
import com.zcloud.basic.info.dto.*;
import com.zcloud.basic.info.dto.clientobject.CorpInfoCO;
import com.zcloud.basic.info.dto.clientobject.UserCO;
import com.zcloud.basic.info.dto.clientobject.UserLoginCO;
import com.zcloud.basic.info.dto.clientobject.UserXmfCO;
import com.zcloud.basic.info.dto.clientobject.*;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
@ -217,7 +214,7 @@ public class UserServiceImpl implements UserServiceI {
}
@Override
public List<CorpInfoCO> getUserCorpList(Long id) {
public List<UserCorpInfoCO> getUserCorpList(Long id) {
return userQueryExe.getUserCorpList(id);
}

View File

@ -6,10 +6,7 @@ import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.basic.info.dto.*;
import com.zcloud.basic.info.dto.clientobject.CorpInfoCO;
import com.zcloud.basic.info.dto.clientobject.UserCO;
import com.zcloud.basic.info.dto.clientobject.UserLoginCO;
import com.zcloud.basic.info.dto.clientobject.UserXmfCO;
import com.zcloud.basic.info.dto.clientobject.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
@ -86,7 +83,7 @@ public interface UserServiceI {
UserLoginCO login(UserAppLoginCmd cmd);
List<CorpInfoCO> getUserCorpList(Long id);
List<UserCorpInfoCO> getUserCorpList(Long id);
CaptchaCO generateCaptcha();
}

View File

@ -0,0 +1,41 @@
package com.zcloud.basic.info.dto.clientobject;
import com.alibaba.cola.dto.ClientObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
/**
* web-client
*
* @Author zhaokai
* @Date 2025-10-30 15:12:49
*/
@Data
public class UserCorpInfoCO implements Serializable {
//用户id
@ApiModelProperty(value = "用户id")
private Long userId;
//主键
@ApiModelProperty(value = "企业id")
private Long corpinfoId;
//企业名称
@ApiModelProperty(value = "企业名称")
private String corpName;
//企业类型(0-普通企业1-集团单位2-股份单位3-相关方企业4-货主单位5-驻港单位)
@ApiModelProperty(value = "企业类型(0-普通企业1-集团单位2-股份单位3-相关方企业4-货主单位5-驻港单位)")
private Integer type;
}

View File

@ -22,7 +22,7 @@ public class UserLoginCO extends ClientObject {
private Boolean isInfoComplete;
@ApiModelProperty(value = "用户关联的公司列表")
private List<CorpInfoCO> corpInfoCOList;
private List<UserCorpInfoCO> userCorpInfoCOList;
private UserCO userCO;
}

View File

@ -0,0 +1,35 @@
package com.zcloud.basic.info.persistence.dataobject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* web-client
*
* @Author zhaokai
* @Date 2025-10-30 15:12:49
*/
@Data
public class UserCorpInfoDO implements Serializable {
//用户id
@ApiModelProperty(value = "用户id")
private Long userId;
//主键
@ApiModelProperty(value = "企业id")
private Long corpinfoId;
//企业名称
@ApiModelProperty(value = "企业名称")
private String corpinfoName;
//企业类型(0-普通企业1-集团单位2-股份单位3-相关方企业4-货主单位5-驻港单位)
@ApiModelProperty(value = "企业类型(0-普通企业1-集团单位2-股份单位3-相关方企业4-货主单位5-驻港单位)")
private Integer type;
}

View File

@ -2,8 +2,11 @@ package com.zcloud.basic.info.persistence.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zcloud.basic.info.persistence.dataobject.UserCorpDO;
import com.zcloud.basic.info.persistence.dataobject.UserCorpInfoDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* web-infrastructure
*
@ -14,5 +17,7 @@ import org.apache.ibatis.annotations.Mapper;
public interface UserCorpMapper extends BaseMapper<UserCorpDO> {
UserCorpDO getInfoByUserId(Long userId, Long corpinfoId);
List<UserCorpInfoDO> getListByUserIds(List<Long> userIds);
}

View File

@ -4,6 +4,7 @@ import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.basic.info.domain.model.UserE;
import com.zcloud.basic.info.persistence.dataobject.UserCorpDO;
import com.zcloud.basic.info.persistence.dataobject.UserCorpInfoDO;
import javax.validation.constraints.NotNull;
import java.util.List;
@ -35,5 +36,7 @@ public interface UserCorpRepository extends BaseRepository<UserCorpDO> {
void removeByUserId(Long userId);
List<UserCorpDO> getONCorpInfo(@NotNull(message = "用户id不能为空") Long id);
List<UserCorpInfoDO> getListByUserIds(List<Long> userIds);
}

View File

@ -82,5 +82,7 @@ public interface UserRepository extends BaseRepository<UserDO> {
UserDO getByPhoneAndIdCard(String phone, String idCardNumber);
void checkUserIdCard(@NotNull(message = "主键id不能为空") Long id, String userIdCard);
List<UserDO> getListByPhone(String phone);
}

View File

@ -8,6 +8,7 @@ import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.basic.info.domain.enums.UserEmploymentFlagEnum;
import com.zcloud.basic.info.domain.model.UserE;
import com.zcloud.basic.info.persistence.dataobject.UserCorpDO;
import com.zcloud.basic.info.persistence.dataobject.UserCorpInfoDO;
import com.zcloud.basic.info.persistence.dataobject.UserCorpRecordDO;
import com.zcloud.basic.info.persistence.mapper.UserCorpMapper;
import com.zcloud.basic.info.persistence.repository.UserCorpRepository;
@ -117,6 +118,9 @@ public class UserCorpRepositoryImpl extends BaseRepositoryImpl<UserCorpMapper, U
return userCorpMapper.selectList(queryWrapper);
}
@Override
public List<UserCorpInfoDO> getListByUserIds(List<Long> userIds) {
return userCorpMapper.getListByUserIds(userIds);
}
}

View File

@ -534,5 +534,12 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserMapper, UserDO> i
throw new BizException("身份证号已经存在,请联系管理员");
}
}
@Override
public List<UserDO> getListByPhone(String phone) {
QueryWrapper<UserDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("phone", phone);
return list(queryWrapper);
}
}

View File

@ -13,5 +13,17 @@
and uc.corpinfo_id = #{corpinfoId}
and uc.delete_enum = 'FALSE'
</select>
<select id="getListByUserIds" resultType="com.zcloud.basic.info.persistence.dataobject.UserCorpInfoDO">
select u.id as userId, ci.corp_name as corpinfoName,ci.id as corpinfoId
from user u
left join corp_info ci on u.corpinfo_id = ci.id
where u.user_id in
<foreach collection="userIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
and ci.use_flag=1
and uc.delete_enum = 'FALSE'
</select>
</mapper>