Browse Source

个人统计图优化

chenw 6 years ago
parent
commit
d30bbdc023

+ 33 - 52
bi-server/src/main/java/com/usoftchina/bi/server/service/chart/ShowIndividualService.java

@@ -14,6 +14,10 @@ import com.usoftchina.bi.core.jdbc.DynamicDataSourceContextHolder;
 import com.usoftchina.bi.server.utils.ScreenUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.ObjectUtils;
+import org.springframework.util.StringUtils;
 
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
@@ -36,78 +40,55 @@ public class ShowIndividualService {
     ChartsUtilService chartsUtilService;
 
     public RepEntity showIndividual(IndividualConfigInfo individualConfigInfo, String token, int dashId){
-        if (individualConfigInfo == null || "".equals(individualConfigInfo)){
-            return new RepEntity(RepCode.Null);
-        }
+        Assert.notNull(individualConfigInfo, "请求参数不能为空");
+        /* 变量定义 */
         PopAndIndDataInfo popAndIndDataInfo = new PopAndIndDataInfo();
-
         List<LinkedHashMap<String, Object>> targetValue = new ArrayList<>();
-        //取表名
         int id = individualConfigInfo.getId();
-        //获取列配置
         ChartsColumnConfig chartsColumn = chartsConfigMapper.getChartsColumn(id);
-        if (chartsColumn == null || "".equals(chartsColumn)){
+        String tableName = chartsUtilService.getSqlStr(token, id, dashId);
+        int baseId = getChartsDataUtilService.getBaseId(id);
+        List<Screen> screens = individualConfigInfo.getFilters();
+        ScreenStr scr = new ScreenStr();
+        String screen = "";
+        String screenStr = "";
+        String columnName = individualConfigInfo.getSortColumn();
+        String columnListName = individualConfigInfo.getColumnListName().toString();
+        String sort = individualConfigInfo.getSort();
+        String tableListName = columnListName.replace("[", "").replace("]", "");
+        /* 参数校验 */
+        if (ObjectUtils.isEmpty(chartsColumn)) {
             return new RepEntity(RepCode.Null);
         }
-        popAndIndDataInfo.setChartsColumnConfig(chartsColumn);
-
-        String tableName = chartsUtilService.getSqlStr(token, id, dashId);
-        if ("".equals(tableName)){
+        if (StringUtils.isEmpty(tableName)){
             return new RepEntity(RepCode.NoAuthority);
-    }
-
-        int baseId = getChartsDataUtilService.getBaseId(id);
-
+        }
         try{
             if (!DynamicDataSourceContextHolder.isContainsDataSource(baseId)) {
                 return new RepEntity(RepCode.DataSourceNull);
             } else {
                 DynamicDataSourceContextHolder.setDataSourceType(baseId);
             }
-
-            //取筛选列表
-            List<Screen> screens = individualConfigInfo.getFilters();
-            ScreenStr scr = new ScreenStr();
-            String screen = "";
-            String screenStr = "";
-            if ("".equals(screens) || screens == null || screens.size() == 0){
-                screen = "";
-                screenStr = "";
-            }else {
+            if (!CollectionUtils.isEmpty(screens)){
                 scr = screenUtil.screensUtil(screens, "", "");
                 screen = scr.getRet();
                 StringBuilder sb = new StringBuilder(screen);
                 screenStr = String.valueOf(sb .replace(1, 5, "where "));
             }
-
-        String columnName = individualConfigInfo.getSortColumn();
-        //查询其他列
-        String columnListName = individualConfigInfo.getColumnListName().toString();
-        String sort = individualConfigInfo.getSort();
-
-        String tableListName = this.getString(columnListName);
-
-        targetValue = showChartsMapper.getOtherData(tableListName, tableName, columnName, sort, screenStr, individualConfigInfo.getTestPage().enablePaging());
-        PageInfo<LinkedHashMap<String, Object>> pageInfo = new PageInfo<>(targetValue);
-        popAndIndDataInfo.setValueList(pageInfo);
-    }catch (Exception e){
-        e.printStackTrace();
-        if (e.getCause().getMessage().contains("ORA-00904:")) {
-            return new RepEntity(RepCode.erro.getCode(), "数据源" + e.getCause().getMessage().replace("ORA-00904:", "").replaceAll("标识符", "列"), null);
+            targetValue = showChartsMapper.getOtherData(tableListName, tableName, columnName, sort, screenStr, individualConfigInfo.getTestPage().enablePaging());
+            PageInfo<LinkedHashMap<String, Object>> pageInfo = new PageInfo<>(targetValue);
+            popAndIndDataInfo.setChartsColumnConfig(chartsColumn);
+            popAndIndDataInfo.setValueList(pageInfo);
+        }catch (Exception e){
+            e.printStackTrace();
+            if (e.getCause().getMessage().contains("ORA-00904:")) {
+                return new RepEntity(RepCode.erro.getCode(), "数据源" + e.getCause().getMessage().replace("ORA-00904:", "").replaceAll("标识符", "列"), null);
+            }
+            return new RepEntity(RepCode.erro.getCode(), e.getCause().getMessage(), null);
+        }finally {
+            DynamicDataSourceContextHolder.clearDataSourceType();
         }
-        return new RepEntity(RepCode.erro.getCode(), e.getCause().getMessage(), null);
-    }finally {
-        DynamicDataSourceContextHolder.clearDataSourceType();
-    }
         return new RepEntity(RepCode.success, popAndIndDataInfo);
     }
 
-
-    private String getString(String str){
-        String st1 = "[";
-        String st2 = "]";
-        String strA = str.replace(st1, "");
-        String strB = strA.replace(st2, "");
-        return strB;
-    }
 }