import com.atlassian.jira.bc.issue.search.SearchService;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.event.type.EventDispatchOption;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.issue.changehistory.ChangeHistoryManager;
import com.atlassian.jira.issue.history.ChangeItemBean;
import com.atlassian.jira.issue.search.SearchException;
import com.atlassian.jira.issue.search.SearchResults;
import com.atlassian.jira.user.ApplicationUser;
import com.atlassian.jira.user.util.UserManager;
import com.atlassian.jira.web.bean.PagerFilter;
import com.atlassian.query.Query;
import java.util.List;
UserManager userManager = ComponentAccessor.getUserManager();
ApplicationUser user = userManager.getUserByName("admin");
String jql = "project = demo and assignee changed AFTER 2021-10-29 and assignee changed BEFORE 2021-10-31 and assignee changed BY admin ";
try {
SearchService searchService = (SearchService) ComponentAccessor.getComponentOfType(SearchService.class);
SearchService.ParseResult parseResult = searchService.parseQuery(user, jql);
Query query = parseResult.getQuery();
SearchResults searchResults = searchService.search(user, query, PagerFilter.getUnlimitedFilter());
List<Issue> storyIssueList = searchResults.getResults();
IssueManager issueManager = ComponentAccessor.getIssueManager();
ChangeHistoryManager changeHistoryManager = ComponentAccessor.getChangeHistoryManager();
for (int i = 0; i < storyIssueList.size(); i++) {
MutableIssue issue =issueManager.getIssueObject(storyIssueList.get(i).getKey());
List<ChangeItemBean> changeItemBeanList = changeHistoryManager .getChangeItemsForField(issue,"assignee");
if(changeItemBeanList==null || changeItemBeanList.size()==0){
continue;
}
ApplicationUser user1 = issue.getAssigneeUser();
if(user1==null){
return;
}
ChangeItemBean changeItemBean = changeItemBeanList.get(changeItemBeanList.size()-1);
String assigneeTo = changeItemBean.getTo();
String assigneeFrom = changeItemBean.getFrom();
if(user1.getKey().equalsIgnoreCase(assigneeFrom)){
continue;
}
if(!user1.getKey().equalsIgnoreCase(assigneeTo)){
continue;
}
ApplicationUser user2 = userManager.getUserByKey(assigneeFrom);
issue.setAssignee(user2);
ComponentAccessor.getIssueManager().updateIssue(user, issue, EventDispatchOption.DO_NOT_DISPATCH, false);
}
} catch (SearchException e) {
e.printStackTrace();
}
Overview
Content Tools