package com.highdatas.mdm.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.highdatas.mdm.entity.*; import com.highdatas.mdm.mapper.MasterAuthorSubscribeMapper; import com.highdatas.mdm.pojo.ActivitiStatus; import com.highdatas.mdm.service.*; import com.highdatas.mdm.util.Constant; import com.highdatas.mdm.util.DbUtils; import com.highdatas.mdm.util.pool.MqEntity; import com.highdatas.mdm.util.pool.MqMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author kimi * @since 2020-04-20 */ @Service @Slf4j public class MasterAuthorSubscribeServiceImpl extends ServiceImpl implements IMasterAuthorSubscribeService { @Autowired IMasterAuthorService masterAuthorService; @Autowired IMaintainFieldService maintainFieldService; @Autowired ISysFieldService fieldService; @Autowired IMenuMappingService menuMappingService; @Autowired IMaintainService maintainService; @Autowired DispenseService dispenseService; @Autowired IMasterAuthorSubscribeService masterAuthorSubscribeService; /** * * @description: 生成版本的需要检测哪些需要自动注册 * @param status 流程状态 * @param maintainId 数据版本id * @return: * */ @Override public void dealFlow(String maintainId, ActivitiStatus status) { try { if (!ActivitiStatus.open.equals(status)) { return; } Maintain maintain = maintainService.selectById(maintainId); SysMenu menuByTableName = menuMappingService.getMenuByTableName(maintain.getTableName()); MaintainField maintainFieldByMaintain = fieldService.getMaintainFieldByMaintain(maintainId); Set userIdList = new HashSet<>(); Set allUser = DbUtils.getAllUser(); for (TUser user : allUser) { List userAuthor = masterAuthorService.getUserAuthor(user.getUserId(), null); List authorMaintainFieldList = userAuthor.stream() .filter(masterAuthor -> menuByTableName.getId().equalsIgnoreCase(masterAuthor.getMenuId())) .collect(Collectors.toList()); int count = authorMaintainFieldList.size(); if (count == 0) { continue; } for (MasterAuthor masterAuthor : authorMaintainFieldList) { String maintainFieldId = masterAuthor.getMaintainFieldId(); if (maintainFieldId.equalsIgnoreCase(Constant.All) || maintainFieldId.equalsIgnoreCase(maintainFieldByMaintain.getId())) { userIdList.add(user.getUserId()); } } } log.info("已订阅用户数" + userIdList.size() + " 主题:" + menuByTableName.getName()); for (String userId : userIdList) { int i = masterAuthorSubscribeService.selectCount(new EntityWrapper().eq("user_id", userId).eq("menu_id", menuByTableName.getId())); if (i == 0) { continue; } log.info("已订阅用户" + userId + " 主题:" + menuByTableName.getName()); MqEntity mqEntity = new MqEntity(); mqEntity.setUserId(userId); mqEntity.setIncrement(true); mqEntity.setMsgTopicName(Constant.Master); mqEntity.setType(Constant.Master); mqEntity.setDataId(menuByTableName.getId()); mqEntity.setMaintainId(maintainId); mqEntity.setMsgTagName(menuByTableName.getId()); MqEntity.MsgBodyBean msgBody = mqEntity.getMsgBody(); msgBody.setVersion(maintainId); mqEntity.setMsgKey(DbUtils.getUUID(16)); MqMessage mqMessage = new MqMessage(mqEntity); dispenseService.pushActiveMq(mqMessage); } } catch (Exception e){ e.printStackTrace(); } } }