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) {
} |