From 521255ff8dbe28acf2620d5bfef5ecf889ddd580 Mon Sep 17 00:00:00 2001 From: wany <13995595726@qq.com> Date: Thu, 19 Sep 2024 15:01:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E6=81=AF=E4=B8=AD=E5=BF=83=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MessageCenterController.java | 48 ++++++++++ .../xyt/entity/so/MessageCenterPageSo.java | 36 +++++++ .../xyt/mapper/MessageCenterMapper.java | 15 +++ .../project/xyt/model/MessageCenter.java | 96 +++++++++++++++++++ .../xyt/service/AssessTaskService.java | 13 ++- .../xyt/service/InspectTaskService.java | 27 +++++- .../xyt/service/MessageCenterService.java | 60 ++++++++++++ 7 files changed, 293 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/gunshi/project/xyt/controller/MessageCenterController.java create mode 100644 src/main/java/com/gunshi/project/xyt/entity/so/MessageCenterPageSo.java create mode 100644 src/main/java/com/gunshi/project/xyt/mapper/MessageCenterMapper.java create mode 100644 src/main/java/com/gunshi/project/xyt/model/MessageCenter.java create mode 100644 src/main/java/com/gunshi/project/xyt/service/MessageCenterService.java diff --git a/src/main/java/com/gunshi/project/xyt/controller/MessageCenterController.java b/src/main/java/com/gunshi/project/xyt/controller/MessageCenterController.java new file mode 100644 index 0000000..e70ecb2 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/controller/MessageCenterController.java @@ -0,0 +1,48 @@ +package com.gunshi.project.xyt.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.xyt.entity.so.MessageCenterPageSo; +import com.gunshi.project.xyt.model.MessageCenter; +import com.gunshi.project.xyt.service.MessageCenterService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * 描述: 消息中心 + * author: xusan + * date: 2024-09-19 10:39:29 + */ +@Tag(name = "消息中心") +@RestController +@RequestMapping(value="/messageCenter") +public class MessageCenterController { + + @Autowired + private MessageCenterService service; + + @Operation(summary = "分页查询") + @PostMapping("/list/page") + public R> listPage(@Validated @RequestBody MessageCenterPageSo page) { + return R.ok(service.listPage(page)); + } + + @Operation(summary = "已读") + @PostMapping("/update") + public R update(@Validated @RequestBody MessageCenter dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "全部标注已读") + @GetMapping("/all/read") + public R allRead(@RequestParam("receiveUserId") @Parameter(description = "接收人id") Long receiveUserId) { + return R.ok(service.allRead(receiveUserId)); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/entity/so/MessageCenterPageSo.java b/src/main/java/com/gunshi/project/xyt/entity/so/MessageCenterPageSo.java new file mode 100644 index 0000000..70a519c --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/so/MessageCenterPageSo.java @@ -0,0 +1,36 @@ +package com.gunshi.project.xyt.entity.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "消息中心分页查询对象") +public class MessageCenterPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="主题") + private String title; + + @Schema(description="发布人名字") + private String publishUserName; + + @Schema(description="接收人id") + @NotNull(message = "接收人id不可为空") + private Long receiveUserId; + + @Schema(description="是否已读(0否 1是)") + @NotNull(message = "是否已读不可为空") + private Integer status; +} diff --git a/src/main/java/com/gunshi/project/xyt/mapper/MessageCenterMapper.java b/src/main/java/com/gunshi/project/xyt/mapper/MessageCenterMapper.java new file mode 100644 index 0000000..652dd16 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/mapper/MessageCenterMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.xyt.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.xyt.model.MessageCenter; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 消息中心 + * author: xusan + * date: 2024-09-19 10:39:29 + */ +@Mapper +public interface MessageCenterMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/model/MessageCenter.java b/src/main/java/com/gunshi/project/xyt/model/MessageCenter.java new file mode 100644 index 0000000..97e1692 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/model/MessageCenter.java @@ -0,0 +1,96 @@ +package com.gunshi.project.xyt.model; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 消息中心 +* author: xusan +* date: 2024-09-19 10:39:29 +*/ +@Schema(description="消息中心") +@Data +@TableName("public.message_center") +public class MessageCenter implements Serializable { + + public final static String thisTableName = "MessageCenter"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 主题 + */ + @TableField(value="title") + @Schema(description="主题") + @Size(max = 100,message = "主题最大长度要小于 100") + private String title; + + /** + * 发布人id + */ + @TableField(value="publish_user_id") + @Schema(description="发布人id") + @JsonSerialize(using = ToStringSerializer.class) + private Long publishUserId; + + /** + * 发布人名字 + */ + @TableField(value="publish_user_name") + @Schema(description="发布人名字") + @Size(max = 100,message = "发布人名字最大长度要小于 100") + private String publishUserName; + + /** + * 发布时间 + */ + @TableField(value="publish_time") + @Schema(description="发布时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date publishTime; + + /** + * 内容 + */ + @TableField(value="content") + @Schema(description="内容") + @Size(max = 500,message = "内容最大长度要小于 500") + private String content; + + /** + * 接收人id + */ + @TableField(value="receive_user_id") + @Schema(description="接收人id") + @JsonSerialize(using = ToStringSerializer.class) + private Long receiveUserId; + + /** + * 是否已读(0否 1是) + */ + @TableField(value="status") + @Schema(description="是否已读(0否 1是)") + private Integer status; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/service/AssessTaskService.java b/src/main/java/com/gunshi/project/xyt/service/AssessTaskService.java index 25e1f1a..ce7cb40 100644 --- a/src/main/java/com/gunshi/project/xyt/service/AssessTaskService.java +++ b/src/main/java/com/gunshi/project/xyt/service/AssessTaskService.java @@ -48,6 +48,9 @@ public class AssessTaskService extends ServiceImpl @Autowired private AssessTeamRatingService teamRatingService; + @Autowired + private MessageCenterService messageCenterService; + public AssessTask saveData(AssessTask dto) { dto.setId(IdWorker.getId()); dto.setStatus(0); @@ -121,6 +124,7 @@ public class AssessTaskService extends ServiceImpl assessObjectService.updateTeams(teams); //考核指标 List ratings = new ArrayList<>(); + List messages = new ArrayList<>(); List indicatorIds = this.baseMapper.queryIndicators(task.getTemplateId()); for(AssessTeam team : teams){ for(AssessIndicator indicator : indicatorIds){ @@ -131,9 +135,16 @@ public class AssessTaskService extends ServiceImpl rating.setStandardScore(indicator.getStandardScore()); ratings.add(rating); } + MessageCenter center = new MessageCenter(); + center.setPublishUserId(task.getCreateUserId()); + center.setPublishUserName(task.getCreateUserName()); + center.setReceiveUserId(team.getTeamUserId()); + center.setTitle("评分任务"); + center.setContent("您收到一条考核评分任务的提醒:"+task.getTaskName()+",请及时处理。"); + messages.add(center); } teamRatingService.saveBatch(ratings); - + messageCenterService.insertMessage(messages); List list = new ArrayList<>(); for(AssessObject object : objects){ for(AssessIndicator indicator : indicatorIds){ diff --git a/src/main/java/com/gunshi/project/xyt/service/InspectTaskService.java b/src/main/java/com/gunshi/project/xyt/service/InspectTaskService.java index 36bf8ac..efc1ab2 100644 --- a/src/main/java/com/gunshi/project/xyt/service/InspectTaskService.java +++ b/src/main/java/com/gunshi/project/xyt/service/InspectTaskService.java @@ -11,14 +11,17 @@ import com.gunshi.project.xyt.entity.vo.InspectTaskDetailVo; import com.gunshi.project.xyt.entity.vo.InspectTaskVo; import com.gunshi.project.xyt.mapper.InspectTaskMapper; import com.gunshi.project.xyt.model.InspectTask; +import com.gunshi.project.xyt.model.MessageCenter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** * 描述: 巡检任务 @@ -34,12 +37,23 @@ public class InspectTaskService extends ServiceImpl list = vo.getList(); - inspectTaskDetailService.finish(list); InspectTask task = this.getById(list.get(0).getTaskId()); + inspectTaskDetailService.finish(list); task.setFinishTime(vo.getStatus() == 2 ? new Date() : null); task.setStatus(vo.getStatus()); + + List messageCenters = list.stream().filter(o -> o.getIsHandle() == 1).map(t->{ + MessageCenter center = new MessageCenter(); + center.setPublishUserId(task.getInspectUserId()); + center.setPublishUserName(task.getInspectUserName()); + center.setReceiveUserId(t.getHandleUserId()); + center.setTitle("巡查问题"); + center.setContent("您收到一条巡查任务未处理问题的提醒:"+task.getTaskTitle()+",请及时处理。"); + return center; + }).collect(Collectors.toList()); + messageCenterService.insertMessage(messageCenters); return this.updateById(task); } diff --git a/src/main/java/com/gunshi/project/xyt/service/MessageCenterService.java b/src/main/java/com/gunshi/project/xyt/service/MessageCenterService.java new file mode 100644 index 0000000..e43e0f0 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/service/MessageCenterService.java @@ -0,0 +1,60 @@ +package com.gunshi.project.xyt.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +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.gunshi.project.xyt.entity.so.MessageCenterPageSo; +import com.gunshi.project.xyt.mapper.MessageCenterMapper; +import com.gunshi.project.xyt.model.MessageCenter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +/** + * 描述: 消息中心 + * author: xusan + * date: 2024-09-19 10:39:29 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class MessageCenterService extends ServiceImpl +{ + + public void insertMessage(List messageCenters){ + for(MessageCenter messageCenter : messageCenters){ + messageCenter.setId(IdWorker.getId()); + messageCenter.setPublishTime(new Date()); + messageCenter.setStatus(0); + } + this.saveBatch(messageCenters); + } + + public Page listPage(MessageCenterPageSo page) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(MessageCenter::getReceiveUserId,page.getReceiveUserId()) + .eq(MessageCenter::getStatus,page.getStatus()); + if (ObjectUtils.isNotNull(page.getTitle())) { + queryWrapper.like(MessageCenter::getTitle, page.getTitle()); + } + if (ObjectUtils.isNotNull(page.getPublishUserName())) { + queryWrapper.like(MessageCenter::getPublishUserName, page.getPublishUserName()); + } + return this.page(page.getPageSo().toPage(),queryWrapper); + } + + public Boolean allRead(Long receiveUserId) { + return this.lambdaUpdate() + .set(MessageCenter::getStatus, 1) + .eq(MessageCenter::getReceiveUserId, receiveUserId) + .update(); + } +} + +