Преглед изворни кода

[task-1766] 性能验证模块 开发 (二期) / 添加新的验证方法和新的配置detail表

Li Yuan пре 1 година
родитељ
комит
ea6e304649
13 измењених фајлова са 109 додато и 17 уклоњено
  1. 21 0
      ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model/InspectionConfigVO.java
  2. 1 1
      ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/LinearRangeAverageSlope.java
  3. 4 3
      ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/LinearRangeEP6A.java
  4. 1 1
      ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/LinearRangeRecoveryMethod.java
  5. 62 3
      ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/PVModel.java
  6. 1 1
      ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/PrecisionEP15.java
  7. 1 1
      ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/PrecisionRepeatability.java
  8. 1 1
      ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/TruenessBiasAssessment.java
  9. 2 2
      ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/TruenessEP15Patient.java
  10. 1 2
      ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/TruenessRefernece.java
  11. 10 0
      ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/report/ReportDataDTO.java
  12. 1 0
      ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/report/ReportFactory.java
  13. 3 2
      ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/service/impl/PerformanceVerificationServiceImpl.java

+ 21 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model/InspectionConfigVO.java

@@ -34,6 +34,9 @@ public class InspectionConfigVO extends ConfigVO {
 
     private String reportTemplate;
 
+    private String chartOption;
+    private boolean isUsingReportTemplate = true;
+
     public InspectionConfigVO() {
 
     }
@@ -54,6 +57,8 @@ public class InspectionConfigVO extends ConfigVO {
             }
             this.specimensName = names;
         }
