kimi
2020-05-27 c007f0ca1785db093d48f4846cda82fe8e955765
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
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;
    /**
     *
     * @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<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();
        }
 
    }
}