文档库-飞书消息, 订阅领域管理

This commit is contained in:
zhn
2022-04-08 12:01:22 +08:00
parent 0d60dad75a
commit 7efae08af1
4 changed files with 57 additions and 6 deletions
@@ -38,4 +38,6 @@ public interface SysCategoryMapper extends BaseMapper<SysCategory> {
*/
@Update("update sys_category set del_flag = #{flag,jdbcType=INTEGER} where id = #{id,jdbcType=VARCHAR}")
public void updateDictDelFlag(@Param("flag") int delFlag, @Param("id") String id);
public String getFieldInfo(@Param("fieldName") String fieldName);
}
@@ -36,4 +36,11 @@
</if>
order by create_time desc
</select>
<select id="getFieldInfo" resultType="java.lang.String">
select dict_id from onl_cgform_field
where db_field_name =#{fieldName}
and is_model = 1
and is_delete = 0
</select>
</mapper>
@@ -21,6 +21,7 @@ import com.jero.modules.system.service.ISysCategoryService;
import com.jero.modules.system.util.TreeUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -234,7 +235,14 @@ public class SysCategoryServiceImpl extends ServiceImpl<SysCategoryMapper, SysCa
@Override
public List<SysCategoryTreeVO> getSysCategoryTree() {
try {
List<SysCategory> list = super.baseMapper.selectList(new QueryWrapper<>());
//只查询技术领域的technology_territory
String dictId = sysCategoryMapper.getFieldInfo("technology_territory");
List<SysCategory> list = new ArrayList<>();
if(StringUtils.isNotBlank(dictId)){
LambdaQueryWrapper<SysCategory> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(SysCategory::getSysDictId,dictId);
list = super.baseMapper.selectList(lambdaQueryWrapper);
}
List<SysCategoryTreeVO> tree = new ArrayList<>();
if(CollectionUtils.isNotEmpty(list)){
tree = TreeUtils.getSysCategoryTree(list);
@@ -1548,8 +1548,8 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
String title = (String) map.get("title");
String serialNumber = (String) map.get("serial_number");
String href = backUrl + "/docManage/library/detail?id=" + idTemp;
String content = sysUser.getRealname() + "新增了" + serialNumber + "请及时查看";
String contentInfo = sysUser.getRealname() + "新增了" + href + "请及时查看";
String content = sysUser.getRealname() + "新增了" + serialNumber + "请及时查看";
String contentInfo = sysUser.getRealname() + "新增了" + href + "请及时查看";
//封装消息的实体类
SysAnnouncement sysAnnouncement = getSysAnnouncement(userIdList, content, contentInfo);
sysAnnouncementService.saveAnnouncement(sysAnnouncement);
@@ -1558,7 +1558,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
try {
iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), content, MessageTypeEnum.PUSH.getName(), href);
} catch (IOException e) {
log.error("文档新增飞书消息推送失败");
log.error("飞书消息推送失败");
}
}
}
@@ -2172,25 +2172,39 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String serialNumber = (String) dataList.get(0).get("serial_number");
//只要修改了标准,就需要向订阅用户发送消息(内容为-->XXX对“GB 7258 进行了修改请及时查看”)
//订阅领域管理中订阅了该技术领域的人和文档库中订阅了该条文档的人发送消息
//订阅领域管理中订阅了该技术领域的人和文档库中订阅了该条文档的人发送消息
Map<String, Object> mapTemp = new HashMap<>();
mapTemp.put("domainId", map.get("technology_territory"));
mapTemp.put("documentId", map.get("id"));
//订阅技术领域的人和订阅该条标准的人
List<String> userIdList = domainUserRelService.queryDomainUserRelInfo(mapTemp);
LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
wrapper.in(SysUser::getId,userIdList);
List<SysUser> sysUserList = sysUserService.list(wrapper);
List<String> thirdIdList = sysUserList.stream().map(SysUser::getThirdId).collect(Collectors.toList());
String id = (String) map.get("id");
String title = (String) map.get("title");
String href = "<a href='/docManage/library/detail?id=" + id +
"&title=" + title +
"&serial_number=" + serialNumber + "'" + " target='_blank'>" + serialNumber + "</a>";
String url = backUrl + "/docManage/library/detail?id=" + id;
if (StringUtils.isNotBlank(sbStr.toString())) {
String content = sysUser.getRealname() + "" + serialNumber + "进行了修改请及时查看";
String content = sysUser.getRealname() + "" + serialNumber + "进行了修改请及时查看";
String contentInfo = sysUser.getRealname() + "修改标准" + href + "" + sbStr.toString();
//封装消息的实体类
SysAnnouncement sysAnnouncement = getSysAnnouncement(userIdList, content, contentInfo);
sysAnnouncementService.saveAnnouncement(sysAnnouncement);
sendWebsocket((String) map.get("id"), (String) map.get("id"));
}
//飞书
try {
String content = sysUser.getRealname() + "" + serialNumber + "进行了修改,请及时查看";
iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), content, MessageTypeEnum.READ.getName(), url);
} catch (IOException e) {
log.error("文档新增飞书消息推送失败");
}
// }
//2. 处理修改代替标准的发送消息(法规负责人)
//处理修改代替标准,发送通知
@@ -2230,6 +2244,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
List<Map<String, Object>> mapList = bussDocumentLibraryEOMapper.selectMapsAll(StringUtils.join(documentIdList, ","));
List<String> userNameListTemp = new ArrayList<>();
List<String> serialNumberList = new ArrayList<>();
List<String> urlList = new ArrayList<>();
StringBuilder sb = new StringBuilder();
for (Map<String, Object> stringObjectMap : mapList) {
String id = (String) stringObjectMap.get("id");
@@ -2242,6 +2257,8 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
"&title=" + title +
"&serial_number=" + serialNumber + "'" + " target='_blank'>" + serialNumber + "</a>,";
sb.append(href);
String url = backUrl + "/docManage/library/detail?id=" + (String) stringObjectMap.get("id");
urlList.add(url);
}
String sbStr = "";
if (ObjectUtils.isNotEmpty(sb)) {
@@ -2249,12 +2266,29 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
}
List<SysUser> userList = sysUserMapper.getUserListByNames(StringUtils.join(userNameListTemp, ","));
List<String> userIdList = userList.stream().map(SysUser::getId).collect(Collectors.toList());
List<String> thirdIdList = userList.stream().map(SysUser::getThirdId).collect(Collectors.toList());
String content = "新标准编号已实施,请注意更新替代标准编号:" + StringUtils.join(serialNumberList, ",") + "的状态";
String contentInfo = "新标准编号已实施,请注意更新替代标准编号:" + sbStr + "的状态," + "链接: http://localhost:3000/docManage/library";
//封装消息的实体类
SysAnnouncement sysAnnouncement = getSysAnnouncement(userIdList, content, contentInfo);
sysAnnouncementService.saveAnnouncement(sysAnnouncement);
sendWebsocket(StringUtils.join(documentIdList, ","), StringUtils.join(documentIdList, ","));
//飞书
try {
for (String s : urlList) {
List<String> list = new ArrayList<>();
mapList.stream().forEach(e->{
if(s.contains((String)e.get("id"))){
String serialNumber = (String) e.get("serial_number");
list.add(serialNumber);
}
});
String contentTemp = StringUtils.join(list, ",")+"已被其他标准代替,请注意更新"+StringUtils.join(list, ",") + "的状态";
iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), contentTemp, MessageTypeEnum.PUSH.getName(), s);
}
} catch (IOException e) {
log.error("飞书推送失败");
}
}