提交 c3fac51b 编写于 作者: tangyaolong's avatar tangyaolong

【dst模型初始化】更新第二版

上级 95367814
......@@ -2,12 +2,12 @@ package cn.ibizlab.core.extensions.domain;
import cn.ibizlab.core.analysis.domain.DABuild;
import cn.ibizlab.core.analysis.domain.DAMetric;
import cn.ibizlab.core.lite.domain.DstSystem;
import cn.ibizlab.core.lite.domain.MetaModel;
import cn.ibizlab.core.lite.domain.*;
import cn.ibizlab.core.lite.extensions.domain.EntityModel;
import cn.ibizlab.core.rule.domain.RuleItem;
import lombok.*;
import java.util.LinkedHashSet;
import java.util.List;
@Data
......@@ -19,5 +19,10 @@ public class AssembleModel {
private List<DABuild> daBuilds;
private List<EntityModel> entityModels;
private List<DAMetric> metrics;
private LinkedHashSet<MetaDataSet> metaDataSets;
private LinkedHashSet<MetaRelationship> references;
private LinkedHashSet<MetaRelationship> nesteds;
private LinkedHashSet<MetaField> metaFields;
}
......@@ -6,46 +6,37 @@ import cn.ibizlab.core.analysis.domain.DAMetric;
import cn.ibizlab.core.analysis.service.IDABuildService;
import cn.ibizlab.core.analysis.service.IDAMetricService;
import cn.ibizlab.core.extensions.domain.AssembleModel;
import cn.ibizlab.core.lite.domain.MetaEntity;
import cn.ibizlab.core.lite.domain.MetaModel;
import cn.ibizlab.core.lite.domain.MetaRelationship;
import cn.ibizlab.core.lite.domain.*;
import cn.ibizlab.core.lite.extensions.domain.EntityModel;
import cn.ibizlab.core.lite.extensions.domain.RelationshipModel;
import cn.ibizlab.core.lite.extensions.domain.SysModel;
import cn.ibizlab.core.lite.extensions.model.DataModel;
import cn.ibizlab.core.lite.extensions.model.Property;
import cn.ibizlab.core.lite.extensions.service.LiteModelService;
import cn.ibizlab.core.lite.service.IMetaEntityService;
import cn.ibizlab.core.lite.service.IMetaModelService;
import cn.ibizlab.core.lite.service.*;
import cn.ibizlab.core.lite.service.impl.MetaModelServiceImpl;
import cn.ibizlab.core.rule.domain.RuleItem;
import cn.ibizlab.core.rule.service.IRuleItemService;
import cn.ibizlab.util.domain.FileItem;
import cn.ibizlab.util.errors.InternalServerErrorException;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.DigestUtils;
import org.springframework.util.FileCopyUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.file.Files;
import java.text.SimpleDateFormat;
import java.util.*;
import static cn.ibizlab.util.service.SimpleFileService.getExtensionName;
/**
* 实体[模型] 自定义服务对象
*/
......@@ -77,6 +68,18 @@ public class MetaModelExService extends MetaModelServiceImpl {
@Lazy
private IMetaEntityService metaEntityService;
@Autowired
@Lazy
private IMetaDataSetService metaDataSetService;
@Autowired
@Lazy
private IMetaRelationshipService metaRelationshipService;
@Autowired
@Lazy
private IMetaFieldService metaFieldService;
@Value("${ibiz.filePath:/app/file/}")
private String fileRoot;
......@@ -114,11 +117,13 @@ public class MetaModelExService extends MetaModelServiceImpl {
public MetaModel importFile(MetaModel et) {
JSONArray contentArray = JSONArray.parseArray(et.getName());
// 上传数据取最新一条
String json = contentArray.get(contentArray.size() > 0 ? contentArray.size() - 1 : 0).toString();
Map etMaps = (Map) JSON.parse(json);
File file = getUploadFile(etMaps.get("id").toString());
List<AssembleModel> assembleModels = readJsonFile(file.toString());
importFile(assembleModels);
for (Object s : contentArray) {
String json = s.toString();
Map etMaps = (Map) JSON.parse(json);
File file = getUploadFile(etMaps.get("id").toString());
List<AssembleModel> assembleModels = readJsonFile(file.toString());
importFile(assembleModels);
}
return super.importFile(et);
}
......@@ -147,6 +152,12 @@ public class MetaModelExService extends MetaModelServiceImpl {
List<DAMetric> metrics = new ArrayList<>();
LinkedHashSet<String> entities = new LinkedHashSet<>();
LinkedHashSet<MetaDataSet> metaDataSets = new LinkedHashSet<>();
LinkedHashSet<MetaRelationship> references = new LinkedHashSet<>();
LinkedHashSet<MetaRelationship> nesteds = new LinkedHashSet<>();
LinkedHashSet<MetaField> metaFields = new LinkedHashSet<>();
// 查询模型
MetaModel metaModel = metaModelService.get(et.getId());
models.setMetaModel(metaModel);
......@@ -189,7 +200,12 @@ public class MetaModelExService extends MetaModelServiceImpl {
}
}
}
models.setEntityModels(getEntityModel(entities, modelId));
// 将关联的数据集,上下级关系,字段一并存入
models.setEntityModels(getEntityModel(entities, modelId,metaDataSets,references,nesteds,metaFields));
models.setMetaDataSets(metaDataSets);
models.setReferences(references);
models.setNesteds(nesteds);
models.setMetaFields(metaFields);
models.setRuleItems(metaModel.getRuleitems());
models.setDaBuilds(metaModel.getBuilds());
models.setMetrics(metrics);
......@@ -203,15 +219,20 @@ public class MetaModelExService extends MetaModelServiceImpl {
* @param modelId 模型id
* @return 实体模型集合
*/
private List<EntityModel> getEntityModel(LinkedHashSet<String> entities, String modelId) {
private List<EntityModel> getEntityModel(LinkedHashSet<String> entities, String modelId, LinkedHashSet<MetaDataSet> metaDataSets,LinkedHashSet<MetaRelationship> references,LinkedHashSet<MetaRelationship> nesteds,LinkedHashSet<MetaField> metaFields){
List<EntityModel> entityModels = new ArrayList<>();
DataModel model = liteModelService.getDataModel(modelId);
if (model != null) {
for (String entity : entities) {
metaDataSets.addAll(metaDataSetService.selectByEntityId(entity));
references.addAll(metaRelationshipService.selectByEntityId(entity));
nesteds.addAll(metaRelationshipService.selectByRefEntityId(entity));
EntityModel entityModel = null;
Property subModel = model.getObjectProperty(entity);
if (subModel != null) {
entityModel = subModel.getEntityModel();
metaFields.addAll(metaFieldService.selectByEntityId(entityModel.getEntityId()));
} else {
if (model.getNestedDataModel(entity) != null) {
entityModel = model.getNestedDataModel(entity).getFactEntityModel();
......@@ -229,10 +250,9 @@ public class MetaModelExService extends MetaModelServiceImpl {
* 根据组装模型包集合来对数据进行导入
*
* @param assembleModels 组装模型包
* @return
*/
@Transactional
public boolean importFile(List<AssembleModel> assembleModels) {
public void importFile(List<AssembleModel> assembleModels) {
for (AssembleModel assembleModel : assembleModels) {
// 前置铺垫实体模型,防止外键冲突
if (assembleModel.getEntityModels() != null) {
......@@ -242,42 +262,31 @@ public class MetaModelExService extends MetaModelServiceImpl {
});
metaEntityService.saveBatch(metaEntities);
}
if (assembleModel.getMetaDataSets().size() > 0) {
metaDataSetService.saveBatch(assembleModel.getMetaDataSets());
}
if (assembleModel.getNesteds().size() > 0) {
metaRelationshipService.saveBatch(assembleModel.getNesteds());
}
if (assembleModel.getReferences().size() > 0) {
metaRelationshipService.saveBatch(assembleModel.getReferences());
}
if (assembleModel.getMetaFields().size() > 0) {
metaFieldService.saveBatch(assembleModel.getMetaFields());
}
if (assembleModel.getMetaModel() != null) {
metaModelService.save(assembleModel.getMetaModel());
}
if (assembleModel.getDaBuilds() != null) {
if (assembleModel.getDaBuilds().size() > 0) {
idaBuildService.saveBatch(assembleModel.getDaBuilds());
}
if (assembleModel.getMetrics() != null) {
if (assembleModel.getMetrics().size() > 0) {
idaMetricService.saveBatch(assembleModel.getMetrics());
}
if (assembleModel.getRuleItems() != null) {
if (assembleModel.getRuleItems().size() > 0) {
ruleItemService.saveBatch(assembleModel.getRuleItems());
}
}
return true;
}
public FileItem uploadFile(MultipartFile multipartFile) {
FileItem item = null;
// 获取文件名
String fileName = multipartFile.getOriginalFilename();
// 获取文件后缀
String extname = "." + getExtensionName(fileName);
try {
String fileId = DigestUtils.md5DigestAsHex(multipartFile.getInputStream());
String fileFullPath = this.fileRoot + "ibizutil" + File.separator + File.separator + fileName;
File file = new File(fileFullPath);
File parent = new File(file.getParent());
if (!parent.exists()) {
parent.mkdirs();
}
FileCopyUtils.copy(multipartFile.getInputStream(), Files.newOutputStream(file.toPath()));
item = new FileItem(fileId, fileName, fileId, fileName, (int) multipartFile.getSize(), extname);
} catch (IOException e) {
throw new InternalServerErrorException("文件上传失败," + e);
}
return item;
}
protected String getFileName(String fileName) {
......@@ -296,10 +305,14 @@ public class MetaModelExService extends MetaModelServiceImpl {
* @return
*/
public String saveFile(String jsonObject) {
String fileName = "PACKAGEMODEL_" + UUID.randomUUID().toString().replace("-", "").toUpperCase();
Date nowDate = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String fileDir = DigestUtils.md5DigestAsHex(UUID.randomUUID().toString().getBytes());
String fileName = "Model_" + df.format(nowDate);
String extname = ".json";
try {
String fileFullPath = this.fileRoot + "ibizutil" + File.separator + fileName + extname;
String fileFullPath = this.fileRoot+"ibizutil"+ File.separator + fileDir + File.separator + fileName + extname;
File file = new File(fileFullPath);
File parent = new File(file.getParent());
if (!parent.exists()) {
......@@ -309,7 +322,7 @@ public class MetaModelExService extends MetaModelServiceImpl {
} catch (Exception e) {
throw new InternalServerErrorException("文件上传失败," + e);
}
return fileName + extname;
return fileDir + File.separator + fileName + extname;
}
/**
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册