1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package com.highdatas.mdm.service.impl;
 
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 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
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;
 
    @Override
    public void dealFlow(String maintainId, ActivitiStatus status) {
        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());
                }
            }
        }
 
        for (String userId : userIdList) {
            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);
        }
    }
}