diff --git a/website/db/enterprise_busi_model/enterprise_busi_model.py b/website/db/enterprise_busi_model/enterprise_busi_model.py
index 092a6cd..a9497d9 100644
--- a/website/db/enterprise_busi_model/enterprise_busi_model.py
+++ b/website/db/enterprise_busi_model/enterprise_busi_model.py
@@ -1,16 +1,17 @@
 # -*- coding: utf-8 -*-
-import json
 import copy
+import json
 import logging
-from sqlalchemy.ext.declarative import declarative_base
+from typing import Any, Dict, List, Optional
+
 from sqlalchemy import Column, Integer, String, DateTime, func
-from typing import Any, Dict, List, Optional, Tuple, Union
+from sqlalchemy.ext.declarative import declarative_base
 
-from website.db_mysql import get_session
-from website.util import shortuuid
+from website.db.alg_model import alg_model as DB_alg_model
 from website.db.enterprise_entity.enterprise_entity import EnterpriseEntityRepository
 from website.db.enterprise_node import enterprise_node as DB_Node
-from website.db.alg_model import alg_model as DB_alg_model
+from website.db_mysql import get_session
+from website.util import shortuuid
 
 Base = declarative_base()
 
@@ -66,6 +67,7 @@ class EnterpriseBusiModel(Base):
     def __repr__(self):
         return f"EnterpriseBusiModel(id={self.id}, suid='{self.suid}', name='{self.name}')"
 
+
 class EnterpriseBusiModelNode(Base):
     __tablename__ = 'enterprise_busi_model_node'
 
@@ -77,6 +79,7 @@ class EnterpriseBusiModelNode(Base):
     node_id = Column(Integer)
     node_suid = Column(String(10))
     create_time = Column(DateTime, default=func.current_timestamp())
+
     def __repr__(self):
         return f'<EnterpriseBusiModelNode(id={self.id}, suid={self.suid})>'
 
@@ -84,11 +87,10 @@ class EnterpriseBusiModelNode(Base):
 class EnterpriseBusiModelRepository(object):
 
     def get_by_id(self, id: int) -> Optional[EnterpriseBusiModel]:
-        with get_session() as session:            
+        with get_session() as session:
             model = session.query(EnterpriseBusiModel).filter(EnterpriseBusiModel.id == id).first()
             return model
-        
-    
+
     def insert_busi_model(self, data: Dict):
         entity_suid = EnterpriseEntityRepository().get_entity_suid(data['entity_id'])
         data['suid'] = shortuuid.ShortUUID().random(10)
@@ -104,7 +106,7 @@ class EnterpriseBusiModelRepository(object):
                 'id': base_model_id,
                 'suid': base_model_info.suid,
                 'name': base_model_info.name,
-                })
+            })
         data['base_models'] = json.dumps(base_model)
         new_data = copy.copy(data)
 
@@ -114,7 +116,7 @@ class EnterpriseBusiModelRepository(object):
             session.commit()
 
             return model.id, model.suid
-        
+
     def edit_busi_model(self, data: Dict):
         base_model_ids = [int(model_id) for model_id in data['basemodel_ids'].split(',')]
         base_model_db = DB_alg_model.ModelRepositry()
@@ -124,8 +126,8 @@ class EnterpriseBusiModelRepository(object):
             base_model.append({
                 'id': base_model_id,
                 'suid': base_model_suid
-                })
-            
+            })
+
         data['base_models'] = json.dumps(base_model)
         with get_session() as session:
             try:
@@ -136,13 +138,11 @@ class EnterpriseBusiModelRepository(object):
 
         return
 
-
     def get_busi_model_by_id(self, id: int) -> Optional[EnterpriseBusiModel]:
         with get_session() as session:
             model = session.query(EnterpriseBusiModel).filter(EnterpriseBusiModel.id == id).first()
         return model
-        
-    
+
     def list_enterprise_busi_model(self, entity_id: int, page_no: int, page_size: int) -> Dict[Any, Any]:
         """
         获取企业部署的业务模型列表
@@ -155,9 +155,10 @@ class EnterpriseBusiModelRepository(object):
         Returns:
             dict: 包含总数和数据列表的字典
         """
