diff --git a/src/main/java/com/supervision/police/controller/ModelController.java b/src/main/java/com/supervision/police/controller/ModelController.java index 9c6faa1..c4720c4 100644 --- a/src/main/java/com/supervision/police/controller/ModelController.java +++ b/src/main/java/com/supervision/police/controller/ModelController.java @@ -7,6 +7,7 @@ import com.supervision.police.dto.caseScore.CaseScoreDetailDTO; import com.supervision.police.service.ModelService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; @@ -42,6 +43,14 @@ public class ModelController { return R.ok(detail); } + @GetMapping("/exportCaseScoreDetail") + @Operation(summary = "导出案件得分详情功能") + public void exportCaseScoreDetail( @RequestParam @Parameter(name = "caseId",description = "案件id") String caseId, + HttpServletResponse response) { + + modelService.exportCaseScoreDetail(caseId,response); + } + @GetMapping("/getCaseDateStatus") @Operation(summary = "获取案件数据状态") public R<CaseStatus> getCaseDateStatus(@RequestParam @Parameter(name = "caseId",description = "案件id") String caseId) { diff --git a/src/main/java/com/supervision/police/service/ModelService.java b/src/main/java/com/supervision/police/service/ModelService.java index 90ba829..2acddcc 100644 --- a/src/main/java/com/supervision/police/service/ModelService.java +++ b/src/main/java/com/supervision/police/service/ModelService.java @@ -4,6 +4,7 @@ import com.supervision.common.domain.R; import com.supervision.police.dto.AnalyseCaseDTO; import com.supervision.police.dto.CaseStatus; import com.supervision.police.dto.caseScore.CaseScoreDetailDTO; +import jakarta.servlet.http.HttpServletResponse; public interface ModelService { @@ -22,4 +23,11 @@ public interface ModelService { * @return */ CaseStatus getCaseDateStatus(String caseId); + + /** + * 导出案件得分详情功能 + * @param caseId 案件id + * @param response + */ + void exportCaseScoreDetail(String caseId, HttpServletResponse response); } diff --git a/src/main/java/com/supervision/police/service/impl/ModelServiceImpl.java b/src/main/java/com/supervision/police/service/impl/ModelServiceImpl.java index dfeff6c..f7d27ac 100644 --- a/src/main/java/com/supervision/police/service/impl/ModelServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/ModelServiceImpl.java @@ -1,6 +1,7 @@ package com.supervision.police.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.io.IoUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; @@ -9,6 +10,7 @@ import cn.hutool.json.JSONUtil; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.deepoove.poi.XWPFTemplate; import com.supervision.common.domain.R; import com.supervision.common.utils.StringUtils; import com.supervision.neo4j.dto.ResultDTO; @@ -26,13 +28,21 @@ import com.supervision.police.service.CaseStatusManageService; import com.supervision.police.service.ModelIndexService; import com.supervision.police.service.ModelService; import com.supervision.utils.SqlParserUtil; +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.neo4j.driver.Driver; import org.neo4j.driver.Result; import org.neo4j.driver.Session; +import org.springframework.core.io.Resource; +import org.springframework.core.io.ResourceLoader; import org.springframework.stereotype.Service; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.*; @Slf4j @@ -40,6 +50,8 @@ import java.util.*; @RequiredArgsConstructor public class ModelServiceImpl implements ModelService { + private final ResourceLoader resourceLoader; + private final Driver driver; private final ModelCaseMapper modelCaseMapper; @@ -172,6 +184,33 @@ public class ModelServiceImpl implements ModelService { } + @Override + public void exportCaseScoreDetail(String caseId, HttpServletResponse response) { + CaseScoreDetailDTO caseScoreDetailDTO = caseScoreDetail(caseId); + caseScoreDetailDTO.buildDesc(); + + // 加载模板 + Resource resource = resourceLoader.getResource("classpath:template/case_detail.docx"); + InputStream inputStream = null; + try { + response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document"); + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(caseScoreDetailDTO.getCaseName()+".docx", StandardCharsets.UTF_8)); + inputStream = resource.getInputStream(); + XWPFTemplate template = XWPFTemplate.compile(inputStream).render(caseScoreDetailDTO); + template.writeAndClose(response.getOutputStream()); + } catch (IOException e) { + throw new RuntimeException(e); + }finally { + if (inputStream != null){ + try { + inputStream.close(); + } catch (IOException e) { + log.error("exportCaseScoreDetail: inputStream.close() error", e); + } + } + } + } + /** * 最终计算得分 */ diff --git a/src/main/resources/template/case_detail.docx b/src/main/resources/template/case_detail.docx new file mode 100644 index 0000000..dd259a6 Binary files /dev/null and b/src/main/resources/template/case_detail.docx differ