sms
parent
ee8d366d51
commit
d68c36ff4c
|
|
@ -502,15 +502,21 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
|
|||
*/
|
||||
private void upsertArchivedProjectDocs(Long projectId, EvalProjectEntity project) {
|
||||
List<EvalProjectFileCO> files = listProjectFiles(projectId).getData();
|
||||
List<EvalProjectDocMaterialItemCO> archivedItems = CollectionUtils.isEmpty(files)
|
||||
? new ArrayList<>()
|
||||
: files.stream().map(f -> {
|
||||
// 将每个文件 projectDocUrl 中的 JSON 数组扁平化:数组内每个文件对象拆分为独立的资料条目
|
||||
List<EvalProjectDocMaterialItemCO> archivedItems = new ArrayList<>();
|
||||
if (!CollectionUtils.isEmpty(files)) {
|
||||
for (EvalProjectFileCO f : files) {
|
||||
List<JSONObject> urlObjects = parseFileUrlObjects(f.getProjectDocUrl());
|
||||
for (JSONObject obj : urlObjects) {
|
||||
EvalProjectDocMaterialItemCO item = new EvalProjectDocMaterialItemCO();
|
||||
item.setMaterialName(f.getMaterialName());
|
||||
item.setProjectDocUrl(f.getProjectDocUrl());
|
||||
String name = obj.getStr("name");
|
||||
item.setMaterialName(StringUtils.hasText(name) ? name : f.getMaterialName());
|
||||
item.setProjectDocUrl(obj.getStr("url"));
|
||||
item.setMaterialType(MaterialCategory.ARCHIVED.getVal());
|
||||
return item;
|
||||
}).collect(Collectors.toList());
|
||||
archivedItems.add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
EvalProjectDocDO docDO = evalProjectDocMapper.selectOne(new LambdaQueryWrapper<EvalProjectDocDO>()
|
||||
.select(EvalProjectDocDO::getId, EvalProjectDocDO::getProjectDocUrl)
|
||||
|
|
@ -547,6 +553,27 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将文件 projectDocUrl(JSON 数组字符串,如 [{"url":"...","name":"..."}])解析为对象列表。
|
||||
* 非数组、解析失败或为空时返回空列表。
|
||||
*/
|
||||
private List<JSONObject> parseFileUrlObjects(String projectDocUrl) {
|
||||
List<JSONObject> result = new ArrayList<>();
|
||||
if (!StringUtils.hasText(projectDocUrl)) {
|
||||
return result;
|
||||
}
|
||||
try {
|
||||
JSONArray array = JSONUtil.parseArray(projectDocUrl);
|
||||
for (Object obj : array) {
|
||||
if (obj instanceof JSONObject) {
|
||||
result.add((JSONObject) obj);
|
||||
}
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证项目所有签字任务是否已完成(taskStatusCode=2 已签)。
|
||||
* 无签字任务或存在未完成/未作废的任务均视为未完成。
|
||||
|
|
|
|||
Loading…
Reference in New Issue