From 5a788cdf58f32c1d6cffb7dd6ce7aecddf38accb Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期二, 18 二月 2025 09:01:54 +0800
Subject: [PATCH] 添加消息记录
---
ruoyi-system/src/main/resources/mapper/system/InformationNotificationMapper.xml | 16 +++
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotificationDto.java | 10 ++
ruoyi-system/src/main/java/com/ruoyi/system/mapper/InformationNotificationMapper.java | 20 ++++
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotification.java | 69 +++++++++++++
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java | 33 ++----
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InformationNotificationServiceImpl.java | 98 +++++++++++++++++++
ruoyi-system/src/main/java/com/ruoyi/system/service/InformationNotificationService.java | 34 ++++++
7 files changed, 258 insertions(+), 22 deletions(-)
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
index 18a9488..45ef235 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
@@ -2,7 +2,6 @@
//
//import cn.hutool.core.util.StrUtil;
//import cn.hutool.json.JSONUtil;
-//import com.aspose.words.*;
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
//import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -13,27 +12,17 @@
//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
//import com.deepoove.poi.XWPFTemplate;
//import com.deepoove.poi.data.Pictures;
-//import com.itextpdf.text.BadElementException;
-//import com.itextpdf.text.DocumentException;
-//import com.itextpdf.text.pdf.PdfContentByte;
-//import com.itextpdf.text.pdf.PdfReader;
-//import com.itextpdf.text.pdf.PdfStamper;
-//import com.yuanchu.mom.common.GetLook;
-//import com.yuanchu.mom.common.InsOrderTypeConstants;
-//import com.yuanchu.mom.common.PrintChina;
-//import com.yuanchu.mom.dto.ReportPageDto;
-//import com.yuanchu.mom.exception.ErrorException;
-//import com.yuanchu.mom.mapper.*;
-//import com.yuanchu.mom.pojo.*;
-//import com.yuanchu.mom.properties.WechatProperty;
-//import com.yuanchu.mom.service.InformationNotificationService;
-//import com.yuanchu.mom.service.InsOrderService;
-//import com.yuanchu.mom.service.InsReportService;
-//import com.yuanchu.mom.utils.DateImageUtil;
-//import com.yuanchu.mom.utils.IfsApiUtils;
-//import com.yuanchu.mom.utils.QueryWrappers;
-//import com.yuanchu.mom.utils.WxCpUtils;
-//import com.yuanchu.mom.vo.Result;
+//import com.ruoyi.common.properties.WechatProperty;
+//import com.ruoyi.common.utils.QueryWrappers;
+//import com.ruoyi.inspect.dto.ReportPageDto;
+//import com.ruoyi.inspect.mapper.InsOrderStateMapper;
+//import com.ruoyi.inspect.mapper.InsProductMapper;
+//import com.ruoyi.inspect.mapper.InsReportMapper;
+//import com.ruoyi.inspect.mapper.InsUnqualifiedRetestProductMapper;
+//import com.ruoyi.inspect.pojo.InsReport;
+//import com.ruoyi.inspect.service.InsOrderService;
+//import com.ruoyi.inspect.service.InsReportService;
+//import com.ruoyi.system.mapper.UserMapper;
//import org.apache.poi.xwpf.usermodel.*;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotification.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotification.java
new file mode 100644
index 0000000..df394b9
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotification.java
@@ -0,0 +1,69 @@
+package com.ruoyi.common.core.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 娑堟伅閫氱煡
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-04-23 02:14:30
+ */
+@Getter
+@Setter
+@TableName("information_notification")
+@ApiModel(value = "InformationNotification瀵硅薄", description = "娑堟伅閫氱煡")
+public class InformationNotification implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("涓婚敭ID")
+ @TableId(type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ private String createUser;
+
+ @ApiModelProperty("鏇存柊鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿/鍙戦�佹椂闂�")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("寰呭姙銆佹帴鏀躲�佸鏍搞�佹壒鍑嗐�侀璀︽彁閱掋�侀�氱煡鍏憡")
+ private String messageType;
+
+ @ApiModelProperty("涓婚")
+ private String theme;
+
+ @ApiModelProperty("鍐呭")
+ private String content;
+
+ @ApiModelProperty("鍙戦�佷汉Id")
+ private Integer senderId;
+
+ @ApiModelProperty("鏀朵欢浜�")
+ private Integer consigneeId;
+
+ @ApiModelProperty("鏌ョ湅鐘舵�侊細宸茶锛屾湭璇�")
+ private Boolean viewStatus;
+
+ @ApiModelProperty("娑堟伅鐘舵�侊紙鎷掔粷銆佹帴鏀讹級锛堟牴鎹秷鎭被鍨嬪睍绀猴級")
+ private Boolean messageStatus;
+
+ @ApiModelProperty("璺宠浆璺緞")
+ private String jumpPath;
+
+ @ApiModelProperty("璺宠浆Id")
+ private String jumpId;
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotificationDto.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotificationDto.java
new file mode 100644
index 0000000..7b6a694
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotificationDto.java
@@ -0,0 +1,10 @@
+package com.ruoyi.common.core.domain.entity;
+
+import lombok.Data;
+
+@Data
+public class InformationNotificationDto extends InformationNotification{
+ private String senderUser;
+
+ private String consigneeUser;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/InformationNotificationMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/InformationNotificationMapper.java
new file mode 100644
index 0000000..6eec64c
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/InformationNotificationMapper.java
@@ -0,0 +1,20 @@
+package com.ruoyi.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.entity.InformationNotification;
+import com.ruoyi.common.core.domain.entity.InformationNotificationDto;
+
+/**
+ * <p>
+ * 娑堟伅閫氱煡 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-04-23 02:14:30
+ */
+public interface InformationNotificationMapper extends BaseMapper<InformationNotification> {
+
+ IPage<InformationNotificationDto> getPage(Page page, String messageType, Integer userId);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/InformationNotificationService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/InformationNotificationService.java
new file mode 100644
index 0000000..3842f7d
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/InformationNotificationService.java
@@ -0,0 +1,34 @@
+package com.ruoyi.system.service;
+
+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.common.core.domain.entity.InformationNotification;
+import com.ruoyi.common.core.domain.entity.InformationNotificationDto;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 娑堟伅閫氱煡 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-04-23 02:14:30
+ */
+public interface InformationNotificationService extends IService<InformationNotification> {
+
+ IPage<InformationNotificationDto> getPage(Page page, String messageType);
+
+ void markAllInformationReadOrDeleteAllReadMessages(Boolean isMarkAllInformationRead);
+
+ Boolean checkForUnreadData();
+
+ void triggerModificationStatusToRead(Integer id);
+
+ int addInformationNotification(InformationNotification informationNotification);
+
+ Map<String, Object> getNumberFourTypesMessagesHomePage();
+
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InformationNotificationServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InformationNotificationServiceImpl.java
new file mode 100644
index 0000000..31af676
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InformationNotificationServiceImpl.java
@@ -0,0 +1,98 @@
+package com.ruoyi.system.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.entity.InformationNotification;
+import com.ruoyi.common.core.domain.entity.InformationNotificationDto;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.system.mapper.InformationNotificationMapper;
+import com.ruoyi.system.service.InformationNotificationService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 娑堟伅閫氱煡 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-04-23 02:14:30
+ */
+@Service
+public class InformationNotificationServiceImpl extends ServiceImpl<InformationNotificationMapper, InformationNotification> implements InformationNotificationService {
+
+ @Override
+ public IPage<InformationNotificationDto> getPage(Page page, String messageType) {
+ return baseMapper.getPage(page, messageType, SecurityUtils.getUserId().intValue());
+ }
+
+ @Override
+ public void markAllInformationReadOrDeleteAllReadMessages(Boolean isMarkAllInformationRead) {
+ if (isMarkAllInformationRead) {
+ baseMapper.update(new InformationNotification(), Wrappers.<InformationNotification>lambdaUpdate()
+ .set(InformationNotification::getViewStatus, true)
+ .eq(InformationNotification::getConsigneeId, SecurityUtils.getUserId().intValue()));
+ } else {
+ baseMapper.delete(Wrappers.<InformationNotification>lambdaUpdate()
+ .eq(InformationNotification::getConsigneeId, SecurityUtils.getUserId().intValue())
+ .eq(InformationNotification::getViewStatus, true));
+ }
+ }
+
+ @Override
+ public Boolean checkForUnreadData() {
+ Map<String, Integer> map1 = null;
+ try {
+ List<InformationNotification> informationNotifications = baseMapper.selectList(
+ Wrappers.<InformationNotification>lambdaQuery()
+ .eq(InformationNotification::getConsigneeId, SecurityUtils.getUserId().intValue())
+ .eq(InformationNotification::getViewStatus, false)
+ .last("limit 1"));
+ return !informationNotifications.isEmpty();
+ } catch (Exception e) {
+ }
+ return false;
+ }
+
+ @Override
+ public void triggerModificationStatusToRead(Integer id) {
+ baseMapper.update(new InformationNotification(), Wrappers.<InformationNotification>lambdaUpdate()
+ .eq(InformationNotification::getId, id)
+ .set(InformationNotification::getViewStatus, true));
+ }
+
+ @Override
+ public int addInformationNotification(InformationNotification informationNotification) {
+ informationNotification.setViewStatus(false);
+ return baseMapper.insert(informationNotification);
+ }
+
+ @Override
+ public Map<String, Object> getNumberFourTypesMessagesHomePage() {
+ Map<String, Object> map = new HashMap<>();
+ int userId = SecurityUtils.getUserId().intValue();
+ Long totalNumberOfMessages = baseMapper.selectCount(Wrappers.<InformationNotification>lambdaQuery()
+ .eq(InformationNotification::getConsigneeId, userId));
+ Long totalNumberOfReadMessages = baseMapper.selectCount(Wrappers.<InformationNotification>lambdaQuery()
+ .eq(InformationNotification::getConsigneeId, userId)
+ .eq(InformationNotification::getViewStatus, true));
+ LocalDate today = LocalDate.now();
+ LocalDate sevenDaysAgo = today.minusDays(7);
+ Long totalNumberOfMessagesInThePastSevenDays = baseMapper.selectCount(Wrappers.<InformationNotification>lambdaQuery()
+ .eq(InformationNotification::getConsigneeId, userId)
+ .between(InformationNotification::getCreateTime, today, sevenDaysAgo));
+ long remainingToDo = totalNumberOfMessages - totalNumberOfReadMessages;
+ map.put("totalNumberOfMessages", totalNumberOfMessages);
+ map.put("remainingToDo", remainingToDo);
+ map.put("totalNumberOfReadMessages", totalNumberOfReadMessages);
+ map.put("totalNumberOfMessagesInThePastSevenDays", totalNumberOfMessagesInThePastSevenDays);
+ return map;
+ }
+}
diff --git a/ruoyi-system/src/main/resources/mapper/system/InformationNotificationMapper.xml b/ruoyi-system/src/main/resources/mapper/system/InformationNotificationMapper.xml
new file mode 100644
index 0000000..3936965
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/InformationNotificationMapper.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.InformationNotificationMapper">
+
+ <select id="getPage" resultType="com.ruoyi.common.core.domain.entity.InformationNotificationDto">
+ select i.*, u.name senderUser, u2.name consigneeUser
+ from information_notification i
+ left join user u on i.sender_id = u.id
+ left join user u2 on u2.id = i.consignee_id
+ where i.consignee_id = #{userId}
+ <if test="messageType != '' and messageType != null">
+ and i.message_type = #{messageType}
+ </if>
+ order by i.create_time desc
+ </select>
+</mapper>
--
Gitblit v1.9.3