| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- package com.server;
- import com.dao.ChartsConfigMapper;
- import com.dao.ShowChartsMapper;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.model.bo.Screen;
- import com.model.bo.ScreenStr;
- import com.model.bo.Series;
- import com.model.pojo.RepCode;
- import com.model.pojo.RepEntity;
- import com.model.vo.configVo.HistogramConfigInfo;
- import com.model.vo.dataVo.ChartsDataInfo;
- import com.util.BasesSource.DynamicDataSourceContextHolder;
- import com.util.CalculationJudgeUtil;
- import com.util.ScreenUtil;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Repository;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- @Repository
- public class ShowHistogramService {
- @Autowired
- ShowChartsMapper showChartsMapper;
- @Autowired
- TimeConverterUtil timeConverterUtil;
- @Autowired
- CalculationJudgeUtil calculationJudgeUtil;
- @Autowired
- ChartsConfigMapper chartsConfigMapper;
- @Autowired
- ObjectMapper objectMapper;
- @Autowired
- GetChartsDataUtilService getChartsDataUtilService;
- @Autowired
- ScreenUtil screenUtil;
- /*
- 柱状图数据展示
- */
- @Transactional
- public RepEntity showHistogram(HistogramConfigInfo histogramConfigInfo){
- ChartsDataInfo chartsDataInfo = new ChartsDataInfo();
- if (histogramConfigInfo == null || "".equals(histogramConfigInfo)){
- return new RepEntity(RepCode.Null);
- }
- //取表名
- int id = histogramConfigInfo.getId();
- String tableName = chartsConfigMapper.getTableName(id);
- if (tableName == null || "".equals(tableName)){
- return new RepEntity(RepCode.nullTableName);
- }
- String baseName = getChartsDataUtilService.getBaseName(id);
- System.out.println("切换数据库"+baseName);
- try{
- if (!DynamicDataSourceContextHolder.isContainsDataSource(baseName)) {
- //joinPoint.getSignature() :获取连接点的方法签名对象
- System.out.println("数据源 " + baseName + " 不存在使用默认的数据源 -> ");
- } else {
- System.out.println("使用数据源:" + baseName);
- DynamicDataSourceContextHolder.setDataSourceType(baseName);
- }
- String xColumn = histogramConfigInfo.getxAxis().getColumnRename();
- String yColumn = histogramConfigInfo.getyAxis().getColumnRename();
- String xColumnType = histogramConfigInfo.getxAxis().getColumnType();
- String xAxisType = histogramConfigInfo.getxAxis().getShowDataType();
- List<String> groupBy = histogramConfigInfo.getGroups();
- if (xColumn == null || "".equals(xColumn) || yColumn == null || "".equals(yColumn)){
- return new RepEntity(RepCode.nullAxis);
- }
- String yType = histogramConfigInfo.getyAxis().getShowDataType();
- String yAxisType = calculationJudgeUtil.Judge(yType);
- Series series = new Series();
- List<Double> value = new ArrayList<Double>();
- List<Series> serieses = new ArrayList<Series>(); //生成柱状图的系列
- List<String> xAxisData = new ArrayList<String>(); //X轴自己用
- List<String> xData = new ArrayList<String>(); //X轴前端用
- //取筛选列表
- List<Screen> screens = histogramConfigInfo.getFilters();
- ScreenStr scr = new ScreenStr();
- String screen = ""; //正常筛选条件
- String screenToColumn = ""; //跟目标列相同的筛选条件
- if ("".equals(screens) || screens == null || screens.size() == 0){
- screen = "";
- }else {
- scr = screenUtil.screensUtil(screens, xColumn, xColumnType);
- screen = scr.getRet();
- screenToColumn = scr.getWithColumnRet();
- StringBuilder sb = new StringBuilder(screenToColumn);
- System.out.println("sb:"+sb);
- if (screenToColumn != null && !("".equals(screenToColumn))){
- screenToColumn = String.valueOf(sb .replace(1, 5, "where "));
- screen = screenToColumn + " " + screen;
- System.out.println("screen:" + screen);
- }else {
- StringBuilder sb1 = new StringBuilder(screen);
- screen = String.valueOf(sb1 .replace(1, 5, "where "));
- }
- }
- //X轴
- //判断是否为日期类型
- if ("time".equals(xColumnType)){
- xAxisData = timeConverterUtil.timeConverter(xColumn, tableName, xAxisType, screen);
- System.out.println("xA:" + xAxisData);
- xData = timeConverterUtil.toRespons(xAxisData,xAxisType );
- System.out.println("data:"+xAxisData);
- }else {
- xAxisData = showChartsMapper.getXAxis(xColumn, tableName, screen);
- }
- if ("".equals(xAxisData) || xAxisData == null || xAxisData.size() == 0){
- return new RepEntity(RepCode.Null);
- }
- if ("week".equals(xAxisType) || "month".equals(xAxisType) || "quarter".equals(xAxisType)){
- chartsDataInfo.setxAxis(xData);
- }else {
- chartsDataInfo.setxAxis(xAxisData);
- }
- //无分组时Y值
- Iterator itX = xAxisData.iterator();
- while (itX.hasNext()){
- String xdata = (String)itX.next();
- if (xdata == null || "".equals(xdata)){
- continue;
- }
- double valueOne = 0;
- String valueOnes = null;
- if ("time".equals(xColumnType)){
- valueOnes = timeConverterUtil.getTimeValueConverter(yColumn, xColumn, tableName, yAxisType, xAxisType, xdata);
- }else {
- valueOnes = showChartsMapper.getValues(yColumn, xColumn, tableName, yAxisType, xdata);
- }
- if (valueOnes == null || "".equals(valueOnes)){
- valueOne = 0;
- }else {
- valueOne = Double.parseDouble(valueOnes);
- }
- value.add(valueOne);
- }
- System.out.println(value);
- series.setName(xColumn);
- series.setValue(value);
- serieses.add(series);
- System.out.println(serieses);
- //有分组
- if (groupBy.size() != 0){
- serieses.remove(0);
- Iterator itGroup = groupBy.iterator(); //分组数
- //便利分组
- while (itGroup.hasNext()){
- String groupByName = (String) itGroup.next(); //每个分组的组名
- List<String> groupsData = showChartsMapper.getGroups(groupByName,tableName, screen); //查询每个分组系列
- System.out.println("groupdata:"+ groupsData.toString());
- Iterator itGroupsData = groupsData.iterator();
- //每个分组得到得每个系列
- while(itGroupsData.hasNext()){
- Series ne = new Series();
- String groupsName = (String)itGroupsData.next();
- if (groupsName == null || "".equals(groupsName)){
- continue;
- }
- ne.setName(groupsName);
- ne.setStack(groupByName);
- List<Double> groupsValue = new ArrayList<Double>();
- Iterator itXAxisData = xAxisData.iterator();
- //每个系列对应X轴上的值
- while (itXAxisData.hasNext()){
- String xAxisDataOne = (String) itXAxisData.next();
- if (xAxisDataOne == null || "".equals(xAxisDataOne)){
- continue;
- }
- double groupsValueOne = 0;
- String groupsValueOnes = null;
- if ("time".equals(xColumnType)){
- groupsValueOnes = timeConverterUtil.getGroupTimeConverter(yAxisType, yColumn, tableName, groupByName, xAxisType,
- groupsName, xColumn, xAxisDataOne);
- }else {
- groupsValueOnes = showChartsMapper.getGroupsValue(yAxisType, yColumn, tableName, groupByName, groupsName, xColumn, xAxisDataOne);
- }
- if ("".equals(groupsValueOnes) || groupsValueOnes == null){
- groupsValueOne = 0;
- }else{
- groupsValueOne = Double.parseDouble(groupsValueOnes);
- }
- groupsValue.add(groupsValueOne);
- }
- ne.setValue(groupsValue);
- System.out.println("值:"+ series);
- serieses.add(ne);
- }
- System.out.println(serieses);
- }
- }
- chartsDataInfo.setSerieses(serieses);
- }catch (Exception e){
- e.printStackTrace();
- System.out.println("异常");
- return new RepEntity(RepCode.erro);
- }finally {
- DynamicDataSourceContextHolder.clearDataSourceType();
- }
- return new RepEntity(RepCode.success, chartsDataInfo);
- }
- }
|