+        //just for unit testing.
+        this.isUsingReportTemplate = false;
     }
 
     public InspectionConfigVO(String name, int days, int specimensNum, String[] specimensName, int repeatNum,
@@ -191,4 +196,20 @@ public class InspectionConfigVO extends ConfigVO {
     public void setReportTemplate(String reportTemplate) {
         this.reportTemplate = reportTemplate;
     }
+
+    public boolean isUsingReportTemplate() {
+        return isUsingReportTemplate;
+    }
+
+    public void setUsingReportTemplate(boolean usingReportTemplate) {
+        isUsingReportTemplate = usingReportTemplate;
+    }
+
+    public String getChartOption() {
+        return chartOption;
+    }
+
+    public void setChartOption(String chartOption) {
+        this.chartOption = chartOption;
+    }
 }

+ 1 - 1
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/LinearRangeAverageSlope.java

@@ -103,7 +103,7 @@ public class LinearRangeAverageSlope extends PVModel {
 
     @Override
     public String generateResult() {
-        return null;
+        return renderReportTemplate(this,null);
     }
 
 

+ 4 - 3
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/LinearRangeEP6A.java

@@ -150,7 +150,7 @@ public class LinearRangeEP6A extends PVModel {
 
     @Override
     public String generateResult() {
-        return null;
+        return renderReportTemplate(this,null);
     }
 
 
@@ -177,7 +177,7 @@ public class LinearRangeEP6A extends PVModel {
         config.put("yAxisLow", -0.1);
         config.put("data", JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect));
 
-        chartDTO.setOption(EchartsFreemarkerUtils.generateChart("/scatter/linesForRange.ftl", config));
+        chartDTO.setOption(renderChartTemplate(config,1,"/scatter/linesForRange.ftl"));
         return chartDTO;
     }
 
@@ -191,7 +191,8 @@ public class LinearRangeEP6A extends PVModel {
 //        chartDTO.setData(data);
         Map<String, Object> map = new HashMap<>();
         map.put("data", JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect));
-        chartDTO.setOption(EchartsFreemarkerUtils.generateChart("/scatter/polynomialRegression.ftl", map));
+
+        chartDTO.setOption(renderChartTemplate(map,0,"/scatter/polynomialRegression.ftl"));
         return chartDTO;
     }
 

+ 1 - 1
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/LinearRangeRecoveryMethod.java

@@ -35,7 +35,7 @@ public class LinearRangeRecoveryMethod extends LinearRangeAverageSlope {
 
     @Override
     public String generateResult() {
-        return null;
+        return renderReportTemplate(this,null);
     }
 
 

+ 62 - 3
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/PVModel.java

@@ -1,19 +1,34 @@
 package com.lc.ibps.components.verification.model2;
 
+import com.alibaba.fastjson.JSON;
 import com.lc.ibps.components.verification.model.InspectionConfigVO;
 import com.lc.ibps.components.verification.report.ChartDTO;
+import com.lc.ibps.components.verification.report.EchartsFreemarkerUtils;
 import com.lc.ibps.components.verification.report.SheetDTO;
 import com.lc.ibps.components.verification.report.TableDTO;
+import freemarker.cache.StringTemplateLoader;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
 import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.math3.distribution.ChiSquaredDistribution;
 import org.apache.commons.math3.distribution.TDistribution;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.*;
 
 public abstract class PVModel {
+    protected static final Logger logger = LoggerFactory.getLogger(PVModel.class);
 
+    Configuration cfg;
+    private String reportTemplate;
+    private Map[] chartTemplate;
+
+    private List<String> chartNames;
     private boolean isSupportItems;
     private String itemName;
     private int scale;
@@ -32,6 +47,25 @@ public abstract class PVModel {
         this.specimensName = configVO.getSpecimensName();
         this.itemName = configVO.getItemName();
         this.isSupportItems = configVO.isSupportItems();
+
+        if(configVO.isUsingReportTemplate()){
+            this.reportTemplate = configVO.getReportTemplate();
+            cfg = new Configuration(Configuration.VERSION_2_3_30);
+            StringTemplateLoader stringLoader = new StringTemplateLoader();
+            stringLoader.putTemplate(itemName+"Report", reportTemplate);
+            cfg.setTemplateLoader(stringLoader);
+            if(StringUtils.isNotEmpty(configVO.getChartOption())) {
+                chartTemplate = JSON.parseObject(configVO.getChartOption(), Map[].class);
+                chartNames = new ArrayList<>();
+                for (Map chart : chartTemplate) {
+                    String value = (String) chart.get("value");
+                    String label = (String) chart.get("label");
+                    chartNames.add(label);
+                    stringLoader.putTemplate( label + "Chart", value.replaceAll("\\s*|\t|\r|\n", ""));
+                }
+            }
+        }
+
     }
 
     public double[][] getData() {
@@ -222,4 +256,29 @@ public abstract class PVModel {
         }
         return reports;
     }
+
+    protected String renderChartTemplate(Object ctx, int index, String filePath) {
+        return renderTemplate(ctx,chartNames.get(index)+"Chart",filePath);
+    }
+
+    protected String renderReportTemplate(Object ctx,  String filePath) {
+        return renderTemplate(ctx,itemName+"Report",filePath);
+    }
+
+    private String renderTemplate(Object ctx, String name, String filePath) {
+        if(cfg != null) {
+            Writer out = new StringWriter(2048);
+
+            try {
+                Template tpl = cfg.getTemplate(name, "utf-8");
+                tpl.process(ctx, out);
+            } catch (Exception e) {
+                logger.error("Get template occurs error.", e);
+            }
+
+            return out.toString();
+        } else{
+            return EchartsFreemarkerUtils.generate(filePath, ctx);
+        }
+    }
 }

+ 1 - 1
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/PrecisionEP15.java

@@ -72,7 +72,7 @@ public class PrecisionEP15 extends PVModel {
 
     @Override
     public String generateResult() {
-        return EchartsFreemarkerUtils.generate("/report/precisionEP15A2.ftl", this);
+        return renderReportTemplate(this,"/report/precisionEP15A2.ftl");
 
     }
 

+ 1 - 1
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/PrecisionRepeatability.java

@@ -93,7 +93,7 @@ public class PrecisionRepeatability extends PVModel {
 
     @Override
     public String generateResult() {
-        return EchartsFreemarkerUtils.generate("/report/precisionRepeatability.ftl", this);
+        return renderReportTemplate(this,"/report/precisionRepeatability.ftl");
     }
 
 

+ 1 - 1
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/TruenessBiasAssessment.java

@@ -64,7 +64,7 @@ public class TruenessBiasAssessment extends PVModel {
 
     @Override
     public String generateResult() {
-        return null;
+        return renderReportTemplate(this,null);
     }
 
 

+ 2 - 2
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/TruenessEP15Patient.java

@@ -213,7 +213,7 @@ public class TruenessEP15Patient extends PVModel {
 
     @Override
     public String generateResult() {
-        return EchartsFreemarkerUtils.generate("/report/truesnessUsingPatient.ftl", this);
+        return renderReportTemplate(this,"/report/truesnessUsingPatient.ftl");
     }
 
 
@@ -239,7 +239,7 @@ public class TruenessEP15Patient extends PVModel {
         config.put("yAxisUp", sdClaim);
         config.put("yAxisLow", -sdClaim);
         config.put("data", JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect));
-        chartDTO.setOption(EchartsFreemarkerUtils.generateChart("/scatter/linesForRange.ftl", config));
+        chartDTO.setOption(renderChartTemplate(config,0,"/scatter/linesForRange.ftl"));
         return chartDTO;
     }
 

+ 1 - 2
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/model2/TruenessRefernece.java

@@ -83,8 +83,7 @@ public class TruenessRefernece extends PVModel {
 
     @Override
     public String generateResult() {
-
-        return EchartsFreemarkerUtils.generate("/report/truesnessUsingRefernece.ftl", this);
+        return renderReportTemplate(this,"/report/truesnessUsingRefernece.ftl");
     }
 
     @Override

+ 10 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/report/ReportDataDTO.java

@@ -5,6 +5,8 @@ public class ReportDataDTO {
     private TableDTO dataDTO;
     private SheetDTO[] sheetDTO;
 
+    private String reportResult;
+
 
     public TableDTO getDataDTO() {
         return dataDTO;
@@ -21,4 +23,12 @@ public class ReportDataDTO {
     public void setSheetDTO(SheetDTO[] sheetDTO) {
         this.sheetDTO = sheetDTO;
     }
+
+    public String getReportResult() {
+        return reportResult;
+    }
+
+    public void setReportResult(String reportResult) {
+        this.reportResult = reportResult;
+    }
 }

+ 1 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/report/ReportFactory.java

@@ -8,6 +8,7 @@ public class ReportFactory {
         ReportDataDTO data = new ReportDataDTO();
         data.setDataDTO(builder.getPvModel().buildDataTableDTO());
         data.setSheetDTO(builder.getPvModel().buildSheetDTO());
+        data.setReportResult(builder.getPvModel().generateResult());
         return data;
     }
 }

+ 3 - 2
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/verification/service/impl/PerformanceVerificationServiceImpl.java

@@ -39,7 +39,7 @@ public class PerformanceVerificationServiceImpl implements PerformanceVerificati
         ReportDataDTO dataDTO = ReportFactory.build(builder);
         experimental.getData().setShiYanShuJu(JSONObject.toJSONString(builder.getDataArrays(), SerializerFeature.DisableCircularReferenceDetect));
         experimental.getData().setJiSuanJieGuo(JSONObject.toJSONString(dataDTO, SerializerFeature.DisableCircularReferenceDetect));
-        experimental.getData().setShiYanJieLun(builder.getPvModel().generateResult());
+        experimental.getData().setShiYanJieLun(dataDTO.getReportResult());
         experimental.save();
         return dataDTO;
     }
@@ -91,7 +91,7 @@ public class PerformanceVerificationServiceImpl implements PerformanceVerificati
 
     private InspectionConfigVO getInspectionConfig(String id) {
 
-        ExperimentalPo experimentalPo = experimentalRepository.get(id);
+        ExperimentalPo experimentalPo = experimentalRepository.loadCascade(id);
         String shiYanCanShu = experimentalPo.getShiYanCanShu();
         InspectionConfigVO config = JSON.parseObject(shiYanCanShu, InspectionConfigVO.class);
         config.setName(experimentalPo.getFangAnLeiXing());
@@ -100,6 +100,7 @@ public class PerformanceVerificationServiceImpl implements PerformanceVerificati
         config.setKey(experimentalPo.getFangFaKey());
         config.setItemName(experimentalPo.getShiYanXiangMu());
         config.setReportTemplate(experimentalPo.getConfigDetailPo().getTemplate());
+        config.setChartOption(experimentalPo.getConfigDetailPo().getChartOption());
         if (ArrayUtils.isEmpty(config.getSpecimensName())) {
             String[] names = new String[config.getSpecimensNum()];
             for (int i = 0; i < config.getSpecimensNum(); i++) {