Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
cmeeting
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
翟斌
cmeeting
Commits
1ef8cb83
提交
1ef8cb83
authored
7月 22, 2025
作者:
张开石
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1、添加会议纪要使用情况统计接口
父级
7728651c
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
174 行增加
和
5 行删除
+174
-5
src/main/java/com/cmeeting/controller/StatisticsController.java
+48
-0
src/main/java/com/cmeeting/mapper/primary/MeetingInfoMapper.java
+16
-0
src/main/java/com/cmeeting/mapper/secondary/SysUserSysMapper.java
+10
-0
src/main/java/com/cmeeting/service/MeetingInfoService.java
+14
-0
src/main/java/com/cmeeting/service/impl/MeetingInfoServiceImpl.java
+39
-5
src/main/resources/mapper/primary/MeetingInfoMapper.xml
+26
-0
src/main/resources/mapper/secondary/SysUserSysMapper.xml
+21
-0
没有找到文件。
src/main/java/com/cmeeting/controller/StatisticsController.java
0 → 100644
浏览文件 @
1ef8cb83
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
);
}
}
src/main/java/com/cmeeting/mapper/primary/MeetingInfoMapper.java
浏览文件 @
1ef8cb83
...
@@ -4,11 +4,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
...
@@ -4,11 +4,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import
com.cmeeting.pojo.MeetingInfo
;
import
com.cmeeting.pojo.MeetingInfo
;
import
com.cmeeting.vo.MeetingInfoVO
;
import
com.cmeeting.vo.MeetingInfoVO
;
import
com.cmeeting.vo.TencentMeetingVO
;
import
com.cmeeting.vo.TencentMeetingVO
;
import
org.apache.ibatis.annotations.MapKey
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
@Mapper
@Mapper
public
interface
MeetingInfoMapper
extends
BaseMapper
<
MeetingInfo
>
{
public
interface
MeetingInfoMapper
extends
BaseMapper
<
MeetingInfo
>
{
...
@@ -16,6 +18,19 @@ public interface MeetingInfoMapper extends BaseMapper<MeetingInfo> {
...
@@ -16,6 +18,19 @@ public interface MeetingInfoMapper extends BaseMapper<MeetingInfo> {
List
<
TencentMeetingVO
.
SimpleMeetingInfo
>
getAllMeetingIds
();
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);
// List<MeetingInfo> selectList(MeetingInfoVO vo);
}
}
\ No newline at end of file
src/main/java/com/cmeeting/mapper/secondary/SysUserSysMapper.java
浏览文件 @
1ef8cb83
...
@@ -7,10 +7,12 @@ import com.cmeeting.ad.entity.SysUserSync;
...
@@ -7,10 +7,12 @@ import com.cmeeting.ad.entity.SysUserSync;
import
com.cmeeting.dto.PermissionCheckedDTO
;
import
com.cmeeting.dto.PermissionCheckedDTO
;
import
com.cmeeting.dto.SysUserSyncDTO
;
import
com.cmeeting.dto.SysUserSyncDTO
;
import
com.cmeeting.dto.UserDTO
;
import
com.cmeeting.dto.UserDTO
;
import
org.apache.ibatis.annotations.MapKey
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
@Mapper
@Mapper
public
interface
SysUserSysMapper
extends
BaseMapper
<
SysUserSync
>
{
public
interface
SysUserSysMapper
extends
BaseMapper
<
SysUserSync
>
{
...
@@ -39,4 +41,12 @@ 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
,
Page
<
SysUserSyncDTO
>
selectByDeptId
(
@Param
(
"deptIds"
)
List
<
String
>
deptIds
,
@Param
(
"tenantId"
)
String
tenantId
,
@Param
(
"page"
)
Page
page
,
@Param
(
"search"
)
String
search
);
@Param
(
"page"
)
Page
page
,
@Param
(
"search"
)
String
search
);
/**
* 获取用户信息
* @param userIdList
* @return
*/
@MapKey
(
"userId"
)
List
<
Map
<
String
,
String
>>
selectParamByUserIdList
(
@Param
(
"userIdList"
)
List
<
String
>
userIdList
);
}
}
src/main/java/com/cmeeting/service/MeetingInfoService.java
浏览文件 @
1ef8cb83
...
@@ -5,10 +5,24 @@ import com.baomidou.mybatisplus.extension.service.IService;
...
@@ -5,10 +5,24 @@ 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
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
public
interface
MeetingInfoService
extends
IService
<
MeetingInfo
>
{
public
interface
MeetingInfoService
extends
IService
<
MeetingInfo
>
{
IPage
<
MeetingInfo
>
getPage
(
MeetingInfoVO
vo
);
IPage
<
MeetingInfo
>
getPage
(
MeetingInfoVO
vo
);
boolean
updateRecordXml
(
MeetingInfoVO
vo
);
boolean
updateRecordXml
(
MeetingInfoVO
vo
);
boolean
regenerateXml
(
MeetingInfoVO
vo
);
boolean
regenerateXml
(
MeetingInfoVO
vo
);
/**
* 统计
*
* @param searchValue 查询值
* @param createTimeStart 起始时间
* @param createTimeEnd 截止时间
* @return
*/
List
<
Map
<
String
,
String
>>
statistics
(
String
searchValue
,
Date
createTimeStart
,
Date
createTimeEnd
);
}
}
src/main/java/com/cmeeting/service/impl/MeetingInfoServiceImpl.java
浏览文件 @
1ef8cb83
...
@@ -6,7 +6,8 @@ import cn.chatbot.openai.completion.chat.ChatMessageRole;
...
@@ -6,7 +6,8 @@ import cn.chatbot.openai.completion.chat.ChatMessageRole;
import
cn.chatbot.openai.completion.chat.Message
;
import
cn.chatbot.openai.completion.chat.Message
;
import
cn.chatbot.openai.service.LLMService
;
import
cn.chatbot.openai.service.LLMService
;
import
cn.hutool.core.collection.CollUtil
;
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
cn.hutool.core.util.IdUtil
;
import
com.alibaba.fastjson2.JSON
;
import
com.alibaba.fastjson2.JSON
;
import
com.alibaba.fastjson2.JSONArray
;
import
com.alibaba.fastjson2.JSONArray
;
...
@@ -24,14 +25,13 @@ import com.cmeeting.log.service.ProcessLogService;
...
@@ -24,14 +25,13 @@ import com.cmeeting.log.service.ProcessLogService;
import
com.cmeeting.mapper.primary.MeetingInfoMapper
;
import
com.cmeeting.mapper.primary.MeetingInfoMapper
;
import
com.cmeeting.mapper.primary.MeetingRecordTemplateMapper
;
import
com.cmeeting.mapper.primary.MeetingRecordTemplateMapper
;
import
com.cmeeting.mapper.primary.UserIdMapper
;
import
com.cmeeting.mapper.primary.UserIdMapper
;
import
com.cmeeting.mapper.secondary.SysUserSysMapper
;
import
com.cmeeting.pojo.MeetingInfo
;
import
com.cmeeting.pojo.MeetingInfo
;
import
com.cmeeting.pojo.MeetingRecordTemplate
;
import
com.cmeeting.pojo.MeetingRecordTemplate
;
import
com.cmeeting.pojo.UserId
;
import
com.cmeeting.pojo.UserId
;
import
com.cmeeting.service.MeetingInfoService
;
import
com.cmeeting.service.MeetingInfoService
;
import
com.cmeeting.util.MinioUtils
;
import
com.cmeeting.util.MinioUtils
;
import
com.cmeeting.vo.EmailPush
;
import
com.cmeeting.vo.MeetingInfoVO
;
import
com.cmeeting.vo.MeetingInfoVO
;
import
com.deepoove.poi.XWPFTemplate
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.dataformat.xml.XmlMapper
;
import
com.fasterxml.jackson.dataformat.xml.XmlMapper
;
import
com.tencentcloudapi.wemeet.Client
;
import
com.tencentcloudapi.wemeet.Client
;
...
@@ -47,8 +47,8 @@ import lombok.extern.slf4j.Slf4j;
...
@@ -47,8 +47,8 @@ import lombok.extern.slf4j.Slf4j;
import
okhttp3.OkHttpClient
;
import
okhttp3.OkHttpClient
;
import
okhttp3.Request
;
import
okhttp3.Request
;
import
okhttp3.Response
;
import
okhttp3.Response
;
import
org.apache.commons.io.IOUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -61,7 +61,6 @@ import java.security.SecureRandom;
...
@@ -61,7 +61,6 @@ import java.security.SecureRandom;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
@Service
@Service
...
@@ -92,6 +91,9 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti
...
@@ -92,6 +91,9 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti
private
MeetingInfoMapper
meetingInfoMapper
;
private
MeetingInfoMapper
meetingInfoMapper
;
@Resource
@Resource
private
UserIdMapper
userIdMapper
;
private
UserIdMapper
userIdMapper
;
@Autowired
private
SysUserSysMapper
sysUserSysMapper
;
@Override
@Override
public
IPage
<
MeetingInfo
>
getPage
(
MeetingInfoVO
vo
)
{
public
IPage
<
MeetingInfo
>
getPage
(
MeetingInfoVO
vo
)
{
...
@@ -252,6 +254,38 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti
...
@@ -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 content 大模型返回的不规则xml
* @param recordData 转录文本
* @param recordData 转录文本
...
...
src/main/resources/mapper/primary/MeetingInfoMapper.xml
浏览文件 @
1ef8cb83
...
@@ -33,4 +33,29 @@
...
@@ -33,4 +33,29 @@
<select
id=
"getAllMeetingIds"
resultType=
"com.cmeeting.vo.TencentMeetingVO$SimpleMeetingInfo"
>
<select
id=
"getAllMeetingIds"
resultType=
"com.cmeeting.vo.TencentMeetingVO$SimpleMeetingInfo"
>
select meeting_id,sub_meeting_id from cmt_meeting_info
select meeting_id,sub_meeting_id from cmt_meeting_info
</select>
</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>
</mapper>
\ No newline at end of file
src/main/resources/mapper/secondary/SysUserSysMapper.xml
浏览文件 @
1ef8cb83
...
@@ -145,4 +145,24 @@
...
@@ -145,4 +145,24 @@
and (t1.user_id like concat('%',#{search},'%') or t1.name like concat('%',#{search},'%') or t1.nick_name like concat('%',#{search},'%'))
and (t1.user_id like concat('%',#{search},'%') or t1.name like concat('%',#{search},'%') or t1.nick_name like concat('%',#{search},'%'))
</if>
</if>
</select>
</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>
</mapper>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论