Page tree
Skip to end of metadata
Go to start of metadata

前提条件

  1. 当前状态下有两个转换,一个转换执行后还在当前状态 - 转换A、一个转换执行后到下一个状态 - 转换B
  2. 俩个多用户选择器类型的自定义字段,一个为待审批 - 用户A、一个为已审批 - 用户B

实现方式


转换A:

限制 用户A 的用户数量大于一时显示

import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.user.ApplicationUser;

CustomField cf = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(10906L);
List<ApplicationUser> users = (List<ApplicationUser>) issue.getCustomFieldValue(cf);

if(users!=null&&users.size()>1){
    return true
}
return false


后处理 将当前用户在用户A字段中移除并添加到用户B字段

import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.security.JiraAuthenticationContext;
import com.atlassian.jira.user.ApplicationUser;
import com.atlassian.jira.issue.fields.CustomField;

// 获取当前用户
ApplicationUser user =  ComponentAccessor.getComponent(JiraAuthenticationContext.class).getLoggedInUser();

CustomField cf = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(10906L);
CustomField ycf = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(11102L);
List<ApplicationUser> users = (List<ApplicationUser>) issue.getCustomFieldValue(cf);

List<ApplicationUser> newUsers = new ArrayList<>();
for(ApplicationUser ownerUser:users){
    if(!user.getUsername().equals(ownerUser.getUsername())){
        newUsers.add(ownerUser);
    }
}

issue.setCustomFieldValue(cf,newUsers);


List<ApplicationUser> yUsers = (List<ApplicationUser>) issue.getCustomFieldValue(ycf);
if(yUsers==null){
    yUsers = new ArrayList<>();
}
yUsers.add(user);
issue.setCustomFieldValue(ycf,yUsers);



转换B:

限制 用户A 的用户数量等于一时显示

import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.user.ApplicationUser;

CustomField cf = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(10906L);
List<ApplicationUser> users = (List<ApplicationUser>) issue.getCustomFieldValue(cf);

if(users!=null&&users.size()==1){
    return true
}
return false


后处理 将当前用户在用户A字段中移除并添加到用户B字段

import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.security.JiraAuthenticationContext;
import com.atlassian.jira.user.ApplicationUser;
import com.atlassian.jira.issue.fields.CustomField;

// 获取当前用户
ApplicationUser user =  ComponentAccessor.getComponent(JiraAuthenticationContext.class).getLoggedInUser();

CustomField cf = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(10906L);
CustomField ycf = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(11102L);
List<ApplicationUser> users = (List<ApplicationUser>) issue.getCustomFieldValue(cf);

List<ApplicationUser> newUsers = new ArrayList<>();
for(ApplicationUser ownerUser:users){
    if(!user.getUsername().equals(ownerUser.getUsername())){
        newUsers.add(ownerUser);
    }
}

issue.setCustomFieldValue(cf,newUsers);


List<ApplicationUser> yUsers = (List<ApplicationUser>) issue.getCustomFieldValue(ycf);
if(yUsers==null){
    yUsers = new ArrayList<>();
}
yUsers.add(user);
issue.setCustomFieldValue(ycf,yUsers);

转换C:当下个状态想返回上一步时 - 回退

后处理 将用户B中的用户全部移动到用户A字段中

import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.security.JiraAuthenticationContext;
import com.atlassian.jira.user.ApplicationUser;
import com.atlassian.jira.issue.fields.CustomField;

// 获取当前用户
ApplicationUser user =  ComponentAccessor.getComponent(JiraAuthenticationContext.class).getLoggedInUser();

CustomField cf = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(10906L);
CustomField ycf = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(11102L);
List<ApplicationUser> users = (List<ApplicationUser>) issue.getCustomFieldValue(ycf);

List<ApplicationUser> yUsers = (List<ApplicationUser>) issue.getCustomFieldValue(ycf);

issue.setCustomFieldValue(cf,yUsers);


List<ApplicationUser> newusers = new ArrayList<>();
issue.setCustomFieldValue(ycf,newusers);
  • No labels