Showing
6 changed files
with
37 additions
and
9 deletions
@@ -209,7 +209,7 @@ non.existent.tenant = Rule chain is referencing to non-existent tenant! | @@ -209,7 +209,7 @@ non.existent.tenant = Rule chain is referencing to non-existent tenant! | ||
209 | root.rule.chain.is.present = Another root rule chain is present in scope of current tenant! | 209 | root.rule.chain.is.present = Another root rule chain is present in scope of current tenant! |
210 | edge.root.rule.chain.is.present = Another edge template root rule chain is present in scope of current tenant! | 210 | edge.root.rule.chain.is.present = Another edge template root rule chain is present in scope of current tenant! |
211 | app.openapi.api.isnull = The current application does not have a callable API. Please contact the administrator | 211 | app.openapi.api.isnull = The current application does not have a callable API. Please contact the administrator |
212 | - | 212 | +device.profile.used.for.configuration.center = The product used for [%s] configuration center and cannot delete!!! |
213 | 213 | ||
214 | 214 | ||
215 | 215 |
@@ -209,5 +209,5 @@ non.existent.tenant =规则链正在引用不存在的租户 | @@ -209,5 +209,5 @@ non.existent.tenant =规则链正在引用不存在的租户 | ||
209 | root.rule.chain.is.present =当前租户范围内存在另一个根规则链 | 209 | root.rule.chain.is.present =当前租户范围内存在另一个根规则链 |
210 | edge.root.rule.chain.is.present =当前租户范围内存在另一个边缘模板根规则链 | 210 | edge.root.rule.chain.is.present =当前租户范围内存在另一个边缘模板根规则链 |
211 | app.openapi.api.isnull = 当前应用不存在可调用api请联系管理员 | 211 | app.openapi.api.isnull = 当前应用不存在可调用api请联系管理员 |
212 | - | 212 | +device.profile.used.for.configuration.center = 产品被【%s】组态使用,不能删除!!! |
213 | 213 |
@@ -203,7 +203,7 @@ public enum ErrorMessage { | @@ -203,7 +203,7 @@ public enum ErrorMessage { | ||
203 | ROOT_RULE_CHAIN_IS_PRESENT (400167,"当前租户范围内存在另一个根规则链!","root.rule.chain.is.present"), | 203 | ROOT_RULE_CHAIN_IS_PRESENT (400167,"当前租户范围内存在另一个根规则链!","root.rule.chain.is.present"), |
204 | EDGE_ROOT_RULE_CHAIN_IS_PRESENT(400168,"当前租户范围内存在另一个边缘模板根规则链!","edge.root.rule.chain.is.present"), | 204 | EDGE_ROOT_RULE_CHAIN_IS_PRESENT(400168,"当前租户范围内存在另一个边缘模板根规则链!","edge.root.rule.chain.is.present"), |
205 | APP_OPENAPI_API_ISNULL(400169,"当前应用不存在可调用api请联系管理员","app.openapi.api.isnull"), | 205 | APP_OPENAPI_API_ISNULL(400169,"当前应用不存在可调用api请联系管理员","app.openapi.api.isnull"), |
206 | - | 206 | + DEVICE_PROFILE_USED_FOR_CENTER(400170,"产品被【%s】组态使用,不能删除!!!","device.profile.used.for.configuration.center"), |
207 | 207 | ||
208 | HAVE_NO_PERMISSION(500002, "没有修改权限", "have.no.permission"), | 208 | HAVE_NO_PERMISSION(500002, "没有修改权限", "have.no.permission"), |
209 | NOT_ALLOWED_ISOLATED_IN_MONOLITH(500003, "【monolith】模式下,不能选择【isolated】类型的租户配置", "not.allowed.isolated.in.monolith"), | 209 | NOT_ALLOWED_ISOLATED_IN_MONOLITH(500003, "【monolith】模式下,不能选择【isolated】类型的租户配置", "not.allowed.isolated.in.monolith"), |
@@ -31,13 +31,11 @@ import org.thingsboard.server.common.data.yunteng.utils.i18n.MessageUtils; | @@ -31,13 +31,11 @@ import org.thingsboard.server.common.data.yunteng.utils.i18n.MessageUtils; | ||
31 | import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; | 31 | import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; |
32 | import org.thingsboard.server.dao.rule.RuleChainService; | 32 | import org.thingsboard.server.dao.rule.RuleChainService; |
33 | import org.thingsboard.server.dao.yunteng.entities.*; | 33 | import org.thingsboard.server.dao.yunteng.entities.*; |
34 | +import org.thingsboard.server.dao.yunteng.mapper.ConfigurationCenterMapper; | ||
34 | import org.thingsboard.server.dao.yunteng.mapper.DeviceMapper; | 35 | import org.thingsboard.server.dao.yunteng.mapper.DeviceMapper; |
35 | import org.thingsboard.server.dao.yunteng.mapper.TkDeviceProfileCategoryMapper; | 36 | import org.thingsboard.server.dao.yunteng.mapper.TkDeviceProfileCategoryMapper; |
36 | import org.thingsboard.server.dao.yunteng.mapper.TkDeviceProfileMapper; | 37 | import org.thingsboard.server.dao.yunteng.mapper.TkDeviceProfileMapper; |
37 | -import org.thingsboard.server.dao.yunteng.service.AbstractTbBaseService; | ||
38 | -import org.thingsboard.server.dao.yunteng.service.ConvertConfigService; | ||
39 | -import org.thingsboard.server.dao.yunteng.service.SceneLinkageService; | ||
40 | -import org.thingsboard.server.dao.yunteng.service.TkDeviceProfileService; | 38 | +import org.thingsboard.server.dao.yunteng.service.*; |
41 | 39 | ||
42 | import java.time.LocalDateTime; | 40 | import java.time.LocalDateTime; |
43 | import java.util.*; | 41 | import java.util.*; |
@@ -60,6 +58,8 @@ public class TkDeviceProfileServiceImpl | @@ -60,6 +58,8 @@ public class TkDeviceProfileServiceImpl | ||
60 | 58 | ||
61 | private final SceneLinkageService sceneLinkageService; | 59 | private final SceneLinkageService sceneLinkageService; |
62 | 60 | ||
61 | + private final ConfigurationCenterMapper configurationCenterMapper; | ||
62 | + | ||
63 | 63 | ||
64 | 64 | ||
65 | @Override | 65 | @Override |
@@ -313,6 +313,15 @@ public class TkDeviceProfileServiceImpl | @@ -313,6 +313,15 @@ public class TkDeviceProfileServiceImpl | ||
313 | if (count > 0) { | 313 | if (count > 0) { |
314 | throw new TkDataValidationException(MessageUtils.message(ErrorMessage.DEVICE_PROFILE_USED_BY_DEVICE.getI18nCode())); | 314 | throw new TkDataValidationException(MessageUtils.message(ErrorMessage.DEVICE_PROFILE_USED_BY_DEVICE.getI18nCode())); |
315 | } | 315 | } |
316 | + for (String deviceProfileId:ids){ | ||
317 | + //删除检查产品是否被组态使用 | ||
318 | + List<ConfigurationCenterDTO> checkResult = configurationCenterMapper.getConfigurationCenterByDeviceProfileId(deviceProfileId,tenantId); | ||
319 | + if(null != checkResult && !checkResult.isEmpty()){ | ||
320 | + throw new TkDataValidationException(String.format(MessageUtils.message(ErrorMessage. | ||
321 | + DEVICE_PROFILE_USED_FOR_CENTER.getI18nCode()) | ||
322 | + ,checkResult.get(0).getName())); | ||
323 | + } | ||
324 | + } | ||
316 | } | 325 | } |
317 | 326 | ||
318 | @Override | 327 | @Override |
@@ -18,4 +18,13 @@ public interface ConfigurationCenterMapper extends BaseMapper<TkConfigurationCen | @@ -18,4 +18,13 @@ public interface ConfigurationCenterMapper extends BaseMapper<TkConfigurationCen | ||
18 | 18 | ||
19 | List<ConfigurationContentInfoDTO> getConfigurationInfoById( | 19 | List<ConfigurationContentInfoDTO> getConfigurationInfoById( |
20 | @Param("id") String id, @Param("tenantId") String tenantId); | 20 | @Param("id") String id, @Param("tenantId") String tenantId); |
21 | + | ||
22 | + /** | ||
23 | + * 通过产品ID和租户ID查询被哪些组态使用 | ||
24 | + * @param deviceProfileId 产品ID | ||
25 | + * @param tenantId 租户ID | ||
26 | + * @return 组态中心列表 | ||
27 | + */ | ||
28 | + List<ConfigurationCenterDTO> getConfigurationCenterByDeviceProfileId( | ||
29 | + @Param("deviceProfileId") String deviceProfileId, @Param("tenantId") String tenantId); | ||
21 | } | 30 | } |
@@ -40,11 +40,11 @@ | @@ -40,11 +40,11 @@ | ||
40 | 40 | ||
41 | <sql id="columns"> | 41 | <sql id="columns"> |
42 | a.id,a.name,a.platform,a.organization_id,a.thumbnail, a.remark,a.update_time,a.create_time,a.creator,a.tenant_id, | 42 | a.id,a.name,a.platform,a.organization_id,a.thumbnail, a.remark,a.update_time,a.create_time,a.creator,a.tenant_id, |
43 | - a.updater,io.name AS organization_name,a.view_type,a.access_credentials,a.product_and_device,a.template_id | 43 | + a.updater,a.view_type,a.access_credentials,a.product_and_device,a.template_id |
44 | </sql> | 44 | </sql> |
45 | <select id="getConfigurationCenterPage" resultMap="configurationCenterMap"> | 45 | <select id="getConfigurationCenterPage" resultMap="configurationCenterMap"> |
46 | SELECT | 46 | SELECT |
47 | - <include refid="columns"/> | 47 | + <include refid="columns"/>,io.name AS organization_name |
48 | FROM tk_configuration_center a | 48 | FROM tk_configuration_center a |
49 | LEFT JOIN tk_organization io ON io.id = a.organization_id | 49 | LEFT JOIN tk_organization io ON io.id = a.organization_id |
50 | <where> | 50 | <where> |
@@ -74,4 +74,14 @@ | @@ -74,4 +74,14 @@ | ||
74 | tk_configuration_content icct ON icc.id = icct.configuration_id | 74 | tk_configuration_content icct ON icc.id = icct.configuration_id |
75 | WHERE icc.id = #{id} AND icc.tenant_id = #{tenantId} | 75 | WHERE icc.id = #{id} AND icc.tenant_id = #{tenantId} |
76 | </select> | 76 | </select> |
77 | + | ||
78 | + <select id="getConfigurationCenterByDeviceProfileId" resultMap="configurationCenterMap"> | ||
79 | + SELECT | ||
80 | + <include refid="columns"/> | ||
81 | + FROM | ||
82 | + tk_configuration_center a | ||
83 | + WHERE | ||
84 | + a.tenant_id = #{tenantId} | ||
85 | + AND POSITION ( #{deviceProfileId} IN product_and_device ) >0 | ||
86 | + </select> | ||
77 | </mapper> | 87 | </mapper> |