|
|
@@ -351,17 +351,27 @@ public class DashboardsService {
|
|
|
|
|
|
/**
|
|
|
* 复制报表
|
|
|
+ * 1.fromBI true 时 说明是来自BI系统的报表复制按钮触发
|
|
|
+ * (1)不切换数据源 dashboardCopyInfo.getDataSourceId()==0
|
|
|
+ * 除了数据链接和数据源 其余的都复制一份
|
|
|
+ * (2) 切换数据源 dashboardCopyInfo.getDataSourceId()>0
|
|
|
+ * 除了数据链接 其余的都复制一份 特殊情况:如果报表的多个图表对应一个数据源 则只复制这个数据源一次
|
|
|
+ * 2.fromBI false 时 说明是来自UAS系统同步按钮触发(只复制编号带有账套名的报表)
|
|
|
+ * 除了数据链接 其余的都复制一份 一模一样的
|
|
|
* @param dashboardCopyInfo
|
|
|
+ * @param fromBI 标识是来自BI系统的报表复制按钮触发 还是来自 UAS系统同步按钮触发
|
|
|
* @return
|
|
|
*/
|
|
|
- public RepEntity copy(String token, DashboardCopyInfo dashboardCopyInfo) {
|
|
|
+ public RepEntity copy(String token, DashboardCopyInfo dashboardCopyInfo, boolean fromBI) {
|
|
|
Map<String,String> userData = GetTokenDataUtil.getTokenData(token);
|
|
|
int userId = Integer.valueOf(userData.get("id"));
|
|
|
String userName = userData.get("name");
|
|
|
int dashboardId = dashboardCopyInfo.getDashboardId(),
|
|
|
- dataSourceId = dashboardCopyInfo.getDataSourceId();
|
|
|
+ dataSourceId = dashboardCopyInfo.getDataSourceId();//如果dataSourceId是0 就说明是没有切换数据源
|
|
|
List<String> idList = new ArrayList<>();
|
|
|
Map<String, String> idMap = new HashMap<>();
|
|
|
+ //数据源ID集合 用来复用同一个数据源 {oldDataConnects : newDataConnects}
|
|
|
+ Map<Integer, Integer> dataConnectMap = new HashMap<>();
|
|
|
//复制图表
|
|
|
String chartIds = dashboardsMapper.getChartIdsById(dashboardId);
|
|
|
if (!StringUtils.isEmpty(chartIds)) {
|
|
|
@@ -369,15 +379,24 @@ public class DashboardsService {
|
|
|
for (int i = 0, len = idArray.length; i < len; i++) {
|
|
|
ChartConfig chartConfig = chartsConfigMapper.getOneChart(Integer.valueOf(idArray[i]));
|
|
|
int oldChartId = chartConfig.getChartId();
|
|
|
- //校验 要复制的图标是否已在目标账套
|
|
|
- List<Map<String, Object>> chartMap = chartsConfigMapper.checkOldChart(oldChartId,chartConfig.getDataId());
|
|
|
- if(chartMap.size()==0){
|
|
|
- chartConfig.setFrom_id(oldChartId);
|
|
|
- chartConfig.setFrom_data_id(chartConfig.getDataId());
|
|
|
- chartConfig.setChartName(chartConfig.getChartName() + dashboardCopyInfo.getLastName());
|
|
|
- chartConfig.setCreateBy(userName);
|
|
|
- chartConfig.setCreateId(userId);
|
|
|
- String oldFetchConfig = chartConfig.getFetchConfig();
|
|
|
+ chartConfig.setFrom_id(oldChartId);
|
|
|
+ chartConfig.setFrom_data_id(chartConfig.getDataId());
|
|
|
+ chartConfig.setChartName(chartConfig.getChartName() + dashboardCopyInfo.getLastName());
|
|
|
+ chartConfig.setCreateBy(userName);
|
|
|
+ chartConfig.setCreateId(userId);
|
|
|
+ String oldFetchConfig = chartConfig.getFetchConfig();
|
|
|
+ //复制数据源
|
|
|
+ if(fromBI){
|
|
|
+ if(dataSourceId>0){
|
|
|
+ Integer dataId = dataConnectMap.get(chartConfig.getDataId());
|
|
|
+ //判断数据源是否已复制过
|
|
|
+ if(StringUtils.isEmpty(dataId)){
|
|
|
+ dataId = dataConnectorService.copyDataSource(token, new DataSourceCopyInfo(chartConfig.getDataId(), dataSourceId ,dashboardCopyInfo.getLastName())).getData();
|
|
|
+ dataConnectMap.put(chartConfig.getDataId(),dataId);
|
|
|
+ }
|
|
|
+ chartConfig.setDataId(dataId);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
//判断数据源是否已复制过
|
|
|
Integer DataConnectId = chartsConfigMapper.getDataConnectId(chartConfig.getDataId());
|
|
|
int dataId = 0;
|
|
|
@@ -385,22 +404,17 @@ public class DashboardsService {
|
|
|
dataId = dataConnectorService.copyDataSource(token, new DataSourceCopyInfo(chartConfig.getDataId(), dataSourceId ,dashboardCopyInfo.getLastName())).getData();
|
|
|
}else{
|
|
|
dataId = DataConnectId;
|
|
|
- chartConfig.setFrom_data_id(dataId);
|
|
|
}
|
|
|
chartConfig.setDataId(dataId);
|
|
|
- chartsConfigMapper.insertCharts(chartConfig);
|
|
|
- int newChartId = chartConfig.getChartId();
|
|
|
- //新ID更新到FetchConfig
|
|
|
- JSONArray jsonArray = JSONObject.parseArray("["+oldFetchConfig+"]");
|
|
|
- jsonArray.getJSONObject(0).put("id",newChartId);
|
|
|
- chartsConfigMapper.updateChartFetchConfig(JSONObject.toJSONString(jsonArray.getJSONObject(0)),newChartId);
|
|
|
- idMap.put(String.valueOf(oldChartId), String.valueOf(newChartId));
|
|
|
- idList.add(String.valueOf(newChartId));
|
|
|
- }else{
|
|
|
- String newChartId = String.valueOf(chartMap.get(0).get("ID"));
|
|
|
- idMap.put(String.valueOf(oldChartId), newChartId);
|
|
|
- idList.add(newChartId);
|
|
|
}
|
|
|
+ chartsConfigMapper.insertCharts(chartConfig);
|
|
|
+ int newChartId = chartConfig.getChartId();
|
|
|
+ //新ID更新到FetchConfig
|
|
|
+ JSONArray jsonArray = JSONObject.parseArray("["+oldFetchConfig+"]");
|
|
|
+ jsonArray.getJSONObject(0).put("id",newChartId);
|
|
|
+ chartsConfigMapper.updateChartFetchConfig(JSONObject.toJSONString(jsonArray.getJSONObject(0)),newChartId);
|
|
|
+ idMap.put(String.valueOf(oldChartId), String.valueOf(newChartId));
|
|
|
+ idList.add(String.valueOf(newChartId));
|
|
|
}
|
|
|
}
|
|
|
//复制报表
|