如果自定义字段值小于1,则使用Groovy阻止Jira打开票据

如果自定义字段值小于1,则使用Groovy阻止Jira打开票据,groovy,jira,Groovy,Jira,如果自定义字段值小于1,我需要阻止在Jira上创建问题 我尝试使用此代码,但没有成功,自定义字段ID为:13200 import com.atlassian.jira.component.ComponentAccessor; import com.atlassian.jira.issue.CustomFieldManager; import com.atlassian.jira.issue.fields.CustomField; import com.atlassian.jira.issue.I

如果自定义字段值小于1,我需要阻止在Jira上创建问题

我尝试使用此代码,但没有成功,自定义字段ID为:13200

import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.Issue;
import com.opensymphony.workflow.InvalidInputException;
import org.apache.log4j.Category;


import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.Issue;
import groovy.xml.MarkupBuilder;
import com.atlassian.jira.config.properties.APKeys;

def issueManager = ComponentAccessor.getIssueManager()
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def cField = customFieldManager.getCustomFieldObject("customfield_13200")
def cFieldValue = issue.getCustomFieldValue(cField) as Integer


if (cFieldValue > 0){
log.debug("ERRORE, QUANTITA' NON DISPONIBILI");
throw "ERRORE";
throw new InvalidInputException("QUANTITA' NON DISPONIBILI");
return cFieldValue;
return false;
}
该自定义字段取自另一个DB(通过元素链接),它是特定项目的数量,如果数量小于0,则票证应引发异常,但其工作方式与我不一样,在日志中出现以下错误:

For input string: "{"keys":["47"]}"
java.lang.NumberFormatException: For input string: "{"keys":["47"]}"
 at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
 at java.lang.Integer.parseInt(Integer.java:580)
 at java.lang.Integer.valueOf(Integer.java:766)
取的值是正确的(47),但可能是错误的类型

有人能帮我吗

谢谢,, Luca

您的变量内容是“{”键“:[“47”]}”,而不是“47”。您可以在这里看到:java.lang.NumberFormatException:对于输入字符串:“{”keys:[“47”]}”

这就是为什么会出现此异常,因为“{”键“:[“47”]}”无法转换为数字,因此请仔细检查要转换为数字的变量的值

import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.component.ComponentAccessor
import com.opensymphony.workflow.InvalidInputException

def customFieldManager = ComponentAccessor.getCustomFieldManager()
def Scorte = customFieldManager.getCustomFieldObject("customfield_13200")
def ValoreScorte = issueObject.getCustomFieldValue(Scorte)
def QuantitaRichiesta = customFieldManager.getCustomFieldObject("customfield_13201")
def ValoreQuantitaRichiesta = issueObject.getCustomFieldValue(QuantitaRichiesta)
def casting_ValoreScorte = ValoreScorte.toString().replaceAll("[^\\d.]", "") 
def Scorte_Intero = casting_ValoreScorte as int
def QuantitaRichiesta_Intero = ValoreQuantitaRichiesta as int

if (Scorte_Intero <= 0 || QuantitaRichiesta_Intero > Scorte_Intero){
log.debug("ERRORE, QUANTITA' NON DISPONIBILI")
throw new InvalidInputException("","QUANTITA' NON DISPONIBILI")
}
导入com.atlassian.jira.component.component访问器 导入com.opensymphony.workflow.InvalidInputException def customFieldManager=ComponentAccessor.getCustomFieldManager() def Scorte=customFieldManager.getCustomFieldObject(“customfield_13200”) def ValoreScorte=issueObject.getCustomFieldValue(Scorte) def QuantitaRichiesta=customFieldManager.getCustomFieldObject(“customfield_13201”) def ValoreQuantitaRichiesta=issueObject.getCustomFieldValue(QuantitaRichiesta) def casting_ValoreScorte=ValoreScorte.toString().replaceAll(“[^\\d.]”,“”) def Scorte_Intero=按整数计算从价计分 def QuantitaRichiesta_Intero=从价QuantitaRichiesta as int if(Scorte_Intero Scorte_Intero){ log.debug(“ERRORE,QUANTITA'NON DISPONIBILI”) 抛出新的InvalidInputException(“,“QUANTITA'NON DISPONIBILI”) }

这是最后的代码:)谢谢你的帮助

谢谢你的意见!你是对的,它选择了整个东西,所以我尝试了以下方法:
def cFieldValue=issue.getCustomFieldValue(cField)def casting\u cFieldValue=cFieldValue.toString().replaceAll(“[^\\d.]”,“”)def valore\u intero=casting\u cFieldValue.toInteger()
但我收到这样的消息:java.lang.String不能转换为java.lang.Throwable java.lang.ClassCastException:java.lang.String不能转换为java.lang.Throwable有什么想法吗?顺便说一句,我也在谷歌搜索。。再次感谢您,
println casting\u cFieldvalue
println casting\u cFieldvalue.getClass()
的输出是什么?