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

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

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