|
|
@@ -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;
|
|
|
- }
|
|
|
}
|