From 309b5eb17c510c781daec96bbfef3b693f3a4d7e Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期三, 25 三月 2026 17:29:52 +0800
Subject: [PATCH] feat:报告导出
---
admin-server/src/main/java/com/estate/expert/admin/domain/exam/record/warning/WarningRecordRepository.java | 14 ++
admin-server/src/main/java/com/estate/expert/admin/stat/report/data/DeviceReportData.java | 31 ++++++
admin-server/src/main/java/com/estate/expert/admin/stat/report/data/SystemReportData.java | 23 ++++
admin-server/src/main/resources/templates/设备风险评估报告.docx | 0
admin-server/src/main/java/com/estate/expert/admin/domain/exam/task/check/CheckTaskRepository.java | 12 ++
admin-server/src/main/java/com/estate/expert/admin/domain/exam/record/error/ErrorRecordRepository.java | 35 ++++++
admin-server/src/main/java/com/estate/expert/admin/stat/report/render/DeviceTablePolicy.java | 5 +
admin-server/src/main/java/com/estate/expert/admin/stat/report/render/CheckInfoTablePolicy.java | 22 ++++
admin-server/src/main/resources/templates/第三方评估报告.docx | 0
admin-server/src/main/java/com/estate/expert/admin/service/impl/ReportServiceImpl.java | 110 ++++++++++++++++++++++
10 files changed, 249 insertions(+), 3 deletions(-)
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/exam/record/error/ErrorRecordRepository.java b/admin-server/src/main/java/com/estate/expert/admin/domain/exam/record/error/ErrorRecordRepository.java
index f073520..a6d3e55 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/domain/exam/record/error/ErrorRecordRepository.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/exam/record/error/ErrorRecordRepository.java
@@ -99,6 +99,39 @@
"and w.deleted = false")
List<ErrorRecord> listDeviceErrors(Integer checkTaskId);
+ @Query("select w.problem.id, count(w) from ErrorRecord w " +
+ "where w.deleted = false " +
+ "and w.device is null " +
+ "and w.level is not null " +
+ "and w.problem is not null " +
+ "and w.problem.id in :problemIds " +
+ "and w.checkTask.project.id = :projectId " +
+ "and w.checkTask.state in :taskStates " +
+ "group by w.problem.id")
+ List<Object[]> countSystemHazardsByProjectAndProblemIds(@Param("projectId") Integer projectId,
+ @Param("taskStates") List<com.estate.expert.admin.domain.exam.task.check.CheckTaskState> taskStates,
+ @Param("problemIds") List<Integer> problemIds);
+
+ @Query("select w.problem.id, count(w) from ErrorRecord w " +
+ "where w.deleted = false " +
+ "and w.device is null " +
+ "and w.problem is not null " +
+ "and w.problem.id in :problemIds " +
+ "and w.checkTask.id in :taskIds " +
+ "group by w.problem.id")
+ List<Object[]> countSystemHazardsByTaskIdsAndProblemIds(@Param("taskIds") List<Integer> taskIds,
+ @Param("problemIds") List<Integer> problemIds);
+
+ @Query(value = "select r.device_id, r.problem_id, count(*) " +
+ "from record r " +
+ "where r.deleted = false " +
+ "and r.device_id is not null " +
+ "and r.problem_id is not null " +
+ "and r.record_type = 'error' " +
+ "and r.check_task_id in (:taskIds) " +
+ "group by r.device_id, r.problem_id", nativeQuery = true)
+ List<Object[]> countDeviceHazardsByTaskIds(@Param("taskIds") List<Integer> taskIds);
+
//根据人员来获取检查成果
@Query("select w from ErrorRecord w where w.deleted = false and w.creator.id = :creatorId"+ " and ( :startDate is null or w.createTime >= :startDate) " +
"and ( :endDate is null or w.createTime < :endDate) " )
@@ -116,4 +149,4 @@
@Query("select w from ErrorRecord w join fetch w.problem pr join fetch w.checkTask c join fetch c.project p where w.deleted = false and pr.hierarchyId = 1 " )
List<ErrorRecord> getErrorRecordByNotDevice();
-}
\ No newline at end of file
+}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/exam/record/warning/WarningRecordRepository.java b/admin-server/src/main/java/com/estate/expert/admin/domain/exam/record/warning/WarningRecordRepository.java
index e390808..678436b 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/domain/exam/record/warning/WarningRecordRepository.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/exam/record/warning/WarningRecordRepository.java
@@ -24,6 +24,18 @@
"order by w.updateTime desc")
List<WarningRecord> list(Integer checkTaskId);
+ @Query("select w.problem.id, count(w) from WarningRecord w " +
+ "where w.deleted = false " +
+ "and w.device is null " +
+ "and w.problem is not null " +
+ "and w.problem.id in :problemIds " +
+ "and w.checkTask.project.id = :projectId " +
+ "and w.checkTask.state in :taskStates " +
+ "group by w.problem.id")
+ List<Object[]> countSystemWarningsByProjectAndProblemIds(@Param("projectId") Integer projectId,
+ @Param("taskStates") List<com.estate.expert.admin.domain.exam.task.check.CheckTaskState> taskStates,
+ @Param("problemIds") List<Integer> problemIds);
+
@Query("select w from WarningRecord w where ( :clientId is null or w.checkTask.project.client.id = :clientId) " +
"and ( :planId is null or w.checkTask.plan.id = :planId) " +
"and ( :taskId is null or w.checkTask.id = :taskId) " +
@@ -50,4 +62,4 @@
@Param("taskId") Integer taskId,
@Param("startDate") LocalDateTime startDate,
@Param("endDate") LocalDateTime endDate);
-}
\ No newline at end of file
+}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/exam/task/check/CheckTaskRepository.java b/admin-server/src/main/java/com/estate/expert/admin/domain/exam/task/check/CheckTaskRepository.java
index 58bee29..df12fe0 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/domain/exam/task/check/CheckTaskRepository.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/exam/task/check/CheckTaskRepository.java
@@ -1,7 +1,9 @@
package com.estate.expert.admin.domain.exam.task.check;
import com.estate.expert.admin.domain.common.EntityBaseRepository;
+import com.estate.expert.admin.domain.plan.PlanState;
import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
import java.util.List;
@@ -56,4 +58,12 @@
List<CheckTask> findAllByPlanIdAndDeleted(Integer planId, boolean deleted);
CheckTask getFirstByPlanIdAndProjectIdAndDeleted(Integer planId, Integer projectId, boolean deleted);
-}
\ No newline at end of file
+
+ @Query("select t.id from CheckTask t " +
+ "where t.deleted = false " +
+ "and t.project.id = :projectId " +
+ "and t.plan.deleted = false " +
+ "and t.plan.state = :planState")
+ List<Integer> listTaskIdsByProjectAndPlanState(@Param("projectId") Integer projectId,
+ @Param("planState") PlanState planState);
+}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/service/impl/ReportServiceImpl.java b/admin-server/src/main/java/com/estate/expert/admin/service/impl/ReportServiceImpl.java
index 0ca1df7..19ac1cf 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/service/impl/ReportServiceImpl.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/service/impl/ReportServiceImpl.java
@@ -5,7 +5,12 @@
import com.estate.expert.admin.domain.business.device.usage.DeviceUsage;
import com.estate.expert.admin.domain.exam.eval.fuzzy.EvalFuzzyResult;
import com.estate.expert.admin.domain.exam.eval.score.EvalScoreResult;
+import com.estate.expert.admin.domain.exam.record.error.ErrorRecord;
+import com.estate.expert.admin.domain.exam.record.error.ErrorRecordRepository;
+import com.estate.expert.admin.domain.exam.record.RecordRepository;
+import com.estate.expert.admin.domain.exam.task.check.CheckTaskRepository;
import com.estate.expert.admin.domain.report.ReportTemplate;
+import com.estate.expert.admin.domain.plan.PlanState;
import com.estate.expert.admin.enums.BizResultCode;
import com.estate.expert.admin.service.*;
import com.estate.expert.admin.service.eval.EvalFuzzyService;
@@ -13,6 +18,7 @@
import com.estate.expert.admin.stat.report.builder.DeviceReportBuilder;
import com.estate.expert.admin.stat.report.builder.ReportBuilderBase;
import com.estate.expert.admin.stat.report.builder.SystemReportBuilder;
+import com.estate.expert.admin.stat.report.data.DeviceReportData;
import com.estate.expert.admin.stat.report.data.impl.DeviceFuzzyReportData;
import com.estate.expert.admin.stat.report.data.impl.DeviceScoreReportData;
import com.estate.expert.admin.stat.report.data.impl.SystemFuzzyReportData;
@@ -27,6 +33,10 @@
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
* 报告数据服务实现类
@@ -52,6 +62,15 @@
@Resource
private ErrorRecordService errorRecordService;
+
+ @Resource
+ private ErrorRecordRepository errorRecordRepository;
+
+ @Resource
+ private RecordRepository recordRepository;
+
+ @Resource
+ private CheckTaskRepository checkTaskRepository;
@Resource
private DeviceService deviceService;
@@ -188,6 +207,8 @@
var devices= deviceUsages.stream().map(DeviceUsage::getDevice).toList();
var hierarchy = evalFuzzyResult.getPlan().getSystemScoreExpert().getModel().getHierarchy().getContent();
+ var problemFrequency = buildSystemProblemFrequency(project.getId(), records);
+
// 生成报告数据
return SystemFuzzyReportData.builder()
.reportId(evalFuzzyResult.getId())
@@ -199,6 +220,8 @@
.projectInfo(projectInfo)
.devices(devices)
.records(records)
+ .problemHazardCounts(problemFrequency.problemHazardCounts())
+ .problemCheckCounts(problemFrequency.problemCheckCounts())
.build()
.generate();
}
@@ -213,6 +236,8 @@
var devices= deviceUsages.stream().map(DeviceUsage::getDevice).toList();
var hierarchy = evalFuzzyResult.getPlan().getSystemScoreExpert().getModel().getHierarchy().getContent();
+ var problemFrequency = buildSystemProblemFrequency(project.getId(), records);
+
// 生成报告数据
return SystemScoreReportData.builder()
.reportId(evalFuzzyResult.getId())
@@ -224,8 +249,87 @@
.projectInfo(projectInfo)
.devices(devices)
.records(records)
+ .problemHazardCounts(problemFrequency.problemHazardCounts())
+ .problemCheckCounts(problemFrequency.problemCheckCounts())
.build()
.generate();
+ }
+
+ private record ProblemFrequency(Map<Integer, Long> problemHazardCounts, Map<Integer, Long> problemCheckCounts) {
+ }
+
+ private record DeviceProblemFrequency(Map<String, Long> problemHazardCounts, Map<String, Long> problemCheckCounts) {
+ }
+
+ private ProblemFrequency buildSystemProblemFrequency(Integer projectId, List<com.estate.expert.admin.domain.exam.record.error.ErrorRecord> currentTaskRecords) {
+ if (projectId == null || currentTaskRecords == null || currentTaskRecords.isEmpty()) {
+ return new ProblemFrequency(Collections.emptyMap(), Collections.emptyMap());
+ }
+
+ var problemIds = currentTaskRecords.stream()
+ .map(r -> r.getProblem() != null ? r.getProblem().getId() : null)
+ .filter(java.util.Objects::nonNull)
+ .distinct()
+ .toList();
+ if (problemIds.isEmpty()) {
+ return new ProblemFrequency(Collections.emptyMap(), Collections.emptyMap());
+ }
+
+ var taskIds = checkTaskRepository.listTaskIdsByProjectAndPlanState(projectId, PlanState.COMPLETE);
+ if (taskIds == null || taskIds.isEmpty()) {
+ return new ProblemFrequency(Collections.emptyMap(), Collections.emptyMap());
+ }
+
+ Map<Integer, Long> hazardCounts = new HashMap<>();
+ for (var row : errorRecordRepository.countSystemHazardsByTaskIdsAndProblemIds(taskIds, problemIds)) {
+ if (row == null || row.length < 2 || row[0] == null || row[1] == null) {
+ continue;
+ }
+ hazardCounts.put(((Number) row[0]).intValue(), ((Number) row[1]).longValue());
+ }
+
+ Map<Integer, Long> checkCounts = new HashMap<>();
+ for (var row : recordRepository.countSystemChecksByTaskIdsAndProblemIds(taskIds, problemIds)) {
+ if (row == null || row.length < 2 || row[0] == null || row[1] == null) {
+ continue;
+ }
+ checkCounts.put(((Number) row[0]).intValue(), ((Number) row[1]).longValue());
+ }
+
+ return new ProblemFrequency(hazardCounts, checkCounts);
+ }
+
+ private DeviceProblemFrequency buildDeviceProblemFrequency(Integer projectId) {
+ if (projectId == null) {
+ return new DeviceProblemFrequency(Collections.emptyMap(), Collections.emptyMap());
+ }
+
+ var taskIds = checkTaskRepository.listTaskIdsByProjectAndPlanState(projectId, PlanState.COMPLETE);
+ if (taskIds == null || taskIds.isEmpty()) {
+ return new DeviceProblemFrequency(Collections.emptyMap(), Collections.emptyMap());
+ }
+
+ Map<String, Long> hazardCounts = new HashMap<>();
+ for (var row : errorRecordRepository.countDeviceHazardsByTaskIds(taskIds)) {
+ collectDeviceFrequency(row, hazardCounts);
+ }
+
+ Map<String, Long> checkCounts = new HashMap<>();
+ for (var row : recordRepository.countDeviceChecksByTaskIds(taskIds)) {
+ collectDeviceFrequency(row, checkCounts);
+ }
+
+ return new DeviceProblemFrequency(hazardCounts, checkCounts);
+ }
+
+ private void collectDeviceFrequency(Object[] row, Map<String, Long> target) {
+ if (row == null || row.length < 3 || row[0] == null || row[2] == null) {
+ return;
+ }
+ Integer deviceId = ((Number) row[0]).intValue();
+ Integer problemId = row[1] == null ? null : ((Number) row[1]).intValue();
+ Long count = ((Number) row[2]).longValue();
+ target.put(DeviceReportData.buildDeviceProblemKey(deviceId, problemId), count);
}
private JSONObject buildFuzzyDeviceReportData(EvalFuzzyResult evalFuzzyResult, EvalScoreResult scoreResult, ReportTemplate reportTemplate) {
@@ -236,6 +340,7 @@
var deviceIds = evalFuzzyResult.getDeviceResMap().keySet();
var devices = deviceService.findAllById(deviceIds);
var hierarchy = evalFuzzyResult.getPlan().getDeviceScoreExpert().getModel().getHierarchy().getContent();
+ var problemFrequency = buildDeviceProblemFrequency(project.getId());
// 生成报告数据
return DeviceFuzzyReportData.builder()
@@ -247,6 +352,8 @@
.projectInfo(projectInfo)
.devices(devices)
.records(records)
+ .deviceProblemHazardCounts(problemFrequency.problemHazardCounts())
+ .deviceProblemCheckCounts(problemFrequency.problemCheckCounts())
.build()
.generate();
}
@@ -259,6 +366,7 @@
var deviceIds = evalFuzzyResult.getDeviceResMap().keySet();
var devices = deviceService.findAllById(deviceIds);
var hierarchy = evalFuzzyResult.getPlan().getDeviceScoreExpert().getModel().getHierarchy().getContent();
+ var problemFrequency = buildDeviceProblemFrequency(project.getId());
// 生成报告数据
return DeviceScoreReportData.builder()
@@ -271,6 +379,8 @@
.projectInfo(projectInfo)
.devices(devices)
.records(records)
+ .deviceProblemHazardCounts(problemFrequency.problemHazardCounts())
+ .deviceProblemCheckCounts(problemFrequency.problemCheckCounts())
.build()
.generate();
}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/stat/report/data/DeviceReportData.java b/admin-server/src/main/java/com/estate/expert/admin/stat/report/data/DeviceReportData.java
index ab88923..2c058fe 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/stat/report/data/DeviceReportData.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/stat/report/data/DeviceReportData.java
@@ -17,6 +17,7 @@
import java.util.Comparator;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.TreeMap;
/**
@@ -30,6 +31,10 @@
protected Map<Integer, FuzzyResult> deviceResMap;
TreeRoot<HierarchyData> deviceHierarchy;
+
+ Map<String, Long> deviceProblemHazardCounts;
+
+ Map<String, Long> deviceProblemCheckCounts;
/**
* 生成报告数据
@@ -241,6 +246,8 @@
// 检查问题列:默认为问题备注,当问题备注为空时,填写问题描述(与安全报告一致)
info.put("检查问题", StringUtils.hasText(record.getRemark()) ? record.getRemark() : record.getProblem().getDescription());
info.put("隐患等级", record.getLevel().getDesc());
+ info.put("同类隐患出现频次", getDeviceProblemHazardCount(record));
+ info.put("检查频次", getDeviceProblemCheckCount(record));
var subItem = buildRecordDetail(record);
subItem.put("项目级别", errorNode(record).getName());
info.put("问题详情", subItem);
@@ -249,6 +256,30 @@
return result;
}
+ private long getDeviceProblemHazardCount(ErrorRecord record) {
+ if (deviceProblemHazardCounts == null) {
+ return 0L;
+ }
+ return deviceProblemHazardCounts.getOrDefault(buildDeviceProblemKey(record), 0L);
+ }
+
+ private long getDeviceProblemCheckCount(ErrorRecord record) {
+ if (deviceProblemCheckCounts == null) {
+ return 0L;
+ }
+ return deviceProblemCheckCounts.getOrDefault(buildDeviceProblemKey(record), 0L);
+ }
+
+ private String buildDeviceProblemKey(ErrorRecord record) {
+ Integer deviceId = record != null && record.getDevice() != null ? record.getDevice().getId() : null;
+ Integer problemId = record != null && record.getProblem() != null ? record.getProblem().getId() : null;
+ return buildDeviceProblemKey(deviceId, problemId);
+ }
+
+ public static String buildDeviceProblemKey(Integer deviceId, Integer problemId) {
+ return Objects.toString(deviceId, "") + "::" + Objects.toString(problemId, "");
+ }
+
/**
* 构建设备记录
* @param device 设备
diff --git a/admin-server/src/main/java/com/estate/expert/admin/stat/report/data/SystemReportData.java b/admin-server/src/main/java/com/estate/expert/admin/stat/report/data/SystemReportData.java
index c5aea16..c927173 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/stat/report/data/SystemReportData.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/stat/report/data/SystemReportData.java
@@ -17,6 +17,7 @@
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
/**
@@ -33,6 +34,10 @@
protected FuzzyResult sysResult;
protected ScoreResult scoreResult;
+
+ Map<Integer, Long> problemHazardCounts;
+
+ Map<Integer, Long> problemCheckCounts;
// 评估结果
@Override
@@ -200,11 +205,29 @@
for(var record : nodeRecords){
var subItem = buildRecordDetail(record);
subItem.put("项目级别", errorNodeName(record));
+ subItem.put("同类隐患出现频次", getProblemHazardCount(record));
+ subItem.put("检查频次", getProblemCheckCount(record));
errors.add(subItem);
}
return errors;
}
+ private long getProblemHazardCount(ErrorRecord record) {
+ var problemId = record != null && record.getProblem() != null ? record.getProblem().getId() : null;
+ if (problemId == null || problemHazardCounts == null) {
+ return 0L;
+ }
+ return problemHazardCounts.getOrDefault(problemId, 0L);
+ }
+
+ private long getProblemCheckCount(ErrorRecord record) {
+ var problemId = record != null && record.getProblem() != null ? record.getProblem().getId() : null;
+ if (problemId == null || problemCheckCounts == null) {
+ return 0L;
+ }
+ return problemCheckCounts.getOrDefault(problemId, 0L);
+ }
+
/**
* 构建错误节点名称
* @param record 记录
diff --git a/admin-server/src/main/java/com/estate/expert/admin/stat/report/render/CheckInfoTablePolicy.java b/admin-server/src/main/java/com/estate/expert/admin/stat/report/render/CheckInfoTablePolicy.java
index 5f3cedc..7a6e95d 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/stat/report/render/CheckInfoTablePolicy.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/stat/report/render/CheckInfoTablePolicy.java
@@ -93,6 +93,28 @@
RenderHelper.renderCell(row, info.getString("问题百分比"));
}
}break;
+ case 6: {
+ if(isErrorSummary){
+ // 问题汇总表(新增两列:同类隐患出现频次、检查频次)
+ var errors = info.getJSONArray("问题");
+ if(!CollectionUtils.isEmpty(errors)){
+ var highLevelColor = RenderHelper.highLevelColor(errors);
+ for(var error : errors){
+ var e = (JSONObject) error;
+ var row = table.insertNewTableRow(table.getRows().size());
+ var errorLevel = e.getString("隐患等级");
+ var textColor = RenderHelper.getErrorLevelColor(errorLevel);
+
+ RenderHelper.renderCell(row, info.getString("类别"), highLevelColor);
+ RenderHelper.renderCell(row, e.getString("问题部位"), textColor);
+ RenderHelper.renderCell(row, e.getString("问题备注"), textColor);
+ RenderHelper.renderCell(row, e.getString("隐患等级"), textColor);
+ RenderHelper.renderCell(row, String.valueOf(e.getLongValue("同类隐患出现频次")), textColor);
+ RenderHelper.renderCell(row, String.valueOf(e.getLongValue("检查频次")), textColor);
+ }
+ }
+ }
+ }break;
default:
break;
}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/stat/report/render/DeviceTablePolicy.java b/admin-server/src/main/java/com/estate/expert/admin/stat/report/render/DeviceTablePolicy.java
index 329adec..521ed19 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/stat/report/render/DeviceTablePolicy.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/stat/report/render/DeviceTablePolicy.java
@@ -20,6 +20,7 @@
@Override
public void render(XWPFTable table, Object data) throws Exception {
var deviceRecords = (JSONArray) data;
+ int colCnt = table.getRow(1).getTableCells().size();
for (var d : deviceRecords) {
var deviceInfo = (JSONObject) d;
var records = deviceInfo.getJSONArray("问题");
@@ -34,6 +35,10 @@
RenderHelper.renderCell(row, name, highLevelColor);
RenderHelper.renderCell(row, info.getString("检查问题"), textColor);
RenderHelper.renderCell(row, info.getString("隐患等级"), textColor);
+ if (colCnt >= 5) {
+ RenderHelper.renderCell(row, String.valueOf(info.getLongValue("同类隐患出现频次")), textColor);
+ RenderHelper.renderCell(row, String.valueOf(info.getLongValue("检查频次")), textColor);
+ }
}
}
}
diff --git "a/admin-server/src/main/resources/templates/\347\254\254\344\270\211\346\226\271\350\257\204\344\274\260\346\212\245\345\221\212.docx" "b/admin-server/src/main/resources/templates/\347\254\254\344\270\211\346\226\271\350\257\204\344\274\260\346\212\245\345\221\212.docx"
index 2c2ca37..b464e65 100644
--- "a/admin-server/src/main/resources/templates/\347\254\254\344\270\211\346\226\271\350\257\204\344\274\260\346\212\245\345\221\212.docx"
+++ "b/admin-server/src/main/resources/templates/\347\254\254\344\270\211\346\226\271\350\257\204\344\274\260\346\212\245\345\221\212.docx"
Binary files differ
diff --git "a/admin-server/src/main/resources/templates/\350\256\276\345\244\207\351\243\216\351\231\251\350\257\204\344\274\260\346\212\245\345\221\212.docx" "b/admin-server/src/main/resources/templates/\350\256\276\345\244\207\351\243\216\351\231\251\350\257\204\344\274\260\346\212\245\345\221\212.docx"
index cd4e9c1..395bb09 100644
--- "a/admin-server/src/main/resources/templates/\350\256\276\345\244\207\351\243\216\351\231\251\350\257\204\344\274\260\346\212\245\345\221\212.docx"
+++ "b/admin-server/src/main/resources/templates/\350\256\276\345\244\207\351\243\216\351\231\251\350\257\204\344\274\260\346\212\245\345\221\212.docx"
Binary files differ
--
Gitblit v1.7.1