|
|
@@ -3,6 +3,7 @@ package com.usoftchina.bi.server.service.chart;
|
|
|
import com.usoftchina.bi.core.base.RepCode;
|
|
|
import com.usoftchina.bi.core.base.RepEntity;
|
|
|
import com.usoftchina.bi.core.utils.CalculationJudgeUtil;
|
|
|
+import com.usoftchina.bi.core.utils.CollectionUtils;
|
|
|
import com.usoftchina.bi.server.dao.chart.ChartsConfigMapper;
|
|
|
import com.usoftchina.bi.server.dao.chart.ShowChartsMapper;
|
|
|
import com.usoftchina.bi.server.model.bo.*;
|
|
|
@@ -10,12 +11,14 @@ import com.usoftchina.bi.server.model.vo.configVo.LineConfigInfo;
|
|
|
import com.usoftchina.bi.server.model.vo.dataVo.ChartsDataInfo;
|
|
|
import com.usoftchina.bi.core.jdbc.DynamicDataSourceContextHolder;
|
|
|
import com.usoftchina.bi.server.utils.ScreenUtil;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Iterator;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
@Service
|
|
|
public class ShowLineService {
|
|
|
@@ -85,29 +88,29 @@ public class ShowLineService {
|
|
|
List<LineSeries> serieses = new ArrayList<LineSeries>(); //生成柱状图的系列
|
|
|
List<String> xAxisData = new ArrayList<String>(); //X轴自己用
|
|
|
|
|
|
- //取筛选列表
|
|
|
- List<Screen> screens = lineConfigInfo.getFilters();
|
|
|
- ScreenStr scr = new ScreenStr();
|
|
|
- String screen = ""; //正常筛选条件
|
|
|
- String screenToColumn = ""; //跟目标列相同的筛选条件
|
|
|
- String screenToColumnS = ""; //跟目标列相同的筛选条件
|
|
|
- if ("".equals(screens) || screens == null || screens.size() == 0){
|
|
|
- screen = "";
|
|
|
- }else {
|
|
|
- scr = screenUtil.screensUtil(screens, xColumn, xAxisType);
|
|
|
- screen = scr.getRet();
|
|
|
- screenToColumn = scr.getWithColumnRet();
|
|
|
- StringBuilder sb = new StringBuilder(screenToColumn);
|
|
|
- if (screenToColumn != null && !("".equals(screenToColumn))){
|
|
|
- screenToColumnS = screenToColumn + " " + screen; //and
|
|
|
- screenToColumn = String.valueOf(sb .replace(1, 5, "where "));
|
|
|
- screen = screenToColumn + " " + screen; //where
|
|
|
- } else {
|
|
|
- StringBuilder sb1 = new StringBuilder(screen);
|
|
|
- screenToColumnS = screen;
|
|
|
- screen = String.valueOf(sb1 .replace(1, 5, "where "));
|
|
|
- }
|
|
|
+ //取筛选列表
|
|
|
+ List<Screen> screens = lineConfigInfo.getFilters();
|
|
|
+ ScreenStr scr = new ScreenStr();
|
|
|
+ String screen = ""; //正常筛选条件
|
|
|
+ String screenToColumn = ""; //跟目标列相同的筛选条件
|
|
|
+ String screenToColumnS = ""; //跟目标列相同的筛选条件
|
|
|
+ if ("".equals(screens) || screens == null || screens.size() == 0){
|
|
|
+ screen = "";
|
|
|
+ }else {
|
|
|
+ scr = screenUtil.screensUtil(screens, xColumn, xAxisType);
|
|
|
+ screen = scr.getRet();
|
|
|
+ screenToColumn = scr.getWithColumnRet();
|
|
|
+ StringBuilder sb = new StringBuilder(screenToColumn);
|
|
|
+ if (screenToColumn != null && !("".equals(screenToColumn))){
|
|
|
+ screenToColumnS = screenToColumn + " " + screen; //and
|
|
|
+ screenToColumn = String.valueOf(sb .replace(1, 5, "where "));
|
|
|
+ screen = screenToColumn + " " + screen; //where
|
|
|
+ } else {
|
|
|
+ StringBuilder sb1 = new StringBuilder(screen);
|
|
|
+ screenToColumnS = screen;
|
|
|
+ screen = String.valueOf(sb1 .replace(1, 5, "where "));
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
//X轴
|
|
|
//判断是否为日期类型
|
|
|
@@ -120,29 +123,8 @@ public class ShowLineService {
|
|
|
}
|
|
|
|
|
|
//无分组时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;
|
|
|
-// ("Y:"+ yColumn + "........x:" + xColumn + "........yAxistype:" + yAxisType + "...xtpye:+"+yAxisType+ " xdata:"+xdata);
|
|
|
- valueOnes = timeConverterUtil.getTimeValueConverter(yColumn, xColumn, tableName, yAxisType, xAxisType, xdata, screenToColumnS);
|
|
|
-// ("value:"+valueOnes);
|
|
|
- if (valueOnes == null || "".equals(valueOnes)){
|
|
|
- valueOne = 0;
|
|
|
- }else {
|
|
|
- valueOne = Double.parseDouble(valueOnes);
|
|
|
- }
|
|
|
- LineSeriesMap lineSeriesMap = new LineSeriesMap();
|
|
|
- lineSeriesMap.setValue(valueOne);
|
|
|
- lineSeriesMap.setDate(xdata);
|
|
|
- value.add(lineSeriesMap);
|
|
|
- }
|
|
|
+ value = showChartsMapper.getTimeValues(yAxisType, yColumn, tableName, xColumn, screen);
|
|
|
LineSeries series = new LineSeries();
|
|
|
-// series.setName(yColumn);
|
|
|
series.setMdata(value);
|
|
|
|
|
|
serieses.add(series);
|
|
|
@@ -152,24 +134,23 @@ public class ShowLineService {
|
|
|
serieses.remove(0);
|
|
|
Iterator itGroup = groupBy.iterator(); //分组数
|
|
|
|
|
|
- //便利分组
|
|
|
+ //遍历分组
|
|
|
while (itGroup.hasNext()){
|
|
|
String groupByName = (String) itGroup.next();
|
|
|
- int counts = showChartsMapper.getGroupsCount(groupByName,tableName, screenToColumnS);
|
|
|
- if (counts > lineConfigInfo.getMaxCount()){
|
|
|
- chartsDataInfo.setTooMany(true);
|
|
|
- }
|
|
|
List<String> groupsData = showChartsMapper.getGroups(groupByName,tableName, screenToColumnS, lineConfigInfo.getMaxCount()); //查询每个分组系列
|
|
|
Iterator itGroupsData = groupsData.iterator();
|
|
|
-
|
|
|
- //每个分组得到得每个系列
|
|
|
+ if (groupsData.size() > lineConfigInfo.getMaxCount()){
|
|
|
+ chartsDataInfo.setTooMany(true);
|
|
|
+ }
|
|
|
+ String groupsName = (String)itGroupsData.next();
|
|
|
+ /*//每个分组得到得每个系列
|
|
|
while(itGroupsData.hasNext()){
|
|
|
String groupsName = (String)itGroupsData.next();
|
|
|
if ("".equals(groupsName) || groupsName == null){
|
|
|
continue;
|
|
|
}
|
|
|
List<LineSeriesMap> groupsValue = new ArrayList<LineSeriesMap>();
|
|
|
- Iterator itXAxisData = xAxisData.iterator();
|
|
|
+ *//*Iterator itXAxisData = xAxisData.iterator();
|
|
|
|
|
|
//每个系列对应X轴上的值
|
|
|
while (itXAxisData.hasNext()){
|
|
|
@@ -180,7 +161,7 @@ public class ShowLineService {
|
|
|
double groupsValueOne = 0;
|
|
|
String groupsValueOnes = null;
|
|
|
groupsValueOnes = timeConverterUtil.getGroupTimeConverter(yAxisType, yColumn, tableName, groupByName, xAxisType,
|
|
|
- groupsName, xColumn, xAxisDataOne, screenToColumnS);
|
|
|
+ groupsName, xColumn, xAxisDataOne, screenToColumnS);
|
|
|
if ("".equals(groupsValueOnes) || groupsValueOnes == null){
|
|
|
groupsValueOne = 0;
|
|
|
}else{
|
|
|
@@ -190,12 +171,26 @@ public class ShowLineService {
|
|
|
lineSeriesMap.setDate(xAxisDataOne);
|
|
|
lineSeriesMap.setValue(groupsValueOne);
|
|
|
groupsValue.add(lineSeriesMap);
|
|
|
- }
|
|
|
-
|
|
|
+ }*//*
|
|
|
+ groupsValue = showChartsMapper.getGroupValuesTime(yAxisType, yColumn, tableName, groupByName, groupsName, xColumn, "'YYYY-MM-DD'");
|
|
|
LineSeries lineSeries = new LineSeries();
|
|
|
lineSeries.setMdata(groupsValue);
|
|
|
lineSeries.setName(groupsName);
|
|
|
serieses.add(lineSeries);
|
|
|
+ }*/
|
|
|
+
|
|
|
+ List<LineSeriesGroupMap> lineSeriesGroupMapList = showChartsMapper.getGroupsValuesTime(yAxisType, yColumn, tableName, groupByName, groupsName, xColumn, "'YYYY-MM-DD'");
|
|
|
+ Map<String, List<LineSeriesGroupMap>> lineSeriesGroupMap = CollectionUtils.groupBy(lineSeriesGroupMapList, LineSeriesGroupMap::getGroup);
|
|
|
+ Iterator<Map.Entry<String, List<LineSeriesGroupMap>>> it = lineSeriesGroupMap.entrySet().iterator();
|
|
|
+ List<LineSeriesMap> lineSeriesMapList = null;
|
|
|
+ while (it.hasNext()) {
|
|
|
+ Map.Entry<String, List<LineSeriesGroupMap>> entry = it.next();
|
|
|
+ LineSeries lineSeries = new LineSeries();
|
|
|
+ lineSeries.setName(entry.getKey());
|
|
|
+ lineSeriesMapList = new ArrayList<>();
|
|
|
+ copyProperties(entry.getValue(), lineSeriesMapList);
|
|
|
+ lineSeries.setMdata(lineSeriesMapList);
|
|
|
+ serieses.add(lineSeries);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -212,5 +207,18 @@ public class ShowLineService {
|
|
|
return new RepEntity(RepCode.success, chartsDataInfo);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * LineSeriesGroupMap 转 LineSeriesMap
|
|
|
+ * @param source
|
|
|
+ * @param target
|
|
|
+ */
|
|
|
+ private void copyProperties(List<LineSeriesGroupMap> source, List<LineSeriesMap> target){
|
|
|
+ if (!CollectionUtils.isEmpty(source)) {
|
|
|
+ for (LineSeriesGroupMap lineSeriesGroupMap : source) {
|
|
|
+ target.add(new LineSeriesMap(lineSeriesGroupMap.getDate(), lineSeriesGroupMap.getValue()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|