package com.estate.expert.admin.initdata;
|
|
import com.estate.expert.admin.domain.common.request.PageReq;
|
import com.estate.expert.admin.domain.standard.hierachy.HierarchyIds;
|
import com.estate.expert.admin.domain.standard.model.system.SysModel;
|
import com.estate.expert.admin.domain.standard.problem.ProblemDto;
|
import com.estate.expert.admin.initdata.common.ImportUtil;
|
import com.estate.expert.admin.service.HierarchyService;
|
import com.estate.expert.admin.service.ProblemService;
|
import com.estate.expert.admin.service.UserService;
|
import com.estate.expert.admin.service.model.DeviceModelService;
|
import com.estate.expert.admin.service.model.MeasureModelService;
|
import com.estate.expert.admin.service.model.SystemModelService;
|
import lombok.Builder;
|
import lombok.extern.slf4j.Slf4j;
|
|
import java.io.File;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 导入模型任务
|
*/
|
@Builder
|
@Slf4j
|
public class ImportModelJob {
|
|
private UserService userService;
|
|
private HierarchyService hierarchyService;
|
|
private SystemModelService systemModelService;
|
|
private DeviceModelService deviceModelService;
|
|
private MeasureModelService measureModelService;
|
|
private ProblemService problemService;
|
|
public void createDefaultModels() {
|
// 初始化默认模型
|
// systemModelService.createDefaultModel();
|
// deviceModelService.createDefaultModel();
|
measureModelService.createDefaultModel();
|
}
|
|
public void importSystemModel() {
|
|
// 导入衡泰专家模型
|
var model = loadModel("衡泰专家","/衡泰专家/层", HierarchyIds.SYSTEM);
|
systemModelService.add(userService.getSystemUser(), model);
|
}
|
|
/**
|
* 导入衡泰模型
|
*/
|
private SysModel loadModel(String name, String root, Integer hierarchyId){
|
var hierarchy = hierarchyService.get(hierarchyId);
|
var rootDir = new File(ImportUtil.docsRoot(root));
|
var dirPaths = new ArrayList<String>();
|
|
// 遍历目录下面的所有目录
|
listDir(rootDir, dirPaths);
|
|
var model = new SysModel();
|
var hierarchyPaths = new ArrayList<String>();
|
for (String dirPath : dirPaths) {
|
var hierarchyPath = dirPath.substring(dirPath.indexOf(root) + root.length());
|
var node = hierarchy.getContent().getByNamePath(hierarchyPath);
|
if(node == null){
|
log.error("node is null, filePath: " + hierarchyPath);
|
continue;
|
}
|
hierarchyPaths.add(node.getPath());
|
}
|
model.setName(name);
|
model.setHierarchyPaths(hierarchyPaths);
|
|
// add problems
|
var problems = problemService.list(hierarchyId, hierarchyPaths, null, PageReq.of(0, 10000000));
|
var problemIds = problems.getList().stream().map(ProblemDto::getId).toList();
|
model.setHierarchy(hierarchy);
|
model.setProblemIds(problemIds);
|
model.setVersion(0);
|
return model;
|
}
|
|
private void listDir(File rootDir, List<String> dirPaths){
|
File[] files = rootDir.listFiles();
|
if(files == null || files.length == 0){
|
dirPaths.add(rootDir.getAbsolutePath());
|
return;
|
}
|
for (File f : files) {
|
if (f.isDirectory()) {
|
listDir(f, dirPaths);
|
}
|
}
|
}
|
}
|