前言
对于简单的实体操作,基本代码都是一样的,作者根据前两篇文章介绍的方式,自己编写了一个度量单位实体的代码,并以这个代码为模板编写python脚本自动生成前后端代码脚本,大大提高了Thingsboard实体开发的效率
python脚本
# base on unit entity
import os
entity_type = 'LOT_ITEM'
# home_path = 'D:\\code\\thingsboard\\'
home_path = 'D:\\projects\\thingsboard\\'
entity_name_high = 'LotItem'
entity_name_low = 'lotItem'
#back
entity_folder_name = 'lotitem'
table_name = 'lotitem'
# front g
front_home = home_path + r'\ui-ngx'
model_folder = front_home +r'\src\app\shared\models'
model_id_folder = model_folder +r'\id'
model_name ='lot-item'
page_folder = front_home + r'\src\app\modules\home\pages'
http_folder = front_home + r'\src\app\core\http'
entity_autocomplete =front_home + r'\src\app\shared\components\entity\entity-autocomplete.component.ts'
def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {
name}') # Press Ctrl+F8 to toggle the breakpoint.
def get_entity_type_file():
return home_path + r'common\data\src\main\java\org\thingsboard\server\common\data\EntityType.java'
def get_resource_file():
return home_path + r'application\src\main\java\org\thingsboard\server\service\security\permission\Resource.java'
def get_entity_id_folder():
return home_path + r'common\data\src\main\java\org\thingsboard\server\common\data\id'
def get_entity_folder():
return home_path + r'common\data\src\main\java\org\thingsboard\server\common\data'
def get_entity_default_tenant_profile_configuration_file():
return home_path + r'common\data\src\main\java\org\thingsboard\server\common\data\tenant\profile\DefaultTenantProfileConfiguration.java'
def get_entity_model_constants_file():
return home_path + r'dao\src\main\java\org\thingsboard\server\dao\model\ModelConstants.java'
def get_entity_dao_service_folder():
return home_path + r'common\dao-api\src\main\java\org\thingsboard\server\dao\unit'
def get_entity_model_folder():
return home_path + r'dao\src\main\java\org\thingsboard\server\dao\model\sql'
def get_entity_repository_folder():
return home_path + r'dao\src\main\java\org\thingsboard\server\dao\sql'
def get_entity_dao_folder():
return home_path + r'dao\src\main\java\org\thingsboard\server\dao'
def get_entity_controller_folder():
return home_path + r'application\src\main\java\org\thingsboard\server\controller'
def get_entity_id_file():
return home_path + r'common\data\src\main\java\org\thingsboard\server\common\data\id\EntityIdFactory.java'
def get_tenant_admin_permissions_file():
return home_path + r'application\src\main\java\org\thingsboard\server\service\security\permission\TenantAdminPermissions.java'
def get_access_validator_file():
return home_path + r'application\src\main\java\org\thingsboard\server\service\security\AccessValidator.java'
def get_base_entity_service_file():
return home_path + r'dao\src\main\java\org\thingsboard\server\dao\entity\BaseEntityService.java'
def replace_str(folder_str, file_str):
lines = []
with open(folder_str + file_str) as f:
for line in f:
# new_line = line
# if line.find('Unit') != -1:
# new_line = line.replace('Unit', entity_name_high)
# lines.append(new_line)
# elif line.find('unit') != -1:
# new_line = line.replace('unit', entity_name_low)
# lines.append(new_line)
# elif line.find('UNIT') != -1:
# new_line = line.replace('UNIT', entity_type)
# lines.append(new_line)
# else:
# lines.append(line)
new_line = line.replace('Unit', entity_name_high).replace('unit', entity_name_low).replace('UNIT',
entity_type)
lines.append(new_line)
return lines
def g_file(lines, file_str):
with open(file_str, 'w') as f:
for n in lines:
f.write(n)
def g_foler(path):
isExists = os.path.exists(path)
if not isExists:
os.makedirs(path)
return True
else:
return False
def m_entity_type():
lines = []
with open(get_entity_type_file(), 'r') as f:
for line in f:
if line.find('NULL_ENTITY,') == -1:
lines.append(line)
else:
lines.append(line + entity_type + ',')
with open(get_entity_type_file(), 'w') as f:
for n in lines:
f.write(n)
def m_resource():
lines = []
with open(get_resource_file(), 'r') as f:
for line in f:
if line.find('// g-code') != -1:
lines.append(line)
lines.append(' ' + entity_type + '(EntityType.' + entity_type + '),\n')
else:
lines.append(line)
with open(get_resource_file(), 'w') as f:
for n in lines:
f.write(n)
def g_entity_id():
lines = replace_str(get_entity_id_folder(), r'\UnitId.java')
g_file(lines, get_entity_id_folder() + '\\' + entity_name_high + 'Id.java')
def g_entity():
lines = replace_str(get_entity_folder(), r'\Unit.java')
g_file(lines, get_entity_id_folder() + '\\' + entity_name_high + '.java')
def m_default_tenant_profile_configuration()

本文介绍了一种利用Python脚本自动化生成ThingsBoard平台前后端实体代码的方法,该方法显著提升了开发效率,适用于简单的单表实体操作。
最低0.47元/天 解锁文章
1127

被折叠的 条评论
为什么被折叠?



