Showing
14 changed files
with
294 additions
and
7 deletions
... | ... | @@ -12,6 +12,7 @@ import org.thingsboard.server.common.data.yunteng.common.DeleteGroup; |
12 | 12 | import org.thingsboard.server.common.data.yunteng.common.UpdateGroup; |
13 | 13 | import org.thingsboard.server.common.data.yunteng.dto.ConfigurationCenterDTO; |
14 | 14 | import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; |
15 | +import org.thingsboard.server.common.data.yunteng.dto.request.ConfigurationContentInfoDTO; | |
15 | 16 | import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum; |
16 | 17 | import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData; |
17 | 18 | import org.thingsboard.server.controller.BaseController; |
... | ... | @@ -86,4 +87,13 @@ public class YtConfigurationCenterController extends BaseController { |
86 | 87 | deleteDTO.setTenantId(getCurrentUser().getCurrentTenantId()); |
87 | 88 | return ResponseEntity.ok(ytConfigurationCenterService.deleteConfigurationCenter(deleteDTO)); |
88 | 89 | } |
90 | + | |
91 | + @GetMapping("/getConfigurationInfo/{id}") | |
92 | + @ApiOperation("获取组态信息") | |
93 | + public ResponseEntity<ConfigurationContentInfoDTO> getConfigurationInfos( | |
94 | + @PathVariable("id") String id) throws ThingsboardException { | |
95 | + return ResponseEntity.ok( | |
96 | + ytConfigurationCenterService.getConfigurationInfos( | |
97 | + id, getCurrentUser().getCurrentTenantId())); | |
98 | + } | |
89 | 99 | } | ... | ... |
1 | +package org.thingsboard.server.controller.yunteng; | |
2 | + | |
3 | +import io.swagger.annotations.Api; | |
4 | +import io.swagger.annotations.ApiOperation; | |
5 | +import lombok.RequiredArgsConstructor; | |
6 | +import org.springframework.http.ResponseEntity; | |
7 | +import org.springframework.validation.annotation.Validated; | |
8 | +import org.springframework.web.bind.annotation.*; | |
9 | +import org.thingsboard.server.common.data.exception.ThingsboardException; | |
10 | +import org.thingsboard.server.common.data.yunteng.common.AddGroup; | |
11 | +import org.thingsboard.server.common.data.yunteng.common.DeleteGroup; | |
12 | +import org.thingsboard.server.common.data.yunteng.common.UpdateGroup; | |
13 | +import org.thingsboard.server.common.data.yunteng.dto.ConfigurationContentDTO; | |
14 | +import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; | |
15 | +import org.thingsboard.server.common.data.yunteng.dto.request.ConfigurationContentInfoDTO; | |
16 | +import org.thingsboard.server.controller.BaseController; | |
17 | +import org.thingsboard.server.dao.yunteng.service.YtConfigurationContentService; | |
18 | + | |
19 | +@RestController | |
20 | +@RequestMapping("/api/yt/configuration/content") | |
21 | +@RequiredArgsConstructor | |
22 | +@Api(tags = "组态内容") | |
23 | +public class YtConfigurationContentController extends BaseController { | |
24 | + | |
25 | + private final YtConfigurationContentService ytConfigurationContentService; | |
26 | + | |
27 | + @PostMapping | |
28 | + @ApiOperation("新增") | |
29 | + public ResponseEntity<ConfigurationContentDTO> save( | |
30 | + @Validated({AddGroup.class}) @RequestBody ConfigurationContentDTO configurationContentDTO) | |
31 | + throws ThingsboardException { | |
32 | + configurationContentDTO.setTenantId(getCurrentUser().getCurrentTenantId()); | |
33 | + return ResponseEntity.ok( | |
34 | + ytConfigurationContentService.saveConfigurationContent(configurationContentDTO)); | |
35 | + } | |
36 | + | |
37 | + @PutMapping | |
38 | + @ApiOperation("修改") | |
39 | + public ResponseEntity<ConfigurationContentInfoDTO> update( | |
40 | + @Validated({UpdateGroup.class}) @RequestBody ConfigurationContentInfoDTO contentReqDTO) | |
41 | + throws ThingsboardException { | |
42 | + for (ConfigurationContentDTO configurationContentDTO : | |
43 | + contentReqDTO.getConfigurationContentList()) { | |
44 | + configurationContentDTO.setTenantId(getCurrentUser().getCurrentTenantId()); | |
45 | + configurationContentDTO.setConfigurationId(contentReqDTO.getConfigurationId()); | |
46 | + ytConfigurationContentService.updateConfigurationContent(configurationContentDTO); | |
47 | + } | |
48 | + return ResponseEntity.ok(contentReqDTO); | |
49 | + } | |
50 | + | |
51 | + @DeleteMapping | |
52 | + @ApiOperation("删除") | |
53 | + public ResponseEntity<Boolean> delete( | |
54 | + @Validated({DeleteGroup.class}) @RequestBody DeleteDTO deleteDTO) | |
55 | + throws ThingsboardException { | |
56 | + deleteDTO.setTenantId(getCurrentUser().getCurrentTenantId()); | |
57 | + return ResponseEntity.ok(ytConfigurationContentService.deleteConfigurationContent(deleteDTO)); | |
58 | + } | |
59 | +} | ... | ... |
... | ... | @@ -6,6 +6,9 @@ public interface FastIotConstants { |
6 | 6 | Integer JAVA_SCRIPT = 0; |
7 | 7 | Integer CONVERT_DATA = 1; |
8 | 8 | Integer SCENE_REACT = 2; |
9 | + Integer MOBILE_TYPE = 0; | |
10 | + Integer PC_TYPE = 1; | |
11 | + String FIRST_PAGE_NAME = "第 1 页"; | |
9 | 12 | class DefaultOrder { |
10 | 13 | public static final String CREATE_TIME="create_time"; |
11 | 14 | } | ... | ... |
... | ... | @@ -73,12 +73,13 @@ public final class ModelConstants { |
73 | 73 | public static final String IOTFS_CONVERT_CONFIG_TABLE_NAME = "iotfs_convert_config"; |
74 | 74 | /** 组态中心 */ |
75 | 75 | public static final String IOTFS_CONFIGURATION_CENTER_NAME = "iotfs_configuration_center"; |
76 | - | |
76 | + /** 组态内容 */ | |
77 | + public static final String IOTFS_CONFIGURATION_CONTENT_NAME = "iotfs_configuration_content"; | |
77 | 78 | /** 视频流 */ |
78 | 79 | public static final String IOTFS_VIDEO_STREAM_TABLE_NAME = "iotfs_device_camera"; |
79 | 80 | /** 意见反馈 */ |
80 | 81 | public static final String IOTFS_OPINION_TABLE_NAME = "iotfs_opinion"; |
81 | - /** 意见反馈 */ | |
82 | + /** 第三方用户表 */ | |
82 | 83 | public static final String IOTFS_THIRD_USER_TABLE_NAME = "iotfs_third_user"; |
83 | 84 | } |
84 | 85 | ... | ... |
1 | +package org.thingsboard.server.common.data.yunteng.dto; | |
2 | + | |
3 | +import io.swagger.annotations.ApiModelProperty; | |
4 | +import lombok.Data; | |
5 | +import lombok.EqualsAndHashCode; | |
6 | +import org.thingsboard.server.common.data.yunteng.common.AddGroup; | |
7 | +import org.thingsboard.server.common.data.yunteng.common.UpdateGroup; | |
8 | + | |
9 | +import javax.validation.constraints.NotEmpty; | |
10 | +import javax.validation.constraints.NotNull; | |
11 | + | |
12 | +@EqualsAndHashCode(callSuper = true) | |
13 | +@Data | |
14 | +public class ConfigurationContentDTO extends TenantDTO { | |
15 | + @ApiModelProperty(value = "页面名称", required = true) | |
16 | + @NotEmpty( | |
17 | + message = "页面名称不能为空或空字符串", | |
18 | + groups = {UpdateGroup.class, AddGroup.class}) | |
19 | + private String name; | |
20 | + | |
21 | + @ApiModelProperty(value = "页面内容") | |
22 | + @NotEmpty( | |
23 | + message = "页面内容不能为空或空字符串", | |
24 | + groups = {UpdateGroup.class}) | |
25 | + private String content; | |
26 | + | |
27 | + @ApiModelProperty(value = "组态描述") | |
28 | + private String remark; | |
29 | + | |
30 | + @ApiModelProperty(value = "组织中心ID", required = true) | |
31 | + @NotEmpty( | |
32 | + message = "组织中心ID不能为空或空字符串", | |
33 | + groups = {UpdateGroup.class, AddGroup.class}) | |
34 | + private String configurationId; | |
35 | + | |
36 | + @ApiModelProperty(value = "类型:0手机 1PC", required = true) | |
37 | + @NotNull( | |
38 | + message = "类型不能为空", | |
39 | + groups = {UpdateGroup.class, AddGroup.class}) | |
40 | + private Integer type; | |
41 | +} | ... | ... |
1 | +package org.thingsboard.server.common.data.yunteng.dto.request; | |
2 | + | |
3 | +import io.swagger.annotations.ApiModel; | |
4 | +import io.swagger.annotations.ApiModelProperty; | |
5 | +import lombok.Data; | |
6 | +import org.thingsboard.server.common.data.yunteng.dto.ConfigurationContentDTO; | |
7 | + | |
8 | +import java.util.List; | |
9 | +@Data | |
10 | +@ApiModel(value = "组态编辑") | |
11 | +public class ConfigurationContentInfoDTO { | |
12 | + @ApiModelProperty(value = "组态中心ID",required = true) | |
13 | + private String configurationId; | |
14 | + @ApiModelProperty(value = "组态中心名称") | |
15 | + private String configurationName; | |
16 | + @ApiModelProperty(value = "组态内容",required = true) | |
17 | + private List<ConfigurationContentDTO> configurationContentList; | |
18 | +} | ... | ... |
1 | +package org.thingsboard.server.dao.yunteng.entities; | |
2 | + | |
3 | +import com.baomidou.mybatisplus.annotation.TableName; | |
4 | +import lombok.Data; | |
5 | +import lombok.EqualsAndHashCode; | |
6 | +import org.thingsboard.server.common.data.yunteng.constant.ModelConstants; | |
7 | + | |
8 | +@EqualsAndHashCode(callSuper = true) | |
9 | +@TableName(ModelConstants.Table.IOTFS_CONFIGURATION_CONTENT_NAME) | |
10 | +@Data | |
11 | +public class ConfigurationContent extends TenantBaseEntity { | |
12 | + | |
13 | + private static final long serialVersionUID = -419380277607655083L; | |
14 | + private String name; | |
15 | + private String remark; | |
16 | + private String configurationId; | |
17 | + private String content; | |
18 | + private Integer type; | |
19 | +} | ... | ... |
... | ... | @@ -9,16 +9,15 @@ import org.springframework.transaction.annotation.Transactional; |
9 | 9 | import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants; |
10 | 10 | import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException; |
11 | 11 | import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; |
12 | -import org.thingsboard.server.common.data.yunteng.dto.BaseDTO; | |
13 | -import org.thingsboard.server.common.data.yunteng.dto.ConfigurationCenterDTO; | |
14 | -import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; | |
15 | -import org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO; | |
12 | +import org.thingsboard.server.common.data.yunteng.dto.*; | |
13 | +import org.thingsboard.server.common.data.yunteng.dto.request.ConfigurationContentInfoDTO; | |
16 | 14 | import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData; |
17 | 15 | import org.thingsboard.server.dao.yunteng.entities.ConfigurationCenter; |
18 | 16 | import org.thingsboard.server.dao.yunteng.mapper.ConfigurationCenterMapper; |
19 | 17 | import org.thingsboard.server.dao.yunteng.mapper.OrganizationMapper; |
20 | 18 | import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; |
21 | 19 | import org.thingsboard.server.dao.yunteng.service.YtConfigurationCenterService; |
20 | +import org.thingsboard.server.dao.yunteng.service.YtConfigurationContentService; | |
22 | 21 | |
23 | 22 | import java.util.HashSet; |
24 | 23 | import java.util.List; |
... | ... | @@ -32,6 +31,7 @@ public class YtConfigurationCenterServiceImpl |
32 | 31 | extends AbstractBaseService<ConfigurationCenterMapper, ConfigurationCenter> |
33 | 32 | implements YtConfigurationCenterService { |
34 | 33 | private final OrganizationMapper organizationMapper; |
34 | + private final YtConfigurationContentService ytConfigurationContentService; | |
35 | 35 | |
36 | 36 | @Override |
37 | 37 | public YtPageData<ConfigurationCenterDTO> page(Map<String, Object> queryMap) { |
... | ... | @@ -59,7 +59,14 @@ public class YtConfigurationCenterServiceImpl |
59 | 59 | @Override |
60 | 60 | @Transactional |
61 | 61 | public ConfigurationCenterDTO saveConfiguration(ConfigurationCenterDTO configurationCenterDTO) { |
62 | - baseMapper.insert(configurationCenterDTO.getEntity(ConfigurationCenter.class)); | |
62 | + ConfigurationCenter configurationCenter = configurationCenterDTO.getEntity(ConfigurationCenter.class); | |
63 | + baseMapper.insert(configurationCenter); | |
64 | + ConfigurationContentDTO contentDTO = new ConfigurationContentDTO(); | |
65 | + contentDTO.setTenantId(configurationCenter.getTenantId()); | |
66 | + contentDTO.setType(FastIotConstants.PC_TYPE); | |
67 | + contentDTO.setName(FastIotConstants.FIRST_PAGE_NAME); | |
68 | + contentDTO.setConfigurationId(configurationCenter.getId()); | |
69 | + ytConfigurationContentService.saveConfigurationContent(contentDTO); | |
63 | 70 | return configurationCenterDTO; |
64 | 71 | } |
65 | 72 | |
... | ... | @@ -86,6 +93,15 @@ public class YtConfigurationCenterServiceImpl |
86 | 93 | throw new YtDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); |
87 | 94 | } |
88 | 95 | } |
96 | + ytConfigurationContentService.deleteConfigurationContentByCenterId(deleteDTO.getIds()); | |
89 | 97 | return baseMapper.deleteBatchIds(deleteDTO.getIds()) > FastIotConstants.MagicNumber.ZERO; |
90 | 98 | } |
99 | + | |
100 | + @Override | |
101 | + public ConfigurationContentInfoDTO getConfigurationInfos(String id, String tenantId) { | |
102 | + List<ConfigurationContentInfoDTO> list = baseMapper.getConfigurationInfoById(id, tenantId); | |
103 | + return list.size() > FastIotConstants.MagicNumber.ZERO | |
104 | + ? list.get(FastIotConstants.MagicNumber.ZERO) | |
105 | + : null; | |
106 | + } | |
91 | 107 | } | ... | ... |
dao/src/main/java/org/thingsboard/server/dao/yunteng/impl/YtConfigurationContentServiceImpl.java
0 → 100644
1 | +package org.thingsboard.server.dao.yunteng.impl; | |
2 | + | |
3 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |
4 | +import lombok.RequiredArgsConstructor; | |
5 | +import lombok.extern.slf4j.Slf4j; | |
6 | +import org.springframework.stereotype.Service; | |
7 | +import org.springframework.transaction.annotation.Transactional; | |
8 | +import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants; | |
9 | +import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException; | |
10 | +import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; | |
11 | +import org.thingsboard.server.common.data.yunteng.dto.*; | |
12 | +import org.thingsboard.server.dao.yunteng.entities.ConfigurationContent; | |
13 | +import org.thingsboard.server.dao.yunteng.mapper.ConfigurationContentMapper; | |
14 | +import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; | |
15 | +import org.thingsboard.server.dao.yunteng.service.YtConfigurationContentService; | |
16 | +import java.util.List; | |
17 | +import java.util.Set; | |
18 | + | |
19 | +@Slf4j | |
20 | +@Service | |
21 | +@RequiredArgsConstructor | |
22 | +public class YtConfigurationContentServiceImpl | |
23 | + extends AbstractBaseService<ConfigurationContentMapper, ConfigurationContent> | |
24 | + implements YtConfigurationContentService { | |
25 | + | |
26 | + @Override | |
27 | + @Transactional | |
28 | + public ConfigurationContentDTO saveConfigurationContent( | |
29 | + ConfigurationContentDTO configurationContentDTO) { | |
30 | + baseMapper.insert(configurationContentDTO.getEntity(ConfigurationContent.class)); | |
31 | + return configurationContentDTO; | |
32 | + } | |
33 | + | |
34 | + @Override | |
35 | + @Transactional | |
36 | + public ConfigurationContentDTO updateConfigurationContent( | |
37 | + ConfigurationContentDTO configurationContentDTO) { | |
38 | + ConfigurationContent configurationContent = | |
39 | + baseMapper.selectById(configurationContentDTO.getId()); | |
40 | + if (!configurationContent.getTenantId().equals(configurationContentDTO.getTenantId())) { | |
41 | + throw new YtDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | |
42 | + } | |
43 | + baseMapper.updateById(configurationContentDTO.getEntity(ConfigurationContent.class)); | |
44 | + return configurationContentDTO; | |
45 | + } | |
46 | + | |
47 | + @Override | |
48 | + @Transactional | |
49 | + public boolean deleteConfigurationContent(DeleteDTO deleteDTO) { | |
50 | + List<ConfigurationContent> centerList = | |
51 | + baseMapper.selectList( | |
52 | + new LambdaQueryWrapper<ConfigurationContent>() | |
53 | + .in(ConfigurationContent::getId, deleteDTO.getIds())); | |
54 | + for (ConfigurationContent center : centerList) { | |
55 | + if (!center.getTenantId().equals(deleteDTO.getTenantId())) { | |
56 | + throw new YtDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | |
57 | + } | |
58 | + } | |
59 | + return baseMapper.deleteBatchIds(deleteDTO.getIds()) > FastIotConstants.MagicNumber.ZERO; | |
60 | + } | |
61 | + | |
62 | + @Override | |
63 | + @Transactional | |
64 | + public boolean deleteConfigurationContentByCenterId(Set<String> configurationCenterIds) { | |
65 | + return baseMapper.delete( | |
66 | + new LambdaQueryWrapper<ConfigurationContent>() | |
67 | + .in(ConfigurationContent::getConfigurationId, configurationCenterIds)) | |
68 | + > FastIotConstants.MagicNumber.ZERO; | |
69 | + } | |
70 | +} | ... | ... |
... | ... | @@ -5,12 +5,17 @@ import com.baomidou.mybatisplus.core.metadata.IPage; |
5 | 5 | import org.apache.ibatis.annotations.Mapper; |
6 | 6 | import org.apache.ibatis.annotations.Param; |
7 | 7 | import org.thingsboard.server.common.data.yunteng.dto.ConfigurationCenterDTO; |
8 | +import org.thingsboard.server.common.data.yunteng.dto.request.ConfigurationContentInfoDTO; | |
8 | 9 | import org.thingsboard.server.dao.yunteng.entities.ConfigurationCenter; |
9 | 10 | |
11 | +import java.util.List; | |
10 | 12 | import java.util.Map; |
11 | 13 | |
12 | 14 | @Mapper |
13 | 15 | public interface ConfigurationCenterMapper extends BaseMapper<ConfigurationCenter> { |
14 | 16 | IPage<ConfigurationCenterDTO> getConfigurationCenterPage( |
15 | 17 | IPage<?> page, @Param("queryMap") Map<String, Object> queryMap); |
18 | + | |
19 | + List<ConfigurationContentInfoDTO> getConfigurationInfoById( | |
20 | + @Param("id") String id, @Param("tenantId") String tenantId); | |
16 | 21 | } | ... | ... |
dao/src/main/java/org/thingsboard/server/dao/yunteng/mapper/ConfigurationContentMapper.java
0 → 100644
1 | +package org.thingsboard.server.dao.yunteng.mapper; | |
2 | + | |
3 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |
4 | +import org.apache.ibatis.annotations.Mapper; | |
5 | +import org.thingsboard.server.dao.yunteng.entities.ConfigurationContent; | |
6 | + | |
7 | +@Mapper | |
8 | +public interface ConfigurationContentMapper extends BaseMapper<ConfigurationContent> { | |
9 | +} | ... | ... |
... | ... | @@ -2,6 +2,7 @@ package org.thingsboard.server.dao.yunteng.service; |
2 | 2 | |
3 | 3 | import org.thingsboard.server.common.data.yunteng.dto.ConfigurationCenterDTO; |
4 | 4 | import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; |
5 | +import org.thingsboard.server.common.data.yunteng.dto.request.ConfigurationContentInfoDTO; | |
5 | 6 | import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData; |
6 | 7 | |
7 | 8 | import java.util.Map; |
... | ... | @@ -14,4 +15,6 @@ public interface YtConfigurationCenterService { |
14 | 15 | ConfigurationCenterDTO updateConfiguration(ConfigurationCenterDTO configurationCenterDTO); |
15 | 16 | |
16 | 17 | boolean deleteConfigurationCenter(DeleteDTO deleteDTO); |
18 | + | |
19 | + ConfigurationContentInfoDTO getConfigurationInfos(String id,String tenantId); | |
17 | 20 | } | ... | ... |
dao/src/main/java/org/thingsboard/server/dao/yunteng/service/YtConfigurationContentService.java
0 → 100644
1 | +package org.thingsboard.server.dao.yunteng.service; | |
2 | + | |
3 | +import org.thingsboard.server.common.data.yunteng.dto.ConfigurationContentDTO; | |
4 | +import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; | |
5 | + | |
6 | +import java.util.Set; | |
7 | + | |
8 | +public interface YtConfigurationContentService { | |
9 | + | |
10 | + ConfigurationContentDTO saveConfigurationContent(ConfigurationContentDTO configurationContentDTO); | |
11 | + | |
12 | + ConfigurationContentDTO updateConfigurationContent( | |
13 | + ConfigurationContentDTO configurationContentDTO); | |
14 | + | |
15 | + boolean deleteConfigurationContent(DeleteDTO deleteDTO); | |
16 | + | |
17 | + boolean deleteConfigurationContentByCenterId(Set<String> configurationCenterIds); | |
18 | +} | ... | ... |
... | ... | @@ -17,6 +17,15 @@ |
17 | 17 | <result property="name" column="organization_name"/> |
18 | 18 | </association> |
19 | 19 | </resultMap> |
20 | + <resultMap id="configurationInfoMap" type="org.thingsboard.server.common.data.yunteng.dto.request.ConfigurationContentInfoDTO"> | |
21 | + <result property="configurationId" column="id"/> | |
22 | + <result property="configurationName" column="name"/> | |
23 | + <collection property="configurationContentList" ofType="org.thingsboard.server.common.data.yunteng.dto.ConfigurationContentDTO"> | |
24 | + <result property="id" column="content_id"/> | |
25 | + <result property="content" column="content"/> | |
26 | + </collection> | |
27 | + </resultMap> | |
28 | + | |
20 | 29 | <sql id="columns"> |
21 | 30 | a.id,a.name,a.organization_id,a.remark,a.update_time,a.create_time,a.creator,a.tenant_id,a.updater,io.name AS organization_name |
22 | 31 | </sql> |
... | ... | @@ -40,4 +49,10 @@ |
40 | 49 | </if> |
41 | 50 | </where> |
42 | 51 | </select> |
52 | + | |
53 | + <select id="getConfigurationInfoById" resultMap="configurationInfoMap"> | |
54 | + SELECT icc.id,icc.name,icct.id AS content_id,icct.content FROM iotfs_configuration_center icc LEFT JOIN | |
55 | + iotfs_configuration_content icct ON icc.id = icct.configuration_id | |
56 | + WHERE icc.id = #{id} AND icc.tenant_id = #{tenantId} | |
57 | + </select> | |
43 | 58 | </mapper> | ... | ... |