提交 3942f842 authored 作者: 黄承天's avatar 黄承天

[数据模型]增加导出json格式聚合对象数据的功能

上级 4f9b066e
package com.tykj.workflowcore.model_layer.dao;
import com.tykj.workflowcore.model_layer.entity.Aggregation;
import com.tykj.workflowcore.model_layer.entity.AggregationRelationship;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
/**
* @ClassName AggregationRelationshipDao
* @Description TODO
......@@ -13,6 +13,8 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
* @Date 2021/4/2 10:34
* @Version 1.0
*/
public interface AggregationRelationshipDao extends JpaRepository<Aggregation, Integer>, JpaSpecificationExecutor<Aggregation> {
public interface AggregationRelationshipDao extends JpaRepository<AggregationRelationship, Integer>, JpaSpecificationExecutor<AggregationRelationship> {
List<AggregationRelationship> findAllByTableInfoExId(Integer tableExId);
}
package com.tykj.workflowcore.model_layer.service.impl;
import com.alibaba.fastjson.JSON;
import com.tykj.workflowcore.model_layer.dao.AggregationRelationshipDao;
import com.tykj.workflowcore.model_layer.dao.ColumnInfoDao;
import com.tykj.workflowcore.model_layer.dao.TableInfoDao;
import com.tykj.workflowcore.model_layer.dao.TableInfoExDao;
import com.tykj.workflowcore.model_layer.entity.AggregationRelationship;
import com.tykj.workflowcore.model_layer.entity.ColumnInfo;
import com.tykj.workflowcore.model_layer.entity.TableInfoEx;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static java.lang.String.format;
@Service
public class ModelHelper {
@Autowired
private TableInfoDao tableInfoDao;
@Autowired
private ColumnInfoDao columnInfoDao;
@Autowired
private TableInfoExDao tableInfoExDao;
@Autowired
private AggregationRelationshipDao aggregationRelationshipDao;
public String getJsonExample(Integer tableInfoExId) {
TableInfoEx tableInfoEX = tableInfoExDao.findById(tableInfoExId)
.orElseThrow(() -> new RuntimeException(format("未找到该id的数据:%s", tableInfoExId)));
Map<String, Object> result = new HashMap<>();
List<ColumnInfo> columnInfos = columnInfoDao.findAllByDbId(tableInfoEX.getMainTableId());
for (ColumnInfo columnInfo : columnInfos) {
result.put(columnInfo.getFieldName(), null);
}
List<AggregationRelationship> relationships = aggregationRelationshipDao.findAllByTableInfoExId(tableInfoExId);
for (AggregationRelationship relationship : relationships) {
List<ColumnInfo> subColumnInfos = columnInfoDao.findAllByDbId(relationship.getSideTableId());
Map<String, Object> subResult = new HashMap<>();
for (ColumnInfo subColumnInfo : subColumnInfos) {
subResult.put(subColumnInfo.getFieldName(), null);
}
String connectionTableName = relationship.getConnectionTableName();
Integer relationshipType = relationship.getRelationship();
switch (relationshipType) {
case 0:
result.put(connectionTableName, subResult);
break;
case 1:
case 2:
List<Map<String, Object>> subResults = new ArrayList<>();
subResults.add(subResult);
result.put(connectionTableName, subResults);
break;
default:
throw new RuntimeException(format("未识别的聚合类型:%s", relationshipType));
}
}
return JSON.toJSONString(result);
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论