fix: jira勾选模板缺陷图片显示

--bug=1009500 --user=陈建星 【github#9176】【对接jira】创建jira缺陷时,ms系统里面的描述字段粘贴图片,但jira系统没有展示图片出来 https://www.tapd.cn/55049933/s/10979000
This commit is contained in:
chenjianxing 2022-01-25 12:14:25 +08:00 committed by jianxing
parent 5d61a53691
commit 2292cf08b0
2 changed files with 31 additions and 3 deletions

View File

@ -498,7 +498,12 @@ public abstract class AbstractIssuePlatform implements IssuesPlatform {
Set<String> ids = issueFields.stream().map(i -> ((JSONObject) i).getString("id")).collect(Collectors.toSet()); Set<String> ids = issueFields.stream().map(i -> ((JSONObject) i).getString("id")).collect(Collectors.toSet());
JSONArray defaultFields = JSONArray.parseArray(defaultCustomField); JSONArray defaultFields = JSONArray.parseArray(defaultCustomField);
defaultFields.forEach(item -> { // 如果自定义字段里没有模板新加的字段就把新字段加上 defaultFields.forEach(item -> { // 如果自定义字段里没有模板新加的字段就把新字段加上
if (!ids.contains(((JSONObject) item).getString("id"))) { String id = ((JSONObject) item).getString("id");
if (StringUtils.isBlank(id)) {
id = ((JSONObject) item).getString("key");
((JSONObject) item).put("id", id);
}
if (!ids.contains(id)) {
issueFields.add(item); issueFields.add(item);
} }
}); });

View File

@ -141,12 +141,12 @@ public class JiraPlatform extends AbstractIssuePlatform {
setUserConfig(); setUserConfig();
Project project = getProject(); Project project = getProject();
List<File> imageFiles = getImageFiles(issuesRequest);
JSONObject addJiraIssueParam = buildUpdateParam(issuesRequest, getIssueType(project.getIssueConfig()), project.getJiraKey()); JSONObject addJiraIssueParam = buildUpdateParam(issuesRequest, getIssueType(project.getIssueConfig()), project.getJiraKey());
JiraAddIssueResponse result = jiraClientV2.addIssue(JSONObject.toJSONString(addJiraIssueParam)); JiraAddIssueResponse result = jiraClientV2.addIssue(JSONObject.toJSONString(addJiraIssueParam));
JiraIssue issues = jiraClientV2.getIssues(result.getId()); JiraIssue issues = jiraClientV2.getIssues(result.getId());
List<File> imageFiles = getImageFiles(issuesRequest.getDescription());
imageFiles.forEach(img -> jiraClientV2.uploadAttachment(result.getKey(), img)); imageFiles.forEach(img -> jiraClientV2.uploadAttachment(result.getKey(), img));
String status = getStatus(issues.getFields()); String status = getStatus(issues.getFields());
@ -168,6 +168,24 @@ public class JiraPlatform extends AbstractIssuePlatform {
return super.getProject(this.projectId, Project::getJiraKey); return super.getProject(this.projectId, Project::getJiraKey);
} }
private List<File> getImageFiles(IssuesUpdateRequest issuesRequest) {
List<File> files = getImageFiles(issuesRequest.getDescription());
List<CustomFieldItemDTO> customFields = CustomFieldService.getCustomFields(issuesRequest.getCustomFields());
customFields.forEach(item -> {
String fieldName = item.getCustomData();
if (StringUtils.isNotBlank(fieldName)) {
if (item.getValue() != null) {
if (StringUtils.isNotBlank(item.getType())) {
if (StringUtils.equalsAny(item.getType(), "richText")) {
files.addAll(getImageFiles(item.getValue().toString()));
}
}
}
}
});
return files;
}
/** /**
* 参数比较特殊需要特别处理 * 参数比较特殊需要特别处理
* @param fields * @param fields
@ -294,6 +312,11 @@ public class JiraPlatform extends AbstractIssuePlatform {
} }
fields.put(fieldName, attr); fields.put(fieldName, attr);
} }
} else if (StringUtils.equalsAny(item.getType(), "richText")) {
fields.put(fieldName, removeImage(item.getValue().toString()));
if (fieldName.equals("description")) {
issuesRequest.setDescription(item.getValue().toString());
}
} else { } else {
fields.put(fieldName, item.getValue()); fields.put(fieldName, item.getValue());
} }