Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 6 additions & 10 deletions core/backend/src/main/java/io/dataease/Application.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,12 @@
import org.springframework.context.annotation.PropertySource;
import org.springframework.scheduling.annotation.EnableScheduling;

@EnableCaching
@SpringBootApplication(exclude = {
QuartzAutoConfiguration.class,
LdapAutoConfiguration.class
})
@ServletComponentScan
@EnableScheduling
@PropertySource(value = {"file:/opt/dataease/conf/dataease.properties"}, encoding = "UTF-8", ignoreResourceNotFound = true)
import java.io.UnsupportedEncodingException;

public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
public static void main(String[] args) throws UnsupportedEncodingException {
String s = new String("鍓嶆璇锋眰 AMapUI 澶辫触".getBytes("GBK"),"utf-8");
System.out.println(s);

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package io.dataease.dto.chart;

import lombok.Data;

/**
* @Author LBOO
*/
@Data
public class ChartSeniorThresholdDTO {
private String field;
private String term;
private ChartSeniorAssistDTO targetField;
private ChartSeniorAssistDTO maxField;
private ChartSeniorAssistDTO minField;

}
Original file line number Diff line number Diff line change
Expand Up @@ -963,15 +963,23 @@ public ChartViewDTO calcData(ChartViewDTO view, ChartExtRequest chartExtRequest,
DatasourceRequest datasourceAssistRequest = new DatasourceRequest();
datasourceAssistRequest.setDatasource(ds);
List<String[]> assistData = new ArrayList<>();
List<ChartSeniorAssistDTO> dynamicAssistFields = getDynamicAssistFields(view);
List<ChartSeniorAssistDTO> dynamicAssistFields = new ArrayList<>();
List<ChartViewFieldDTO> assistFields = null;
if (StringUtils.containsIgnoreCase(view.getType(), "bar")
|| StringUtils.containsIgnoreCase(view.getType(), "line")
|| StringUtils.containsIgnoreCase(view.getType(), "area")
|| StringUtils.containsIgnoreCase(view.getType(), "scatter")
|| StringUtils.containsIgnoreCase(view.getType(), "mix")
) {
assistFields = getAssistFields(dynamicAssistFields, yAxis);
// 动态辅助线
dynamicAssistFields = getDynamicAssistFields(view);
assistFields = getAssistFields(dynamicAssistFields, yAxis, null);
} else if (StringUtils.containsIgnoreCase(view.getType(), "table-info")
|| StringUtils.containsIgnoreCase(view.getType(), "table-normal")
|| StringUtils.containsIgnoreCase(view.getType(), "table-pivot")) {
// 动态阈值
dynamicAssistFields = getDynamicThresholdFields(view);
assistFields = getAssistFields(dynamicAssistFields, yAxis, xAxis);
}

// 处理过滤条件中的单引号
Expand Down Expand Up @@ -1457,7 +1465,7 @@ public ChartViewDTO uniteViewResult(String sql, Map<String, Object> chartData, M
map.put("sourceFields", sourceFields);
// merge assist result
mergeAssistField(dynamicAssistFields, assistData);
map.put("dynamicAssistLines", dynamicAssistFields);
map.put("dynamicAssistData", dynamicAssistFields);

ChartViewDTO dto = new ChartViewDTO();
BeanUtils.copyBean(dto, view);
Expand Down Expand Up @@ -2045,28 +2053,39 @@ private List<ChartSeniorAssistDTO> getDynamicAssistFields(ChartViewDTO view) {
return list;
}

private List<ChartViewFieldDTO> getAssistFields(List<ChartSeniorAssistDTO> list, List<ChartViewFieldDTO> yAxis) {
private List<ChartViewFieldDTO> getAssistFields(List<ChartSeniorAssistDTO> list, List<ChartViewFieldDTO> yAxis, List<ChartViewFieldDTO> xAxis) {
List<ChartViewFieldDTO> res = new ArrayList<>();
for (ChartSeniorAssistDTO dto : list) {
DatasetTableField curField = dto.getCurField();
ChartViewFieldDTO yField = null;
ChartViewFieldDTO field = null;
String alias = "";
for (int i = 0; i < yAxis.size(); i++) {
ChartViewFieldDTO field = yAxis.get(i);
if (StringUtils.equalsIgnoreCase(field.getId(), curField.getId())) {
yField = field;
ChartViewFieldDTO yField = yAxis.get(i);
if (StringUtils.equalsIgnoreCase(yField.getId(), curField.getId())) {
field = yField;
alias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i);
break;
}
}
if (ObjectUtils.isEmpty(yField)) {

if (ObjectUtils.isEmpty(field) && CollectionUtils.isNotEmpty(xAxis)) {
for (int i = 0; i < xAxis.size(); i++) {
ChartViewFieldDTO xField = xAxis.get(i);
if (StringUtils.equalsIgnoreCase(xField.getId(), curField.getId())) {
field = xField;
alias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i);
break;
}
}
}
if (ObjectUtils.isEmpty(field)) {
continue;
}

ChartViewFieldDTO chartViewFieldDTO = new ChartViewFieldDTO();
BeanUtils.copyBean(chartViewFieldDTO, curField);
chartViewFieldDTO.setSummary(dto.getSummary());
chartViewFieldDTO.setOriginName(alias);// yAxis的字段别名,就是查找的字段名
chartViewFieldDTO.setOriginName(alias);// 字段别名,就是查找的字段名
res.add(chartViewFieldDTO);
}
return res;
Expand All @@ -2077,11 +2096,82 @@ private void mergeAssistField(List<ChartSeniorAssistDTO> dynamicAssistFields, Li
return;
}
String[] strings = assistData.get(0);
for (int i = 0; i < dynamicAssistFields.size(); i++) {
if (i < strings.length) {
ChartSeniorAssistDTO chartSeniorAssistDTO = dynamicAssistFields.get(i);
chartSeniorAssistDTO.setValue(strings[i]);
for (int i = 0, size = Math.min(dynamicAssistFields.size(), strings.length); i < size; i++) {
ChartSeniorAssistDTO chartSeniorAssistDTO = dynamicAssistFields.get(i);
chartSeniorAssistDTO.setValue(strings[i]);
}
}

private List<ChartSeniorAssistDTO> getDynamicThresholdFields(ChartViewDTO view) {
String senior = view.getSenior();
JSONObject jsonObject = JSONObject.parseObject(senior);
List<ChartSeniorAssistDTO> list = new ArrayList<>();
JSONObject threshold = jsonObject.getJSONObject("threshold");
if (ObjectUtils.isEmpty(threshold) || StringUtils.isBlank(threshold.toJSONString())){
return list;
}
JSONArray tableThreshold = threshold.getJSONArray("tableThreshold");
if (ObjectUtils.isEmpty(tableThreshold) || StringUtils.isBlank(tableThreshold.toJSONString())) {
return list;
}

for (int i = 0; i < tableThreshold.size(); i++) {
JSONObject item = tableThreshold.getJSONObject(i);
JSONArray itemConditions = item.getJSONArray("conditions");
if (ObjectUtils.isEmpty(itemConditions) || StringUtils.isBlank(itemConditions.toJSONString())) {
continue;
}
List<ChartSeniorThresholdDTO> conditions = gson.fromJson(itemConditions.toJSONString(), new TypeToken<List<ChartSeniorThresholdDTO>>() {
}.getType());
for (ChartSeniorThresholdDTO condition : conditions) {
if (StringUtils.equalsIgnoreCase(condition.getField(), "0")) {
continue;
}

for (ChartSeniorAssistDTO fieldDTO : getConditionFields(condition)) {
if (solveThresholdCondition(fieldDTO, view.getTableId())) {
list.add(fieldDTO);
}
}
}
}

return list;
}

private boolean solveThresholdCondition(ChartSeniorAssistDTO fieldDTO, String tableId){
String fieldId = fieldDTO.getFieldId();
String summary = fieldDTO.getSummary();
if (StringUtils.isEmpty(fieldId) || StringUtils.isEmpty(summary)) {
return false;
}
DatasetTableFieldExample datasetTableFieldExample = new DatasetTableFieldExample();
datasetTableFieldExample.createCriteria().andTableIdEqualTo(tableId).andIdEqualTo(fieldId);
List<DatasetTableField> fieldList = datasetTableFieldMapper.selectByExample(datasetTableFieldExample);
if (CollectionUtils.isEmpty(fieldList)) {
return false;
}
fieldDTO.setCurField(fieldList.get(0));
return true;
}

private List<ChartSeniorAssistDTO> getConditionFields(ChartSeniorThresholdDTO condition){
List<ChartSeniorAssistDTO> list = new ArrayList<>();
if (StringUtils.equalsIgnoreCase(condition.getField(), "0")) {
return list;
}
if ("between".equals(condition.getTerm())) {
if (!StringUtils.equalsIgnoreCase(condition.getMaxField().getSummary(), "value")) {
list.add(condition.getMaxField());
}
if (!StringUtils.equalsIgnoreCase(condition.getMinField().getSummary(), "value")) {
list.add(condition.getMinField());
}
} else {
if (!StringUtils.equalsIgnoreCase(condition.getTargetField().getSummary(), "value")) {
list.add(condition.getTargetField());
}
}
return list;
}
}
2 changes: 1 addition & 1 deletion core/frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"@antv/l7-scene": "2.15.0",
"@antv/l7-source": "2.15.0",
"@antv/l7-utils": "2.15.0",
"@antv/s2": "1.35.0",
"@antv/s2": "1.49.1",
"@antv/util": "^2.0.17",
"@riophae/vue-treeselect": "0.4.0",
"@tinymce/tinymce-vue": "^3.2.8",
Expand Down
2 changes: 1 addition & 1 deletion core/frontend/public/vendor/vendor-manifest.json

Large diffs are not rendered by default.

60 changes: 45 additions & 15 deletions core/frontend/public/vendor/vendor.dll.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions core/frontend/src/lang/en.js
Original file line number Diff line number Diff line change
Expand Up @@ -1019,6 +1019,7 @@ export default {
fast_calc: 'Fast Calculation',
sum: 'Sum',
count: 'Count',
value: 'Value',
avg: 'Avg',
max: 'Max',
min: 'Min',
Expand Down
3 changes: 2 additions & 1 deletion core/frontend/src/lang/tw.js
Original file line number Diff line number Diff line change
Expand Up @@ -1019,7 +1019,8 @@ export default {
fast_calc: '快速計算',
sum: '求和',
count: '計數',
avg: '平均',
value: '字段值',
avg: '平均值',
max: '最大值',
min: '最小值',
stddev_pop: '標準差',
Expand Down
3 changes: 2 additions & 1 deletion core/frontend/src/lang/zh.js
Original file line number Diff line number Diff line change
Expand Up @@ -1018,7 +1018,8 @@ export default {
fast_calc: '快速计算',
sum: '求和',
count: '计数',
avg: '平均',
value: '字段值',
avg: '平均值',
max: '最大值',
min: '最小值',
stddev_pop: '标准差',
Expand Down
2 changes: 1 addition & 1 deletion core/frontend/src/views/chart/chart/common/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,7 @@ export function seniorCfg(chart_option, chart) {
}

const fixedLines = senior.assistLine.filter(ele => ele.field === '0')
const dynamicLines = chart.data.dynamicAssistLines
const dynamicLines = chart.data.dynamicAssistData
const lines = fixedLines.concat(dynamicLines)

lines.forEach(ele => {
Expand Down
2 changes: 1 addition & 1 deletion core/frontend/src/views/chart/chart/common/common_antv.js
Original file line number Diff line number Diff line change
Expand Up @@ -952,7 +952,7 @@ export function getAnalyse(chart) {
}

const fixedLines = senior.assistLine.filter(ele => ele.field === '0')
const dynamicLines = chart.data.dynamicAssistLines
const dynamicLines = chart.data.dynamicAssistData
const lines = fixedLines.concat(dynamicLines)

lines.forEach(ele => {
Expand Down
67 changes: 57 additions & 10 deletions core/frontend/src/views/chart/chart/table/table-info.js
Original file line number Diff line number Diff line change
Expand Up @@ -551,21 +551,22 @@ function getConditions(chart) {
}
}

let filedValueMap = getFieldValueMap(chart)
for (let i = 0; i < conditions.length; i++) {
const field = conditions[i]
res.text.push({
field: field.field.dataeaseName,
mapping(value) {
mapping(value,rowData) {
return {
fill: mappingColor(value, valueColor, field, 'color')
fill: mappingColor(value, valueColor, field, 'color', filedValueMap, rowData)
}
}
})
res.background.push({
field: field.field.dataeaseName,
mapping(value) {
mapping(value,rowData) {
return {
fill: mappingColor(value, valueBgColor, field, 'backgroundColor')
fill: mappingColor(value, valueBgColor, field, 'backgroundColor', filedValueMap, rowData)
}
}
})
Expand All @@ -574,13 +575,37 @@ function getConditions(chart) {
return res
}

function mappingColor(value, defaultColor, field, type) {
function getValue(field, filedValueMap, rowData){
if (field.summary === 'value') {
return rowData[field.curField.dataeaseName]
} else {
return filedValueMap[field.summary + '-' + field.fieldId]
}
}

function mappingColor(value, defaultColor, field, type, filedValueMap, rowData) {
let color
for (let i = 0; i < field.conditions.length; i++) {
let flag = false
const t = field.conditions[i]
if (field.field.deType === 2 || field.field.deType === 3 || field.field.deType === 4) {
const tv = parseFloat(t.value)
let tv,max,min;
if (t.field === '1') {
if (t.term === 'between') {
max = parseFloat(getValue(t.maxField, filedValueMap, rowData))
min = parseFloat(getValue(t.minField, filedValueMap, rowData))
} else {
tv = parseFloat(getValue(t.targetField, filedValueMap, rowData))
}
} else {
if (t.term === 'between') {
min = parseFloat(t.min)
max = parseFloat(t.max)
} else {
tv = parseFloat(t.value)
}
}

if (t.term === 'eq') {
if (value === tv) {
color = t[type]
Expand Down Expand Up @@ -612,8 +637,6 @@ function mappingColor(value, defaultColor, field, type) {
flag = true
}
} else if (t.term === 'between') {
const min = parseFloat(t.min)
const max = parseFloat(t.max)
if (min <= value && value <= max) {
color = t[type]
flag = true
Expand All @@ -625,7 +648,12 @@ function mappingColor(value, defaultColor, field, type) {
color = defaultColor
}
} else if (field.field.deType === 0 || field.field.deType === 5) {
const tv = t.value
let tv;
if (t.field === '1') {
tv = getValue(t.targetField, filedValueMap, rowData)
} else {
tv = t.value
}
if (t.term === 'eq') {
if (value === tv) {
color = t[type]
Expand Down Expand Up @@ -664,7 +692,16 @@ function mappingColor(value, defaultColor, field, type) {
}
} else {
// time
const tv = new Date(t.value.replace(/-/g, '/') + ' GMT+8').getTime()
let tv;
if (t.field === '1') {
let fieldValue = getValue(t.targetField, filedValueMap, rowData);
if (fieldValue) {
tv = new Date(fieldValue.replace(/-/g, '/') + ' GMT+8').getTime()
}
} else {
tv = new Date(t.value.replace(/-/g, '/') + ' GMT+8').getTime()
}

const v = new Date(value.replace(/-/g, '/') + ' GMT+8').getTime()
if (t.term === 'eq') {
if (v === tv) {
Expand Down Expand Up @@ -722,3 +759,13 @@ function showTooltip(s2Instance, event, fieldMap) {
content
})
}

function getFieldValueMap(view){
let fieldValueMap = {}
if (view.data && view.data.dynamicAssistData && view.data.dynamicAssistData.length > 0) {
view.data.dynamicAssistData.forEach(ele => {
fieldValueMap[ele.summary + '-' + ele.fieldId] = ele.value
});
}
return fieldValueMap;
}
Loading