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) { }
Overview
Content Tools