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