import java.lang.Boolean import java.util.Map; import java.util.List; import com.onresolve.scriptrunner.db.DatabaseUtil; import com.atlassian.jira.component.ComponentAccessor; import com.atlassian.jira.issue.fields.CustomField; import com.atlassian.jira.issue.customfields.manager.OptionsManager; import com.atlassian.jira.issue.customfields.option.Option; import com.atlassian.jira.issue.customfields.option.Options; import com.atlassian.jira.issue.fields.config.FieldConfig; import com.atlassian.jira.issue.fields.config.FieldConfigScheme; import com.atlassian.jira.issue.fields.config.manager.FieldConfigSchemeManager; import com.atlassian.jira.issue.issuetype.IssueType; import com.atlassian.jira.project.Project; DatabaseUtil.withSql('SelectCf') { sql -> List<Map> list = new ArrayList(); // hktx 查询中间表 list.addAll(sql.rows('select cmdb_name,jira_name,cmdb_status from myoption')) // hktx 需要维护的选择类自定义字段的ID值: 相关系统,关联系统 // 相关系统 CustomField customField = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(10420L);// //关联系统 //CustomField customField = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(11101L);// for(int i=0;i<list.size();i++){ Map<String,Object> keyMap = (Map)list.get(i); log.debug("============================== begin "); log.debug(keyMap); //log.debug(keyMap.get("id")); //log.debug(keyMap.get("cmdb_name")); //log.debug(keyMap.get("jira_name")); //log.debug(keyMap.get("cmdb_status")); Long id = (Long)keyMap.get("id"); String cmdb_name = (String)keyMap.get("cmdb_name"); if(cmdb_name ==null){ continue; } updateOption(keyMap,customField); log.debug("============================== end "); } } def updateOption(Map<String,Object> keyMap,CustomField customField) { //确定表中的数据列以及数据类型 String optionvalue = (String)keyMap.get("cmdb_name"); //主要通过optionvalueold它,来识别是否已经在JIRA中创建 //这空或者与在jira中对比没有找到,都为新增 String optionvalueold = (String)keyMap.get("jira_name"); String cmdb_status = (String)keyMap.get("cmdb_status"); boolean disabled = false; if("停运".equalsIgnoreCase(cmdb_status)){ disabled = true; } try { OptionsManager optionsManager = ComponentAccessor.getOptionsManager(); //获得自定义字段创建的,上下文方案 FieldConfigSchemeManager fieldConfigSchemeManager = ComponentAccessor.getFieldConfigSchemeManager(); List<FieldConfigScheme> schemes = fieldConfigSchemeManager.getConfigSchemesForField(customField); for (int i = 0; i < schemes.size(); i++) { //只对全局的来处理,如果不是全局的,需要相应,project,issuetype的参数。 if(!schemes.get(i).isGlobal()){ continue; } Option option = null; //全局的只有一个 FieldConfig config = schemes.get(i).getOneAndOnlyConfig(); Options options =optionsManager.getOptions(config); List<Option> optionList =options.getRootOptions(); for(int m=0;m<optionList.size();m++){ Option optionDb = optionList.get(m); if(optionDb.getValue().equalsIgnoreCase(optionvalueold)){ option = optionDb; break; } } log.debug("find the option : " + option ); if(option==null){ //没有就创建 option = optionsManager.createOption(config, null, options.size()+1,optionvalue); optionsManager.setValue(option, optionvalue); log.debug("not find it and created :"+optionvalue+" and result is :"+option); }else{ //有就更新 option.setValue(optionvalue); option.setDisabled(disabled); if(!disabled){ optionsManager.enableOption(option); } if(disabled){ optionsManager.disableOption(option); } optionsManager.setValue(option, optionvalue); log.debug("find it and update :"+optionvalue+" and result is :"+option); } option = null; } } catch (Exception e) { e.printStackTrace(); } }
Overview
Content Tools