|
|
@@ -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);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|