|
@@ -1,7 +1,7 @@
|
|
package com.sundata.product.rwa.calc.service;
|
|
package com.sundata.product.rwa.calc.service;
|
|
|
|
|
|
import com.sundata.common.util.DBExecutor;
|
|
import com.sundata.common.util.DBExecutor;
|
|
-import com.sundata.product.rwa.calc.model.ReportParamCalcModel;
|
|
|
|
|
|
+import com.sundata.product.rwa.calc.model.ReportUnitParamCalcModel;
|
|
import com.sundata.product.rwa.reportformconfigreportcreater.model.ReportCalculationModel;
|
|
import com.sundata.product.rwa.reportformconfigreportcreater.model.ReportCalculationModel;
|
|
import com.sundata.product.rwa.reportformconfigreportcreater.model.ReportDefinitionModel;
|
|
import com.sundata.product.rwa.reportformconfigreportcreater.model.ReportDefinitionModel;
|
|
import com.sundata.product.rwa.reportformconfigreportcreater.service.ReportFillingConfigService;
|
|
import com.sundata.product.rwa.reportformconfigreportcreater.service.ReportFillingConfigService;
|
|
@@ -20,7 +20,7 @@ import java.io.FileInputStream;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Files;
|
|
-import java.util.HashMap;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
|
@@ -44,9 +44,31 @@ public class ReportCalcService {
|
|
@Autowired
|
|
@Autowired
|
|
ReportUnitParamCalcService reportUnitParamCalcService;
|
|
ReportUnitParamCalcService reportUnitParamCalcService;
|
|
|
|
|
|
- public void createAllReport(String calcIndex, String dataDate, Map<String, String> context, Map<String, Object> reportParam) {
|
|
|
|
|
|
+ public void createAllReport(String calcIndex, String dataDate, Map<String, Object> context, Map<String, Object> reportParam) {
|
|
List<ReportDefinitionModel> reportParamDefineModels = service.getDataList(new ReportDefinitionModel());
|
|
List<ReportDefinitionModel> reportParamDefineModels = service.getDataList(new ReportDefinitionModel());
|
|
- log.debug("开始处理报表");
|
|
|
|
|
|
+ context.putAll(reportParam);
|
|
|
|
+ List<File> tempTmpFiles = new ArrayList<>();
|
|
|
|
+ // 字典里获取附件路径
|
|
|
|
+ String templatePath = DBExecutor.doQuery("select NOUNVALUE from sys_noun where NOUNITEM = 'ATTACHPATH'");
|
|
|
|
+ //
|
|
|
|
+ File tempTmpFileMain = new File(templatePath + File.separator + "tempTmp" + File.separator + "reportuploadconfig" + File.separator + calcIndex ,"main.xlsx");
|
|
|
|
+ tempTmpFileMain.getParentFile().mkdirs();
|
|
|
|
+ tempTmpFileMain.delete();
|
|
|
|
+ /*
|
|
|
|
+ 1. 将所有文件处理到一个 main 文件中 ,将其他公式代入并计算 main
|
|
|
|
+ */
|
|
|
|
+ for (ReportDefinitionModel reportDefinitionModel : reportParamDefineModels) {
|
|
|
|
+ tempTmpFiles.add(createTempReport(reportDefinitionModel,calcIndex,dataDate,context));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ 2. 将 main 中 其他公式 的数据复制到临时结果文件中
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ 3. 运算每个报表的自己公式并复制到结果文件清单中
|
|
|
|
+ */
|
|
|
|
+ log.debug("开始处理集成报表");
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -56,16 +78,16 @@ public class ReportCalcService {
|
|
* @param calcIndex
|
|
* @param calcIndex
|
|
* @param dataDate
|
|
* @param dataDate
|
|
* @param context
|
|
* @param context
|
|
- * @param reportParam
|
|
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- public File createTempReport(ReportDefinitionModel model, String calcIndex, String dataDate, Map<String, Object> context, Map<String, Object> reportParam) {
|
|
|
|
|
|
+ public File createTempReport(ReportDefinitionModel model, String calcIndex, String dataDate, Map<String, Object> context) {
|
|
String reportno = model.getReportNo();
|
|
String reportno = model.getReportNo();
|
|
log.debug("处理报表:{}-{}", reportno, model.getReportName());
|
|
log.debug("处理报表:{}-{}", reportno, model.getReportName());
|
|
File tempFile = null;
|
|
File tempFile = null;
|
|
String reportType = model.getReportType();
|
|
String reportType = model.getReportType();
|
|
- List<ReportParamCalcModel> reportParamCalcModels = reportUnitParamCalcService.calc(calcIndex, dataDate, context, reportno);
|
|
|
|
- Map<String, Object> reportParamMap = CollectionToMapConverter.toMap(reportParamCalcModels, ReportParamCalcModel::getParamCalcObjectName, ReportParamCalcModel::getValue);
|
|
|
|
|
|
+// context.putAll(reportParam);
|
|
|
|
+ List<ReportUnitParamCalcModel> reportUnitParamCalcModels = reportUnitParamCalcService.calc(calcIndex, dataDate, context, reportno);
|
|
|
|
+ Map<String, Object> reportParamMap = CollectionToMapConverter.toMap(reportUnitParamCalcModels, ReportUnitParamCalcModel::getParamCalcObjectName, ReportUnitParamCalcModel::getValue);
|
|
// 字典里获取附件路径
|
|
// 字典里获取附件路径
|
|
String templatePath = DBExecutor.doQuery("select NOUNVALUE from sys_noun where NOUNITEM = 'ATTACHPATH'");
|
|
String templatePath = DBExecutor.doQuery("select NOUNVALUE from sys_noun where NOUNITEM = 'ATTACHPATH'");
|
|
//
|
|
//
|
|
@@ -88,8 +110,8 @@ public class ReportCalcService {
|
|
// 固定行列 使用单元格处理的内容逐一覆盖报表计算过程
|
|
// 固定行列 使用单元格处理的内容逐一覆盖报表计算过程
|
|
try {
|
|
try {
|
|
Workbook workbook = WorkbookFactory.create(new FileInputStream(reportTempFile));
|
|
Workbook workbook = WorkbookFactory.create(new FileInputStream(reportTempFile));
|
|
- for (int i = 0; i < reportParamCalcModels.size(); i++) {
|
|
|
|
- ReportCalculationModel reportCalculationModel = reportParamCalcModels.get(i).getReportCalcModel();
|
|
|
|
|
|
+ for (ReportUnitParamCalcModel reportUnitParamCalcModel : reportUnitParamCalcModels) {
|
|
|
|
+ ReportCalculationModel reportCalculationModel = reportUnitParamCalcModel.getReportCalcModel();
|
|
Sheet sheet = workbook.getSheetAt(reportCalculationModel.getReportUnitSheet());
|
|
Sheet sheet = workbook.getSheetAt(reportCalculationModel.getReportUnitSheet());
|
|
if (sheet == null) {
|
|
if (sheet == null) {
|
|
sheet = workbook.createSheet();
|
|
sheet = workbook.createSheet();
|
|
@@ -107,10 +129,10 @@ public class ReportCalcService {
|
|
cell.setCellFormula(reportCalculationModel.getUnitCalcInfo());
|
|
cell.setCellFormula(reportCalculationModel.getUnitCalcInfo());
|
|
} else if ("2".equals(reportCalculationModel.getUnitType())) {
|
|
} else if ("2".equals(reportCalculationModel.getUnitType())) {
|
|
// 如果单元格类型是字符串
|
|
// 如果单元格类型是字符串
|
|
- cell.setCellValue(String.valueOf(reportParamCalcModels.get(i).getValue()));
|
|
|
|
|
|
+ cell.setCellValue(String.valueOf(reportUnitParamCalcModel.getValue()));
|
|
} else if ("3".equals(reportCalculationModel.getUnitType())) {
|
|
} else if ("3".equals(reportCalculationModel.getUnitType())) {
|
|
// 如果单元格类型是数字
|
|
// 如果单元格类型是数字
|
|
- cell.setCellValue((Double) DataUtil.getDataDefault(reportParamCalcModels.get(i).getValue(), Double.class));
|
|
|
|
|
|
+ cell.setCellValue((Double) DataUtil.getDataDefault(reportUnitParamCalcModel.getValue(), Double.class));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
workbook.write(Files.newOutputStream(tempTmpFilePath.toPath()));
|
|
workbook.write(Files.newOutputStream(tempTmpFilePath.toPath()));
|
|
@@ -125,10 +147,12 @@ public class ReportCalcService {
|
|
.build()
|
|
.build()
|
|
.fill(reportParamMap, new JxlsOutputFile(tempTmpFilePath));
|
|
.fill(reportParamMap, new JxlsOutputFile(tempTmpFilePath));
|
|
} catch (FileNotFoundException e) {
|
|
} catch (FileNotFoundException e) {
|
|
- throw new RuntimeException(e);
|
|
|
|
|
|
+ log.error(e.getMessage(), e);
|
|
|
|
+ throw new CalcException(calcIndex, e.getMessage());
|
|
}
|
|
}
|
|
|
|
+ } else {
|
|
|
|
+ log.warn("此类报表类型并没有处理过程:{}", reportno);
|
|
}
|
|
}
|
|
-
|
|
|
|
return tempTmpFilePath;
|
|
return tempTmpFilePath;
|
|
}
|
|
}
|
|
}
|
|
}
|