Browse Source

待阅已阅

master
dimengzhe 2 years ago
parent
commit
9a8ae5d92c
  1. 33
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageReadListQuery.java
  2. 46
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/api/message/MessageReadListVo.java
  3. 98
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/message/MessageRest.java
  4. 16
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListMapper.java
  5. 47
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListMapper.xml
  6. 56
      yxt_supervise/supervise-message/supervise-message-biz/src/main/java/com/yxt/supervise/message/biz/messagelist/MessageListService.java

33
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;
}

46
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;
}

98
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<String> pushMessageShare(@RequestBody MessageFlowableQueryForCC query) {
return messageService.pushMessageShare(query);
}
@ApiOperation("PC端待阅已阅列表")
@PostMapping("/todoAllReadList")
public ResultBean<PagerVo<MessageReadListVo>> todoAllReadList(@RequestBody PagerQuery<MessageReadListQuery> pq) {
ResultBean<PagerVo<MessageReadListVo>> rb = ResultBean.fireFail();
if (StringUtils.isBlank(pq.getParams().getUserSid())) {
return rb.setMsg("用户sid不能为空");
}
if (StringUtils.isBlank(pq.getParams().getState())) {
return rb.setMsg("参数错误:state");
}
PagerVo<MessageReadListVo> pagerVo = messageListService.todoAllReadList(pq);
for (MessageReadListVo record : pagerVo.getRecords()) {
String argsJson = record.getArgsJson();
Map<String, Object> 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<PagerVo<MessageReadListVo>>().success().setData(pagerVo);
}
@ApiOperation(value = "业务系统查询待阅任务列表数量")
@GetMapping("/getTodoNum/{userSid}")
ResultBean<Integer> getTodoNum(@PathVariable(value = "userSid") String userSid) {
ResultBean<Integer> rb = ResultBean.fireFail();
if (StringUtils.isBlank(userSid)) {
return rb.setMsg("用户sid不能为空");
}
return messageListService.getTodoNum(userSid);
}
@ApiOperation("批量设为已读")
@GetMapping("/changeRead")
@ApiImplicitParam(name = "sids")
public ResultBean<MessageList> changeRead(@RequestParam("sids") String sids) {
ResultBean rb = ResultBean.fireFail();
List<String> 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<String> 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<String> 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("操作成功");
}
}

16
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<MessageList> {
int selectListCount(String msgTypeSid);
IPage<MessageReadListVo> todoAllReadList(IPage<MessageReadListQuery> iPage,@Param(Constants.WRAPPER) QueryWrapper<MessageList> qw);
Integer getTodoNum(String userSid);
List<String> selectByMsgSid(String s);
int changeRead(List<String> stringList);
}

47
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
</select>
<select id="todoAllReadList" resultType="com.yxt.supervise.message.api.message.MessageReadListVo">
SELECT ml.sid,
ml.msgSid,
m.msgTitle,
DATE_FORMAT(m.createTime, '%Y-%m-%d') as sendTime,
m.senderName,
m.senderDeptName,
m.msgSource,
m.msgTypeSid,
m.businessSid,
m.args_json as argsJson,
DATE_FORMAT(ml.modifyTime, '%Y-%m-%d') as modifyTime
FROM message_list ml
LEFT JOIN message m ON ml.msgSid = m.sid
<where>
${ew.sqlSegment}
and ml.rDelStatus = 0
</where>
ORDER BY ml.id DESC
</select>
<select id="getTodoNum" resultType="java.lang.Integer">
select COUNT(ml.sid)
FROM message_list ml
LEFT JOIN message m ON ml.msgSid = m.sid
where receiverSid = #{userSid}
and m.msgType LIKE concat('%', '抄送', '%')
and ml.state = 0
</select>
<select id="selectByMsgSid" resultType="java.lang.String">
select sid
from message_list
where msgSid = #{s}
</select>
<update id="changeRead">
update message_list
set state=1,
modifyTime = CURRENT_TIMESTAMP
WHERE sid IN
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
and state = 0
</update>
</mapper>

56
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<MessageListMapper, Me
public int selectListCount(String msgTypeSid) {
return baseMapper.selectListCount(msgTypeSid);
}
public PagerVo<MessageReadListVo> todoAllReadList(PagerQuery<MessageReadListQuery> pq) {
QueryWrapper<MessageList> 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<MessageReadListQuery> iPage = PagerUtil.queryToPage(pq);
IPage<MessageReadListVo> page = baseMapper.todoAllReadList(iPage, qw);
PagerVo<MessageReadListVo> pagerVo = PagerUtil.pageToVo(page, null);
pagerVo.setMsg("共查询出" + pagerVo.getTotal() + "条消息");
return pagerVo;
}
public ResultBean<Integer> getTodoNum(String userSid) {
ResultBean rb = new ResultBean<>();
Integer todoNum = baseMapper.getTodoNum(userSid);
return rb.success().setData(todoNum);
}
public List<String> selectByMsgSid(String s) {
return baseMapper.selectByMsgSid(s);
}
public int changeRead(List<String> stringList) {
return baseMapper.changeRead(stringList);
}
}

Loading…
Cancel
Save