Page tree
Skip to end of metadata
Go to start of metadata
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();
        }

  • No labels