-        with get_session() as session:            
-            total_count = session.query(func.count(EnterpriseBusiModel.id)).filter(EnterpriseBusiModel.entity_id == entity_id).scalar()
-            
+        with get_session() as session:
+            total_count = session.query(func.count(EnterpriseBusiModel.id)).filter(
+                EnterpriseBusiModel.entity_id == entity_id).scalar()
+
             models = (
                 session.query(
                     EnterpriseBusiModel.id.label("model_id"),
@@ -169,7 +170,7 @@ class EnterpriseBusiModelRepository(object):
                 .limit(page_size)
                 .all()
             )
-        
+
         return {
             "count": total_count,
             "data": [
@@ -182,10 +183,11 @@ class EnterpriseBusiModelRepository(object):
             ]
         }
 
+
 class EnterpriseBusiModelNodeRepository(object):
     # def get_by_id(self, id: int) -> Optional[EnterpriseBusiModelNode]:
     #     return self.db.query(EnterpriseBusiModelNode).filter(EnterpriseBusiModelNode.id == id).first()
-    
+
     def insert_busi_model_nodes(self, data: Dict):
         data['suid'] = shortuuid.ShortUUID().random(10)
         link_node_ids = [int(node_id) for node_id in data['node_ids'].split(',')]
@@ -204,16 +206,21 @@ class EnterpriseBusiModelNodeRepository(object):
                 )
                 session.add(model_node)
                 session.commit()
-            return 
-        
+            return
 
     def get_nodes_by_busi_model(self, busi_model_id: int) -> List[EnterpriseBusiModelNode]:
         with get_session() as session:
-            nodes = session.query(EnterpriseBusiModelNode).filter(EnterpriseBusiModelNode.busi_model_id == busi_model_id).all()
+            nodes = session.query(EnterpriseBusiModelNode).filter(
+                EnterpriseBusiModelNode.busi_model_id == busi_model_id).all()
         return nodes
-    
 
     def delete_by_busi_model_id(self, busi_model_id: int) -> None:
         with get_session() as session:
-            session.query(EnterpriseBusiModelNode).filter(EnterpriseBusiModelNode.busi_model_id == busi_model_id).delete()
-            session.commit()
\ No newline at end of file
+            session.query(EnterpriseBusiModelNode).filter(
+                EnterpriseBusiModelNode.busi_model_id == busi_model_id).delete()
+            session.commit()
+
+    def get_busi_model_by_node_id(self, node_id: int) -> Optional[EnterpriseBusiModelNode]:
+        with get_session() as session:
+            model = session.query(EnterpriseBusiModelNode).filter(EnterpriseBusiModelNode.node_id == node_id).first()
+        return model
diff --git a/website/db/enterprise_busi_model/enterprise_busi_model_node_device.py b/website/db/enterprise_busi_model/enterprise_busi_model_node_device.py
new file mode 100644
index 0000000..14f8216
--- /dev/null
+++ b/website/db/enterprise_busi_model/enterprise_busi_model_node_device.py
@@ -0,0 +1,57 @@
+# -*- coding: utf-8 -*-
+from typing import List
+
+from sqlalchemy import Column, Integer, String, DateTime, func
+from sqlalchemy.ext.declarative import declarative_base
+
+from website.db_mysql import get_session
+
+"""
+CREATE TABLE `enterprise_busi_model_node_device` (
+  `id` int NOT NULL,
+  `suid` varchar(10) DEFAULT NULL,
+  `entity_suid` varchar(10) DEFAULT NULL,
+  `node_id` int DEFAULT NULL,
+  `node_suid` varchar(10) DEFAULT NULL,
+  `busi_model_id` int DEFAULT NULL,
+  `busi_model_suid` varchar(10) DEFAULT NULL,
+  `device_id` int DEFAULT NULL,
+  `device_suid` varchar(10) DEFAULT NULL,
+  `create_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='节点-业务模型-设备关联表';
+"""
+
+Base = declarative_base()
+
+
+class EnterpriseBusiModelNodeDevice(Base):
+    __tablename__ = 'enterprise_busi_model_node_device'
+
+    id = Column(Integer, primary_key=True)
+    suid = Column(String(10))
+    entity_suid = Column(String(10))
+    node_id = Column(Integer)
+    node_suid = Column(String(10))
+    busi_model_id = Column(Integer)
+    busi_model_suid = Column(String(10))
+    device_id = Column(Integer)
+    device_suid = Column(String(10))
+    create_time = Column(DateTime, default=func.current_timestamp(), onupdate=func.current_timestamp())
+
+    def __repr__(self):
+        return f"EnterpriseBusiModelNodeDevice(id={self.id}, suid='{self.suid}')"
+
+
+class EnterpriseBusiModelNodeDeviceRepository(object):
+
+    def insert_record(self, records: List[EnterpriseBusiModelNodeDevice]):
+        with get_session() as session:
+            for record in records:
+                session.add(record)
+            session.commit()
+
+    def batch_insert_record(self, records: List[dict]):
+        with get_session() as session:
+            session.bulk_insert_mappings(EnterpriseBusiModelNodeDevice, records)
+            session.commit()
diff --git a/website/db/enterprise_device/enterprise_device.py b/website/db/enterprise_device/enterprise_device.py
index ceecac6..81cb872 100644
--- a/website/db/enterprise_device/enterprise_device.py
+++ b/website/db/enterprise_device/enterprise_device.py
@@ -171,8 +171,8 @@ class EnterpriseDeviceRepository(object):
                 "total_count": total_count
             }
 
