提交 0aab002e 作者: 张开石

1、添加会议纪要使用情况导出接口

父级 12f463eb
...@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import reactor.netty.http.server.HttpServerResponse; import reactor.netty.http.server.HttpServerResponse;
import javax.servlet.http.HttpServletResponse;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -55,11 +56,12 @@ public class StatisticsController { ...@@ -55,11 +56,12 @@ public class StatisticsController {
*/ */
@GetMapping("/exportRecordTemplateUsingInfo") @GetMapping("/exportRecordTemplateUsingInfo")
public R exportRecordTemplateUsingInfo(String searchValue, public R exportRecordTemplateUsingInfo(String searchValue,
@RequestParam("createTimeStart") Date createTimeStart, @RequestParam("createTimeStart") Date createTimeStart,
@RequestParam("createTimeEnd") Date createTimeEnd) { @RequestParam("createTimeEnd") Date createTimeEnd,
HttpServletResponse response) {
List<Map<String, String>> list =meetingInfoService.statistics(searchValue, createTimeStart, createTimeEnd); meetingInfoService.exportRecordTemplateUsingInfo(searchValue, createTimeStart, createTimeEnd, response);
return R.ok(list); return R.ok();
} }
} }
...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.cmeeting.pojo.MeetingInfo; import com.cmeeting.pojo.MeetingInfo;
import com.cmeeting.vo.MeetingInfoVO; import com.cmeeting.vo.MeetingInfoVO;
import javax.servlet.http.HttpServletResponse;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -25,4 +26,14 @@ public interface MeetingInfoService extends IService<MeetingInfo> { ...@@ -25,4 +26,14 @@ public interface MeetingInfoService extends IService<MeetingInfo> {
* @return * @return
*/ */
List<Map<String, String>> statistics(String searchValue, Date createTimeStart, Date createTimeEnd); List<Map<String, String>> statistics(String searchValue, Date createTimeStart, Date createTimeEnd);
/**
* 导出
*
* @param searchValue 搜索值
* @param createTimeStart 起始时间
* @param createTimeEnd 截止时间
* @param response
*/
void exportRecordTemplateUsingInfo(String searchValue, Date createTimeStart, Date createTimeEnd, HttpServletResponse response);
} }
...@@ -8,8 +8,11 @@ import cn.chatbot.openai.service.LLMService; ...@@ -8,8 +8,11 @@ import cn.chatbot.openai.service.LLMService;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
...@@ -54,8 +57,10 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -54,8 +57,10 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.math.BigInteger; import java.math.BigInteger;
import java.net.URLEncoder;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.security.SecureRandom; import java.security.SecureRandom;
...@@ -289,6 +294,9 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti ...@@ -289,6 +294,9 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti
userInfo.put("sum", sum.toString()); userInfo.put("sum", sum.toString());
} }
userInfoList.removeIf(map -> !map.containsKey("host_uid")); userInfoList.removeIf(map -> !map.containsKey("host_uid"));
if (userInfoList.isEmpty()) {
return new ArrayList<>();
}
// 初始化一行用来纵向加和 // 初始化一行用来纵向加和
Map<String, String> lastRowMap = new LinkedHashMap<>(); Map<String, String> lastRowMap = new LinkedHashMap<>();
...@@ -307,10 +315,79 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti ...@@ -307,10 +315,79 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti
lastRowMap.put("userId", "总计"); lastRowMap.put("userId", "总计");
userInfoList.add(lastRowMap); userInfoList.add(lastRowMap);
userInfoList.forEach(map -> map.remove("host_uid"));
return userInfoList; return userInfoList;
} }
/** /**
* 导出
*
* @param searchValue 搜索值
* @param createTimeStart 起始时间
* @param createTimeEnd 截止时间
* @param response
*/
@Override
public void exportRecordTemplateUsingInfo(String searchValue, Date createTimeStart, Date createTimeEnd, HttpServletResponse response) {
List<Map<String, String>> statistics = statistics(searchValue, createTimeStart, createTimeEnd);
if (statistics.isEmpty()) {
throw new RobotBaseException("暂无数据");
}
int column = statistics.get(0).keySet().size();
List<Map<String, String>> finalStatistics = new ArrayList<>();
for (Map<String, String> statistic : statistics) {
Map<String, String> newStatistic = new LinkedHashMap<>();
Set<Map.Entry<String, String>> entriedSet = statistic.entrySet();
for (Map.Entry<String, String> entry : entriedSet) {
String key = entry.getKey();
String value = entry.getValue();
if ("deptName".equals(key)) {
newStatistic.put("部门", value);
} else if ("name".equals(key)) {
newStatistic.put("姓名", value);
} else if ("userId".equals(key)) {
newStatistic.put("工号", value);
} else if ("sum".equals(key)) {
newStatistic.put("总计", value);
} else {
newStatistic.put(key, value);
}
}
finalStatistics.add(newStatistic);
}
// 导出
OutputStream outputStream = null;
ExcelWriter writer = ExcelUtil.getWriter(true);
try {
String fileName = String.format("会议使用次数.xlsx");
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf8"));
outputStream = response.getOutputStream();
// writer.addHeaderAlias("deptName", "部门");
// writer.addHeaderAlias("name", "姓名");
// writer.addHeaderAlias("userId", "工号");
// writer.addHeaderAlias("sum", "总计");
// 合并单元格后的标题行,使用默认标题样式
writer.merge(column - 1, "会议纪要使用次数");
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(finalStatistics, true);
writer.flush(outputStream);
// 关闭writer,释放内存
writer.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
writer.close();
IoUtil.close(outputStream);
}
}
/**
* 保存会议纪要相关的文件 * 保存会议纪要相关的文件
* @param content 大模型返回的不规则xml * @param content 大模型返回的不规则xml
* @param recordData 转录文本 * @param recordData 转录文本
......
...@@ -147,7 +147,7 @@ ...@@ -147,7 +147,7 @@
</select> </select>
<select id="selectParamByUserIdList" resultType="java.util.Map"> <select id="selectParamByUserIdList" resultType="java.util.LinkedHashMap">
SELECT SELECT
sys_user_sync_category.`name` as deptName, sys_user_sync_category.`name` as deptName,
sys_user_sync.`name`, sys_user_sync.`name`,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论