Commit 853aebeb5c9132d702b72d02ae6e2eca204f8a11
Merge remote-tracking branch 'origin/i18n' into i18n
Showing
9 changed files
with
23 additions
and
12 deletions
@@ -318,6 +318,7 @@ public abstract class BaseController { | @@ -318,6 +318,7 @@ public abstract class BaseController { | ||
318 | 318 | ||
319 | @ExceptionHandler(Exception.class) | 319 | @ExceptionHandler(Exception.class) |
320 | public void handleControllerException(Exception e, HttpServletResponse response) { | 320 | public void handleControllerException(Exception e, HttpServletResponse response) { |
321 | + log.error(e.getMessage(),e); | ||
321 | ThingsboardException thingsboardException = handleException(e); | 322 | ThingsboardException thingsboardException = handleException(e); |
322 | if (thingsboardException.getErrorCode() == ThingsboardErrorCode.GENERAL && thingsboardException.getCause() instanceof Exception | 323 | if (thingsboardException.getErrorCode() == ThingsboardErrorCode.GENERAL && thingsboardException.getCause() instanceof Exception |
323 | && StringUtils.equals(thingsboardException.getCause().getMessage(), thingsboardException.getMessage())) { | 324 | && StringUtils.equals(thingsboardException.getCause().getMessage(), thingsboardException.getMessage())) { |
@@ -330,6 +331,7 @@ public abstract class BaseController { | @@ -330,6 +331,7 @@ public abstract class BaseController { | ||
330 | 331 | ||
331 | @ExceptionHandler(ThingsboardException.class) | 332 | @ExceptionHandler(ThingsboardException.class) |
332 | public void handleThingsboardException(ThingsboardException ex, HttpServletResponse response) { | 333 | public void handleThingsboardException(ThingsboardException ex, HttpServletResponse response) { |
334 | + log.error(ex.getMessage(),ex); | ||
333 | errorResponseHandler.handle(ex, response); | 335 | errorResponseHandler.handle(ex, response); |
334 | } | 336 | } |
335 | 337 | ||
@@ -393,6 +395,7 @@ public abstract class BaseController { | @@ -393,6 +395,7 @@ public abstract class BaseController { | ||
393 | * */ | 395 | * */ |
394 | @ExceptionHandler(MethodArgumentNotValidException.class) | 396 | @ExceptionHandler(MethodArgumentNotValidException.class) |
395 | public void handleValidationError(MethodArgumentNotValidException validationError, HttpServletResponse response) { | 397 | public void handleValidationError(MethodArgumentNotValidException validationError, HttpServletResponse response) { |
398 | + log.error(validationError.getMessage(),validationError); | ||
396 | List<ConstraintViolation<Object>> constraintsViolations = validationError.getFieldErrors().stream() | 399 | List<ConstraintViolation<Object>> constraintsViolations = validationError.getFieldErrors().stream() |
397 | .map(fieldError -> { | 400 | .map(fieldError -> { |
398 | try { | 401 | try { |
@@ -224,7 +224,7 @@ public class TkConvertDataToController extends BaseController { | @@ -224,7 +224,7 @@ public class TkConvertDataToController extends BaseController { | ||
224 | Integer sceneStatus = convertReqDTO.getStatus(); | 224 | Integer sceneStatus = convertReqDTO.getStatus(); |
225 | JsonNode configuration = | 225 | JsonNode configuration = |
226 | sceneLinkageService.getRuleNodeConfig( | 226 | sceneLinkageService.getRuleNodeConfig( |
227 | - sceneId, | 227 | + sceneId, querySceneLink.getRuleChainId(), |
228 | currentTenant, | 228 | currentTenant, |
229 | getCurrentUser().getCustomerId().getId().toString(), | 229 | getCurrentUser().getCustomerId().getId().toString(), |
230 | sceneStatus); | 230 | sceneStatus); |
@@ -602,6 +602,7 @@ public class DefaultDeviceStateService extends AbstractPartitionBasedService<Dev | @@ -602,6 +602,7 @@ public class DefaultDeviceStateService extends AbstractPartitionBasedService<Dev | ||
602 | if (partitionService.resolve(ServiceType.TB_CORE, stateData.getTenantId(), deviceId).isMyPartition()) { | 602 | if (partitionService.resolve(ServiceType.TB_CORE, stateData.getTenantId(), deviceId).isMyPartition()) { |
603 | 603 | ||
604 | } else { | 604 | } else { |
605 | + log.error("updateInactivityStateIfExpired isMyPartition=false , serverType={},tenantId={},deviceId={}",ServiceType.TB_CORE,stateData.getTenantId(),deviceId); | ||
605 | cleanupEntity(deviceId); | 606 | cleanupEntity(deviceId); |
606 | } | 607 | } |
607 | } | 608 | } |
@@ -617,7 +618,6 @@ public class DefaultDeviceStateService extends AbstractPartitionBasedService<Dev | @@ -617,7 +618,6 @@ public class DefaultDeviceStateService extends AbstractPartitionBasedService<Dev | ||
617 | state.setLastInactivityAlarmTime(ts); | 618 | state.setLastInactivityAlarmTime(ts); |
618 | save(deviceId, INACTIVITY_ALARM_TIME, ts); | 619 | save(deviceId, INACTIVITY_ALARM_TIME, ts); |
619 | onDeviceActivityStatusChange(deviceId, false, stateData); | 620 | onDeviceActivityStatusChange(deviceId, false, stateData); |
620 | - System.err.println("Inactivity Device : "+deviceId); | ||
621 | } | 621 | } |
622 | 622 | ||
623 | boolean isActive(long ts, DeviceState state) { | 623 | boolean isActive(long ts, DeviceState state) { |
@@ -53,6 +53,10 @@ public class RuleChainMetaData { | @@ -53,6 +53,10 @@ public class RuleChainMetaData { | ||
53 | connectionInfo.setFromIndex(fromIndex); | 53 | connectionInfo.setFromIndex(fromIndex); |
54 | connectionInfo.setToIndex(toIndex); | 54 | connectionInfo.setToIndex(toIndex); |
55 | connectionInfo.setType(type); | 55 | connectionInfo.setType(type); |
56 | + addConnectionInfo(connectionInfo); | ||
57 | + } | ||
58 | + | ||
59 | + public void addConnectionInfo(NodeConnectionInfo connectionInfo) { | ||
56 | if (connections == null) { | 60 | if (connections == null) { |
57 | connections = new ArrayList<>(); | 61 | connections = new ArrayList<>(); |
58 | } | 62 | } |
@@ -41,7 +41,7 @@ public class UserDTO extends BaseDTO { | @@ -41,7 +41,7 @@ public class UserDTO extends BaseDTO { | ||
41 | private String[] roleIds; | 41 | private String[] roleIds; |
42 | 42 | ||
43 | @ApiModelProperty(value = "电话号码") | 43 | @ApiModelProperty(value = "电话号码") |
44 | -// @NotEmpty(message = "电话号码不能为空或字符串", groups = AddGroup.class) | 44 | + @NotEmpty(message = "电话号码不能为空或字符串", groups = AddGroup.class) |
45 | private String phoneNumber; | 45 | private String phoneNumber; |
46 | 46 | ||
47 | @ApiModelProperty(value = "邮箱") | 47 | @ApiModelProperty(value = "邮箱") |
@@ -164,7 +164,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC | @@ -164,7 +164,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC | ||
164 | List<EntityRelation> relations = new ArrayList<>(); | 164 | List<EntityRelation> relations = new ArrayList<>(); |
165 | 165 | ||
166 | Map<RuleNodeId, Integer> ruleNodeIndexMap = new HashMap<>(); | 166 | Map<RuleNodeId, Integer> ruleNodeIndexMap = new HashMap<>(); |
167 | - if (nodes != null) { | 167 | + if (nodes != null && nodes.size()>0) { |
168 | for (RuleNode node : nodes) { | 168 | for (RuleNode node : nodes) { |
169 | setSingletonMode(node); | 169 | setSingletonMode(node); |
170 | if (node.getId() != null) { | 170 | if (node.getId() != null) { |
@@ -191,7 +191,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC | @@ -191,7 +191,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC | ||
191 | updatedRuleNodes.add(new RuleNodeUpdateResult(existingNode, newRuleNode)); | 191 | updatedRuleNodes.add(new RuleNodeUpdateResult(existingNode, newRuleNode)); |
192 | } | 192 | } |
193 | RuleChainId ruleChainId = ruleChain.getId(); | 193 | RuleChainId ruleChainId = ruleChain.getId(); |
194 | - if (nodes != null) { | 194 | + if (nodes != null && nodes.size()>0) { |
195 | for (RuleNode node : toAddOrUpdate) { | 195 | for (RuleNode node : toAddOrUpdate) { |
196 | node.setRuleChainId(ruleChainId); | 196 | node.setRuleChainId(ruleChainId); |
197 | node = ruleNodeUpdater.apply(node); | 197 | node = ruleNodeUpdater.apply(node); |
@@ -208,7 +208,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC | @@ -208,7 +208,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC | ||
208 | deleteRuleNodes(tenantId, toDelete); | 208 | deleteRuleNodes(tenantId, toDelete); |
209 | } | 209 | } |
210 | RuleNodeId firstRuleNodeId = null; | 210 | RuleNodeId firstRuleNodeId = null; |
211 | - if (nodes != null) { | 211 | + if (nodes != null && nodes.size()>0) { |
212 | if (ruleChainMetaData.getFirstNodeIndex() != null) { | 212 | if (ruleChainMetaData.getFirstNodeIndex() != null) { |
213 | firstRuleNodeId = nodes.get(ruleChainMetaData.getFirstNodeIndex()).getId(); | 213 | firstRuleNodeId = nodes.get(ruleChainMetaData.getFirstNodeIndex()).getId(); |
214 | } | 214 | } |
@@ -431,7 +431,10 @@ public class TkConvertConfigServiceImpl | @@ -431,7 +431,10 @@ public class TkConvertConfigServiceImpl | ||
431 | private void freshRuleChainMetaData(RuleChainMetaData ruleChainMetaData, int removeNodeIndex) { | 431 | private void freshRuleChainMetaData(RuleChainMetaData ruleChainMetaData, int removeNodeIndex) { |
432 | ruleChainMetaData.getNodes().remove(removeNodeIndex); | 432 | ruleChainMetaData.getNodes().remove(removeNodeIndex); |
433 | 433 | ||
434 | - int firstIndex = ruleChainMetaData.getFirstNodeIndex(); | 434 | + Integer firstIndex = ruleChainMetaData.getFirstNodeIndex(); |
435 | + if(firstIndex==null){ | ||
436 | + return; | ||
437 | + } | ||
435 | ruleChainMetaData.setFirstNodeIndex( | 438 | ruleChainMetaData.setFirstNodeIndex( |
436 | Math.max(firstIndex < removeNodeIndex ? firstIndex : firstIndex - 1, 0)); | 439 | Math.max(firstIndex < removeNodeIndex ? firstIndex : firstIndex - 1, 0)); |
437 | 440 | ||
@@ -834,7 +837,7 @@ public class TkConvertConfigServiceImpl | @@ -834,7 +837,7 @@ public class TkConvertConfigServiceImpl | ||
834 | nodeConnectionInfo.setFromIndex(ruleNodeIndex.get()); | 837 | nodeConnectionInfo.setFromIndex(ruleNodeIndex.get()); |
835 | nodeConnectionInfo.setToIndex(ruleChainMetaData.getNodes().size() - 2); | 838 | nodeConnectionInfo.setToIndex(ruleChainMetaData.getNodes().size() - 2); |
836 | nodeConnectionInfo.setType(connectionType); | 839 | nodeConnectionInfo.setType(connectionType); |
837 | - ruleChainMetaData.getConnections().add(nodeConnectionInfo); | 840 | + ruleChainMetaData.addConnectionInfo(nodeConnectionInfo); |
838 | } | 841 | } |
839 | if (node.getName().equals(sceneOriginatorName) | 842 | if (node.getName().equals(sceneOriginatorName) |
840 | && node.getType().equals(originatorType)) { | 843 | && node.getType().equals(originatorType)) { |
@@ -842,7 +845,7 @@ public class TkConvertConfigServiceImpl | @@ -842,7 +845,7 @@ public class TkConvertConfigServiceImpl | ||
842 | nodeConnectionInfo.setFromIndex(ruleNodeIndex.get()); | 845 | nodeConnectionInfo.setFromIndex(ruleNodeIndex.get()); |
843 | nodeConnectionInfo.setToIndex(ruleChainMetaData.getNodes().size() - 1); | 846 | nodeConnectionInfo.setToIndex(ruleChainMetaData.getNodes().size() - 1); |
844 | nodeConnectionInfo.setType(connectionType); | 847 | nodeConnectionInfo.setType(connectionType); |
845 | - ruleChainMetaData.getConnections().add(nodeConnectionInfo); | 848 | + ruleChainMetaData.addConnectionInfo(nodeConnectionInfo); |
846 | } | 849 | } |
847 | 850 | ||
848 | if (node.getType().equals("org.thingsboard.rule.engine.rpc.TbSendRPCRequestNode")) { | 851 | if (node.getType().equals("org.thingsboard.rule.engine.rpc.TbSendRPCRequestNode")) { |
@@ -850,7 +853,7 @@ public class TkConvertConfigServiceImpl | @@ -850,7 +853,7 @@ public class TkConvertConfigServiceImpl | ||
850 | nodeConnectionInfo.setFromIndex(ruleChainMetaData.getNodes().size() - 1); | 853 | nodeConnectionInfo.setFromIndex(ruleChainMetaData.getNodes().size() - 1); |
851 | nodeConnectionInfo.setToIndex(ruleNodeIndex.get()); | 854 | nodeConnectionInfo.setToIndex(ruleNodeIndex.get()); |
852 | nodeConnectionInfo.setType("RPC Request"); | 855 | nodeConnectionInfo.setType("RPC Request"); |
853 | - ruleChainMetaData.getConnections().add(nodeConnectionInfo); | 856 | + ruleChainMetaData.addConnectionInfo(nodeConnectionInfo); |
854 | } | 857 | } |
855 | ruleNodeIndex.getAndIncrement(); | 858 | ruleNodeIndex.getAndIncrement(); |
856 | }); | 859 | }); |
@@ -473,11 +473,12 @@ public class TkSceneLinkageServiceImpl | @@ -473,11 +473,12 @@ public class TkSceneLinkageServiceImpl | ||
473 | */ | 473 | */ |
474 | @Override | 474 | @Override |
475 | public JsonNode getRuleNodeConfig( | 475 | public JsonNode getRuleNodeConfig( |
476 | - String currentSceneId, String tenantId, String customerId, Integer state) { | 476 | + String currentSceneId, String ruleChainId,String tenantId, String customerId, Integer state) { |
477 | List<TkSceneLinkageEntity> runningScenes = | 477 | List<TkSceneLinkageEntity> runningScenes = |
478 | baseMapper.selectList( | 478 | baseMapper.selectList( |
479 | new LambdaQueryWrapper<TkSceneLinkageEntity>() | 479 | new LambdaQueryWrapper<TkSceneLinkageEntity>() |
480 | .eq(TkSceneLinkageEntity::getTenantId, tenantId) | 480 | .eq(TkSceneLinkageEntity::getTenantId, tenantId) |
481 | + .eq(TkSceneLinkageEntity::getRuleChainId,ruleChainId) | ||
481 | .eq(TkSceneLinkageEntity::getStatus, FastIotConstants.StateValue.ENABLE)); | 482 | .eq(TkSceneLinkageEntity::getStatus, FastIotConstants.StateValue.ENABLE)); |
482 | Set<String> enableIds = new HashSet<>(); | 483 | Set<String> enableIds = new HashSet<>(); |
483 | Map<String, String> sceneInform = new HashMap<>(); | 484 | Map<String, String> sceneInform = new HashMap<>(); |
@@ -87,7 +87,7 @@ public interface SceneLinkageService extends BaseService<TkSceneLinkageEntity>{ | @@ -87,7 +87,7 @@ public interface SceneLinkageService extends BaseService<TkSceneLinkageEntity>{ | ||
87 | * @param state 是否启动 | 87 | * @param state 是否启动 |
88 | * @return | 88 | * @return |
89 | */ | 89 | */ |
90 | - JsonNode getRuleNodeConfig(String sceneId,String tenantId,String customerId,Integer state); | 90 | + JsonNode getRuleNodeConfig(String sceneId,String ruleChainId,String tenantId,String customerId,Integer state); |
91 | 91 | ||
92 | /** | 92 | /** |
93 | * 详情 | 93 | * 详情 |