-    def get_device(self, device_id: int) -> dict:
         with get_session() as session:
+    def get_device(self, device_id: int) -> dict:
             try:
                 device = session.query(EnterpriseDevice) \
                     .filter(EnterpriseDevice.id == device_id, EnterpriseDevice.delete != 1) \
@@ -183,6 +183,7 @@ class EnterpriseDeviceRepository(object):
             device_dict = {}
             if device:
                 device_dict = {
+                    "suid": device.suid,
                     "name": device.name,
                     "addr": device.addr,
                     "device_model": device.device_model,
diff --git a/website/db/enterprise_entity/enterprise_entity.py b/website/db/enterprise_entity/enterprise_entity.py
index 09d3b89..e73889e 100644
--- a/website/db/enterprise_entity/enterprise_entity.py
+++ b/website/db/enterprise_entity/enterprise_entity.py
@@ -38,4 +38,6 @@ class EnterpriseEntityRepository(object):
                 {"id": entity_id})
             entity = to_json(res)
 
-            return entity["suid"] if entity else ""
\ No newline at end of file
+            return entity["suid"] if entity else ""
+    
+        
\ No newline at end of file
diff --git a/website/db/enterprise_node/enterprise_node.py b/website/db/enterprise_node/enterprise_node.py
index dbab69e..1573735 100644
--- a/website/db/enterprise_node/enterprise_node.py
+++ b/website/db/enterprise_node/enterprise_node.py
@@ -127,4 +127,12 @@ class EnterpriseNodeRepository(object):
             param = {"id": node_id}
             res = session.execute(text(sql), param)
             node = to_json(res)
-            return node
\ No newline at end of file
+            return node
+        
+    def get_entity_suid_by_node_id(self, node_id: int) -> dict | None:
+        with get_session() as session:
+            res = session.execute(text("select entity_suid from enterprise_node where id=:id"), 
+                {"id": node_id})
+            entity = to_json(res)
+        
+        return entity if entity else None
\ No newline at end of file
diff --git a/website/handlers/enterprise_busi_model/handler.py b/website/handlers/enterprise_busi_model/handler.py
index df865d1..72d2083 100644
--- a/website/handlers/enterprise_busi_model/handler.py
+++ b/website/handlers/enterprise_busi_model/handler.py
@@ -136,7 +136,7 @@ class InfoHandler(APIHandler):
         if not busimodel_id:
             raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数错误")
     
-        db_busimodel = DB_BusiModel.EnterpriseBusiModelRepository()
+        db_busimodel = DB_BusiModel.EnterpriseBusiModelRepository() 
         busi_model_data = db_busimodel.get_busi_model_by_id(busimodel_id)
 
         if not busi_model_data:
diff --git a/website/handlers/enterprise_device/handler.py b/website/handlers/enterprise_device/handler.py
index d259441..2bf4076 100644
--- a/website/handlers/enterprise_device/handler.py
+++ b/website/handlers/enterprise_device/handler.py
@@ -29,11 +29,9 @@ class DeviceClassificationAddHandler(APIHandler):
             cur = conn.execute(
                 text("SELECT id FROM device_classification WHERE name=:name"), {"name": name}
             )
