提交 1ef8cb83 作者: 张开石

1、添加会议纪要使用情况统计接口

父级 7728651c
package com.cmeeting.controller;
import com.cmeeting.service.MeetingInfoService;
import com.cmeeting.service.MeetingRecordTemplateService;
import com.cmeeting.util.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.netty.http.server.HttpServerResponse;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* @Description
* @Author zhang kaishi
* @Date 2025/7/18 9:36
**/
@RestController
@RequestMapping("/statistics")
public class StatisticsController {
@Autowired
private MeetingRecordTemplateService meetingRecordTemplateService;
@Autowired
private MeetingInfoService meetingInfoService;
/**
* 纪要模板使用情况的统计
* @param searchValue 用户部门或工号
* @param createTimeStart 开始时间
* @param createTimeEnd 结束时间
* @return
*/
@GetMapping("/recordTemplateUsingInfo")
public R recordTemplateUsingInfo(String searchValue,
@RequestParam("createTimeStart") Date createTimeStart,
@RequestParam("createTimeEnd") Date createTimeEnd) {
List<Map<String, String>> list =meetingInfoService.statistics(searchValue, createTimeStart, createTimeEnd);
return R.ok(list);
}
}
......@@ -4,11 +4,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cmeeting.pojo.MeetingInfo;
import com.cmeeting.vo.MeetingInfoVO;
import com.cmeeting.vo.TencentMeetingVO;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
@Mapper
public interface MeetingInfoMapper extends BaseMapper<MeetingInfo> {
......@@ -16,6 +18,19 @@ public interface MeetingInfoMapper extends BaseMapper<MeetingInfo> {
List<TencentMeetingVO.SimpleMeetingInfo> getAllMeetingIds();
/**
* 统计
* @param startTime
* @param endTime
* @param dateList
* @return
*/
@MapKey("host_uid")
List<Map<String, String>> statistics(@Param("startTime") String startTime,
@Param("endTime") String endTime,
@Param("dateList") List<String> dateList);
// List<MeetingInfo> selectList(MeetingInfoVO vo);
}
\ No newline at end of file
......@@ -7,10 +7,12 @@ import com.cmeeting.ad.entity.SysUserSync;
import com.cmeeting.dto.PermissionCheckedDTO;
import com.cmeeting.dto.SysUserSyncDTO;
import com.cmeeting.dto.UserDTO;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@Mapper
public interface SysUserSysMapper extends BaseMapper<SysUserSync> {
......@@ -39,4 +41,12 @@ public interface SysUserSysMapper extends BaseMapper<SysUserSync> {
Page<SysUserSyncDTO> selectByDeptId(@Param("deptIds") List<String> deptIds, @Param("tenantId") String tenantId,
@Param("page") Page page, @Param("search") String search);
/**
* 获取用户信息
* @param userIdList
* @return
*/
@MapKey("userId")
List<Map<String, String>> selectParamByUserIdList(@Param("userIdList") List<String> userIdList);
}
......@@ -5,10 +5,24 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.cmeeting.pojo.MeetingInfo;
import com.cmeeting.vo.MeetingInfoVO;
import java.util.Date;
import java.util.List;
import java.util.Map;
public interface MeetingInfoService extends IService<MeetingInfo> {
IPage<MeetingInfo> getPage(MeetingInfoVO vo);
boolean updateRecordXml(MeetingInfoVO vo);
boolean regenerateXml(MeetingInfoVO vo);
/**
* 统计
*
* @param searchValue 查询值
* @param createTimeStart 起始时间
* @param createTimeEnd 截止时间
* @return
*/
List<Map<String, String>> statistics(String searchValue, Date createTimeStart, Date createTimeEnd);
}
......@@ -6,7 +6,8 @@ import cn.chatbot.openai.completion.chat.ChatMessageRole;
import cn.chatbot.openai.completion.chat.Message;
import cn.chatbot.openai.service.LLMService;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
......@@ -24,14 +25,13 @@ import com.cmeeting.log.service.ProcessLogService;
import com.cmeeting.mapper.primary.MeetingInfoMapper;
import com.cmeeting.mapper.primary.MeetingRecordTemplateMapper;
import com.cmeeting.mapper.primary.UserIdMapper;
import com.cmeeting.mapper.secondary.SysUserSysMapper;
import com.cmeeting.pojo.MeetingInfo;
import com.cmeeting.pojo.MeetingRecordTemplate;
import com.cmeeting.pojo.UserId;
import com.cmeeting.service.MeetingInfoService;
import com.cmeeting.util.MinioUtils;
import com.cmeeting.vo.EmailPush;
import com.cmeeting.vo.MeetingInfoVO;
import com.deepoove.poi.XWPFTemplate;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.tencentcloudapi.wemeet.Client;
......@@ -47,8 +47,8 @@ import lombok.extern.slf4j.Slf4j;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
......@@ -61,7 +61,6 @@ import java.security.SecureRandom;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
@Service
......@@ -92,6 +91,9 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti
private MeetingInfoMapper meetingInfoMapper;
@Resource
private UserIdMapper userIdMapper;
@Autowired
private SysUserSysMapper sysUserSysMapper;
@Override
public IPage<MeetingInfo> getPage(MeetingInfoVO vo) {
......@@ -252,6 +254,38 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti
}
/**
* 统计
*
* @param searchValue 查询值
* @param createTimeStart 起始时间
* @param createTimeEnd 截止时间
* @return
*/
@Override
public List<Map<String, String>> statistics(String searchValue, Date createTimeStart, Date createTimeEnd) {
List<String> dateList = DateUtil.rangeToList(createTimeStart, createTimeEnd, DateField.DAY_OF_YEAR).stream()
.map(date -> DateUtil.format(date, "yyyy-MM-dd"))
.collect(Collectors.toList());
String startTime = DateUtil.format(createTimeStart, "yyyy-MM-dd");
String endTime = DateUtil.format(createTimeEnd, "yyyy-MM-dd");
List<Map<String, String>> list = meetingInfoMapper.statistics(startTime, endTime, dateList);
List<String> userIdList = list.stream().map(map -> map.get("userId")).collect(Collectors.toList());
List<Map<String, String>> userInfoList = sysUserSysMapper.selectParamByUserIdList(userIdList);
for (Map<String, String> map : list) {
String userId = map.get("userId");
userInfoList.stream().filter(userInfo -> userInfo.get("userId").equals(userId)).findFirst().ifPresent(userInfo -> {
map.put("name", userInfo.get("name"));
map.put("deptName", userInfo.get("deptName"));
});
}
// TODO 加和
return list;
}
/**
* 保存会议纪要相关的文件
* @param content 大模型返回的不规则xml
* @param recordData 转录文本
......
......@@ -33,4 +33,29 @@
<select id="getAllMeetingIds" resultType="com.cmeeting.vo.TencentMeetingVO$SimpleMeetingInfo">
select meeting_id,sub_meeting_id from cmt_meeting_info
</select>
<select id="statistics" resultType="java.util.Map">
SELECT
userid.wid as userId,
t.host_uid,
<foreach collection="dateList" item="d" separator=",">
MAX(CASE WHEN sync_time = #{d} THEN cnt ELSE 0 END) AS `${d}`
</foreach>
FROM (
SELECT
host_uid,
date_format(sync_time, '%Y-%m-%d') as sync_time,
SUM(CASE WHEN is_pushed = 1 THEN 1 ELSE 0 END) AS cnt
FROM
cmt_meeting_info
WHERE
date_format(sync_time, '%Y-%m-%d') BETWEEN #{startTime} AND #{endTime}
GROUP BY host_uid, date_format(sync_time, '%Y-%m-%d')
) AS t
join userid ON userid.tid COLLATE utf8mb4_general_ci = t.host_uid COLLATE utf8mb4_general_ci
GROUP BY t.host_uid, userid.wid
</select>
</mapper>
\ No newline at end of file
......@@ -145,4 +145,24 @@
and (t1.user_id like concat('%',#{search},'%') or t1.name like concat('%',#{search},'%') or t1.nick_name like concat('%',#{search},'%'))
</if>
</select>
<select id="selectParamByUserIdList" resultType="java.util.Map">
SELECT
sys_user_sync.user_id as userId,
sys_user_sync.`name`,
sys_user_sync_category.`name` as deptName
FROM
sys_user_sync,
sys_user_sync_category
<where>
and sys_user_sync.dept_id = sys_user_sync_category.dept_id
<if test="userIdList.size > 0">
and sys_user_sync.user_id in
<foreach item="userId" collection="userIdList" index="index" separator="," close=")" open="(">
#{userId}
</foreach>
</if>
</where>
</select>
</mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论