Commit 394277751dfd9d261d43fb55e9372124a7cb596e

Authored by 黄 x
2 parents 7f3deb5c 3184d33e

fix: 提交系统通知代码优化,for循环修改

... ... @@ -28,7 +28,7 @@ public class SysNoticeDTO extends TenantDTO {
28 28 private String content;
29 29 @ApiModelProperty(value = "接收者(字典值receiver_type) 0:全部 1:组织 2:部门 3:个人",required = true)
30 30 private String receiverType;
31   - @ApiModelProperty(value = "根据receiverType不同变化,,0:传,1:组织id,2:部门id,3:用户id",required = true)
  31 + @ApiModelProperty(value = "根据receiverType不同变化,,0:传null,1:组织id,2:部门id,3:用户id",required = true)
32 32 private List<String> pointId;
33 33 @ApiModelProperty(value = "接收者ID,用逗号分开")
34 34 private String receiverTypeIds;
... ...
... ... @@ -46,16 +46,14 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S
46 46
47 47 @Override
48 48 public YtPageData<SysNoticeDTO> page(Map<String, Object> queryMap) {
49   - IPage<SysNotice> page =
50   - getPage(queryMap, FastIotConstants.DefaultOrder.CREATE_TIME, true);
  49 + IPage<SysNotice> page = getPage(queryMap, FastIotConstants.DefaultOrder.CREATE_TIME, true);
51 50 IPage<SysNoticeDTO> pageDto = baseMapper.page(page, queryMap);
52 51 return getPageData(pageDto, SysNoticeDTO.class);
53 52 }
54 53
55 54 @Override
56   - public SysNoticeDTO get(String id,String tenantId) {
57   - return baseMapper
58   - .get(id, tenantId);
  55 + public SysNoticeDTO get(String id, String tenantId) {
  56 + return baseMapper.get(id, tenantId);
59 57 }
60 58
61 59 @Override
... ... @@ -68,21 +66,17 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S
68 66 }
69 67
70 68 @Override
71   - public SysNoticeDTO save(SysNoticeDTO sysNoticeDTO,String tenantId) {
  69 + public SysNoticeDTO save(SysNoticeDTO sysNoticeDTO, String tenantId) {
72 70 SysNotice sysNotice = sysNoticeDTO.getEntity(SysNotice.class);
73 71 // 设置为草稿
74   - sysNotice.setTenantId(tenantId);
  72 + sysNotice.setTenantId(tenantId);
75 73 // 拼接需要发送的名单
76   - //ReceiverType为空,getPointId有值,也抛异常
77   - //ReceiverType,getPointId同时为空,抛异常
78   - //ReceiverType为其他任何值都抛异常
79   - if(sysNoticeDTO.getReceiverType() == null){
80   - throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.name());
81   - }
82   - //ReceiverType为0,同时PointId为空,不让抛异常
83   - else if("0".equals(sysNoticeDTO.getReceiverType())){
84   -
85   - }else if (sysNoticeDTO.getPointId() == null){
  74 + // ReceiverType为空,getPointId有值,也抛异常
  75 + // ReceiverType,getPointId同时为空,抛异常
  76 + // ReceiverType为其他任何值都抛异常
  77 + if (sysNoticeDTO.getReceiverType() == null
  78 + || (!sysNoticeDTO.getReceiverType().equals(FastIotConstants.ReceiverType.ALL)
  79 + && sysNoticeDTO.getPointId() == null)) {
86 80 throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.name());
87 81 }
88 82 LambdaQueryWrapper<User> wrapper =
... ... @@ -90,31 +84,22 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S
90 84 switch (sysNotice.getReceiverType()) {
91 85 case FastIotConstants.ReceiverType.ALL:
92 86 // 全部
93   - sysNotice.setReceiverTypeIds(
  87 + sysNotice.setReceiverTypeIds(
94 88 userMapper.selectList(wrapper).stream()
95 89 .map(User::getId)
96 90 .collect(Collectors.joining(",")));
97 91 break;
98 92 case FastIotConstants.ReceiverType.ORGANIZATION:
99 93 // 组织内
100   - sysNotice.setReceiverTypeIds(
101   - userOrganizationMappingService
102   - .getUserIdByOrganizationIds(tenantId,sysNoticeDTO.getPointId().toArray(String[]::new))
103   - .stream()
104   - .collect(Collectors.joining(",")));
  94 + sysNotice.setReceiverTypeIds(
  95 + String.join(",", userOrganizationMappingService
  96 + .getUserIdByOrganizationIds(
  97 + tenantId, sysNoticeDTO.getPointId().toArray(String[]::new))));
105 98 break;
106   - // case FastIotConstants.ReceiverType.DEPARTMENT:
107   - // // 部门
108   - // entity.setReceiverTypeIds(
109   - // userMapper.selectList(wrapper.in(User::getDeptId,
110   - // sysNoticeDTO.getPointId())).stream()
111   - // .map(User::getId)
112   - // .collect(Collectors.joining(",")));
113   - // break;
114 99 case FastIotConstants.ReceiverType.PERSONAL:
115 100 // 个人
116   - sysNotice.setReceiverTypeIds(
117   - sysNoticeDTO.getPointId().stream().collect(Collectors.joining(",")));
  101 + sysNotice.setReceiverTypeIds(
  102 + String.join(",", sysNoticeDTO.getPointId()));
118 103 break;
119 104 default:
120 105 throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.name());
... ... @@ -122,43 +107,41 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S
122 107 if (StringUtils.isEmpty(sysNotice.getReceiverTypeIds())) {
123 108 throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.name());
124 109 }
125   - //如果为空,则新增
  110 + // 如果为空,则新增
126 111 if (sysNotice.getId() == null) {
127 112 baseMapper.insert(sysNotice);
128   - sysNotice.copyToDTO(sysNoticeDTO);
129   - return sysNoticeDTO;
130 113 } else {
131 114 baseMapper.updateById(sysNotice);
132   - sysNotice.copyToDTO(sysNoticeDTO);
133   - return sysNoticeDTO;
134 115 }
  116 + sysNotice.copyToDTO(sysNoticeDTO);
  117 + return sysNoticeDTO;
135 118 }
136 119
137 120 @Override
138 121 @Transactional
139   - public SysNoticeDTO send(SysNoticeDTO sysNoticeDTO,String tenantId,String currentUserId,String currentUserName) {
  122 + public SysNoticeDTO send(
  123 + SysNoticeDTO sysNoticeDTO, String tenantId, String currentUserId, String currentUserName) {
140 124
141   - SysNotice sysNotice =sysNoticeDTO.getEntity(SysNotice.class);
  125 + SysNotice sysNotice;
142 126 // 如果通知为空,则新增
143   - sysNotice = save(sysNoticeDTO,tenantId).getEntity(SysNotice.class);
  127 + sysNotice = save(sysNoticeDTO, tenantId).getEntity(SysNotice.class);
144 128 sysNotice.setSenderName(currentUserName);
145 129 sysNotice.setCreator(currentUserId);
146 130 sysNotice.setSenderDate(LocalDateTime.now());
147   - int update =
148   - baseMapper.update(
149   - sysNotice,
150   - new LambdaQueryWrapper<SysNotice>()
151   - .eq(SysNotice::getId, sysNoticeDTO.getId())
152   - .eq(SysNotice::getTenantId, tenantId));
  131 + int update =
  132 + baseMapper.update(
  133 + sysNotice,
  134 + new LambdaQueryWrapper<SysNotice>()
  135 + .eq(SysNotice::getId, sysNoticeDTO.getId())
  136 + .eq(SysNotice::getTenantId, tenantId));
153 137
154 138 if (update > 0) {
155 139 // 发送消息
156   - //TODO sysNotice.getReceiverTypeIds()有可能为null
157 140 String[] split = sysNotice.getReceiverTypeIds().split(",");
158 141 List<SysNoticeUser> list = new ArrayList<>(split.length);
159   - for (int i = 0; i < split.length; i++) {
  142 + for (String s : split) {
160 143 SysNoticeUser sysNoticeUser = new SysNoticeUser();
161   - sysNoticeUser.setReceiverId(split[i]);
  144 + sysNoticeUser.setReceiverId(s);
162 145 sysNoticeUser.setNoticeId(sysNotice.getId());
163 146 sysNoticeUser.setTenantId(sysNotice.getTenantId());
164 147 sysNoticeUser.setReadStatus(FastIotConstants.ReadState.UNREAD);
... ...
... ... @@ -40,17 +40,13 @@ import java.util.stream.Collectors;
40 40 public class YtDeviceServiceImpl extends AbstractBaseService<DeviceMapper, YtDevice>
41 41 implements YtDeviceService {
42 42
43   -// private final TBConfig tbConfig;
44   -// private final TBConnectService tbConnectService;
45   -// private final TbDBService tbDBService;
46 43 private final DeviceProfileDao deviceProfileDao;
47 44 private final DeviceCredentialsDao deviceCredentialsDao;
48 45
49 46
50 47 private final OrganizationMapper ytOrganizationMapper;
51 48 @Override
52   - // @Transactional
53   - // 事务会导致 tbDBService 多数据源失效
  49 + @Transactional
54 50 public DeviceDTO insertOrUpdate(String tenantId,DeviceDTO deviceDTO) {
55 51
56 52 if (StringUtils.isBlank(deviceDTO.getId())) {
... ...