使用Groovy JAVA在JIRA中设置customField值

时间:2016-10-13 14:34:19

标签: java groovy jira

好吧也许我只是真的很陌生,但我正在尝试使用此代码并且它不会更新自定义字段值。

知道为什么不呢?我猜它是我的结局。非常感谢任何帮助

def rush = getCustomFieldValue("Rush?") 
if (rush=="Yes") { 
    def cal = new java.util.GregorianCalendar();
    cal.setTimeInMillis(customField.setCustomFieldValue("Rush Date", getTime())); 
    return new java.sql.Timestamp(cal.getTimeInMillis()); 
} 
else { 
    return null
}

解决

import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.customfields.manager.OptionsManager

def componentManager = ComponentManager.instance
def optionsManager = ComponentManager.getComponentInstanceOfType(OptionsManager.class)
def customFieldManager = componentManager.getCustomFieldManager()

def cf = customFieldManager.getCustomFieldObjectByName("Rush?")
def rush = issue.getCustomFieldValue(cf)
def paymentDate = new Date()

if (rush?.value=="Yes"){
if (paymentDate){ 
    def cal = new java.util.GregorianCalendar();

    cal.setTimeInMillis(paymentDate.getTime()); 
    cal.add(java.util.Calendar.DAY_OF_MONTH, 0);

    return new java.sql.Timestamp(cal.getTimeInMillis()); 
} 
else { 
    return null 
}}

1 个答案:

答案 0 :(得分:1)

您的代码段目前无法解决以下错误:

  

Caught:groovy.lang.MissingMethodException:没有方法签名:Custom.getTime()适用于参数类型:()values:[]

那里的getTime()没有被任何对象调用。我想你只想在setCustomFieldValuecustomField,因此,cal.setTimeInMillis()¹不需要:

def customField
customField = [
    'Rush?':'Yes',
    setCustomFieldValue : { field, value -> customField[field] = value }
]

getCustomFieldValue = { customField[it] }

def rush = getCustomFieldValue("Rush?") 
def cal = new java.util.GregorianCalendar()

def parseRush = {
    if (rush=="Yes") { 
        customField.setCustomFieldValue("Rush Date", cal.getTime())
        return new java.sql.Timestamp(cal.getTimeInMillis())
    } 
    else { 
        return null
    }
}

assert parseRush() == new java.sql.Timestamp(cal.timeInMillis)
assert customField['Rush Date'] == cal.time