From 2c60ef89d3fadc774d78335cd42114a39b11eaa3 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Mon, 16 Oct 2023 13:35:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=80=89=E4=BA=BA=E7=BB=84=E4=BB=B6-?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E7=BB=84=E4=BA=BA=E5=91=98=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activiti/controller/UserController.java | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/controller/UserController.java diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/controller/UserController.java b/laws-modules/src/main/java/com/jero/modules/activiti/controller/UserController.java new file mode 100644 index 00000000..b6ef96c7 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/controller/UserController.java @@ -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> 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> result = new Result<>(); + + // 处理手机号和邮箱,进行对应加密 + Map parameterMap = req.getParameterMap(); + this.sysUserService.encryptReqMapData(parameterMap); + user.setEmail(this.sysUserService.proceedEmailEncrypt(user.getEmail())); + user.setPhone(this.sysUserService.proceedPhoneEncrypt(user.getPhone())); + + LambdaQueryWrapper workingGroupUserWrapper = new LambdaQueryWrapper<>(); + workingGroupUserWrapper.eq(LawsWorkingGroupUser::getDelFlag, YesOrNoEnum.NO.getValue()); + List worggroupUserIdList = Optional.ofNullable(workingGroupUserService.list(workingGroupUserWrapper)) + .map(list -> list.stream().map(LawsWorkingGroupUser::getUserId).collect(Collectors.toList())) + .orElse(Collections.emptyList()); + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(user, parameterMap); + + // 获取内部工作组用户id集合 + queryWrapper.in("id", worggroupUserIdList); + + Page page = new Page<>(pageNo, pageSize); + List subDepIds = null; + if (StrUtil.isNotEmpty(departId)) { + subDepIds = sysDepartService.getSubDepIdsByDepId(departId); + } + + IPage pageList = sysUserService.queryPage(page, subDepIds, roleId, queryWrapper); + + //批量查询用户的所属部门 + //step.1 先拿到全部的 useids + List userIds = pageList.getRecords().stream().map(SysUser::getId).collect(Collectors.toList()); + if (!userIds.isEmpty()) { + //step.2 通过 useids,一次性查询用户的所属部门名字 + Map useDepNames = sysUserService.getDepNamesByUserIds(userIds); + //step.3 通过 useids,一次性查询用户的角色名字 + Map 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; + } +}