Преглед изворни кода

/oa/news/gradeClassTree 新闻公告新增年级班级树接口

phoenix пре 1 година
родитељ
комит
2e8495d417

+ 2 - 2
src/main/java/com/xjrsoft/module/base/mapper/BaseGradeMapper.java

@@ -1,6 +1,6 @@
 package com.xjrsoft.module.base.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.base.entity.BaseGrade;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -13,6 +13,6 @@ import org.apache.ibatis.annotations.Mapper;
  * @since 2023-09-02 04:52:58
  */
 @Mapper
-public interface BaseGradeMapper extends BaseMapper<BaseGrade> {
+public interface BaseGradeMapper extends MPJBaseMapper<BaseGrade> {
 
 }

+ 12 - 0
src/main/java/com/xjrsoft/module/oa/controller/NewsController.java

@@ -1,5 +1,6 @@
 package com.xjrsoft.module.oa.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -24,6 +25,7 @@ import com.xjrsoft.module.oa.service.INewsRelationConfigService;
 import com.xjrsoft.module.oa.service.INewsRelationService;
 import com.xjrsoft.module.oa.service.INewsService;
 import com.xjrsoft.module.oa.vo.*;
+import com.xjrsoft.module.student.vo.ClassHonorsSemesterClassTreeVo;
 import com.xjrsoft.module.system.entity.File;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import io.swagger.annotations.Api;
@@ -57,6 +59,16 @@ public class NewsController {
     private INewsRelationConfigService newsRelationConfigService;
 
 
+    @GetMapping(value = "/gradeClassTree")
+    @ApiOperation(value="新闻年级班级树")
+    public RT<List<NewsGradeClassTreeVo>> gradeClassTree(){
+        List<NewsGradeClassTreeVo> list = newsService.getGradeClassTree();
+        if(ObjectUtil.isNull(list) || list.size() == 0){
+            return RT.error("找不到此数据!");
+        }
+        return RT.ok(list);
+    }
+
     @GetMapping
     @ApiOperation(value = "获取新闻分页")
     public RT<PageOutput<NewsPageVo>> page(NewsPageDto dto) {

+ 38 - 32
src/main/java/com/xjrsoft/module/oa/dto/AddNewsDto.java

@@ -27,8 +27,6 @@ public class AddNewsDto {
     @Min(value = 1, message = "类型必须大于0")
     private Integer typeId;
 
-    @ApiModelProperty("班级(base_class)")
-    private Long classId;
 
     @ApiModelProperty("状态 1=未发布 2=已发布 3=下架")
     @Min(value = 1, message = "类型必须大于0")
@@ -37,21 +35,21 @@ public class AddNewsDto {
     /**
      * 父级主键
      */
-    @ApiModelProperty("父级主键")
-    private Long categoryId;
+//    @ApiModelProperty("父级主键")
+//    private Long categoryId;
 
     /**
      * 所属类别
      */
-    @ApiModelProperty("所属类别")
-    @Min(value = 1, message = "类型必须大于0")
-    private String category;
+//    @ApiModelProperty("所属类别")
+//    @Min(value = 1, message = "类型必须大于0")
+//    private String category;
 
     /**
      * 完整标题
      */
-    @ApiModelProperty("完整标题")
-    @Length(min = 1, max = 250, message = "完整标题最多250个字符!")
+    @ApiModelProperty("标题")
+    @Length(min = 1, max = 250, message = "标题最多250个字符!")
     private String fullHead;
 
     /**
@@ -64,9 +62,9 @@ public class AddNewsDto {
     /**
      * 简略标题
      */
-    @ApiModelProperty("简略标题")
-    @Length(min = 1, max = 50, message = "简略标题最多50个字符!")
-    private String briefHead;
+//    @ApiModelProperty("简略标题")
+//    @Length(min = 1, max = 50, message = "简略标题最多50个字符!")
+//    private String briefHead;
 
     /**
      * 作者
@@ -78,42 +76,43 @@ public class AddNewsDto {
     /**
      * 编辑
      */
-    @ApiModelProperty("编辑")
-    @Length(min = 1, max = 50, message = "编辑最多50个字符!")
-    private String compileName;
+//    @ApiModelProperty("编辑")
+//    @Length(min = 1, max = 50, message = "编辑最多50个字符!")
+//    private String compileName;
 
     /**
      * Tag词
      */
-    @ApiModelProperty("Tag词")
-    @Length(min = 1, max = 255, message = "Tag词最多255个字符!")
-    private String tagWord;
+//    @ApiModelProperty("Tag词")
+//    @Length(min = 1, max = 255, message = "Tag词最多255个字符!")
+//    private String tagWord;
 
     /**
      * 关键字
      */
-    @ApiModelProperty("关键字")
-    @Length(min = 1, max = 250, message = "关键字最多250个字符!")
-    private String keyword;
+//    @ApiModelProperty("关键字")
+//    @Length(min = 1, max = 250, message = "关键字最多250个字符!")
+//    private String keyword;
 
     /**
      * 来源
      */
-    @ApiModelProperty("来源")
-    @Length(min = 1, max = 250, message = "来源最多250个字符!")
-    private String sourceName;
+//    @ApiModelProperty("来源")
+//    @Length(min = 1, max = 250, message = "来源最多250个字符!")
+//    private String sourceName;
 
     /**
      * 来源地址
      */
-    @ApiModelProperty("来源地址")
-    @Length(min = 1, max = 250, message = "来源地址最多250个字符!")
-    private String sourceAddress;
+//    @ApiModelProperty("来源地址")
+//    @Length(min = 1, max = 250, message = "来源地址最多250个字符!")
+//    private String sourceAddress;
 
     /**
      * 新闻内容
      */
     @ApiModelProperty("新闻内容")
+    @Length(min = 1, max = 1000, message = "新闻内容最多1000个字符!")
     private String newsContent;
 
     /**
@@ -143,8 +142,8 @@ public class AddNewsDto {
     /**
      * 张贴开起时间
      */
-    @ApiModelProperty("张贴开起时间")
-    private LocalDateTime sendStartDate;
+//    @ApiModelProperty("张贴开起时间")
+//    private LocalDateTime sendStartDate;
 
     /**
      * 张贴结束时间
@@ -173,12 +172,19 @@ public class AddNewsDto {
     /**
      * 级别 1=校级 2=班级
      */
-    @ApiModelProperty("级别 1=校级 2=班级")
-    private Integer level;
+//    @ApiModelProperty("级别 1=校级 2=班级")
+//    private Integer level;
+
+    /**
+     * 班级
+     */
+//    @ApiModelProperty("班级(base_class)")
+//    private Long classId;
+
     /**
      * 发送范围 1=所有人 2=根据权限
      */
-    @ApiModelProperty("发送范围 1=所有人 2=根据权限")
+    @ApiModelProperty("发送范围 1=全校教职工 2=全校师生 3=指定人员")
     private Integer sendRange;
 
     /**

+ 1 - 1
src/main/java/com/xjrsoft/module/oa/dto/AddNewsRelationDto.java

@@ -6,7 +6,7 @@ import lombok.Data;
 @Data
 public class AddNewsRelationDto {
 
-    @ApiModelProperty("关系类型 1=部门 2=人员")
+    @ApiModelProperty("关系类型 1=部门 2=人员 3=班级")
     private Integer relationType;
 
     @ApiModelProperty("关系ID")

+ 4 - 0
src/main/java/com/xjrsoft/module/oa/service/INewsService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.module.oa.dto.*;
 import com.xjrsoft.module.oa.entity.News;
+import com.xjrsoft.module.oa.vo.NewsGradeClassTreeVo;
 import com.xjrsoft.module.oa.vo.NewsPageVo;
 
 import java.util.List;
@@ -17,6 +18,9 @@ import java.util.List;
  * @since 2022-06-16
  */
 public interface INewsService extends MPJBaseService<News> {
+
+    List<NewsGradeClassTreeVo> getGradeClassTree();
+
     /**
      * 添加新闻
      *

+ 75 - 4
src/main/java/com/xjrsoft/module/oa/service/impl/NewsServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.base.MPJBaseServiceImpl;
@@ -12,8 +13,12 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.EnabledMark;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.utils.LocalDateTimeUtil;
+import com.xjrsoft.common.utils.TreeUtil;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.config.CommonPropertiesConfig;
+import com.xjrsoft.module.base.entity.BaseClass;
+import com.xjrsoft.module.base.entity.BaseGrade;
+import com.xjrsoft.module.base.mapper.BaseClassMapper;
 import com.xjrsoft.module.oa.dto.*;
 import com.xjrsoft.module.oa.entity.News;
 import com.xjrsoft.module.oa.entity.NewsAppendix;
@@ -24,6 +29,7 @@ import com.xjrsoft.module.oa.mapper.NewsMapper;
 import com.xjrsoft.module.oa.mapper.NewsRelationConfigMapper;
 import com.xjrsoft.module.oa.mapper.NewsRelationMapper;
 import com.xjrsoft.module.oa.service.INewsService;
+import com.xjrsoft.module.oa.vo.NewsGradeClassTreeVo;
 import com.xjrsoft.module.oa.vo.NewsPageVo;
 import com.xjrsoft.module.oa.vo.NewsRelationVo;
 import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
@@ -74,10 +80,46 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
 
     private final UserMapper userMapper;
 
+    private final BaseClassMapper baseClassMapper;
+
     private final XjrUserMapper xjrUserMapper;
 
     private final CommonPropertiesConfig commonPropertiesConfig;
 
+    @Override
+    public List<NewsGradeClassTreeVo> getGradeClassTree() {
+        List<NewsGradeClassTreeVo> treeVoList = new ArrayList<NewsGradeClassTreeVo>();
+
+        //获取所有班级的年级作为树的父级
+        MPJLambdaWrapper<BaseClass> queryGrade = new MPJLambdaWrapper<>();
+        queryGrade
+                .distinct()
+                .selectAs(BaseGrade::getId, BaseGrade::getId)
+                .selectAs(BaseGrade::getName, BaseGrade::getName)
+                .leftJoin(BaseGrade.class, BaseGrade::getId, BaseClass::getGradeId);
+        List<BaseGrade> gradeList = baseClassMapper.selectJoinList(BaseGrade.class, queryGrade);
+        gradeList.forEach((node) -> {
+            treeVoList.add(new NewsGradeClassTreeVo(){{
+                setId(node.getId());
+                setName(node.getName());
+            }});
+        });
+
+
+        List<BaseClass> classList = baseClassMapper.selectList(new QueryWrapper<BaseClass>());
+        //获取班级荣誉中出现的学期下的所有班级作为树的子级
+        classList.forEach((node) -> {
+            treeVoList.add(new NewsGradeClassTreeVo(){{
+                setId(node.getId());
+                setName(node.getName());
+                setParentId(node.getGradeId());
+            }});
+        });
+
+        List<NewsGradeClassTreeVo> resultTreeVoList = TreeUtil.build(treeVoList);
+        return resultTreeVoList;
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean add(AddNewsDto addNewsDto) {
@@ -85,7 +127,6 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
         News news = BeanUtil.toBean(addNewsDto, News.class);
         news.setEnabledMark(EnabledMark.ENABLED.getCode());
 
-
         newsMapper.insert(news);
         //添加附件子表
         if (addNewsDto.getAppendixList() != null) {
@@ -96,8 +137,19 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
             }
         }
 
-        //公告需要添加阅读关系
-        if (addNewsDto.getRelationList() != null) {
+        //公告需要添加阅读关系,发送范围 1=全校教职工 2=全校师生 3=指定人员
+        //1=全校教职工,添加全校教职工到关系表
+        if(addNewsDto.getTypeId() == 2 && addNewsDto.getSendRange() == 1){
+//            MPJLambdaWrapper<XjrUser> queryUser = new MPJLambdaWrapper<>();
+//            queryUser
+//                    .leftJoin(UserRoleRelation.class,UserRoleRelation::getUserId,XjrUser::getId)
+//                    .leftJoin(Department.class,Department::getId,UserDeptRelation::getDeptId)
+//                    .eq(Department::getId,deptId);
+//            List<XjrUser> userList = xjrUserMapper.selectJoinList(XjrUser.class,queryUser);
+
+        }
+
+        if (addNewsDto.getTypeId() == 2 && addNewsDto.getSendRange() == 1) {
             for (AddNewsRelationDto relationDto : addNewsDto.getRelationList()) {
 
                 NewsRelationConfig newsRelationConfig = BeanUtil.toBean(relationDto, NewsRelationConfig.class);
@@ -124,10 +176,29 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
                         newsRelation.setUserId(userId);
                         newsRelationMapper.insert(newsRelation);
                     }
-                } else {
+                }
+                if (relationDto.getRelationType() == 2)  {
                     newsRelation.setUserId(relationDto.getRelationId());
                     newsRelationMapper.insert(newsRelation);
                 }
+                if (relationDto.getRelationType() == 3)  {
+                    // 获取班级下的人员添加
+                    Long deptId = relationDto.getRelationId();
+                    MPJLambdaWrapper<XjrUser> queryUser = new MPJLambdaWrapper<>();
+                    queryUser
+                            .leftJoin(UserDeptRelation.class,UserDeptRelation::getUserId,XjrUser::getId)
+                            .leftJoin(Department.class,Department::getId,UserDeptRelation::getDeptId)
+                            .eq(Department::getId,deptId);
+                    List<XjrUser> userList = xjrUserMapper.selectJoinList(XjrUser.class,queryUser);
+                    List<Long> userIdList = new ArrayList<>();
+                    for (XjrUser user: userList) {
+                        userIdList.add(user.getId());
+                    }
+                    for (Long userId: userIdList) {
+                        newsRelation.setUserId(userId);
+                        newsRelationMapper.insert(newsRelation);
+                    }
+                }
             }
         }
 

+ 31 - 0
src/main/java/com/xjrsoft/module/oa/vo/NewsGradeClassTreeVo.java

@@ -0,0 +1,31 @@
+package com.xjrsoft.module.oa.vo;
+
+import com.xjrsoft.common.model.tree.ITreeNode;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @title: 公告年级班级树出参
+ * @Author szs
+ * @Date: 2023-12-06
+ * @Version 1.0
+ */
+@Data
+public class NewsGradeClassTreeVo implements ITreeNode<NewsGradeClassTreeVo,Long>, Serializable {
+
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    @ApiModelProperty("班级名")
+    private String name;
+
+    @ApiModelProperty("父级id")
+    private Long parentId;
+
+    private List<NewsGradeClassTreeVo> children;
+}