-            ex = cur.fetchone()
-            logging.info("##############################")
-            logging.info(ex)
-            logging.info("##############################")
-            if ex:
+            row = cur.fetchone()
+
+            if row:
                 raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, '设备分类已存在')
 
             conn.execute(
@@ -283,3 +281,7 @@ class DeviceInfoHandler(APIHandler):
         logging.info(device)
         self.finish(device)
 
+
+
+
+
diff --git a/website/handlers/enterprise_device/url.py b/website/handlers/enterprise_device/url.py
index 0bad0b5..3ce2eeb 100644
--- a/website/handlers/enterprise_device/url.py
+++ b/website/handlers/enterprise_device/url.py
@@ -13,7 +13,6 @@ handlers = [
     ("/enterprise/entity/nodes/device/delete", handler.DeviceDeleteHandler),
     ("/enterprise/entity/nodes/device/list", handler.DeviceListHandler),
     ("/enterprise/entity/nodes/device/info", handler.DeviceInfoHandler),
-
 ]
 page_handlers = [
 
diff --git a/website/handlers/enterprise_node/handler.py b/website/handlers/enterprise_node/handler.py
index 6508481..1a67844 100644
--- a/website/handlers/enterprise_node/handler.py
+++ b/website/handlers/enterprise_node/handler.py
@@ -4,6 +4,9 @@ from website import errors
 from website.handler import APIHandler, authenticated
 from website.db.enterprise_entity import enterprise_entity as DB_Entity
 from website.db.enterprise_node import enterprise_node as DB_Node
+from website.db.enterprise_busi_model import enterprise_busi_model as DB_BusiModel
+from website.db.enterprise_busi_model import enterprise_busi_model_node_device as DB_BusiModelNodeDevice
+from website.db.enterprise_device import enterprise_device as DB_Device
 from website.util import shortuuid
 
 
@@ -196,3 +199,105 @@ class DeleteHandler(APIHandler):
         db_node = DB_Node.EnterpriseNodeRepository()
         db_node.delete_node(node_id)
         self.finish()
+
+
+class BusimodelHandler(APIHandler):
+    """
+    - 描述:企业节点,业务模型部署
+    - 请求方式:post
+    - 请求参数:
+    > - pageNo
+    > - pageSize
+    > - node_id, int, 节点id
+    - 返回值:
+    ```
+        {
+            "count": 123,
+            "data": [
+                {
+                    "busi_model_id": 123,   # 业务模型id
+                    "busi_model_name": "xxx", # 业务模型name
+                    "deployed": 0,            # 是否部署
+                    "create_time": "xxx"      # 创建时间
+                },
+                ...
+            ]
+        }
+    ```
+    """
+    @authenticated
+    def post(self):
+        node_id = self.get_int_argument('node_id')
+        pageNo = self.get_int_argument('pageNo', 1)
+        pageSize = self.get_int_argument('pageSize', 20)
+        if not node_id:
+            raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, '企业节点不能为空')
+        db_node = DB_Node.EnterpriseNodeRepository()
+        busi_models = db_node.select_busi_model(node_id, pageNo, pageSize)
+        self.finish({
+            'data': busi_models,
+            'count': len(busi_models)
+            })
+
+
+class BusimodelInfoHandler(APIHandler):
+    """
+    """
+    @authenticated
+    def post(self):
+        self.finish()
+
+
+class BusimodelDeployHandler(APIHandler):
+    """
+    - 描述:企业节点,节点信息 -> 业务模型部署 -> 业务模型配置
+    - 请求方式:post
+    - 请求参数:
+    > - node_id, int, 节点id
+    > - busi_model_id, int,业务模型id
+    > - device_ids, string, 设备id, 多个id逗号分割
+    - 返回值:无
+    """
+    @authenticated
+    def post(self):
+        node_id = self.get_int_argument('node_id')
+        busi_model_id = self.get_int_argument('busi_model_id')
+        device_ids = self.get_escaped_argument('device_ids', '')
+        if not node_id or not busi_model_id:
+            raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, '参数错误')
+        db_node = DB_Node.EnterpriseNodeRepository()
+        node = db_node.get_node_by_id(node_id)
+        if not node:
+            raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, '节点不存在')
+        node_suid = node["suid"]
+
+        db_busi_model = DB_BusiModel.EnterpriseBusiModelRepository()
+        busi_model = db_busi_model.get_busi_model_by_id(busi_model_id)
+        busi_model_suid = busi_model.suid
+
+        entity_suid_row = db_node.get_entity_suid_by_node_id(node_id)
+        if not entity_suid_row:
+            raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, '企业节点不存在')
+        
+        records = []
+
+
+        records = []
+        for device_id in device_ids.split(','):
+            device = DB_Device.EnterpriseDeviceRepository().get_device(int(device_id))
+            if not device:
+                raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, '设备不存在')
+                
+            records.append({
+                "suid": shortuuid.ShortUUID.random(length=10),
+                "entity_suid": entity_suid_row["entity_suid"],
+                "node_id": node_id,
+                "node_suid": node_suid,
+                "busi_model_id": busi_model_id,
+                "busi_model_suid": busi_model_suid,
+                "device_id": int(device_id),
+                "device_suid": device["suid"]
+            })
+        DB_BusiModelNodeDevice.EnterpriseBusiModelNodeDeviceRepository().batch_insert_record(records)
+        
+        self.finish()
\ No newline at end of file
diff --git a/website/handlers/enterprise_node/url.py b/website/handlers/enterprise_node/url.py
index 78b7015..f206a37 100644
--- a/website/handlers/enterprise_node/url.py
+++ b/website/handlers/enterprise_node/url.py
@@ -7,6 +7,11 @@ handlers = [
     ('/enterprise/entity/nodes', handler.TreeHandler),
     ('/enterprise/entity/nodes/info', handler.InfoHandler),
     ('/enterprise/entity/nodes/delete', handler.DeleteHandler),
+
+    ("/enterprise/entity/nodes/busimodel", handler.BusimodelHandler),
+    ("/enterprise/entity/nodes/busimodel/info", handler.BusimodelInfoHandler),
+    ("/enterprise/entity/nodes/busimodel/deploy", handler.BusimodelDeployHandler),
+
 ]
 
 page_handlers = [