作者:Eddy  历史版本:1  更新时间:2024-11-20 15:41

适用版本:所有版本;

适用哪些服务?

  1. platform服务
  2. business服务
  3. 通过business或skeleton创建的服务

如何获取用户上下文信息?

  1. 用户上下文工具类com.lc.ibps.base.web.context.ContextUtil

  2. 可获取数据

    1. 获取当前用户ID:ContextUtil.getCurrentUserId()
    2. 获取当前用户名:ContextUtil.getCurrentUserAccount()
    3. 获取当前用户姓名:ContextUtil.getCurrentUserFullName()
    4. 获取当前用户客户端IP:ContextUtil.getCurrentUserIp()
    5. 获取当前用户请求接口地址:ContextUtil.getCurrentUri()
    6. 获取当前用户令牌:ContextUtil.getCurrentAccessToken()
    7. 获取当前用户接入凭证标识:ContextUtil.getCurrentClientId()
    8. 获取当前用户对象:ContextUtil.getCurrentUser()
    9. 获取当前用户是否管理员:ContextUtil.isSuper()
    10. 获取当前用户组织对象:ContextUtil.getCurrentOrg()
    11. 获取当前用户组织ID:ContextUtil.getCurrentOrgId()
    12. 获取当前用户组织名称:ContextUtil.getCurrentOrgName()
    13. 获取当前用户岗位:ContextUtil.getCurrentPosition()
    14. 获取当前用户岗位ID:ContextUtil.getCurrentPositionId()
    15. 获取当前用户岗位名称:ContextUtil.getCurrentPositionName()
    16. 获取当前用户角色集合:ContextUtil.getCurrentRole()
    17. 获取当前用户国际化语言:ContextUtil.getLocale()
  3. 示例

    1. com.lc.ibps.platform.script.script.BpmnScript.getBpmTaskIds(String, String)

    2. 代码

      public String getBpmTaskIds(String bizId, String userId) {
       if(StringUtil.isBlank(userId)) {
           userId = ContextUtil.getCurrentUserId();// 使用位置,关注这行即可
       }
      
       List<String> taskIds = new ArrayList<>();
       APIRequest request = new APIRequest();
       request.setRequestPage(null);
       request.addParameters("Q^BIZ_KEY_^S", bizId);
       APIResult<APIPageList<BpmInstPo>> instResult = bpmInstService.query(request);
       if(instResult.isSuccess() && BeanUtils.isNotEmpty(instResult.getData())) {
           if(instResult.getData().getDataResult().size() > 1) {
               throw new BpmnNotUniqueException(StateEnum.ERROR_BPMN_INSTANCE_NO_UNIQUE.getText());
           }
           if(instResult.getData().getDataResult().size() == 0) {
               throw new BpmnNotTaskException(StateEnum.ERROR_BPMN_INSTANCE_NO_TASK.getText());
           }
           BpmInstPo inst = instResult.getData().getDataResult().get(0);
           IBpmTaskService bpmTaskService = AppUtil.getBean(IBpmTaskService.class);
           request.clear();
           request.addParameters("userId", userId);
           request.addParameters("Q^PROC_INST_ID_^S", inst.getId());
           APIResult<APIPageList<BpmTaskPo>> taskResult = bpmTaskService.queryByUserId(request);
           if(taskResult.isSuccess() && BeanUtils.isNotEmpty(taskResult.getData())) {
               List<BpmTaskPo> tasks = taskResult.getData().getDataResult();
               for(BpmTaskPo task : tasks) {
                   taskIds.add(task.getId());
               }
           }
           else if(taskResult.isFailed()) {
               throw new NotRequiredI18nException(taskResult.getState(),taskResult.getCause());
           }
       }
       else if(instResult.isFailed()) {
           throw new NotRequiredI18nException(instResult.getState(),instResult.getCause());
       }
      
       return String.join(StringPool.COMMA, taskIds);
      }