浏览代码

公告改变状态添加人员

phoenix 1 年之前
父节点
当前提交
5cd4a83963

+ 163 - 171
src/main/java/com/xjrsoft/module/oa/service/impl/NewsServiceImpl.java

@@ -146,7 +146,7 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
         News news = BeanUtil.toBean(addProclamationDto, News.class);
         news.setTypeId(2);
         news.setEnabledMark(EnabledMark.ENABLED.getCode());
-        LambdaQueryWrapper<News> queryWrapperSortcode = new LambdaQueryWrapper<>();
+        //LambdaQueryWrapper<News> queryWrapperSortcode = new LambdaQueryWrapper<>();
         //queryWrapperSortcode.select("SELECT IFNULL(MAX(sort_code),1)");
         newsMapper.insert(news);
 
@@ -159,51 +159,14 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
             }
         }
 
+        //如果状态是2,表示立即发布的公告,需要将阅读人添加进阅读关系表
+        if(addProclamationDto.getStatus() == 2){
+            addRelation(news);
+        }
+
         //公告需要添加阅读关系,关系类型 1=部门 2=人员 3=班级
         if (addProclamationDto.getSendRange() == 3 && addProclamationDto.getRelationList() != null) {
-            for (AddNewsRelationDto relationDto : addProclamationDto.getRelationList()) {
-                if (relationDto.getRelationType() == 1) {
-                    Department department = departmentMapper.selectById(relationDto.getRelationId());
-                    newsRelationConfigMapper.insert(new NewsRelationConfig() {{
-                        setNewsId(news.getId());
-                        setRelationId(relationDto.getRelationId());
-                        setRelationType(relationDto.getRelationType());
-                        if (department != null) {
-                            setRelationName(department.getName());
-                        }
-                    }});
-                }
-                if (relationDto.getRelationType() == 2) {
-                    XjrUser xjrUser = xjrUserMapper.selectById(relationDto.getRelationId());
-                    newsRelationConfigMapper.insert(new NewsRelationConfig() {{
-                        setNewsId(news.getId());
-                        setRelationId(relationDto.getRelationId());
-                        setRelationType(relationDto.getRelationType());
-                        if (xjrUser != null) {
-                            setRelationName(xjrUser.getName());
-                        }
-                    }});
-                }
-                if (relationDto.getRelationType() == 3) {
-                    BaseClass baseClass = baseClassMapper.selectById(relationDto.getRelationId());
-                    BaseGrade baseGrade = null;
-                    if (baseClass == null) {
-                        baseGrade = baseGradeMapper.selectById(relationDto.getRelationId());
-                    }
-                    BaseGrade finalBaseGrade = baseGrade;
-                    newsRelationConfigMapper.insert(new NewsRelationConfig() {{
-                        setNewsId(news.getId());
-                        setRelationId(relationDto.getRelationId());
-                        setRelationType(relationDto.getRelationType());
-                        if (baseClass != null) {
-                            setRelationName(baseClass.getName());
-                        }
-                        if (finalBaseGrade != null) {
-                            setRelationName(finalBaseGrade.getName());
-                        }
-                    }});
-                }
-            }
+            addRelationConfig(news, addProclamationDto);
         }
         return true;
     }
@@ -341,76 +304,172 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
             xjrNews.setModifyUserId(StpUtil.getLoginIdAsLong());
             xjrNews.setModifyDate(LocalDateTime.now());
 
-            if (xjrNews.getSendRange() == 3) {
-                //查出当前公告的关系配置
-                //部门
-                LambdaQueryWrapper<NewsRelationConfig> queryDeptList = new LambdaQueryWrapper<>();
-                queryDeptList
-                        .eq(NewsRelationConfig::getNewsId, xjrNews.getId())
-                        .eq(NewsRelationConfig::getRelationType, 1);
-                List<NewsRelationConfig> deptList = newsRelationConfigMapper.selectList(queryDeptList);
-                List<Long> deptIdList = new ArrayList<>();
-                for (NewsRelationConfig newsRelationConfig : deptList) {
-                    deptIdList.add(newsRelationConfig.getRelationId());
-                }
+            addRelation(xjrNews);
+        }
 
