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.MutableIssue;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.search.SearchException;
import com.atlassian.jira.issue.search.SearchResults;
import com.atlassian.jira.jql.builder.JqlClauseBuilder;
import com.atlassian.jira.jql.builder.JqlQueryBuilder;
import com.atlassian.jira.service.AbstractService;
import com.atlassian.jira.user.ApplicationUser;
import com.atlassian.jira.web.bean.PagerFilter;
import com.atlassian.query.Query;
import com.opensymphony.module.propertyset.PropertySet;
import com.atlassian.jira.issue.customfields.option.Option;
import java.util.Date;
import java.util.List;
import java.util.Map;
 
 
        ApplicationUser user = ComponentAccessor.getUserManager().getUserByName("admin");
        //查询epic的字段为空的情况
        String jqlStory = "category = 开发类 and issuetype = Story AND (需求发起人 is EMPTY OR 需求发起部门 is EMPTY)";
        CustomField xqfqrCf = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(10324L);
        CustomField xqfqbmCf = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(10712L);
 
        try {
            SearchService searchService = (SearchService) ComponentAccessor.getComponentOfType(SearchService.class);
            SearchService.ParseResult parseResult = searchService.parseQuery(user, jqlStory);
            Query query = parseResult.getQuery();
            SearchResults searchResults = searchService.search(user, query, PagerFilter.getUnlimitedFilter());
            List<Issue> storyIssueList = searchResults.getResults();
 
            String jqlEpic = "issueFunction in epicsOf(\"key = %s \")";
 
            for (int i = 0; i < storyIssueList.size(); i++) {
 
                String jqlEpicNew = String.format(jqlEpic, storyIssueList.get(i).getKey());
 
                parseResult = searchService.parseQuery(user, jqlEpicNew);
                query = parseResult.getQuery();
                searchResults = searchService.search(user, query, PagerFilter.getUnlimitedFilter());
                List<Issue> epicIssueList = searchResults.getResults();
 
                Issue epicIssue = epicIssueList != null && epicIssueList.size() > 0 ? epicIssueList.get(0) : null;
                if(epicIssue==null){
                    continue;
                }
                ApplicationUser fqrValue = (ApplicationUser) epicIssue.getCustomFieldValue(xqfqrCf);
                Option fqbmValue = (Option) epicIssue.getCustomFieldValue(xqfqbmCf);
 
                MutableIssue storyIssue = ComponentAccessor.getIssueManager().getIssueObject(storyIssueList.get(i).getKey());
 
                storyIssue.setCustomFieldValue(xqfqrCf, fqrValue);
                storyIssue.setCustomFieldValue(xqfqbmCf, fqbmValue);
 
                ComponentAccessor.getIssueManager().updateIssue(user, storyIssue, EventDispatchOption.ISSUE_UPDATED, false);
                ComponentAccessor.getCommentManager().create(storyIssue,user,"补充数据",false);

             
            }
 
        } catch (SearchException e) {
 
        }
  • No labels