diff --git a/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageReadListQuery.java b/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageReadListQuery.java new file mode 100644 index 00000000..492e4863 --- /dev/null +++ b/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageReadListQuery.java @@ -0,0 +1,33 @@ +package com.yxt.supervise.message.api.message; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/12/1 + **/ +@Data +public class MessageReadListQuery implements Query { + private static final long serialVersionUID = 3988277744950143656L; + + @ApiModelProperty("用户sid") + private String userSid; + @ApiModelProperty("组织机构全路径") + private String orgPath; + @ApiModelProperty("0 待阅 1 已阅") + private String state; + @ApiModelProperty("工作名称") + private String names; + @ApiModelProperty("发起开始日期") + private String createStartTime; + @ApiModelProperty("发起结束日期") + private String createEndTime; + + @ApiModelProperty("发送人") + private String senderName; + + private String startUserSid; +} diff --git a/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageReadListVo.java b/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageReadListVo.java new file mode 100644 index 00000000..d443477a --- /dev/null +++ b/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageReadListVo.java @@ -0,0 +1,46 @@ +package com.yxt.supervise.message.api.message; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/12/1 + **/ +@Data +public class MessageReadListVo { + + @ApiModelProperty("消息列表sid") + private String sid; + @ApiModelProperty("消息体sid") + private String msgSid; + @ApiModelProperty("消息标题") + private String msgTitle; + @ApiModelProperty("发送时间") + private String sendTime; + //发送人 + private String senderName; + //发送人部门 + private String senderDeptName; + //来源 + private String msgSource; + //消息类别Sid + private String msgTypeSid; + + private String taskDefKey; + + private String procInsId; + + private String taskName; + + private String taskId; + + private String procDefId; + + private String businessSid; + + private String argsJson; + @ApiModelProperty("已阅日期") + private String modifyTime; +} diff --git a/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/message/MessageRest.java b/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/message/MessageRest.java index 98f9cacf..b9cfb7a3 100644 --- a/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/message/MessageRest.java +++ b/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/message/MessageRest.java @@ -1,13 +1,24 @@ package com.yxt.supervise.message.biz.message; +import com.alibaba.fastjson.JSON; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.message.api.message.Message; import com.yxt.supervise.message.api.message.MessageFlowableQueryForCC; +import com.yxt.supervise.message.api.message.MessageReadListQuery; +import com.yxt.supervise.message.api.message.MessageReadListVo; +import com.yxt.supervise.message.api.messagelist.MessageList; +import com.yxt.supervise.message.biz.messagelist.MessageListService; +import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; /** * @description: @@ -20,6 +31,8 @@ public class MessageRest { @Autowired private MessageService messageService; + @Autowired + private MessageListService messageListService; @ApiOperation("流程审批推送消息 抄送") @PostMapping("/pushMessageCC") @@ -32,4 +45,81 @@ public class MessageRest { public ResultBean pushMessageShare(@RequestBody MessageFlowableQueryForCC query) { return messageService.pushMessageShare(query); } + + @ApiOperation("PC端待阅已阅列表") + @PostMapping("/todoAllReadList") + public ResultBean> todoAllReadList(@RequestBody PagerQuery pq) { + ResultBean> rb = ResultBean.fireFail(); + if (StringUtils.isBlank(pq.getParams().getUserSid())) { + return rb.setMsg("用户sid不能为空"); + } + if (StringUtils.isBlank(pq.getParams().getState())) { + return rb.setMsg("参数错误:state"); + } + PagerVo pagerVo = messageListService.todoAllReadList(pq); + for (MessageReadListVo record : pagerVo.getRecords()) { + String argsJson = record.getArgsJson(); + Map map = JSON.parseObject(argsJson); + record.setTaskId((String) map.get("taskId")); + record.setTaskName((String) map.get("taskName")); + record.setProcInsId((String) map.get("procInsId")); + record.setTaskDefKey((String) map.get("taskDefKey")); + record.setProcDefId((String) map.get("deployId")); + } + return new ResultBean>().success().setData(pagerVo); + } + + @ApiOperation(value = "业务系统查询待阅任务列表数量") + @GetMapping("/getTodoNum/{userSid}") + ResultBean getTodoNum(@PathVariable(value = "userSid") String userSid) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(userSid)) { + return rb.setMsg("用户sid不能为空"); + } + return messageListService.getTodoNum(userSid); + } + + @ApiOperation("批量设为已读") + @GetMapping("/changeRead") + @ApiImplicitParam(name = "sids") + public ResultBean changeRead(@RequestParam("sids") String sids) { + ResultBean rb = ResultBean.fireFail(); + List sidList = Arrays.asList(sids.split(",")); + if (sidList.size() == 1) { + //判断是否在消息列表中 + MessageList messageList = messageListService.fetchBySid(sidList.get(0)); + if (messageList == null) { + //查询是否在消息体中 + Message message = messageService.fetchBySid(sidList.get(0)); + if (message != null) { + //查询是否是审批中心 + if ("审批中心".equals(message.getMsgType())) { + //更新所有的已读 + List stringList = messageListService.selectByMsgSid(sidList.get(0)); + int count = messageListService.changeRead(stringList); + } + } + } else { + Message message = messageService.fetchBySid(messageList.getMsgSid()); + if (message != null) { + //查询是否是审批中心 + if ("审批中心".equals(message.getMsgType())) { + //更新所有的已读 + List stringList = messageListService.selectByMsgSid(messageList.getMsgSid()); + int count = messageListService.changeRead(stringList); + } else { + int count = messageListService.changeRead(sidList); + } + } else { + int count = messageListService.changeRead(sidList); + } + + } + } else { + int count = messageListService.changeRead(sidList); + } + + return rb.success().setMessage("操作成功"); + } + } diff --git a/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListMapper.java b/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListMapper.java index 8d5f5126..e8181548 100644 --- a/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListMapper.java +++ b/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListMapper.java @@ -1,8 +1,16 @@ package com.yxt.supervise.message.biz.messagelist; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.supervise.message.api.message.MessageReadListQuery; +import com.yxt.supervise.message.api.message.MessageReadListVo; import com.yxt.supervise.message.api.messagelist.MessageList; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @description: @@ -12,4 +20,12 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface MessageListMapper extends BaseMapper { int selectListCount(String msgTypeSid); + + IPage todoAllReadList(IPage iPage,@Param(Constants.WRAPPER) QueryWrapper qw); + + Integer getTodoNum(String userSid); + + List selectByMsgSid(String s); + + int changeRead(List stringList); } diff --git a/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListMapper.xml b/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListMapper.xml index f019ce02..4119559e 100644 --- a/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListMapper.xml +++ b/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListMapper.xml @@ -8,4 +8,51 @@ WHERE M.msgTypeSid = #{msgTypeSid} AND ML.state = 0 + + + + + + + + + update message_list + set state=1, + modifyTime = CURRENT_TIMESTAMP + WHERE sid IN + + #{item} + + and state = 0 + \ No newline at end of file diff --git a/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListService.java b/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListService.java index 1e07ab96..57e5b08e 100644 --- a/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListService.java +++ b/yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListService.java @@ -1,10 +1,21 @@ package com.yxt.supervise.message.biz.messagelist; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.message.api.message.MessageReadListQuery; +import com.yxt.supervise.message.api.message.MessageReadListVo; import com.yxt.supervise.message.api.messagelist.MessageList; import com.yxt.supervise.message.api.messagelist.MessageListDto; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import java.util.List; + /** * @description: * @author: dimengzhe @@ -22,4 +33,49 @@ public class MessageListService extends MybatisBaseService todoAllReadList(PagerQuery pq) { + QueryWrapper qw = new QueryWrapper<>(); + MessageReadListQuery messageReadListQuery = pq.getParams(); + qw.eq("ml.receiverSid", pq.getParams().getUserSid()); + qw.eq("m.msgTypeSid", "bc59c198-2d52-bb54-e4106aa38821a9ec");//阅读类 + if (StringUtils.isNotBlank(messageReadListQuery.getNames())) { + qw.like("m.msgTitle", messageReadListQuery.getNames()); + } + if ("0".equals(messageReadListQuery.getState())) {//待阅 + qw.eq("ml.state", 0); + } else {//已阅 + qw.eq("ml.state", 1); + } + String createStartTime = messageReadListQuery.getCreateStartTime(); + String createEndTime = messageReadListQuery.getCreateEndTime(); + qw.apply(StringUtils.isNotEmpty(createStartTime), "date_format (m.createTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')"). + apply(StringUtils.isNotEmpty(createEndTime), "date_format (m.createTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')" + ); + if (StringUtils.isNotBlank(messageReadListQuery.getSenderName())) { + qw.like("m.senderName", messageReadListQuery.getSenderName()); + } + if (StringUtils.isNotBlank(messageReadListQuery.getStartUserSid())) { + qw.like("m.senderSid", messageReadListQuery.getStartUserSid()); + } + IPage iPage = PagerUtil.queryToPage(pq); + IPage page = baseMapper.todoAllReadList(iPage, qw); + PagerVo pagerVo = PagerUtil.pageToVo(page, null); + pagerVo.setMsg("共查询出" + pagerVo.getTotal() + "条消息"); + return pagerVo; + } + + public ResultBean getTodoNum(String userSid) { + ResultBean rb = new ResultBean<>(); + Integer todoNum = baseMapper.getTodoNum(userSid); + return rb.success().setData(todoNum); + } + + public List selectByMsgSid(String s) { + return baseMapper.selectByMsgSid(s); + } + + public int changeRead(List stringList) { + return baseMapper.changeRead(stringList); + } }