| | |
| | | |
| | | |
| | | public static void main(String[] args) throws Exception { |
| | | String dataPath = "D:\\测评系统\\需求\\2023\\5.领导潜力报告\\report\\LAQ表头数据文件.xlsx"; |
| | | String dataPath = "D:\\测评系统\\需求\\LAQ\\report\\LAQ表头数据文件.xlsx"; |
| | | // 获取导入数据 |
| | | File file = new File(dataPath); |
| | | InputStream in = new FileInputStream(file); |
| | |
| | | for (int i = 0; i < laqTemplateList.size(); i++) { |
| | | LAQTemplate laqTemplate = laqTemplateList.get(i); |
| | | //组装报告所用数据 |
| | | Map<String, String> textMap = new HashMap<>(); |
| | | textMap.put("sendEmailFileName",laqTemplate.getName()); |
| | | textMap.put("nowDate", DateUtils.getDate()); |
| | | MapDataUtil.objectToMap(laqTemplate,textMap); |
| | | Map<String, Object> textMap = new HashMap<>(); |
| | | // textMap.put("sendEmailFileName",laqTemplate.getName()); |
| | | // textMap.put("nowDate", DateUtils.getDate()); |
| | | // MapDataUtil.objectToMap(laqTemplate,textMap); |
| | | textMap.put("olas","50"); |
| | | textMap.put("ca","32"); |
| | | textMap.put("bla","34"); |
| | | textMap.put("nr","3"); |
| | | textMap.put("ar","45"); |
| | | textMap.put("open","67"); |
| | | textMap.put("cons","12"); |
| | | textMap.put("extra","48"); |
| | | textMap.put("agree","90"); |
| | | textMap.put("emosta","23"); |
| | | // textMap.put("perfomance","0"); |
| | | |
| | | |
| | | LAQReport report = new LAQReport(); |
| | | ReportResultData resultData = report.getTemplateParameters(textMap, ReportTypeEnum.LAQ, LangTypeEnum.codeOf("English")); |
| | | // ReportResultData resultData = report.getTemplateParameters(textMap, ReportTypeEnum.LAQ, LangTypeEnum.codeOf("English")); |
| | | // TReportTemplate template = null; |
| | | // String zipFileName = WordUtil.makeReportFile("D:\\测评系统\\需求\\LAQ\\report\\LAQ英文报告-20230926.docx", template, textMap, new HashMap<>(), deleteStrList); |
| | | // fileNameList.add(zipFileName); |
| | | ZipSecureFile.setMinInflateRatio(0.001); |
| | | try (OutputStream os = new FileOutputStream("D:\\测评系统\\需求\\2023\\5.领导潜力报告\\report\\LAQ.docx");XWPFDocument document = new XWPFDocument(POIXMLDocument.openPackage("D:\\测评系统\\需求\\2023\\5.领导潜力报告\\report\\LAQ英文报告-20230926.docx"))){ |
| | | try (OutputStream os = new FileOutputStream("D:\\测评系统\\需求\\LAQ\\report\\LAQ英文模板-wzp-修改版-1.docx");XWPFDocument document = new XWPFDocument(POIXMLDocument.openPackage("D:\\测评系统\\需求\\LAQ\\report\\LAQ英文模板-wzp-修改版.docx"))){ |
| | | Map<Integer,List<SeriesData>> seriesDatas = initData(textMap); |
| | | changeChart(document,seriesDatas,textMap); |
| | | document.write(os); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 替换LAQ图表数据 |
| | | * @param document 文档对象 |
| | | * @param textMap 数据源 |
| | | */ |
| | | public static void changeChart(XWPFDocument document, Map<String, Object> textMap) { |
| | | Map<Integer,List<SeriesData>> seriesDatas = initData(textMap); |
| | | changeChart(document,seriesDatas,textMap); |
| | | } |
| | | |
| | | /** |
| | | * 初始化报告数据 |
| | | * @param textMap |
| | | * @return |
| | | */ |
| | | public static Map<Integer,List<SeriesData>> initData(Map<String, String> textMap){ |
| | | public static Map<Integer,List<SeriesData>> initData(Map<String, Object> textMap){ |
| | | Map<Integer,List<SeriesData>> seriesDataMap = new HashMap<>(); |
| | | //获取命中数值 |
| | | Double olas = Double.valueOf(textMap.get("olas")); |
| | | Double ca = Double.valueOf(textMap.get("ca")); |
| | | Double bla = Double.valueOf(textMap.get("bla")); |
| | | Double nr = Double.valueOf(textMap.get("nr")); |
| | | Double ar = Double.valueOf(textMap.get("ar")); |
| | | Double open = Double.valueOf(textMap.get("open")); |
| | | Double cons = Double.valueOf(textMap.get("cons")); |
| | | Double extra = Double.valueOf(textMap.get("extra")); |
| | | Double agree = Double.valueOf(textMap.get("agree")); |
| | | Double emosta = Double.valueOf(textMap.get("emosta")); |
| | | Double olas = Double.valueOf((String)textMap.get("olas")); |
| | | Double ca = Double.valueOf((String)textMap.get("ca")); |
| | | Double bla = Double.valueOf((String)textMap.get("bla")); |
| | | Double nr = Double.valueOf((String)textMap.get("nr")); |
| | | Double ar = Double.valueOf((String)textMap.get("ar")); |
| | | Double open = Double.valueOf((String)textMap.get("open")); |
| | | Double cons = Double.valueOf((String)textMap.get("cons")); |
| | | Double extra = Double.valueOf((String)textMap.get("extra")); |
| | | Double agree = Double.valueOf((String)textMap.get("agree")); |
| | | Double emosta = Double.valueOf((String)textMap.get("emosta")); |
| | | Double perfomance; |
| | | if(textMap.get("perfomance") != null){ |
| | | perfomance = Double.valueOf((String)textMap.get("perfomance")); |
| | | }else{ |
| | | perfomance = -1D; |
| | | } |
| | | |
| | | |
| | | // 图表1 |
| | | List<SeriesData> seriesDatas = Arrays.asList( |
| | |
| | | ); |
| | | seriesDataMap.put(10,seriesDatas); |
| | | |
| | | // 图表11 |
| | | seriesDatas = Arrays.asList( |
| | | new SeriesData("X 值", Arrays.asList( |
| | | new RowData("X 值", perfomance.doubleValue() == -1 ? perfomance.doubleValue() : olas.doubleValue()) |
| | | )), |
| | | new SeriesData("Y 值", Arrays.asList( |
| | | new RowData("Y 值", perfomance.doubleValue()) |
| | | )) |
| | | ); |
| | | seriesDataMap.put(11,seriesDatas); |
| | | |
| | | return seriesDataMap; |
| | | } |
| | | |
| | |
| | | * @param seriesDataMap |
| | | * @param textMap 数据源 |
| | | */ |
| | | public static void changeChart(XWPFDocument document, Map<Integer,List<SeriesData>> seriesDataMap, Map<String, String> textMap) { |
| | | public static void changeChart(XWPFDocument document, Map<Integer,List<SeriesData>> seriesDataMap, Map<String, Object> textMap) { |
| | | if(StringUtils.isEmpty(textMap)){ |
| | | return; |
| | | } |
| | |
| | | |
| | | //散点图 |
| | | if (!plot.getScatterChartList().isEmpty()) { |
| | | List<SeriesData> seriesDatas = seriesDataMap.get(10); |
| | | List<SeriesData> seriesDatas = seriesDataMap.get(barIndex); |
| | | CTScatterChart scatterChart = plot.getScatterChartArray(0); |
| | | //System.out.println("散点图{"+plot.getScatterChartList().size()+"}"); |
| | | //刷新内置excel数据 |
| | |
| | | updateScatterChart(seriesDatas, ser.getXVal(), ser.getYVal()); |
| | | ++i; |
| | | } |
| | | barIndex++; |
| | | } |
| | | } |
| | | } |
| | |
| | | if(StringUtils.isNotEmpty(cellValu.valueStr)){ |
| | | cell.setCellValue(cellValu.valueStr); |
| | | }else{ |
| | | cell.setCellValue(cellValu.value); |
| | | if(cellValu.value != -1){ |
| | | cell.setCellValue(cellValu.value); |
| | | }else{ |
| | | cell.setCellValue((String) null); |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | CTNumVal val = xNumCnt > i ? xDataSource.getNumRef().getNumCache().getPtArray(i) |
| | | : xDataSource.getNumRef().getNumCache().addNewPt(); |
| | | val.setIdx(i); |
| | | val.setV(String.format("%.0f", cellValu.value)); |
| | | if(cellValu.value == -1){ |
| | | val.setV(null); |
| | | }else { |
| | | val.setV(String.format("%.0f", cellValu.value)); |
| | | } |
| | | } |
| | | |
| | | //更新Y坐标缓存 |
| | |
| | | CTNumVal val = yNumCnt > i ? yDataSource.getNumRef().getNumCache().getPtArray(i) |
| | | : yDataSource.getNumRef().getNumCache().addNewPt(); |
| | | val.setIdx(i); |
| | | val.setV(String.format("%.0f", cellValu.value)); |
| | | if(cellValu.value == -1){ |
| | | val.setV(null); |
| | | }else { |
| | | val.setV(String.format("%.0f", cellValu.value)); |
| | | } |
| | | } |
| | | |
| | | // 更新对应excel的范围 |