zhaoqingang
2025-04-11 e078028f1a8da34f3cc2cb5095b8e103a996f553
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
import uuid
 
from Log import logger
from app.config.const import DEPT_STATUS_DELETE, DEPT_STATUS_ON, DEPT_STATUS_OFF
from app.models import OrganizationModel
from app.models.role_model import RoleModel
 
 
 
async def get_organization_list(db, deptName: str):
    query = db.query(OrganizationModel).filter(OrganizationModel.organization_id == None)
    if deptName:
        query = query.filter(OrganizationModel.name.like('%{}%'.format(deptName)))
    depts = query.order_by(OrganizationModel.seq.desc()).all()
    return {"total": query.count(), "rows":  [dept.to_json() for dept in depts]}
 
 
async def create_dept(db, dept_name, leader, phone, address, status, order_num, roles, groups,parent_id):
    try:
        dept_model = OrganizationModel(id=str(uuid.uuid4()),name=dept_name, address=address,leader=leader,phone=phone,seq=order_num,status=str(status))
        if parent_id:
            dept_model.parent = db.get(OrganizationModel, parent_id)
        if roles:
            dept_model.roles = [db.get(RoleModel, roleId) for roleId in roles]
        # if groups:
        #     dept_model.groups = [db.get(GroupModel, groupId) for groupId in groups]
        db.add(dept_model)
        db.commit()
        db.refresh(dept_model)
    except Exception as e:
        logger.error(e)
        db.rollback()
        return False
    return True
 
 
async def edit_dept_data(db, dept_id, dept_name, leader, phone, address, status, order_num, roles, groups,parent_id):
    try:
        dept_model = db.query(OrganizationModel).filter(OrganizationModel.id == dept_id).first()
        dept_model.name = dept_name
        dept_model.address = address
        dept_model.phone = phone
        dept_model.leader = leader
        # dept_model.status = status
        dept_model.seq = order_num
        # if parent_id:
        #     dept_model.parent = db.get(OrganizationModel, parent_id)
        if roles:
            dept_model.roles = [db.get(RoleModel, roleId) for roleId in roles]
        # if groups:
        #     dept_model.groups = [db.get(GroupModel, groupId) for groupId in groups]
        # db.add(dept_model)
        db.commit()
        db.refresh(dept_model)
    except Exception as e:
        logger.error(e)
        db.rollback()
        return False
    return True
 
 
async def edit_dept_parent(db, dept_id, parent_id, order_num):
    try:
        dept_model = db.query(OrganizationModel).filter(OrganizationModel.id == dept_id).first()
        dept_model.parent = db.get(OrganizationModel, parent_id)
        dept_model.seq = order_num
        db.commit()
        db.refresh(dept_model)
    except Exception as e:
        logger.error(e)
        db.rollback()
        return False
    return True
 
 
async def get_organization_info(db, dept_id: str):
    dept = db.query(OrganizationModel).filter(OrganizationModel.id.__eq__(dept_id)).first()
 
    return {"total": 0, "data":  dept.to_dict()}
 
 
async def delete_organization_info(db, dept_id: str):
    delete_list = []
    dept_list = []
    next_dept_list = []
    base_dept = db.query(OrganizationModel).filter(OrganizationModel.id.__eq__(dept_id)).first()
    dept_list.append(base_dept)
    while dept_list:
        for dept in dept_list:
            delete_list.append(dept.id)
            if dept.roles:
                return "部门:{}已配置角色,不允许删除!".format(dept.name)
            for child_dept in dept.children:
                next_dept_list.append(child_dept)
 
        dept_list = next_dept_list
        next_dept_list = []
 
 
    try:
        db.query(OrganizationModel).filter(OrganizationModel.id.in_(delete_list)).update({"status": DEPT_STATUS_DELETE})
        db.commit()
    except Exception as e:
        logger.error(e)
        db.rollback()
        return '服务异常 !'
    return ""
 
 
async def edit_organization_status(db, dept_id: str, status:str):
    delete_list = []
    dept_list = []
    next_dept_list = []
    base_dept = db.query(OrganizationModel).filter(OrganizationModel.id.__eq__(dept_id)).first()
    if status == DEPT_STATUS_ON:
        print(11)
        print(base_dept.name)
        if base_dept.parent and base_dept.parent.status != DEPT_STATUS_ON:
            return '上级节点状态异常!'
        try:
            base_dept.status=status
            db.commit()
        except Exception as e:
            logger.error(e)
            db.rollback()
            return '服务异常 !'
    else:
        dept_list.append(base_dept)
        while dept_list:
            for dept in dept_list:
                delete_list.append(dept.id)
                if dept.roles:
                    return "部门:{}已配置角色,不允许!".format(dept.name)
                for child_dept in dept.children:
                    next_dept_list.append(child_dept)
 
            dept_list = next_dept_list
            next_dept_list = []
        try:
            db.query(OrganizationModel).filter(OrganizationModel.id.in_(delete_list)).update({"status": DEPT_STATUS_OFF})
            db.commit()
        except Exception as e:
            logger.error(e)
            db.rollback()
            return '服务异常 !'
    return ""