Hello!
I use listener (scriptrunner)
Events: issue updated
Task: I have 2 values 1. Dropdown selector (def field_2) 2. Multiple selecor (def field_3)
I need to do something like that
if ( CRM S or CRM M or CRM L in field_3) { field_2 = "не XS"}
else { field_2 ="XS"}
This is my script:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.CustomFieldManager
def issueManager = ComponentAccessor.issueManager
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def issue = event.issue
def field_2 = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Предварительный размер")
//provisional size - dropdown selector
def field_3 = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Размер (ы) заявки")
//issue size - multiple value field
def newValueSize = issue.getCustomFieldValue(field_3) as List
log.warn("*****")
log.warn(field_3 )
log.warn(newValueSize )
log.warn("*****")
def fieldConfig = field_2.getRelevantConfig(issue)
def optionValue = ComponentAccessor.optionsManager.getOptions(fieldConfig)?.find { it.toString() == 'XS' }
def optionValueNoXS = ComponentAccessor.optionsManager.getOptions(fieldConfig)?.find { it.toString() == 'не XS' }
//def giantBrap = newValueSize.contains("CRM S").toString() || newValueSize.contains("CRM M").toString() || newValueSize.contains("CRM L").toString()
log.warn("Test1 issue ${issue.key} ${issue.getCustomFieldValue(field_3)}")
// !!! if (newValueSize.contains("CRM S") - doesnt triggered !!!
//newValueSize.contains("VALUE").toString() - doesnt work correct, it ALWAYS triggered if-part ot this code ( i have no idea why, but .toString() ALWAYS trigered if-part)
if (newValueSize.contains('CRM S')|| newValueSize.contains('CRM M')||newValueSize.contains('CRM L')){
log.warn("Test2 issue ${issue.key}")
field_2.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(field_2), optionValueNoXS), new DefaultIssueChangeHolder())
log.warn("Test3 issue ${issue.key} ${issue.id}")
}
else {
field_2.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(field_2), optionValue), new DefaultIssueChangeHolder())
}
//Ниже представлен блок реиндекса задачи, возможно, следует проработать такой кейс, чтобы вывести его в отдельный файл, а потом подгружать во все необходимые скрипты, чтобы не дублировать код
//reindex issue
import com.atlassian.jira.issue.index.IssueIndexingService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.util.ImportUtils
import org.apache.log4j.Category
def issueIndexingService = ComponentAccessor.getComponent(IssueIndexingService)
boolean wasIndexing = ImportUtils.isIndexIssues();
ImportUtils.setIndexIssues(true);
log.warn("Reindex issue ${issue.key} ${issue.id}")
issueIndexingService.reIndex(issueManager.getIssueObject(issue.id));
ImportUtils.setIndexIssues(wasIndexing);
Picture: