vince
2023-07-07 7f228da10dd393e45c36e1240c5e71aa9f14fc43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package com.bstek.bdf2.export.excel;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
 
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
 
import com.bstek.bdf2.export.AbstractReportModelGenerater;
import com.bstek.bdf2.export.model.ReportGridData;
import com.bstek.bdf2.export.model.ReportGridHeader;
import com.bstek.bdf2.export.model.ReportGrid;
 
/**
 * 
 * @author matt.yao@bstek.com
 * @since 2.0
 * 
 */
@Component(ExcelReportModelGenerater.BEAN_ID)
public class ExcelReportModelGenerater extends AbstractReportModelGenerater {
    
    public static final String BEAN_ID="bdf2.ExcelReportModelGenerater";
 
    @SuppressWarnings("unchecked")
    public ReportGrid generateReportGridModel(Map<String, Object> map, String intercepterBean) throws Exception {
        ReportGrid gridModel = new ReportGrid();
        List<Map<String, Object>> columnInfos = (List<Map<String, Object>>) map.get("columnInfos");
        List<ReportGridHeader> gridHeaders = new ArrayList<ReportGridHeader>();
        this.createGridColumnHeader(columnInfos, gridHeaders, null);
        gridModel.setGridHeaderModelList(gridHeaders);
        gridModel.setGridDataModel(this.createGridColumnData(map, columnInfos, intercepterBean));
        return gridModel;
    }
 
    @SuppressWarnings("unchecked")
    private void createGridColumnHeader(List<Map<String, Object>> columnInfos, List<ReportGridHeader> headerList, ReportGridHeader parent) {
        if (columnInfos == null)
            return;
        for (Map<String, Object> column : columnInfos) {
            String columnName = (String) column.get("columnName");
            int level = (Integer) column.get("level");
            String label = (String) column.get("label");
            int width = (Integer) column.get("width");
            String bgColor = (String) column.get("bgColor");
            String fontColor = (String) column.get("fontColor");
            int fontSize = 10;
            if (column.get("fontSize") != null) {
                fontSize = (Integer) column.get("fontSize");
            }
            int align = 1;
            if (column.get("align") != null) {
                align = (Integer) column.get("align");
            }
            int dataAlign = 1;
            if (column.get("dataAlign") != null) {
                dataAlign = (Integer) column.get("dataAlign");
            }
            String dataTypeName = "String";
            if (column.containsKey("dataType")){
                dataTypeName = StringUtils.defaultIfBlank((String)column.get("dataType"), "String");
            }
            String displayFormat = "";
            if (column.containsKey("displayFormat")){
                displayFormat = StringUtils.defaultIfBlank((String)column.get("displayFormat"), "");
            }
            ReportGridHeader header = new ReportGridHeader();
            header.setLevel(level);
            header.setAlign(align);
            header.setDataAlign(dataAlign);
            if (StringUtils.isNotEmpty(bgColor)) {
                header.setBgColor(this.createRGB(bgColor));
            }
            if (StringUtils.isNotEmpty(fontColor)) {
                header.setFontColor(this.createRGB(fontColor));
            }
            header.setColumnName(columnName);
            header.setLabel(label);
            header.setFontSize(fontSize);
            header.setWidth(width);
            header.setDataTypeName(dataTypeName);
            header.setDisplayFormat(displayFormat);
            if (parent != null) {
                parent.addGridHeader(header);
                header.setParent(parent);
            } else {
                headerList.add(header);
            }
            List<Map<String, Object>> children = (List<Map<String, Object>>) column.get("children");
            if (children != null) {
                this.createGridColumnHeader(children, headerList, header);
            }
        }
    }
 
    @SuppressWarnings("unchecked")
    private ReportGridData createGridColumnData(Map<String, Object> map, List<Map<String, Object>> columnInfos, String intercepterBean) throws Exception {
        Map<String, Object> style = (Map<String, Object>) map.get("gridDataStyle");
        String treeColumn = (String) map.get("treeColumn");
        List<Map<String, Object>> dataList = getGridModelData(map, columnInfos, intercepterBean);
        ReportGridData gridData = new ReportGridData();
        gridData.setDatas(dataList);
        gridData.setTreeColumn(treeColumn);
        if (style != null) {
            gridData.setContentFontSize((Integer) style.get("fontSize"));
            String contentFontColor = (String) style.get("fontColor");
            String contentBgColor = (String) style.get("bgColor");
            gridData.setContentFontColor(this.createRGB(contentFontColor));
            gridData.setContentFontAlign((Integer) style.get("fontAlign"));
            gridData.setContentBgColor(this.createRGB(contentBgColor));
        }
        return gridData;
    }
 
}