From b9ab4766604e87f22c56b12a6d35ef27ddb99e64 Mon Sep 17 00:00:00 2001 From: PQZ Date: Tue, 21 Oct 2025 15:41:44 +0800 Subject: [PATCH] 1 --- .../controller/BusiChatMainController.java | 9 ++- .../ruoyi/busi/mapper/BusiChatMainMapper.java | 3 + .../busi/service/IBusiChatMainService.java | 10 +++ .../service/impl/BusiChatMainServiceImpl.java | 39 ++++++++++++ .../com/ruoyi/busi/vo/ChatExcelMainVO.java | 61 +++++++++++++++++++ .../mapper/busi/BusiChatMainMapper.xml | 52 ++++++++++++++++ dl_vue/src/views/busi/chatMain/index.vue | 8 ++- 7 files changed, 176 insertions(+), 6 deletions(-) create mode 100644 dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/ChatExcelMainVO.java diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiChatMainController.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiChatMainController.java index e95f9a7..13426d1 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiChatMainController.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiChatMainController.java @@ -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 list = busiChatMainService.list(); - ExcelUtil util = new ExcelUtil(BusiChatMain.class); +// List list = busiChatMainService.list(); +// ExcelUtil util = new ExcelUtil(BusiChatMain.class); + List list = busiChatMainService.listChatMain(busiChatMain); + ExcelUtil util = new ExcelUtil(ChatExcelMainVO.class); util.exportExcel(response, list, "在线聊天数据"); } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiChatMainMapper.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiChatMainMapper.java index 2745b8f..e90db42 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiChatMainMapper.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiChatMainMapper.java @@ -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 { IPage queryListPage(@Param("entity") ChatMainVO entity, Page page); + List selectChatList(@Param("entity") BusiChatMain entity); + /** * 查询IP数量 * @author vinjor-M diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiChatMainService.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiChatMainService.java index 7f2425d..924730e 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiChatMainService.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiChatMainService.java @@ -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 { IPage queryListPage(ChatMainVO pageReqVO, Page page); + /** + * 不分页查询聊天记录适配导出 + * @author PQZ + * @date 14:03 2025/10/21 + * @param chatMainVO {@link ChatMainVO} + * @return java.util.List + **/ + List listChatMain(ChatMainVO chatMainVO); + /** * 校验是否需要新增 * diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiChatMainServiceImpl.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiChatMainServiceImpl.java index d697ba8..3574f38 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiChatMainServiceImpl.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiChatMainServiceImpl.java @@ -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 + * @author PQZ + * @date 14:03 2025/10/21 + **/ + @Override + public List listChatMain(ChatMainVO chatMainVO) { + List 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; + } + /** * 校验是否需要新增 * diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/ChatExcelMainVO.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/ChatExcelMainVO.java new file mode 100644 index 0000000..140ab29 --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/ChatExcelMainVO.java @@ -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 chatItemList; + +} diff --git a/dl_admin/ruoyi-admin/src/main/resources/mapper/busi/BusiChatMainMapper.xml b/dl_admin/ruoyi-admin/src/main/resources/mapper/busi/BusiChatMainMapper.xml index 5d15daa..31620e3 100644 --- a/dl_admin/ruoyi-admin/src/main/resources/mapper/busi/BusiChatMainMapper.xml +++ b/dl_admin/ruoyi-admin/src/main/resources/mapper/busi/BusiChatMainMapper.xml @@ -28,6 +28,23 @@ + + + + + + + + + + + + + + + + + +