lyg
2025-04-08 1e85c429ceaad860aba16d1f518160d263c094c0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import uuid
from datetime import datetime
 
from sqlalchemy.orm import sessionmaker, scoped_session
 
from db.models import engine, TProject, TDevice, TDataStream, TDevStream
 
from hashlib import md5
 
# 创建一个会话工厂
session_factory = sessionmaker(bind=engine)
# 创建一个会话对象
Session = scoped_session(session_factory)
session = Session()
 
 
def get_pk():
    n = uuid.uuid4().hex
    pk = md5(n.encode('utf-8')).hexdigest()
    return pk
 
 
def create_project(sat_id, sat_name, proj_code, proj_name, desc, date_time, ) -> TProject:
    """
    创建project
    :param sat_id:
    :param sat_name: 
    :param proj_code: 
    :param proj_name:
    :param desc:
    :param date_time:
    :return: 创建完成的project
    """
    project = TProject(C_PROJECT_PK=get_pk(), C_SAT_ID=sat_id, C_SAT_NAME=sat_name, C_PROJECT_CODE=proj_code,
                       C_DESCRIPTION=desc, C_HASH=uuid.uuid4().int & 0xffffffff, C_PROJECT_NAME=proj_name,
                       C_DATETIME=date_time,
                       C_CREATEOR='')
    session.add(project)
    session.commit()
    return project
 
 
def create_device(device_id, device_name, device_type, dll, project_pk):
    """
    创建device
    :param device_id:
    :param device_name:
    :param device_type:
    :param dll:
    :param project_pk:
    :return:
    """
    device = TDevice(C_DEV_PK=get_pk(), C_DEV_ID=device_id, C_DEV_NAME=device_name, C_DEV_TYPE=device_type, C_DLL=dll,
                     C_PROJECT_PK=project_pk)
    session.add(device)
    session.commit()
    return device
 
 
def create_data_stream(proj_pk, dev_pk, name, code, data_ty, direct, rule_id, rule_ty):
    """
    创建data_stream
    :param proj_pk:
    :param dev_pk:
    :param name:
    :param code:
    :param data_ty:
    :param direct:
    :param rule_id:
    :param rule_ty:
    :return:
    """
    ds = TDataStream(C_STREAM_PK=get_pk(),
                     C_PROJECT_PK=proj_pk,
                     C_STREAM_ID=code,
                     C_DATA_TYPE=data_ty,
                     C_STREAM_DIR=direct,
                     C_NAME=name,
                     C_DESCRIPTION='',
                     C_RULE_ID=rule_id,
                     C_RULE_TYPE=rule_ty)
    session.add(ds)
    link = TDevStream(C_PK=get_pk(), C_DEV_PK=dev_pk, C_STREAM_PK=ds.C_STREAM_PK, C_PROJECT_PK=proj_pk)
    session.add(link)
    session.commit()
    return ds