feat: 选人组件-工作组人员列表接口

This commit is contained in:
2023-10-16 13:35:57 +08:00
parent 281f3bb51d
commit 2c60ef89d3
@@ -0,0 +1,117 @@
package com.jero.modules.activiti.controller;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.sys.entity.LawsWorkingGroupUser;
import com.jero.modules.sys.service.ILawsWorkingGroupService;
import com.jero.modules.sys.service.ILawsWorkingGroupUserService;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysDepartService;
import com.jero.modules.system.service.ISysUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author: Mzaxd
* @Date: 2023/10/16 11:43
* 流程中的选人组件接口
*/
@Slf4j
@RestController
@Api(tags = "工作流选人接口")
@RequestMapping("/act/user")
public class UserController {
@Resource
private ISysUserService sysUserService;
@Resource
private ISysDepartService sysDepartService;
@Resource
private ILawsWorkingGroupUserService workingGroupUserService;
/**
* 获取工作组用户列表数据
*
* @param user
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "工作流选人接口-工作组人员分页列表")
@ApiOperation(value="工作流选人接口-工作组人员分页列表", notes="流程中心-工作组人员分页列表")
@GetMapping("/workGroupPage")
public Result<IPage<SysUser>> queryWorkGroupPageList(SysUser user,
@RequestParam(name = "departId", required = false) String departId,
@RequestParam(name = "roleId", required = false) String roleId,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) {
Result<IPage<SysUser>> result = new Result<>();
// 处理手机号和邮箱,进行对应加密
Map<String, String[]> parameterMap = req.getParameterMap();
this.sysUserService.encryptReqMapData(parameterMap);
user.setEmail(this.sysUserService.proceedEmailEncrypt(user.getEmail()));
user.setPhone(this.sysUserService.proceedPhoneEncrypt(user.getPhone()));
LambdaQueryWrapper<LawsWorkingGroupUser> workingGroupUserWrapper = new LambdaQueryWrapper<>();
workingGroupUserWrapper.eq(LawsWorkingGroupUser::getDelFlag, YesOrNoEnum.NO.getValue());
List<String> worggroupUserIdList = Optional.ofNullable(workingGroupUserService.list(workingGroupUserWrapper))
.map(list -> list.stream().map(LawsWorkingGroupUser::getUserId).collect(Collectors.toList()))
.orElse(Collections.emptyList());
QueryWrapper<SysUser> queryWrapper = QueryGenerator.initQueryWrapper(user, parameterMap);
// 获取内部工作组用户id集合
queryWrapper.in("id", worggroupUserIdList);
Page<SysUser> page = new Page<>(pageNo, pageSize);
List<String> subDepIds = null;
if (StrUtil.isNotEmpty(departId)) {
subDepIds = sysDepartService.getSubDepIdsByDepId(departId);
}
IPage<SysUser> pageList = sysUserService.queryPage(page, subDepIds, roleId, queryWrapper);
//批量查询用户的所属部门
//step.1 先拿到全部的 useids
List<String> userIds = pageList.getRecords().stream().map(SysUser::getId).collect(Collectors.toList());
if (!userIds.isEmpty()) {
//step.2 通过 useids,一次性查询用户的所属部门名字
Map<String, String> useDepNames = sysUserService.getDepNamesByUserIds(userIds);
//step.3 通过 useids,一次性查询用户的角色名字
Map<String, String> useRoleNames = sysUserService.getRoleNamesByUserIds(userIds);
//step.4 遍历赋值
pageList.getRecords().forEach(item -> {
item.setOrgCodeTxt(useDepNames.get(item.getId()));
item.setRoleTxt(useRoleNames.get(item.getId()));
});
}
result.setSuccess(true);
result.setResult(pageList);
log.info(pageList.toString());
return result;
}
}