提交 0aab002e 作者: 张开石

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

父级 12f463eb
......@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.netty.http.server.HttpServerResponse;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -56,10 +57,11 @@ public class StatisticsController {
@GetMapping("/exportRecordTemplateUsingInfo")
public R exportRecordTemplateUsingInfo(String searchValue,
@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;
import com.cmeeting.pojo.MeetingInfo;
import com.cmeeting.vo.MeetingInfoVO;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -25,4 +26,14 @@ public interface MeetingInfoService extends IService<MeetingInfo> {
* @return
*/
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;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.IdUtil;
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.JSONArray;
import com.alibaba.fastjson2.JSONObject;
......@@ -54,8 +57,10 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.math.BigInteger;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;
......@@ -289,6 +294,9 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti
userInfo.put("sum", sum.toString());
}
userInfoList.removeIf(map -> !map.containsKey("host_uid"));
if (userInfoList.isEmpty()) {
return new ArrayList<>();
}
// 初始化一行用来纵向加和
Map<String, String> lastRowMap = new LinkedHashMap<>();
......@@ -307,10 +315,79 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti
lastRowMap.put("userId", "总计");
userInfoList.add(lastRowMap);
userInfoList.forEach(map -> map.remove("host_uid"));
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 recordData 转录文本
......
......@@ -147,7 +147,7 @@
</select>
<select id="selectParamByUserIdList" resultType="java.util.Map">
<select id="selectParamByUserIdList" resultType="java.util.LinkedHashMap">
SELECT
sys_user_sync_category.`name` as deptName,
sys_user_sync.`name`,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论