注释很详细,不多说
@Override
public void export(HttpServletResponse response,QmDefectsForm form, String key) {
try {
List<QmDefectsExportModel> qmDefectsesExports = new ArrayList<>();
//获取列表数据
List<QmDefects> list = page(null, form, key).getRecords();
// 数据字典转换
List<CodeInfo> status = getCodeManager().getCodes(CodeMasterConstants.DEFECTS_STATE);
List<CodeInfo> severity = getCodeManager().getCodes(CodeMasterConstants.TEST_SEVERITY);
List<CodeInfo> priority = getCodeManager().getCodes(CodeMasterConstants.DEFECTS_PRIORITY);
List<CodeInfo> repetition = getCodeManager().getCodes(CodeMasterConstants.REPETITION_RATE);
List<CodeInfo> types = getCodeManager().getCodes(CodeMasterConstants.DEFECT_TYPES);
// 获取关联内容
List<QmProjectCasesContent> casesContents = qmProjectCasesContentService.listByDataIds(list.stream().map(QmDefects::getId).collect(Collectors.toList()));
// 获取经办人
List<BaseUser> agentUsers = getMembership().findUserByIds(list.stream().filter(e -> null != e.getAgentId()).map(e -> e.getAgentId().toString()).distinct().collect(Collectors.toList()));
// 获取报告人
List<BaseUser> reportUsers = getMembership().findUserByIds(list.stream().filter(e -> null != e.getReporterId()).map(e -> e.getReporterId().toString()).distinct().collect(Collectors.toList()));
IStoreManager storeManager = SiteContext.getBean(IStoreManager.class);
int i = 1;
if(list != null && !list.isEmpty()) {
for(QmDefects qDefects : list) {
QmDefectsExportModel qExport = new QmDefectsExportModel();
BeanUtils.copyProperties(qDefects, qExport);
qExport.setNumber(String.valueOf(i++));
for (CodeInfo codeInfo : status) {
if (codeInfo.getCode().equals(qExport.getStatus())) {
qExport.setStatus(codeInfo.getText());
break;
}
}
for (CodeInfo codeInfo : severity) {
if (codeInfo.getCode().equals(qExport.getSeverity())) {
qExport.setSeverity(codeInfo.getText());
break;
}
}
for (CodeInfo codeInfo : priority) {
if (codeInfo.getCode().equals(qExport.getPriority())) {
qExport.setPriority(codeInfo.getText());
break;
}
}
for (CodeInfo codeInfo : repetition) {
if (codeInfo.getCode().equals(qExport.getRepetition())) {
qExport.setRepetition(codeInfo.getText());
break;
}
}
for (CodeInfo codeInfo : types) {
if (codeInfo.getCode().equals(qExport.getTypes())) {
qExport.setTypes(codeInfo.getText());
break;
}
}
// 时间转换
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if(qDefects.getPlanStartTime() != null) {
qExport.setPlanStartTime(sdf.format(qDefects.getPlanStartTime()));
}
if(qDefects.getPlanEndTime() != null) {
qExport.setPlanEndTime(sdf.format(qDefects.getPlanEndTime()));
}
// 经办人账号
if (null != qDefects.getAgentId()) {
String agentId = qDefects.getAgentId().toString();
BaseUser user = agentUsers.stream().filter(e -> agentId.equals(e.getUserId())).findFirst().get();
qExport.setAgentAccount(StringUtil.isNotBlank(user.getEmployeeNo()) ? user.getEmployeeNo() : user.getUserCode());
}
// 记录人
if (null != qDefects.getReporterId()) {
String reporterId = qDefects.getReporterId().toString();
BaseUser user = reportUsers.stream().filter(e -> reporterId.equals(e.getUserId())).findFirst().get();
qExport.setReporterAccount(StringUtil.isNotBlank(user.getEmployeeNo()) ? user.getEmployeeNo() : user.getUserCode());
}
// 关联内容
if(casesContents != null && !casesContents.isEmpty()) {
List<String> defects = casesContents.stream().filter(e -> e.getDataId().equals(qDefects.getId()) && ConstTestModuleType.DEFFECT.getCode().equals(e.getDataType())).map(QmProjectCasesContent::getProjectCasesId).collect(Collectors.toList());
qExport.setAssociatedUseDefects(String.join(StrConstants.SEPARATOR_COMMA, defects));
List<String> cases = casesContents.stream().filter(e -> e.getDataId().equals(qDefects.getId()) && ConstTestModuleType.CASES.getCode().equals(e.getDataType())).map(QmProjectCasesContent::getProjectCasesId).collect(Collectors.toList());
qExport.setAssociatedUseCases(String.join(StrConstants.SEPARATOR_COMMA, cases));
}
if(StringUtil.isNotBlank(qDefects.getAttachment())) {
// 获取附件信息-----将json数据转换为leit集合
List<Files> fList = JsonUtil.toList(qDefects.getAttachment(), Files.class);
// 过滤图片
List<Files> flist = fList.stream().filter(e -> e.getFileType().startsWith("image")).collect(