Thingsboard二次开发---3.自动生成实体前后端代码Python脚本

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

前言

对于简单的实体操作,基本代码都是一样的,作者根据前两篇文章介绍的方式,自己编写了一个度量单位实体的代码,并以这个代码为模板编写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()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DiegoRobot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值