Compare commits
No commits in common. "b9ab4766604e87f22c56b12a6d35ef27ddb99e64" and "d6ff88d535a1853829013e0554ff558759d060b9" have entirely different histories.
b9ab476660
...
d6ff88d535
@ -8,7 +8,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.ruoyi.busi.domain.BusiChatItem;
|
import com.ruoyi.busi.domain.BusiChatItem;
|
||||||
import com.ruoyi.busi.service.IBusiChatItemService;
|
import com.ruoyi.busi.service.IBusiChatItemService;
|
||||||
import com.ruoyi.busi.vo.ChatExcelMainVO;
|
|
||||||
import com.ruoyi.busi.vo.ChatMainVO;
|
import com.ruoyi.busi.vo.ChatMainVO;
|
||||||
import com.ruoyi.common.core.domain.model.LoginUser;
|
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||||
import com.ruoyi.common.utils.SecurityUtils;
|
import com.ruoyi.common.utils.SecurityUtils;
|
||||||
@ -67,12 +66,10 @@ public class BusiChatMainController extends BaseController
|
|||||||
@PreAuthorize("@ss.hasPermi('busi:chatMain:export')")
|
@PreAuthorize("@ss.hasPermi('busi:chatMain:export')")
|
||||||
@Log(title = "在线聊天", businessType = BusinessType.EXPORT)
|
@Log(title = "在线聊天", businessType = BusinessType.EXPORT)
|
||||||
@PostMapping("/export")
|
@PostMapping("/export")
|
||||||
public void export(HttpServletResponse response, ChatMainVO busiChatMain)
|
public void export(HttpServletResponse response, BusiChatMain busiChatMain)
|
||||||
{
|
{
|
||||||
// List<BusiChatMain> list = busiChatMainService.list();
|
List<BusiChatMain> list = busiChatMainService.list();
|
||||||
// ExcelUtil<BusiChatMain> util = new ExcelUtil<BusiChatMain>(BusiChatMain.class);
|
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, "在线聊天数据");
|
util.exportExcel(response, list, "在线聊天数据");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.ruoyi.busi.domain.BusiChatMain;
|
import com.ruoyi.busi.domain.BusiChatMain;
|
||||||
import com.ruoyi.busi.vo.ChartDataVO;
|
import com.ruoyi.busi.vo.ChartDataVO;
|
||||||
import com.ruoyi.busi.vo.ChatExcelMainVO;
|
|
||||||
import com.ruoyi.busi.vo.ChatMainVO;
|
import com.ruoyi.busi.vo.ChatMainVO;
|
||||||
import com.ruoyi.busi.vo.ThirdSoftVO;
|
import com.ruoyi.busi.vo.ThirdSoftVO;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
@ -23,8 +22,6 @@ public interface BusiChatMainMapper extends BaseMapper<BusiChatMain>
|
|||||||
{
|
{
|
||||||
IPage<ChatMainVO> queryListPage(@Param("entity") ChatMainVO entity, Page<BusiChatMain> page);
|
IPage<ChatMainVO> queryListPage(@Param("entity") ChatMainVO entity, Page<BusiChatMain> page);
|
||||||
|
|
||||||
List<ChatExcelMainVO> selectChatList(@Param("entity") BusiChatMain entity);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询IP数量
|
* 查询IP数量
|
||||||
* @author vinjor-M
|
* @author vinjor-M
|
||||||
|
|||||||
@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.ruoyi.busi.domain.BusiChatMain;
|
import com.ruoyi.busi.domain.BusiChatMain;
|
||||||
import com.ruoyi.busi.vo.ChatExcelMainVO;
|
|
||||||
import com.ruoyi.busi.vo.ChatMainVO;
|
import com.ruoyi.busi.vo.ChatMainVO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -18,15 +17,6 @@ import com.ruoyi.busi.vo.ChatMainVO;
|
|||||||
public interface IBusiChatMainService extends IService<BusiChatMain> {
|
public interface IBusiChatMainService extends IService<BusiChatMain> {
|
||||||
IPage<ChatMainVO> queryListPage(ChatMainVO pageReqVO, Page<BusiChatMain> page);
|
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,10 +7,8 @@ import java.util.concurrent.TimeUnit;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.ruoyi.base.service.IBaseManagerService;
|
import com.ruoyi.base.service.IBaseManagerService;
|
||||||
import com.ruoyi.busi.domain.BusiChatItem;
|
|
||||||
import com.ruoyi.busi.mapper.BusiChatItemMapper;
|
import com.ruoyi.busi.mapper.BusiChatItemMapper;
|
||||||
import com.ruoyi.busi.service.IBusiChatItemService;
|
import com.ruoyi.busi.service.IBusiChatItemService;
|
||||||
import com.ruoyi.busi.vo.ChatExcelMainVO;
|
|
||||||
import com.ruoyi.busi.vo.ChatMainVO;
|
import com.ruoyi.busi.vo.ChatMainVO;
|
||||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||||
import com.ruoyi.common.core.redis.RedisCache;
|
import com.ruoyi.common.core.redis.RedisCache;
|
||||||
@ -55,43 +53,6 @@ public class BusiChatMainServiceImpl extends ServiceImpl<BusiChatMainMapper,Busi
|
|||||||
return busiChatMainMapper.queryListPage(pageReqVO, page);
|
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验是否需要新增
|
* 校验是否需要新增
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,61 +0,0 @@
|
|||||||
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,23 +28,6 @@
|
|||||||
<result property="siteName" column="site_name"/>
|
<result property="siteName" column="site_name"/>
|
||||||
</resultMap>
|
</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 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
|
select dbcm.*,dbpn.title AS prod_name,su.nick_name AS user_name,dbs.site_name AS site_name
|
||||||
@ -75,41 +58,6 @@
|
|||||||
</where>
|
</where>
|
||||||
order BY dbcm.create_time DESC,dbcm.update_time DESC
|
order BY dbcm.create_time DESC,dbcm.update_time DESC
|
||||||
</select>
|
</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 id="selectIpCount" resultType="java.lang.Integer">
|
||||||
SELECT
|
SELECT
|
||||||
COUNT( id )
|
COUNT( id )
|
||||||
|
|||||||
@ -48,16 +48,16 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="1.5">
|
<!-- <el-col :span="1.5">-->
|
||||||
<el-button
|
<!-- <el-button-->
|
||||||
type="warning"
|
<!-- type="primary"-->
|
||||||
plain
|
<!-- plain-->
|
||||||
icon="el-icon-download"
|
<!-- icon="el-icon-plus"-->
|
||||||
size="mini"
|
<!-- size="mini"-->
|
||||||
@click="handleExport"
|
<!-- @click="handleAdd"-->
|
||||||
>导出
|
<!-- v-hasPermi="['busi:chatMain:add']"-->
|
||||||
</el-button>
|
<!-- >新增</el-button>-->
|
||||||
</el-col>
|
<!-- </el-col>-->
|
||||||
<!-- <el-col :span="1.5">-->
|
<!-- <el-col :span="1.5">-->
|
||||||
<!-- <el-button-->
|
<!-- <el-button-->
|
||||||
<!-- type="success"-->
|
<!-- type="success"-->
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user