c94925b79f57558cb48a4bde5782fcf5631b179d.svn-base 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package org.jeecg.modules.system.service.impl;
  2. import java.util.Arrays;
  3. import java.util.Collection;
  4. import java.util.Date;
  5. import java.util.List;
  6. import javax.annotation.Resource;
  7. import org.jeecg.common.constant.CommonConstant;
  8. import org.jeecg.common.util.oConvertUtils;
  9. import org.jeecg.modules.system.entity.SysAnnouncement;
  10. import org.jeecg.modules.system.entity.SysAnnouncementSend;
  11. import org.jeecg.modules.system.mapper.SysAnnouncementMapper;
  12. import org.jeecg.modules.system.mapper.SysAnnouncementSendMapper;
  13. import org.jeecg.modules.system.service.ISysAnnouncementService;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.transaction.annotation.Transactional;
  16. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  17. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  18. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  19. /**
  20. * @Description: 系统通告表
  21. * @Author: jeecg-boot
  22. * @Date: 2019-01-02
  23. * @Version: V1.0
  24. */
  25. @Service
  26. public class SysAnnouncementServiceImpl extends ServiceImpl<SysAnnouncementMapper, SysAnnouncement> implements ISysAnnouncementService {
  27. @Resource
  28. private SysAnnouncementMapper sysAnnouncementMapper;
  29. @Resource
  30. private SysAnnouncementSendMapper sysAnnouncementSendMapper;
  31. @Transactional
  32. @Override
  33. public void saveAnnouncement(SysAnnouncement sysAnnouncement) {
  34. if(sysAnnouncement.getMsgType().equals(CommonConstant.MSG_TYPE_ALL)) {
  35. sysAnnouncementMapper.insert(sysAnnouncement);
  36. }else {
  37. // 1.插入通告表记录
  38. sysAnnouncementMapper.insert(sysAnnouncement);
  39. // 2.插入用户通告阅读标记表记录
  40. String userId = sysAnnouncement.getUserIds();
  41. String[] userIds = userId.substring(0, (userId.length()-1)).split(",");
  42. String anntId = sysAnnouncement.getId();
  43. Date refDate = new Date();
  44. for(int i=0;i<userIds.length;i++) {
  45. SysAnnouncementSend announcementSend = new SysAnnouncementSend();
  46. announcementSend.setAnntId(anntId);
  47. announcementSend.setUserId(userIds[i]);
  48. announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG);
  49. announcementSend.setReadTime(refDate);
  50. sysAnnouncementSendMapper.insert(announcementSend);
  51. }
  52. }
  53. }
  54. /**
  55. * @功能:编辑消息信息
  56. */
  57. @Transactional
  58. @Override
  59. public boolean upDateAnnouncement(SysAnnouncement sysAnnouncement) {
  60. // 1.更新系统信息表数据
  61. sysAnnouncementMapper.updateById(sysAnnouncement);
  62. String userId = sysAnnouncement.getUserIds();
  63. if(oConvertUtils.isNotEmpty(userId)&&sysAnnouncement.getMsgType().equals(CommonConstant.MSG_TYPE_UESR)) {
  64. // 2.补充新的通知用户数据
  65. String[] userIds = userId.substring(0, (userId.length()-1)).split(",");
  66. String anntId = sysAnnouncement.getId();
  67. Date refDate = new Date();
  68. for(int i=0;i<userIds.length;i++) {
  69. LambdaQueryWrapper<SysAnnouncementSend> queryWrapper = new LambdaQueryWrapper<SysAnnouncementSend>();
  70. queryWrapper.eq(SysAnnouncementSend::getAnntId, anntId);
  71. queryWrapper.eq(SysAnnouncementSend::getUserId, userIds[i]);
  72. List<SysAnnouncementSend> announcementSends=sysAnnouncementSendMapper.selectList(queryWrapper);
  73. if(announcementSends.size()<=0) {
  74. SysAnnouncementSend announcementSend = new SysAnnouncementSend();
  75. announcementSend.setAnntId(anntId);
  76. announcementSend.setUserId(userIds[i]);
  77. announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG);
  78. announcementSend.setReadTime(refDate);
  79. sysAnnouncementSendMapper.insert(announcementSend);
  80. }
  81. }
  82. // 3. 删除多余通知用户数据
  83. Collection<String> delUserIds = Arrays.asList(userIds);
  84. LambdaQueryWrapper<SysAnnouncementSend> queryWrapper = new LambdaQueryWrapper<SysAnnouncementSend>();
  85. queryWrapper.notIn(SysAnnouncementSend::getUserId, delUserIds);
  86. queryWrapper.eq(SysAnnouncementSend::getAnntId, anntId);
  87. sysAnnouncementSendMapper.delete(queryWrapper);
  88. }
  89. return true;
  90. }
  91. // @功能:流程执行完成保存消息通知
  92. @Override
  93. public void saveSysAnnouncement(String title, String msgContent) {
  94. SysAnnouncement announcement = new SysAnnouncement();
  95. announcement.setTitile(title);
  96. announcement.setMsgContent(msgContent);
  97. announcement.setSender("JEECG BOOT");
  98. announcement.setPriority(CommonConstant.PRIORITY_L);
  99. announcement.setMsgType(CommonConstant.MSG_TYPE_ALL);
  100. announcement.setSendStatus(CommonConstant.HAS_SEND);
  101. announcement.setSendTime(new Date());
  102. announcement.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
  103. sysAnnouncementMapper.insert(announcement);
  104. }
  105. @Override
  106. public Page<SysAnnouncement> querySysCementPageByUserId(Page<SysAnnouncement> page, String userId,String msgCategory) {
  107. return page.setRecords(sysAnnouncementMapper.querySysCementListByUserId(page, userId, msgCategory));
  108. }
  109. }