Commit 394277751dfd9d261d43fb55e9372124a7cb596e

Authored by 黄 x
2 parents 7f3deb5c 3184d33e

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

@@ -28,7 +28,7 @@ public class SysNoticeDTO extends TenantDTO { @@ -28,7 +28,7 @@ public class SysNoticeDTO extends TenantDTO {
28 private String content; 28 private String content;
29 @ApiModelProperty(value = "接收者(字典值receiver_type) 0:全部 1:组织 2:部门 3:个人",required = true) 29 @ApiModelProperty(value = "接收者(字典值receiver_type) 0:全部 1:组织 2:部门 3:个人",required = true)
30 private String receiverType; 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 private List<String> pointId; 32 private List<String> pointId;
33 @ApiModelProperty(value = "接收者ID,用逗号分开") 33 @ApiModelProperty(value = "接收者ID,用逗号分开")
34 private String receiverTypeIds; 34 private String receiverTypeIds;
@@ -46,16 +46,14 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S @@ -46,16 +46,14 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S
46 46
47 @Override 47 @Override
48 public YtPageData<SysNoticeDTO> page(Map<String, Object> queryMap) { 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 IPage<SysNoticeDTO> pageDto = baseMapper.page(page, queryMap); 50 IPage<SysNoticeDTO> pageDto = baseMapper.page(page, queryMap);
52 return getPageData(pageDto, SysNoticeDTO.class); 51 return getPageData(pageDto, SysNoticeDTO.class);
53 } 52 }
54 53
55 @Override 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 @Override 59 @Override
@@ -68,21 +66,17 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S @@ -68,21 +66,17 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S
68 } 66 }
69 67
70 @Override 68 @Override
71 - public SysNoticeDTO save(SysNoticeDTO sysNoticeDTO,String tenantId) { 69 + public SysNoticeDTO save(SysNoticeDTO sysNoticeDTO, String tenantId) {
72 SysNotice sysNotice = sysNoticeDTO.getEntity(SysNotice.class); 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 throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.name()); 80 throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.name());
87 } 81 }
88 LambdaQueryWrapper<User> wrapper = 82 LambdaQueryWrapper<User> wrapper =
@@ -90,31 +84,22 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S @@ -90,31 +84,22 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S
90 switch (sysNotice.getReceiverType()) { 84 switch (sysNotice.getReceiverType()) {
91 case FastIotConstants.ReceiverType.ALL: 85 case FastIotConstants.ReceiverType.ALL:
92 // 全部 86 // 全部
93 - sysNotice.setReceiverTypeIds( 87 + sysNotice.setReceiverTypeIds(
94 userMapper.selectList(wrapper).stream() 88 userMapper.selectList(wrapper).stream()
95 .map(User::getId) 89 .map(User::getId)
96 .collect(Collectors.joining(","))); 90 .collect(Collectors.joining(",")));
97 break; 91 break;
98 case FastIotConstants.ReceiverType.ORGANIZATION: 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 break; 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 case FastIotConstants.ReceiverType.PERSONAL: 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 break; 103 break;
119 default: 104 default:
120 throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.name()); 105 throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.name());
@@ -122,43 +107,41 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S @@ -122,43 +107,41 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S
122 if (StringUtils.isEmpty(sysNotice.getReceiverTypeIds())) { 107 if (StringUtils.isEmpty(sysNotice.getReceiverTypeIds())) {
123 throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.name()); 108 throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.name());
124 } 109 }
125 - //如果为空,则新增 110 + // 如果为空,则新增
126 if (sysNotice.getId() == null) { 111 if (sysNotice.getId() == null) {
127 baseMapper.insert(sysNotice); 112 baseMapper.insert(sysNotice);
128 - sysNotice.copyToDTO(sysNoticeDTO);  
129 - return sysNoticeDTO;  
130 } else { 113 } else {
131 baseMapper.updateById(sysNotice); 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 @Override 120 @Override
138 @Transactional 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 sysNotice.setSenderName(currentUserName); 128 sysNotice.setSenderName(currentUserName);
145 sysNotice.setCreator(currentUserId); 129 sysNotice.setCreator(currentUserId);
146 sysNotice.setSenderDate(LocalDateTime.now()); 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 if (update > 0) { 138 if (update > 0) {
155 // 发送消息 139 // 发送消息
156 - //TODO sysNotice.getReceiverTypeIds()有可能为null  
157 String[] split = sysNotice.getReceiverTypeIds().split(","); 140 String[] split = sysNotice.getReceiverTypeIds().split(",");
158 List<SysNoticeUser> list = new ArrayList<>(split.length); 141 List<SysNoticeUser> list = new ArrayList<>(split.length);
159 - for (int i = 0; i < split.length; i++) { 142 + for (String s : split) {
160 SysNoticeUser sysNoticeUser = new SysNoticeUser(); 143 SysNoticeUser sysNoticeUser = new SysNoticeUser();
161 - sysNoticeUser.setReceiverId(split[i]); 144 + sysNoticeUser.setReceiverId(s);
162 sysNoticeUser.setNoticeId(sysNotice.getId()); 145 sysNoticeUser.setNoticeId(sysNotice.getId());
163 sysNoticeUser.setTenantId(sysNotice.getTenantId()); 146 sysNoticeUser.setTenantId(sysNotice.getTenantId());
164 sysNoticeUser.setReadStatus(FastIotConstants.ReadState.UNREAD); 147 sysNoticeUser.setReadStatus(FastIotConstants.ReadState.UNREAD);
@@ -40,17 +40,13 @@ import java.util.stream.Collectors; @@ -40,17 +40,13 @@ import java.util.stream.Collectors;
40 public class YtDeviceServiceImpl extends AbstractBaseService<DeviceMapper, YtDevice> 40 public class YtDeviceServiceImpl extends AbstractBaseService<DeviceMapper, YtDevice>
41 implements YtDeviceService { 41 implements YtDeviceService {
42 42
43 -// private final TBConfig tbConfig;  
44 -// private final TBConnectService tbConnectService;  
45 -// private final TbDBService tbDBService;  
46 private final DeviceProfileDao deviceProfileDao; 43 private final DeviceProfileDao deviceProfileDao;
47 private final DeviceCredentialsDao deviceCredentialsDao; 44 private final DeviceCredentialsDao deviceCredentialsDao;
48 45
49 46
50 private final OrganizationMapper ytOrganizationMapper; 47 private final OrganizationMapper ytOrganizationMapper;
51 @Override 48 @Override
52 - // @Transactional  
53 - // 事务会导致 tbDBService 多数据源失效 49 + @Transactional
54 public DeviceDTO insertOrUpdate(String tenantId,DeviceDTO deviceDTO) { 50 public DeviceDTO insertOrUpdate(String tenantId,DeviceDTO deviceDTO) {
55 51
56 if (StringUtils.isBlank(deviceDTO.getId())) { 52 if (StringUtils.isBlank(deviceDTO.getId())) {