feat:人员调动页面完成

This commit is contained in:
dzc committed 2025-04-25 11:04:12 +08:00
1 parent 46701dfdc6
commit b914931b37
10 files changed
+88 -14

No files matched your search

@@ -15,7 +15,7 @@ import java.util.Arrays;
public enum UserTransactionEnum {
LEAVE("10", "离职"),
TRANSFER("20", "调岗(外地)"),
RETIRE("20", "退休"),
INNER_TRANSFER("30", "调岗(内部)"),
;
private final String type;
@@ -11,6 +11,7 @@ import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.common.log.annotation.SysLog;
import com.bsd.pjcloud.admin.service.SysUserTransactionService;
import com.bsd.pjcloud.common.security.annotation.Inner;
import com.bsd.pjcloud.common.security.service.PjcloudUser;
import com.bsd.pjcloud.common.security.util.SecurityUtils;
import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto;
@@ -41,6 +42,9 @@ public class SysUserTransactionController {
/* ************************************* start callback start ************************************* */
@Inner(value = false)
@Operation(summary = "申请调岗审批回调", description = "申请调岗审批回调")
@PostMapping("/apply-callback")
public void applyCallback(@RequestBody ProcessNodeRecordAssignUserParamDto dto, @RequestParam(required = false) Long tenantId) {
sysUserTransactionService.applyCallback(dto, tenantId);
}
@@ -3,6 +3,8 @@ package com.bsd.pjcloud.admin.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.admin.api.dto.SysUserTransactionDto;
import com.bsd.pjcloud.admin.api.dto.UserDTO;
import com.bsd.pjcloud.admin.api.entity.SysUser;
import com.bsd.pjcloud.admin.api.entity.SysUserTransactionEntity;
import com.bsd.pjcloud.admin.api.vo.SysUserTransactionVo;
import com.bsd.pjcloud.common.data.datascope.DataScope;
@@ -915,11 +915,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
}
public List<SimpleUserListVO> listUserIdByDeptId(Long deptId, String name) {
List<SysUser> sysUsers = baseMapper.selectList(Wrappers.<SysUser>lambdaQuery()
.eq(SysUser::getDeptId, deptId)
.like(StrUtil.isNotBlank(name),SysUser::getName, name));
.like(StrUtil.isNotBlank(name), SysUser::getName, name));
return com.bsd.pjcloud.common.core.util.BeanUtils.toBean(sysUsers, SimpleUserListVO.class);
}
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.admin.api.constant.UserTransactionEnum;
import com.bsd.pjcloud.admin.api.dto.SysUserTransactionDto;
import com.bsd.pjcloud.admin.api.dto.UserDTO;
import com.bsd.pjcloud.admin.api.entity.SysDept;
import com.bsd.pjcloud.admin.api.entity.SysUser;
import com.bsd.pjcloud.admin.api.entity.SysUserTransactionEntity;
@@ -23,11 +24,16 @@ import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.common.data.resolver.ParamResolver;
import com.bsd.pjcloud.common.data.tenant.TenantContextHolder;
import com.bsd.pjcloud.common.security.service.PjcloudUser;
import com.bsd.pjcloud.common.security.util.SecurityUtils;
import com.bsd.pjcloud.flow.task.api.feign.RemoteFlowEngineService;
import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum;
import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto;
import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeApplyEntity;
import com.bsd.pjcloud.flow.task.dto.TaskParamDto;
import com.bsd.pjcloud.wallet.api.feign.RemoteWalletService;
import com.bsd.pjcloud.wallet.api.feign.RemoteWalletThirdZyService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -48,6 +54,9 @@ public class SysUserTransactionServiceImpl extends ServiceImpl<SysUserTransactio
private final SysUserService sysUserService;
private final SysDeptService sysDeptService;
private final RemoteFlowEngineService remoteFlowEngineService;
private final RemoteWalletThirdZyService remoteWalletThirdZyService;
private final FlowUtil flowUtil;
@Override
@@ -70,22 +79,42 @@ public class SysUserTransactionServiceImpl extends ServiceImpl<SysUserTransactio
if (ObjectUtil.notEqual(dto.getBizType(), UserTransactionEnum.INNER_TRANSFER.getType())) {
dto.setIsWalletTransaction(YesNoEnum.YES.getCode());
}
// 查询调动用户
SysUser userDetail = sysUserService.getById(dto.getUserId());
// 如果是离职或者调岗(外地)自动移动到指定部门
if (ObjectUtil.equals(dto.getBizType(), UserTransactionEnum.LEAVE.getType())) {
Long deptId = null;
try {
String deptId = ParamResolver.getStr("USER_TRANSACTION_LEAVE");
dto.setTargetDeptId(Long.valueOf(deptId));
String deptIdStr = ParamResolver.getStr("USER_TRANSACTION_LEAVE");
deptId = Long.valueOf(deptIdStr);
} catch (Exception e) {
throw new RuntimeException("请配置离职部门参数");
}
if (ObjectUtil.equals(userDetail.getDeptId(), deptId)) {
throw new RuntimeException("用户已在离职人员部门");
}
dto.setTargetDeptId(deptId);
}
if (ObjectUtil.equals(dto.getBizType(), UserTransactionEnum.TRANSFER.getType())) {
if (ObjectUtil.equals(dto.getBizType(), UserTransactionEnum.RETIRE.getType())) {
Long deptId = null;
try {
String deptId = ParamResolver.getStr("USER_TRANSACTION_TRANSFER");
dto.setTargetDeptId(Long.valueOf(deptId));
String deptIdStr = ParamResolver.getStr("USER_TRANSACTION_TRANSFER");
deptId = Long.valueOf(deptIdStr);
} catch (Exception e) {
throw new RuntimeException("请配置调岗(外地)部门参数");
}
if (ObjectUtil.equals(userDetail.getDeptId(), deptId)) {
throw new RuntimeException("用户已在退休人员部门");
}
dto.setTargetDeptId(deptId);
}
if (ObjectUtil.equals(dto.getBizType(), UserTransactionEnum.INNER_TRANSFER.getType())) {
if (ObjectUtil.isEmpty(ObjectUtil.isEmpty(dto.getTargetDeptId()))) {
throw new RuntimeException("请选择目标部门");
}
if (ObjectUtil.equals(userDetail.getDeptId(), dto.getTargetDeptId())) {
throw new RuntimeException("调动用户源部门和目标部门不能一致");
}
}
// 查询发起用户
SysUser applySysUser = sysUserService.getById(applyUser.getId());
@@ -132,9 +161,14 @@ public class SysUserTransactionServiceImpl extends ServiceImpl<SysUserTransactio
throw new RuntimeException("调动人<" + detail.getUsername() + ">手机号<" + detail.getUserMobile() + ">,审批中状态才可以修改");
}
}
// 取消审批
TaskParamDto dto = new TaskParamDto();
dto.setProcessInstanceIdList(userList.stream().map(SysUserTransactionEntity::getProcessId).filter(ObjectUtil::isNotEmpty).distinct().toList());
remoteFlowEngineService.stopProcessInstance(dto).getData();
baseMapper.deleteBatchIds(list);
}
/**
* 回调
*/
@@ -166,6 +200,11 @@ public class SysUserTransactionServiceImpl extends ServiceImpl<SysUserTransactio
userUpdateObj.setUserId(detail.getUserId());
userUpdateObj.setDeptId(detail.getTargetDeptId());
sysUserService.updateById(userUpdateObj);
// 通知正元
if (ObjectUtil.equals(detail.getBizType(), UserTransactionEnum.INNER_TRANSFER.getType())) {
// 通知正元
remoteWalletThirdZyService.syncUserById(detail.getUserId());
}
}
} catch (Exception e) {
e.printStackTrace();
@@ -58,12 +58,12 @@ public class FlowUtil {
log.error("|{}|请配置跨单位审批流程ID;userId:|{}|businessId:|{}|", TAG, user.getUserId(), businessId);
throw new RuntimeException("请配置跨单位审批流程ID");
}
R<ProcessVO> detail = flowApiFlowService.getDetail(defaultRole);
R<Process> detail = flowApiFlowService.getProcessByBusinessKey(defaultRole);
if (Optional.of(detail.getData()).map(Process::getId).isEmpty()) {
log.error("|{}|未查询到该审批流程;userId:|{}|businessId:|{}|", TAG, user.getUserId(), businessId);
throw new RuntimeException("未查询到该审批流程");
}
ProcessVO processVo = detail.getData();
Process processVo = detail.getData();
ProcessInstanceParamDto processDto = new ProcessInstanceParamDto();
if (ObjectUtil.isNotEmpty(dto)) {
if (ObjectUtil.isNotEmpty(user.getUserId())) {
@@ -100,6 +100,7 @@
<where>
<include refid="whereA"/>
</where>
order by a.create_time desc,a.id desc
</select>
<select id="join" resultType="com.bsd.pjcloud.admin.api.vo.SysUserTransactionVo">
@@ -0,0 +1,17 @@
package com.bsd.pjcloud.wallet.api.feign;
import com.bsd.pjcloud.common.core.constant.ServiceNameConstants;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.feign.annotation.NoToken;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(contextId = "remoteWalletThirdZyService", value = ServiceNameConstants.WALLET_SERVICE)
public interface RemoteWalletThirdZyService {
@NoToken
@PostMapping("/mch-third-zy/sync-user")
R syncUserById(@RequestParam Long userId);
}
@@ -3,4 +3,5 @@ com.bsd.pjcloud.wallet.api.feign.RemoteCodeUseService
com.bsd.pjcloud.wallet.api.feign.RemoteWalletRechargeService
com.bsd.pjcloud.wallet.api.feign.RemoteMchService
com.bsd.pjcloud.wallet.api.feign.RemoteWalletSettingService
com.bsd.pjcloud.wallet.api.feign.RemoteWalletThirdZyService
com.bsd.pjcloud.wallet.api.feign.RemoteWalletTransactionService
@@ -1,6 +1,7 @@
package com.bsd.pjcloud.wallet.controller.third;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.security.annotation.Inner;
import com.bsd.pjcloud.wallet.api.vo.MchManageVo;
import com.bsd.pjcloud.wallet.service.WalletThirdZyService;
import io.swagger.v3.oas.annotations.Operation;
@@ -9,9 +10,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -25,6 +24,18 @@ public class WalletThirdZyController {
private final WalletThirdZyService walletThirdZyService;
/* ************************************* start 远程调用 start ************************************* */
@Inner
@PostMapping("/sync-user")
@Operation(summary = "同步全部用户")
public R syncUserById(@RequestParam Long userId) {
walletThirdZyService.syncAllUser(userId);
return R.ok();
}
/* ************************************* end 远程调用 end ************************************* */
@GetMapping("/sync-all-mch")
@Operation(summary = "同步全部商户")
public R<MchManageVo> syncAllMch() {