1
This commit is contained in:
parent
a769623042
commit
b9ab476660
@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.busi.domain.BusiChatItem;
|
||||
import com.ruoyi.busi.service.IBusiChatItemService;
|
||||
import com.ruoyi.busi.vo.ChatExcelMainVO;
|
||||
import com.ruoyi.busi.vo.ChatMainVO;
|
||||
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
@ -66,10 +67,12 @@ public class BusiChatMainController extends BaseController
|
||||
@PreAuthorize("@ss.hasPermi('busi:chatMain:export')")
|
||||
@Log(title = "在线聊天", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, BusiChatMain busiChatMain)
|
||||
public void export(HttpServletResponse response, ChatMainVO busiChatMain)
|
||||
{
|
||||
List<BusiChatMain> list = busiChatMainService.list();
|
||||
ExcelUtil<BusiChatMain> util = new ExcelUtil<BusiChatMain>(BusiChatMain.class);
|
||||
// List<BusiChatMain> list = busiChatMainService.list();
|
||||
// ExcelUtil<BusiChatMain> util = new ExcelUtil<BusiChatMain>(BusiChatMain.class);
|
||||
List<ChatExcelMainVO> list = busiChatMainService.listChatMain(busiChatMain);
|
||||
ExcelUtil<ChatExcelMainVO> util = new ExcelUtil<ChatExcelMainVO>(ChatExcelMainVO.class);
|
||||
util.exportExcel(response, list, "在线聊天数据");
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.busi.domain.BusiChatMain;
|
||||
import com.ruoyi.busi.vo.ChartDataVO;
|
||||
import com.ruoyi.busi.vo.ChatExcelMainVO;
|
||||
import com.ruoyi.busi.vo.ChatMainVO;
|
||||
import com.ruoyi.busi.vo.ThirdSoftVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
@ -22,6 +23,8 @@ public interface BusiChatMainMapper extends BaseMapper<BusiChatMain>
|
||||
{
|
||||
IPage<ChatMainVO> queryListPage(@Param("entity") ChatMainVO entity, Page<BusiChatMain> page);
|
||||
|
||||
List<ChatExcelMainVO> selectChatList(@Param("entity") BusiChatMain entity);
|
||||
|
||||
/**
|
||||
* 查询IP数量
|
||||
* @author vinjor-M
|
||||
|
@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.ruoyi.busi.domain.BusiChatMain;
|
||||
import com.ruoyi.busi.vo.ChatExcelMainVO;
|
||||
import com.ruoyi.busi.vo.ChatMainVO;
|
||||
|
||||
/**
|
||||
@ -17,6 +18,15 @@ import com.ruoyi.busi.vo.ChatMainVO;
|
||||
public interface IBusiChatMainService extends IService<BusiChatMain> {
|
||||
IPage<ChatMainVO> queryListPage(ChatMainVO pageReqVO, Page<BusiChatMain> page);
|
||||
|
||||
/**
|
||||
* 不分页查询聊天记录适配导出
|
||||
* @author PQZ
|
||||
* @date 14:03 2025/10/21
|
||||
* @param chatMainVO {@link ChatMainVO}
|
||||
* @return java.util.List<com.ruoyi.busi.vo.ChatMainVO>
|
||||
**/
|
||||
List<ChatExcelMainVO> listChatMain(ChatMainVO chatMainVO);
|
||||
|
||||
/**
|
||||
* 校验是否需要新增
|
||||
*
|
||||
|
@ -7,8 +7,10 @@ import java.util.concurrent.TimeUnit;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.ruoyi.base.service.IBaseManagerService;
|
||||
import com.ruoyi.busi.domain.BusiChatItem;
|
||||
import com.ruoyi.busi.mapper.BusiChatItemMapper;
|
||||
import com.ruoyi.busi.service.IBusiChatItemService;
|
||||
import com.ruoyi.busi.vo.ChatExcelMainVO;
|
||||
import com.ruoyi.busi.vo.ChatMainVO;
|
||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||
import com.ruoyi.common.core.redis.RedisCache;
|
||||
@ -53,6 +55,43 @@ public class BusiChatMainServiceImpl extends ServiceImpl<BusiChatMainMapper,Busi
|
||||
return busiChatMainMapper.queryListPage(pageReqVO, page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 不分页查询聊天记录适配导出
|
||||
*
|
||||
* @param chatMainVO {@link ChatMainVO}
|
||||
* @return java.util.List<com.ruoyi.busi.vo.ChatMainVO>
|
||||
* @author PQZ
|
||||
* @date 14:03 2025/10/21
|
||||
**/
|
||||
@Override
|
||||
public List<ChatExcelMainVO> listChatMain(ChatMainVO chatMainVO) {
|
||||
List<ChatExcelMainVO> result = busiChatMainMapper.selectChatList(chatMainVO);
|
||||
result.forEach(item -> {
|
||||
item.setCreateTimeStr(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",item.getCreateTime()));
|
||||
item.setUpdateTimeStr(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",item.getUpdateTime()));
|
||||
// 将chatItemList转换为指定格式的字符串
|
||||
if (item.getChatItemList() != null && !item.getChatItemList().isEmpty()) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < item.getChatItemList().size(); i++) {
|
||||
BusiChatItem chatItem = item.getChatItemList().get(i);
|
||||
String dataFromDisplay = "customer".equals(chatItem.getDataFrom()) ? "客户" : "平台";
|
||||
sb.append(dataFromDisplay)
|
||||
.append(":")
|
||||
.append(chatItem.getContent())
|
||||
.append("(")
|
||||
.append(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", chatItem.getCreateTime()))
|
||||
.append(")");
|
||||
// 如果不是最后一个元素,添加换行符
|
||||
if (i < item.getChatItemList().size() - 1) {
|
||||
sb.append("\n");
|
||||
}
|
||||
}
|
||||
item.setChatHistory(sb.toString());
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验是否需要新增
|
||||
*
|
||||
|
@ -0,0 +1,61 @@
|
||||
package com.ruoyi.busi.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.busi.domain.BusiChatItem;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import lombok.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ChatExcelMainVO{
|
||||
private String id;
|
||||
/** 产品名称 */
|
||||
@Excel(name = "产品名称")
|
||||
private String prodName;
|
||||
/** 来源IP */
|
||||
@Excel(name = "IP")
|
||||
private String ip;
|
||||
/** 来源国家 */
|
||||
@Excel(name = "国家")
|
||||
private String national;
|
||||
/** 来源洲 */
|
||||
@Excel(name = "洲")
|
||||
private String oceania;
|
||||
/** 设备类型 */
|
||||
@Excel(name = "设备类型")
|
||||
private String equipment;
|
||||
/** 用户名称 */
|
||||
@Excel(name = "负责员工")
|
||||
private String userName;
|
||||
|
||||
/** 创建时间 */
|
||||
@Excel(name = "最早聊天时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private String createTimeStr;
|
||||
/** 创建时间 */
|
||||
@Excel(name = "最近聊天时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private String updateTimeStr;
|
||||
/** 聊天记录 */
|
||||
@Excel(name = "聊天记录")
|
||||
private String chatHistory;
|
||||
|
||||
/** 创建时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
/** 创建时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date updateTime;
|
||||
|
||||
private List<BusiChatItem> chatItemList;
|
||||
|
||||
}
|
@ -28,6 +28,23 @@
|
||||
<result property="siteName" column="site_name"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="com.ruoyi.busi.vo.ChatExcelMainVO" id="ChatExcelMainResult">
|
||||
<result property="ip" column="ip"/>
|
||||
<result property="national" column="national"/>
|
||||
<result property="oceania" column="oceania"/>
|
||||
<result property="equipment" column="equipment"/>
|
||||
<result property="prodName" column="prod_name"/>
|
||||
<result property="userName" column="user_name"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<!-- 添加集合映射 -->
|
||||
<collection select="getChatItems"
|
||||
column="id"
|
||||
property="chatItemList"
|
||||
javaType="java.util.List"
|
||||
ofType="com.ruoyi.busi.domain.BusiChatItem"/>
|
||||
</resultMap>
|
||||
|
||||
|
||||
<select id="queryListPage" parameterType="BusiChatMain" resultMap="BusiChatMainResult">
|
||||
select dbcm.*,dbpn.title AS prod_name,su.nick_name AS user_name,dbs.site_name AS site_name
|
||||
@ -58,6 +75,41 @@
|
||||
</where>
|
||||
order BY dbcm.create_time DESC,dbcm.update_time DESC
|
||||
</select>
|
||||
|
||||
<select id="selectChatList" parameterType="BusiChatMain" resultMap="ChatExcelMainResult">
|
||||
select dbcm.*,dbpn.title AS prod_name,su.nick_name AS user_name,dbs.site_name AS site_name
|
||||
from dl_busi_chat_main dbcm
|
||||
left join dl_busi_prod_new dbpn on dbcm.prod_id = dbpn.id
|
||||
left join sys_user su on dbcm.user_id = su.user_id
|
||||
left join dl_base_site dbs ON dbcm.tenant_id = dbs.id
|
||||
<where>
|
||||
<if test="entity.prodName != null and entity.prodName != ''">and dbpn.title LIKE
|
||||
CONCAT('%',#{entity.prodName},'%')
|
||||
</if>
|
||||
<if test="entity.ip != null and entity.ip != ''">and dbcm.ip = #{entity.ip}</if>
|
||||
<if test="entity.equipment != null and entity.equipment != ''">and dbcm.equipment = #{entity.equipment}</if>
|
||||
<if test="entity.national != null and entity.national != ''">and dbcm.national LIKE
|
||||
CONCAT('%',#{entity.national},'%')
|
||||
</if>
|
||||
<if test="entity.oceania != null and entity.oceania != ''">and dbcm.oceania = #{entity.oceania}</if>
|
||||
<if test="entity.userName != null and entity.userName != ''">and (su.nick_name LIKE
|
||||
CONCAT('%',#{entity.userName},'%') OR su.user_name LIKE CONCAT('%',#{entity.userName},'%'))
|
||||
</if>
|
||||
<if test="entity.tenantId != null and entity.tenantId != ''">and dbcm.tenant_id = #{entity.tenantId}</if>
|
||||
<if test="entity.startDate != null and entity.startDate != ''">and (dbcm.create_time >=
|
||||
#{entity.startDate} OR dbcm.update_time >= #{entity.startDate})
|
||||
</if>
|
||||
<if test="entity.endDate != null and entity.endDate != ''">and (dbcm.create_time <= #{entity.endDate} OR
|
||||
dbcm.update_time >= #{entity.startDate})
|
||||
</if>
|
||||
</where>
|
||||
order BY dbcm.create_time DESC,dbcm.update_time DESC
|
||||
</select>
|
||||
|
||||
<select id="getChatItems" resultType="com.ruoyi.busi.domain.BusiChatItem">
|
||||
select * from dl_busi_chat_item where main_id = #{id} order by create_time asc
|
||||
</select>
|
||||
|
||||
<select id="selectIpCount" resultType="java.lang.Integer">
|
||||
SELECT
|
||||
COUNT( id )
|
||||
|
@ -50,11 +50,13 @@
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
v-hasPermi="['busi:chatMain:add']"
|
||||
>导出</el-button>
|
||||
@click="handleExport"
|
||||
>导出
|
||||
</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">-->
|
||||
<!-- <el-button-->
|
||||
|
Loading…
Reference in New Issue
Block a user