feat:人脸角色审批

This commit is contained in:
dzc committed 2025-03-13 21:08:58 +08:00
1 parent 884cfa4b32
commit de8d31cf46
15 files changed
+150 -193

No files matched your search

@@ -6,4 +6,6 @@ public interface CommonRoleConstant {
String DEPT_ADMIN = "DEPT_ADMIN";
String AUTO_CREATE_WALLET = "WALLET_AUTO_CREATE";
}
@@ -27,4 +27,6 @@ public class SysUserFaceDto extends SysUserFaceEntity implements BaseIsIncludeTr
* 是否包含部门ids
*/
private Boolean isInclude;
private Boolean isFindCheckUser = false;
}
@@ -82,4 +82,9 @@ public class UserDTO extends SysUser implements BaseIsIncludeTreeInterface {
*/
private Boolean isInclude;
/**
* 是否是审批用户
*/
private Boolean isFindCheckUser = false;
}
@@ -3,6 +3,7 @@ package com.bsd.pjcloud.admin.api.vo;
import com.bsd.pjcloud.admin.api.entity.SysUserFaceEntity;
import com.bsd.pjcloud.admin.api.vo.base.BaseDeptInterface;
import com.bsd.pjcloud.admin.api.vo.base.BaseUserInterface;
import lombok.Data;
@Data
@@ -28,4 +29,6 @@ public class SysUserFaceVo extends SysUserFaceEntity implements BaseUserInterfac
private Long deptId;
private String deptName;
private Boolean isCheckUser = false;
}
@@ -232,4 +232,9 @@ public class UserVO implements BaseFacesInterface, Serializable {
@Schema(description = "是否为全局人脸")
private String isGlobalFace;
/**
* 是否是审核用户
*/
private Boolean isCheckUser = false;
}
@@ -104,10 +104,8 @@ public class SysUserController {
@Inner
@GetMapping("/get-name-and-mobile")
public R<UserInfo> getUserByNameAndMobile(@RequestParam("name") String name,
@RequestParam("mobile") String mobile) {
SysUser user = userService.getOne(
Wrappers.<SysUser>query().lambda().eq(SysUser::getName, name).eq(SysUser::getPhone, mobile));
public R<UserInfo> getUserByNameAndMobile(@RequestParam("name") String name, @RequestParam("mobile") String mobile) {
SysUser user = userService.getOne(Wrappers.<SysUser>query().lambda().eq(SysUser::getName, name).eq(SysUser::getPhone, mobile));
if (user == null) {
return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_USERINFO_EMPTY, name, mobile));
}
@@ -208,6 +206,7 @@ public class SysUserController {
*/
@GetMapping("/page")
public R getUserPage(@ParameterObject Page page, @ParameterObject UserDTO userDTO) {
userDTO.setIsFindCheckUser(true);
return R.ok(userService.getUsersWithRolePage(page, userDTO));
}
@@ -286,8 +285,7 @@ public class SysUserController {
@PostMapping("/import-face")
@HasPermission("sys_user_export")
public R importUserFace(@RequestParam("file") MultipartFile file, @RequestExcel List<UserExcelFaceVo> excelList,
BindingResult bindingResult) {
public R importUserFace(@RequestParam("file") MultipartFile file, @RequestExcel List<UserExcelFaceVo> excelList, BindingResult bindingResult) {
return userService.importUserFace(file, excelList, bindingResult);
}
@@ -385,11 +383,8 @@ public class SysUserController {
*/
@GetMapping("/getUserByMobileOrEmployeeCode")
@Inner
public R<List<SysUser>> getUserByMobileOrEmployeeCode(@RequestParam("employeeCode") String employeeCode,
@RequestParam("mobile") String mobile) {
return R.ok(userService.list(
Wrappers.<SysUser>lambdaQuery().eq(SysUser::getDingtalkEmployeeCode, employeeCode).or()
.eq(SysUser::getPhone, mobile)));
public R<List<SysUser>> getUserByMobileOrEmployeeCode(@RequestParam("employeeCode") String employeeCode, @RequestParam("mobile") String mobile) {
return R.ok(userService.list(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getDingtalkEmployeeCode, employeeCode).or().eq(SysUser::getPhone, mobile)));
}
@GetMapping("/getUserByMobile")
@@ -401,9 +396,7 @@ public class SysUserController {
@GetMapping("/getSimpleUserAll")
@Schema(description = "简要用户信息")
public R<List<SimpleUserAllListVO>> getSimpleUserAllList(
@RequestParam(value = "mobile", required = false) String mobile,
@RequestParam(value = "name", required = false) String name) {
public R<List<SimpleUserAllListVO>> getSimpleUserAllList(@RequestParam(value = "mobile", required = false) String mobile, @RequestParam(value = "name", required = false) String name) {
LambdaQueryWrapper<SysUser> sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
sysUserLambdaQueryWrapper.like(StringUtils.isNotBlank(mobile), SysUser::getPhone, mobile);
sysUserLambdaQueryWrapper.like(StringUtils.isNotBlank(name), SysUser::getName, name);
@@ -139,7 +139,7 @@ public class SysUserFaceController {
@Operation(summary = "查询人脸审核列表", description = "查询人脸审核列表")
@PostMapping("/page-check-join")
public R<Page<SysUserFaceVo>> appPageCheckJoin(@ParameterObject Page page, @RequestBody SysUserFaceDto dto) {
dto.setIsProcessIdNotNull(true);
dto.setIsFindCheckUser(true);
return R.ok(sysUserFaceService.pageJoin(page, dto));
}
@@ -53,10 +53,7 @@ public interface SysUserFaceMapper extends PjcloudBaseMapper<SysUserFaceEntity>
.orderByDesc(SysUserFaceEntity::getCreateTime)
.orderByDesc(SysUserFaceEntity::getUserId);
if (ObjectUtil.isNotEmpty(dto.getMerchantDeptIdOrGlobal()) && ObjectUtil.isNotEmpty(dto.getDeptIds())) {
wrapper.and(v -> v.in(ObjectUtil.isNotEmpty(dto.getDeptIds()), SysUser::getDeptId, dto.getDeptIds()).or()
.eq(SysUser::getIsGlobalFace, YesNoEnum.YES.getCode()));
} else {
wrapper.in(ObjectUtil.isNotEmpty(dto.getDeptIds()), SysUser::getDeptId, dto.getDeptIds());
wrapper.and(v -> v.in(ObjectUtil.isNotEmpty(dto.getDeptIds()), SysUser::getDeptId, dto.getDeptIds()).or().eq(SysUser::getIsGlobalFace, YesNoEnum.YES.getCode()));
}
if (dto.getIsProcessIdNotNull()) {
wrapper.isNotNull(SysUserFaceEntity::getProcessId);
@@ -11,6 +11,7 @@ import com.bsd.pjcloud.admin.api.entity.SysDept;
import com.bsd.pjcloud.admin.api.entity.SysUser;
import com.bsd.pjcloud.admin.api.entity.SysUserFaceEntity;
import com.bsd.pjcloud.admin.api.vo.SysUserFaceVo;
import com.bsd.pjcloud.admin.api.vo.UserVO;
import com.bsd.pjcloud.admin.mapper.SysUserFaceMapper;
import com.bsd.pjcloud.admin.service.SysDeptService;
import com.bsd.pjcloud.admin.service.SysRoleService;
@@ -20,12 +21,14 @@ import com.bsd.pjcloud.admin.utils.flow.FlowUtil;
import com.bsd.pjcloud.admin.utils.flow.dto.UserFaceApplyFlowDto;
import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum;
import com.bsd.pjcloud.common.core.exception.CheckedException;
import com.bsd.pjcloud.common.core.util.CollectionUtils;
import com.bsd.pjcloud.common.data.datascope.DataScope;
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.flow.task.dto.TaskDto;
import com.bsd.pjcloud.flow.task.dto.TaskParamDto;
import com.bsd.pjcloud.mqtt.api.feign.RemoteMqttEventService;
import com.bsd.pjcloud.wallet.api.entity.WalletFreezeEntity;
@@ -42,6 +45,7 @@ import org.springframework.validation.annotation.Validated;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 人脸样本表
@@ -53,8 +57,7 @@ import java.util.List;
@Slf4j
@RequiredArgsConstructor
@Service
public class SysUserFaceServiceImpl extends ServiceImpl<SysUserFaceMapper, SysUserFaceEntity>
implements SysUserFaceService {
public class SysUserFaceServiceImpl extends ServiceImpl<SysUserFaceMapper, SysUserFaceEntity> implements SysUserFaceService {
static private final String TAG = "用户人脸";
@@ -131,9 +134,7 @@ public class SysUserFaceServiceImpl extends ServiceImpl<SysUserFaceMapper, SysUs
return;
}
// 发送mq
List<SysUserFaceEntity> faceList = baseMapper.selectList(new LambdaQueryWrapper<SysUserFaceEntity>()
.in(SysUserFaceEntity::getId, list)
);
List<SysUserFaceEntity> faceList = baseMapper.selectList(new LambdaQueryWrapper<SysUserFaceEntity>().in(SysUserFaceEntity::getId, list));
if (ObjectUtil.isNotEmpty(faceList)) {
sendFaceMq(faceList.stream().map(SysUserFaceEntity::getUserId).toList(), null);
}
@@ -158,7 +159,25 @@ public class SysUserFaceServiceImpl extends ServiceImpl<SysUserFaceMapper, SysUs
dto.setDeptIds(deptIds);
}
}
return baseMapper.pageJoin(page, dto);
Page<SysUserFaceVo> list = baseMapper.pageJoin(page, dto);
// 审批流程
if (dto.getIsFindCheckUser()) {
List<String> processInstanceIds = list.getRecords().stream().map(SysUserFaceVo::getProcessId).filter(ObjectUtil::isNotEmpty).distinct().toList();
if (ObjectUtil.isNotEmpty(processInstanceIds)) {
List<TaskDto> taskList = flowUtil.queryProcessInstanceList(SecurityUtils.getUser().getId().toString(), processInstanceIds);
if (ObjectUtil.isNotEmpty(taskList)) {
Map<String, TaskDto> taskMap = CollectionUtils.convertMap(taskList, TaskDto::getProcessInstanceId);
CollectionUtils.convertList(list.getRecords(), v -> {
TaskDto task = taskMap.get(v.getProcessId());
if (ObjectUtil.isNotEmpty(task)) {
v.setIsCheckUser(true);
}
return v;
});
}
}
}
return list;
}
@Override
@@ -202,9 +221,7 @@ public class SysUserFaceServiceImpl extends ServiceImpl<SysUserFaceMapper, SysUs
return;
}
String processId = dto.getProcessInstanceId();
SysUserFaceEntity detail = baseMapper.selectOne(new LambdaQueryWrapper<SysUserFaceEntity>()
.eq(SysUserFaceEntity::getProcessId, processId)
);
SysUserFaceEntity detail = baseMapper.selectOne(new LambdaQueryWrapper<SysUserFaceEntity>().eq(SysUserFaceEntity::getProcessId, processId));
if (ObjectUtil.isEmpty(detail)) {
return;
}
@@ -214,8 +231,7 @@ public class SysUserFaceServiceImpl extends ServiceImpl<SysUserFaceMapper, SysUs
}
try {
Boolean isConsent = flowUtil.isConsent(dto);
String processStatus = isConsent ? TaskCheckStatusEnum.RESULT.getCode() :
TaskCheckStatusEnum.REJECT.getCode();
String processStatus = isConsent ? TaskCheckStatusEnum.RESULT.getCode() : TaskCheckStatusEnum.REJECT.getCode();
baseMapper.updateById(SysUserFaceEntity.builder().id(detail.getId()).processTime(LocalDateTime.now()).processStatus(processStatus).build());
} catch (Exception e) {
e.printStackTrace();
@@ -226,10 +242,7 @@ public class SysUserFaceServiceImpl extends ServiceImpl<SysUserFaceMapper, SysUs
// 上传的人脸是否超过最大限制
private Boolean isExceedMax(Long userId) {
Long count = baseMapper.selectCount(new LambdaQueryWrapper<SysUserFaceEntity>()
.eq(SysUserFaceEntity::getUserId, userId)
.eq(SysUserFaceEntity::getProcessStatus, TaskCheckStatusEnum.RESULT.getCode())
);
Long count = baseMapper.selectCount(new LambdaQueryWrapper<SysUserFaceEntity>().eq(SysUserFaceEntity::getUserId, userId).eq(SysUserFaceEntity::getProcessStatus, TaskCheckStatusEnum.RESULT.getCode()));
return count >= 3;
}
@@ -47,6 +47,7 @@ import com.bsd.pjcloud.admin.mapper.SysUserRoleMapper;
import com.bsd.pjcloud.admin.service.*;
import com.bsd.pjcloud.admin.utils.excel.ExcelTool;
import com.bsd.pjcloud.admin.utils.flow.FlowUtil;
import com.bsd.pjcloud.admin.utils.flow.dto.UserApplyFlowDto;
import com.bsd.pjcloud.admin.utils.flow.dto.UserFaceApplyFlowDto;
import com.bsd.pjcloud.common.audit.annotation.Audit;
import com.bsd.pjcloud.common.core.constant.CacheConstants;
@@ -63,7 +64,9 @@ import com.bsd.pjcloud.common.security.service.PjcloudUser;
import com.bsd.pjcloud.common.security.util.SecurityUtils;
import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum;
import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto;
import com.bsd.pjcloud.flow.task.dto.TaskDto;
import com.bsd.pjcloud.wallet.api.feign.RemoteWalletService;
import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeApplyVo;
import cn.hutool.extra.spring.SpringUtil;
import lombok.AllArgsConstructor;
@@ -136,28 +139,24 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
@Transactional(rollbackFor = Exception.class)
public Long saveUser(UserDTO userDto) {
SysUser sysUser = new SysUser();
BeanUtils.copyProperties(userDto, sysUser);
// 判断是否为部门管理员
PjcloudUser applyUser = SecurityUtils.getUser();
boolean isDeptAdmin = sysRoleService.isDeptAdmin(applyUser.getId());
if (isDeptAdmin) {
List<SysRole> defaultRoles = sysRoleService.findRolesByCodes(
List.of(CommonRoleConstant.DEFAULT_USER, CommonRoleConstant.DEPT_ADMIN));
List<SysRole> defaultRoles = sysRoleService.findRolesByCodes(List.of(CommonRoleConstant.DEFAULT_USER, CommonRoleConstant.AUTO_CREATE_WALLET));
if (ObjectUtil.isEmpty(defaultRoles)) {
userDto.setRole(null);
} else {
userDto.setRole(defaultRoles.stream().map(SysRole::getRoleId).toList());
}
userDto.setDeptIds(null);
userDto.setRole(List.of());
sysUser.setProcessStatus(TaskCheckStatusEnum.PADDING.getCode());
} else {
sysUser.setProcessStatus(TaskCheckStatusEnum.RESULT.getCode());
sysUser.setProcessTime(LocalDateTime.now());
}
BeanUtils.copyProperties(userDto, sysUser);
sysUser.setLockFlag(
StrUtil.isBlank(userDto.getLockFlag()) ? UserStateEnum.NORMAL.getCode() : userDto.getLockFlag()
);
sysUser.setLockFlag(StrUtil.isBlank(userDto.getLockFlag()) ? UserStateEnum.NORMAL.getCode() : userDto.getLockFlag());
sysUser.setCreateBy(userDto.getUsername());
sysUser.setUpdateBy(userDto.getUsername());
sysUser.setPassword(ENCODER.encode(userDto.getPassword()));
@@ -178,8 +177,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
// 获取默认角色编码
String defaultRole = ParamResolver.getStr("USER_DEFAULT_ROLE");
// 默认角色
SysRole sysRole = sysRoleService
.getOne(Wrappers.<SysRole>lambdaQuery().eq(SysRole::getRoleCode, defaultRole));
SysRole sysRole = sysRoleService.getOne(Wrappers.<SysRole>lambdaQuery().eq(SysRole::getRoleCode, defaultRole));
userDto.setRole(Collections.singletonList(sysRole.getRoleId()));
}
@@ -216,27 +214,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
UserInfo userInfo = new UserInfo();
userInfo.setSysUser(sysUser);
// 设置角色列表 (ID)
List<Long> roleIds = sysRoleService.findRolesByUserId(sysUser.getUserId())
.stream()
.map(SysRole::getRoleId)
.collect(Collectors.toList());
List<Long> roleIds = sysRoleService.findRolesByUserId(sysUser.getUserId()).stream().map(SysRole::getRoleId).collect(Collectors.toList());
userInfo.setRoles(ArrayUtil.toArray(roleIds, Long.class));
// 设置角色列表 (CODE)
List<String> roleCodes = sysRoleService.findRolesByUserId(sysUser.getUserId())
.stream()
.map(SysRole::getRoleCode)
.collect(Collectors.toList());
List<String> roleCodes = sysRoleService.findRolesByUserId(sysUser.getUserId()).stream().map(SysRole::getRoleCode).collect(Collectors.toList());
userInfo.setRoleCodes(ArrayUtil.toArray(roleCodes, String.class));
// 设置权限列表(menu.permission)
Set<String> permissions = new HashSet<>();
roleIds.forEach(roleId -> {
List<String> permissionList = sysMenuService.findMenuByRoleId(roleId)
.stream()
.filter(menu -> StrUtil.isNotEmpty(menu.getPermission()))
.map(SysMenu::getPermission)
.collect(Collectors.toList());
List<String> permissionList = sysMenuService.findMenuByRoleId(roleId).stream().filter(menu -> StrUtil.isNotEmpty(menu.getPermission())).map(SysMenu::getPermission).collect(Collectors.toList());
permissions.addAll(permissionList);
});
userInfo.setPermissions(ArrayUtil.toArray(permissions, String.class));
@@ -258,8 +246,24 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
if (ObjectUtil.isNotEmpty(userIds)) {
SysUserFaceDto faceDto = new SysUserFaceDto();
List<SysUserFaceVo> faceList = sysUserFaceMapper.groupConcatFaces(faceDto);
DataUtil.convertFacesList(list.getRecords(),
CollectionUtils.convertMap(faceList, SysUserFaceVo::getUserId));
DataUtil.convertFacesList(list.getRecords(), CollectionUtils.convertMap(faceList, SysUserFaceVo::getUserId));
}
// 审批流程
if (userDTO.getIsFindCheckUser()) {
List<String> processInstanceIds = list.getRecords().stream().map(UserVO::getProcessId).filter(ObjectUtil::isNotEmpty).distinct().toList();
if (ObjectUtil.isNotEmpty(processInstanceIds)) {
List<TaskDto> taskList = flowUtil.queryProcessInstanceList(SecurityUtils.getUser().getId().toString(), processInstanceIds);
if (ObjectUtil.isNotEmpty(taskList)) {
Map<String, TaskDto> taskMap = CollectionUtils.convertMap(taskList, TaskDto::getProcessInstanceId);
CollectionUtils.convertList(list.getRecords(), v -> {
TaskDto task = taskMap.get(v.getProcessId());
if (ObjectUtil.isNotEmpty(task)) {
v.setIsCheckUser(true);
}
return v;
});
}
}
}
}
return list;
@@ -338,8 +342,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
// 更新用户角色表
if (userDto.getRole() != null) {
sysUserRoleMapper
.delete(Wrappers.<SysUserRole>lambdaQuery().eq(SysUserRole::getUserId, userDto.getUserId()));
sysUserRoleMapper.delete(Wrappers.<SysUserRole>lambdaQuery().eq(SysUserRole::getUserId, userDto.getUserId()));
userDto.getRole().stream().map(roleId -> {
SysUserRole userRole = new SysUserRole();
userRole.setUserId(sysUser.getUserId());
@@ -350,8 +353,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
// 更新用户岗位表
if (userDto.getPost() != null) {
sysUserPostMapper
.delete(Wrappers.<SysUserPost>lambdaQuery().eq(SysUserPost::getUserId, userDto.getUserId()));
sysUserPostMapper.delete(Wrappers.<SysUserPost>lambdaQuery().eq(SysUserPost::getUserId, userDto.getUserId()));
userDto.getPost().stream().map(postId -> {
SysUserPost userPost = new SysUserPost();
userPost.setUserId(sysUser.getUserId());
@@ -403,15 +405,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
List<UserExcelVO> userExcelVOList = voList.stream().map(userVO -> {
UserExcelVO excelVO = new UserExcelVO();
BeanUtils.copyProperties(userVO, excelVO);
String roleNameList = userVO.getRoleList()
.stream()
.map(SysRole::getRoleName)
.collect(Collectors.joining(StrUtil.COMMA));
String roleNameList = userVO.getRoleList().stream().map(SysRole::getRoleName).collect(Collectors.joining(StrUtil.COMMA));
excelVO.setRoleNameList(roleNameList);
String postNameList = userVO.getPostList()
.stream()
.map(SysPost::getPostName)
.collect(Collectors.joining(StrUtil.COMMA));
String postNameList = userVO.getPostList().stream().map(SysPost::getPostName).collect(Collectors.joining(StrUtil.COMMA));
excelVO.setPostNameList(postNameList);
return excelVO;
}).collect(Collectors.toList());
@@ -442,26 +438,21 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
Set<String> errorMsg = new HashSet<>();
// 校验用户名是否存在
boolean exsitUserName = userList.stream()
.anyMatch(sysUser -> excel.getUsername().equals(sysUser.getUsername()));
boolean exsitUserName = userList.stream().anyMatch(sysUser -> excel.getUsername().equals(sysUser.getUsername()));
if (exsitUserName) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, excel.getUsername()));
}
// 判断输入的部门名称列表是否合法
Optional<SysDept> deptOptional = deptList.stream()
.filter(dept -> excel.getDeptName().equals(dept.getName()))
.findFirst();
Optional<SysDept> deptOptional = deptList.stream().filter(dept -> excel.getDeptName().equals(dept.getName())).findFirst();
if (!deptOptional.isPresent()) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_DEPT_DEPTNAME_INEXISTENCE, excel.getDeptName()));
}
// 判断输入的角色名称列表是否合法
List<String> roleNameList = StrUtil.split(excel.getRoleNameList(), StrUtil.COMMA);
List<SysRole> roleCollList = roleList.stream()
.filter(role -> roleNameList.stream().anyMatch(name -> role.getRoleName().equals(name)))
.collect(Collectors.toList());
List<SysRole> roleCollList = roleList.stream().filter(role -> roleNameList.stream().anyMatch(name -> role.getRoleName().equals(name))).collect(Collectors.toList());
if (roleCollList.size() != roleNameList.size()) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_ROLE_ROLENAME_INEXISTENCE, excel.getRoleNameList()));
@@ -469,9 +460,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
// 判断输入的部门名称列表是否合法
List<String> postNameList = StrUtil.split(excel.getPostNameList(), StrUtil.COMMA);
List<SysPost> postCollList = postList.stream()
.filter(post -> postNameList.stream().anyMatch(name -> post.getPostName().equals(name)))
.collect(Collectors.toList());
List<SysPost> postCollList = postList.stream().filter(post -> postNameList.stream().anyMatch(name -> post.getPostName().equals(name))).collect(Collectors.toList());
if (postCollList.size() != postNameList.size()) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_POST_POSTNAME_INEXISTENCE, excel.getPostNameList()));
@@ -501,9 +490,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
}
// 校验导入的内容
List<ErrorMessage> errorMessageList = (List<ErrorMessage>) bindingResult.getTarget();
List<String> deptNames =
excelList.stream().map(UserExcelFaceVo::getDeptName).distinct().filter(ObjectUtil::isNotEmpty)
.toList();
List<String> deptNames = excelList.stream().map(UserExcelFaceVo::getDeptName).distinct().filter(ObjectUtil::isNotEmpty).toList();
// 部门
List<SysDept> sysDeptList = sysDeptService.selectByNames(deptNames);
// 角色
@@ -512,16 +499,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
List<SysUser> userList = this.list();
String walletAutoCreate = ParamResolver.getStr("WALLET_AUTO_CREATE");
String userDefaultRole = ParamResolver.getStr("USER_DEFAULT_ROLE");
List<Long> roleIds = roleList.stream()
.filter(v -> ObjectUtil.equals(v.getRoleCode(), walletAutoCreate) || ObjectUtil.equals(
v.getRoleCode(), userDefaultRole)).map(SysRole::getRoleId).toList();
List<Long> roleIds = roleList.stream().filter(v -> ObjectUtil.equals(v.getRoleCode(), walletAutoCreate) || ObjectUtil.equals(v.getRoleCode(), userDefaultRole)).map(SysRole::getRoleId).toList();
// 读取图片
Map<String, PictureData> images = ExcelTool.getPictureFromExcel(file, 1);
for (UserExcelFaceVo v : excelList) {
Long deptId = null;
Set<String> errorMsg = new HashSet<>();
String username = v.getUsername(), name = v.getName(), mobile = v.getMobile(), sex = v.getSex(),
deptName = v.getDeptName();
String username = v.getUsername(), name = v.getName(), mobile = v.getMobile(), sex = v.getSex(), deptName = v.getDeptName();
if (ObjectUtil.isEmpty(name)) {
errorMsg.add("用户昵称为空");
}
@@ -531,8 +515,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
errorMsg.add("手机号码格式不正确");
} else {
// 校验用户名是否存在
boolean existMobile =
userList.stream().anyMatch(i -> ObjectUtil.equals(i.getPhone(), mobile.trim()));
boolean existMobile = userList.stream().anyMatch(i -> ObjectUtil.equals(i.getPhone(), mobile.trim()));
if (existMobile) {
errorMsg.add("手机号已存在");
}
@@ -540,8 +523,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
if (ObjectUtil.isEmpty(deptName)) {
errorMsg.add("部门名称为空");
} else {
Optional<SysDept> targetDept =
sysDeptList.stream().filter(i -> ObjectUtil.equals(i.getName(), deptName)).findFirst();
Optional<SysDept> targetDept = sysDeptList.stream().filter(i -> ObjectUtil.equals(i.getName(), deptName)).findFirst();
if (targetDept.isEmpty()) {
errorMsg.add("没有该部门");
} else {
@@ -576,8 +558,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 插入excel User
*/
private void insertExcelUser(UserExcelVO excel, Optional<SysDept> deptOptional, List<SysRole> roleCollList,
List<SysPost> postCollList, PjcloudUser user) {
private void insertExcelUser(UserExcelVO excel, Optional<SysDept> deptOptional, List<SysRole> roleCollList, List<SysPost> postCollList, PjcloudUser user) {
UserDTO userDTO = new UserDTO();
userDTO.setUsername(excel.getUsername());
userDTO.setPhone(excel.getPhone());
@@ -622,8 +603,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
public void insertExcelFace(UserDTO user, PictureData face) {
try {
// 查询用户
MultipartFile multipartFile = new MockMultipartFile("file", UUID.randomUUID() + "_face.png", "image/png",
new ByteArrayInputStream(face.getData()));
MultipartFile multipartFile = new MockMultipartFile("file", UUID.randomUUID() + "_face.png", "image/png", new ByteArrayInputStream(face.getData()));
Map data = (Map) sysFileService.uploadFile(multipartFile, null, null, null).getData();
String url = data.get("url").toString();
SysUserFaceEntity updateObj = new SysUserFaceEntity();
@@ -646,16 +626,14 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
@Transactional(rollbackFor = Exception.class)
public R<Boolean> registerUser(UserDTO userDto) {
// 判断用户名是否存在
boolean usernameExists = this.exists(Wrappers.<SysUser>lambdaQuery()
.eq(SysUser::getUsername, userDto.getUsername()));
boolean usernameExists = this.exists(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUsername, userDto.getUsername()));
if (usernameExists) {
String message = MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, userDto.getUsername());
return R.failed(message);
}
// 判断手机号是否存在
boolean phoneExists = this.exists(Wrappers.<SysUser>lambdaQuery()
.eq(SysUser::getPhone, userDto.getPhone()));
boolean phoneExists = this.exists(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getPhone, userDto.getPhone()));
if (phoneExists) {
String message = MsgUtils.getMessage(ErrorCodes.SYS_USER_PHONE_EXISTING, userDto.getPhone());
return R.failed(message);
@@ -700,10 +678,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
}
String password = ENCODER.encode(userDto.getNewpassword1());
this.update(Wrappers.<SysUser>lambdaUpdate()
.set(SysUser::getPassword, password)
.set(SysUser::getPasswordModifyTime, LocalDateTime.now())
.eq(SysUser::getUserId, user.getUserId()));
this.update(Wrappers.<SysUser>lambdaUpdate().set(SysUser::getPassword, password).set(SysUser::getPasswordModifyTime, LocalDateTime.now()).eq(SysUser::getUserId, user.getUserId()));
return R.ok();
}
@@ -712,29 +687,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
PjcloudUser user = SecurityUtils.getUser();
LambdaUpdateWrapper<SysUser> wrapper = null;
if (type.equals("wechat")) {
wrapper = Wrappers.<SysUser>lambdaUpdate()
.set(SysUser::getWxOpenid, null)
.eq(SysUser::getUserId, user.getId());
wrapper = Wrappers.<SysUser>lambdaUpdate().set(SysUser::getWxOpenid, null).eq(SysUser::getUserId, user.getId());
} else if (type.equals("gitee")) {
wrapper = Wrappers.<SysUser>lambdaUpdate()
.set(SysUser::getGiteeLogin, null)
.eq(SysUser::getUserId, user.getId());
wrapper = Wrappers.<SysUser>lambdaUpdate().set(SysUser::getGiteeLogin, null).eq(SysUser::getUserId, user.getId());
} else if (type.equals("osc")) {
wrapper = Wrappers.<SysUser>lambdaUpdate()
.set(SysUser::getOscId, null)
.eq(SysUser::getUserId, user.getId());
wrapper = Wrappers.<SysUser>lambdaUpdate().set(SysUser::getOscId, null).eq(SysUser::getUserId, user.getId());
} else if (type.equals("tencent")) {
wrapper = Wrappers.<SysUser>lambdaUpdate()
.set(SysUser::getQqOpenid, null)
.eq(SysUser::getUserId, user.getId());
wrapper = Wrappers.<SysUser>lambdaUpdate().set(SysUser::getQqOpenid, null).eq(SysUser::getUserId, user.getId());
} else if (type.equals("cp")) {
wrapper = Wrappers.<SysUser>lambdaUpdate()
.set(SysUser::getWxCpUserid, null)
.eq(SysUser::getUserId, user.getId());
wrapper = Wrappers.<SysUser>lambdaUpdate().set(SysUser::getWxCpUserid, null).eq(SysUser::getUserId, user.getId());
} else if (type.equals("dingding")) {
wrapper = Wrappers.<SysUser>lambdaUpdate()
.set(SysUser::getWxDingUserid, null)
.eq(SysUser::getUserId, user.getId());
wrapper = Wrappers.<SysUser>lambdaUpdate().set(SysUser::getWxDingUserid, null).eq(SysUser::getUserId, user.getId());
}
if (wrapper == null) {
return R.failed("解绑账号类型不存在");
@@ -779,20 +742,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
// 重置密码
String password = ENCODER.encode(userDto.getNewpassword1());
this.update(Wrappers.<SysUser>lambdaUpdate()
.set(SysUser::getPassword, password)
.set(SysUser::getPasswordModifyTime, LocalDateTime.now())
.set(SysUser::getPasswordExpireFlag, CommonConstants.STATUS_NORMAL)
.eq(SysUser::getUsername, userDto.getUsername()));
this.update(Wrappers.<SysUser>lambdaUpdate().set(SysUser::getPassword, password).set(SysUser::getPasswordModifyTime, LocalDateTime.now()).set(SysUser::getPasswordExpireFlag, CommonConstants.STATUS_NORMAL).eq(SysUser::getUsername, userDto.getUsername()));
return R.ok();
}
@Override
public List<Long> listUserIdByRoleIds(List<Long> roleIdList) {
return sysUserRoleMapper.selectList(Wrappers.<SysUserRole>lambdaQuery().in(SysUserRole::getRoleId, roleIdList))
.stream()
.map(SysUserRole::getUserId)
.collect(Collectors.toList());
return sysUserRoleMapper.selectList(Wrappers.<SysUserRole>lambdaQuery().in(SysUserRole::getRoleId, roleIdList)).stream().map(SysUserRole::getUserId).collect(Collectors.toList());
}
/**
@@ -834,9 +790,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
return;
}
String processId = dto.getProcessInstanceId();
SysUser detail = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>()
.eq(SysUser::getProcessId, processId)
);
SysUser detail = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getProcessId, processId));
if (ObjectUtil.isEmpty(detail)) {
return;
}
@@ -846,12 +800,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
}
try {
Boolean isConsent = flowUtil.isConsent(dto);
String processStatus =
isConsent ? TaskCheckStatusEnum.RESULT.getCode() : TaskCheckStatusEnum.REJECT.getCode();
String processStatus = isConsent ? TaskCheckStatusEnum.RESULT.getCode() : TaskCheckStatusEnum.REJECT.getCode();
SysUser updateUser = new SysUser();
updateUser.setUserId(detail.getUserId());
updateUser.setProcessStatus(processStatus);
updateUser.setPasswordModifyTime(LocalDateTime.now());
updateUser.setProcessTime(LocalDateTime.now());
baseMapper.updateById(updateUser);
} catch (Exception e) {
e.printStackTrace();
@@ -866,8 +819,20 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
@Override
@Transactional(rollbackFor = Exception.class)
public void applyFlow(SysUser user) {
UserFaceApplyFlowDto flowDto = new UserFaceApplyFlowDto();
String processId = flowUtil.startFlow("ADD_USER_FLOW", user, user.getUserId(), flowDto);
// 查询发起用户
SysUser applyUser = baseMapper.selectById(SecurityUtils.getUser().getId());
if (ObjectUtil.isEmpty(applyUser)) {
return;
}
SysDept applyDept = sysDeptService.getById(applyUser.getDeptId());
if (ObjectUtil.isEmpty(applyDept)) {
return;
}
UserApplyFlowDto flowDto = new UserApplyFlowDto();
flowDto.setApplyDeptName(applyDept.getName());
String processId = flowUtil.startFlow("ADD_USER_FLOW", applyUser, user.getUserId(), flowDto);
SysUser updateObj = new SysUser();
updateObj.setUserId(user.getUserId());
updateObj.setProcessId(processId);
@@ -14,7 +14,6 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.admin.api.entity.SysUser;
import com.bsd.pjcloud.admin.utils.flow.dto.UserApplyFlowDto;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.data.resolver.ParamResolver;
import com.bsd.pjcloud.flow.task.api.feign.RemoteFlowApiFlowService;
@@ -24,13 +23,13 @@ import com.bsd.pjcloud.flow.task.dto.ProcessInstanceParamDto;
import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto;
import com.bsd.pjcloud.flow.task.dto.TaskDto;
import com.bsd.pjcloud.flow.task.dto.TaskQueryParamDto;
import com.bsd.pjcloud.flow.task.dto.base.FlowBaseDto;
import com.bsd.pjcloud.flow.task.entity.Process;
import com.bsd.pjcloud.flow.task.vo.ProcessVO;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.ObjectUtil;
@@ -52,7 +51,7 @@ public class FlowUtil {
return startFlow(flowIdKey, user, businessId, null);
}
public <T extends UserApplyFlowDto> String startFlow(String flowIdKey, SysUser user, Long businessId, T dto) {
public <T extends FlowBaseDto> String startFlow(String flowIdKey, SysUser user, Long businessId, T dto) {
// 发起工作流
String defaultRole = ParamResolver.getStr(flowIdKey);
if (ObjectUtil.isEmpty(defaultRole)) {
@@ -7,4 +7,5 @@ import lombok.Data;
@Data
public class UserApplyFlowDto extends FlowBaseDto {
}
@@ -1,9 +1,11 @@
package com.bsd.pjcloud.admin.utils.flow.dto;
import com.bsd.pjcloud.flow.task.dto.base.FlowBaseDto;
import lombok.Data;
@Data
public class UserFaceApplyFlowDto extends UserApplyFlowDto {
public class UserFaceApplyFlowDto extends FlowBaseDto {
private String username;
@@ -179,7 +179,7 @@
<if test="query.userId != null">
AND u.user_id = #{query.userId}
</if>
<if test="query.processStatus != null">
<if test="query.processStatus != null and query.processStatus != '' ">
AND u.process_status = #{query.processStatus}
</if>
<if test="query.username != null and query.username != ''">
@@ -77,8 +77,7 @@ import java.util.*;
@Slf4j
@RequiredArgsConstructor
@Service
public class WalletRechargeApplyServiceImpl extends ServiceImpl<WalletRechargeApplyMapper, WalletRechargeApplyEntity>
implements WalletRechargeApplyService {
public class WalletRechargeApplyServiceImpl extends ServiceImpl<WalletRechargeApplyMapper, WalletRechargeApplyEntity> implements WalletRechargeApplyService {
static private final String TAG = "充值/扣款申请";
@@ -126,8 +125,7 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl<WalletRechargeAp
if (ObjectUtil.isNotEmpty(userIds)) {
R<List<SysUser>> userList = userService.getUserById(new ArrayList<>(userIds));
if (ObjectUtil.isNotEmpty(userList.getData())) {
DataUtil.convertUserList(list.getRecords(),
CollectionUtils.convertMap(userList.getData(), SysUser::getUserId));
DataUtil.convertUserList(list.getRecords(), CollectionUtils.convertMap(userList.getData(), SysUser::getUserId));
}
}
// 部门
@@ -239,8 +237,7 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl<WalletRechargeAp
if (ObjectUtil.isEmpty(list)) {
return R.failed();
}
list = list.stream().filter(v -> !ObjectUtil.isAllEmpty(v.getUsername(), v.getUserMobile(), v.getPrice()))
.toList();
list = list.stream().filter(v -> !ObjectUtil.isAllEmpty(v.getUsername(), v.getUserMobile(), v.getPrice())).toList();
if (ObjectUtil.isEmpty(list)) {
return R.failed();
}
@@ -303,9 +300,7 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl<WalletRechargeAp
if (i <= 0) {
throw new RuntimeException("导入失败");
}
List<WalletRechargeImportEntity> batchSaveList = list.stream()
.map(v -> WalletRechargeImportEntity.builder().price(v.getPriceNumber()).userId(v.getUserId())
.userDeptId(v.getUserDeptId()).build()).toList();
List<WalletRechargeImportEntity> batchSaveList = list.stream().map(v -> WalletRechargeImportEntity.builder().price(v.getPriceNumber()).userId(v.getUserId()).userDeptId(v.getUserDeptId()).build()).toList();
batchSaveList.forEach(v -> v.setApplyId(insertObj.getId()));
rechargeImportService.saveBatch(batchSaveList);
return R.ok(null, MsgUtils.getMessage(ErrorCodes.SYS_USER_IMPORT_SUCCEED));
@@ -320,9 +315,7 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl<WalletRechargeAp
return;
}
String processId = dto.getProcessInstanceId();
WalletRechargeApplyEntity detail = baseMapper.selectOne(new LambdaQueryWrapper<WalletRechargeApplyEntity>()
.eq(WalletRechargeApplyEntity::getProcessId, processId)
);
WalletRechargeApplyEntity detail = baseMapper.selectOne(new LambdaQueryWrapper<WalletRechargeApplyEntity>().eq(WalletRechargeApplyEntity::getProcessId, processId));
if (ObjectUtil.isEmpty(detail)) {
return;
}
@@ -332,16 +325,10 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl<WalletRechargeAp
}
try {
Boolean isConsent = flowUtil.isConsent(dto);
String processStatus =
isConsent ? TaskCheckStatusEnum.RESULT.getCode() : TaskCheckStatusEnum.REJECT.getCode();
baseMapper.updateById(
WalletRechargeApplyEntity.builder().id(detail.getId()).processTime(LocalDateTime.now())
.processStatus(processStatus).build());
String processStatus = isConsent ? TaskCheckStatusEnum.RESULT.getCode() : TaskCheckStatusEnum.REJECT.getCode();
baseMapper.updateById(WalletRechargeApplyEntity.builder().id(detail.getId()).processTime(LocalDateTime.now()).processStatus(processStatus).build());
if (isConsent) {
List<WalletRechargeImportEntity> importList =
rechargeImportService.list(new LambdaQueryWrapper<WalletRechargeImportEntity>()
.eq(WalletRechargeImportEntity::getApplyId, detail.getId())
);
List<WalletRechargeImportEntity> importList = rechargeImportService.list(new LambdaQueryWrapper<WalletRechargeImportEntity>().eq(WalletRechargeImportEntity::getApplyId, detail.getId()));
if (ObjectUtil.isEmpty(importList)) {
return;
}
@@ -355,8 +342,7 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl<WalletRechargeAp
if (ObjectUtil.isEmpty(wallet)) {
continue;
}
walletTransactionService.addWalletBalance(wallet.getId(), v.getPrice(), String.valueOf(v.getId()),
WalletBizEnum.BATCH);
walletTransactionService.addWalletBalance(wallet.getId(), v.getPrice(), String.valueOf(v.getId()), WalletBizEnum.BATCH);
}
log.info("|{}|审批回调成功,dto:|{}", TAG, JSON.toJSONString(dto));
}
@@ -370,8 +356,7 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl<WalletRechargeAp
@Override
@Transactional(rollbackFor = Exception.class)
public void updateBeforePrice(WalletRechargeApplyEntity detail) {
if (ObjectUtil.isNotEmpty(detail.getProcessStatus()) || ObjectUtil.equals(detail.getProcessStatus(),
TaskCheckStatusEnum.PADDING.getCode())) {
if (ObjectUtil.isNotEmpty(detail.getProcessStatus()) || ObjectUtil.equals(detail.getProcessStatus(), TaskCheckStatusEnum.PADDING.getCode())) {
return;
}
WalletTypeEntity walletType = walletTypeService.getById(detail.getWalletTypeId());
@@ -380,10 +365,7 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl<WalletRechargeAp
return;
}
String importTimeStr = LocalDateTimeUtil.format(detail.getImportTime(), DatePattern.NORM_MONTH_PATTERN);
List<WalletRechargeImportEntity> importList =
rechargeImportService.list(new LambdaQueryWrapper<WalletRechargeImportEntity>()
.eq(WalletRechargeImportEntity::getApplyId, detail.getId())
);
List<WalletRechargeImportEntity> importList = rechargeImportService.list(new LambdaQueryWrapper<WalletRechargeImportEntity>().eq(WalletRechargeImportEntity::getApplyId, detail.getId()));
if (ObjectUtil.isEmpty(importList)) {
return;
}
@@ -395,8 +377,7 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl<WalletRechargeAp
if (ObjectUtil.isEmpty(wallet)) {
continue;
}
Integer price = walletTransactionMapper.getTransactionPriceCount(importTimeStr, wallet.getId(),
WalletBizEnum.BATCH.getCode());
Integer price = walletTransactionMapper.getTransactionPriceCount(importTimeStr, wallet.getId(), WalletBizEnum.BATCH.getCode());
if (ObjectUtil.isNotEmpty(price)) {
item.setBeforePrice(price);
}
@@ -418,9 +399,7 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl<WalletRechargeAp
item.setUserMobile(v.getUserMobile());
item.setUserDeptName(v.getUserDeptName());
if (ObjectUtil.isNotEmpty(v.getPrice())) {
String price =
new BigDecimal(v.getPrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP)
.toString();
String price = new BigDecimal(v.getPrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString();
item.setPrice(price);
}
result.add(item);
@@ -453,22 +432,16 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl<WalletRechargeAp
walletTypeDto.setWalletTypeIds(walletTypeIds);
List<WalletTypeEntity> walletTypeList = walletTypeMapper.list(walletTypeDto);
if (ObjectUtil.isNotEmpty(walletTypeList)) {
WalletDataUtil.convertWalletTypeList(list,
CollectionUtils.convertMap(walletTypeList, WalletTypeEntity::getId));
WalletDataUtil.convertWalletTypeList(list, CollectionUtils.convertMap(walletTypeList, WalletTypeEntity::getId));
}
}
// 审批流程
if (dto.getIsFindCheckUser()) {
List<String> processInstanceIds =
list.stream().map(WalletRechargeApplyVo::getProcessId).filter(ObjectUtil::isNotEmpty).distinct()
.toList();
List<String> processInstanceIds = list.stream().map(WalletRechargeApplyVo::getProcessId).filter(ObjectUtil::isNotEmpty).distinct().toList();
if (ObjectUtil.isNotEmpty(processInstanceIds)) {
List<TaskDto> taskList =
flowUtil.queryProcessInstanceList(SecurityUtils.getUser().getId().toString(),
processInstanceIds);
List<TaskDto> taskList = flowUtil.queryProcessInstanceList(SecurityUtils.getUser().getId().toString(), processInstanceIds);
if (ObjectUtil.isNotEmpty(taskList)) {
Map<String, TaskDto> taskMap =
CollectionUtils.convertMap(taskList, TaskDto::getProcessInstanceId);
Map<String, TaskDto> taskMap = CollectionUtils.convertMap(taskList, TaskDto::getProcessInstanceId);
CollectionUtils.convertList(list, v -> {
TaskDto task = taskMap.get(v.getProcessId());
if (ObjectUtil.isNotEmpty(task)) {
@@ -483,10 +456,7 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl<WalletRechargeAp
}
private boolean isCheckData(Long walletId) {
Long count = baseMapper.selectCount(new LambdaQueryWrapper<WalletRechargeApplyEntity>()
.eq(WalletRechargeApplyEntity::getUserId, walletId)
.eq(WalletRechargeApplyEntity::getProcessStatus, NodeStatusEnum.JXZ.getCode())
);
Long count = baseMapper.selectCount(new LambdaQueryWrapper<WalletRechargeApplyEntity>().eq(WalletRechargeApplyEntity::getUserId, walletId).eq(WalletRechargeApplyEntity::getProcessStatus, NodeStatusEnum.JXZ.getCode()));
return count >= 3;
}