import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.datetime.DateTimeFormatter
import com.atlassian.jira.datetime.DateTimeStyle

//取系统字段Fix Version/s
def fixVersions = getFieldById("fixVersions").getFormValue()
//取系统字段Due Date
def dueDate = getFieldById("duedate")
//如果没有配置Due Date字段退出程序
if (!dueDate) {
    return
}
if (fixVersions) {
    def latestDate = getLatestDate(fixVersions);
    //没有设置版本时间把duedate置空
    if(!latestDate) {
        dueDate.setFormValue(null)
        return;
    }
    //获得日期格式转化 类
    DateTimeFormatter dateFormatter = ComponentAccessor.getComponent(DateTimeFormatter.class);
    //根据当前操作人获得它的日期格式
    dateFormatter = dateFormatter.forLoggedInUser();
    dueDate.setFormValue(dateFormatter.withStyle(DateTimeStyle.DATE_PICKER).format(latestDate as Date))
} else {
    dueDate.setFormValue(null)
}

//获取多个版本中最迟的完成时间
def getLatestDate(versions) {
    if(!(versions instanceof List)) {
        return ComponentAccessor.versionManager.getVersion(versions as Long).releaseDate;
    }
    def sortArray = [];
    for(x in versions) {
        def version = ComponentAccessor.versionManager.getVersion(x as Long)
        if(version.releaseDate) {
            sortArray.add(version.releaseDate);
        }
    }
    return sortArray.max();
}