-                //人员
-                LambdaQueryWrapper<NewsRelationConfig> queryPersonalList = new LambdaQueryWrapper<>();
-                queryPersonalList
-                        .eq(NewsRelationConfig::getNewsId, xjrNews.getId())
-                        .eq(NewsRelationConfig::getRelationType, 2);
-                List<NewsRelationConfig> personalList = newsRelationConfigMapper.selectList(queryPersonalList);
-                List<Long> personalIdList = new ArrayList<>();
-                for (NewsRelationConfig newsRelationConfig : personalList) {
-                    personalIdList.add(newsRelationConfig.getRelationId());
-                }
+        if (xjrNews.getStatus() == 3) {
+            //应该将关系配置表和关系表的数据设置为删除
+        }
+        return this.updateById(xjrNews);
+    }
+
+    @Override
+    public boolean updateProclamation(UpdateProclamationDto updateProclamationDto) {
+        News news = BeanUtil.toBean(updateProclamationDto, News.class);
+        news.setModifyDate(LocalDateTime.now());
+        news.setModifyUserId(StpUtil.getLoginIdAsLong());
+        newsMapper.updateById(news);
 
-                //班级
-                LambdaQueryWrapper<NewsRelationConfig> queryClassList = new LambdaQueryWrapper<>();
-                queryClassList
-                        .eq(NewsRelationConfig::getNewsId, xjrNews.getId())
-                        .eq(NewsRelationConfig::getRelationType, 3);
-                List<NewsRelationConfig> classList = newsRelationConfigMapper.selectList(queryClassList);
-                List<Long> classIdList = new ArrayList<>();
-                for (NewsRelationConfig newsRelationConfig : classList) {
-                    classIdList.add(newsRelationConfig.getRelationId());
+        newsAppendixMapper.delete(Wrappers.lambdaQuery(NewsAppendix.class).eq(NewsAppendix::getNewsId, news.getId()));
+        if (updateProclamationDto.getAppendixList() != null) {
+            for (AddNewsAppendixDto appendixDto : updateProclamationDto.getAppendixList()) {
+                NewsAppendix newsAppendix = BeanUtil.toBean(appendixDto, NewsAppendix.class);
+                newsAppendix.setNewsId(news.getId());
+                newsAppendixMapper.insert(newsAppendix);
+            }
+        }
+
+        if (updateProclamationDto.getSendRange() == 3 && updateProclamationDto.getRelationList() != null) {
+            newsRelationMapper.delete(Wrappers.lambdaQuery(NewsRelation.class).eq(NewsRelation::getNewsId, news.getId()));
+            newsRelationConfigMapper.delete(Wrappers.lambdaQuery(NewsRelationConfig.class).eq(NewsRelationConfig::getNewsId, news.getId()));
+            updateRelationConfig(news, updateProclamationDto);
+        }
+        return true;
+    }
+
+    /**
+     * 添加阅读关系配置表
+     * @param news
+     * @return
+     */
+    private Boolean updateRelationConfig(News news, UpdateProclamationDto updateProclamationDto){
+        AddProclamationDto addProclamationDto = BeanUtil.toBean(updateProclamationDto, AddProclamationDto.class);
+        return addRelationConfig(news, addProclamationDto);
+    }
+
+    private Boolean addRelationConfig(News news, AddProclamationDto addProclamationDto){
+        for (AddNewsRelationDto relationDto : addProclamationDto.getRelationList()) {
+            if (relationDto.getRelationType() == 1) {
+                Department department = departmentMapper.selectById(relationDto.getRelationId());
+                newsRelationConfigMapper.insert(new NewsRelationConfig() {{
+                    setNewsId(news.getId());
+                    setRelationId(relationDto.getRelationId());
+                    setRelationType(relationDto.getRelationType());
+                    if (department != null) {
+                        setRelationName(department.getName());
+                    }
+                }});
+            }
+            if (relationDto.getRelationType() == 2) {
+                XjrUser xjrUser = xjrUserMapper.selectById(relationDto.getRelationId());
+                newsRelationConfigMapper.insert(new NewsRelationConfig() {{
+                    setNewsId(news.getId());
+                    setRelationId(relationDto.getRelationId());
+                    setRelationType(relationDto.getRelationType());
+                    if (xjrUser != null) {
+                        setRelationName(xjrUser.getName());
+                    }
+                }});
+            }
+            if (relationDto.getRelationType() == 3) {
+                BaseClass baseClass = baseClassMapper.selectById(relationDto.getRelationId());
+                BaseGrade baseGrade = null;
+                if (baseClass == null) {
+                    baseGrade = baseGradeMapper.selectById(relationDto.getRelationId());
                 }
+                BaseGrade finalBaseGrade = baseGrade;
+                newsRelationConfigMapper.insert(new NewsRelationConfig() {{
+                    setNewsId(news.getId());
+                    setRelationId(relationDto.getRelationId());
+                    setRelationType(relationDto.getRelationType());
+                    if (baseClass != null) {
+                        setRelationName(baseClass.getName());
+                    }
+                    if (finalBaseGrade != null) {
+                        setRelationName(finalBaseGrade.getName());
+                    }
+                }});
+            }
+        }
+        return true;
+    }
+
+    /**
+     * 添加阅读关系到关系表
+     * @param xjrNews
+     * @return
+     */
+    private Boolean addRelation(News xjrNews){
+        if (xjrNews.getSendRange() == 3) {
+            //查出当前公告的关系配置
+            //部门
+            LambdaQueryWrapper<NewsRelationConfig> queryDeptList = new LambdaQueryWrapper<>();
+            queryDeptList
+                    .eq(NewsRelationConfig::getNewsId, xjrNews.getId())
+                    .eq(NewsRelationConfig::getRelationType, 1);
+            List<NewsRelationConfig> deptList = newsRelationConfigMapper.selectList(queryDeptList);
+            List<Long> deptIdList = new ArrayList<>();
+            for (NewsRelationConfig newsRelationConfig : deptList) {
+                deptIdList.add(newsRelationConfig.getRelationId());
+            }
+
+            //人员
+            LambdaQueryWrapper<NewsRelationConfig> queryPersonalList = new LambdaQueryWrapper<>();
+            queryPersonalList
+                    .eq(NewsRelationConfig::getNewsId, xjrNews.getId())
+                    .eq(NewsRelationConfig::getRelationType, 2);
+            List<NewsRelationConfig> personalList = newsRelationConfigMapper.selectList(queryPersonalList);
+            List<Long> personalIdList = new ArrayList<>();
+            for (NewsRelationConfig newsRelationConfig : personalList) {
+                personalIdList.add(newsRelationConfig.getRelationId());
+            }
 
-                //对人员进行筛选,避免重复添加
-                List<Long> userIdList = new ArrayList<>();
-                if (personalIdList != null) {
-                    //获取人员的班级或者部门
-                    List<DeptIdOrClassIdVo> deptIdOrClassIdVoList = newsMapper.getDeptIdOrClassId(personalIdList);
-                    for (DeptIdOrClassIdVo deptIdOrClassIdVo : deptIdOrClassIdVoList) {
-                        if (deptIdOrClassIdVo.getClassId() != null) {//有班级是学生
-                            if (!classIdList.contains(deptIdOrClassIdVo.getClassId())) {
-                                userIdList.add(deptIdOrClassIdVo.getUserId());
-                            }
-                        } else {
-                            if (!deptIdList.contains(deptIdOrClassIdVo.getDeptId())) {
-                                userIdList.add(deptIdOrClassIdVo.getUserId());
-                            }
+            //班级
+            LambdaQueryWrapper<NewsRelationConfig> queryClassList = new LambdaQueryWrapper<>();
+            queryClassList
+                    .eq(NewsRelationConfig::getNewsId, xjrNews.getId())
+                    .eq(NewsRelationConfig::getRelationType, 3);
+            List<NewsRelationConfig> classList = newsRelationConfigMapper.selectList(queryClassList);
+            List<Long> classIdList = new ArrayList<>();
+            for (NewsRelationConfig newsRelationConfig : classList) {
+                classIdList.add(newsRelationConfig.getRelationId());
+            }
+
+            //对人员进行筛选,避免重复添加
+            List<Long> userIdList = new ArrayList<>();
+            if (personalIdList != null) {
+                //获取人员的班级或者部门
+                List<DeptIdOrClassIdVo> deptIdOrClassIdVoList = newsMapper.getDeptIdOrClassId(personalIdList);
+                for (DeptIdOrClassIdVo deptIdOrClassIdVo : deptIdOrClassIdVoList) {
+                    if (deptIdOrClassIdVo.getClassId() != null) {//有班级是学生
+                        if (!classIdList.contains(deptIdOrClassIdVo.getClassId())) {
+                            userIdList.add(deptIdOrClassIdVo.getUserId());
+                        }
+                    } else {
+                        if (!deptIdList.contains(deptIdOrClassIdVo.getDeptId())) {
+                            userIdList.add(deptIdOrClassIdVo.getUserId());
                         }
                     }
                 }
+            }
 
-                //添加部门人员
-                if (deptIdList != null) {
-                    newsRelationMapper.insertDeptUser(xjrNews.getId(), deptIdList);
-                }
+            //添加部门人员
+            if (deptIdList != null) {
+                newsRelationMapper.insertDeptUser(xjrNews.getId(), deptIdList);
+            }
 
-                //添加部门人员
-                if (classIdList != null) {
-                    newsRelationMapper.insertClassUser(xjrNews.getId(), classIdList);
-                }
+            //添加部门人员
+            if (classIdList != null) {
+                newsRelationMapper.insertClassUser(xjrNews.getId(), classIdList);
+            }
 
-                //添加部门人员
-                if (userIdList != null) {
-                    newsRelationMapper.insertPersonl(xjrNews.getId(), userIdList);
-                }
+            //添加部门人员
+            if (userIdList != null) {
+                newsRelationMapper.insertPersonl(xjrNews.getId(), userIdList);
             }
+        }
 
-            //遍历所有关系配置
+        //遍历所有关系配置
            /* for (NewsRelationConfig newsRelationConfig : newsRelationConfigList) {
                 //阅读关系是部门
                 if (newsRelationConfig.getRelationType() == 1) {
@@ -473,7 +532,7 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
                     }
                 }
             }*/
-            if (xjrNews.getSendRange() == 2) {
+        if (xjrNews.getSendRange() == 2) {
 //                MPJLambdaWrapper<XjrUser> queryUser = new MPJLambdaWrapper<>();
 //                queryUser
 //                        .leftJoin(UserRoleRelation.class, UserRoleRelation::getUserId, XjrUser::getId)
@@ -488,74 +547,7 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
 //                        setCreateDate(LocalDateTime.now());
 //                    }});
 //                }
-                newsRelationMapper.insertAllTeaStaff(xjrNews.getId());
-            }
-        }
-
-        if (xjrNews.getStatus() == 3) {
-            //应该将关系配置表和关系表的数据设置为删除
-        }
-        return this.updateById(xjrNews);
-    }
-
-    @Override
-    public boolean updateProclamation(UpdateProclamationDto updateProclamationDto) {
-        News news = BeanUtil.toBean(updateProclamationDto, News.class);
-        news.setModifyDate(LocalDateTime.now());
-        news.setModifyUserId(StpUtil.getLoginIdAsLong());
-        newsMapper.updateById(news);
-
-        newsAppendixMapper.delete(Wrappers.lambdaQuery(NewsAppendix.class).eq(NewsAppendix::getNewsId, news.getId()));
-        if (updateProclamationDto.getAppendixList() != null) {
-            for (AddNewsAppendixDto appendixDto : updateProclamationDto.getAppendixList()) {
-                NewsAppendix newsAppendix = BeanUtil.toBean(appendixDto, NewsAppendix.class);
-                newsAppendix.setNewsId(news.getId());
-                newsAppendixMapper.insert(newsAppendix);
-            }
-        }
-
-        if (updateProclamationDto.getSendRange() == 3 && updateProclamationDto.getRelationList() != null) {
-            newsRelationMapper.delete(Wrappers.lambdaQuery(NewsRelation.class).eq(NewsRelation::getNewsId, news.getId()));
-            newsRelationConfigMapper.delete(Wrappers.lambdaQuery(NewsRelationConfig.class).eq(NewsRelationConfig::getNewsId, news.getId()));
-
-            for (AddNewsRelationDto relationDto : updateProclamationDto.getRelationList()) {
-                if (relationDto.getRelationType() == 1) {
-                    Department department = departmentMapper.selectById(relationDto.getRelationId());
-
-                    newsRelationConfigMapper.insert(new NewsRelationConfig() {{
-                        setNewsId(news.getId());
-                        setRelationId(relationDto.getRelationId());
-                        setRelationType(relationDto.getRelationType());
-                        if (department != null) {
-                            setRelationName(department.getName());
-                        }
-                    }});
-                }
-                if (relationDto.getRelationType() == 2) {
-                    XjrUser xjrUser = xjrUserMapper.selectById(relationDto.getRelationId());
-
-                    newsRelationConfigMapper.insert(new NewsRelationConfig() {{
-                        setNewsId(news.getId());
-                        setRelationId(relationDto.getRelationId());
-                        setRelationType(relationDto.getRelationType());
-                        if (xjrUser != null) {
-                            setRelationName(xjrUser.getName());
-                        }
-                    }});
-                }
-                if (relationDto.getRelationType() == 3) {
-                    BaseClass baseClass = baseClassMapper.selectById(relationDto.getRelationId());
-
-                    newsRelationConfigMapper.insert(new NewsRelationConfig() {{
-                        setNewsId(news.getId());
-                        setRelationId(relationDto.getRelationId());
-                        setRelationType(relationDto.getRelationType());
-                        if (baseClass != null) {
-                            setRelationName(baseClass.getName());
-                        }
-                    }});
-                }
-            }
+            newsRelationMapper.insertAllTeaStaff(xjrNews.getId());
         }
         return true;
     }

+ 1 - 1
src/main/resources/mapper/oa/NewsRelationMapper.xml

@@ -61,7 +61,7 @@
         </if>)
     </insert>
 
-    <insert id="insertClassUser">
+    <insert id="insertPersonl">
         insert into xjr_oa_news_relation (id, news_id, user_id, create_date, read_mark)
         (select
         UNIX_TIMESTAMP()*(FLOOR(RAND() * (1000 - 1 + 1)) + 1)*(FLOOR(RAND() * (1000 - 1 + 1)) + 1),