Parcourir la source

同步BUG修改

hy il y a 6 ans
Parent
commit
068b2d0ee7

+ 11 - 2
bi-server/src/main/java/com/usoftchina/bi/server/dao/chart/ChartsConfigMapper.java

@@ -7,6 +7,7 @@ import com.usoftchina.bi.server.model.po.ChartConfig;
 import com.usoftchina.bi.server.model.po.ChartConfigList;
 import com.usoftchina.bi.server.model.po.ChartsConfigToDash;
 import com.usoftchina.bi.server.model.vo.configVo.GroupInfo;
+import io.swagger.models.auth.In;
 import org.apache.ibatis.annotations.*;
 import org.springframework.stereotype.Repository;
 
@@ -18,9 +19,9 @@ import java.util.Map;
 public interface ChartsConfigMapper {
 
     @Insert("insert into bi_charts(id,CHART_NAME,CHART_TYPE,BD_DATA_ID,CHART_CONFIG,GROUP_BY,ACCESS_AUTHORITY,UPDATE_AUTHORITY,BC_CHARTS_GROUP,CHART_DESCRIBES,BC_CHART_STYLE," +
-            "create_by,create_date, bc_charts_option, create_id, BC_FETCHCONFIG) " +
+            "create_by,create_date, bc_charts_option, create_id, BC_FETCHCONFIG, from_id, from_data_id) " +
             "VALUES (#{chartId,jdbcType=INTEGER},#{chartName,jdbcType=VARCHAR},#{chartType,jdbcType=VARCHAR}, #{dataId,jdbcType=INTEGER}, #{chartConfig,jdbcType=VARCHAR}, #{groupBy,jdbcType=VARCHAR}, #{accessAuthority,jdbcType=VARCHAR}, #{updateAuthority,jdbcType=VARCHAR}, #{chartsGroup,jdbcType=INTEGER}," +
-            "#{describes,jdbcType=VARCHAR},#{style,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR},to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'YYYY-MM-DD hh24:mi:ss'),  #{chartOption,jdbcType=VARCHAR}, #{createId,jdbcType=INTEGER}, #{fetchConfig,jdbcType=VARCHAR})" )
+            "#{describes,jdbcType=VARCHAR},#{style,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR},to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'YYYY-MM-DD hh24:mi:ss'),  #{chartOption,jdbcType=VARCHAR}, #{createId,jdbcType=INTEGER}, #{fetchConfig,jdbcType=VARCHAR},#{from_id,jdbcType=INTEGER},#{from_data_id,jdbcType=INTEGER})" )
 //    @Options(useGeneratedKeys=false, keyProperty = "chartId",keyColumn = "id")
     @SelectKey(before=true,keyProperty="chartId",resultType=Integer.class,statement="SELECT bi_charts_sequence.nextval from dual",keyColumn = "id")
     void insertCharts(ChartConfig chartConfig);
@@ -41,6 +42,9 @@ public interface ChartsConfigMapper {
     @Select("select DATA_NAME as name from BI_DATA_CONNECTORS where id = #{id}")
     String getDataNameById(int id);
 
+    @Select("select BD_DATA_ID from BI_CHARTS where FROM_DATA_ID = #{bd_data_id}")
+    Integer getDataConnectId(@Param("bd_data_id") int id);
+
     /*
     查看图表列表
      */
@@ -339,4 +343,9 @@ public interface ChartsConfigMapper {
             "from bi_charts bc left join bi_data_connectors bd on bc.bd_data_id = bd.id where bc.id = #{id}")
     ChartsColumnConfig getChartsColumn(int id);
 
+    /*
+    通过图表ID查询图表列配置和style
+     */
+    @Select("select ID,BD_DATA_ID from BI_CHARTS where FROM_ID = #{bc_id} and FROM_DATA_ID = #{bd_data_id}")
+    List<Map<String, Object>> checkOldChart(@Param("bc_id") int bc_id,@Param("bd_data_id") int bd_data_id);
 }

+ 18 - 0
bi-server/src/main/java/com/usoftchina/bi/server/model/po/ChartConfig.java

@@ -26,6 +26,24 @@ public class ChartConfig {
     private boolean demo;
     private String dataConnectionId;
     private String dataConnectionName;
+    private Integer from_id;//复制来源ID
+    private Integer from_data_id;//复制数据源ID
+
+    public Integer getFrom_id() {
+        return from_id;
+    }
+
+    public void setFrom_id(Integer from_id) {
+        this.from_id = from_id;
+    }
+
+    public Integer getFrom_data_id() {
+        return from_data_id;
+    }
+
+    public void setFrom_data_id(Integer from_data_id) {
+        this.from_data_id = from_data_id;
+    }
 
     public String getDataConnectionId() {
         return dataConnectionId;

+ 32 - 14
bi-server/src/main/java/com/usoftchina/bi/server/service/dashboard/DashboardsService.java

@@ -353,20 +353,38 @@ 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();
-                chartConfig.setChartName(chartConfig.getChartName() + dashboardCopyInfo.getLastName());
-                chartConfig.setCreateBy(userName);
-                chartConfig.setCreateId(userId);
-                String oldFetchConfig = chartConfig.getFetchConfig();
-                int dataId = dataConnectorService.copyDataSource(token, new DataSourceCopyInfo(chartConfig.getDataId(), dataSourceId ,dashboardCopyInfo.getLastName())).getData();
-                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));
+                //校验 要复制的图标是否已在目标账套
+                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();
+                    //判断数据源是否已复制过
+                    Integer DataConnectId = chartsConfigMapper.getDataConnectId(chartConfig.getDataId());
+                    int dataId = 0;
+                    if(DataConnectId==null || DataConnectId==0){
+                        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);
+                }
             }
         }
         //复制报表