瀏覽代碼

导出诊断报告H5

bmmx 1 年之前
父節點
當前提交
eb6600e0ab

+ 6 - 0
pom.xml

@@ -194,6 +194,12 @@
             <artifactId>pdfa</artifactId>
             <version>${itext7.version}</version>
         </dependency>
+
+        <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
+            <version>2.3.32</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 6 - 0
src/main/java/com/om/controller/admin/CommonController.java

@@ -24,4 +24,10 @@ public class CommonController {
     public Result<String> reportPdf(@RequestParam("id") Integer id){
        return repairService.reportPdf(id);
     }
+
+    @GetMapping("report/h5")
+    @ApiOperation("查看诊断报告---导出h5")
+    public Result<String> reportH5(@RequestParam("id") Integer id){
+        return repairService.reportH5(id);
+    }
 }

+ 31 - 0
src/main/java/com/om/controller/user/APPDiagMenuController.java

@@ -0,0 +1,31 @@
+package com.om.controller.user;
+
+import com.om.entity.vo.AppMenuVO;
+import com.om.entity.vo.BrandVO;
+import com.om.service.IBrandService;
+import com.om.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/app/menu")
+@Api(tags = "app端菜单相关接口")
+public class APPDiagMenuController {
+
+    @Resource
+    private IBrandService brandService;
+
+
+    @PostMapping("update")
+    @ApiOperation("菜单更新")
+    public Result<AppMenuVO> menuUpdate(){
+        return null;
+    }
+}

+ 19 - 0
src/main/java/com/om/entity/vo/AppMenuVO.java

@@ -0,0 +1,19 @@
+package com.om.entity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+public class AppMenuVO {
+    @ApiModelProperty(value = "文件大小")
+    private String fileSize;
+
+    @ApiModelProperty(value = "版本号")
+    private String version;
+
+    @ApiModelProperty(value = "下载地址")
+    private String url;
+
+}

+ 2 - 0
src/main/java/com/om/service/IRepairService.java

@@ -37,4 +37,6 @@ public interface IRepairService extends IService<Repair> {
 
 
     Result<String> reportPdf(Integer id);
+
+    Result<String> reportH5(Integer id);
 }

+ 91 - 4
src/main/java/com/om/service/impl/RepairServiceImpl.java

@@ -12,10 +12,7 @@ import com.om.exception.BizException;
 import com.om.mapper.RepairMapper;
 import com.om.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.om.utils.HuaweiObsUtil;
-import com.om.utils.ITextPdfUtil;
-import com.om.utils.Result;
-import com.om.utils.UserContext;
+import com.om.utils.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.context.annotation.Bean;
 import org.springframework.stereotype.Service;
