import com.atlassian.jira.component.ComponentAccessor
import com.opensymphony.workflow.InvalidInputException
def customFieldManager = ComponentAccessor.customFieldManager
def attachmentManager = ComponentAccessor.attachmentManager
// ======================
// 获取字段
// ======================
def ecuCategoryField = customFieldManager.getCustomFieldObject("customfield_10800")
def tcuSoftwareLayerField = customFieldManager.getCustomFieldObject("customfield_10801")
def mcuSoftwareLayerField = customFieldManager.getCustomFieldObject("customfield_10802")
def supplierInvolvedField = customFieldManager.getCustomFieldObject("customfield_10803")
def workSplitField = customFieldManager.getCustomFieldObject("customfield_10804")
def ecuCategory = issue.getCustomFieldValue(ecuCategoryField)
def tcuSoftwareLayer = issue.getCustomFieldValue(tcuSoftwareLayerField)
def mcuSoftwareLayer = issue.getCustomFieldValue(mcuSoftwareLayerField)
def supplierInvolved = issue.getCustomFieldValue(supplierInvolvedField)
def workSplit = issue.getCustomFieldValue(workSplitField)
if(!ecuCategory){
throw new InvalidInputException("ECU Category不能为空")
}
// ======================
// 根据规则计算需要CSV
// ======================
def requiredCsv = []
if(ecuCategory.value in ["TCU","TCU & MCU"]){
if(tcuSoftwareLayer?.value in ["ASW","ASW & BSW"]){
requiredCsv << "tcu-asw-components.csv"
}
if(tcuSoftwareLayer?.value in ["BSW","ASW & BSW"]){
requiredCsv << "tcu-bsw-supplier-components.csv"
}
}
if(ecuCategory.value in ["MCU","TCU & MCU"]){
if(mcuSoftwareLayer?.value in ["ASW","ASW & BSW"]){
requiredCsv << "mcu-asw-components.csv"
}
if(
mcuSoftwareLayer?.value in ["BSW","ASW & BSW"] &&
(
supplierInvolved?.value=="No" ||
workSplit?.value=="Yes"
)
){
requiredCsv << "mcu-bsw-components.csv"
}
if(
mcuSoftwareLayer?.value in ["BSW","ASW & BSW"] &&
supplierInvolved?.value=="Yes"
){
requiredCsv << "mcu-bsw-supplier-components.csv"
}
}
requiredCsv = requiredCsv.unique()
log.error("需要上传组件CSV:${requiredCsv}")
// ======================
// 校验附件
// ======================
def uploadedFiles = attachmentManager.getAttachments(issue)
.collect{
it.filename.toLowerCase()
}
def missingFiles = requiredCsv.findAll{
!uploadedFiles.contains(it)
}
if(!missingFiles.isEmpty()){
throw new InvalidInputException(
"缺少组件配置文件,请上传以下CSV文件:\n" +
missingFiles.join("\n")
)
}
log.error("组件CSV校验通过")
Overview
Content Tools