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;
|
|
/**
|
* <p>
|
* 服务实现类
|
* </p>
|
*
|
* @author kimi
|
* @since 2020-04-20
|
*/
|
@Service
|
@Slf4j
|
public class MasterAuthorSubscribeServiceImpl extends ServiceImpl<MasterAuthorSubscribeMapper, MasterAuthorSubscribe> implements IMasterAuthorSubscribeService {
|
@Autowired
|
IMasterAuthorService masterAuthorService;
|
@Autowired
|
IMaintainFieldService maintainFieldService;
|
@Autowired
|
ISysFieldService fieldService;
|
@Autowired
|
IMenuMappingService menuMappingService;
|
@Autowired
|
IMaintainService maintainService;
|
@Autowired
|
DispenseService dispenseService;
|
@Autowired
|
IMasterAuthorSubscribeService masterAuthorSubscribeService;
|
|
@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<String> userIdList = new HashSet<>();
|
|
Set<TUser> allUser = DbUtils.getAllUser();
|
|
for (TUser user : allUser) {
|
List<MasterAuthor> userAuthor = masterAuthorService.getUserAuthor(user.getUserId(), null);
|
|
List<MasterAuthor> 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<MasterAuthorSubscribe>().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();
|
}
|
|
}
|
}
|