|
|
@@ -34,6 +34,7 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.io.File;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
@@ -128,38 +129,49 @@ public class SysServerServiceImpl extends ServiceImpl<SysServerMapper, SysServer
|
|
|
List<FileInfoVo> checks = JSONArray.parseArray(serverJson, FileInfoVo.class);
|
|
|
final boolean match = checks.stream().anyMatch(file -> ObjectUtil.equal(2, file.getFileType()));
|
|
|
List<FileInfoVo> res = new ArrayList<>();
|
|
|
+ final List<String> exitFileNameList = fileService.checkFileExit(server.getServerIp());
|
|
|
if (match) {
|
|
|
final List<FileInfoVo> list = checks.stream().filter(file -> ObjectUtil.equal(2, file.getFileType())).collect(Collectors.toList());
|
|
|
for (FileInfoVo fileInfoVo : list) {
|
|
|
res.add(fileInfoVo);
|
|
|
- fileInfoVo.setChildren(checks.stream().filter(r -> ObjectUtil.equal(fileInfoVo.getId(), r.getParentId())).collect(Collectors.toList()));
|
|
|
+ final List<FileInfoVo> list1 = checks.stream().filter(r -> ObjectUtil.equal(fileInfoVo.getId(), r.getParentId())).collect(Collectors.toList());
|
|
|
+ checkExit(list1, server.getServerIp(), exitFileNameList);
|
|
|
+ fileInfoVo.setChildren(list1);
|
|
|
}
|
|
|
- return res;
|
|
|
} else {
|
|
|
- res.add(buildDir("info", checks));
|
|
|
- res.add(buildDir("error", checks));
|
|
|
- return res;
|
|
|
+ res.add(buildDir("info", checks, server.getServerIp(), exitFileNameList));
|
|
|
+ res.add(buildDir("error", checks, server.getServerIp(), exitFileNameList));
|
|
|
}
|
|
|
- /*List<String> exitFileNameList = fileService.checkFileExit(server.getServerIp());
|
|
|
- if (CollectionUtil.isNotEmpty(checks)) {
|
|
|
- for (FileInfoVo check : checks) {
|
|
|
- if (exitFileNameList.contains(check.getFileName()))
|
|
|
- check.setExit(1);
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private void checkExit(List<FileInfoVo> checks, String serverIp, List<String> exitFileNameList) {
|
|
|
+ exitFileNameList = exitFileNameList.stream().map(r -> r.replace(File.separator, "/")).collect(Collectors.toList());
|
|
|
+ for (FileInfoVo check : checks) {
|
|
|
+ final String fileName = serverIp + check.getParentPath().split("logs")[1] + File.separator + check.getFileName();
|
|
|
+ final String replace = fileName.replace(File.separator, "/");
|
|
|
+ final boolean match = exitFileNameList.stream().anyMatch(r -> r.contains(replace));
|
|
|
+ if (match) {
|
|
|
+ check.setExit(1);
|
|
|
}
|
|
|
- }*/
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- private FileInfoVo buildDir(String dirName, List<FileInfoVo> list) {
|
|
|
+ private FileInfoVo buildDir(String dirName, List<FileInfoVo> list, String serverIp, List<String> exitFileNameList) {
|
|
|
FileInfoVo fileInfoVo = new FileInfoVo();
|
|
|
fileInfoVo.setFileName(dirName);
|
|
|
fileInfoVo.setFileSize("-");
|
|
|
fileInfoVo.setPath(dirName);
|
|
|
fileInfoVo.setFileType(2);
|
|
|
fileInfoVo.setId(UUID.randomUUID().toString());
|
|
|
- fileInfoVo.setChildren(list.stream().filter(r -> r.getFileName().contains(dirName)).collect(Collectors.toList()));
|
|
|
+ final List<FileInfoVo> voList = list.stream().filter(r -> r.getFileName().contains(dirName)).collect(Collectors.toList());
|
|
|
+ checkExit(voList, serverIp, exitFileNameList);
|
|
|
+ fileInfoVo.setChildren(voList);
|
|
|
return fileInfoVo;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
@Override
|
|
|
public void transferLog(TransferLogDto req) {
|
|
|
final SysServer sysServer = getById(req.getServerId());
|