shiqian 3 жил өмнө
parent
commit
33e7bcf49c

+ 1798 - 0
boman-report/src/main/java/org/jeecg/modules/jmreport/common/ExportExcelService.java

@@ -0,0 +1,1798 @@
+package org.jeecg.modules.jmreport.common;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.openxml4j.opc.PackagePartName;
+import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.openxml4j.opc.TargetMode;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.ss.util.CellReference;
+import org.apache.poi.ss.util.RegionUtil;
+import org.apache.poi.xssf.streaming.SXSSFCell;
+import org.apache.poi.xssf.streaming.SXSSFRow;
+import org.apache.poi.xssf.streaming.SXSSFSheet;
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
+import org.apache.poi.xssf.usermodel.*;
+import org.jeecg.modules.jmreport.common.constant.CommonConstant;
+import org.jeecg.modules.jmreport.common.constant.JmConst;
+import org.jeecg.modules.jmreport.common.expetion.JimuReportException;
+import org.jeecg.modules.jmreport.common.util.CommonUtils;
+import org.jeecg.modules.jmreport.common.util.ExcelUtil;
+import org.jeecg.modules.jmreport.common.util.GoogleBarCodeUtils;
+import org.jeecg.modules.jmreport.common.util.oConvertUtils;
+import org.jeecg.modules.jmreport.common.vo.JmDictModel;
+import org.jeecg.modules.jmreport.common.vo.Result;
+import org.jeecg.modules.jmreport.config.JmReportBaseConfig;
+import org.jeecg.modules.jmreport.config.oss.JmReportUploadConfig;
+import org.jeecg.modules.jmreport.desreport.dao.JimuReportDao;
+import org.jeecg.modules.jmreport.desreport.dao.JimuReportDbDao;
+import org.jeecg.modules.jmreport.desreport.dao.JimuReportDbFieldDao;
+import org.jeecg.modules.jmreport.desreport.dao.JimuReportDbParamDao;
+import org.jeecg.modules.jmreport.desreport.entity.JimuReport;
+import org.jeecg.modules.jmreport.desreport.entity.JmReportDb;
+import org.jeecg.modules.jmreport.desreport.entity.JmReportDbField;
+import org.jeecg.modules.jmreport.desreport.entity.JmReportDbParam;
+import org.jeecg.modules.jmreport.desreport.model.JmExpression;
+import org.jeecg.modules.jmreport.desreport.model.RenderInfo;
+import org.jeecg.modules.jmreport.desreport.model.ReportDbInfo;
+import org.jeecg.modules.jmreport.desreport.render.utils.ExcelColumn;
+import org.jeecg.modules.jmreport.desreport.render.utils.ReportUtil;
+import org.jeecg.modules.jmreport.desreport.service.IJimuReportDictService;
+import org.jeecg.modules.jmreport.desreport.service.IJmReportExportExcel;
+import org.jeecg.modules.jmreport.desreport.service.a.e;
+import org.jeecg.modules.jmreport.desreport.util.b;
+import org.jeecg.modules.jmreport.desreport.util.d;
+import org.jeecg.modules.jmreport.dyndb.JmreportDataSourceCachePool;
+import org.jeecg.modules.jmreport.dyndb.JmreportDynamicDbUtil;
+import org.jeecg.modules.jmreport.dyndb.util.JmreportSqlUtils;
+import org.jeecg.modules.jmreport.dyndb.vo.JmreportDynamicDataSourceVo;
+import org.jeecgframework.minidao.pojo.MiniDaoPage;
+import org.jeecgframework.minidao.util.MiniDaoUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.ResourceAccessException;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.ProtocolException;
+import java.net.URL;
+import java.nio.file.Files;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+import static com.boman.common.core.utils.obj.ObjectUtils.*;
+
+/**
+ * @author shiqian
+ * @date 2021年08月19日 15:17
+ **/
+@Service
+public class ExportExcelService {
+    @Autowired
+    private e jmReportDesignService;
+    @Autowired
+    private JmReportBaseConfig jmBaseConfig;
+    @Autowired
+    private JmReportUploadConfig jimuReportUploadConfig;
+    @Autowired
+    private JimuReportDao reportDao;
+    @Autowired
+    private JimuReportDbParamDao dbParamDao;
+    @Autowired
+    private JimuReportDbDao reportDbDao;
+    @Autowired
+    private JmreportDynamicDbUtil jmreportDynamicDbUtil;
+    @Autowired
+    private JimuReportDbFieldDao dbFieldDao;
+    @Autowired
+    private IJimuReportDictService dictService;
+
+    private static final Logger a = LoggerFactory.getLogger(ExportExcelService.class);
+
+    public Map<String, Object> exportEmptyExcel(String excelConfigId, JSONObject queryParam, List echartBase) {
+        XSSFWorkbook var4 = new XSSFWorkbook();
+        SXSSFWorkbook var5 = new SXSSFWorkbook(var4, -1, Boolean.FALSE, Boolean.TRUE);
+        String var6 = "";
+        HashMap var7 = new HashMap();
+        XSSFCellStyle var8 = this.a1(var5);
+        var7.put("generalStyle", var8);
+        boolean var9 = true;
+        new HashMap();
+        int var11 = 1;
+        Integer var12 = this.jmBaseConfig.getPageSizeNumber();
+        if (null == queryParam || queryParam.size() == 0) {
+            queryParam = new JSONObject();
+        }
+
+        while(var9) {
+            if (oConvertUtils.isEmpty(var12)) {
+                var12 = 10000;
+            }
+
+            if (oConvertUtils.isNotEmpty(var12) && "0".equals(String.valueOf(var12))) {
+                var12 = 10000;
+            }
+
+            queryParam.put("pageNo", var11);
+            queryParam.put("pageSize", var12);
+            Result var13 = this.jmReportDesignService.show(excelConfigId, queryParam.toJSONString());
+            JimuReport var14 = (JimuReport)var13.getResult();
+            JSONObject var15 = JSON.parseObject(var14.getJsonStr());
+            JSONObject var16 = var15.getJSONObject("rows");
+            if (var16.containsKey("-1")) {
+                var16.remove("-1");
+            }
+
+            if (var16.containsKey("len")) {
+                var16.remove("len");
+            }
+
+            if (var16.size() < var12) {
+                var9 = false;
+            }
+
+            if (var16.size() > var12) {
+                var9 = false;
+            }
+
+            var6 = var14.getName();
+            JSONObject var17 = JSON.parseObject(var14.getJsonStr());
+            this.a2((JSONObject)var17, (List)echartBase, (SXSSFWorkbook)var5, (XSSFWorkbook)var4, (Integer)var11, (Map)var7);
+            ++var11;
+        }
+
+        HashMap var18 = new HashMap();
+        var18.put("name", var6 + ".xlsx");
+        var18.put("workbook", var5);
+        return var18;
+    }
+
+    private XSSFCellStyle a1(SXSSFWorkbook var1) {
+        XSSFCellStyle var2 = (XSSFCellStyle)var1.createCellStyle();
+        XSSFFont var3 = (XSSFFont)var1.createFont();
+        var3.setFontName("宋体");
+        var2.setFont(var3);
+        var2.setAlignment(HorizontalAlignment.CENTER);
+        var2.setVerticalAlignment(VerticalAlignment.CENTER);
+        return var2;
+    }
+
+    private void a3(Sheet var1, JSONObject var2) {
+        var1.setDefaultColumnWidth(12);
+        Iterator var3 = var2.keySet().iterator();
+
+        while(var3.hasNext()) {
+            String var4 = (String)var3.next();
+            JSONObject var5 = (JSONObject)var2.get(var4);
+            var1.setColumnWidth(Integer.parseInt(var4), 35 * (int)((double)var5.getInteger("width") + 0.8D));
+        }
+
+    }
+
+    private SXSSFWorkbook a2(JSONObject var1, List var2, SXSSFWorkbook var3, XSSFWorkbook var4, Integer var5, Map<String, CellStyle> var6) {
+        JSONArray var7 = null;
+        JSONArray var8 = null;
+        JSONArray var9 = null;
+        JSONArray var10 = null;
+        JSONObject var11 = null;
+        if (var1.containsKey("imgList")) {
+            var7 = var1.getJSONArray("imgList");
+        }
+
+        if (var1.containsKey("chartList")) {
+            var8 = var1.getJSONArray("chartList");
+        }
+
+        if (var1.containsKey("barcodeList")) {
+            var9 = var1.getJSONArray("barcodeList");
+        }
+
+        if (var1.containsKey("qrcodeList")) {
+            var10 = var1.getJSONArray("qrcodeList");
+        }
+
+        if (var1.containsKey("background")) {
+            Object var12 = var1.get("background");
+            if (var12 instanceof JSONObject) {
+                var11 = var1.getJSONObject("background");
+            }
+        }
+
+        JSONObject var13;
+        String var14;
+        if (var8 != null && var8.size() > 0 && var2.size() > 0) {
+            for(int var31 = 0; var31 < var8.size(); ++var31) {
+                var13 = var8.getJSONObject(var31);
+                var14 = (String)var13.get("layer_id");
+                List var15 = var2;
+                String var16 = "";
+
+                for(int var17 = 0; var17 < var15.size(); ++var17) {
+                    Map var18 = (Map)var15.get(var17);
+                    if (((String)var18.get("id")).equals(var14)) {
+                        var16 = (String)var18.get("base64");
+                    }
+                }
+
+                String[] var35 = var16.split("base64,");
+                var13.put("url", var35[1]);
+            }
+        }
+
+        JSONObject var32 = var1.getJSONObject("rows");
+        var13 = var1.getJSONObject("cols");
+        if (var13.containsKey("len")) {
+            var13.remove("len");
+        }
+
+        if (var32.containsKey("-1")) {
+            var32.remove("-1");
+        }
+
+        var14 = var1.getString("name");
+        Object var33 = var1.get("styles");
+        HashMap var34 = new HashMap();
+        int var37;
+        if (var33 instanceof JSONArray) {
+            JSONArray var36 = var1.getJSONArray("styles");
+
+            for(var37 = 0; var37 < var36.size(); ++var37) {
+                var34.put(String.valueOf(var37), var36.get(var37));
+            }
+        }
+
+        if (var33 instanceof JSONObject) {
+            JSONObject var38 = (JSONObject)var33;
+
+            for(var37 = 1; var37 <= var38.size(); ++var37) {
+                var34.put(String.valueOf(var37), var38.get(var37));
+            }
+        }
+
+        Object var39 = null;
+        String var40 = this.jmBaseConfig.getExportExcelPattern();
+        if (oConvertUtils.isEmpty(var40) || "fast".equals(var40)) {
+            var3.createSheet("sheet" + var5);
+            var39 = var3.getSheetAt(var5 - 1);
+        }
+
+        if ("primary".equals(var40)) {
+            var4.createSheet("sheet" + var5);
+            var39 = var4.getSheetAt(var5 - 1);
+        }
+
+        this.a3((Sheet)var39, var13);
+        ((Sheet)var39).setDefaultRowHeightInPoints(19.5F);
+        HashMap var19 = new HashMap();
+        HashMap var20 = new HashMap();
+        HashMap var21 = new HashMap();
+        ArrayList var22 = new ArrayList();
+        HashMap var23 = new HashMap();
+        Map var24 = this.a4(var32);
+        HashMap var25 = new HashMap();
+        long var26 = System.currentTimeMillis();
+        HashMap var28 = new HashMap();
+        this.a5((Map)var34, (Workbook)var3, (Map)var6);
+        if (var39 instanceof SXSSFSheet) {
+            this.a5((SXSSFWorkbook)var3, var32, var34, (SXSSFSheet)((SXSSFSheet)var39), var19, var20, var21, var22, var24, var25, var28, var5, var6);
+        }
+
+        if (var39 instanceof XSSFSheet) {
+            this.a7((XSSFWorkbook)var4, var32, var34, (XSSFSheet)((XSSFSheet)var39), var19, var20, var21, var22, var24, var25, var28, var5, var6);
+        }
+
+        long var29 = System.currentTimeMillis();
+        a.info("循环数据运行时间:" + (var29 - var26) + "ms");
+        if (var32.size() < this.jmBaseConfig.excelStyleRow && var5 == 1 || var39 instanceof XSSFSheet) {
+            this.a10((JSONObject)var32, (Sheet)var39, (SXSSFWorkbook)var3, (Map)var34, (Map)var28, (Map)var23);
+            this.a11((Sheet)var39, (SXSSFWorkbook)var3, (Map)var23);
+        }
+
+        this.a12((Workbook)var3, (Sheet)var39, (Map)var19, (Map)var28, (Map)var20, (Map)var21);
+        if (var7 != null) {
+            this.a16((Sheet)var39, (XSSFWorkbook)var4, (JSONArray)var7, (Map)var28, var25);
+        }
+
+        if (var8 != null) {
+            this.a17((Sheet)var39, (SXSSFWorkbook)var3, (JSONArray)var8, (Map)var25, (JSONObject)var13, (JSONObject)var32);
+        }
+
+        if (var9 != null) {
+            this.a18((Sheet)var39, (Workbook)var3, (JSONArray)var9, (List)var2, var25);
+        }
+
+        if (var10 != null) {
+            this.a18((Sheet)var39, (Workbook)var3, (JSONArray)var10, (List)var2, var25);
+        }
+
+        if (var11 != null) {
+            this.a19((Sheet)var39, (XSSFWorkbook)var4, (JSONObject)var11);
+        }
+
+        if (null != var22 && var22.size() > 0) {
+            this.a23((Sheet)var39, (SXSSFWorkbook)var3, (List)var22, (Map)var28, var25);
+        }
+
+        return var3;
+    }
+
+
+    public Map<String, Integer> a24(Sheet var1, Map<String, String> var2, Integer var3, Integer var4) {
+        HashMap var5 = new HashMap();
+        String var6 = (String)var2.get(var3 + "," + var4);
+        Row var7 = var1.getRow(var3);
+        Cell var8 = var7.getCell(var4);
+        var8.setCellValue("");
+        int var9 = (int)var8.getSheet().getColumnWidthInPixels(var8.getColumnIndex());
+        int var10 = (int)var7.getHeightInPoints();
+        int var11 = 0;
+        int var12 = 0;
+        int var13 = var3;
+        int var14 = var4;
+        if (oConvertUtils.isNotEmpty(var6)) {
+            String[] var15 = var6.split(",");
+            int var16 = Integer.parseInt(var15[0]);
+            int var17 = Integer.parseInt(var15[1]);
+
+            int var18;
+            for(var18 = var7.getRowNum() + 1; var18 < var16 + 1; ++var18) {
+                Row var19 = var1.getRow(var18);
+                if (var19 != null) {
+                    var12 += (int)var1.getRow(var18).getHeightInPoints();
+                }
+            }
+
+            for(var18 = var8.getColumnIndex() + 1; var18 < var17 + 1; ++var18) {
+                var11 += (int)var1.getColumnWidthInPixels(var18);
+            }
+        }
+
+        var9 += var11;
+        var10 += var12;
+        var5.put("width", var9);
+        var5.put("height", var10);
+        return var5;
+    }
+
+    private void a23(Sheet var1, SXSSFWorkbook var2, List<Map<String, Object>> var3, Map<String, String> var4, Map<String, Object> var5) {
+        Drawing var6 = var1.createDrawingPatriarch();
+
+        for(int var7 = 0; var7 < var3.size(); ++var7) {
+            Map var8 = (Map)var3.get(var7);
+            boolean var9 = false;
+            boolean var10 = false;
+            int var23 = Integer.valueOf(var8.get("cell").toString());
+            int var22 = Integer.valueOf(var8.get("row").toString());
+            String var11 = var8.get("text").toString();
+            String var12 = var8.get("display").toString();
+            Map var13 = this.a24(var1, var4, var22, var23);
+            Integer var14 = (Integer)var13.get("width");
+            Integer var15 = (Integer)var13.get("height");
+            Object var16 = null;
+            String var17 = (String)var8.get("layer_id");
+            Object var18 = var5.get(var17);
+            if (null != var18) {
+                String[] var19 = String.valueOf(var18).split(",");
+                var22 = Integer.parseInt(var19[0]);
+                var23 = Integer.parseInt(var19[1]);
+            }
+
+            byte[] var24;
+            if ("img".equals(var12)) {
+                var24 = this.a20(var11);
+            } else {
+                var24 = GoogleBarCodeUtils.createCodeToFile(var11, var12, var14, var15);
+            }
+
+            String var25 = (String)var4.get(var22 + "," + var23);
+            if (oConvertUtils.isNotEmpty(var25)) {
+                String[] var20 = var25.split(",");
+                XSSFClientAnchor var21 = new XSSFClientAnchor(0, 0, var14, var15, var23, var22, Integer.parseInt(var20[1]) + 1, Integer.parseInt(var20[0]) + 1);
+                var6.createPicture(var21, var2.addPicture(var24, 5));
+            } else {
+                XSSFClientAnchor var26 = new XSSFClientAnchor(0, 0, var14, var15, var23, var22, var23 + 1, var22 + 1);
+                var6.createPicture(var26, var2.addPicture(var24, 5));
+            }
+        }
+
+    }
+
+    private Map<String, Object> a4(JSONObject var1) {
+        HashMap var2 = new HashMap();
+        Iterator var3 = var1.keySet().iterator();
+
+        label60:
+        while(true) {
+            String var4;
+            int var5;
+            do {
+                do {
+                    do {
+                        do {
+                            if (!var3.hasNext()) {
+                                return var2;
+                            }
+
+                            var4 = (String)var3.next();
+                        } while("cells".equals(var4));
+                    } while("isDrag".equals(var4));
+                } while("len".equals(var4));
+
+                var5 = Integer.parseInt(var4);
+            } while(var5 < 0);
+
+            JSONObject var6 = var1.getJSONObject(var4).getJSONObject("cells");
+            var6 = this.b1(var6);
+            Iterator var7 = var6.keySet().iterator();
+
+            while(true) {
+                String var8;
+                String var10;
+                Matcher var13;
+                do {
+                    JSONObject var9;
+                    do {
+                        do {
+                            if (!var7.hasNext()) {
+                                continue label60;
+                            }
+
+                            var8 = (String)var7.next();
+                        } while("-1".equals(var8));
+
+                        var9 = var6.getJSONObject(var8);
+                    } while(!var9.containsKey("text"));
+
+                    var10 = var9.getString("text");
+                    String var11 = "^[=][A-Z]{1,2}[^\\u4e00-\\u9fa5]+$";
+                    Pattern var12 = Pattern.compile(var11);
+                    var13 = var12.matcher(var10);
+                } while(!ExcelUtil.isHave(CommonConstant.JIMUREPORT_FUNCTION, var10) && !var13.matches());
+
+                var2.put(var4 + "," + var8, var10);
+            }
+        }
+    }
+    private void a5(Map<String, JSONObject> var1, Workbook var2, Map<String, CellStyle> var3) {
+        Iterator var4 = var1.entrySet().iterator();
+
+        while(true) {
+            Map.Entry var5;
+            JSONObject var7;
+            XSSFCellStyle var8;
+            do {
+                do {
+                    do {
+                        CellStyle var6;
+                        do {
+                            if (!var4.hasNext()) {
+                                return;
+                            }
+
+                            var5 = (Map.Entry)var4.next();
+                            var6 = (CellStyle)var3.get(var5.getKey());
+                        } while(null != var6);
+
+                        var7 = (JSONObject)var5.getValue();
+                    } while(var7 == null);
+                } while("null".equals(var7));
+
+                var8 = (XSSFCellStyle)var2.createCellStyle();
+            } while(null == var7);
+
+            String var9;
+            if (!var7.containsKey("align")) {
+                var8.setAlignment(HorizontalAlignment.LEFT);
+            } else {
+                var9 = var7.getString("align").toUpperCase();
+                var8.setAlignment(HorizontalAlignment.valueOf(var9));
+            }
+
+            if (null != var7 && !var7.containsKey("valign")) {
+                var8.setVerticalAlignment(VerticalAlignment.valueOf("center".toUpperCase()));
+            } else {
+                var9 = var7.getString("valign").toUpperCase();
+                if ("MIDDLE".equals(var9)) {
+                    var9 = "center".toUpperCase();
+                }
+
+                var8.setVerticalAlignment(VerticalAlignment.valueOf(var9));
+            }
+
+            if (null == var7 || var7.containsKey("bgcolor")) {
+                var9 = var7.getString("bgcolor");
+                XSSFColor var10 = new XSSFColor();
+                if (var9.indexOf("#") != -1 && var9.length() > 6) {
+                    String var11 = var9.replaceAll("#", "");
+                    if (var11.length() == 6) {
+                        byte[] var12 = new byte[]{(byte)Integer.parseInt(var11.substring(0, 2), 16), (byte)Integer.parseInt(var11.substring(2, 4), 16), (byte)Integer.parseInt(var11.substring(4, 6), 16)};
+                        var10.setRGB(var12);
+                    }
+                }
+
+                var8.setFillForegroundColor(var10);
+                var8.setFillBackgroundColor(var10);
+                var8.setFillPattern(FillPatternType.BIG_SPOTS);
+            }
+
+            XSSFColor var14;
+            if (null != var7 && var7.containsKey("font") || var7.containsKey("underline") || var7.containsKey("strike") || var7.containsKey("color")) {
+                XSSFFont var18 = (XSSFFont)var2.createFont();
+                JSONObject var17 = (JSONObject)var7.get("font");
+                Object var22 = var7.get("underline");
+                Object var25 = var7.get("strike");
+                if (null != var17) {
+                    if (var17.containsKey("name")) {
+                        var18.setFontName(var17.getString("name"));
+                    }
+
+                    if (var17.containsKey("italic")) {
+                        var18.setItalic(true);
+                    }
+
+                    if (var17.containsKey("size")) {
+                        var18.setFontHeightInPoints(var17.getShort("size"));
+                    }
+
+                    if (var17.containsKey("bold")) {
+                        boolean var13 = var17.getBoolean("bold");
+                        var18.setBold(var13);
+                    }
+                }
+
+                if (null != var22) {
+                    var18.setUnderline((byte)1);
+                }
+
+                if (null != var25) {
+                    var18.setStrikeout(true);
+                }
+
+                if (null != var7 && var7.containsKey("color")) {
+                    String var27 = var7.getString("color");
+                    var14 = new XSSFColor();
+                    if (var27.length() > 6) {
+                        if (var27.contains("rgb")) {
+                            var27 = var27.replace("rgb", "").replace("(", "").replace(")", "");
+                            String[] var15 = var27.split(",");
+                            if (var15.length == 3) {
+                                byte[] var16 = new byte[]{(byte)Integer.parseInt(var15[0]), (byte)Integer.parseInt(var15[1]), (byte)Integer.parseInt(var15[2])};
+                                var14.setRGB(var16);
+                            }
+                        } else if (var27.contains("#")) {
+                            byte[] var29 = new byte[]{(byte)Integer.parseInt(var27.substring(1, 3), 16), (byte)Integer.parseInt(var27.substring(3, 5), 16), (byte)Integer.parseInt(var27.substring(5, 7), 16)};
+                            var14.setRGB(var29);
+                        }
+                    }
+
+                    var18.setColor(var14);
+                }
+
+                var8.setFont(var18);
+            }
+
+            if (var7.containsKey("border")) {
+                JSONObject var20 = var7.getJSONObject("border");
+                JSONArray var19 = var20.getJSONArray("right");
+                JSONArray var24 = var20.getJSONArray("top");
+                JSONArray var26 = var20.getJSONArray("left");
+                JSONArray var28 = var20.getJSONArray("bottom");
+                if (null != var24 && var24.size() > 1) {
+                    var8.setBorderTop(BorderStyle.THIN);
+                    var14 = this.b(var24.get(1).toString());
+                    var8.setTopBorderColor(var14);
+                }
+
+                if (null != var28 && var28.size() > 1) {
+                    var8.setBorderBottom(BorderStyle.THIN);
+                    var14 = this.b(var28.get(1).toString());
+                    var8.setBottomBorderColor(var14);
+                }
+
+                if (null != var26 && var26.size() > 1) {
+                    var8.setBorderLeft(BorderStyle.THIN);
+                    var14 = this.b(var26.get(1).toString());
+                    var8.setLeftBorderColor(var14);
+                }
+
+                if (null != var19 && var19.size() > 1) {
+                    var8.setBorderRight(BorderStyle.THIN);
+                    var14 = this.b(var19.get(1).toString());
+                    var8.setRightBorderColor(var14);
+                }
+            }
+
+            if (var7.containsKey("format")) {
+                DataFormat var23 = var2.createDataFormat();
+                String var21 = var7.getString("format");
+                if ("percent".equals(var21)) {
+                    var8.setDataFormat(var23.getFormat("0.00%"));
+                }
+
+                if ("rmb".equals(var21)) {
+                    var8.setDataFormat(var23.getFormat("¥#,##0"));
+                }
+
+                if ("usd".equals(var21)) {
+                    var8.setDataFormat(var23.getFormat("$#,##0"));
+                }
+
+                if ("eur".equals(var21)) {
+                    var8.setDataFormat(var23.getFormat("€#,##0"));
+                }
+            }
+
+            var8.setWrapText(true);
+            var3.put(var5.getKey().toString(), var8);
+        }
+    }
+
+    public XSSFColor b(String var1) {
+        XSSFColor var2 = new XSSFColor();
+        if (var1.contains("rgb")) {
+            var1 = var1.replace("rgb", "").replace("(", "").replace(")", "");
+            String[] var3 = var1.split(",");
+            if (var3.length == 3) {
+                byte[] var4 = new byte[]{(byte)Integer.parseInt(var3[0]), (byte)Integer.parseInt(var3[1]), (byte)Integer.parseInt(var3[2])};
+                var2.setRGB(var4);
+            }
+        } else if (var1.contains("#") && var1.length() > 6) {
+            byte[] var5 = new byte[]{(byte)Integer.parseInt(var1.substring(1, 3), 16), (byte)Integer.parseInt(var1.substring(3, 5), 16), (byte)Integer.parseInt(var1.substring(5, 7), 16)};
+            var2.setRGB(var5);
+        }
+
+        return var2;
+    }
+
+    private JSONObject b1(JSONObject var1) {
+        ArrayList var2 = new ArrayList();
+        Iterator var3 = var1.keySet().iterator();
+
+        while(var3.hasNext()) {
+            String var4 = (String)var3.next();
+            if (oConvertUtils.isNotEmpty(var4) && !"NaN".equals(var4) && !"len".equals(var4)) {
+                var2.add(Integer.parseInt(var4));
+            }
+        }
+
+        Collections.sort(var2);
+        JSONArray var9 = new JSONArray();
+        JSONObject var5 = new JSONObject(true);
+        Iterator var6 = var2.iterator();
+
+        while(var6.hasNext()) {
+            Integer var7 = (Integer)var6.next();
+            JSONObject var8 = var1.getJSONObject(String.valueOf(var7));
+            var9.add(var8);
+            var5.put(String.valueOf(var7), var8);
+        }
+
+        return var5;
+    }
+
+    private void a5(SXSSFWorkbook var1, JSONObject var2, Map var3, SXSSFSheet var4, Map<String, String> var5, Map<String, JSONObject> var6, Map<String, List<String>> var7, List<Map<String, Object>> var8, Map<String, Object> var9, Map<String, Object> var10, Map<String, String> var11, Integer var12, Map<String, CellStyle> var13) {
+        var2 = this.b1(var2);
+        Iterator var14 = var2.keySet().iterator();
+
+        while(true) {
+            String var15;
+            int var16;
+            do {
+                do {
+                    do {
+                        do {
+                            if (!var14.hasNext()) {
+                                return;
+                            }
+
+                            var15 = (String)var14.next();
+                        } while("cells".equals(var15));
+                    } while("isDrag".equals(var15));
+                } while("len".equals(var15));
+
+                var16 = Integer.parseInt(var15);
+            } while(var16 < 0);
+
+            SXSSFRow var17 = var4.createRow(Integer.parseInt(var15));
+            if (var2.getJSONObject(var15).containsKey("height")) {
+                Integer var18 = var2.getJSONObject(var15).getInteger("height");
+                var17.setHeightInPoints((float)var18 - 9.5F);
+            }
+
+            JSONObject var24 = var2.getJSONObject(var15).getJSONObject("cells");
+            var24 = this.b1(var24);
+            Iterator var19 = var24.keySet().iterator();
+
+            while(var19.hasNext()) {
+                String var20 = (String)var19.next();
+                if (!"-1".equals(var20)) {
+                    JSONObject var21 = var24.getJSONObject(var20);
+                    SXSSFCell var22 = var17.createCell(Integer.parseInt(var20));
+                    if (var21.containsKey("style") && var2.size() < this.jmBaseConfig.excelStyleRow && var12 == 1) {
+                        String var23 = var21.getString("style");
+                        var22.setCellStyle((CellStyle)var13.get(var23));
+                    }
+
+                    if (var2.size() >= this.jmBaseConfig.excelStyleRow) {
+                        var22.setCellStyle((CellStyle)var13.get("generalStyle"));
+                    }
+
+                    this.a6(var1, var21, var15, var20, var4, var22, var3, var11, var8, var5, var9, var13, var6, var7, var17, var10);
+                }
+            }
+        }
+    }
+
+    private void a6(Workbook var1, JSONObject var2, String var3, String var4, Sheet var5, Cell var6, Map var7, Map var8, List var9, Map var10, Map var11, Map<String, CellStyle> var12, Map var13, Map var14, Row var15, Map var16) {
+        String var17 = var2.getString("merge");
+        String var18;
+        if (var2.containsKey("virtual")) {
+            var18 = var2.getString("virtual");
+            if (var16.get(var18) == null) {
+                var16.put(var18, var3 + "," + var4);
+            }
+        }
+
+        if (var17 != null && !"".equals(var17)) {
+            String[] var32 = a9(var17, "[", "]").split(",");
+            int var19 = Integer.parseInt(var32[0]);
+            int var20 = Integer.parseInt(var32[1]);
+            int var21 = Integer.parseInt(var3);
+            int var22 = var19 + var21;
+            int var23 = Integer.parseInt(var4);
+            int var24 = var20 + var23;
+            CellRangeAddress var25 = new CellRangeAddress(var21, var22, var23, var24);
+
+            try {
+                var5.addMergedRegion(var25);
+            } catch (IllegalStateException var30) {
+                a.warn("单元格合并失败,原因重复单元格或者一个单元格不允许重复合并", var30.getMessage());
+            } catch (IllegalArgumentException var31) {
+                a.warn("单元格合并失败,原因重复单元格或者一个单元格不允许重复合并", var31.getMessage());
+            }
+
+            var8.put(var21 + "," + var23, var22 + "," + var24);
+        }
+
+        String var35;
+        String var37;
+        if (var2.containsKey("display")) {
+            var18 = var2.getString("display");
+            if ("barcode".equals(var18) || "qrcode".equals(var18) || "img".equals(var18)) {
+                HashMap var33 = new HashMap();
+                var35 = var2.getString("display");
+                var37 = var2.getString("text");
+                String var38 = var2.getString("style");
+                String var41 = var2.getString("rendered");
+                var33.put("style", (JSONObject)var7.get(var38));
+                var33.put("text", var37);
+                var33.put("display", var35);
+                var33.put("row", var6.getRowIndex());
+                var33.put("cell", var6.getColumnIndex());
+                var33.put("layer_id", var41);
+                var9.add(var33);
+            }
+        }
+
+        if (var2.containsKey("text")) {
+            var18 = var2.getString("text");
+            String var34 = "";
+
+            try {
+                var34 = this.a8(var2, var7, var18);
+            } catch (Exception var29) {
+                var29.printStackTrace();
+            }
+
+            if (var18.contains("|")) {
+                Object var36 = var2.get("lineStart");
+                if (null != var36) {
+                    var10.put(var3 + "," + var4, var36.toString());
+                    var37 = var2.getString("style");
+                    var13.put(var3 + "," + var4, (JSONObject)var7.get(var37));
+                    ArrayList var39 = new ArrayList();
+                    var39.add(var3);
+                    var39.add(var4);
+                    var14.put(var3, var39);
+                }
+            }
+
+            var35 = "";
+            var37 = var2.getString("style");
+            if (oConvertUtils.isNotEmpty(var37)) {
+                JSONObject var40 = (JSONObject)var7.get(var37);
+                if (var40.containsKey("format")) {
+                    var35 = var40.getString("format");
+                }
+            }
+
+            if (oConvertUtils.isNotEmpty(var35) && oConvertUtils.isNotEmpty(var18) && ExcelUtil.isHave(JmConst.NUMBER_FUNCTION, var35)) {
+                DataFormat var42 = var1.createDataFormat();
+                CellStyle var43 = (CellStyle)var12.get(var37);
+                String var44 = "0.00";
+                Object var45 = var2.get("decimalPlaces");
+                if (oConvertUtils.isNotEmpty(var45) && "number".equals(var35)) {
+                    Integer var26 = Integer.valueOf(var45.toString());
+                    if (var26 <= 0) {
+                        var44 = "0";
+                    } else {
+                        String var27 = "0.";
+
+                        for(int var28 = 0; var28 < var26; ++var28) {
+                            var27 = var27 + "0";
+                        }
+
+                        var44 = var27;
+                    }
+
+                    var43.setDataFormat(var42.getFormat(var44));
+                    var6.setCellStyle(var43);
+                }
+
+                var6.setCellValue(Double.parseDouble(var18));
+                return;
+            }
+
+            var6.setCellValue(oConvertUtils.isNotEmpty(var34) ? var34 : var18);
+        }
+    }
+    private void a7(XSSFWorkbook var1, JSONObject var2, Map var3, XSSFSheet var4, Map<String, String> var5, Map<String, JSONObject> var6, Map<String, List<String>> var7, List<Map<String, Object>> var8, Map<String, Object> var9, Map<String, Object> var10, Map<String, String> var11, Integer var12, Map<String, CellStyle> var13) {
+        var2 = this.b1(var2);
+        Iterator var14 = var2.keySet().iterator();
+        boolean var15 = true;
+
+        while(true) {
+            String var16;
+            int var17;
+            do {
+                do {
+                    do {
+                        do {
+                            if (!var14.hasNext()) {
+                                return;
+                            }
+
+                            var16 = (String)var14.next();
+                        } while("cells".equals(var16));
+                    } while("isDrag".equals(var16));
+                } while("len".equals(var16));
+
+                var17 = Integer.parseInt(var16);
+            } while(var17 < 0);
+
+            XSSFRow var18 = var4.createRow(Integer.parseInt(var16));
+            if (var2.getJSONObject(var16).containsKey("height")) {
+                Integer var19 = var2.getJSONObject(var16).getInteger("height");
+                var18.setHeightInPoints((float)var19 - 9.5F);
+            }
+
+            JSONObject var25 = var2.getJSONObject(var16).getJSONObject("cells");
+            var25 = this.b1(var25);
+            Iterator var20 = var25.keySet().iterator();
+
+            while(var20.hasNext()) {
+                String var21 = (String)var20.next();
+                if (!"-1".equals(var21)) {
+                    JSONObject var22 = var25.getJSONObject(var21);
+                    XSSFCell var23 = var18.createCell(Integer.parseInt(var21));
+                    if (var22.containsKey("style")) {
+                        String var24 = var22.getString("style");
+                        var23.setCellStyle((CellStyle)var13.get(var24));
+                    }
+
+                    this.a6(var1, var22, var16, var21, var4, var23, var3, var11, var8, var5, var9, var13, var6, var7, var18, var10);
+                }
+            }
+        }
+    }
+
+    public String a8(JSONObject var1, Map var2, String var3) throws Exception {
+        String var4 = var1.getString("style");
+        JSONObject var5 = (JSONObject)var2.get(var4);
+        if (null != var5 && var4 != null && !"null".equals(var4)) {
+            Object var6 = var5.get("format");
+            if (null != var6) {
+                SimpleDateFormat var7 = ExcelUtil.getFormat(var6.toString());
+                if (null != var7 && oConvertUtils.isNotEmpty(var3)) {
+                    SimpleDateFormat var8 = ExcelUtil.getDataFormat(var3);
+                    if (null != var8) {
+                        Date var9 = var8.parse(var3);
+
+                        try {
+                            String var10 = var7.format(var9);
+                            a.info("日期格式化之后的文本:" + var10);
+                            return var10;
+                        } catch (Exception var11) {
+                            a.info("日期格式不正确:" + var11.getMessage());
+                        }
+                    } else {
+                        String var12 = d.a(var3, var7);
+                        if (oConvertUtils.isNotEmpty(var12)) {
+                            return var12;
+                        }
+                    }
+                }
+            }
+        }
+
+        return "";
+    }
+
+    public static String a9(String var0, String var1, String var2) {
+        int var3 = var0.indexOf(var1);
+        int var4 = var0.indexOf(var2);
+        if (var3 < 0) {
+            return "";
+        } else if (var4 < 0) {
+            return "";
+        } else {
+            String var5 = var0.substring(var3, var4).substring(var1.length());
+            return var5;
+        }
+    }
+
+    private void a10(JSONObject var1, Sheet var2, SXSSFWorkbook var3, Map var4, Map<String, String> var5, Map<String, JSONObject> var6) {
+        Iterator var7 = var1.keySet().iterator();
+
+        while(true) {
+            String var8;
+            JSONObject var9;
+            do {
+                do {
+                    do {
+                        do {
+                            if (!var7.hasNext()) {
+                                return;
+                            }
+
+                            var8 = (String)var7.next();
+                        } while("len".equals(var8));
+                    } while("cells".equals(var8));
+                } while("isDrag".equals(var8));
+
+                var9 = var1.getJSONObject(var8).getJSONObject("cells");
+            } while(null == var9);
+
+            Iterator var10 = var9.keySet().iterator();
+
+            while(var10.hasNext()) {
+                String var11 = (String)var10.next();
+                JSONObject var12 = var9.getJSONObject(var11);
+                if (var12.containsKey("merge")) {
+                    String var13 = var12.getString("merge");
+                    String[] var14 = a9(var13, "[", "]").split(",");
+                    int var15 = Integer.parseInt(var14[0]);
+                    int var16 = Integer.parseInt(var14[1]);
+                    if (var13 != null && !"".equals(var13)) {
+                        JSONObject var17 = new JSONObject();
+                        int var18 = Integer.parseInt(var8);
+                        int var19 = var15 + var18;
+                        int var20 = Integer.parseInt(var11);
+                        int var21 = var16 + var20;
+                        CellRangeAddress var22 = new CellRangeAddress(var18, var19, var20, var21);
+                        if (var12.containsKey("style")) {
+                            String var23 = var12.getString("style");
+                            JSONObject var24 = (JSONObject)var4.get(var23);
+                            if (null != var24 && var24.containsKey("border")) {
+                                JSONObject var25 = var24.getJSONObject("border");
+                                Iterator var26 = var25.keySet().iterator();
+                                JSONArray var27 = var25.getJSONArray("right");
+                                JSONArray var28 = var25.getJSONArray("top");
+                                if (null != var28 && var28.size() > 1) {
+                                    RegionUtil.setBorderTop(BorderStyle.THIN, var22, var2);
+                                    var17.put("top", var28.get(1).toString());
+                                }
+
+                                if (null != var27 && var27.size() > 1) {
+                                    RegionUtil.setBorderRight(BorderStyle.THIN, var22, var2);
+                                    var17.put("right", var27.get(1).toString());
+                                }
+
+                                JSONArray var29 = var25.getJSONArray("left");
+                                if (null != var29 && var29.size() > 1) {
+                                    RegionUtil.setBorderLeft(BorderStyle.THIN, var22, var2);
+                                    var17.put("left", var29.get(1).toString());
+                                }
+
+                                JSONArray var30 = var25.getJSONArray("bottom");
+                                if (null != var30 && var30.size() > 1) {
+                                    RegionUtil.setBorderBottom(BorderStyle.THIN, var22, var2);
+                                    var17.put("bottom", var30.get(1).toString());
+                                }
+                            }
+
+                            String var31 = var18 + "," + var19 + "," + var20 + "," + var21;
+                            var6.put(var31, var17);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    private void a11(Sheet var1, SXSSFWorkbook var2, Map<String, JSONObject> var3) {
+        Iterator var4 = var3.keySet().iterator();
+
+        while(true) {
+            JSONObject var6;
+            String[] var7;
+            do {
+                if (!var4.hasNext()) {
+                    return;
+                }
+
+                String var5 = (String)var4.next();
+                var6 = JSONObject.parseObject(String.valueOf(var3.get(var5)));
+                var7 = var5.split(",");
+            } while(var7.length != 4);
+
+            int var8 = Integer.valueOf(var7[0]);
+            int var9 = Integer.valueOf(var7[1]);
+            int var10 = Integer.valueOf(var7[2]);
+            int var11 = Integer.valueOf(var7[3]);
+
+            for(int var12 = var8; var12 < var9 + 1; ++var12) {
+                Row var13 = var1.getRow(var12);
+
+                for(int var14 = var10; var14 < var11 + 1; ++var14) {
+                    try {
+                        Cell var15 = var13.getCell(var14);
+                        if (null != var15) {
+                            XSSFCellStyle var16 = (XSSFCellStyle)var15.getCellStyle();
+                            Object var17 = var6.get("top");
+                            Object var18 = var6.get("left");
+                            Object var19 = var6.get("right");
+                            Object var20 = var6.get("bottom");
+                            XSSFColor var21;
+                            if (null != var17) {
+                                var21 = this.b(var17.toString());
+                                var16.setTopBorderColor(var21);
+                            }
+
+                            if (null != var18) {
+                                var21 = this.b(var18.toString());
+                                var16.setLeftBorderColor(var21);
+                            }
+
+                            if (null != var19) {
+                                var21 = this.b(var19.toString());
+                                var16.setRightBorderColor(var21);
+                            }
+
+                            if (null != var20) {
+                                var21 = this.b(var20.toString());
+                                var16.setBottomBorderColor(var21);
+                            }
+
+                            var15.setCellStyle(var16);
+                        }
+                    } catch (NullPointerException var22) {
+                        a.debug("单元格为空", var22.getMessage());
+                    }
+                }
+            }
+        }
+    }
+
+    private void a12(Workbook var1, Sheet var2, Map<String, String> var3, Map<String, String> var4, Map<String, JSONObject> var5, Map<String, List<String>> var6) {
+        Set var7 = var6.keySet();
+        Iterator var8 = var7.iterator();
+
+        while(true) {
+            String var11;
+            String var12;
+            Cell var13;
+            String var14;
+            String var15;
+            String var16;
+            JSONObject var17;
+            Row var18;
+            int var19;
+            int var20;
+            do {
+                do {
+                    if (!var8.hasNext()) {
+                        return;
+                    }
+
+                    String var9 = (String)var8.next();
+                    List var10 = (List)var6.get(var9);
+                    var11 = (String)var10.get(0);
+                    var12 = (String)var10.get(1);
+                    var13 = var2.getRow(Integer.parseInt(var11)).getCell(Integer.parseInt(var12));
+                    var14 = ExcelUtil.getCellValueByCell(var13);
+                } while(!var14.contains("|"));
+
+                var15 = (String)var3.get(var13.getRowIndex() + "," + var13.getColumnIndex());
+                var16 = (String)var4.get(var13.getRowIndex() + "," + var13.getColumnIndex());
+                var17 = (JSONObject)var5.get(var13.getRowIndex() + "," + var13.getColumnIndex());
+                var18 = var2.getRow(Integer.parseInt(var11));
+                var19 = (int)var13.getSheet().getColumnWidthInPixels(var13.getColumnIndex());
+                var20 = (int)var18.getHeightInPoints();
+            } while(!oConvertUtils.isNotEmpty(var15));
+
+            int var21 = 0;
+            int var22 = 0;
+            int var23 = Integer.parseInt(var11);
+            int var24 = Integer.parseInt(var12);
+            if (oConvertUtils.isNotEmpty(var16)) {
+                String[] var25 = var16.split(",");
+                int var26 = Integer.parseInt(var25[0]);
+                int var27 = Integer.parseInt(var25[1]);
+                var23 = var26;
+                var24 = var27;
+
+                int var28;
+                for(var28 = var18.getRowNum() + 1; var28 < var26 + 1; ++var28) {
+                    Row var29 = var2.getRow(var28);
+                    if (var29 != null) {
+                        var22 += (int)var2.getRow(var28).getHeightInPoints();
+                    }
+                }
+
+                for(var28 = var13.getColumnIndex() + 1; var28 < var27 + 1; ++var28) {
+                    var21 += (int)var2.getColumnWidthInPixels(var28);
+                }
+            }
+
+            var19 += var21;
+            var20 += var22;
+            var13.setCellValue("");
+            if (var2 instanceof SXSSFSheet) {
+                try {
+                    byte[] var32 = ExcelUtil.getImage(var14, var15, var19, var20, var17);
+                    Drawing var33 = var2.createDrawingPatriarch();
+                    XSSFClientAnchor var34 = new XSSFClientAnchor(12700, 12700, -12700, -12700, Integer.parseInt(var12), Integer.parseInt(var11), var24 + 1, var23 + 1);
+                    var34.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE);
+                    var33.createPicture(var34, var1.addPicture(var32, 5));
+                } catch (IOException var31) {
+                    var31.printStackTrace();
+                }
+            }
+
+            if (var2 instanceof XSSFSheet) {
+                try {
+                    a13(var14, var1, var2, var19, var20, var15, Integer.parseInt(var11), Integer.parseInt(var12), var23 + 1, var24 + 1, var17);
+                } catch (Exception var30) {
+                    var30.printStackTrace();
+                }
+            }
+        }
+    }
+
+    public static void a13(String var0, Workbook var1, Sheet var2, int var3, int var4, String var5, int var6, int var7, int var8, int var9, JSONObject var10) {
+        String[] var11 = var0.split("\\|");
+        int var12 = var11.length;
+        Cell var13 = var2.getRow(var6).getCell(var7);
+        CellStyle var14 = var13.getCellStyle();
+        var14.setWrapText(true);
+        Font var15 = var1.getFontAt(var14.getFontIndex());
+        var15.setFontName("Microsoft YaHei");
+        var15.setFontHeightInPoints((short)10);
+        CreationHelper var16 = var1.getCreationHelper();
+        String var17 = "";
+        if (null != var10 && var10.containsKey("color")) {
+            var17 = var10.getString("color");
+        }
+
+        String var18;
+        if (var5.equals("lefttop")) {
+            var18 = a14(var11, var3, var4);
+            var13.setCellValue(var18);
+            Drawing var19 = var2.createDrawingPatriarch();
+            if (var11.length == 2) {
+                ExcelUtil.paintLine(var19, var19.createAnchor(0, 0, 0, 0, var7, var6, var9, var8), var5, var17);
+            } else if (var11.length == 3) {
+                ExcelUtil.paintLine(var19, var19.createAnchor(0, 0, 0, -((int)((double)var4 / 2.5D)) * 12700, var7, var6, var9, var8), var5, var17);
+                ExcelUtil.paintLine(var19, var19.createAnchor(0, 0, -var3 / 4 * 12700, 0, var7, var6, var9, var8), var5, var17);
+            }
+        } else {
+            var18 = b2(var11, var3, var4);
+            var13.setCellValue(var18);
+            a15(var2, var16, var7, var6, var9, var8, var4, var3, var12 - 1, var5, var17);
+        }
+
+        var14.setFont(var15);
+        var13.setCellStyle(var14);
+    }
+
+    public static void a15(Sheet var0, CreationHelper var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, String var9, String var10) {
+        Drawing var11;
+        ClientAnchor var12;
+        if (var8 == 1) {
+            var11 = var0.createDrawingPatriarch();
+            var12 = var1.createClientAnchor();
+            var12.setCol1(var2);
+            var12.setRow1(var3);
+            var12.setCol2(var4);
+            var12.setRow2(var5);
+            ExcelUtil.paintLine(var11, var12, var9, var10);
+        } else if (var8 == 2) {
+            var11 = var0.createDrawingPatriarch();
+            var12 = var1.createClientAnchor();
+            var12.setCol1(var2);
+            var12.setRow1(var3);
+            var12.setCol2(var4);
+            var12.setRow2(var5);
+            var12.setDx2(-var7 / 4 * 12700);
+            ExcelUtil.paintLine(var11, var12, var9, var10);
+            ClientAnchor var13 = var1.createClientAnchor();
+            Drawing var14 = var0.createDrawingPatriarch();
+            var13.setCol1(var2);
+            var13.setRow1(var3);
+            var13.setCol2(var4);
+            var13.setRow2(var5);
+            var13.setDy1((int)((double)var6 / 2.5D) * 12700);
+            ExcelUtil.paintLine(var14, var13, var9, var10);
+        }
+
+    }
+
+    public static String b2(String[] var0, int var1, int var2) {
+        int var3 = var0.length;
+        if (var3 < 1 && var3 > 3) {
+            return "";
+        } else {
+            int var4 = var1 / 4;
+            if (var3 == 2) {
+                var4 -= var0[1].length();
+                if (var1 < 240) {
+                    if (var0[1].length() > 3) {
+                        var4 -= var0[1].length();
+                    }
+
+                    var4 -= var0[1].length();
+                }
+            } else {
+                if (var1 < 240) {
+                    if (var0[2].length() > 3) {
+                        var4 -= var0[2].length();
+                    }
+
+                    var4 -= var0[2].length();
+                }
+
+                var4 -= var0[2].length();
+            }
+
+            String var5 = "";
+            int var6 = var2 / 20;
+            var5 = var5 + var0[0];
+            int var7;
+            if (var3 == 2) {
+                for(var7 = 0; var7 < var6; ++var7) {
+                    var5 = var5 + "\n";
+                }
+
+                for(var7 = 0; var7 < var4; ++var7) {
+                    var5 = var5 + " ";
+                }
+
+                var5 = var5 + var0[1];
+            }
+
+            if (var3 == 3) {
+                var7 = var1 / 4;
+                var7 = var7 - var0[0].length() * 2 - var0[1].length() * 2;
+                if (var1 < 150) {
+                    var7 = var7 - var0[0].length() * 2 - var0[1].length() * 2;
+                }
+
+                if (var0[1].length() > 2) {
+                    if (var1 < 260) {
+                        var7 -= var0[1].length();
+                    }
+
+                    var7 -= var0[1].length();
+                }
+
+                if (var0[0].length() > 3) {
+                    var7 -= var0[0].length();
+                }
+
+                String var8 = " ";
+
+                int var9;
+                for(var9 = 0; var9 < var7; ++var9) {
+                    var8 = var8 + " ";
+                }
+
+                var5 = var5 + var8 + var0[1];
+
+                for(var9 = 0; var9 < var6; ++var9) {
+                    var5 = var5 + "\n";
+                }
+
+                for(var9 = 0; var9 < var7; ++var9) {
+                    var5 = var5 + " ";
+                }
+
+                var5 = var5 + var0[2];
+            }
+
+            return var5;
+        }
+    }
+
+    public static String a14(String[] var0, int var1, int var2) {
+        int var3 = var0.length;
+        if (var3 < 1 && var3 > 3) {
+            return "";
+        } else {
+            int var4 = var1 / 4;
+            if (var3 == 2) {
+                var4 -= var0[1].length();
+                if (var1 < 150) {
+                    var4 -= var0[1].length() * 3;
+                }
+            } else {
+                if (var1 < 186) {
+                    var4 -= var0[2].length();
+                }
+
+                if (var1 < 160) {
+                    if (var0[2].length() == 2) {
+                        var4 -= var0[2].length() * 2;
+                    } else if (var0[2].length() > 2) {
+                        var4 -= var0[2].length();
+                    }
+                }
+
+                var4 -= var0[2].length();
+                if (var0[2].length() > 3) {
+                    var4 -= var0[2].length();
+                }
+            }
+
+            String var5 = "";
+
+            int var6;
+            for(var6 = 0; var6 < var4; ++var6) {
+                var5 = var5 + " ";
+            }
+
+            var6 = var2 / 20;
+            if (var3 == 2) {
+                var5 = var5 + var0[1];
+            } else {
+                var5 = var5 + var0[2];
+            }
+
+            int var7;
+            for(var7 = 0; var7 < var6; ++var7) {
+                var5 = var5 + "\n";
+            }
+
+            if (var3 == 2) {
+                var5 = var5 + var0[0];
+            }
+
+            if (var3 == 3) {
+                var5 = var5 + var0[0];
+                var7 = var1 / 4;
+                if (var1 < 270) {
+                    var7 = var7 - var0[0].length() * 2 - var0[1].length() * 2;
+                }
+
+                if (var1 < 160) {
+                    var7 = var7 - var0[0].length() - var0[1].length();
+                }
+
+                var7 = var7 - var0[0].length() - var0[1].length();
+                if (var0[0].length() > 3) {
+                    var7 -= var0[0].length();
+                }
+
+                if (var0[1].length() > 3) {
+                    if (var1 > 270) {
+                        var7 -= var0[1].length() * 2;
+                    } else {
+                        var7 -= var0[1].length();
+                    }
+                }
+
+                String var8 = "";
+
+                for(int var9 = 0; var9 < var7; ++var9) {
+                    var8 = var8 + " ";
+                }
+
+                var5 = var5 + var8 + var0[1];
+            }
+
+            return var5;
+        }
+    }
+
+    private void a16(Sheet var1, XSSFWorkbook var2, JSONArray var3, Map<String, String> var4, Map<String, Object> var5) {
+        Drawing var6 = var1.createDrawingPatriarch();
+        HttpURLConnection var7 = null;
+
+        try {
+            for(int var9 = 0; var9 < var3.size(); ++var9) {
+                boolean var10 = false;
+                boolean var11 = false;
+                String var12 = "";
+                String var13 = "";
+                String var14 = "";
+                JSONObject var15 = var3.getJSONObject(var9);
+                int var37 = Integer.valueOf(var15.getString("col"));
+                int var36 = Integer.valueOf(var15.getString("row"));
+                var13 = (String)var15.get("width");
+                var14 = (String)var15.get("height");
+                var12 = (String)var15.get("src");
+                String var16 = var15.getString("layer_id");
+                Object var17 = var15.get("colspan");
+                Object var18 = var15.get("rowspan");
+                Object var19 = var5.get(var16);
+                if (null != var19) {
+                    String[] var20 = String.valueOf(var19).split(",");
+                    var36 = Integer.parseInt(var20[0]);
+                    var37 = Integer.parseInt(var20[1]);
+                }
+
+                if (var14.contains("px") && var13.contains("px")) {
+                    var14 = var14.substring(0, var14.lastIndexOf("px"));
+                    var13 = var13.substring(0, var13.lastIndexOf("px"));
+                }
+
+                byte[] var8;
+                if (var12.contains("http")) {
+                    URL var38 = new URL(var12);
+                    if (var12.contains("https")) {
+                        var8 = b.a(var12);
+                    } else {
+                        var7 = (HttpURLConnection)var38.openConnection();
+                        var7.setRequestMethod("GET");
+                        var7.setConnectTimeout(50000);
+                        InputStream var21 = var7.getInputStream();
+                        var8 = a21(var21);
+                    }
+                } else {
+                    var8 = this.c1(var12);
+                }
+
+                boolean var39 = false;
+                String var41 = (String)var4.get(var36 + "," + var37);
+                boolean var22 = false;
+                int var40;
+                int var42;
+                if (null != var17 && null != var18) {
+                    var42 = var36 + Integer.parseInt(var18.toString());
+                    var40 = var37 + Integer.parseInt(var17.toString());
+                } else {
+                    if (oConvertUtils.isNotEmpty(var41)) {
+                        String var23 = var41.split(",")[0];
+                        var42 = Integer.parseInt(var23);
+                    } else {
+                        var42 = var36 + Integer.parseInt(String.format("%.0f", Float.parseFloat(var14) / 25.0F));
+                    }
+
+                    Integer var43 = this.a22(var1, var36, (float)Integer.parseInt(var14));
+                    if (var43 > 0) {
+                        var42 = var43;
+                    } else {
+                        var42 += var36;
+                    }
+
+                    var40 = Integer.parseInt(String.format("%.0f", Float.parseFloat(var13) / 100.0F));
+                    var40 += var37;
+                }
+
+                Object var44 = var15.get("isBackend");
+                if (null != var44 && (Boolean)var44) {
+                    int var45 = var2.addPicture(var8, 6);
+                    XSSFPictureData var25 = (XSSFPictureData)var2.getAllPictures().get(var45);
+
+                    try {
+                        for(int var26 = 0; var26 < var2.getNumberOfSheets(); ++var26) {
+                            XSSFSheet var46 = var2.getSheetAt(var26);
+                            PackagePartName var28 = var25.getPackagePart().getPartName();
+                            String var29 = XSSFRelation.IMAGES.getRelation();
+                            PackageRelationship var30 = var46.getPackagePart().addRelationship(var28, TargetMode.EXTERNAL, var29, (String)null);
+                            var46.getCTWorksheet().addNewPicture().setId(var30.getId());
+                        }
+                    } catch (Exception var31) {
+                        XSSFClientAnchor var27 = new XSSFClientAnchor(0, 0, Integer.parseInt(var13), Integer.parseInt(var14), var37, var36, var40, var42);
+                        var6.createPicture(var27, var2.addPicture(var8, 5));
+                    }
+                } else {
+                    XSSFClientAnchor var24 = new XSSFClientAnchor(0, 0, Integer.parseInt(var13), Integer.parseInt(var14), var37, var36, var40, var42);
+                    var6.createPicture(var24, var2.addPicture(var8, 5));
+                }
+            }
+        } catch (MalformedURLException var32) {
+            var32.printStackTrace();
+        } catch (ProtocolException var33) {
+            var33.printStackTrace();
+        } catch (IOException var34) {
+            var34.printStackTrace();
+        } catch (Exception var35) {
+            var35.printStackTrace();
+        }
+
+    }
+
+    private void a17(Sheet var1, SXSSFWorkbook var2, JSONArray var3, Map<String, Object> var4, JSONObject var5, JSONObject var6) {
+        Drawing var7 = var1.createDrawingPatriarch();
+        Object var8 = null;
+
+        try {
+            for(int var9 = 0; var9 < var3.size(); ++var9) {
+                boolean var10 = false;
+                boolean var11 = false;
+                String var12 = "";
+                String var13 = "";
+                String var14 = "";
+                JSONObject var15 = var3.getJSONObject(var9);
+                int var33 = Integer.valueOf(var15.getString("col"));
+                int var32 = Integer.valueOf(var15.getString("row"));
+                var13 = (String)var15.get("width");
+                var14 = (String)var15.get("height");
+                var12 = (String)var15.get("url");
+                String var16 = var15.getString("layer_id");
+                Object var17 = var4.get(var16);
+                if (null != var17) {
+                    String[] var18 = String.valueOf(var17).split(",");
+                    var32 = Integer.parseInt(var18[0]);
+                    var33 = Integer.parseInt(var18[1]);
+                }
+
+                byte[] var34 = new byte[0];
+                var34 = oConvertUtils.decodeBase64(var12);
+                int var20 = 0;
+                float var21 = Float.parseFloat(var14);
+
+                for(int var22 = var32; var22 < var32 + 99; ++var22) {
+                    Row var23 = var1.getRow(var22);
+                    if (var23 == null) {
+                        break;
+                    }
+
+                    ++var20;
+                    var21 -= var23.getHeightInPoints();
+                }
+
+                Object var35 = var15.get("colspan");
+                Object var36 = var15.get("rowspan");
+                boolean var24 = false;
+                int var37;
+                if (null != var35 && null != var36) {
+                    var20 = var32 + Integer.parseInt(var36.toString());
+                    var37 = var33 + Integer.parseInt(var35.toString());
+                } else {
+                    var20 += Integer.parseInt(String.format("%.0f", var21 / 25.0F));
+                    var37 = Integer.parseInt(String.format("%.0f", Float.parseFloat(var13) / 100.0F));
+                    var37 += var33;
+                }
+
+                int var25 = 0;
+
+                int var26;
+                for(var26 = var33; var26 < var37; ++var26) {
+                    Object var27 = var5.get(var26);
+                    if (oConvertUtils.isNotEmpty(var27)) {
+                        JSONObject var28 = (JSONObject)var27;
+                        Object var29 = var28.get("width");
+                        var25 += Integer.valueOf(String.valueOf(var29));
+                    } else {
+                        var25 += 100;
+                    }
+                }
+
+                if (var25 > Integer.parseInt(var13)) {
+                    var25 -= Integer.parseInt(var13);
+                } else {
+                    var25 = 0;
+                }
+
+                var25 = var25 * 3 / 4;
+                var26 = 0;
+
+                for(int var38 = var32; var38 < var20; ++var38) {
+                    Object var40 = var6.get(var38);
+                    if (oConvertUtils.isNotEmpty(var40)) {
+                        JSONObject var41 = (JSONObject)var40;
+                        Object var30 = var41.get("height");
+                        if (oConvertUtils.isNotEmpty(var30)) {
+                            var26 += Integer.parseInt(var30.toString());
+                        } else {
+                            var26 += 25;
+                        }
+                    } else {
+                        var26 += 25;
+                    }
+                }
+
+                if (var26 > Integer.parseInt(var14)) {
+                    var26 -= Integer.parseInt(var14);
+                } else {
+                    var26 = 0;
+                }
+
+                var26 = var26 * 3 / 4;
+                XSSFClientAnchor var39 = new XSSFClientAnchor(0, 0, 12700 * -var25, 12700 * -var26, var33, var32, var37, var20);
+                var7.createPicture(var39, var2.addPicture(var34, 5));
+            }
+        } catch (Exception var31) {
+            var31.printStackTrace();
+        }
+
+    }
+
+    private void a18(Sheet var1, Workbook var2, JSONArray var3, List var4, Map<String, Object> var5) {
+        Drawing var6 = var1.createDrawingPatriarch();
+
+        for(int var7 = 0; var7 < var3.size(); ++var7) {
+            JSONObject var8 = var3.getJSONObject(var7);
+            boolean var9 = false;
+            boolean var10 = false;
+            String var11 = "";
+            String var12 = "";
+            int var25 = Integer.valueOf(var8.getString("col"));
+            int var24 = Integer.valueOf(var8.getString("row"));
+            var11 = String.valueOf(var8.get("width"));
+            var12 = String.valueOf(var8.get("height"));
+            String var13 = (String)var8.get("layer_id");
+            String var14 = "";
+            Object var15 = var5.get(var13);
+            if (null != var15) {
+                String[] var16 = String.valueOf(var15).split(",");
+                var24 = Integer.parseInt(var16[0]);
+                var25 = Integer.parseInt(var16[1]);
+            }
+
+            Object var18;
+            for(int var26 = 0; var26 < var4.size(); ++var26) {
+                Map var17 = (Map)var4.get(var26);
+                var18 = var17.get("id");
+                if (var13.equals(var18.toString())) {
+                    var14 = (String)var17.get("base64");
+                }
+            }
+
+            byte[] var27 = new byte[0];
+            var27 = oConvertUtils.decodeBase64(var14.replace("data:image/png;base64,", ""));
+            var18 = var8.get("colspan");
+            Object var19 = var8.get("rowspan");
+            boolean var20 = false;
+            boolean var21 = false;
+            float var22 = Float.parseFloat(var12);
+            int var28;
+            int var29;
+            if (null != var18 && null != var19) {
+                var29 = var24 + Integer.parseInt(var19.toString());
+                var28 = var25 + Integer.parseInt(var18.toString());
+            } else {
+                var28 = var24 + Integer.parseInt(String.format("%.0f", Float.parseFloat(var12) / 25.0F));
+                var29 = Integer.parseInt(String.format("%.0f", Float.parseFloat(var11) / 100.0F));
+            }
+
+            XSSFClientAnchor var23 = new XSSFClientAnchor(0, 0, Integer.parseInt(var11), Integer.parseInt(var12), var25, var24, var28, var29);
+            var6.createPicture(var23, var2.addPicture(var27, 5));
+        }
+
+    }
+
+    private void a19(Sheet var1, XSSFWorkbook var2, JSONObject var3) {
+        Drawing var4 = var1.createDrawingPatriarch();
+        Object var5 = null;
+        String var6 = "";
+        String var7 = "";
+        String var8 = "";
+        Object var18 = var3.get("width");
+        Object var19 = var3.get("height");
+        var6 = var3.getString("path");
+        byte[] var9 = this.a20(var6);
+        XSSFPictureData var10 = null;
+        boolean var11 = false;
+
+        try {
+            int var20 = var2.addPicture(var9, 6);
+            var10 = (XSSFPictureData)var2.getAllPictures().get(var20);
+        } catch (NullPointerException var17) {
+            a.debug("数据为空", var17.getMessage());
+        }
+
+        if (var10 != null) {
+            for(int var12 = 0; var12 < var2.getNumberOfSheets(); ++var12) {
+                XSSFSheet var13 = var2.getSheetAt(var12);
+                PackagePartName var14 = var10.getPackagePart().getPartName();
+                String var15 = XSSFRelation.IMAGES.getRelation();
+                PackageRelationship var16 = var13.getPackagePart().addRelationship(var14, TargetMode.EXTERNAL, var15, (String)null);
+                var13.getCTWorksheet().addNewPicture().setId(var16.getId());
+            }
+        }
+
+    }
+
+    public byte[] a20(String var1) {
+        URL var2 = null;
+        Object var3 = null;
+        byte[] var7;
+        if (var1.contains("http")) {
+            try {
+                var2 = new URL(var1);
+                if (var1.contains("https")) {
+                    var7 = b.a(var1);
+                    return var7;
+                } else {
+                    HttpURLConnection var4 = null;
+                    var4 = (HttpURLConnection)var2.openConnection();
+                    var4.setRequestMethod("GET");
+                    var4.setConnectTimeout(50000);
+                    InputStream var5 = var4.getInputStream();
+                    var7 = a21(var5);
+                    return var7;
+                }
+            } catch (Exception var6) {
+                var6.printStackTrace();
+                return null;
+            }
+        } else {
+            var7 = this.c1(var1);
+            return var7;
+        }
+    }
+
+    private static byte[] a21(InputStream var0) throws Exception {
+        ByteArrayOutputStream var1 = new ByteArrayOutputStream();
+        byte[] var2 = new byte[1024];
+        boolean var3 = false;
+
+        int var4;
+        while((var4 = var0.read(var2)) != -1) {
+            var1.write(var2, 0, var4);
+        }
+
+        var0.close();
+        return var1.toByteArray();
+    }
+
+    private byte[] c1(String var1) {
+        File var2 = new File(this.jimuReportUploadConfig.getPath().getUpload() + File.separator + var1);
+
+        try {
+            byte[] var3 = Files.readAllBytes(var2.toPath());
+            return var3;
+        } catch (IOException var4) {
+            var4.printStackTrace();
+            return null;
+        }
+    }
+
+    public Integer a22(Sheet var1, Integer var2, float var3) {
+        int var4 = 0;
+        Double var5 = 0.0D;
+
+        for(Iterator var6 = var1.iterator(); var6.hasNext(); ++var4) {
+            Row var7 = (Row)var6.next();
+            if (var2 <= var4) {
+                var5 = var5 + (double)var7.getHeightInPoints();
+            }
+
+            if (var5 != 0.0D && (double)var3 - var5 <= 10.0D && var4 > 0) {
+                return var4;
+            }
+
+            if (var5 >= (double)var3 && var4 > 0) {
+                return var4;
+            }
+        }
+
+        return 0;
+    }
+}
+

+ 47 - 0
boman-report/src/main/java/org/jeecg/modules/jmreport/desreport/a/a.java

@@ -32,6 +32,7 @@ import javax.servlet.http.HttpServletResponse;
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.jeecg.modules.jmreport.api.data.IDataSetFactory;
 import org.jeecg.modules.jmreport.common.ColumnCovertService;
+//import org.jeecg.modules.jmreport.common.ExportExcelService;
 import org.jeecg.modules.jmreport.common.annotation.JimuLoginRequired;
 import org.jeecg.modules.jmreport.common.expetion.JimuReportException;
 import org.jeecg.modules.jmreport.common.util.CommonUtils;
@@ -104,6 +105,8 @@ public class a {
     private IJmReportMapService jmReportMapService;
     @Autowired
     private IJmReportExportExcel exportExcel;
+//    @Autowired
+//    private ExportExcelService exportExcelService;
     @Autowired
     private JmReportTokenClient jimuTokenClient;
     @Autowired
@@ -775,6 +778,50 @@ public class a {
         return Result.OK(var16);
     }
 
+    @PostMapping({"/exportEmptyExcel"})
+    @ResponseBody
+    public Result<Object> exportEmptyExcel(HttpServletRequest var1, HttpServletResponse var2, @RequestBody JSONObject var3) throws IOException {
+        HashMap var4 = new HashMap(var1.getParameterMap());
+        boolean var5 = var4.containsKey("token");
+        if (var5) {
+            var4.remove("token");
+        }
+
+        String var6 = var3.getString("excelConfigId");
+        JSONObject var7 = var3.getJSONObject("queryParam");
+        long var8 = System.currentTimeMillis();
+        JSONArray var10 = var3.getJSONArray("base64Arry");
+//        Map var11 = this.exportExcelService.exportEmptyExcel(var6, var7, var10);
+        Map var11 = null;
+        File var12 = new File(var11.get("name").toString());
+        ServletOutputStream var13 = var2.getOutputStream();
+        SXSSFWorkbook var14 = (SXSSFWorkbook) var11.get("workbook");
+        ByteArrayOutputStream var15 = new ByteArrayOutputStream();
+        HashMap var16 = new HashMap();
+
+        try {
+            var14.write(var15);
+            String var17 = Base64Utils.encodeToString(var15.toByteArray());
+            var16.put("file", var17);
+            var16.put("success", true);
+            var16.put("name", var12.getName());
+        } catch (IOException var26) {
+            var26.printStackTrace();
+            var16.put("error", var26.getMessage());
+        } finally {
+            try {
+                var15.close();
+            } catch (IOException var25) {
+                var25.printStackTrace();
+            }
+
+        }
+
+        long var28 = System.currentTimeMillis();
+        a.info("导出excel数据运行时间:" + (var28 - var8) + "ms");
+        return Result.OK(var16);
+    }
+
     @RequestMapping({"/print"})
     public void a(HttpServletResponse var1, HttpServletRequest var2) throws Exception {
         HashMap var3 = new HashMap();

+ 1865 - 0
boman-report/src/main/java/org/jeecg/modules/jmreport/desreport/a/service/a/k.java

@@ -0,0 +1,1865 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+package org.jeecg.modules.jmreport.desreport.service.a;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.ProtocolException;
+import java.net.URL;
+import java.nio.file.Files;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.apache.poi.openxml4j.opc.PackagePartName;
+import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.openxml4j.opc.TargetMode;
+import org.apache.poi.ss.usermodel.BorderStyle;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.ClientAnchor;
+import org.apache.poi.ss.usermodel.CreationHelper;
+import org.apache.poi.ss.usermodel.DataFormat;
+import org.apache.poi.ss.usermodel.Drawing;
+import org.apache.poi.ss.usermodel.FillPatternType;
+import org.apache.poi.ss.usermodel.Font;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.VerticalAlignment;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.ss.util.CellReference;
+import org.apache.poi.ss.util.RegionUtil;
+import org.apache.poi.xssf.streaming.SXSSFCell;
+import org.apache.poi.xssf.streaming.SXSSFRow;
+import org.apache.poi.xssf.streaming.SXSSFSheet;
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFCellStyle;
+import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
+import org.apache.poi.xssf.usermodel.XSSFColor;
+import org.apache.poi.xssf.usermodel.XSSFFont;
+import org.apache.poi.xssf.usermodel.XSSFPictureData;
+import org.apache.poi.xssf.usermodel.XSSFRelation;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.jeecg.modules.jmreport.common.constant.CommonConstant;
+import org.jeecg.modules.jmreport.common.constant.JmConst;
+import org.jeecg.modules.jmreport.common.util.ExcelUtil;
+import org.jeecg.modules.jmreport.common.util.GoogleBarCodeUtils;
+import org.jeecg.modules.jmreport.common.util.oConvertUtils;
+import org.jeecg.modules.jmreport.common.vo.Result;
+import org.jeecg.modules.jmreport.config.JmReportBaseConfig;
+import org.jeecg.modules.jmreport.config.oss.JmReportUploadConfig;
+import org.jeecg.modules.jmreport.desreport.entity.JimuReport;
+import org.jeecg.modules.jmreport.desreport.render.utils.ExcelColumn;
+import org.jeecg.modules.jmreport.desreport.service.IJmReportExportExcel;
+import org.jeecg.modules.jmreport.desreport.util.b;
+import org.jeecg.modules.jmreport.desreport.util.d;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Service;
+
+@Service
+@Primary
+public class k implements IJmReportExportExcel {
+    private static final Logger a = LoggerFactory.getLogger(k.class);
+    @Autowired
+    private e jmReportDesignService;
+    @Autowired
+    private JmReportBaseConfig jmBaseConfig;
+    @Autowired
+    private JmReportUploadConfig jimuReportUploadConfig;
+
+    public Map<String, Object> exportExcel(String excelConfigId, JSONObject queryParam, List echartBase) {
+        XSSFWorkbook var4 = new XSSFWorkbook();
+        SXSSFWorkbook var5 = new SXSSFWorkbook(var4, -1, Boolean.FALSE, Boolean.TRUE);
+        String var6 = "";
+        HashMap var7 = new HashMap();
+        XSSFCellStyle var8 = this.a(var5);
+        var7.put("generalStyle", var8);
+        boolean var9 = true;
+        new HashMap();
+        int var11 = 1;
+        Integer var12 = this.jmBaseConfig.getPageSizeNumber();
+        if (null == queryParam || queryParam.size() == 0) {
+            queryParam = new JSONObject();
+        }
+
+        while(var9) {
+            if (oConvertUtils.isEmpty(var12)) {
+                var12 = 10000;
+            }
+
+            if (oConvertUtils.isNotEmpty(var12) && "0".equals(String.valueOf(var12))) {
+                var12 = 10000;
+            }
+
+            queryParam.put("pageNo", var11);
+            queryParam.put("pageSize", var12);
+            Result var13 = this.jmReportDesignService.show(excelConfigId, queryParam.toJSONString());
+            JimuReport var14 = (JimuReport)var13.getResult();
+            JSONObject var15 = JSON.parseObject(var14.getJsonStr());
+            JSONObject var16 = var15.getJSONObject("rows");
+            if (var16.containsKey("-1")) {
+                var16.remove("-1");
+            }
+
+            if (var16.containsKey("len")) {
+                var16.remove("len");
+            }
+
+            if (var16.size() < var12) {
+                var9 = false;
+            }
+
+            if (var16.size() > var12) {
+                var9 = false;
+            }
+
+            var6 = var14.getName();
+            JSONObject var17 = JSON.parseObject(var14.getJsonStr());
+            this.a((JSONObject)var17, (List)echartBase, (SXSSFWorkbook)var5, (XSSFWorkbook)var4, (Integer)var11, (Map)var7);
+            ++var11;
+        }
+
+        HashMap var18 = new HashMap();
+        var18.put("name", var6 + ".xlsx");
+        var18.put("workbook", var5);
+        return var18;
+    }
+
+    private XSSFCellStyle a(SXSSFWorkbook var1) {
+        XSSFCellStyle var2 = (XSSFCellStyle)var1.createCellStyle();
+        XSSFFont var3 = (XSSFFont)var1.createFont();
+        var3.setFontName("宋体");
+        var2.setFont(var3);
+        var2.setAlignment(HorizontalAlignment.CENTER);
+        var2.setVerticalAlignment(VerticalAlignment.CENTER);
+        return var2;
+    }
+
+    private SXSSFWorkbook a(JSONObject var1, List var2, SXSSFWorkbook var3, XSSFWorkbook var4, Integer var5, Map<String, CellStyle> var6) {
+        JSONArray var7 = null;
+        JSONArray var8 = null;
+        JSONArray var9 = null;
+        JSONArray var10 = null;
+        JSONObject var11 = null;
+        if (var1.containsKey("imgList")) {
+            var7 = var1.getJSONArray("imgList");
+        }
+
+        if (var1.containsKey("chartList")) {
+            var8 = var1.getJSONArray("chartList");
+        }
+
+        if (var1.containsKey("barcodeList")) {
+            var9 = var1.getJSONArray("barcodeList");
+        }
+
+        if (var1.containsKey("qrcodeList")) {
+            var10 = var1.getJSONArray("qrcodeList");
+        }
+
+        if (var1.containsKey("background")) {
+            Object var12 = var1.get("background");
+            if (var12 instanceof JSONObject) {
+                var11 = var1.getJSONObject("background");
+            }
+        }
+
+        JSONObject var13;
+        String var14;
+        if (var8 != null && var8.size() > 0 && var2.size() > 0) {
+            for(int var31 = 0; var31 < var8.size(); ++var31) {
+                var13 = var8.getJSONObject(var31);
+                var14 = (String)var13.get("layer_id");
+                List var15 = var2;
+                String var16 = "";
+
+                for(int var17 = 0; var17 < var15.size(); ++var17) {
+                    Map var18 = (Map)var15.get(var17);
+                    if (((String)var18.get("id")).equals(var14)) {
+                        var16 = (String)var18.get("base64");
+                    }
+                }
+
+                String[] var35 = var16.split("base64,");
+                var13.put("url", var35[1]);
+            }
+        }
+
+        JSONObject var32 = var1.getJSONObject("rows");
+        var13 = var1.getJSONObject("cols");
+        if (var13.containsKey("len")) {
+            var13.remove("len");
+        }
+
+        if (var32.containsKey("-1")) {
+            var32.remove("-1");
+        }
+
+        var14 = var1.getString("name");
+        Object var33 = var1.get("styles");
+        HashMap var34 = new HashMap();
+        int var37;
+        if (var33 instanceof JSONArray) {
+            JSONArray var36 = var1.getJSONArray("styles");
+
+            for(var37 = 0; var37 < var36.size(); ++var37) {
+                var34.put(String.valueOf(var37), var36.get(var37));
+            }
+        }
+
+        if (var33 instanceof JSONObject) {
+            JSONObject var38 = (JSONObject)var33;
+
+            for(var37 = 1; var37 <= var38.size(); ++var37) {
+                var34.put(String.valueOf(var37), var38.get(var37));
+            }
+        }
+
+        Object var39 = null;
+        String var40 = this.jmBaseConfig.getExportExcelPattern();
+        if (oConvertUtils.isEmpty(var40) || "fast".equals(var40)) {
+            var3.createSheet("sheet" + var5);
+            var39 = var3.getSheetAt(var5 - 1);
+        }
+
+        if ("primary".equals(var40)) {
+            var4.createSheet("sheet" + var5);
+            var39 = var4.getSheetAt(var5 - 1);
+        }
+
+        this.a((Sheet)var39, var13);
+        ((Sheet)var39).setDefaultRowHeightInPoints(19.5F);
+        HashMap var19 = new HashMap();
+        HashMap var20 = new HashMap();
+        HashMap var21 = new HashMap();
+        ArrayList var22 = new ArrayList();
+        HashMap var23 = new HashMap();
+        Map var24 = this.a(var32);
+        HashMap var25 = new HashMap();
+        long var26 = System.currentTimeMillis();
+        HashMap var28 = new HashMap();
+        this.a((Map)var34, (Workbook)var3, (Map)var6);
+        if (var39 instanceof SXSSFSheet) {
+            this.a((SXSSFWorkbook)var3, var32, var34, (SXSSFSheet)((SXSSFSheet)var39), var19, var20, var21, var22, var24, var25, var28, var5, var6);
+        }
+
+        if (var39 instanceof XSSFSheet) {
+            this.a((XSSFWorkbook)var4, var32, var34, (XSSFSheet)((XSSFSheet)var39), var19, var20, var21, var22, var24, var25, var28, var5, var6);
+        }
+
+        long var29 = System.currentTimeMillis();
+        a.info("循环数据运行时间:" + (var29 - var26) + "ms");
+        if (var32.size() < this.jmBaseConfig.excelStyleRow && var5 == 1 || var39 instanceof XSSFSheet) {
+            this.a((JSONObject)var32, (Sheet)var39, (SXSSFWorkbook)var3, (Map)var34, (Map)var28, (Map)var23);
+            this.a((Sheet)var39, (SXSSFWorkbook)var3, (Map)var23);
+        }
+
+        this.a((Workbook)var3, (Sheet)var39, (Map)var19, (Map)var28, (Map)var20, (Map)var21);
+        if (var7 != null) {
+            this.a((Sheet)var39, (XSSFWorkbook)var4, (JSONArray)var7, (Map)var28, var25);
+        }
+
+        if (var8 != null) {
+            this.a((Sheet)var39, (SXSSFWorkbook)var3, (JSONArray)var8, (Map)var25, (JSONObject)var13, (JSONObject)var32);
+        }
+
+        if (var9 != null) {
+            this.a((Sheet)var39, (Workbook)var3, (JSONArray)var9, (List)var2, var25);
+        }
+
+        if (var10 != null) {
+            this.a((Sheet)var39, (Workbook)var3, (JSONArray)var10, (List)var2, var25);
+        }
+
+        if (var11 != null) {
+            this.a((Sheet)var39, (XSSFWorkbook)var4, (JSONObject)var11);
+        }
+
+        if (null != var22 && var22.size() > 0) {
+            this.a((Sheet)var39, (SXSSFWorkbook)var3, (List)var22, (Map)var28, var25);
+        }
+
+        return var3;
+    }
+
+    private Map<String, Object> a(JSONObject var1) {
+        HashMap var2 = new HashMap();
+        Iterator var3 = var1.keySet().iterator();
+
+        label60:
+        while(true) {
+            String var4;
+            int var5;
+            do {
+                do {
+                    do {
+                        do {
+                            if (!var3.hasNext()) {
+                                return var2;
+                            }
+
+                            var4 = (String)var3.next();
+                        } while("cells".equals(var4));
+                    } while("isDrag".equals(var4));
+                } while("len".equals(var4));
+
+                var5 = Integer.parseInt(var4);
+            } while(var5 < 0);
+
+            JSONObject var6 = var1.getJSONObject(var4).getJSONObject("cells");
+            var6 = this.b(var6);
+            Iterator var7 = var6.keySet().iterator();
+
+            while(true) {
+                String var8;
+                String var10;
+                Matcher var13;
+                do {
+                    JSONObject var9;
+                    do {
+                        do {
+                            if (!var7.hasNext()) {
+                                continue label60;
+                            }
+
+                            var8 = (String)var7.next();
+                        } while("-1".equals(var8));
+
+                        var9 = var6.getJSONObject(var8);
+                    } while(!var9.containsKey("text"));
+
+                    var10 = var9.getString("text");
+                    String var11 = "^[=][A-Z]{1,2}[^\\u4e00-\\u9fa5]+$";
+                    Pattern var12 = Pattern.compile(var11);
+                    var13 = var12.matcher(var10);
+                } while(!ExcelUtil.isHave(CommonConstant.JIMUREPORT_FUNCTION, var10) && !var13.matches());
+
+                var2.put(var4 + "," + var8, var10);
+            }
+        }
+    }
+
+    private void a(Sheet var1, SXSSFWorkbook var2, Map<String, JSONObject> var3) {
+        Iterator var4 = var3.keySet().iterator();
+
+        while(true) {
+            JSONObject var6;
+            String[] var7;
+            do {
+                if (!var4.hasNext()) {
+                    return;
+                }
+
+                String var5 = (String)var4.next();
+                var6 = JSONObject.parseObject(String.valueOf(var3.get(var5)));
+                var7 = var5.split(",");
+            } while(var7.length != 4);
+
+            int var8 = Integer.valueOf(var7[0]);
+            int var9 = Integer.valueOf(var7[1]);
+            int var10 = Integer.valueOf(var7[2]);
+            int var11 = Integer.valueOf(var7[3]);
+
+            for(int var12 = var8; var12 < var9 + 1; ++var12) {
+                Row var13 = var1.getRow(var12);
+
+                for(int var14 = var10; var14 < var11 + 1; ++var14) {
+                    try {
+                        Cell var15 = var13.getCell(var14);
+                        if (null != var15) {
+                            XSSFCellStyle var16 = (XSSFCellStyle)var15.getCellStyle();
+                            Object var17 = var6.get("top");
+                            Object var18 = var6.get("left");
+                            Object var19 = var6.get("right");
+                            Object var20 = var6.get("bottom");
+                            XSSFColor var21;
+                            if (null != var17) {
+                                var21 = this.b(var17.toString());
+                                var16.setTopBorderColor(var21);
+                            }
+
+                            if (null != var18) {
+                                var21 = this.b(var18.toString());
+                                var16.setLeftBorderColor(var21);
+                            }
+
+                            if (null != var19) {
+                                var21 = this.b(var19.toString());
+                                var16.setRightBorderColor(var21);
+                            }
+
+                            if (null != var20) {
+                                var21 = this.b(var20.toString());
+                                var16.setBottomBorderColor(var21);
+                            }
+
+                            var15.setCellStyle(var16);
+                        }
+                    } catch (NullPointerException var22) {
+                        a.debug("单元格为空", var22.getMessage());
+                    }
+                }
+            }
+        }
+    }
+
+    private void a(SXSSFWorkbook var1, JSONObject var2, Map var3, SXSSFSheet var4, Map<String, String> var5, Map<String, JSONObject> var6, Map<String, List<String>> var7, List<Map<String, Object>> var8, Map<String, Object> var9, Map<String, Object> var10, Map<String, String> var11, Integer var12, Map<String, CellStyle> var13) {
+        var2 = this.b(var2);
+        Iterator var14 = var2.keySet().iterator();
+
+        while(true) {
+            String var15;
+            int var16;
+            do {
+                do {
+                    do {
+                        do {
+                            if (!var14.hasNext()) {
+                                return;
+                            }
+
+                            var15 = (String)var14.next();
+                        } while("cells".equals(var15));
+                    } while("isDrag".equals(var15));
+                } while("len".equals(var15));
+
+                var16 = Integer.parseInt(var15);
+            } while(var16 < 0);
+
+            SXSSFRow var17 = var4.createRow(Integer.parseInt(var15));
+            if (var2.getJSONObject(var15).containsKey("height")) {
+                Integer var18 = var2.getJSONObject(var15).getInteger("height");
+                var17.setHeightInPoints((float)var18 - 9.5F);
+            }
+
+            JSONObject var24 = var2.getJSONObject(var15).getJSONObject("cells");
+            var24 = this.b(var24);
+            Iterator var19 = var24.keySet().iterator();
+
+            while(var19.hasNext()) {
+                String var20 = (String)var19.next();
+                if (!"-1".equals(var20)) {
+                    JSONObject var21 = var24.getJSONObject(var20);
+                    SXSSFCell var22 = var17.createCell(Integer.parseInt(var20));
+                    if (var21.containsKey("style") && var2.size() < this.jmBaseConfig.excelStyleRow && var12 == 1) {
+                        String var23 = var21.getString("style");
+                        var22.setCellStyle((CellStyle)var13.get(var23));
+                    }
+
+                    if (var2.size() >= this.jmBaseConfig.excelStyleRow) {
+                        var22.setCellStyle((CellStyle)var13.get("generalStyle"));
+                    }
+
+                    this.a(var1, var21, var15, var20, var4, var22, var3, var11, var8, var5, var9, var13, var6, var7, var17, var10);
+                }
+            }
+        }
+    }
+
+    private void a(XSSFWorkbook var1, JSONObject var2, Map var3, XSSFSheet var4, Map<String, String> var5, Map<String, JSONObject> var6, Map<String, List<String>> var7, List<Map<String, Object>> var8, Map<String, Object> var9, Map<String, Object> var10, Map<String, String> var11, Integer var12, Map<String, CellStyle> var13) {
+        var2 = this.b(var2);
+        Iterator var14 = var2.keySet().iterator();
+        boolean var15 = true;
+
+        while(true) {
+            String var16;
+            int var17;
+            do {
+                do {
+                    do {
+                        do {
+                            if (!var14.hasNext()) {
+                                return;
+                            }
+
+                            var16 = (String)var14.next();
+                        } while("cells".equals(var16));
+                    } while("isDrag".equals(var16));
+                } while("len".equals(var16));
+
+                var17 = Integer.parseInt(var16);
+            } while(var17 < 0);
+
+            XSSFRow var18 = var4.createRow(Integer.parseInt(var16));
+            if (var2.getJSONObject(var16).containsKey("height")) {
+                Integer var19 = var2.getJSONObject(var16).getInteger("height");
+                var18.setHeightInPoints((float)var19 - 9.5F);
+            }
+
+            JSONObject var25 = var2.getJSONObject(var16).getJSONObject("cells");
+            var25 = this.b(var25);
+            Iterator var20 = var25.keySet().iterator();
+
+            while(var20.hasNext()) {
+                String var21 = (String)var20.next();
+                if (!"-1".equals(var21)) {
+                    JSONObject var22 = var25.getJSONObject(var21);
+                    XSSFCell var23 = var18.createCell(Integer.parseInt(var21));
+                    if (var22.containsKey("style")) {
+                        String var24 = var22.getString("style");
+                        var23.setCellStyle((CellStyle)var13.get(var24));
+                    }
+
+                    this.a(var1, var22, var16, var21, var4, var23, var3, var11, var8, var5, var9, var13, var6, var7, var18, var10);
+                }
+            }
+        }
+    }
+
+    private void a(Workbook var1, JSONObject var2, String var3, String var4, Sheet var5, Cell var6, Map var7, Map var8, List var9, Map var10, Map var11, Map<String, CellStyle> var12, Map var13, Map var14, Row var15, Map var16) {
+        String var17 = var2.getString("merge");
+        String var18;
+        if (var2.containsKey("virtual")) {
+            var18 = var2.getString("virtual");
+            if (var16.get(var18) == null) {
+                var16.put(var18, var3 + "," + var4);
+            }
+        }
+
+        if (var17 != null && !"".equals(var17)) {
+            String[] var32 = a(var17, "[", "]").split(",");
+            int var19 = Integer.parseInt(var32[0]);
+            int var20 = Integer.parseInt(var32[1]);
+            int var21 = Integer.parseInt(var3);
+            int var22 = var19 + var21;
+            int var23 = Integer.parseInt(var4);
+            int var24 = var20 + var23;
+            CellRangeAddress var25 = new CellRangeAddress(var21, var22, var23, var24);
+
+            try {
+                var5.addMergedRegion(var25);
+            } catch (IllegalStateException var30) {
+                a.warn("单元格合并失败,原因重复单元格或者一个单元格不允许重复合并", var30.getMessage());
+            } catch (IllegalArgumentException var31) {
+                a.warn("单元格合并失败,原因重复单元格或者一个单元格不允许重复合并", var31.getMessage());
+            }
+
+            var8.put(var21 + "," + var23, var22 + "," + var24);
+        }
+
+        String var35;
+        String var37;
+        if (var2.containsKey("display")) {
+            var18 = var2.getString("display");
+            if ("barcode".equals(var18) || "qrcode".equals(var18) || "img".equals(var18)) {
+                HashMap var33 = new HashMap();
+                var35 = var2.getString("display");
+                var37 = var2.getString("text");
+                String var38 = var2.getString("style");
+                String var41 = var2.getString("rendered");
+                var33.put("style", (JSONObject)var7.get(var38));
+                var33.put("text", var37);
+                var33.put("display", var35);
+                var33.put("row", var6.getRowIndex());
+                var33.put("cell", var6.getColumnIndex());
+                var33.put("layer_id", var41);
+                var9.add(var33);
+            }
+        }
+
+        if (var2.containsKey("text")) {
+            var18 = var2.getString("text");
+            String var34 = "";
+
+            try {
+                var34 = this.a(var2, var7, var18);
+            } catch (Exception var29) {
+                var29.printStackTrace();
+            }
+
+            if (var18.contains("|")) {
+                Object var36 = var2.get("lineStart");
+                if (null != var36) {
+                    var10.put(var3 + "," + var4, var36.toString());
+                    var37 = var2.getString("style");
+                    var13.put(var3 + "," + var4, (JSONObject)var7.get(var37));
+                    ArrayList var39 = new ArrayList();
+                    var39.add(var3);
+                    var39.add(var4);
+                    var14.put(var3, var39);
+                }
+            }
+
+            var35 = "";
+            var37 = var2.getString("style");
+            if (oConvertUtils.isNotEmpty(var37)) {
+                JSONObject var40 = (JSONObject)var7.get(var37);
+                if (var40.containsKey("format")) {
+                    var35 = var40.getString("format");
+                }
+            }
+
+            if (oConvertUtils.isNotEmpty(var35) && oConvertUtils.isNotEmpty(var18) && ExcelUtil.isHave(JmConst.NUMBER_FUNCTION, var35)) {
+                DataFormat var42 = var1.createDataFormat();
+                CellStyle var43 = (CellStyle)var12.get(var37);
+                String var44 = "0.00";
+                Object var45 = var2.get("decimalPlaces");
+                if (oConvertUtils.isNotEmpty(var45) && "number".equals(var35)) {
+                    Integer var26 = Integer.valueOf(var45.toString());
+                    if (var26 <= 0) {
+                        var44 = "0";
+                    } else {
+                        String var27 = "0.";
+
+                        for(int var28 = 0; var28 < var26; ++var28) {
+                            var27 = var27 + "0";
+                        }
+
+                        var44 = var27;
+                    }
+
+                    var43.setDataFormat(var42.getFormat(var44));
+                    var6.setCellStyle(var43);
+                }
+
+                var6.setCellValue(Double.parseDouble(var18));
+                return;
+            }
+
+            var6.setCellValue(oConvertUtils.isNotEmpty(var34) ? var34 : var18);
+        }
+
+    }
+
+    private boolean a(Row var1, Integer var2, Map<String, Object> var3) {
+        CellReference var4 = new CellReference(var1.getRowNum(), var2);
+        String[] var5 = var4.getCellRefParts();
+        String var6 = var5[1];
+        String var7 = var5[2];
+        String var8 = var7 + var6;
+        Iterator var9 = var3.entrySet().iterator();
+
+        while(var9.hasNext()) {
+            Entry var10 = (Entry)var9.next();
+            String var11 = String.valueOf(var10.getValue());
+            String[] var13 = var11.split("[^A-Z0-9]");
+            StringBuilder var14 = new StringBuilder();
+
+            for(int var15 = 0; var15 < var13.length; ++var15) {
+                if (!ExcelUtil.isHave(JmConst.JIMUREPORT_FUNCTION, var13[var15]) && oConvertUtils.isNotEmpty(var13[var15])) {
+                    var14.append(var13[var15]).append(",");
+                }
+            }
+
+            String var24 = var14.toString();
+            String[] var16 = var24.split(",");
+            if (var11.contains(",")) {
+                for(int var17 = 0; var17 < var16.length; ++var17) {
+                    if (var8.equals(var16[var17])) {
+                        return true;
+                    }
+                }
+            }
+
+            if (var11.contains(":") && var16.length == 2) {
+                String var25 = var16[0];
+                String var18 = var16[1];
+                var25 = var25.replaceAll("[^a-zA-Z].*", "");
+                var18 = var18.replaceAll("[^a-zA-Z].*", "");
+                String var19 = var16[0].replaceAll("[^0-9]", "");
+                String var20 = var16[1].replaceAll("[^0-9]", "");
+                int var21 = ExcelColumn.a(var25, var25.length());
+                int var22 = ExcelColumn.a(var18, var18.length());
+                int var23 = ExcelColumn.a(var7, var7.length());
+                if (Integer.parseInt(var19) <= Integer.parseInt(var6) && Integer.parseInt(var6) <= Integer.parseInt(var20) && var21 <= var23 && var23 <= var22) {
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
+    private void a(Map<String, JSONObject> var1, Workbook var2, Map<String, CellStyle> var3) {
+        Iterator var4 = var1.entrySet().iterator();
+
+        while(true) {
+            Entry var5;
+            JSONObject var7;
+            XSSFCellStyle var8;
+            do {
+                do {
+                    do {
+                        CellStyle var6;
+                        do {
+                            if (!var4.hasNext()) {
+                                return;
+                            }
+
+                            var5 = (Entry)var4.next();
+                            var6 = (CellStyle)var3.get(var5.getKey());
+                        } while(null != var6);
+
+                        var7 = (JSONObject)var5.getValue();
+                    } while(var7 == null);
+                } while("null".equals(var7));
+
+                var8 = (XSSFCellStyle)var2.createCellStyle();
+            } while(null == var7);
+
+            String var9;
+            if (!var7.containsKey("align")) {
+                var8.setAlignment(HorizontalAlignment.LEFT);
+            } else {
+                var9 = var7.getString("align").toUpperCase();
+                var8.setAlignment(HorizontalAlignment.valueOf(var9));
+            }
+
+            if (null != var7 && !var7.containsKey("valign")) {
+                var8.setVerticalAlignment(VerticalAlignment.valueOf("center".toUpperCase()));
+            } else {
+                var9 = var7.getString("valign").toUpperCase();
+                if ("MIDDLE".equals(var9)) {
+                    var9 = "center".toUpperCase();
+                }
+
+                var8.setVerticalAlignment(VerticalAlignment.valueOf(var9));
+            }
+
+            if (null == var7 || var7.containsKey("bgcolor")) {
+                var9 = var7.getString("bgcolor");
+                XSSFColor var10 = new XSSFColor();
+                if (var9.indexOf("#") != -1 && var9.length() > 6) {
+                    String var11 = var9.replaceAll("#", "");
+                    if (var11.length() == 6) {
+                        byte[] var12 = new byte[]{(byte)Integer.parseInt(var11.substring(0, 2), 16), (byte)Integer.parseInt(var11.substring(2, 4), 16), (byte)Integer.parseInt(var11.substring(4, 6), 16)};
+                        var10.setRGB(var12);
+                    }
+                }
+
+                var8.setFillForegroundColor(var10);
+                var8.setFillBackgroundColor(var10);
+                var8.setFillPattern(FillPatternType.BIG_SPOTS);
+            }
+
+            XSSFColor var14;
+            if (null != var7 && var7.containsKey("font") || var7.containsKey("underline") || var7.containsKey("strike") || var7.containsKey("color")) {
+                XSSFFont var18 = (XSSFFont)var2.createFont();
+                JSONObject var17 = (JSONObject)var7.get("font");
+                Object var22 = var7.get("underline");
+                Object var25 = var7.get("strike");
+                if (null != var17) {
+                    if (var17.containsKey("name")) {
+                        var18.setFontName(var17.getString("name"));
+                    }
+
+                    if (var17.containsKey("italic")) {
+                        var18.setItalic(true);
+                    }
+
+                    if (var17.containsKey("size")) {
+                        var18.setFontHeightInPoints(var17.getShort("size"));
+                    }
+
+                    if (var17.containsKey("bold")) {
+                        boolean var13 = var17.getBoolean("bold");
+                        var18.setBold(var13);
+                    }
+                }
+
+                if (null != var22) {
+                    var18.setUnderline((byte)1);
+                }
+
+                if (null != var25) {
+                    var18.setStrikeout(true);
+                }
+
+                if (null != var7 && var7.containsKey("color")) {
+                    String var27 = var7.getString("color");
+                    var14 = new XSSFColor();
+                    if (var27.length() > 6) {
+                        if (var27.contains("rgb")) {
+                            var27 = var27.replace("rgb", "").replace("(", "").replace(")", "");
+                            String[] var15 = var27.split(",");
+                            if (var15.length == 3) {
+                                byte[] var16 = new byte[]{(byte)Integer.parseInt(var15[0]), (byte)Integer.parseInt(var15[1]), (byte)Integer.parseInt(var15[2])};
+                                var14.setRGB(var16);
+                            }
+                        } else if (var27.contains("#")) {
+                            byte[] var29 = new byte[]{(byte)Integer.parseInt(var27.substring(1, 3), 16), (byte)Integer.parseInt(var27.substring(3, 5), 16), (byte)Integer.parseInt(var27.substring(5, 7), 16)};
+                            var14.setRGB(var29);
+                        }
+                    }
+
+                    var18.setColor(var14);
+                }
+
+                var8.setFont(var18);
+            }
+
+            if (var7.containsKey("border")) {
+                JSONObject var20 = var7.getJSONObject("border");
+                JSONArray var19 = var20.getJSONArray("right");
+                JSONArray var24 = var20.getJSONArray("top");
+                JSONArray var26 = var20.getJSONArray("left");
+                JSONArray var28 = var20.getJSONArray("bottom");
+                if (null != var24 && var24.size() > 1) {
+                    var8.setBorderTop(BorderStyle.THIN);
+                    var14 = this.b(var24.get(1).toString());
+                    var8.setTopBorderColor(var14);
+                }
+
+                if (null != var28 && var28.size() > 1) {
+                    var8.setBorderBottom(BorderStyle.THIN);
+                    var14 = this.b(var28.get(1).toString());
+                    var8.setBottomBorderColor(var14);
+                }
+
+                if (null != var26 && var26.size() > 1) {
+                    var8.setBorderLeft(BorderStyle.THIN);
+                    var14 = this.b(var26.get(1).toString());
+                    var8.setLeftBorderColor(var14);
+                }
+
+                if (null != var19 && var19.size() > 1) {
+                    var8.setBorderRight(BorderStyle.THIN);
+                    var14 = this.b(var19.get(1).toString());
+                    var8.setRightBorderColor(var14);
+                }
+            }
+
+            if (var7.containsKey("format")) {
+                DataFormat var23 = var2.createDataFormat();
+                String var21 = var7.getString("format");
+                if ("percent".equals(var21)) {
+                    var8.setDataFormat(var23.getFormat("0.00%"));
+                }
+
+                if ("rmb".equals(var21)) {
+                    var8.setDataFormat(var23.getFormat("¥#,##0"));
+                }
+
+                if ("usd".equals(var21)) {
+                    var8.setDataFormat(var23.getFormat("$#,##0"));
+                }
+
+                if ("eur".equals(var21)) {
+                    var8.setDataFormat(var23.getFormat("€#,##0"));
+                }
+            }
+
+            var8.setWrapText(true);
+            var3.put((String) var5.getKey(), var8);
+        }
+    }
+
+    private void a(Sheet var1, JSONObject var2) {
+        var1.setDefaultColumnWidth(12);
+        Iterator var3 = var2.keySet().iterator();
+
+        while(var3.hasNext()) {
+            String var4 = (String)var3.next();
+            JSONObject var5 = (JSONObject)var2.get(var4);
+            var1.setColumnWidth(Integer.parseInt(var4), 35 * (int)((double)var5.getInteger("width") + 0.8D));
+        }
+
+    }
+
+    private JSONObject b(JSONObject var1) {
+        ArrayList var2 = new ArrayList();
+        Iterator var3 = var1.keySet().iterator();
+
+        while(var3.hasNext()) {
+            String var4 = (String)var3.next();
+            if (oConvertUtils.isNotEmpty(var4) && !"NaN".equals(var4) && !"len".equals(var4)) {
+                var2.add(Integer.parseInt(var4));
+            }
+        }
+
+        Collections.sort(var2);
+        JSONArray var9 = new JSONArray();
+        JSONObject var5 = new JSONObject(true);
+        Iterator var6 = var2.iterator();
+
+        while(var6.hasNext()) {
+            Integer var7 = (Integer)var6.next();
+            JSONObject var8 = var1.getJSONObject(String.valueOf(var7));
+            var9.add(var8);
+            var5.put(String.valueOf(var7), var8);
+        }
+
+        return var5;
+    }
+
+    private void a(JSONObject var1, Sheet var2, SXSSFWorkbook var3, Map var4, Map<String, String> var5, Map<String, JSONObject> var6) {
+        Iterator var7 = var1.keySet().iterator();
+
+        while(true) {
+            String var8;
+            JSONObject var9;
+            do {
+                do {
+                    do {
+                        do {
+                            if (!var7.hasNext()) {
+                                return;
+                            }
+
+                            var8 = (String)var7.next();
+                        } while("len".equals(var8));
+                    } while("cells".equals(var8));
+                } while("isDrag".equals(var8));
+
+                var9 = var1.getJSONObject(var8).getJSONObject("cells");
+            } while(null == var9);
+
+            Iterator var10 = var9.keySet().iterator();
+
+            while(var10.hasNext()) {
+                String var11 = (String)var10.next();
+                JSONObject var12 = var9.getJSONObject(var11);
+                if (var12.containsKey("merge")) {
+                    String var13 = var12.getString("merge");
+                    String[] var14 = a(var13, "[", "]").split(",");
+                    int var15 = Integer.parseInt(var14[0]);
+                    int var16 = Integer.parseInt(var14[1]);
+                    if (var13 != null && !"".equals(var13)) {
+                        JSONObject var17 = new JSONObject();
+                        int var18 = Integer.parseInt(var8);
+                        int var19 = var15 + var18;
+                        int var20 = Integer.parseInt(var11);
+                        int var21 = var16 + var20;
+                        CellRangeAddress var22 = new CellRangeAddress(var18, var19, var20, var21);
+                        if (var12.containsKey("style")) {
+                            String var23 = var12.getString("style");
+                            JSONObject var24 = (JSONObject)var4.get(var23);
+                            if (null != var24 && var24.containsKey("border")) {
+                                JSONObject var25 = var24.getJSONObject("border");
+                                Iterator var26 = var25.keySet().iterator();
+                                JSONArray var27 = var25.getJSONArray("right");
+                                JSONArray var28 = var25.getJSONArray("top");
+                                if (null != var28 && var28.size() > 1) {
+                                    RegionUtil.setBorderTop(BorderStyle.THIN, var22, var2);
+                                    var17.put("top", var28.get(1).toString());
+                                }
+
+                                if (null != var27 && var27.size() > 1) {
+                                    RegionUtil.setBorderRight(BorderStyle.THIN, var22, var2);
+                                    var17.put("right", var27.get(1).toString());
+                                }
+
+                                JSONArray var29 = var25.getJSONArray("left");
+                                if (null != var29 && var29.size() > 1) {
+                                    RegionUtil.setBorderLeft(BorderStyle.THIN, var22, var2);
+                                    var17.put("left", var29.get(1).toString());
+                                }
+
+                                JSONArray var30 = var25.getJSONArray("bottom");
+                                if (null != var30 && var30.size() > 1) {
+                                    RegionUtil.setBorderBottom(BorderStyle.THIN, var22, var2);
+                                    var17.put("bottom", var30.get(1).toString());
+                                }
+                            }
+
+                            String var31 = var18 + "," + var19 + "," + var20 + "," + var21;
+                            var6.put(var31, var17);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    public static String a(String var0, String var1, String var2) {
+        int var3 = var0.indexOf(var1);
+        int var4 = var0.indexOf(var2);
+        if (var3 < 0) {
+            return "";
+        } else if (var4 < 0) {
+            return "";
+        } else {
+            String var5 = var0.substring(var3, var4).substring(var1.length());
+            return var5;
+        }
+    }
+
+    private void a(Sheet var1, XSSFWorkbook var2, JSONArray var3, Map<String, String> var4, Map<String, Object> var5) {
+        Drawing var6 = var1.createDrawingPatriarch();
+        HttpURLConnection var7 = null;
+
+        try {
+            for(int var9 = 0; var9 < var3.size(); ++var9) {
+                boolean var10 = false;
+                boolean var11 = false;
+                String var12 = "";
+                String var13 = "";
+                String var14 = "";
+                JSONObject var15 = var3.getJSONObject(var9);
+                int var37 = Integer.valueOf(var15.getString("col"));
+                int var36 = Integer.valueOf(var15.getString("row"));
+                var13 = (String)var15.get("width");
+                var14 = (String)var15.get("height");
+                var12 = (String)var15.get("src");
+                String var16 = var15.getString("layer_id");
+                Object var17 = var15.get("colspan");
+                Object var18 = var15.get("rowspan");
+                Object var19 = var5.get(var16);
+                if (null != var19) {
+                    String[] var20 = String.valueOf(var19).split(",");
+                    var36 = Integer.parseInt(var20[0]);
+                    var37 = Integer.parseInt(var20[1]);
+                }
+
+                if (var14.contains("px") && var13.contains("px")) {
+                    var14 = var14.substring(0, var14.lastIndexOf("px"));
+                    var13 = var13.substring(0, var13.lastIndexOf("px"));
+                }
+
+                byte[] var8;
+                if (var12.contains("http")) {
+                    URL var38 = new URL(var12);
+                    if (var12.contains("https")) {
+                        var8 = b.a(var12);
+                    } else {
+                        var7 = (HttpURLConnection)var38.openConnection();
+                        var7.setRequestMethod("GET");
+                        var7.setConnectTimeout(50000);
+                        InputStream var21 = var7.getInputStream();
+                        var8 = a(var21);
+                    }
+                } else {
+                    var8 = this.c(var12);
+                }
+
+                boolean var39 = false;
+                String var41 = (String)var4.get(var36 + "," + var37);
+                boolean var22 = false;
+                int var40;
+                int var42;
+                if (null != var17 && null != var18) {
+                    var42 = var36 + Integer.parseInt(var18.toString());
+                    var40 = var37 + Integer.parseInt(var17.toString());
+                } else {
+                    if (oConvertUtils.isNotEmpty(var41)) {
+                        String var23 = var41.split(",")[0];
+                        var42 = Integer.parseInt(var23);
+                    } else {
+                        var42 = var36 + Integer.parseInt(String.format("%.0f", Float.parseFloat(var14) / 25.0F));
+                    }
+
+                    Integer var43 = this.a(var1, var36, (float)Integer.parseInt(var14));
+                    if (var43 > 0) {
+                        var42 = var43;
+                    } else {
+                        var42 += var36;
+                    }
+
+                    var40 = Integer.parseInt(String.format("%.0f", Float.parseFloat(var13) / 100.0F));
+                    var40 += var37;
+                }
+
+                Object var44 = var15.get("isBackend");
+                if (null != var44 && (Boolean)var44) {
+                    int var45 = var2.addPicture(var8, 6);
+                    XSSFPictureData var25 = (XSSFPictureData)var2.getAllPictures().get(var45);
+
+                    try {
+                        for(int var26 = 0; var26 < var2.getNumberOfSheets(); ++var26) {
+                            XSSFSheet var46 = var2.getSheetAt(var26);
+                            PackagePartName var28 = var25.getPackagePart().getPartName();
+                            String var29 = XSSFRelation.IMAGES.getRelation();
+                            PackageRelationship var30 = var46.getPackagePart().addRelationship(var28, TargetMode.EXTERNAL, var29, (String)null);
+                            var46.getCTWorksheet().addNewPicture().setId(var30.getId());
+                        }
+                    } catch (Exception var31) {
+                        XSSFClientAnchor var27 = new XSSFClientAnchor(0, 0, Integer.parseInt(var13), Integer.parseInt(var14), var37, var36, var40, var42);
+                        var6.createPicture(var27, var2.addPicture(var8, 5));
+                    }
+                } else {
+                    XSSFClientAnchor var24 = new XSSFClientAnchor(0, 0, Integer.parseInt(var13), Integer.parseInt(var14), var37, var36, var40, var42);
+                    var6.createPicture(var24, var2.addPicture(var8, 5));
+                }
+            }
+        } catch (MalformedURLException var32) {
+            var32.printStackTrace();
+        } catch (ProtocolException var33) {
+            var33.printStackTrace();
+        } catch (IOException var34) {
+            var34.printStackTrace();
+        } catch (Exception var35) {
+            var35.printStackTrace();
+        }
+
+    }
+
+    private byte[] c(String var1) {
+        File var2 = new File(this.jimuReportUploadConfig.getPath().getUpload() + File.separator + var1);
+
+        try {
+            byte[] var3 = Files.readAllBytes(var2.toPath());
+            return var3;
+        } catch (IOException var4) {
+            var4.printStackTrace();
+            return null;
+        }
+    }
+
+    private void a(Sheet var1, XSSFWorkbook var2, JSONObject var3) {
+        Drawing var4 = var1.createDrawingPatriarch();
+        Object var5 = null;
+        String var6 = "";
+        String var7 = "";
+        String var8 = "";
+        Object var18 = var3.get("width");
+        Object var19 = var3.get("height");
+        var6 = var3.getString("path");
+        byte[] var9 = this.a(var6);
+        XSSFPictureData var10 = null;
+        boolean var11 = false;
+
+        try {
+            int var20 = var2.addPicture(var9, 6);
+            var10 = (XSSFPictureData)var2.getAllPictures().get(var20);
+        } catch (NullPointerException var17) {
+            a.debug("数据为空", var17.getMessage());
+        }
+
+        if (var10 != null) {
+            for(int var12 = 0; var12 < var2.getNumberOfSheets(); ++var12) {
+                XSSFSheet var13 = var2.getSheetAt(var12);
+                PackagePartName var14 = var10.getPackagePart().getPartName();
+                String var15 = XSSFRelation.IMAGES.getRelation();
+                PackageRelationship var16 = var13.getPackagePart().addRelationship(var14, TargetMode.EXTERNAL, var15, (String)null);
+                var13.getCTWorksheet().addNewPicture().setId(var16.getId());
+            }
+        }
+
+    }
+
+    private void a(Sheet var1, SXSSFWorkbook var2, JSONArray var3, Map<String, Object> var4, JSONObject var5, JSONObject var6) {
+        Drawing var7 = var1.createDrawingPatriarch();
+        Object var8 = null;
+
+        try {
+            for(int var9 = 0; var9 < var3.size(); ++var9) {
+                boolean var10 = false;
+                boolean var11 = false;
+                String var12 = "";
+                String var13 = "";
+                String var14 = "";
+                JSONObject var15 = var3.getJSONObject(var9);
+                int var33 = Integer.valueOf(var15.getString("col"));
+                int var32 = Integer.valueOf(var15.getString("row"));
+                var13 = (String)var15.get("width");
+                var14 = (String)var15.get("height");
+                var12 = (String)var15.get("url");
+                String var16 = var15.getString("layer_id");
+                Object var17 = var4.get(var16);
+                if (null != var17) {
+                    String[] var18 = String.valueOf(var17).split(",");
+                    var32 = Integer.parseInt(var18[0]);
+                    var33 = Integer.parseInt(var18[1]);
+                }
+
+                byte[] var34 = new byte[0];
+                var34 = oConvertUtils.decodeBase64(var12);
+                int var20 = 0;
+                float var21 = Float.parseFloat(var14);
+
+                for(int var22 = var32; var22 < var32 + 99; ++var22) {
+                    Row var23 = var1.getRow(var22);
+                    if (var23 == null) {
+                        break;
+                    }
+
+                    ++var20;
+                    var21 -= var23.getHeightInPoints();
+                }
+
+                Object var35 = var15.get("colspan");
+                Object var36 = var15.get("rowspan");
+                boolean var24 = false;
+                int var37;
+                if (null != var35 && null != var36) {
+                    var20 = var32 + Integer.parseInt(var36.toString());
+                    var37 = var33 + Integer.parseInt(var35.toString());
+                } else {
+                    var20 += Integer.parseInt(String.format("%.0f", var21 / 25.0F));
+                    var37 = Integer.parseInt(String.format("%.0f", Float.parseFloat(var13) / 100.0F));
+                    var37 += var33;
+                }
+
+                int var25 = 0;
+
+                int var26;
+                for(var26 = var33; var26 < var37; ++var26) {
+                    Object var27 = var5.get(var26);
+                    if (oConvertUtils.isNotEmpty(var27)) {
+                        JSONObject var28 = (JSONObject)var27;
+                        Object var29 = var28.get("width");
+                        var25 += Integer.valueOf(String.valueOf(var29));
+                    } else {
+                        var25 += 100;
+                    }
+                }
+
+                if (var25 > Integer.parseInt(var13)) {
+                    var25 -= Integer.parseInt(var13);
+                } else {
+                    var25 = 0;
+                }
+
+                var25 = var25 * 3 / 4;
+                var26 = 0;
+
+                for(int var38 = var32; var38 < var20; ++var38) {
+                    Object var40 = var6.get(var38);
+                    if (oConvertUtils.isNotEmpty(var40)) {
+                        JSONObject var41 = (JSONObject)var40;
+                        Object var30 = var41.get("height");
+                        if (oConvertUtils.isNotEmpty(var30)) {
+                            var26 += Integer.parseInt(var30.toString());
+                        } else {
+                            var26 += 25;
+                        }
+                    } else {
+                        var26 += 25;
+                    }
+                }
+
+                if (var26 > Integer.parseInt(var14)) {
+                    var26 -= Integer.parseInt(var14);
+                } else {
+                    var26 = 0;
+                }
+
+                var26 = var26 * 3 / 4;
+                XSSFClientAnchor var39 = new XSSFClientAnchor(0, 0, 12700 * -var25, 12700 * -var26, var33, var32, var37, var20);
+                var7.createPicture(var39, var2.addPicture(var34, 5));
+            }
+        } catch (Exception var31) {
+            var31.printStackTrace();
+        }
+
+    }
+
+    private void a(Sheet var1, Workbook var2, JSONArray var3, List var4, Map<String, Object> var5) {
+        Drawing var6 = var1.createDrawingPatriarch();
+
+        for(int var7 = 0; var7 < var3.size(); ++var7) {
+            JSONObject var8 = var3.getJSONObject(var7);
+            boolean var9 = false;
+            boolean var10 = false;
+            String var11 = "";
+            String var12 = "";
+            int var25 = Integer.valueOf(var8.getString("col"));
+            int var24 = Integer.valueOf(var8.getString("row"));
+            var11 = String.valueOf(var8.get("width"));
+            var12 = String.valueOf(var8.get("height"));
+            String var13 = (String)var8.get("layer_id");
+            String var14 = "";
+            Object var15 = var5.get(var13);
+            if (null != var15) {
+                String[] var16 = String.valueOf(var15).split(",");
+                var24 = Integer.parseInt(var16[0]);
+                var25 = Integer.parseInt(var16[1]);
+            }
+
+            Object var18;
+            for(int var26 = 0; var26 < var4.size(); ++var26) {
+                Map var17 = (Map)var4.get(var26);
+                var18 = var17.get("id");
+                if (var13.equals(var18.toString())) {
+                    var14 = (String)var17.get("base64");
+                }
+            }
+
+            byte[] var27 = new byte[0];
+            var27 = oConvertUtils.decodeBase64(var14.replace("data:image/png;base64,", ""));
+            var18 = var8.get("colspan");
+            Object var19 = var8.get("rowspan");
+            boolean var20 = false;
+            boolean var21 = false;
+            float var22 = Float.parseFloat(var12);
+            int var28;
+            int var29;
+            if (null != var18 && null != var19) {
+                var29 = var24 + Integer.parseInt(var19.toString());
+                var28 = var25 + Integer.parseInt(var18.toString());
+            } else {
+                var28 = var24 + Integer.parseInt(String.format("%.0f", Float.parseFloat(var12) / 25.0F));
+                var29 = Integer.parseInt(String.format("%.0f", Float.parseFloat(var11) / 100.0F));
+            }
+
+            XSSFClientAnchor var23 = new XSSFClientAnchor(0, 0, Integer.parseInt(var11), Integer.parseInt(var12), var25, var24, var28, var29);
+            var6.createPicture(var23, var2.addPicture(var27, 5));
+        }
+
+    }
+
+    private static byte[] a(InputStream var0) throws Exception {
+        ByteArrayOutputStream var1 = new ByteArrayOutputStream();
+        byte[] var2 = new byte[1024];
+        boolean var3 = false;
+
+        int var4;
+        while((var4 = var0.read(var2)) != -1) {
+            var1.write(var2, 0, var4);
+        }
+
+        var0.close();
+        return var1.toByteArray();
+    }
+
+    public Integer a(Sheet var1, Integer var2, float var3) {
+        int var4 = 0;
+        Double var5 = 0.0D;
+
+        for(Iterator var6 = var1.iterator(); var6.hasNext(); ++var4) {
+            Row var7 = (Row)var6.next();
+            if (var2 <= var4) {
+                var5 = var5 + (double)var7.getHeightInPoints();
+            }
+
+            if (var5 != 0.0D && (double)var3 - var5 <= 10.0D && var4 > 0) {
+                return var4;
+            }
+
+            if (var5 >= (double)var3 && var4 > 0) {
+                return var4;
+            }
+        }
+
+        return 0;
+    }
+
+    public Integer a(Sheet var1, Integer var2, Integer var3, float var4) {
+        float var5 = 0.0F;
+        Row var6 = var1.getRow(var2);
+        Iterator var7 = var6.iterator();
+
+        while(var7.hasNext()) {
+            Cell var8 = (Cell)var7.next();
+            if (var8.getColumnIndex() >= var3) {
+                float var9 = var1.getColumnWidthInPixels(var8.getColumnIndex());
+                var5 += var9;
+                if (var5 >= var4) {
+                    return var8.getColumnIndex();
+                }
+
+                float var10 = var4 - var5;
+                if (var10 < 30.0F) {
+                    return var8.getColumnIndex();
+                }
+            }
+        }
+
+        return 0;
+    }
+
+    public String a(JSONObject var1, Map var2, String var3) throws Exception {
+        String var4 = var1.getString("style");
+        JSONObject var5 = (JSONObject)var2.get(var4);
+        if (null != var5 && var4 != null && !"null".equals(var4)) {
+            Object var6 = var5.get("format");
+            if (null != var6) {
+                SimpleDateFormat var7 = ExcelUtil.getFormat(var6.toString());
+                if (null != var7 && oConvertUtils.isNotEmpty(var3)) {
+                    SimpleDateFormat var8 = ExcelUtil.getDataFormat(var3);
+                    if (null != var8) {
+                        Date var9 = var8.parse(var3);
+
+                        try {
+                            String var10 = var7.format(var9);
+                            a.info("日期格式化之后的文本:" + var10);
+                            return var10;
+                        } catch (Exception var11) {
+                            a.info("日期格式不正确:" + var11.getMessage());
+                        }
+                    } else {
+                        String var12 = d.a(var3, var7);
+                        if (oConvertUtils.isNotEmpty(var12)) {
+                            return var12;
+                        }
+                    }
+                }
+            }
+        }
+
+        return "";
+    }
+
+    private void a(Workbook var1, Sheet var2, Map<String, String> var3, Map<String, String> var4, Map<String, JSONObject> var5, Map<String, List<String>> var6) {
+        Set var7 = var6.keySet();
+        Iterator var8 = var7.iterator();
+
+        while(true) {
+            String var11;
+            String var12;
+            Cell var13;
+            String var14;
+            String var15;
+            String var16;
+            JSONObject var17;
+            Row var18;
+            int var19;
+            int var20;
+            do {
+                do {
+                    if (!var8.hasNext()) {
+                        return;
+                    }
+
+                    String var9 = (String)var8.next();
+                    List var10 = (List)var6.get(var9);
+                    var11 = (String)var10.get(0);
+                    var12 = (String)var10.get(1);
+                    var13 = var2.getRow(Integer.parseInt(var11)).getCell(Integer.parseInt(var12));
+                    var14 = ExcelUtil.getCellValueByCell(var13);
+                } while(!var14.contains("|"));
+
+                var15 = (String)var3.get(var13.getRowIndex() + "," + var13.getColumnIndex());
+                var16 = (String)var4.get(var13.getRowIndex() + "," + var13.getColumnIndex());
+                var17 = (JSONObject)var5.get(var13.getRowIndex() + "," + var13.getColumnIndex());
+                var18 = var2.getRow(Integer.parseInt(var11));
+                var19 = (int)var13.getSheet().getColumnWidthInPixels(var13.getColumnIndex());
+                var20 = (int)var18.getHeightInPoints();
+            } while(!oConvertUtils.isNotEmpty(var15));
+
+            int var21 = 0;
+            int var22 = 0;
+            int var23 = Integer.parseInt(var11);
+            int var24 = Integer.parseInt(var12);
+            if (oConvertUtils.isNotEmpty(var16)) {
+                String[] var25 = var16.split(",");
+                int var26 = Integer.parseInt(var25[0]);
+                int var27 = Integer.parseInt(var25[1]);
+                var23 = var26;
+                var24 = var27;
+
+                int var28;
+                for(var28 = var18.getRowNum() + 1; var28 < var26 + 1; ++var28) {
+                    Row var29 = var2.getRow(var28);
+                    if (var29 != null) {
+                        var22 += (int)var2.getRow(var28).getHeightInPoints();
+                    }
+                }
+
+                for(var28 = var13.getColumnIndex() + 1; var28 < var27 + 1; ++var28) {
+                    var21 += (int)var2.getColumnWidthInPixels(var28);
+                }
+            }
+
+            var19 += var21;
+            var20 += var22;
+            var13.setCellValue("");
+            if (var2 instanceof SXSSFSheet) {
+                try {
+                    byte[] var32 = ExcelUtil.getImage(var14, var15, var19, var20, var17);
+                    Drawing var33 = var2.createDrawingPatriarch();
+                    XSSFClientAnchor var34 = new XSSFClientAnchor(12700, 12700, -12700, -12700, Integer.parseInt(var12), Integer.parseInt(var11), var24 + 1, var23 + 1);
+                    var34.setAnchorType(AnchorType.MOVE_AND_RESIZE);
+                    var33.createPicture(var34, var1.addPicture(var32, 5));
+                } catch (IOException var31) {
+                    var31.printStackTrace();
+                }
+            }
+
+            if (var2 instanceof XSSFSheet) {
+                try {
+                    a(var14, var1, var2, var19, var20, var15, Integer.parseInt(var11), Integer.parseInt(var12), var23 + 1, var24 + 1, var17);
+                } catch (Exception var30) {
+                    var30.printStackTrace();
+                }
+            }
+        }
+    }
+
+    public static void a(String var0, Workbook var1, Sheet var2, int var3, int var4, String var5, int var6, int var7, int var8, int var9, JSONObject var10) {
+        String[] var11 = var0.split("\\|");
+        int var12 = var11.length;
+        Cell var13 = var2.getRow(var6).getCell(var7);
+        CellStyle var14 = var13.getCellStyle();
+        var14.setWrapText(true);
+        Font var15 = var1.getFontAt(var14.getFontIndex());
+        var15.setFontName("Microsoft YaHei");
+        var15.setFontHeightInPoints((short)10);
+        CreationHelper var16 = var1.getCreationHelper();
+        String var17 = "";
+        if (null != var10 && var10.containsKey("color")) {
+            var17 = var10.getString("color");
+        }
+
+        String var18;
+        if (var5.equals("lefttop")) {
+            var18 = a(var11, var3, var4);
+            var13.setCellValue(var18);
+            Drawing var19 = var2.createDrawingPatriarch();
+            if (var11.length == 2) {
+                ExcelUtil.paintLine(var19, var19.createAnchor(0, 0, 0, 0, var7, var6, var9, var8), var5, var17);
+            } else if (var11.length == 3) {
+                ExcelUtil.paintLine(var19, var19.createAnchor(0, 0, 0, -((int)((double)var4 / 2.5D)) * 12700, var7, var6, var9, var8), var5, var17);
+                ExcelUtil.paintLine(var19, var19.createAnchor(0, 0, -var3 / 4 * 12700, 0, var7, var6, var9, var8), var5, var17);
+            }
+        } else {
+            var18 = b(var11, var3, var4);
+            var13.setCellValue(var18);
+            a(var2, var16, var7, var6, var9, var8, var4, var3, var12 - 1, var5, var17);
+        }
+
+        var14.setFont(var15);
+        var13.setCellStyle(var14);
+    }
+
+    public static String a(String[] var0, int var1, int var2) {
+        int var3 = var0.length;
+        if (var3 < 1 && var3 > 3) {
+            return "";
+        } else {
+            int var4 = var1 / 4;
+            if (var3 == 2) {
+                var4 -= var0[1].length();
+                if (var1 < 150) {
+                    var4 -= var0[1].length() * 3;
+                }
+            } else {
+                if (var1 < 186) {
+                    var4 -= var0[2].length();
+                }
+
+                if (var1 < 160) {
+                    if (var0[2].length() == 2) {
+                        var4 -= var0[2].length() * 2;
+                    } else if (var0[2].length() > 2) {
+                        var4 -= var0[2].length();
+                    }
+                }
+
+                var4 -= var0[2].length();
+                if (var0[2].length() > 3) {
+                    var4 -= var0[2].length();
+                }
+            }
+
+            String var5 = "";
+
+            int var6;
+            for(var6 = 0; var6 < var4; ++var6) {
+                var5 = var5 + " ";
+            }
+
+            var6 = var2 / 20;
+            if (var3 == 2) {
+                var5 = var5 + var0[1];
+            } else {
+                var5 = var5 + var0[2];
+            }
+
+            int var7;
+            for(var7 = 0; var7 < var6; ++var7) {
+                var5 = var5 + "\n";
+            }
+
+            if (var3 == 2) {
+                var5 = var5 + var0[0];
+            }
+
+            if (var3 == 3) {
+                var5 = var5 + var0[0];
+                var7 = var1 / 4;
+                if (var1 < 270) {
+                    var7 = var7 - var0[0].length() * 2 - var0[1].length() * 2;
+                }
+
+                if (var1 < 160) {
+                    var7 = var7 - var0[0].length() - var0[1].length();
+                }
+
+                var7 = var7 - var0[0].length() - var0[1].length();
+                if (var0[0].length() > 3) {
+                    var7 -= var0[0].length();
+                }
+
+                if (var0[1].length() > 3) {
+                    if (var1 > 270) {
+                        var7 -= var0[1].length() * 2;
+                    } else {
+                        var7 -= var0[1].length();
+                    }
+                }
+
+                String var8 = "";
+
+                for(int var9 = 0; var9 < var7; ++var9) {
+                    var8 = var8 + " ";
+                }
+
+                var5 = var5 + var8 + var0[1];
+            }
+
+            return var5;
+        }
+    }
+
+    public static String b(String[] var0, int var1, int var2) {
+        int var3 = var0.length;
+        if (var3 < 1 && var3 > 3) {
+            return "";
+        } else {
+            int var4 = var1 / 4;
+            if (var3 == 2) {
+                var4 -= var0[1].length();
+                if (var1 < 240) {
+                    if (var0[1].length() > 3) {
+                        var4 -= var0[1].length();
+                    }
+
+                    var4 -= var0[1].length();
+                }
+            } else {
+                if (var1 < 240) {
+                    if (var0[2].length() > 3) {
+                        var4 -= var0[2].length();
+                    }
+
+                    var4 -= var0[2].length();
+                }
+
+                var4 -= var0[2].length();
+            }
+
+            String var5 = "";
+            int var6 = var2 / 20;
+            var5 = var5 + var0[0];
+            int var7;
+            if (var3 == 2) {
+                for(var7 = 0; var7 < var6; ++var7) {
+                    var5 = var5 + "\n";
+                }
+
+                for(var7 = 0; var7 < var4; ++var7) {
+                    var5 = var5 + " ";
+                }
+
+                var5 = var5 + var0[1];
+            }
+
+            if (var3 == 3) {
+                var7 = var1 / 4;
+                var7 = var7 - var0[0].length() * 2 - var0[1].length() * 2;
+                if (var1 < 150) {
+                    var7 = var7 - var0[0].length() * 2 - var0[1].length() * 2;
+                }
+
+                if (var0[1].length() > 2) {
+                    if (var1 < 260) {
+                        var7 -= var0[1].length();
+                    }
+
+                    var7 -= var0[1].length();
+                }
+
+                if (var0[0].length() > 3) {
+                    var7 -= var0[0].length();
+                }
+
+                String var8 = " ";
+
+                int var9;
+                for(var9 = 0; var9 < var7; ++var9) {
+                    var8 = var8 + " ";
+                }
+
+                var5 = var5 + var8 + var0[1];
+
+                for(var9 = 0; var9 < var6; ++var9) {
+                    var5 = var5 + "\n";
+                }
+
+                for(var9 = 0; var9 < var7; ++var9) {
+                    var5 = var5 + " ";
+                }
+
+                var5 = var5 + var0[2];
+            }
+
+            return var5;
+        }
+    }
+
+    public static void a(Sheet var0, CreationHelper var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, String var9, String var10) {
+        Drawing var11;
+        ClientAnchor var12;
+        if (var8 == 1) {
+            var11 = var0.createDrawingPatriarch();
+            var12 = var1.createClientAnchor();
+            var12.setCol1(var2);
+            var12.setRow1(var3);
+            var12.setCol2(var4);
+            var12.setRow2(var5);
+            ExcelUtil.paintLine(var11, var12, var9, var10);
+        } else if (var8 == 2) {
+            var11 = var0.createDrawingPatriarch();
+            var12 = var1.createClientAnchor();
+            var12.setCol1(var2);
+            var12.setRow1(var3);
+            var12.setCol2(var4);
+            var12.setRow2(var5);
+            var12.setDx2(-var7 / 4 * 12700);
+            ExcelUtil.paintLine(var11, var12, var9, var10);
+            ClientAnchor var13 = var1.createClientAnchor();
+            Drawing var14 = var0.createDrawingPatriarch();
+            var13.setCol1(var2);
+            var13.setRow1(var3);
+            var13.setCol2(var4);
+            var13.setRow2(var5);
+            var13.setDy1((int)((double)var6 / 2.5D) * 12700);
+            ExcelUtil.paintLine(var14, var13, var9, var10);
+        }
+
+    }
+
+    private void a(Sheet var1, SXSSFWorkbook var2, List<Map<String, Object>> var3, Map<String, String> var4, Map<String, Object> var5) {
+        Drawing var6 = var1.createDrawingPatriarch();
+
+        for(int var7 = 0; var7 < var3.size(); ++var7) {
+            Map var8 = (Map)var3.get(var7);
+            boolean var9 = false;
+            boolean var10 = false;
+            int var23 = Integer.valueOf(var8.get("cell").toString());
+            int var22 = Integer.valueOf(var8.get("row").toString());
+            String var11 = var8.get("text").toString();
+            String var12 = var8.get("display").toString();
+            Map var13 = this.a(var1, var4, var22, var23);
+            Integer var14 = (Integer)var13.get("width");
+            Integer var15 = (Integer)var13.get("height");
+            Object var16 = null;
+            String var17 = (String)var8.get("layer_id");
+            Object var18 = var5.get(var17);
+            if (null != var18) {
+                String[] var19 = String.valueOf(var18).split(",");
+                var22 = Integer.parseInt(var19[0]);
+                var23 = Integer.parseInt(var19[1]);
+            }
+
+            byte[] var24;
+            if ("img".equals(var12)) {
+                var24 = this.a(var11);
+            } else {
+                var24 = GoogleBarCodeUtils.createCodeToFile(var11, var12, var14, var15);
+            }
+
+            String var25 = (String)var4.get(var22 + "," + var23);
+            if (oConvertUtils.isNotEmpty(var25)) {
+                String[] var20 = var25.split(",");
+                XSSFClientAnchor var21 = new XSSFClientAnchor(0, 0, var14, var15, var23, var22, Integer.parseInt(var20[1]) + 1, Integer.parseInt(var20[0]) + 1);
+                var6.createPicture(var21, var2.addPicture(var24, 5));
+            } else {
+                XSSFClientAnchor var26 = new XSSFClientAnchor(0, 0, var14, var15, var23, var22, var23 + 1, var22 + 1);
+                var6.createPicture(var26, var2.addPicture(var24, 5));
+            }
+        }
+
+    }
+
+    public byte[] a(String var1) {
+        URL var2 = null;
+        Object var3 = null;
+        byte[] var7;
+        if (var1.contains("http")) {
+            try {
+                var2 = new URL(var1);
+                if (var1.contains("https")) {
+                    var7 = b.a(var1);
+                    return var7;
+                } else {
+                    HttpURLConnection var4 = null;
+                    var4 = (HttpURLConnection)var2.openConnection();
+                    var4.setRequestMethod("GET");
+                    var4.setConnectTimeout(50000);
+                    InputStream var5 = var4.getInputStream();
+                    var7 = a(var5);
+                    return var7;
+                }
+            } catch (Exception var6) {
+                var6.printStackTrace();
+                return null;
+            }
+        } else {
+            var7 = this.c(var1);
+            return var7;
+        }
+    }
+
+    public Map<String, Integer> a(Sheet var1, Map<String, String> var2, Integer var3, Integer var4) {
+        HashMap var5 = new HashMap();
+        String var6 = (String)var2.get(var3 + "," + var4);
+        Row var7 = var1.getRow(var3);
+        Cell var8 = var7.getCell(var4);
+        var8.setCellValue("");
+        int var9 = (int)var8.getSheet().getColumnWidthInPixels(var8.getColumnIndex());
+        int var10 = (int)var7.getHeightInPoints();
+        int var11 = 0;
+        int var12 = 0;
+        int var13 = var3;
+        int var14 = var4;
+        if (oConvertUtils.isNotEmpty(var6)) {
+            String[] var15 = var6.split(",");
+            int var16 = Integer.parseInt(var15[0]);
+            int var17 = Integer.parseInt(var15[1]);
+
+            int var18;
+            for(var18 = var7.getRowNum() + 1; var18 < var16 + 1; ++var18) {
+                Row var19 = var1.getRow(var18);
+                if (var19 != null) {
+                    var12 += (int)var1.getRow(var18).getHeightInPoints();
+                }
+            }
+
+            for(var18 = var8.getColumnIndex() + 1; var18 < var17 + 1; ++var18) {
+                var11 += (int)var1.getColumnWidthInPixels(var18);
+            }
+        }
+
+        var9 += var11;
+        var10 += var12;
+        var5.put("width", var9);
+        var5.put("height", var10);
+        return var5;
+    }
+
+    public XSSFColor b(String var1) {
+        XSSFColor var2 = new XSSFColor();
+        if (var1.contains("rgb")) {
+            var1 = var1.replace("rgb", "").replace("(", "").replace(")", "");
+            String[] var3 = var1.split(",");
+            if (var3.length == 3) {
+                byte[] var4 = new byte[]{(byte)Integer.parseInt(var3[0]), (byte)Integer.parseInt(var3[1]), (byte)Integer.parseInt(var3[2])};
+                var2.setRGB(var4);
+            }
+        } else if (var1.contains("#") && var1.length() > 6) {
+            byte[] var5 = new byte[]{(byte)Integer.parseInt(var1.substring(1, 3), 16), (byte)Integer.parseInt(var1.substring(3, 5), 16), (byte)Integer.parseInt(var1.substring(5, 7), 16)};
+            var2.setRGB(var5);
+        }
+
+        return var2;
+    }
+}

+ 350 - 0
boman-report/src/main/java/org/jeecg/modules/jmreport/desreport/render/a/a/b.java

@@ -0,0 +1,350 @@
+//package org.jeecg.modules.jmreport.desreport.render.a.a;
+//
+//import com.alibaba.fastjson.JSONArray;
+//import com.alibaba.fastjson.JSONObject;
+//import com.alibaba.fastjson.parser.Feature;
+//import java.util.HashMap;
+//import java.util.Iterator;
+//import java.util.LinkedHashMap;
+//import java.util.List;
+//import java.util.Map;
+//import java.util.Map.Entry;
+//import org.jeecg.modules.jmreport.common.constant.ExpConstant;
+//import org.jeecg.modules.jmreport.common.util.oConvertUtils;
+//import org.jeecg.modules.jmreport.common.vo.Result;
+//import org.jeecg.modules.jmreport.desreport.entity.JimuReport;
+//import org.jeecg.modules.jmreport.desreport.model.RenderInfo;
+//import org.jeecg.modules.jmreport.desreport.model.ReportDbInfo;
+//import org.jeecg.modules.jmreport.desreport.render.handler.CellsRenderHandler;
+//import org.jeecg.modules.jmreport.desreport.render.handler.RowRenderHandler;
+//import org.jeecg.modules.jmreport.desreport.render.handler.RowsRenderHandler;
+//import org.jeecg.modules.jmreport.desreport.render.utils.FreeMarkerUtils;
+//import org.jeecg.modules.jmreport.desreport.render.utils.RegexMatches;
+//import org.jeecg.modules.jmreport.desreport.render.utils.RenderUtil;
+//import org.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+//import org.springframework.context.annotation.Primary;
+//import org.springframework.stereotype.Component;
+//
+//@Component
+//@Primary
+//public class b extends a {
+//    private static final Logger k = LoggerFactory.getLogger(b.class);
+//
+//    public b() {
+//    }
+//
+//    public boolean support(RenderInfo renderInfo) {
+//        return this.a((Class)b.class, (RenderInfo)renderInfo);
+//    }
+//
+//    public Result<JimuReport> render(RenderInfo renderInfo) {
+//        this.a();
+//        JSONObject var2 = this.a(renderInfo, this.h);
+//        JSONObject var3 = this.b(renderInfo, var2);
+//        if (oConvertUtils.isNotEmpty(this.e)) {
+//            this.a(var3, this.e);
+//        }
+//
+//        if (oConvertUtils.isNotEmpty(this.f)) {
+//            this.a(var3, this.f);
+//        }
+//
+//        if (oConvertUtils.isNotEmpty(this.g)) {
+//            this.a(var3, this.g);
+//        }
+//
+//        var3.put("len", var3.size() + 20);
+//        this.c.put("rows", var3);
+//        this.c.put("merges", renderInfo.getMerges());
+//        this.i.put("len", renderInfo.getLen());
+//        if (oConvertUtils.isNotEmpty(renderInfo.getNewCols())) {
+//            this.i.putAll(renderInfo.getNewCols());
+//        }
+//
+//        this.a.setJsonStr(this.c.toString());
+//        return Result.OK(this.a);
+//    }
+//
+//    private void a(JSONObject var1, JSONArray var2) {
+//        Iterator var3 = var2.iterator();
+//
+//        while(true) {
+//            Integer var7;
+//            Integer var8;
+//            String var9;
+//            JSONObject var10;
+//            do {
+//                Integer var6;
+//                do {
+//                    if (!var3.hasNext()) {
+//                        return;
+//                    }
+//
+//                    Object var4 = var3.next();
+//                    JSONObject var5 = (JSONObject)var4;
+//                    var6 = var5.getInteger("row");
+//                    var7 = var5.getInteger("col");
+//                    var8 = oConvertUtils.getInt(var5.getInteger("colspan"), 0);
+//                    var9 = var5.getString("layer_id");
+//                } while(var7 < this.j);
+//
+//                var10 = var1.getJSONObject(var6.toString());
+//            } while(!oConvertUtils.isNotEmpty(var10));
+//
+//            JSONObject var11 = var10.getJSONObject("cells");
+//            Integer var12 = var8 - 1 >= 0 ? var8 - 1 : var8;
+//
+//            for(int var13 = var7; var13 <= var7 + var12; ++var13) {
+//                JSONObject var14 = new JSONObject();
+//                var14.put("text", "");
+//                var14.put("virtual", var9);
+//                var11.put(var13 + "", var14);
+//            }
+//        }
+//    }
+//
+//    private void a() {
+//        LinkedHashMap var1 = new LinkedHashMap(5);
+//        LinkedHashMap var2 = new LinkedHashMap();
+//        Iterator var3 = this.b.entrySet().iterator();
+//
+//        Object var6;
+//        Object var7;
+//        while(var3.hasNext()) {
+//            Entry var4 = (Entry)var3.next();
+//            String var5 = (String)var4.getKey();
+//            var6 = this.b.get(var5);
+//            var7 = this.b.get("expData");
+//            if (oConvertUtils.isNotEmpty(var7)) {
+//                Map var8 = (Map)var7;
+//                var2.putAll(var8);
+//            }
+//
+//            if (var6 instanceof ReportDbInfo) {
+//                ReportDbInfo var14 = (ReportDbInfo)var6;
+//                List var9 = var14.getList();
+//                if (oConvertUtils.isNotEmpty(var9)) {
+//                    var1.put(var5, var9.get(0));
+//                } else {
+//                    var1.put(var5, new Object());
+//                }
+//            } else {
+//                var1.put(var5, var4.getValue());
+//            }
+//        }
+//
+//        String var10 = this.h.toString();
+//        if (oConvertUtils.isNotEmpty(var2)) {
+//            Iterator var11 = var2.entrySet().iterator();
+//
+//            while(var11.hasNext()) {
+//                Entry var13 = (Entry)var11.next();
+//                var6 = var13.getKey();
+//                var7 = var13.getValue();
+//                if (oConvertUtils.isNotEmpty(var7)) {
+//                    var10 = var10.replace(var6.toString(), var7.toString());
+//                } else {
+//                    var10 = var10.replace(var6.toString(), "");
+//                }
+//            }
+//        }
+//
+//        var10 = var10.replaceAll("#\\{", "☯{");
+//        String var12 = FreeMarkerUtils.a(var10, var1);
+//        var12 = var12.replaceAll("☯\\{", "\\${");
+//        var12 = var12.replace("\"{\"", "{\"").replace("\"}\"", "\"}");
+//        this.h = JSONObject.parseObject(var12, new Feature[]{Feature.OrderedField});
+//    }
+//
+//    private JSONObject b(RenderInfo var1, JSONObject var2) {
+//        JSONObject var3 = new JSONObject(true);
+//        Integer var4 = 0;
+//        Integer var5 = 0;
+//        Integer var6 = 0;
+//        Object var7 = new HashMap(5);
+//        Boolean var8 = true;
+//        Integer var9 = 0;
+//        Iterator var10 = var2.entrySet().iterator();
+//
+//        while(true) {
+//            JSONObject var13;
+//            Object var14;
+//            do {
+//                do {
+//                    Entry var11;
+//                    Object var12;
+//                    do {
+//                        if (!var10.hasNext()) {
+//                            return var3;
+//                        }
+//
+//                        var11 = (Entry)var10.next();
+//                        var12 = var11.getValue();
+//                    } while(!(var12 instanceof JSONObject));
+//
+//                    var13 = (JSONObject)var12;
+//                    var14 = var11.getKey();
+//                } while(oConvertUtils.isEmpty(var14));
+//            } while("-1".equals(var14));
+//
+//            var6 = Integer.parseInt(var14.toString());
+//            JSONObject var15 = var13.getJSONObject("cells");
+//            if (var15 instanceof JSONObject) {
+//                Iterator var16 = var15.entrySet().iterator();
+//
+//                while(var16.hasNext()) {
+//                    Entry var17 = (Entry)var16.next();
+//                    Object var18 = var17.getValue();
+//                    if (var18 instanceof JSONObject) {
+//                        String var19 = var17.getKey().toString();
+//                        JSONObject var20 = (JSONObject)var18;
+//                        String var21 = var20.getString("text");
+//                        if (oConvertUtils.isNotEmpty(var21)) {
+//                            Map var22 = this.a(var1, var13, var6, var15, var19, var20, var21, (Map)var7);
+//                            if (oConvertUtils.isNotEmpty(var22)) {
+//                                var7 = var22;
+//                            }
+//                        }
+//
+//                        String var27 = var20.getString("virtual");
+//                        if (oConvertUtils.isNotEmpty(var27) && Integer.parseInt(var19) >= this.j) {
+//                            var20.remove("virtual");
+//                        }
+//
+//                        var15.putIfAbsent(var19, var20);
+//                    }
+//                }
+//
+//                var13.put("cells", var15);
+//            }
+//
+//            if (var5 == 0) {
+//                var5 = var6;
+//            }
+//
+//            Boolean var23 = false;
+//            JSONObject var24 = this.a(var1, var2, var13, var6, var5, var8);
+//            if (oConvertUtils.isNotEmpty(var24) && var24.size() > 0) {
+//                var3.putAll(var24);
+//                var23 = true;
+//                var4 = var6;
+//                var5 = var5 + var24.size();
+//                var8 = false;
+//            }
+//
+//            if (!var23) {
+//                if (var4 > 0) {
+//                    var4 = 0;
+//                }
+//
+//                if (var9 > 0) {
+//                    Integer var25 = var6 - var9;
+//                    if (var25 > 1) {
+//                        var5 = var5 + (var25 - 2);
+//                    }
+//                }
+//
+//                if (var5 < var6) {
+//                    var5 = var6;
+//                }
+//
+//                var13 = RenderUtil.a(var13, (var1x, var2x) -> {
+//                    List var31 = RegexMatches.f(var2x);
+//                    if (oConvertUtils.isNotEmpty(var31) && var31.size() == 3) {
+//                        var2x = var2x.replace((CharSequence)var31.get(0), (String)var31.get(0) + ":" + (String)var31.get(1) + var5.toString());
+//                    }
+//
+//                    return var2x;
+//                }, ExpConstant.FUNCTION);
+//                if (oConvertUtils.isNotEmpty(var13)) {
+//                    JSONObject var26 = var13.getJSONObject("cells");
+//                    if (oConvertUtils.isNotEmpty(var26)) {
+//                        var3.put(var5.toString(), var13);
+//                    }
+//                }
+//
+//                var9 = var6;
+//                var5 = var5 + 1;
+//                if (var6 > var5) {
+//                    var5 = var6;
+//                }
+//            }
+//        }
+//    }
+//
+//    public JSONObject a(RenderInfo var1, JSONObject var2, JSONObject var3, Integer var4, Integer var5, Boolean var6) {
+//        if (oConvertUtils.isNotEmpty(this.rowRenderHandlerMap)) {
+//            Iterator var7 = this.rowRenderHandlerMap.values().iterator();
+//
+//            while(var7.hasNext()) {
+//                RowRenderHandler var8 = (RowRenderHandler)var7.next();
+//                if (var8.support(var3)) {
+//                    if (var6) {
+//                        var8.beforeRenderRows(var1, var2);
+//                    }
+//
+//                    JSONObject var9 = var8.beforeRenderRow(var1, var2, var3, var4);
+//                    if (oConvertUtils.isNotEmpty(var9)) {
+//                        var3 = var9;
+//                    }
+//
+//                    JSONObject var10 = var8.render(var1, var2, var3, var4, var5);
+//                    if (null == var10 || var10.size() == 0) {
+//                        JSONObject var11 = var3.getJSONObject("cells");
+//                        if (null != var11 && var11.size() > 0) {
+//                            Iterator var12 = var11.entrySet().iterator();
+//
+//                            while(var12.hasNext()) {
+//                                Entry var13 = (Entry)var12.next();
+//                                String var14 = var13.getKey().toString();
+//                                JSONObject var15 = (JSONObject)var13.getValue();
+//                                if (oConvertUtils.isNotEmpty(var15)) {
+//                                    String var16 = var15.getString("text");
+//                                    if (oConvertUtils.isNotEmpty(var16) && var16.indexOf("${") != -1) {
+//                                        var15.put("text", "");
+//                                    }
+//                                }
+//                            }
+//                        }
+//                    }
+//
+//                    return var10;
+//                }
+//            }
+//        }
+//
+//        return null;
+//    }
+//
+//    public Map a(RenderInfo var1, JSONObject var2, Integer var3, JSONObject var4, String var5, JSONObject var6, String var7, Map var8) {
+//        if (oConvertUtils.isNotEmpty(this.cellsRenderHandlerMap)) {
+//            Iterator var9 = this.cellsRenderHandlerMap.values().iterator();
+//
+//            while(var9.hasNext()) {
+//                CellsRenderHandler var10 = (CellsRenderHandler)var9.next();
+//                if (var10.support(var6, var7)) {
+//                    var10.beforeRender(var1, var6, var7);
+//                    return var10.render(var1, var2, var3, var4, var6, var5, var7, var8);
+//                }
+//            }
+//        }
+//
+//        return null;
+//    }
+//
+//    public JSONObject a(RenderInfo var1, JSONObject var2) {
+//        if (oConvertUtils.isNotEmpty(this.rowsRenderHandlerMap)) {
+//            Iterator var3 = this.rowsRenderHandlerMap.values().iterator();
+//
+//            while(var3.hasNext()) {
+//                RowsRenderHandler var4 = (RowsRenderHandler)var3.next();
+//                if (var4.support(var1, var2)) {
+//                    return var4.render(var1, var2);
+//                }
+//            }
+//        }
+//
+//        return var2;
+//    }
+//}

+ 17 - 0
boman-report/src/main/java/org/jeecg/modules/jmreport/desreport/service/IJmReportExportExcel.java

@@ -0,0 +1,17 @@
+//package org.jeecg.modules.jmreport.desreport.service;
+//
+//import com.alibaba.fastjson.JSONObject;
+//
+//import java.util.List;
+//import java.util.Map;
+//
+///**
+// * @author shiqian
+// * @date 2021年08月19日 11:42
+// **/
+//public interface IJmReportExportExcel {
+//
+//    Map<String, Object> exportExcel(String var1, JSONObject var2, List var3);
+//
+//    Map<String, Object> exportEmptyExcel(String var1, JSONObject var2, List var3);
+//}

+ 2616 - 0
boman-report/src/main/java/org/jeecg/modules/jmreport/desreport/service/a/e.java

@@ -0,0 +1,2616 @@
+//package org.jeecg.modules.jmreport.desreport.service.a;
+//
+//import com.alibaba.druid.support.json.JSONUtils;
+//import com.alibaba.fastjson.JSON;
+//import com.alibaba.fastjson.JSONArray;
+//import com.alibaba.fastjson.JSONObject;
+//import com.alibaba.fastjson.parser.Feature;
+//import org.apache.commons.lang3.StringUtils;
+//import org.apache.poi.hssf.usermodel.HSSFCell;
+//import org.apache.poi.hssf.usermodel.HSSFCellStyle;
+//import org.apache.poi.hssf.usermodel.HSSFFont;
+//import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+//import org.apache.poi.hssf.util.HSSFColor;
+//import org.apache.poi.ss.usermodel.*;
+//import org.apache.poi.ss.util.CellRangeAddress;
+//import org.apache.poi.xssf.usermodel.XSSFCell;
+//import org.apache.poi.xssf.usermodel.XSSFCellStyle;
+//import org.apache.poi.xssf.usermodel.XSSFColor;
+//import org.apache.poi.xssf.usermodel.XSSFFont;
+//import org.jeecg.modules.jmreport.api.data.IDataSetFactory;
+//import org.jeecg.modules.jmreport.common.constant.CommonConstant;
+//import org.jeecg.modules.jmreport.common.constant.JmConst;
+//import org.jeecg.modules.jmreport.common.expetion.JimuReportException;
+//import org.jeecg.modules.jmreport.common.util.CommonUtils;
+//import org.jeecg.modules.jmreport.common.util.ExcelUtil;
+//import org.jeecg.modules.jmreport.common.util.JimuSpringContextUtils;
+//import org.jeecg.modules.jmreport.common.util.oConvertUtils;
+//import org.jeecg.modules.jmreport.common.vo.JmDictModel;
+//import org.jeecg.modules.jmreport.common.vo.Result;
+//import org.jeecg.modules.jmreport.config.JmReportBaseConfig;
+//import org.jeecg.modules.jmreport.config.client.JmReportTokenClient;
+//import org.jeecg.modules.jmreport.desreport.dao.*;
+//import org.jeecg.modules.jmreport.desreport.entity.*;
+//import org.jeecg.modules.jmreport.desreport.model.*;
+//import org.jeecg.modules.jmreport.desreport.render.a.a.b;
+//import org.jeecg.modules.jmreport.desreport.render.handler.BaseRenderHandler;
+//import org.jeecg.modules.jmreport.desreport.render.handler.convert.ApiDataConvertAdapter;
+//import org.jeecg.modules.jmreport.desreport.render.utils.FreeMarkerUtils;
+//import org.jeecg.modules.jmreport.desreport.render.utils.RegexMatches;
+//import org.jeecg.modules.jmreport.desreport.render.utils.ReportUtil;
+//import org.jeecg.modules.jmreport.desreport.service.IJimuReportDictService;
+//import org.jeecg.modules.jmreport.desreport.service.IJimuReportService;
+//import org.jeecg.modules.jmreport.desreport.service.IJmReportDbFieldService;
+//import org.jeecg.modules.jmreport.desreport.util.c;
+//import org.jeecg.modules.jmreport.desreport.util.d;
+//import org.jeecg.modules.jmreport.dyndb.JmreportDataSourceCachePool;
+//import org.jeecg.modules.jmreport.dyndb.JmreportDynamicDbUtil;
+//import org.jeecg.modules.jmreport.dyndb.util.JmreportSqlUtils;
+//import org.jeecg.modules.jmreport.dyndb.vo.JmreportDynamicDataSourceVo;
+//import org.jeecgframework.minidao.pojo.MiniDaoPage;
+//import org.jeecgframework.minidao.util.MiniDaoUtil;
+//import org.jeecgframework.minidao.util.SnowflakeIdWorker;
+//import org.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+//import org.springframework.beans.BeanUtils;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.context.annotation.Primary;
+//import org.springframework.core.io.ClassPathResource;
+//import org.springframework.stereotype.Service;
+//import org.springframework.transaction.annotation.Transactional;
+//import org.springframework.util.FileCopyUtils;
+//import org.springframework.web.client.ResourceAccessException;
+//import org.springframework.web.multipart.MultipartFile;
+//
+//import javax.servlet.http.HttpServletRequest;
+//import java.io.IOException;
+//import java.io.InputStream;
+//import java.math.BigDecimal;
+//import java.text.SimpleDateFormat;
+//import java.util.*;
+//import java.util.Map.Entry;
+//import java.util.stream.Collectors;
+//
+//@Service
+//@Primary
+//public class e implements IJimuReportService {
+//    private static final Logger a = LoggerFactory.getLogger(e.class);
+//    @Autowired
+//    private JimuReportDbDao reportDbDao;
+//    @Autowired
+//    private JimuReportDataSourceDao jimuReportDataSourceDao;
+//    @Autowired
+//    private JimuReportDbParamDao dbParamDao;
+//    @Autowired
+//    private JimuReportDao reportDao;
+//    @Autowired
+//    private JimuReportDbFieldDao dbFieldDao;
+//    @Autowired
+//    private JmreportDynamicDbUtil jmreportDynamicDbUtil;
+//    @Autowired
+//    private IJimuReportDictService dictService;
+//    @Autowired
+//    private IJmReportDbFieldService jmReportDbFieldService;
+//    @Autowired
+//    private JmReportTokenClient jimuTokenClient;
+//    @Autowired
+//    private JimuReportLinkDao jimuReportLinkDao;
+//    @Autowired
+//    Map<String, BaseRenderHandler> renderHandlerMap;
+//    @Autowired(
+//            required = false
+//    )
+//    private ApiDataConvertAdapter apiDataConverAdapter;
+//    @Autowired
+//    private JmReportBaseConfig jmBaseConfig;
+//
+//    public e() {
+//    }
+//
+//    public Map<String, Object> getDataById(JimuReport report, JSONObject paramJson, boolean onlyPageData) {
+//        HashMap var4 = new HashMap();
+//        if (report == null) {
+//            return var4;
+//        } else {
+//            JSONObject var5 = new JSONObject();
+//            var5.putAll(paramJson);
+//            List var6 = this.reportDbDao.selectList(report.getId());
+//            if (var6 == null) {
+//                return var4;
+//            } else {
+//                String var7 = "";
+//                JSONObject var8 = JSONObject.parseObject(report.getJsonStr());
+//                JSONArray var9 = null;
+//                ArrayList var10 = new ArrayList();
+//                if (var8 != null) {
+//                    if (var8.containsKey("groupField") && var8.containsKey("isGroup")) {
+//                        var7 = var8.getString("groupField");
+//                    }
+//
+//                    var9 = var8.getJSONArray("dbexps");
+//                }
+//
+//                if (var9 != null && var9.size() > 0) {
+//                    for(int var11 = 0; var11 < var9.size(); ++var11) {
+//                        String var12 = var9.getString(var11);
+//                        JmExpression var13 = new JmExpression(var12);
+//                        var10.add(var13);
+//                    }
+//                }
+//
+//                String var45 = paramJson.getString("printAll");
+//                var6 = this.b(var6);
+//                HashMap var46 = new HashMap();
+//                JSONObject var47 = (JSONObject)paramJson.clone();
+//                Iterator var14 = var6.iterator();
+//
+//                while(true) {
+//                    JmReportDb var15;
+//                    do {
+//                        if (!var14.hasNext()) {
+//                            Map var48 = JmExpression.getExpMapByList(var10);
+//                            var4.put("expData", var48);
+//                            var4.put("replaceParams", var5);
+//                            return var4;
+//                        }
+//
+//                        var15 = (JmReportDb)var14.next();
+//                    } while(onlyPageData && !"1".equals(var15.getIsPage()));
+//
+//                    Object var16 = new ArrayList();
+//                    String var17 = var15.getDbCode();
+//                    JSONObject var18 = new JSONObject();
+//                    paramJson = (JSONObject)var47.clone();
+//                    this.a((JmReportDb)var15, (Map)var46, (JSONObject)paramJson);
+//                    this.a(paramJson, var17, var5, var15.getId());
+//                    ReportDbInfo var19;
+//                    if ("2".equals(var15.getDbType())) {
+//                        var19 = this.a((JmReportDb)var15, (JSONObject)paramJson, (List)var16);
+//                        var4.put(var17, var19);
+//                    }
+//
+//                    String var26;
+//                    ReportDbInfo var27;
+//                    String var49;
+//                    String var53;
+//                    String var62;
+//                    Object var64;
+//                    if ("0".equals(var15.getDbType())) {
+//                        var49 = this.getBaseSql(var15, paramJson);
+//                        String var20 = this.a(var15, paramJson);
+//                        this.a((JmReportDb)var15, (String)var49, (String)var20, (List)var10);
+//                        String var21 = null;
+//                        if (oConvertUtils.isNotEmpty(var7)) {
+//                            String[] var22 = var7.split(".");
+//                            if (var22.length == 2 && var17.equals(var22[0])) {
+//                                var21 = var22[1];
+//                            }
+//                        }
+//
+//                        var53 = this.b(var49, var20, var21);
+//                        a.info("------报表【" + var17 + "】,查询的sql: " + var53);
+//                        String var23 = var15.getDbSource();
+//                        Integer var24 = oConvertUtils.getInt(paramJson.get("pageSize"), 10);
+//                        Integer var25 = oConvertUtils.getInt(paramJson.get("pageNo"), 1);
+//                        if (oConvertUtils.isEmpty(var23) && this.jmBaseConfig.getSaas()) {
+//                            throw new JimuReportException("数据源不允许为空,请选择数据源!");
+//                        }
+//
+//                        var26 = d.f(var53);
+//                        List var28;
+//                        if (StringUtils.isNotBlank(var26)) {
+//                            var27 = new ReportDbInfo();
+//                            var28 = this.jmreportDynamicDbUtil.executeProcedure(var23, var26);
+//                            if (oConvertUtils.isNotEmpty(var28)) {
+//                                var28 = ReportUtil.a(var28);
+//                            }
+//
+//                            var27.setList(var28);
+//                            var4.put(var17, var27);
+//                        } else if (oConvertUtils.isNotEmpty(var23)) {
+//                            a.info("------数据源 dbSourceKey:【" + var23 + "】");
+//                            if (oConvertUtils.isNotEmpty(var45)) {
+//                                var27 = new ReportDbInfo();
+//                                var64 = new ArrayList();
+//
+//                                try {
+//                                    var64 = this.jmreportDynamicDbUtil.findList(var23, var53, new Object[0]);
+//                                } catch (Exception var44) {
+//                                    a.warn(var44.getMessage(), var44);
+//                                }
+//
+//                                if (oConvertUtils.isNotEmpty(var64)) {
+//                                    var64 = ReportUtil.a((List)var64);
+//                                }
+//
+//                                var27.setList((List)var64);
+//                                var4.put(var17, var27);
+//                            } else {
+//                                var62 = JmreportSqlUtils.getCountSql(var53);
+//                                new HashMap();
+//
+//                                Map var67;
+//                                try {
+//                                    var67 = (Map)this.jmreportDynamicDbUtil.findOne(var23, var62, new Object[0]);
+//                                } catch (Exception var43) {
+//                                    a.warn(var43.getMessage(), var43);
+//                                    throw new JimuReportException(var43.getMessage());
+//                                }
+//
+//                                int var29 = 1;
+//                                Object var30 = var67.get("total");
+//                                int var31 = 0;
+//                                if (var30 != null) {
+//                                    var31 = Integer.parseInt(var30.toString());
+//                                    double var32 = Double.parseDouble(var30.toString()) / (double)var24;
+//                                    var29 = (int)Math.ceil(var32);
+//                                }
+//
+//                                List var73 = null;
+//                                if ("1".equals(var15.getIsPage())) {
+//                                    JmreportDynamicDataSourceVo var33 = JmreportDataSourceCachePool.getCacheDynamicDataSourceModel(var23);
+//                                    String var34 = MiniDaoUtil.createPageSql(var33.getDbUrl(), var53, var25, var24);
+//
+//                                    try {
+//                                        var73 = this.jmreportDynamicDbUtil.findList(var23, var34, new Object[0]);
+//                                    } catch (Exception var42) {
+//                                        a.warn(var42.getMessage(), var42);
+//                                        throw new JimuReportException(var42.getMessage());
+//                                    }
+//                                } else {
+//                                    try {
+//                                        var73 = this.jmreportDynamicDbUtil.findList(var23, var53, new Object[0]);
+//                                    } catch (Exception var41) {
+//                                        a.warn(var41.getMessage(), var41);
+//                                        throw new JimuReportException(var41.getMessage());
+//                                    }
+//                                }
+//
+//                                ReportDbInfo var74 = new ReportDbInfo((long)var29, (long)var31, var15.getIsPage(), var15.getIsList(), var15.getDbType());
+//                                if (oConvertUtils.isNotEmpty(var73)) {
+//                                    var73 = ReportUtil.a(var73);
+//                                }
+//
+//                                var74.setList(var73);
+//                                var4.put(var17, var74);
+//                            }
+//                        } else if (oConvertUtils.isNotEmpty(var45)) {
+//                            var27 = new ReportDbInfo();
+//                            new ArrayList();
+//
+//                            try {
+//                                var28 = this.reportDbDao.selectListBySql(var53);
+//                            } catch (Exception var40) {
+//                                a.warn(var40.getMessage(), var40);
+//                                throw new JimuReportException(var40.getMessage());
+//                            }
+//
+//                            if (oConvertUtils.isNotEmpty(var28)) {
+//                                var28 = ReportUtil.a(var28);
+//                            }
+//
+//                            var27.setList(var28);
+//                            var4.put(var17, var27);
+//                        } else {
+//                            var62 = var15.getIsPage();
+//                            String var71 = var15.getIsList();
+//                            if ("0".equals(var62) || oConvertUtils.isEmpty(var62)) {
+//                                var25 = 1;
+//                            }
+//
+//                            ReportDbInfo var65 = null;
+//                            if ("1".equals(var62)) {
+//                                new MiniDaoPage();
+//
+//                                MiniDaoPage var66;
+//                                try {
+//                                    var66 = this.reportDbDao.selectPageBySql(var53, var25, var24);
+//                                } catch (Exception var39) {
+//                                    a.warn(var39.getMessage(), var39);
+//                                    throw new JimuReportException(var39.getMessage());
+//                                }
+//
+//                                var65 = new ReportDbInfo((long)var66.getPages(), (long)var66.getTotal(), var62, var71, var15.getDbType());
+//                                List var72 = var66.getResults();
+//                                if (oConvertUtils.isNotEmpty(var72)) {
+//                                    var72 = ReportUtil.a(var72);
+//                                }
+//
+//                                var65.setList(var72);
+//                            } else {
+//                                new ArrayList();
+//
+//                                List var68;
+//                                try {
+//                                    var68 = this.reportDbDao.selectListBySql(var53);
+//                                } catch (Exception var38) {
+//                                    a.warn(var38.getMessage(), var38);
+//                                    throw new JimuReportException(var38.getMessage());
+//                                }
+//
+//                                if (var68 != null) {
+//                                    var65 = new ReportDbInfo(1L, (long)var68.size(), var62, var71, var15.getDbType());
+//                                    if (oConvertUtils.isNotEmpty(var68)) {
+//                                        var68 = ReportUtil.a(var68);
+//                                    }
+//
+//                                    var65.setList(var68);
+//                                }
+//                            }
+//
+//                            var4.put(var17, var65);
+//                        }
+//
+//                        var27 = (ReportDbInfo)var4.get(var17);
+//                        var28 = var27.getList();
+//                        var16 = oConvertUtils.deepCopy(var28);
+//                        this.replaceDbCode(var15.getId(), var28);
+//                        var27.setList(var28);
+//                        var4.replace(var17, var27);
+//                    }
+//
+//                    List var50;
+//                    Iterator var56;
+//                    if ("1".equals(var15.getDbType())) {
+//                        var49 = var15.getApiUrl();
+//                        Iterator var52;
+//                        if (var49.contains("?")) {
+//                            var50 = this.dbParamDao.list(var15.getId());
+//                            if (d.a(var50)) {
+//                                var52 = var50.iterator();
+//
+//                                while(var52.hasNext()) {
+//                                    JmReportDbParam var55 = (JmReportDbParam)var52.next();
+//                                    var18.put(var55.getParamName(), var55.getParamValue());
+//                                }
+//                            }
+//                        }
+//
+//                        JSONObject var51 = new JSONObject();
+//                        var52 = paramJson.keySet().iterator();
+//
+//                        while(var52.hasNext()) {
+//                            var53 = (String)var52.next();
+//                            if (var53.contains(var17)) {
+//                                var53 = var53.replace(var17 + "__", "");
+//                            }
+//
+//                            if (var18.containsKey(var53)) {
+//                                var18.remove(var53);
+//                            }
+//                        }
+//
+//                        var53 = var15.getIsPage();
+//                        if ("0".equals(var53) || oConvertUtils.isEmpty(var53)) {
+//                            paramJson.put("pageNo", 1);
+//                            paramJson.put("pageSize", 10000);
+//                        }
+//
+//                        if ("1".equals(var53) && !paramJson.containsKey("pageSize")) {
+//                            paramJson.put("pageSize", 10);
+//                        }
+//
+//                        var51.putAll(paramJson);
+//                        var51.putAll(var18);
+//                        var56 = var51.keySet().iterator();
+//                        JSONObject var58 = new JSONObject();
+//
+//                        String var60;
+//                        while(var56.hasNext()) {
+//                            var60 = (String)var56.next();
+//                            var26 = var51.getString(var60);
+//                            if (oConvertUtils.isEmpty(var26)) {
+//                                var26 = "";
+//                            }
+//
+//                            if (var60.contains(var17)) {
+//                                var60 = var60.replace(var17 + "__", "");
+//                            }
+//
+//                            if (var49.indexOf(var60) > 0) {
+//                                var49 = var49.replace("'${" + var60 + "}'", var26);
+//                                var49 = var49.replace("${" + var60 + "}", var26);
+//                            } else {
+//                                var58.put(var60, var26);
+//                            }
+//                        }
+//
+//                        if (oConvertUtils.isNotEmpty(var45)) {
+//                            if (var49.contains("?")) {
+//                                var49 = var49 + "&printAll=true";
+//                            } else {
+//                                var49 = var49 + "?printAll=true";
+//                            }
+//                        }
+//
+//                        if (oConvertUtils.isNotEmpty(var7)) {
+//                            if (var49.contains("?")) {
+//                                var49 = var49 + "&groupField=" + var7;
+//                            } else {
+//                                var49 = var49 + "?groupField=" + var7;
+//                            }
+//                        }
+//
+//                        var15.setApiUrl(var49);
+//                        var60 = this.jimuTokenClient.getToken();
+//                        Object var63 = new HashMap();
+//
+//                        try {
+//                            var63 = this.a(var15, var60, var58);
+//                        } catch (ResourceAccessException var36) {
+//                            throw new JimuReportException("api连接超时,请重试!");
+//                        } catch (Exception var37) {
+//                            a.warn(var37.getMessage(), var37);
+//                        }
+//
+//                        var27 = new ReportDbInfo(var15.getIsPage(), var15.getIsList(), var15.getDbType());
+//                        var64 = ((Map)var63).get("dataList");
+//                        if (oConvertUtils.isNotEmpty(var64)) {
+//                            var27.setList((List)var64);
+//                        }
+//
+//                        if (oConvertUtils.isEmpty(var45)) {
+//                            Object var69 = ((Map)var63).get("linkList");
+//                            if (oConvertUtils.isNotEmpty(var69)) {
+//                                var27.setLinkList((List)var69);
+//                            }
+//
+//                            var27.setTotal(CommonUtils.getLong(((Map)var63).get("total"), 0L));
+//                            var27.setCount(CommonUtils.getLong(((Map)var63).get("count"), 0L));
+//                        }
+//
+//                        if (null != var27.getList()) {
+//                            List var70 = var27.getList();
+//                            var16 = oConvertUtils.deepCopy(var70);
+//                            this.replaceDbCode(var15.getId(), var70);
+//                            var27.setList(var70);
+//                        }
+//
+//                        var4.put(var17, var27);
+//                    }
+//
+//                    if ("3".equals(var15.getDbType())) {
+//                        var19 = this.a(var15, paramJson, var45, var17);
+//                        var16 = oConvertUtils.deepCopy(var19.getList());
+//                        var4.put(var17, var19);
+//                    }
+//
+//                    var19 = (ReportDbInfo)var4.get(var17);
+//                    var50 = var19.getList();
+//
+//                    for(int var54 = 0; var54 < var50.size(); ++var54) {
+//                        Map var57 = (Map)var50.get(var54);
+//                        var56 = var57.keySet().iterator();
+//
+//                        while(var56.hasNext()) {
+//                            String var59 = (String)var56.next();
+//                            Object var61 = var57.get(var59);
+//                            if (var61 != null) {
+//                                var26 = var61.toString();
+//                                if (var26.indexOf("\"") >= 0) {
+//                                    var62 = var26.replaceAll("\"", "\\\\\"");
+//                                    var57.put(var59, var62);
+//                                }
+//                            }
+//                        }
+//                    }
+//
+//                    this.a((JmReportDb)var15, (Map)var46, (List)var16);
+//                }
+//            }
+//        }
+//    }
+//
+//    public void a(JSONObject var1, String var2, JSONObject var3, String var4) {
+//        List var5 = this.dbFieldDao.listByDbIdNotNull(var4);
+//        Iterator var6 = var1.keySet().iterator();
+//
+//        label55:
+//        while(true) {
+//            String var7;
+//            String var8;
+//            Object var9;
+//            do {
+//                do {
+//                    if (!var6.hasNext()) {
+//                        return;
+//                    }
+//
+//                    var7 = (String)var6.next();
+//                    var8 = var2 + "__";
+//                } while(!var7.contains(var8));
+//
+//                var9 = var1.get(var7);
+//            } while(!oConvertUtils.isNotEmpty(var9));
+//
+//            String var10 = var7.replace(var8, "");
+//            String var11 = "";
+//            Iterator var12 = var5.iterator();
+//
+//            while(true) {
+//                List var14;
+//                do {
+//                    if (!var12.hasNext()) {
+//                        if (oConvertUtils.isNotEmpty(var11)) {
+//                            var3.put(var10, var11.substring(0, var11.lastIndexOf(",")));
+//                        } else {
+//                            var3.put(var10, var9);
+//                        }
+//                        continue label55;
+//                    }
+//
+//                    JmReportDbField var13 = (JmReportDbField)var12.next();
+//                    var14 = null;
+//                    if (var13.getDictCode().contains("http")) {
+//                        var14 = this.a(var13);
+//                    } else {
+//                        var14 = this.getDictListByCode(var13.getDictCode());
+//                    }
+//
+//                    new ArrayList();
+//                } while(null == var14);
+//
+//                String var16 = String.valueOf(var9);
+//                String[] var17 = var16.split(",");
+//                String[] var18 = var17;
+//                int var19 = var17.length;
+//
+//                for(int var20 = 0; var20 < var19; ++var20) {
+//                    String var21 = var18[var20];
+//                    List var15 = (List)var14.stream().filter((var1x) -> {
+//                        return var21.equals(var1x/*.getValue()*/);
+//                    }).collect(Collectors.toList());
+//                    if (var15.size() > 0) {
+//                        var11 = var11 + ((JmDictModel)var15.get(0)).getText() + ",";
+//                    }
+//                }
+//            }
+//        }
+//    }
+//
+//    public void a(JmReportDb var1, Map<String, Object> var2, JSONObject var3) {
+//        String var4 = var1.getJimuReportId();
+//        String var5 = var1.getDbCode();
+//        List var6 = this.jimuReportLinkDao.getLinkDataByReportId(var1.getJimuReportId());
+//        if (null != var6 && var6.size() > 0) {
+//            Iterator var7 = var6.iterator();
+//
+//            while(true) {
+//                JSONArray var11;
+//                String var12;
+//                String var13;
+//                do {
+//                    JSONObject var10;
+//                    do {
+//                        do {
+//                            JimuReportLink var8;
+//                            Object var9;
+//                            do {
+//                                do {
+//                                    if (!var7.hasNext()) {
+//                                        return;
+//                                    }
+//
+//                                    var8 = (JimuReportLink)var7.next();
+//                                    var9 = var8.getParameter();
+//                                } while(null == var9);
+//                            } while(!"4".equals(var8.getLinkType()));
+//
+//                            var10 = JSONObject.parseObject(var9.toString());
+//                        } while(null == var10);
+//                    } while(!var10.containsKey("subReport"));
+//
+//                    var11 = var10.getJSONArray("subReport");
+//                    var12 = var10.getString("sub");
+//                    var13 = var10.getString("main");
+//                } while(!var5.equals(var12));
+//
+//                for(int var14 = 0; var14 < var11.size(); ++var14) {
+//                    JSONObject var15 = var11.getJSONObject(var14);
+//                    if (var15.containsKey("subParam")) {
+//                        String var16 = var15.getString("subParam");
+//                        String var17 = var15.getString("mainField");
+//                        String var18 = var13 + "_" + var17;
+//                        Map var19 = (Map)var2.get(var18);
+//                        if (oConvertUtils.isNotEmpty(var19)) {
+//                            Object var20 = var19.get(var17);
+//                            var3.put(var16, var20);
+//                        }
+//                    }
+//                }
+//            }
+//        }
+//    }
+//
+//    private List<JmReportDb> b(List<JmReportDb> var1) {
+//        ArrayList var2 = new ArrayList();
+//        ArrayList var3 = new ArrayList();
+//        if (var1.size() > 0) {
+//            JmReportDb var4 = (JmReportDb)var1.get(0);
+//            List var5 = this.jimuReportLinkDao.getLinkDataByReportId(var4.getJimuReportId());
+//            if (null == var5 && var5.size() == 0) {
+//                return var1;
+//            }
+//
+//            Iterator var6 = var1.iterator();
+//
+//            JmReportDb var7;
+//            while(var6.hasNext()) {
+//                var7 = (JmReportDb)var6.next();
+//                boolean var8 = false;
+//                Iterator var9 = var5.iterator();
+//
+//                while(var9.hasNext()) {
+//                    JimuReportLink var10 = (JimuReportLink)var9.next();
+//                    Object var11 = var10.getParameter();
+//                    if (null != var11 && "4".equals(var10.getLinkType())) {
+//                        JSONObject var12 = JSONObject.parseObject(var11.toString());
+//                        String var13 = var12.getString("main");
+//                        if (var13.equals(var7.getDbCode())) {
+//                            var8 = true;
+//                        }
+//                    }
+//                }
+//
+//                if (var8) {
+//                    var2.add(var7);
+//                } else {
+//                    var3.add(var7);
+//                }
+//            }
+//
+//            if (null != var2 && var2.size() > 0) {
+//                var6 = var3.iterator();
+//
+//                while(var6.hasNext()) {
+//                    var7 = (JmReportDb)var6.next();
+//                    var2.add(var7);
+//                }
+//
+//                return var2;
+//            }
+//        }
+//
+//        return var1;
+//    }
+//
+//    private void a(JmReportDb var1, Map<String, Object> var2, List<Map<String, Object>> var3) {
+//        String var4 = var1.getDbCode();
+//        String var5 = var1.getJimuReportId();
+//        List var6 = this.jimuReportLinkDao.getLinkDataByReportId(var5);
+//        Iterator var7 = var6.iterator();
+//
+//        while(true) {
+//            JSONObject var10;
+//            String var11;
+//            do {
+//                do {
+//                    do {
+//                        JimuReportLink var8;
+//                        Object var9;
+//                        do {
+//                            do {
+//                                if (!var7.hasNext()) {
+//                                    return;
+//                                }
+//
+//                                var8 = (JimuReportLink)var7.next();
+//                                var9 = var8.getParameter();
+//                            } while(null == var9);
+//                        } while(!"4".equals(var8.getLinkType()));
+//
+//                        var10 = JSONObject.parseObject(var9.toString());
+//                    } while(null == var10);
+//                } while(!var10.containsKey("subReport"));
+//
+//                var11 = var10.getString("main");
+//            } while(!var11.equals(var4));
+//
+//            JSONArray var12 = var10.getJSONArray("subReport");
+//
+//            for(int var13 = 0; var13 < var12.size(); ++var13) {
+//                JSONObject var14 = var12.getJSONObject(var13);
+//                if (var14.containsKey("mainField")) {
+//                    String var15 = var14.getString("mainField");
+//                    if (oConvertUtils.isNotEmpty(var3)) {
+//                        Object var16 = var3.get(0);
+//                        var2.put(var4 + "_" + var15, var16);
+//                    }
+//                }
+//            }
+//        }
+//    }
+//
+//    public ReportDbInfo a(JmReportDb var1, JSONObject var2, String var3, String var4) {
+//        String var5 = var1.getIsPage();
+//        Iterator var6 = var2.keySet().iterator();
+//
+//        JSONObject var7;
+//        String var8;
+//        String var9;
+//        for(var7 = new JSONObject(); var6.hasNext(); var7.put(var8, var9)) {
+//            var8 = (String)var6.next();
+//            var9 = var2.getString(var8);
+//            if (var8.contains(var4)) {
+//                var8 = var8.replace(var4 + "__", "");
+//            }
+//        }
+//
+//        List var18 = this.dbFieldDao.listByDbId(var1.getId());
+//        HashMap var19 = new HashMap();
+//        if (var18 != null && var18.size() > 0) {
+//            Iterator var10 = var18.iterator();
+//
+//            while(var10.hasNext()) {
+//                JmReportDbField var11 = (JmReportDbField)var10.next();
+//                Integer var12 = var11.getSearchFlag();
+//                if (JmConst.DB_SEARCH_1 == var11.getSearchFlag()) {
+//                    var19.put(var11.getFieldName(), var11);
+//                }
+//            }
+//        }
+//
+//        ReportDbInfo var15 = new ReportDbInfo(var1.getIsPage(), var1.getIsList(), var1.getDbType());
+//        String var16 = var1.getJsonData();
+//        JSONObject var17 = JSONObject.parseObject(var16);
+//        Object var13 = var17.get("data");
+//        Map var14 = a((Object)var13, (JSONObject)var7, (Map)var19);
+//        var15.setList((List)var14.get("pageList"));
+//        return var15;
+//    }
+//
+//    public static Map<String, Object> a(Object var0, JSONObject var1, Map<String, JmReportDbField> var2) {
+//        HashMap var3 = new HashMap();
+//        List var4 = (List)var0;
+//        ArrayList var5 = new ArrayList();
+//        Iterator var6 = var4.iterator();
+//
+//        while(var6.hasNext()) {
+//            Map var7 = (Map)var6.next();
+//            boolean var8 = true;
+//            var8 = a(var1, var2, var7);
+//            if (var8) {
+//                var5.add(var7);
+//            }
+//        }
+//
+//        var3.put("pageList", var5);
+//        return var3;
+//    }
+//
+//    public static boolean a(JSONObject var0, Map<String, JmReportDbField> var1, Map<String, Object> var2) {
+//        Iterator var3 = var2.entrySet().iterator();
+//
+//        Integer var11;
+//        String var14;
+//        String var15;
+//        do {
+//            do {
+//                while(true) {
+//                    Object var5;
+//                    Object var7;
+//                    JmReportDbField var8;
+//                    Object var9;
+//                    Object var10;
+//                    do {
+//                        do {
+//                            String var6;
+//                            do {
+//                                if (!var3.hasNext()) {
+//                                    return true;
+//                                }
+//
+//                                Entry var4 = (Entry)var3.next();
+//                                var5 = var4.getValue();
+//                                var6 = (String)var4.getKey();
+//                                var7 = var0.get(var6);
+//                            } while((null == var7 || !var0.containsKey(var6)) && !var0.containsKey(var6 + "_begin"));
+//
+//                            var8 = (JmReportDbField)var1.get(var6);
+//                            var9 = var0.get(var6 + "_begin");
+//                            var10 = var0.get(var6 + "_end");
+//                        } while(null == var8);
+//                    } while(null == var5);
+//
+//                    var11 = var8.getSearchMode();
+//                    String var12 = var8.getWidgetType();
+//                    String var13 = var8.getDictCode();
+//                    var14 = String.valueOf(var5);
+//                    var15 = String.valueOf(var7);
+//                    if (oConvertUtils.isNotEmpty(var13)) {
+//                        break;
+//                    }
+//
+//                    if ((1 == var11 || 3 == var11) && !var14.equals(var15)) {
+//                        return false;
+//                    }
+//
+//                    if (2 == var11) {
+//                        String var16 = String.valueOf(var9);
+//                        String var17 = String.valueOf(var10);
+//                        if (!"number".equals(var12) && var16.compareTo(var14) < 0 && var14.compareTo(var17) > 0) {
+//                            return false;
+//                        }
+//
+//                        if ("number".equals(var12)) {
+//                            Double var18 = Double.valueOf(var14);
+//                            Double var19 = Double.valueOf(var16);
+//                            Double var20 = Double.valueOf(var17);
+//                            if (var19 < var18 && var18 > var20) {
+//                                return false;
+//                            }
+//                        }
+//                    }
+//                }
+//            } while(1 != var11 && 2 != var11 && 3 != var11);
+//        } while(var14.equals(var15));
+//
+//        return false;
+//    }
+//
+//    public Map importExcel(MultipartFile file) throws IOException {
+//        InputStream var2 = file.getInputStream();
+//        Workbook var3 = WorkbookFactory.create(var2);
+//        Sheet var4 = var3.getSheetAt(0);
+//        IdentityHashMap var5 = new IdentityHashMap();
+//        ArrayList var6 = new ArrayList();
+//        IdentityHashMap var7 = new IdentityHashMap();
+//        ArrayList var8 = new ArrayList();
+//        ArrayList var9 = new ArrayList();
+//        HashMap var10 = new HashMap();
+//        int var11 = 0;
+//        Iterator var12 = var4.iterator();
+//
+//        while(var12.hasNext()) {
+//            Row var13 = (Row)var12.next();
+//            int var14 = var13.getRowNum();
+//            IdentityHashMap var15 = new IdentityHashMap();
+//            IdentityHashMap var16 = new IdentityHashMap();
+//            Iterator var17 = var13.iterator();
+//
+//            while(var17.hasNext()) {
+//                Cell var18 = (Cell)var17.next();
+//                String var19 = "";
+//                IdentityHashMap var20 = new IdentityHashMap();
+//                IdentityHashMap var21 = new IdentityHashMap();
+//                int var26;
+//                MergedResult var28;
+//                int[] var29;
+//                CellStyle var30;
+//                Object var31;
+//                if (var18.getCellTypeEnum() == CellType.BLANK) {
+//                    var26 = var18.getColumnIndex();
+//                    var28 = this.a(var4, var14, var26, var8);
+//                    if (var28.isMerged()) {
+//                        var29 = new int[0];
+//                        var29 = new int[]{var28.getEndRow() - var28.getStartRow(), var28.getEndCol() - var28.getStartCol()};
+//                        if (!var9.contains(var29[0] + "," + var29[1])) {
+//                            var20.put("merge", var29);
+//                            var9.add(var29[0] + "," + var29[1]);
+//                        }
+//                    }
+//
+//                    if (!var28.isMerged()) {
+//                        var30 = var18.getCellStyle();
+//                        var31 = new HashMap();
+//                        if (var30 instanceof XSSFCellStyle) {
+//                            var31 = this.a((XSSFCellStyle)var30, var18, var28.isMerged());
+//                        }
+//
+//                        if (var30 instanceof HSSFCellStyle) {
+//                            var31 = this.a((HSSFCellStyle)var30, var18, var28.isMerged(), (HSSFWorkbook)var3);
+//                        }
+//
+//                        var6.add(var31);
+//                        var20.put("styles", var11);
+//                        var16.put(var26, var20);
+//                        ++var11;
+//                    }
+//                } else {
+//                    switch(var18.getCellTypeEnum()) {
+//                        case STRING:
+//                            if (oConvertUtils.isNotEmpty(var18.getRichStringCellValue().getString())) {
+//                                var20.put("text", var18.getRichStringCellValue().getString());
+//                            }
+//                            break;
+//                        case NUMERIC:
+//                            String var22 = var18.getCellStyle().getDataFormatString();
+//                            if (!DateUtil.isCellDateFormatted(var18) && "General".equals(var22)) {
+//                                var19 = "number";
+//                                BigDecimal var27 = new BigDecimal(var18.getNumericCellValue());
+//                                var20.put("text", var27.toPlainString());
+//                            } else {
+//                                Date var23 = var18.getDateCellValue();
+//                                String var24 = this.a(var22, var23, var19);
+//                                var20.put("text", var24);
+//                            }
+//                            break;
+//                        case BOOLEAN:
+//                            var20.put("text", var18.getRichStringCellValue());
+//                    }
+//
+//                    var26 = var18.getColumnIndex();
+//                    var28 = this.a(var4, var14, var26, var8);
+//                    if (var28.isMerged()) {
+//                        var29 = new int[0];
+//                        var29 = new int[]{var28.getEndRow() - var28.getStartRow(), var28.getEndCol() - var28.getStartCol()};
+//                        String var25 = var28.getEndRow() + "," + var28.getStartRow() + "," + var28.getEndCol() + "," + var28.getStartCol();
+//                        if (!var9.contains(var25)) {
+//                            var20.put("merge", var29);
+//                            var9.add(var25);
+//                        }
+//                    }
+//
+//                    var30 = var18.getCellStyle();
+//                    var31 = new HashMap();
+//                    if (var30 instanceof XSSFCellStyle) {
+//                        var31 = this.a((XSSFCellStyle)var30, var18, var28.isMerged());
+//                    }
+//
+//                    if (var30 instanceof HSSFCellStyle) {
+//                        var31 = this.a((HSSFCellStyle)var30, var18, var28.isMerged(), (HSSFWorkbook)var3);
+//                    }
+//
+//                    if (oConvertUtils.isNotEmpty(var19)) {
+//                        ((Map)var31).put("format", var19);
+//                    }
+//
+//                    var6.add(var31);
+//                    var21.put("width", (int)var4.getColumnWidthInPixels(var26));
+//                    var10.put(var26, var21);
+//                    var20.put("style", var11);
+//                    var16.put(var26, var20);
+//                    ++var11;
+//                }
+//
+//                var5.put("styles", var6);
+//                var15.put("cells", var16);
+//                var15.put("height", (double)var13.getHeightInPoints() + 9.5D);
+//            }
+//
+//            if (oConvertUtils.isNotEmpty(var15)) {
+//                var7.put(var14, var15);
+//            }
+//
+//            var5.put("rows", var7);
+//            var5.put("merges", var8);
+//            var5.put("cols", var10);
+//        }
+//
+//        return var5;
+//    }
+//
+//    private Map<String, Object> a(HSSFCellStyle var1, Cell var2, boolean var3, HSSFWorkbook var4) {
+//        HashMap var5 = new HashMap();
+//        HashMap var6 = new HashMap();
+//        HashMap var7 = new HashMap();
+//        String var8 = ((HSSFCell)var2).getCellStyle().getFont(var4).getFontName();
+//        if (oConvertUtils.isNotEmpty(var8)) {
+//            var7.put("name", var8);
+//        }
+//
+//        if (((HSSFCell)var2).getCellStyle().getFont(var4).getBold()) {
+//            var7.put("bold", true);
+//        }
+//
+//        if (((HSSFCell)var2).getCellStyle().getFont(var4).getItalic()) {
+//            var7.put("italic", true);
+//        }
+//
+//        if (((HSSFCell)var2).getCellStyle().getFont(var4).getStrikeout()) {
+//            var5.put("strike", true);
+//        }
+//
+//        byte var9 = ((HSSFCell)var2).getCellStyle().getFont(var4).getUnderline();
+//        if (var9 > 0) {
+//            var5.put("underline", true);
+//        }
+//
+//        if (((HSSFCell)var2).getCellStyle().getFont(var4).getBold()) {
+//            var7.put("bold", true);
+//        }
+//
+//        var7.put("size", ((HSSFCell)var2).getCellStyle().getFont(var4).getFontHeightInPoints());
+//        short var10;
+//        String var11;
+//        String[] var12;
+//        if (var1.getBorderBottomEnum() == BorderStyle.THIN) {
+//            var10 = var1.getBottomBorderColor();
+//            var11 = this.a(var10, var4);
+//            var12 = new String[]{"thin", var11};
+//            var6.put("bottom", var12);
+//        }
+//
+//        if (var1.getBorderLeftEnum() == BorderStyle.THIN) {
+//            var10 = var1.getLeftBorderColor();
+//            var11 = this.a(var10, var4);
+//            var12 = new String[]{"thin", var11};
+//            var6.put("left", var12);
+//        }
+//
+//        if (var1.getBorderRightEnum() == BorderStyle.THIN) {
+//            var10 = var1.getRightBorderColor();
+//            var11 = this.a(var10, var4);
+//            var12 = new String[]{"thin", var11};
+//            var6.put("right", var12);
+//        }
+//
+//        if (var1.getBorderTopEnum() == BorderStyle.THIN) {
+//            var10 = var1.getTopBorderColor();
+//            var11 = this.a(var10, var4);
+//            var12 = new String[]{"thin", var11};
+//            var6.put("top", var12);
+//        }
+//
+//        if (var1.getAlignmentEnum() == HorizontalAlignment.CENTER) {
+//            var5.put("align", "center");
+//        }
+//
+//        if (var1.getBorderBottomEnum() == BorderStyle.THIN && var1.getBorderLeftEnum() == BorderStyle.THIN && var1.getBorderTopEnum() == BorderStyle.THIN && var3) {
+//            var10 = var1.getLeftBorderColor();
+//            var11 = this.a(var10, var4);
+//            var12 = new String[]{"thin", var11};
+//            var6.put("right", var12);
+//        }
+//
+//        if (var1.getBorderRightEnum() != BorderStyle.NONE || var1.getBorderBottomEnum() != BorderStyle.NONE || var1.getBorderLeftEnum() != BorderStyle.NONE || var1.getBorderTopEnum() != BorderStyle.NONE) {
+//            var5.put("border", var6);
+//        }
+//
+//        HSSFFont var15 = ((HSSFCell)var2).getCellStyle().getFont(var4);
+//        short var16 = var15.getColor();
+//        String var17 = this.a(var16, var4);
+//        var5.put("color", var17);
+//        short var13 = var1.getFillForegroundColor();
+//        String var14 = "";
+//        if (var13 == 64) {
+//            var14 = "#ffffff";
+//        } else {
+//            var14 = this.a(var13, var4);
+//        }
+//
+//        var5.put("bgcolor", var14);
+//        var5.put("font", var7);
+//        return var5;
+//    }
+//
+//    private String a(String var1, Date var2, String var3) {
+//        String var4 = "";
+//        if ("yyyy\"年\"m\"月\"d\"日\";@".equals(var1)) {
+//            var4 = ExcelUtil.dateformat(var2, "yyyy年MM月dd日");
+//            var3 = "date2";
+//        } else if ("yyyy/m/d;@".equals(var1)) {
+//            var4 = ExcelUtil.dateformat(var2, "yyyy/MM/dd");
+//            var3 = "date";
+//        } else if ("h:mm:ss;@".equals(var1)) {
+//            var4 = ExcelUtil.dateformat(var2, "HH:mm:ss");
+//            var3 = "time";
+//        } else if ("yyyy/m/d\\ h:mm:ss".equals(var1)) {
+//            var4 = ExcelUtil.dateformat(var2, "yyyy/MM/dd HH:mm:ss");
+//            var3 = "datetime";
+//        } else {
+//            if (var1.contains("y")) {
+//                var3 = var3 + "yyyy";
+//            }
+//
+//            if (var1.contains("m")) {
+//                int var5 = ExcelUtil.sameNumber(var1, "m");
+//                if (var5 == 1 || var5 == 3) {
+//                    if (oConvertUtils.isNotEmpty(var3)) {
+//                        var3 = var3 + "-MM";
+//                    } else {
+//                        var3 = var3 + "MM";
+//                    }
+//                }
+//            }
+//
+//            if (var1.contains("d")) {
+//                var3 = var3 + "-dd";
+//            }
+//
+//            if (var1.contains("h")) {
+//                var3 = var3 + " HH";
+//            }
+//
+//            if (var1.contains("mm")) {
+//                if (oConvertUtils.isNotEmpty(var3)) {
+//                    var3 = var3 + ":mm";
+//                } else {
+//                    var3 = var3 + "mm";
+//                }
+//            }
+//
+//            if (var1.contains("s")) {
+//                var3 = var3 + ":ss";
+//            }
+//
+//            var4 = ExcelUtil.dateformat(var2, var3);
+//        }
+//
+//        return var4;
+//    }
+//
+//    private Map<String, Object> a(XSSFCellStyle var1, Cell var2, boolean var3) {
+//        HashMap var4 = new HashMap();
+//        HashMap var5 = new HashMap();
+//        HashMap var6 = new HashMap();
+//        String var7 = ((XSSFCell)var2).getCellStyle().getFont().getFontName();
+//        if (oConvertUtils.isNotEmpty(var7)) {
+//            var6.put("name", var7);
+//        }
+//
+//        if (((XSSFCell)var2).getCellStyle().getFont().getBold()) {
+//            var6.put("bold", true);
+//        }
+//
+//        if (((XSSFCell)var2).getCellStyle().getFont().getItalic()) {
+//            var6.put("italic", true);
+//        }
+//
+//        if (((XSSFCell)var2).getCellStyle().getFont().getStrikeout()) {
+//            var4.put("strike", true);
+//        }
+//
+//        byte var8 = ((XSSFCell)var2).getCellStyle().getFont().getUnderline();
+//        if (var8 > 0) {
+//            var4.put("underline", true);
+//        }
+//
+//        var6.put("size", ((XSSFCell)var2).getCellStyle().getFont().getFontHeightInPoints());
+//        XSSFColor var9;
+//        String var10;
+//        String[] var11;
+//        if (var1.getBorderBottomEnum() == BorderStyle.THIN) {
+//            var9 = var1.getBottomBorderXSSFColor();
+//            var10 = this.a(var9);
+//            var11 = new String[]{"thin", var10};
+//            var5.put("bottom", var11);
+//        }
+//
+//        if (var1.getBorderLeftEnum() == BorderStyle.THIN) {
+//            var9 = var1.getLeftBorderXSSFColor();
+//            var10 = this.a(var9);
+//            var11 = new String[]{"thin", var10};
+//            var5.put("left", var11);
+//        }
+//
+//        if (var1.getBorderRightEnum() == BorderStyle.THIN) {
+//            var9 = var1.getLeftBorderXSSFColor();
+//            var10 = this.a(var9);
+//            var11 = new String[]{"thin", var10};
+//            var5.put("right", var11);
+//        }
+//
+//        if (var1.getBorderTopEnum() == BorderStyle.THIN) {
+//            var9 = var1.getLeftBorderXSSFColor();
+//            var10 = this.a(var9);
+//            var11 = new String[]{"thin", var10};
+//            var5.put("top", var11);
+//        }
+//
+//        if (var1.getAlignmentEnum() == HorizontalAlignment.CENTER) {
+//            var4.put("align", "center");
+//        }
+//
+//        if (var1.getBorderBottomEnum() == BorderStyle.THIN && var1.getBorderLeftEnum() == BorderStyle.THIN && var1.getBorderTopEnum() == BorderStyle.THIN && var3) {
+//            var9 = var1.getLeftBorderXSSFColor();
+//            var10 = this.a(var9);
+//            var11 = new String[]{"thin", var10};
+//            var5.put("right", var11);
+//        }
+//
+//        if (var1.getBorderRightEnum() != BorderStyle.NONE || var1.getBorderBottomEnum() != BorderStyle.NONE || var1.getBorderLeftEnum() != BorderStyle.NONE || var1.getBorderTopEnum() != BorderStyle.NONE) {
+//            var4.put("border", var5);
+//        }
+//
+//        XSSFFont var14 = ((XSSFCell)var2).getCellStyle().getFont();
+//        XSSFColor var15;
+//        byte[] var16;
+//        if (var14.getXSSFColor() != null) {
+//            var15 = var14.getXSSFColor();
+//            var16 = var15.getRGB();
+//            if (var16.length > 2) {
+//                String var12 = String.format("#%02X%02X%02X", var16[0], var16[1], var16[2]);
+//                var4.put("color", var12);
+//            }
+//        }
+//
+//        var15 = var1.getFillForegroundXSSFColor();
+//        if (null != var15) {
+//            var16 = var15.getRGB();
+//            if (null != var16) {
+//                (new StringBuilder()).append("#").append(String.format("%02X", var16[0])).append(String.format("%02X", var16[1])).append(String.format("%02X", var16[2])).toString();
+//                String var13 = this.a(var15);
+//                var4.put("bgcolor", var13);
+//            }
+//        }
+//
+//        var4.put("font", var6);
+//        return var4;
+//    }
+//
+//    public String a(short var1, HSSFWorkbook var2) {
+//        HSSFColor var3 = var2.getCustomPalette().getColor(var1);
+//        if (var3 != null) {
+//            short[] var4 = var3.getTriplet();
+//            if (var4.length == 3) {
+//                String var5 = "#" + String.format("%02X", var4[0]) + String.format("%02X", var4[1]) + String.format("%02X", var4[2]);
+//                return var5;
+//            } else {
+//                return "#000000";
+//            }
+//        } else {
+//            return "#000000";
+//        }
+//    }
+//
+//    public String a(XSSFColor var1) {
+//        if (var1 != null) {
+//            byte[] var2 = var1.getRGB();
+//            if (null != var2) {
+//                String var3 = "#" + String.format("%02X", var2[0]) + String.format("%02X", var2[1]) + String.format("%02X", var2[2]);
+//                return var3;
+//            } else {
+//                return "#000000";
+//            }
+//        } else {
+//            return "#000000";
+//        }
+//    }
+//
+//    public boolean excelQueryName(JimuReport design) {
+//        boolean var2 = false;
+//        Integer var3 = 0;
+//        if (oConvertUtils.isNotEmpty(design.getId())) {
+//            JimuReport var4 = this.reportDao.get(design.getId());
+//            if (null != var4 && var4.getName() != null) {
+//                if (!var4.getName().equals(design.getName())) {
+//                    var3 = this.reportDao.excelQueryName(design.getName());
+//                    if (var3 == 0) {
+//                        var2 = true;
+//                    }
+//                } else {
+//                    var2 = true;
+//                }
+//            } else {
+//                var3 = this.reportDao.excelQueryName(design.getName());
+//                if (var3 == 0) {
+//                    var2 = true;
+//                }
+//            }
+//        } else {
+//            var3 = this.reportDao.excelQueryName(design.getName());
+//            if (var3 == 0) {
+//                var2 = true;
+//            }
+//        }
+//
+//        return var2;
+//    }
+//
+//    @Transactional(
+//            rollbackFor = {Exception.class}
+//    )
+//    public void reportCopy(JimuReport report) {
+//        JimuReport var2 = this.reportDao.get(report.getId());
+//        if (var2 != null) {
+//            var2.setId(String.valueOf(SnowflakeIdWorker.generateId()));
+//            String var3 = String.format("%04d", (new Random()).nextInt(9999));
+//            String var4 = "";
+//            String var5 = "";
+//            if (var2.getName().indexOf("副本") == -1) {
+//                var4 = var2.getCode() + var3;
+//                var5 = var2.getName() + "副本" + var3;
+//            } else {
+//                var4 = var2.getCode().substring(0, 14) + var3;
+//                var5 = var2.getName().substring(0, var2.getName().indexOf("副本")) + "副本" + var3;
+//            }
+//
+//            var2.setName(var5);
+//            var2.setCode(var4);
+//            var2.setTemplate(0);
+//            var2.setCreateBy(report.getCreateBy());
+//            var2.setCreateTime(report.getCreateTime());
+//            var2.setViewCount(0L);
+//            var2.setUpdateTime((Date)null);
+//            var2.setUpdateBy((String)null);
+//            this.reportDao.insert(var2);
+//        }
+//
+//        List var10 = this.reportDbDao.selectList(report.getId());
+//        if (var10.size() > 0) {
+//            Iterator var11 = var10.iterator();
+//
+//            label45:
+//            while(true) {
+//                List var7;
+//                Iterator var8;
+//                JmReportDb var12;
+//                do {
+//                    if (!var11.hasNext()) {
+//                        break label45;
+//                    }
+//
+//                    var12 = (JmReportDb)var11.next();
+//                    List var6 = this.dbFieldDao.listByDbId(var12.getId());
+//                    var7 = this.dbParamDao.list(var12.getId());
+//                    var12.setId(String.valueOf(SnowflakeIdWorker.generateId()));
+//                    var12.setJimuReportId(var2.getId());
+//                    this.reportDbDao.insert(var12);
+//                    if (var6.size() > 0) {
+//                        var8 = var6.iterator();
+//
+//                        while(var8.hasNext()) {
+//                            JmReportDbField var9 = (JmReportDbField)var8.next();
+//                            var9.setId(String.valueOf(SnowflakeIdWorker.generateId()));
+//                            var9.setJimuReportDbId(var12.getId());
+//                            this.dbFieldDao.insert(var9);
+//                        }
+//                    }
+//                } while(var7.size() <= 0);
+//
+//                var8 = var7.iterator();
+//
+//                while(var8.hasNext()) {
+//                    JmReportDbParam var13 = (JmReportDbParam)var8.next();
+//                    var13.setId(String.valueOf(SnowflakeIdWorker.generateId()));
+//                    var13.setJimuReportHeadId(var12.getId());
+//                    this.dbParamDao.insert(var13);
+//                }
+//            }
+//        }
+//
+//        this.b(report.getId(), var2.getId());
+//    }
+//
+//    private void b(String var1, String var2) {
+//        List var3 = this.jimuReportLinkDao.getLinkDataByReportId(var1);
+//        if (!oConvertUtils.isEmptyIterable(var3)) {
+//            Iterator var4 = var3.iterator();
+//
+//            while(var4.hasNext()) {
+//                JimuReportLink var5 = (JimuReportLink)var4.next();
+//                if ("4".equals(var5.getLinkType())) {
+//                    var5.setId(String.valueOf(SnowflakeIdWorker.generateId()));
+//                    var5.setReportId(var2);
+//                    this.jimuReportLinkDao.insert(var5);
+//                }
+//            }
+//        }
+//
+//    }
+//
+//    private MergedResult a(Sheet var1, int var2, int var3, List<String> var4) {
+//        int var5 = var1.getNumMergedRegions();
+//
+//        for(int var6 = 0; var6 < var5; ++var6) {
+//            CellRangeAddress var7 = var1.getMergedRegion(var6);
+//            int var8 = var7.getFirstColumn();
+//            int var9 = var7.getLastColumn();
+//            int var10 = var7.getFirstRow();
+//            int var11 = var7.getLastRow();
+//            if (var2 >= var10 && var2 <= var11 && var3 >= var8 && var3 <= var9) {
+//                String var12 = var7.formatAsString();
+//                if (!var4.contains(var12)) {
+//                    var4.add(var12);
+//                }
+//
+//                return new MergedResult(true, var10, var11, var8, var9);
+//            }
+//        }
+//
+//        return new MergedResult(false, 0, 0, 0, 0);
+//    }
+//
+//    private Map a(JmReportDb var1, String var2, JSONObject var3) {
+//        String var4 = var1.getApiUrl();
+//        Object var5 = new HashMap();
+//        if (oConvertUtils.isNotEmpty(var2)) {
+//            var5 = this.jimuTokenClient.getUserInfo(var2);
+//        }
+//
+//        var4 = d.a(var4, (Map)var5, this.jmBaseConfig.getApiBasePath());
+//        a.info("  原始 apiUrl=" + var4 + " , token=" + var2);
+//        var4 = var4.replaceAll("\\$\\{.*\\}", "");
+//        a.info("  替换${} apiUrl=" + var4);
+//        String var6 = "";
+//        String var9;
+//        if ("0".equals(var1.getApiMethod())) {
+//            Iterator var7 = var3.keySet().iterator();
+//
+//            while(var7.hasNext()) {
+//                String var8 = (String)var7.next();
+//                var9 = var3.getString(var8);
+//                if (var4.indexOf(var8 + "=") < 0) {
+//                    if (var4.indexOf("?") > 0) {
+//                        var4 = var4 + "&" + var8 + "=" + var9;
+//                    } else {
+//                        var4 = var4 + "?" + var8 + "=" + var9;
+//                    }
+//                }
+//            }
+//
+//            var6 = d.b(var4, var2);
+//        } else {
+//            var6 = d.a(var4, var2, var3);
+//        }
+//
+//        HashMap var16 = new HashMap();
+//
+//        try {
+//            JSONObject var17 = RegexMatches.e(var6);
+//            var9 = "";
+//            String var10 = "";
+//            String var11 = "";
+//            String var12 = "";
+//            if (oConvertUtils.isEmpty(this.apiDataConverAdapter) && oConvertUtils.isEmpty(var1.getApiConvert())) {
+//                if (var17.containsKey("data")) {
+//                    var9 = var17.get("data").toString();
+//                }
+//
+//                if (var17.containsKey("links")) {
+//                    var10 = var17.get("links").toString();
+//                }
+//
+//                if (var17.containsKey("total")) {
+//                    if (var17.get("total") != null) {
+//                        var11 = var17.get("total").toString();
+//                    } else {
+//                        var11 = "0";
+//                    }
+//                }
+//
+//                if (var17.containsKey("count")) {
+//                    if (var17.get("count") != null) {
+//                        var12 = var17.get("count").toString();
+//                    } else {
+//                        var12 = "0";
+//                    }
+//                }
+//            } else if (oConvertUtils.isNotEmpty(var1.getApiConvert())) {
+//                Object var13 = JimuSpringContextUtils.getBean(var1.getApiConvert());
+//                if (var13 != null && var13 instanceof ApiDataConvertAdapter) {
+//                    ApiDataConvertAdapter var14 = (ApiDataConvertAdapter)var13;
+//                    var9 = var14.getData(var17);
+//                    var10 = var14.getLinks(var17);
+//                    var11 = var14.getTotal(var17);
+//                    var12 = var14.getCount(var17);
+//                }
+//            } else {
+//                var9 = this.apiDataConverAdapter.getData(var17);
+//                var10 = this.apiDataConverAdapter.getLinks(var17);
+//                var11 = this.apiDataConverAdapter.getTotal(var17);
+//                var12 = this.apiDataConverAdapter.getCount(var17);
+//            }
+//
+//            List var18 = (List)JSONArray.parseObject(var9, List.class);
+//            List var19 = (List)JSONArray.parseObject(var10, List.class);
+//            var16.put("dataList", var18);
+//            var16.put("linkList", var19);
+//            var16.put("total", var11);
+//            var16.put("count", var12);
+//        } catch (Exception var15) {
+//            var15.printStackTrace();
+//        }
+//
+//        return var16;
+//    }
+//
+//    private String a(JmReportDb var1, Map<String, String[]> var2) {
+//        String var3 = var1.getDbDynSql().replace("\n", " ");
+//        boolean var4 = var3.contains("$");
+//        if (var4) {
+//            List var5 = this.dbParamDao.list(var1.getId());
+//            Iterator var6;
+//            JmReportDbParam var7;
+//            String var9;
+//            String var10;
+//            if (var2.size() > 0 && !var2.isEmpty()) {
+//                for(var6 = var2.keySet().iterator(); var6.hasNext(); var3 = var3.replace("${" + var10 + "}", var9)) {
+//                    var10 = (String)var6.next();
+//                    String[] var8 = (String[])var2.get(var10);
+//                    var9 = oConvertUtils.join(var8, (String)null, 0, var8.length);
+//                }
+//            } else {
+//                for(var6 = var5.iterator(); var6.hasNext(); var3 = var3.replace("${" + var7.getParamName() + "}", var7.getParamValue())) {
+//                    var7 = (JmReportDbParam)var6.next();
+//                }
+//            }
+//        }
+//
+//        return var3;
+//    }
+//
+//    private JSONObject a(JSONObject var1, Map<String, String> var2) {
+//        JSONObject var3 = new JSONObject(true);
+//        var2.forEach((var2x, var3x) -> {
+//            var3.put(var3x, var1.get(var2x));
+//        });
+//        var2.forEach((var1x, var2x) -> {
+//            var1.remove(var1x);
+//        });
+//        Iterator var4 = var3.keySet().iterator();
+//
+//        while(var4.hasNext()) {
+//            String var5 = (String)var4.next();
+//            var1.put(var5, var3.get(var5));
+//        }
+//
+//        return var1;
+//    }
+//
+//    private JSONObject a(JSONObject var1) {
+//        ArrayList var2 = new ArrayList();
+//        Iterator var3 = var1.keySet().iterator();
+//
+//        while(var3.hasNext()) {
+//            String var4 = (String)var3.next();
+//            if (oConvertUtils.isNotEmpty(var4) && !"NaN".equals(var4)) {
+//                var2.add(Integer.parseInt(var4));
+//            }
+//        }
+//
+//        Collections.sort(var2);
+//        JSONArray var9 = new JSONArray();
+//        JSONObject var5 = new JSONObject(true);
+//        Iterator var6 = var2.iterator();
+//
+//        while(var6.hasNext()) {
+//            Integer var7 = (Integer)var6.next();
+//            JSONObject var8 = var1.getJSONObject(String.valueOf(var7));
+//            var9.add(var8);
+//            var5.put(String.valueOf(var7), var8);
+//        }
+//
+//        return var5;
+//    }
+//
+//    public static Map<String, Object> a(Map<String, Object> var0) {
+//        HashMap var1 = new HashMap();
+//        if (var0 != null && !var0.isEmpty()) {
+//            Set var2 = var0.keySet();
+//            Iterator var3 = var2.iterator();
+//
+//            while(var3.hasNext()) {
+//                String var4 = (String)var3.next();
+//                String var5 = var4.toLowerCase();
+//                var1.put(var5, var0.get(var4));
+//            }
+//
+//            return var1;
+//        } else {
+//            return var1;
+//        }
+//    }
+//
+//    public static boolean a(Row var0) {
+//        if (var0 == null) {
+//            return true;
+//        } else {
+//            for(int var1 = var0.getFirstCellNum(); var1 < var0.getLastCellNum(); ++var1) {
+//                Cell var2 = var0.getCell(var1);
+//                if (var2 != null && var2.getCellTypeEnum() != CellType.BLANK) {
+//                    return false;
+//                }
+//            }
+//
+//            return true;
+//        }
+//    }
+//
+//    public List<JmReportDbParam> queryReportParam(String reportId) {
+//        return this.reportDao.queryReportParam(reportId);
+//    }
+//
+//    public List<QueryVO> getReportQueryInfo(String reportId, String username, String params) {
+//        ArrayList var4 = null;
+//        List var5 = this.reportDbDao.selectList(reportId);
+//        if (var5 != null && var5.size() > 0) {
+//            var4 = new ArrayList();
+//            HashSet var6 = new HashSet();
+//            ArrayList var7 = new ArrayList();
+//            Iterator var8 = var5.iterator();
+//
+//            label84:
+//            while(true) {
+//                String var10;
+//                String var11;
+//                String var16;
+//                String var18;
+//                List var24;
+//                do {
+//                    do {
+//                        if (!var8.hasNext()) {
+//                            if (var4.size() > 0) {
+//                                var8 = var4.iterator();
+//
+//                                while(var8.hasNext()) {
+//                                    QueryVO var23 = (QueryVO)var8.next();
+//                                    if (var6.contains(var23.getName())) {
+//                                        var23.setDuplicate(true);
+//                                    }
+//                                }
+//                            }
+//
+//                            return var4;
+//                        }
+//
+//                        JmReportDb var9 = (JmReportDb)var8.next();
+//                        var10 = var9.getDbCode();
+//                        var11 = var9.getDbChName();
+//                        List var12 = this.dbFieldDao.listByDbId(var9.getId());
+//                        if (var12 != null && var12.size() > 0) {
+//                            Iterator var13 = var12.iterator();
+//
+//                            while(var13.hasNext()) {
+//                                JmReportDbField var14 = (JmReportDbField)var13.next();
+//                                if (JmConst.FIELD_IS_QUERY.equals(var14.getSearchFlag())) {
+//                                    String var15 = var14.getFieldName();
+//                                    if (var7.contains(var15)) {
+//                                        var6.add(var15);
+//                                    }
+//
+//                                    var7.add(var15);
+//                                    var16 = var14.getFieldText();
+//                                    Integer var17 = var14.getSearchMode();
+//                                    var18 = var14.getWidgetType();
+//                                    QueryVO var19 = new QueryVO(var15, var16, var18, var17, var10, var11);
+//                                    var19.setDefaultValue(var14.getSearchValue());
+//                                    List var20 = this.queryQueryDictList(var9, var14, username, (String)null, params);
+//                                    var19.setDictList(var20);
+//                                    var4.add(var19);
+//                                }
+//                            }
+//                        }
+//
+//                        var24 = this.dbParamDao.querySearchParam(var9.getId());
+//                    } while(var24 == null);
+//                } while(var24.size() <= 0);
+//
+//                Iterator var25 = var24.iterator();
+//
+//                while(true) {
+//                    JmReportDbParam var26;
+//                    do {
+//                        if (!var25.hasNext()) {
+//                            continue label84;
+//                        }
+//
+//                        var26 = (JmReportDbParam)var25.next();
+//                    } while(var26.getSearchFlag() != JmConst.FIELD_IS_QUERY);
+//
+//                    var16 = var26.getParamName();
+//                    String var27 = var26.getParamTxt();
+//                    var18 = var26.getDictCode();
+//                    Integer var28 = var26.getSearchMode();
+//                    if (var28 == null) {
+//                        var28 = 1;
+//                    }
+//
+//                    String var29 = var26.getWidgetType();
+//                    if (var29 == null || "".equals(var29)) {
+//                        var29 = "String";
+//                    }
+//
+//                    QueryVO var21 = new QueryVO(var16, var27, var29, var28, var10, var11);
+//                    var21.setDefaultValue(var26.getParamValue());
+//                    var21.setParamSearch(true);
+//                    List var22 = this.a((String)var18, (String)var16, (String)null);
+//                    var21.setDictList(var22);
+//                    var4.add(var21);
+//                }
+//            }
+//        } else {
+//            return var4;
+//        }
+//    }
+//
+//    private List<JmDictModel> a(String var1, String var2, String var3) {
+//        List var4 = null;
+//        if (var1 != null && !"".equals(var1)) {
+//            if (var1.contains("http")) {
+//                var4 = this.a(var1, var2);
+//            } else if (var1.toLowerCase().indexOf("select") >= 0 && var1.toLowerCase().indexOf("from") >= 0) {
+//                if (oConvertUtils.isNotEmpty(var3)) {
+//                    var1 = "SELECT dict.text,dict.value FROM (" + var1 + ") dict WHERE dict.value like '%" + var3 + "%'";
+//                }
+//
+//                MiniDaoPage var5 = this.reportDao.queryDictBySqlPage(var1, 1, 10);
+//                var4 = var5.getResults();
+//            } else {
+//                var4 = this.dictService.queryDictItemsByCode(var1);
+//            }
+//        }
+//
+//        return var4;
+//    }
+//
+//    public List<JmDictModel> queryQueryDictList(JmReportDb db, JmReportDbField temp, String username, String text, String params) {
+//        String var6 = temp.getDictCode();
+//        String var7 = temp.getWidgetType();
+//        List var8 = null;
+//        if (var6 != null && !"".equals(var6)) {
+//            var8 = this.a(var6, temp.getFieldName(), text);
+//        } else {
+//            Object var9 = new ArrayList();
+//            String var10 = db.getDbDynSql();
+//            if (oConvertUtils.isNotEmpty(var10)) {
+//                JSONObject var11 = new JSONObject();
+//                if (oConvertUtils.isNotEmpty(params)) {
+//                    var11 = JSONObject.parseObject(params);
+//                }
+//
+//                Iterator var12 = var11.keySet().iterator();
+//
+//                while(var12.hasNext()) {
+//                    String var13 = (String)var12.next();
+//                    String var14 = "${" + var13 + "}";
+//                    if (var10.contains(var13)) {
+//                        Object var15 = var11.get(var13);
+//                        var10 = var10.replace(var14, var15.toString());
+//                        var10 = var10.replace("'${" + var13 + "}'", var15.toString());
+//                    }
+//                }
+//
+//                var10 = d.a(var10, (Map)null);
+//                if (oConvertUtils.isNotEmpty(text)) {
+//                    var10 = "SELECT dict.* FROM (" + var10 + ") dict WHERE dict." + temp.getFieldName() + " like '%" + text + "%'";
+//                }
+//
+//                if (oConvertUtils.isNotEmpty(db.getDbSource())) {
+//                    try {
+//                        JmreportDynamicDataSourceVo var17 = JmreportDataSourceCachePool.getCacheDynamicDataSourceModel(db.getDbSource());
+//                        var10 = MiniDaoUtil.createPageSql(var17.getDbUrl(), var10, 1, 10);
+//                        var9 = this.jmreportDynamicDbUtil.findList(db.getDbSource(), var10, new Object[0]);
+//                    } catch (Exception var16) {
+//                        a.warn(var16.getMessage(), var16);
+//                    }
+//                } else {
+//                    MiniDaoPage var18 = this.reportDbDao.selectPageBySql(var10, 1, 10);
+//                    var9 = var18.getResults();
+//                }
+//
+//                var8 = this.a((JmReportDbField)temp, (List)var9);
+//                if (null != var8 && ("date".equals(var7) || "datetime".equals(var7))) {
+//                    this.c(var8);
+//                }
+//            }
+//        }
+//
+//        return var8;
+//    }
+//
+//    private void c(List<JmDictModel> var1) {
+//        Iterator var2 = var1.iterator();
+//
+//        while(var2.hasNext()) {
+//            JmDictModel var3 = (JmDictModel)var2.next();
+//            int var4 = var3.getValue().length();
+//            if (var4 > 19) {
+//                String var5 = var3.getValue();
+//                var3.setValue(var5.substring(0, 19));
+//                var3.setText(var5.substring(0, 19));
+//            }
+//        }
+//
+//    }
+//
+//    public List<JmDictModel> getDictListByCode(String dictCode) {
+//        List var2 = null;
+//        if (dictCode.toLowerCase().indexOf("select") >= 0 && dictCode.toLowerCase().indexOf("from") >= 0) {
+//            var2 = this.reportDao.queryDictBySql(dictCode);
+//        } else {
+//            var2 = this.dictService.queryDictItemsByCode(dictCode);
+//        }
+//
+//        return var2;
+//    }
+//
+//    public JSONObject addChart(String chartType) {
+//        JSONObject var2 = null;
+//
+//        try {
+//            String var3 = "static/jmreport/desreport_/chartjson/" + chartType + ".json";
+//            ClassPathResource var4 = new ClassPathResource(var3);
+//            byte[] var5 = FileCopyUtils.copyToByteArray(var4.getInputStream());
+//            String var6 = new String(var5);
+//            var2 = JSON.parseObject(var6);
+//        } catch (IOException var7) {
+//            var7.printStackTrace();
+//        }
+//
+//        return var2;
+//    }
+//
+//    public JimuReport excelCreate(JimuReport design) {
+//        Date var2 = new Date();
+//        design.setDelFlag(CommonConstant.DEL_FLAG_0);
+//        design.setUpdateTime(var2);
+//        if (oConvertUtils.isNotEmpty(design.getId())) {
+//            design.setUpdateBy(design.getCreateBy());
+//            this.reportDao.update(design);
+//        } else {
+//            design.setCreateTime(var2);
+//            this.reportDao.insert(design);
+//        }
+//
+//        return design;
+//    }
+//
+//    public Result<JimuReport> show(String id, String params) {
+//        JSONObject var3 = new JSONObject();
+//        boolean var4 = false;
+//        if (oConvertUtils.isNotEmpty(params)) {
+//            var3 = JSON.parseObject(params);
+//            var4 = "1".equals(var3.getString("onlyPageData"));
+//        }
+//
+//        a.debug("============EXCEL JSON数据查询==========");
+//        JimuReport var5 = this.reportDao.get(id);
+//        String var6 = var5.getJsonStr();
+//        this.a(var3, var6);
+//        Map var7 = this.getDataById(var5, var3, var4);
+//        this.a(var6, var7);
+//        var5.setDataList(var7);
+//        a.debug("====配置的json字符串===" + var5.getJsonStr());
+//        var6 = ReportUtil.a(var7, var6);
+//        JSONObject var8 = (JSONObject)var7.get("replaceParams");
+//        var6 = ReportUtil.a(var6, var8);
+//        var5.setJsonStr(var6);
+//        RenderInfo var9 = new RenderInfo(var5);
+//        var9.setStrategyName(b.class.getSimpleName());
+//        Result var10 = this.a(var9);
+//        org.jeecg.modules.jmreport.desreport.express.b.a(var10);
+//        return var10;
+//    }
+//
+//    private void a(JSONObject var1, String var2) {
+//        if (var1.containsKey("jmViewFirstLoad") && "1".equals(var1.getString("jmViewFirstLoad"))) {
+//            JSONObject var3 = JSONObject.parseObject(var2);
+//            if (var3.containsKey("rpbar")) {
+//                JSONObject var4 = var3.getJSONObject("rpbar");
+//                if (var4.containsKey("pageSize")) {
+//                    Integer var5 = var4.getInteger("pageSize");
+//                    if (var5 != null && !"".equals(var5)) {
+//                        var1.put("pageSize", var5);
+//                    }
+//                }
+//            }
+//        }
+//
+//    }
+//
+//    private void a(String var1, Map<String, Object> var2) {
+//        JSONObject var3 = JSON.parseObject(var1);
+//        if (var3.containsKey("completeBlankRowList")) {
+//            JSONArray var4 = var3.getJSONArray("completeBlankRowList");
+//            if (var4.size() > 0) {
+//                Iterator var5 = var2.keySet().iterator();
+//
+//                while(true) {
+//                    Object var11;
+//                    HashMap var12;
+//                    Integer var16;
+//                    int var19;
+//                    do {
+//                        Object var17;
+//                        do {
+//                            String var6;
+//                            do {
+//                                do {
+//                                    JSONObject var7;
+//                                    do {
+//                                        if (!var5.hasNext()) {
+//                                            return;
+//                                        }
+//
+//                                        var6 = (String)var5.next();
+//                                        var7 = null;
+//
+//                                        for(int var8 = 0; var8 < var4.size(); ++var8) {
+//                                            JSONObject var9 = var4.getJSONObject(var8);
+//                                            if (var9.getString("db").equals(var6)) {
+//                                                var7 = var9;
+//                                                break;
+//                                            }
+//                                        }
+//                                    } while(var7 == null);
+//
+//                                    var16 = var7.getInteger("rows");
+//                                } while(var16 == null);
+//                            } while(var16 <= 0);
+//
+//                            var17 = var2.get(var6);
+//                        } while(!(var17 instanceof ReportDbInfo));
+//
+//                        ReportDbInfo var10 = (ReportDbInfo)var17;
+//                        var11 = var10.getList();
+//                        var12 = new HashMap();
+//                        if (var11 == null) {
+//                            var11 = new ArrayList();
+//                        } else {
+//                            Map var13 = (Map)((List)var11).get(0);
+//                            Iterator var14 = var13.keySet().iterator();
+//
+//                            while(var14.hasNext()) {
+//                                String var15 = (String)var14.next();
+//                                var12.put(var15, "");
+//                            }
+//                        }
+//
+//                        int var18 = ((List)var11).size();
+//                        var19 = var18 % var16;
+//                    } while(var19 <= 0);
+//
+//                    for(int var20 = var16 - var19; var20 > 0; --var20) {
+//                        ((List)var11).add(var12);
+//                    }
+//                }
+//            }
+//        }
+//
+//    }
+//
+//    private Result<JimuReport> a(RenderInfo var1) {
+//        if (oConvertUtils.isNotEmpty(this.renderHandlerMap)) {
+//            Iterator var2 = this.renderHandlerMap.values().iterator();
+//
+//            while(var2.hasNext()) {
+//                BaseRenderHandler var3 = (BaseRenderHandler)var2.next();
+//                if (var3.support(var1)) {
+//                    JimuReport var4 = var1.getReport();
+//                    JSONObject var5 = JSONObject.parseObject(var4.getJsonStr(), new Feature[]{Feature.OrderedField});
+//                    JSONArray var6 = this.a(var1, var5, var4);
+//                    var3.beforeRender(var1);
+//                    Result var7 = var3.render(var1);
+//                    this.a(var6, var7, var3, var1, var5, var4);
+//                    if (oConvertUtils.isNotEmpty(var7)) {
+//                        return var7;
+//                    }
+//
+//                    Result.OK(var1.getReport());
+//                }
+//            }
+//        }
+//
+//        return Result.OK(var1.getReport());
+//    }
+//
+//    private JSONArray a(RenderInfo var1, JSONObject var2, JimuReport var3) {
+//        JSONArray var4 = var2.getJSONArray("zonedEditionList");
+//        if (oConvertUtils.isNotEmpty(var4)) {
+//            JSONObject var5 = var2.getJSONObject("rows");
+//
+//            JSONObject var8;
+//            JSONObject var9;
+//            for(Iterator var6 = var4.iterator(); var6.hasNext(); var9.put("jsons", JSONUtils.toJSONString(var8))) {
+//                Object var7 = var6.next();
+//                var8 = new JSONObject(true);
+//                var9 = (JSONObject)var7;
+//                Integer var10 = var9.getInteger("sri");
+//                Integer var11 = var9.getInteger("eri");
+//                Integer var12 = var9.getInteger("sci");
+//                Integer var13 = var9.getInteger("eci");
+//                if (var10 > 0) {
+//                    for(int var14 = var10; var14 <= var11; ++var14) {
+//                        JSONObject var15 = var5.getJSONObject(var14 + "");
+//                        if (oConvertUtils.isNotEmpty(var15)) {
+//                            JSONObject var16 = new JSONObject(true);
+//
+//                            for(int var17 = var12; var17 <= var13; ++var17) {
+//                                JSONObject var18 = var15.getJSONObject("cells");
+//                                if (oConvertUtils.isNotEmpty(var18)) {
+//                                    JSONObject var19 = var18.getJSONObject(var17 + "");
+//                                    var16.put(var17 + "", var19);
+//                                    var18.remove(var17 + "");
+//                                }
+//                            }
+//
+//                            JSONObject var20 = new JSONObject(true);
+//                            var20.put("cells", var16);
+//                            var8.put(var14 + "", var20);
+//                        }
+//                    }
+//                }
+//            }
+//
+//            var2.put("rows", var5);
+//            var3.setJsonStr(JSONUtils.toJSONString(var2));
+//            var1.setReport(var3);
+//        }
+//
+//        var1.setZonedEditionList(var4);
+//        return var4;
+//    }
+//
+//    private void a(JSONArray var1, Result<JimuReport> var2, BaseRenderHandler var3, RenderInfo var4, JSONObject var5, JimuReport var6) {
+//        if (oConvertUtils.isNotEmpty(var1)) {
+//            String var7 = ((JimuReport)var2.getResult()).getJsonStr();
+//            JSONObject var8 = JSONObject.parseObject(var7, new Feature[]{Feature.OrderedField});
+//            JSONObject var9 = var8.getJSONObject("rows");
+//            Iterator var10 = var1.iterator();
+//
+//            while(true) {
+//                JSONObject var21;
+//                do {
+//                    if (!var10.hasNext()) {
+//                        return;
+//                    }
+//
+//                    Object var11 = var10.next();
+//                    JSONObject var12 = (JSONObject)var11;
+//                    String var13 = var12.getString("jsons");
+//                    Integer var14 = var12.getInteger("sri");
+//                    Integer var15 = var12.getInteger("eri");
+//                    JimuReport var16 = new JimuReport();
+//                    BeanUtils.copyProperties(var6, var16);
+//                    JSONObject var17 = JSONObject.parseObject(var16.getJsonStr(), new Feature[]{Feature.OrderedField});
+//                    var17.put("rows", var13);
+//                    var16.setJsonStr(var17.toString());
+//                    var4.setReport(var16);
+//                    var3.beforeRender(var4);
+//                    Result var18 = var3.render(var4);
+//                    String var19 = ((JimuReport)var18.getResult()).getJsonStr();
+//                    JSONObject var20 = JSONObject.parseObject(var19, new Feature[]{Feature.OrderedField});
+//                    var21 = var20.getJSONObject("rows");
+//                } while(!oConvertUtils.isNotEmpty(var21));
+//
+//                Iterator var22 = var21.entrySet().iterator();
+//
+//                while(var22.hasNext()) {
+//                    Entry var23 = (Entry)var22.next();
+//                    String var24 = var23.getKey().toString();
+//                    Object var25 = var23.getValue();
+//                    if (var25 instanceof JSONObject) {
+//                        JSONObject var26 = (JSONObject)var25;
+//                        JSONObject var27 = var26.getJSONObject("cells");
+//                        JSONObject var28 = var9.getJSONObject(var24);
+//                        if (oConvertUtils.isNotEmpty(var28)) {
+//                            var28.getJSONObject("cells").putAll(var27);
+//                        } else {
+//                            var9.put(var24, var25);
+//                        }
+//                    }
+//                }
+//
+//                var5.put("rows", var9);
+//                var6.setJsonStr(JSONUtils.toJSONString(var5));
+//                var4.setReport(var6);
+//            }
+//        }
+//    }
+//
+//    public JimuReport saveReport(JSONObject json, HttpServletRequest request) {
+//        String var3 = this.jimuTokenClient.getUsername(request);
+//        a.debug("============EXCEL JSON数据正在保存==========");
+//        String var4 = json.getString("excel_config_id");
+//        JimuReport var5 = new JimuReport();
+//        if (oConvertUtils.isEmpty(var4)) {
+//            var5.setId(String.valueOf(SnowflakeIdWorker.generateId()));
+//            return var5;
+//        } else {
+//            var5 = this.reportDao.get(var4);
+//            JSONObject var6 = json.getJSONObject("designerObj");
+//            String var7 = "";
+//            String var8 = "";
+//            if (var6 != null) {
+//                var7 = var6.getString("name");
+//                var8 = var6.getString("type");
+//                json.remove("designerObj");
+//            }
+//
+//            SimpleDateFormat var9 = new SimpleDateFormat("yyyyMMddHHmmss");
+//            String var10 = var9.format(new Date());
+//            if (var5 == null) {
+//                JimuReport var11 = new JimuReport();
+//                var11.setId(var4);
+//                var11.setCode(var10);
+//                var11.setViewCount(0L);
+//                var11.setDelFlag(CommonConstant.DEL_FLAG_0);
+//                var11.setTemplate(JmConst.TEMPLATE_FLAG_0);
+//                var11.setJsonStr(json.toJSONString());
+//                var11.setName(var7);
+//                var11.setType(var8);
+//                var11.setCreateBy(var3);
+//                Date var12 = new Date();
+//                var11.setCreateTime(var12);
+//                var11.setUpdateTime(var12);
+//                json.remove("excel_config_id");
+//                this.reportDao.insert(var11);
+//            } else {
+//                var5.setName(var7);
+//                var5.setType(var8);
+//                var5.setUpdateBy(var3);
+//                var5.setUpdateTime(new Date());
+//                var5.setJsonStr(json.toJSONString());
+//                a.info("保存设计,saas: " + this.jmBaseConfig.getSaas() + " ,登录Token: " + this.jimuTokenClient.getToken());
+//                if (this.jmBaseConfig.getSaas() && oConvertUtils.isNotEmpty(this.jimuTokenClient.getToken())) {
+//                    String var13 = this.jimuTokenClient.getUsername(request);
+//                    if (!var5.getCreateBy().equals(var13)) {
+//                        throw new JimuReportException("保存失败!");
+//                    }
+//
+//                    this.reportDao.update(var5);
+//                } else {
+//                    this.reportDao.update(var5);
+//                }
+//            }
+//
+//            return var5;
+//        }
+//    }
+//
+//    public void replaceDbCode(String reportDbId, List<Map<String, Object>> dataList) {
+//        if (oConvertUtils.isNotEmpty(reportDbId)) {
+//            List var3 = this.dbFieldDao.listByDbIdNotNull(reportDbId);
+//            Iterator var4 = var3.iterator();
+//
+//            while(var4.hasNext()) {
+//                JmReportDbField var5 = (JmReportDbField)var4.next();
+//                List var6 = null;
+//                if (var5.getDictCode().contains("http")) {
+//                    var6 = this.a(var5);
+//                } else {
+//                    var6 = this.getDictListByCode(var5.getDictCode());
+//                }
+//
+//                Iterator var7 = dataList.iterator();
+//
+//                while(var7.hasNext()) {
+//                    Map var8 = (Map)var7.next();
+//                    Object var9 = var8.get(var5.getFieldName());
+//                    String var10 = var9 == null ? null : var9.toString();
+//                    Object var11 = new ArrayList();
+//                    if (oConvertUtils.isNotEmpty(var10) && null != var6) {
+//                        var11 = (List)var6.stream().filter((var1) -> {
+//                            return var10.equals(var1.getValue());
+//                        }).collect(Collectors.toList());
+//                    }
+//
+//                    if (((List)var11).size() > 0) {
+//                        var8.replace(var5.getFieldName(), ((JmDictModel)((List)var11).get(0)).getText());
+//                    }
+//                }
+//            }
+//        }
+//
+//    }
+//
+//    public List<JimuReport> getReportByUser(String username, String reportId) {
+//        return this.reportDao.getReportByUser(username, reportId);
+//    }
+//
+//    public JSONObject getCharData(String reportId, String charId, String params, String token) {
+//        JSONObject var5 = new JSONObject();
+//        JimuReport var6 = this.reportDao.get(reportId);
+//        String var7 = var6.getJsonStr();
+//        JSONObject var8 = JSONObject.parseObject(var7);
+//        Object var9 = var8.get("chartList");
+//        JSONObject var10 = new JSONObject();
+//        if (null != var9) {
+//            JSONArray var11 = JSONArray.parseArray(var9.toString());
+//
+//            for(int var12 = 0; var12 < var11.size(); ++var12) {
+//                Object var13 = var11.getJSONObject(var12).get("layer_id");
+//                if (null != var13 && charId.equals(var13.toString())) {
+//                    var10 = var11.getJSONObject(var12);
+//                }
+//            }
+//        }
+//
+//        if (null != var10) {
+//            Object var16 = var10.get("config");
+//            Object var17 = var10.get("extData");
+//            var5.put("config", var16);
+//            var5.put("extData", var17);
+//            if (null != var17) {
+//                JSONObject var18 = JSONObject.parseObject(var17.toString());
+//                String var14 = String.valueOf(var18.get("dbCode"));
+//                String var15 = this.a(reportId, var14, params, token);
+//                var5.put("dataList", var15);
+//                return var5;
+//            }
+//        }
+//
+//        return null;
+//    }
+//
+//    public JimuReport getById(String id) {
+//        return this.reportDao.get(id);
+//    }
+//
+//    public Integer updateById(JimuReport rp) {
+//        return this.reportDao.update(rp);
+//    }
+//
+//    public int updateViewCount(String id) {
+//        return this.reportDao.updateViewCount(id);
+//    }
+//
+//    private String a(String var1, String var2, String var3, String var4) {
+//        JmReportDb var5 = this.reportDbDao.getReportDb(var1, var2);
+//        JSONArray var6 = JSONArray.parseArray(var3);
+//        HashMap var7 = new HashMap();
+//        JSONObject var8 = new JSONObject();
+//        Iterator var9 = var6.iterator();
+//
+//        while(true) {
+//            Object var10;
+//            do {
+//                if (!var9.hasNext()) {
+//                    if (var5.getDbType().equals("0")) {
+//                        String var17 = this.getBaseSql(var5, var8);
+//                        if (oConvertUtils.isNotEmpty(var5.getDbSource())) {
+//                            var10 = new ArrayList();
+//
+//                            try {
+//                                var10 = this.jmreportDynamicDbUtil.findList(var5.getDbSource(), var17, new Object[0]);
+//                            } catch (Exception var15) {
+//                                a.warn(var15.getMessage(), var15);
+//                            }
+//
+//                            return this.a((List)var10);
+//                        }
+//
+//                        List var20 = this.reportDbDao.selectListBySql(var17);
+//                        return this.a(var20);
+//                    }
+//
+//                    JSONObject var16 = new JSONObject();
+//                    String var18 = var5.getApiUrl();
+//                    var18 = FreeMarkerUtils.a(var18, var7);
+//                    var18 = var18.replace("'", "");
+//                    var5.setApiUrl(var18);
+//                    Map var19 = this.a(var5, var4, var16);
+//                    Object var21 = var19.get("dataList");
+//                    if (oConvertUtils.isNotEmpty(var21)) {
+//                        return String.valueOf(var21);
+//                    }
+//
+//                    return null;
+//                }
+//
+//                var10 = var9.next();
+//            } while(!(var10 instanceof JSONObject));
+//
+//            JSONObject var11 = JSONObject.parseObject(var10.toString());
+//            Iterator var12 = var11.keySet().iterator();
+//
+//            while(var12.hasNext()) {
+//                String var13 = (String)var12.next();
+//                String var14 = var11.getString(var13);
+//                var7.put(var13, var14);
+//                var8.put(var13, var14);
+//            }
+//        }
+//    }
+//
+//    private void a(JmReportDb var1, String var2, String var3, List<JmExpression> var4) {
+//        Iterator var5 = var4.iterator();
+//
+//        while(var5.hasNext()) {
+//            JmExpression var6 = (JmExpression)var5.next();
+//            if (var1.getDbCode().equals(var6.getDbCode())) {
+//                String var7 = var6.getFullSql(var2, var3);
+//                a.info("---表达式sql:" + var7);
+//                if (oConvertUtils.isEmpty(var1.getDbSource())) {
+//                    JmExpBacker var8 = this.reportDao.queryExpValue(var7);
+//                    var6.setValue(var8 == null ? "" : var8.getAskey());
+//                } else {
+//                    Object var11 = new HashMap();
+//
+//                    try {
+//                        var11 = (Map)this.jmreportDynamicDbUtil.findOne(var1.getDbSource(), var7, new Object[0]);
+//                    } catch (Exception var10) {
+//                        a.warn(var10.getMessage(), var10);
+//                    }
+//
+//                    var6.setValue(((Map)var11).get("askey") == null ? "" : ((Map)var11).get("askey").toString());
+//                }
+//            }
+//        }
+//
+//    }
+//
+//    private String b(String var1, String var2, String var3) {
+//        if (var2 != null && !"".equals(var2)) {
+//            var1 = "select * from (" + var1 + ") jeecg_rp_temp  where 1=1 " + var2;
+//        }
+//
+//        if (oConvertUtils.isNotEmpty(var3)) {
+//            String var4 = "order by";
+//            if (!var1.contains(var4)) {
+//                var1 = var1 + " " + var4 + " " + var3;
+//            } else {
+//                String var5 = var1.substring(var1.indexOf(var4) + var4.length());
+//                var5 = var5 + "," + var3;
+//                var1 = var1.substring(0, var1.indexOf(" " + var4 + " ")) + " " + var4 + " " + var5;
+//            }
+//        }
+//
+//        return var1;
+//    }
+//
+//    private String a(JmReportDb var1, JSONObject var2) {
+//        String var3 = var1.getDbCode();
+//        String var4 = var1.getDbSourceType();
+//        if (oConvertUtils.isNotEmpty(var1.getDbSource())) {
+//            JmReportDataSource var5 = this.jimuReportDataSourceDao.get(var1.getDbSource());
+//            if (var5 != null) {
+//                var4 = MiniDaoUtil.getDbType(var5.getDbUrl());
+//            }
+//        }
+//
+//        List var10 = this.dbFieldDao.listByDbIdFlag(var1.getId());
+//        String var6 = null;
+//        if (var10 != null && var10.size() > 0) {
+//            StringBuffer var7 = new StringBuffer();
+//            Iterator var8 = var10.iterator();
+//
+//            while(var8.hasNext()) {
+//                JmReportDbField var9 = (JmReportDbField)var8.next();
+//                d.a(var3, var4, var9, var2, var7);
+//            }
+//
+//            var6 = var7.toString();
+//        }
+//
+//        return var6;
+//    }
+//
+//    public String getBaseSql(JmReportDb jmReportDb, JSONObject paramJson) {
+//        String var3 = jmReportDb.getId();
+//        String var4 = jmReportDb.getDbCode();
+//        String var5 = jmReportDb.getDbDynSql();
+//        new HashMap();
+//        JSONObject var7 = new JSONObject();
+//        if (var5.contains("where")) {
+//            List var8 = this.dbParamDao.list(var3);
+//            if (var8 != null || var8.size() > 0) {
+//                Iterator var9 = var8.iterator();
+//
+//                while(var9.hasNext()) {
+//                    JmReportDbParam var10 = (JmReportDbParam)var9.next();
+//                    String var11 = var10.getParamName();
+//                    if (var10.getSearchFlag() == 1) {
+//                        Object var12 = paramJson.get(var4 + "__" + var10.getParamName());
+//                        if (var12 == null) {
+//                            var12 = "";
+//                        }
+//
+//                        var7.put(var11, var12);
+//                        paramJson.remove(var11);
+//                    } else {
+//                        var7.put(var11, var10.getParamValue());
+//                    }
+//                }
+//            }
+//        }
+//
+//        var7.putAll(paramJson);
+//
+//        String var13;
+//        String var16;
+//        for(Iterator var14 = var7.keySet().iterator(); var14.hasNext(); var5 = var5.replace("${" + var16 + "}", var13)) {
+//            var16 = (String)var14.next();
+//            var13 = var7.getString(var16);
+//            if (oConvertUtils.isEmpty(var13)) {
+//                var13 = "";
+//            }
+//        }
+//
+//        String var15 = this.jimuTokenClient.getToken();
+//        if (var15 != null && var15.length() > 0) {
+//            Map var17 = this.jimuTokenClient.getUserInfo(var15);
+//            var5 = d.b(var5, var17);
+//        }
+//
+//        return var5;
+//    }
+//
+//    public Result<JmPage<JimuReport>> excelQuery(String type, String name, HttpServletRequest request, Integer pageNo, Integer pageSize) {
+//        String var6 = this.jimuTokenClient.getUsername(request);
+//        JimuReport var7 = new JimuReport();
+//        if (oConvertUtils.isNotEmpty(var6) && this.jmBaseConfig.getSaas()) {
+//            var7.setCreateBy(var6);
+//        }
+//
+//        if (oConvertUtils.isNotEmpty(type)) {
+//            var7.setType(type);
+//        }
+//
+//        if (oConvertUtils.isNotEmpty(name)) {
+//            var7.setName(name);
+//        }
+//
+//        var7.setDelFlag(CommonConstant.DEL_FLAG_0);
+//        var7.setTemplate(JmConst.TEMPLATE_FLAG_0);
+//        MiniDaoPage var8 = this.reportDao.pageList(var7, pageNo, pageSize);
+//        JmPage var9 = c.a(var8);
+//        return Result.OK(var9);
+//    }
+//
+//    public Result<JmPage<JimuReport>> excelQueryByTemplate(String type, String name, HttpServletRequest request, Integer pageNo, Integer pageSize) {
+//        JimuReport var6 = new JimuReport();
+//        if (oConvertUtils.isNotEmpty(type)) {
+//            var6.setType(type);
+//        }
+//
+//        if (oConvertUtils.isNotEmpty(name)) {
+//            var6.setName(name);
+//        }
+//
+//        var6.setDelFlag(CommonConstant.DEL_FLAG_0);
+//        var6.setTemplate(JmConst.TEMPLATE_FLAG_1);
+//        MiniDaoPage var7 = this.reportDao.pageList(var6, pageNo, pageSize);
+//        JmPage var8 = c.a(var7);
+//        return Result.OK(var8);
+//    }
+//
+//    public List<JmDictModel> a(JmReportDbField var1) {
+//        return this.a(var1.getDictCode(), var1.getFieldName());
+//    }
+//
+//    public List<JmDictModel> a(String var1, String var2) {
+//        String var3 = this.jimuTokenClient.getToken();
+//        Map var4 = this.jimuTokenClient.getUserInfo(var3);
+//        var1 = d.a(var1, var4, this.jmBaseConfig.getApiBasePath());
+//        if (var1.contains("'")) {
+//            var1 = var1.replace("'", "");
+//        }
+//
+//        if (var2 != null && !"".equals(var2)) {
+//            if (var1.contains("?")) {
+//                var1 = var1 + "&" + "dictCode" + "=" + var2;
+//            } else {
+//                var1 = var1 + "?" + "dictCode" + "=" + var2;
+//            }
+//        }
+//
+//        String var5 = d.b(var1, (String)null);
+//
+//        try {
+//            JSONArray var6 = JSONObject.parseArray(var5);
+//            ArrayList var7 = new ArrayList();
+//
+//            for(int var8 = 0; var8 < var6.size(); ++var8) {
+//                JSONObject var9 = var6.getJSONObject(var8);
+//                Object var10 = var9.get("text");
+//                Object var11 = var9.get("value");
+//                if (oConvertUtils.isEmpty(var10) || oConvertUtils.isEmpty(var11)) {
+//                    return null;
+//                }
+//
+//                JmDictModel var12 = new JmDictModel();
+//                var12.setText(var10.toString());
+//                var12.setValue(var11.toString());
+//                var7.add(var12);
+//            }
+//
+//            return var7;
+//        } catch (Exception var13) {
+//            a.info("获取数据失败,原因:" + var13.getMessage());
+//            return null;
+//        }
+//    }
+//
+//    public List<JmDictModel> a(JmReportDbField var1, List<Map<String, Object>> var2) {
+//        Integer var3 = var1.getSearchFlag();
+//        Integer var4 = var1.getSearchMode();
+//        String var5 = var1.getFieldName();
+//        if (var3 == CommonConstant.SEARCH_FLAG_1 && var4 != CommonConstant.SEARCH_MODEL_2) {
+//            ArrayList var6 = new ArrayList();
+//            Iterator var7 = var2.iterator();
+//
+//            while(var7.hasNext()) {
+//                Map var8 = (Map)var7.next();
+//                Iterator var9 = var8.keySet().iterator();
+//
+//                while(var9.hasNext()) {
+//                    String var10 = (String)var9.next();
+//                    if (var10.toLowerCase().equals(var5)) {
+//                        String var11 = String.valueOf(var8.get(var10));
+//                        boolean var12 = var6.stream().anyMatch((var1x) -> {
+//                            return var1x.getText().equals(var11);
+//                        });
+//                        if (!var12 && oConvertUtils.isNotEmpty(var11)) {
+//                            JmDictModel var13 = new JmDictModel();
+//                            var13.setText(var11);
+//                            var13.setValue(var11);
+//                            var6.add(var13);
+//                        }
+//                    }
+//                }
+//            }
+//
+//            return var6;
+//        } else {
+//            return null;
+//        }
+//    }
+//
+//    public String a(List<Map<String, Object>> var1) {
+//        ArrayList var2 = new ArrayList();
+//        Iterator var3 = var1.iterator();
+//
+//        while(var3.hasNext()) {
+//            Map var4 = (Map)var3.next();
+//            String var5 = JSONObject.toJSONString(var4);
+//            var2.add(var5.toLowerCase());
+//        }
+//
+//        if (var2.size() > 0) {
+//            String var6 = var2.toString();
+//            return var6;
+//        } else {
+//            return null;
+//        }
+//    }
+//
+//    private ReportDbInfo a(JmReportDb var1, JSONObject var2, List<Map<String, Object>> var3) {
+//        ReportDbInfo var4 = new ReportDbInfo(var1.getIsPage(), var1.getIsList(), var1.getDbType());
+//        String var5 = var1.getDbCode();
+//        HashMap var6 = new HashMap();
+//        List var7 = this.dbParamDao.list(var1.getId());
+//        ArrayList var8 = new ArrayList();
+//        var8.add("pageNo");
+//        var8.add("pageSize");
+//        var8.add("printAll");
+//        Iterator var9;
+//        String var11;
+//        if (d.a(var7)) {
+//            var9 = var7.iterator();
+//
+//            while(var9.hasNext()) {
+//                JmReportDbParam var10 = (JmReportDbParam)var9.next();
+//                var8.add(var10.getParamName());
+//                var11 = var10.getParamValue();
+//                if (var11 != null && !"".equals(var11)) {
+//                    var6.put(var10.getParamName(), var11);
+//                }
+//            }
+//        }
+//
+//        var9 = var2.keySet().iterator();
+//
+//        String var14;
+//        while(var9.hasNext()) {
+//            var14 = (String)var9.next();
+//            Object var15 = var2.get(var14);
+//            if (var15 != null) {
+//                if (var14.startsWith(var5)) {
+//                    var14 = var14.replace(var5 + "__", "");
+//                    var6.put(var14, var15);
+//                } else if (var8.indexOf(var14) >= 0) {
+//                    var6.put(var14, var15);
+//                }
+//            }
+//        }
+//
+//        var14 = var1.getJavaType();
+//        var11 = var1.getJavaValue();
+//        IDataSetFactory var12 = d.d(var14, var11);
+//        if (var12 == null) {
+//            return var4;
+//        } else {
+//            List var16;
+//            if ("1".equals(var1.getIsPage())) {
+//                JmPage var13 = var12.createPageData(var6);
+//                var4.setList(var13.getRecords());
+//                var4.setTotal((long)var13.getTotal());
+//            } else {
+//                var16 = var12.createData(var6);
+//                var4.setList(var16);
+//            }
+//
+//            var3 = oConvertUtils.deepCopy(var4.getList());
+//            if (null != var4.getList()) {
+//                var16 = var4.getList();
+//                this.replaceDbCode(var1.getId(), var16);
+//                var4.setList(var16);
+//            }
+//
+//            return var4;
+//        }
+//    }
+//}

+ 1 - 1
boman-report/src/main/resources/static/jmreport/desreport_/corelib/jmsheet.js

@@ -74614,7 +74614,7 @@
         else if ("exportExcel_pdf" === e) this.onSettingEvent("pdf");
         else if ("export_img" === e) this.onSettingEvent("export_img");
         else if ("exportText_pdf" === e) this.onSettingEvent("iText_pdf");
-        else if ("exportExcel_empty" === e) this.onSettingEvent("exportExcel_empty");
+        else if ("exportExcel_empty" === e) this.onExportExcelEmpty(i.settings);
         else if ("exportExcel_all" === e) this.onExportExcelAll(i.settings);
         else if ("print_screen" === e) this.verticalScrollbar.move({top: 0}),
             setTimeout((function () {

+ 1 - 2
boman-report/src/main/resources/static/jmreport/desreport_/js/biz/view.js

@@ -623,7 +623,6 @@ let xs = null;
                                      //导出全部excel
                                      //window.open(baseFull+`/jmreport/exportAllExcel/${excelConfigId}?token=${token}`);
                                      xs.getLayerBase64().then(values=>{
-                                         console.log("你是谁")
                                          base64Arry = values;
                                          var dataStr = '';
                                          let queryParam  = rpViewInst.getRpQueryParam();
@@ -638,7 +637,7 @@ let xs = null;
                                          Vue.prototype.$Spin.show();
                                          $http.post({
                                              contentType:'json',
-                                             url:api.exportAllExcel,
+                                             url:api.exportEmptyExcel,
                                              data : dataStr,
                                              success:(result)=>{
                                                  ajaxFileDownload(result.file, result.name);

+ 2 - 1
boman-report/src/main/resources/static/jmreport/desreport_/js/core/api.js

@@ -63,7 +63,8 @@ const api = {
     //导出全部excel
     exportAllExcel: getOrigin('/exportAllExcel'),
     // 导出excel模板
-    exportEmptyExcel: getOrigin('/exportEmptyExcel'),
+    // exportEmptyExcel: getOrigin('/exportEmptyExcel'),
+    exportEmptyExcel: getOrigin('/exportAllExcel'),
     //导出全部Pdf
     exportPdf: getOrigin('/exportPdf'),
     //预览次数