@@ -30,6 +27,7 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -414,11 +412,100 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
         try {
              huaweiObsUtil.upload(file, "report");
             String uploadUrl1 = huaweiObsUtil.getUploadUrl(file.getName(), "report");
+            file.delete();
+            return Result.ok(uploadUrl1);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
+    public Result<String> reportH5(Integer id) {
+        //根据id查询报告是否存在
+        Repair repair = this.getById(id);
+
+        if (BeanUtil.isEmpty(repair)){
+            throw new BadReqException("该诊断报告不存在");
+        }
+
+        Map<String,String> baseMap = new HashMap<>();
+        baseMap.put("车架号",repair.getVin());
+        baseMap.put("年款",repair.getMileage());
+        baseMap.put("里程",repair.getMileage());
+        baseMap.put("诊断路径",repair.getDiagnosticPath());
+        baseMap.put("报告编号",repair.getRepairNum());
+        baseMap.put("SN",repair.getSn());
+
+        String username = repair.getUsername();
+        //根据用户名查询用户
+        User user = userService.lambdaQuery()
+                .eq(User::getUsername, username)
+                .one();
+        if (BeanUtil.isEmpty(user)){
+            throw new BadReqException("该用户不存在");
+        }
+
+        Map<String,String> companyMap = new HashMap<>();
+        companyMap.put("公司",user.getCompany());
+        companyMap.put("电话",user.getTel());
+        companyMap.put("地址",user.getAddress());
+
+        List<ControlListMap> controlListMap = new ArrayList<>();
+
+        String electronicControlIds = repair.getElectronicControlIds();
+        List<Integer> eleIds = Arrays.stream(electronicControlIds.split(","))
+                .map(Integer::parseInt)
+                .collect(Collectors.toList());
+
+        List<ElectronicControl> electronicControlList = electronicControlService.listByIds(eleIds);
+        for (Integer eleId : eleIds) {
+            ElectronicControl electronicControl = electronicControlService.getById(eleId);
 
+            List<EcuInfo> EcuList = ecuInfoService.lambdaQuery()
+                    .eq(EcuInfo::getElectronicControlId, eleId)
+                    .list();
+
+            List<FaultCode> FaultList = faultCodeService.lambdaQuery()
+                    .eq(FaultCode::getElectronicControlId, eleId)
+                    .eq(FaultCode::getStatus,1)
+                    .list();
+
+            Map<String,String> faultCodeMap = new HashMap<>();
+            Map<String,String> versionMap = new HashMap<>();
+            for (EcuInfo ecuInfo : EcuList) {
+                versionMap.put(ecuInfo.getStrCaption(),ecuInfo.getStrInformation());
+            }
+
+            for (FaultCode faultCode : FaultList) {
+                faultCodeMap.put(faultCode.getFaultCode(),faultCode.getDescription());
+            }
+            ControlListMap controlListMap1 = new ControlListMap();
+            controlListMap1.setName(electronicControl.getElectronicControlName());
+            controlListMap1.setVersionMap(versionMap);
+            controlListMap1.setFaultCodeMap(faultCodeMap);
+            controlListMap.add(controlListMap1);
+        }
+
+        File file = HtmlGenerator.generateHtmlByMap(repair.getId(), controlListMap, baseMap, companyMap);
+
+        if (file==null){
+            throw new BizException("该h5文件不存在");
+        }
+        try {
+            huaweiObsUtil.upload(file,"h5");
+
+            String uploadUrl1 = huaweiObsUtil.getUploadUrl(file.getName(), "h5");
+            file.delete();
             return Result.ok(uploadUrl1);
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
     }
+
+
+
 }
 
+
+
+

+ 102 - 0
src/main/java/com/om/utils/HtmlGenerator.java

@@ -0,0 +1,102 @@
+package com.om.utils;
+
+
+import com.om.OperationApplication;
+import com.om.entity.dto.ControlListMap;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.StringWriter;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class HtmlGenerator {
+
+
+    public static File generateHtmlByMap(Integer id, List<ControlListMap> controlListMap
+            , Map<String, String> baseMap, Map<String, String> companyMap){
+
+        try {
+            Configuration cfg = new Configuration(Configuration.VERSION_2_3_31);
+            cfg.setClassForTemplateLoading(OperationApplication.class, "../../template/static/");
+
+            Template template = cfg.getTemplate("report.html");
+            String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            StringWriter out = new StringWriter();
+            Map<String, Object> data = new HashMap<>();
+            data.put("reportTime",format);
+            data.put("baseMap", baseMap);
+            data.put("controlListMap", controlListMap);
+            data.put("companyMap", companyMap);
+
+            template.process(data, out);
+
+            // 将HTML内容写入文件
+            String htmlContent = out.toString();
+            String yyyyMMdd = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
+            String outputPath = "src/main/resources/template/static/"+yyyyMMdd+"outputH5"+id+".html";
+            FileWriter fileWriter = new FileWriter(outputPath);
+            fileWriter.write(htmlContent);
+            File file = new File("src\\main\\resources\\template\\static\\"+yyyyMMdd+"outputH5"+id+".html");
+            fileWriter.close();
+            System.out.println("HTML文件已生成:" + outputPath);
+            return file;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+    public static void main(String[] args) {
+
+        Map<String, String> baseMap = new HashMap<>();
+        baseMap.put("车架号", "01");
+        baseMap.put("里程", "52Km");
+        baseMap.put("年款", "1000");
+        baseMap.put("报告编号", "01240222242360836214099968");
+        baseMap.put("诊断路径", "诊断>五菱新能源TEST");
+        baseMap.put("SN", "WL01000005");
+
+        Map<String, String> faultCodeMap = new HashMap<>();
+        faultCodeMap.put("B111716", "供电电压电量过低");
+        faultCodeMap.put("U007588", "CHA CAN网段控制器BuSOff");
+        faultCodeMap.put("P129600", "非N或P档无法ready");
+        faultCodeMap.put("P129700", "充电连接信号有效无法ready");
+
+        Map<String, String> versionMap = new HashMap<>();
+        versionMap.put("引导软件标识符", "BtswV1.00");
+        versionMap.put("零件号", "0000000000");
+        versionMap.put("定义的ECU软件编号", "G050_1HB20");
+        versionMap.put("定义的ECU硬件编号", "G050_1HB20");
+        versionMap.put("供应商代码", "S-00009475");
+        versionMap.put("ECU名称", "0000000VCU");
+        versionMap.put("供应商硬件版本号", "V005.001");
+        versionMap.put("供应商软件版本号", "V001.000");
+        versionMap.put("ECU序列编号", "HB00009475230425T000000");
+        versionMap.put("车辆识别号", "LZWADAGA4LB460541");
+        versionMap.put("SK码", "00000000000000000000000000000000");
+
+
+        Map<String, String> companyMap = new HashMap<>();
+        companyMap.put("公司", "XXXXXX");
+        companyMap.put("地址", "XXXXXXXXXXXX");
+        companyMap.put("电话", "18888888888");
+
+        List<ControlListMap> controlListMap = new ArrayList<>();
+        ControlListMap controlListMap1 = new ControlListMap();
+        controlListMap1.setName("G050右舵车/VCU整车控制器");
+        controlListMap1.setVersionMap(versionMap);
+        controlListMap1.setFaultCodeMap(faultCodeMap);
+        controlListMap.add(controlListMap1);
+        File file = generateHtmlByMap(1, controlListMap, baseMap, companyMap);
+
+        System.out.println(file.getName());
+    }
+}

+ 3 - 0
src/main/java/com/om/utils/HuaweiObsUtil.java

@@ -15,6 +15,8 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -88,6 +90,7 @@ public class HuaweiObsUtil {
     public String upload(File file, String prefix) throws IOException {
         ObsClient obsClient = null;
         try {
+            String yyyyMMdd = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
             String originalFilename = file.getName();
             // 拼接文件在OBS中的路径
             String objectName = prefix + "/"+ originalFilename;

+ 374 - 0
src/main/resources/template/static/report.html

@@ -0,0 +1,374 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>车辆诊断报告</title>
+    <style>
+        body {
+            font-family: Arial, sans-serif;
+        }
+
+        h1, h2, h3 {
+            margin-top: 20px;
+        }
+
+        /* 诊断报告标题 */
+        .report-title {
+            font-size: 28px; /* 调整字体大小 */
+            font-weight: bold;
+            color: #365697;
+            text-align: center;
+        }
+
+        /* 时间 */
+        .report-time {
+            font-size: 20px; /* 调整字体大小 */
+            color: #365697;
+            text-align: center;
+        }
+
+        .vehicle-info, .diagnosis-details, .company-info {
+            margin-top: 20px;
+            background-color: #EBF1FA;
+            border-radius: 5px;
+            padding: 10px;
+        }
+        .vehicle-info h2{
+            background-color: #406DB7;
+            color: #FFFFFF;
+            font-size: 24px; /* 调整字体大小 */
+            font-weight: bold;
+            text-align: center;
+            margin: 0 auto;
+            padding: 10px;
+            width: 120px;
+
+
+            border-bottom-left-radius: 8px;
+            border-bottom-right-radius: 8px;
+        }
+        .fan h3{
+            background-color: #406DB7;
+            color: #FFFFFF;
+            font-size: 24px; /* 调整字体大小 */
+            font-weight: bold;
+
+            text-align: center;
+            padding: 10px;
+            width: 500px;
+            margin-top: 40px;
+            margin-left: -10px;
+
+            border-top-right-radius: 8px; /* 设置顶部右上角的圆角半径为20像素 */
+        }
+        .diagnosis-details h2, .company-info h2 {
+            background-color: #406DB7;
+            color: #FFFFFF;
+            font-size: 24px; /* 调整字体大小 */
+            font-weight: bold;
+            text-align: center;
+            padding: 10px;
+            width: 120px;
+            margin: 0 auto;
+            border-bottom-left-radius: 8px;
+            border-bottom-right-radius: 8px;
+        }
+
+        ul {
+            list-style-type: none;
+            padding-left: 0;
+            font-size: 20px; /* 调整字体大小 */
+            color: #e50909;
+        }
+
+        li {
+            margin-bottom: 5px;
+        }
+
+        .diagnosis-details {
+            margin-top: 10px;
+        }
+
+        .diagnosis-details h2 {
+            margin-top: -10px;
+            align-content: center;
+        }
+
+        .diagnosis-details table, .diagnosis-details th, .diagnosis-details td {
+            border-collapse: collapse;
+            padding: 8px;
+            text-align: left;
+            font-size: 20px; /* 调整字体大小 */
+            color: #000000;
+
+        }
+
+        .diagnosis-details th, .diagnosis-details td {
+            border: none;
+            left:500px;
+        }
+
+        .diagnosis-details ul {
+            margin-left: 0; /* 防止默认的列表缩进 */
+        }
+
+        .diagnosis-details ul li {
+            padding-left: 0; /* 防止列表项内的额外缩进 */
+        }
+
+        .company-info {
+            margin-top: 10px;
+            padding: 10px;
+            background-color: #EBF1FA;
+            border-radius: 5px;
+        }
+
+        .company-info p {
+            font-size: 20px; /* 调整字体大小 */
+            color: #888888;
+        }
+        .company-info tr {
+            font-size: 20px; /* 调整字体大小 */
+            color: #000000;
+        }
+        .company-info td{
+            color: #888888;
+            font-size: 20px;
+
+        }
+        .vehicle-info table {
+            font-size: 20px; /* 调整车辆信息表格内字体大小 */
+        }
+
+
+        .disclaimer {
+            font-size: 16px; /* 调整字体大小 */
+            color: #888888;
+            margin-left: 10px;
+            margin-top: 10px;
+        }
+
+        /* 添加样式以美化页面 */
+        .edit-form {
+            position: fixed;
+            top: 50%;
+            left: 50%;
+            transform: translate(-50%, -50%);
+            background-color: #f9f9f9;
+            padding: 20px;
+            border: 1px solid #ccc;
+            border-radius: 5px;
+            z-index: 9999;
+        }
+
+        #vinInput{
+            background-color: #ECF1FA;
+        }
+
+        #yearInput{
+            background-color: #ECF1FA;
+        }
+        #mileageInput{
+            background-color: #ECF1FA;
+        }
+
+
+    </style>
+    <script src="https://wl-resource.obs.cn-south-1.myhuaweicloud.com/static/axios.min.js"></script>
+</head>
+<body>
+
+<div class="vehicle-info">
+    <h1 class="report-title">诊断报告</h1>
+    <p class="report-time">- ${reportTime} -</p>
+</div>
+
+<#list controlListMap as controlMap>
+<div class="vehicle-info">
+    <div>
+        <h2>车辆信息</h2>
+        <img src="https://wl-resource.obs.cn-south-1.myhuaweicloud.com/static/img.png"
+             height="30" width="30"
+             style="float: right; margin: 0 0 10px 10px; cursor: pointer;"
+             onclick="editCell()">
+    </div>
+    <table>
+        <tr>
+            <td>车架号:</td>
+            <td id="vin" style="padding-left: 180px">
+                <#if baseMap["车架号"]?has_content>
+                ${baseMap["车架号"]}
+                <#else>
+
+            </#if>
+            </td>
+        </tr>
+        <tr>
+            <td>年款:</td>
+            <td id="year" style="padding-left: 180px">
+                <#if baseMap["年款"]?has_content>
+                ${baseMap["年款"]}
+                <#else>
+
+            </#if>
+            </td>
+        </tr>
+        <tr>
+            <td>里程:</td>
+            <td id="mileage" style="padding-left: 180px">
+                <#if baseMap["里程"]?has_content>
+                ${baseMap["里程"]}
+                <#else>
+
+            </#if>
+            </td>
+        </tr>
+
+        <tr>
+            <td>诊断路径:</td>
+            <td style="padding-left: 180px">${baseMap["诊断路径"]}</td>
+        </tr>
+        <tr>
+            <td>报告编号:</td>
+            <td style="padding-left: 180px">${baseMap["报告编号"]}</td>
+        </tr>
+        <tr>
+            <td>SN:</td>
+            <td style="padding-left: 180px">${baseMap["SN"]}</td>
+        </tr>
+
+    </table>
+</div>
+<div class="diagnosis-details">
+    <h2>诊断详情</h2>
+    <div style="display: flex;"><div class="fan"><h3>${controlMap.getName()}</h3></div>
+        <div style="margin-top: 83px;width: 10000px;margin-right: 50px" ><hr color="#406DB7"></div></div>
+    <table>
+        <div class="company-info">
+            <p>故障码(
+                <#if controlMap.getFaultCodeMap()?size != 0 >
+                ${controlMap.getFaultCodeMap()?size}
+                <#else>
+                0
+            </#if>
+            )</p>
+        </div>
+
+        <tr>
+            <td>
+                <ul>
+                    <#list controlMap.getFaultCodeMap()?keys as key>
+                    <li>${key}:</li>
+                    <p></p>
+                </#list>
+                </ul>
+            </td>
+            <td style="padding-left: 180px">
+                <ul>
+                    <#list controlMap.getFaultCodeMap()?values as value>
+                    <li>${value}</li>
+                    <p></p>
+                </#list>
+                </ul>
+            </td>
+        </tr>
+    </table>
+    <div class="vehicle-info">
+        <p>版本信息(
+            <#if controlMap.getVersionMap()?size != 0 >
+            ${controlMap.getVersionMap()?size}
+            <#else>
+            0
+        </#if>
+
+        )</p>
+    </div>
+    <table>
+        <#list controlMap.getVersionMap()?keys as key>
+        <tr>
+            <td>${key}</td>
+            <td style="padding-left: 190px">${controlMap.getVersionMap()[key]}</td>
+        </tr>
+    </#list>
+    </table>
+</div>
+</#list>
+
+<div class="company-info">
+    <img src="https://wl-resource.obs.cn-south-1.myhuaweicloud.com/static/img.png" height="30" width="30" style="float: right; margin: 0 0 10px 10px;"/>
+    <table>
+        <tr>
+            <td>公司:</td>
+            <td style="padding-left: 180px">
+                <#if companyMap["公司"]?has_content>
+                ${companyMap["公司"]}
+                <#else>
+
+            </#if>
+            </td>
+        </tr>
+        <tr>
+            <td>电话:</td>
+            <td style="padding-left: 180px">
+                <#if companyMap["电话"]?has_content>
+                ${companyMap["电话"]}
+                <#else>
+
+            </#if>
+            </td>
+        </tr>
+        <tr>
+            <td>地址:</td>
+            <td style="padding-left: 180px">
+                <#if companyMap["地址"]?has_content>
+                ${companyMap["地址"]}
+                <#else>
+
+            </#if>
+            </td>
+        </tr>
+
+    </table>
+    <p STYLE="font-size: 15px"><text style="color: red">*</text>该车辆检测报告仅对本次检查结果负责</p>
+</div>
+<script>
+    function editCell() {
+        var vin = document.getElementById('vin');
+        var year = document.getElementById('year');
+        var mileage = document.getElementById('mileage');
+        var vinText = vin.innerText;
+        var yearText = year.innerText;
+        var mileageText = mileage.innerText;
+
+        vin.innerHTML = '<input type="text" id="vinInput" value="' + vinText + '" onblur="saveChanges(\'vin\', this.value)">';
+        year.innerHTML = '<input type="text" id="yearInput" value="' + yearText + '" onblur="saveChanges(\'year\', this.value)">';
+        mileage.innerHTML = '<input type="text" id="mileageInput" value="' + mileageText + '" onblur="saveChanges(\'mileage\', this.value)">';
+
+    }
+
+
+    function saveChanges(field,value) {
+        if (value==''){
+            return
+        }
+        var input = document.getElementById(field);
+        // 这里可以进行保存操作,比如向服务器发送请求保存数据
+        // 保存完成后可以进行一些提示或其他操作
+        // 使用 Axios 发送 POST 请求
+        axios.post('http://localhost:8888/your/api/endpoint', {
+            type: field,
+            value: value,
+        })
+            .then(function (response) {
+                // 请求成功的处理
+                console.log(response);
+            })
+        // 最后销毁输入框,恢复文本
+        input.innerHTML = value;
+    }
+</script>
+
+
+</body>
+</html>

+ 17 - 33
src/test/java/com/util/MapToHTML.java

@@ -1,43 +1,27 @@
 package com.util;
 
+import com.om.service.IRepairService;
+import com.om.utils.Result;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import javax.annotation.Resource;
 import java.util.HashMap;
 import java.util.Map;
 
+
+@SpringBootTest(classes = com.om.OperationApplication.class)
 public class MapToHTML {
 
-    public static void main(String[] args) {
-        // 创建一个简单的Map,用于演示
-        Map<String, String> dataMap = new HashMap<>();
-        dataMap.put("name", "John");
-        dataMap.put("age", "25");
-        dataMap.put("city", "New York");
-
-        // 生成HTML5页面
-        String html = generateHTML(dataMap);
-        
-        // 输出生成的HTML
-        System.out.println(html);
-    }
+    @Resource
+    private IRepairService repairService;
 
-    private static String generateHTML(Map<String, String> dataMap) {
-        StringBuilder htmlBuilder = new StringBuilder();
-        htmlBuilder.append("<!DOCTYPE html>");
-        htmlBuilder.append("<html>");
-        htmlBuilder.append("<head>");
-        htmlBuilder.append("<title>Map to HTML5</title>");
-        htmlBuilder.append("</head>");
-        htmlBuilder.append("<body>");
-
-        // 遍历Map中的数据,生成HTML标记
-        for (Map.Entry<String, String> entry : dataMap.entrySet()) {
-            String key = entry.getKey();
-            String value = entry.getValue();
-            htmlBuilder.append("<p><strong>").append(key).append(":</strong> ").append(value).append("</p>");
-        }
-
-        htmlBuilder.append("</body>");
-        htmlBuilder.append("</html>");
-
-        return htmlBuilder.toString();
+    @Test
+    public void reportH5test(){
+
+        Result<String> stringResult = repairService.reportH5(1);
+        System.out.println(stringResult);
     }
+
+
 }