diff --git a/apps/client/views.py b/apps/client/views.py index 0996940..1157eb3 100644 --- a/apps/client/views.py +++ b/apps/client/views.py @@ -3,21 +3,22 @@ ''' @Date:2022/07/29 09:03:39 ''' -from pydoc import pager from flask import Blueprint, jsonify, request +from sqlalchemy import and_ from Common.Utils import Utils, PageParam from Common.auth import token_auth from db_logic.client import BllClient from db_logic.client_cell import BllClientCell from db_logic.client_cell_user import BllClientCellUser +from db_logic.client_user import BllClientUser from db_logic.medicament_record import BllMedicamentRecord from db_logic.medicament_template import BllMedicamentTemplate from db_logic.meidcament_variety import BllMedicamentVariety from db_logic.humiture_record import BllHumitureRecord from db_logic.medicament import BllMedicament -from models.client_models import EntityClient +from models.client_models import EntityClient, EntityClientCell, EntityClientCellUser from models.medicament_models import EntityMedicament, EntityMedicamentRecord, EntityMedicamentTemplate, EntityMedicamentVariety from models.humiture_models import EntityHumitureRecord @@ -49,11 +50,11 @@ def getclient_list(): # 新增and编辑 -@client_router.route("/add_or_update", methods=["GET", "POST"]) +@client_router.route("/add_or_update", methods=["POST"]) @token_auth.login_required def client_add_update(): finds = [ - "client_title", "client_code", "client_type", "place", "filter_production_date", + "client_title", "client_name", "client_code", "client_type", "place", "filter_production_date", "filter_shelf_life_warning_value", "contact_people_name", "contact_phone", "description" ] client_id = request.values.get("client_id") @@ -82,7 +83,7 @@ def client_add_update(): return jsonify(Utils.true_return(msg="添加成功")) # 锁定或解锁柜体 -@client_router.route("/update_status", methods=["GET", "POST"]) +@client_router.route("/update_status", methods=["POST"]) @token_auth.login_required def update_status(): status_type = request.values.get("status_type") @@ -97,8 +98,8 @@ def update_status(): return jsonify(Utils.false_return("柜体不存在")) # 删除柜体 -@client_router.route("/del", methods=["GET", "POST"]) -# @token_auth.login_required +@client_router.route("/del", methods=["POST"]) +@token_auth.login_required def client_del(): client_id = request.values.get("client_id") drug_obj = BllMedicament().findEntity(EntityMedicament.client_id == client_id) @@ -120,7 +121,8 @@ def client_del(): # 清空指定柜体需删除 # rms_medicament_template,rms_medicament_record,rms_medicament, rms_humiture_record -@client_router.route("/client_empty", methods=["GET", "POST"]) +@client_router.route("/client_empty", methods=["POST"]) +@token_auth.login_required def client_empty(): client_id = request.values.get("client_id") if client_id: @@ -133,19 +135,127 @@ def client_empty(): return jsonify(Utils.true_return()) +# 获取柜子是否有抽屉 +@client_router.route("/get_client_drawer", methods=["POST"]) +@token_auth.login_required +def get_client_drawer(): + client_id = request.values.get("client_id") + data_list = BllClientCell().findList(EntityClientCell.client_id==client_id).all() + print(data_list) + if data_list: + return jsonify(Utils.true_return(data=data_list)) + else: + return jsonify(Utils.false_return(msg="该柜体没有柜子")) + # 分配抽屉权限展示 -@client_router.route("/get_drawer_power", methods=["GET", "POST"]) +@client_router.route("/get_drawer_power", methods=["POST"]) +@token_auth.login_required def get_client_drawer_power(): drawer_id = request.values.get("drawer_id") + client_id = request.values.get("client_id") page = request.values.get("page", 1) page_size = request.values.get("page_size", 10) page_param = PageParam(int(page), int(page_size)) - data_list = BllClientCell().get_drawer_power_user_list(drawer_id=drawer_id, page_param=page_param) + data_list = BllClientCell().get_drawer_power_user_list( + drawer_id=drawer_id, client_id=client_id, page_param=page_param) return jsonify(Utils.true_return(data={"data_list": Utils.msyql_table_model(data_list), "total_count": page_param.totalRecords})) -# # 分配抽屉权限 -# @client_router.route("/set_drawer_power", methods=["GET", "POST"]) -# def set_client_drawer_power(): -# drawer_id = request.values.get("drawer_id") +# 分配抽屉权限 +@client_router.route("/set_drawer_power", methods=["POST"]) +@token_auth.login_required +def set_client_drawer_power(): + drawer_id = request.values.get("drawer_id") + client_id = request.values.get("client_id") + client_code = request.values.get("client_code") + client_cell_code = request.values.get("client_cell_code") + set_drawer_info = request.values.get("drawer_user_info") + set_drawer_info = eval(set_drawer_info) + cell_user_obj = BllClientCellUser() + # 获取已有权限的用户信息 + user_id_list = list(set_drawer_info.keys()) + obj_list = cell_user_obj.findList( + and_( + EntityClientCellUser.client_id==client_id, + EntityClientCellUser.client_cell_id==drawer_id, + EntityClientCellUser.user_id.in_(user_id_list) + ) + ).all() + #筛选出被删除的用户 + # drawer_del_user_list = [] + # obj_list = Utils.msyql_table_model(obj_list) + for i in obj_list: + user_drawer = set_drawer_info.get(i.user_id) + if str(user_drawer) == "0": + cell_user_obj.session.delete(i) + set_drawer_info.pop(i.user_id) + cell_user_obj.session.commit() + # 筛选出需要添加的用户 + drawer_add_user_list = [] + for k,v in set_drawer_info.items(): + if str(v) == "1": + drawer_add_user_list.append(k) + # # 按条件删除 + # for i in drawer_del_user_list: + # cell_user_obj.session.delete(i) + # cell_user_obj.session.commit() + # 按条件添加 + inster_add_list = [] + print(drawer_id, client_cell_code, client_code, client_id) + for i in drawer_add_user_list: + obj = EntityClientCellUser( + client_cell_id=drawer_id, + client_cell_code=client_cell_code, + client_code=client_code, + client_id=client_id, + user_id=i + ) + inster_add_list.append(obj) + cell_user_obj.insert_many(inster_add_list) + + return jsonify(Utils.true_return()) + +################################# +##验证通过后需要添加至试剂领用处。## +################################# +# 分配禁用用户 +@client_router.route("/user_ban_list", methods=["POST"]) +@token_auth.login_required +def client_ban_user_list(): + seach_user = request.values.get("seach_user") + client_id = request.values.get("client_id") + page = int(request.values.get("page", 1)) + page_size = int(request.values.get("page_size", 10)) + page_param = PageParam(page, page_size) + data_list = BllClientUser().get_band_user_list( + seach_user=seach_user, page_param=page_param, + client_id=client_id + ) + return jsonify(Utils.true_return(data={"data": Utils.msyql_table_model(data_list), "total_count": page_param.totalRecords})) + + +# 确认禁用 +@client_router.route("/user_ban_confirm", methods=["POST"]) +@token_auth.login_required +def client_ban_user_confirm(): + user_id = request.values.get("user_id") + client_id = request.values.get("client_id") + data = BllClientUser().inster_user_client(user_id, client_id) + if data: + return jsonify(Utils.true_return()) + else: + return jsonify(Utils.false_return()) + +# 取消禁用试剂 +@client_router.route("/user_ban_relieve", methods=["POST"]) +@token_auth.login_required +def client_user_ban_relieve(): + user_id = request.values.get("user_id") + client_id = request.values.get("client_id") + data = BllClientUser().del_user_ban_client( + user_id=user_id, client_id=client_id) + if data: + return jsonify(Utils.true_return(msg="删除成功")) + else: + return jsonify(Utils.false_return(msg="删除失败")) diff --git a/db_logic/client_cell.py b/db_logic/client_cell.py index 92c1f9f..bcec270 100644 --- a/db_logic/client_cell.py +++ b/db_logic/client_cell.py @@ -16,12 +16,12 @@ class BllClientCell(Repository): super().__init__(entityType) # 展示抽屉权限用户 - def get_drawer_power_user_list(self, drawer_id, page_param): + def get_drawer_power_user_list(self, drawer_id, client_id, page_param): sql_all = f""" - select a.real_name, a.user_id, + select a.real_name, a.user_id,a.user_code, CASE WHEN b.id is not null THEN 1 ELSE 0 END drawer_type from rms_user as a LEFT JOIN ( - select * from rms_client_cell_user where client_cell_id='{drawer_id}' + select * from rms_client_cell_user where client_cell_id='{drawer_id}' and client_id='{client_id}' ) as b on a.user_id=b.user_id """ try: @@ -30,4 +30,23 @@ class BllClientCell(Repository): count_number = 0 page_param.totalRecords = count_number page_sql = Utils.sql_paging_assemble(sql_all, page_param) - return self.execute(page_sql).fetchall() \ No newline at end of file + return self.execute(page_sql).fetchall() + + # 插入测试数据 + def inster_test_data(self): + client_id = '1c39cb24-07f8-11ed-abd4-f47b094925e1' + obj_list = [] + for i in range(1,9): + obj_list.append( + EntityClientCell( + cell_code=i, + client_id=client_id, + cell_speci=i + + ) + ) + self.insert_many(obj_list) + + +if __name__ == '__main__': + BllClientCell().inster_test_data() \ No newline at end of file diff --git a/db_logic/client_user.py b/db_logic/client_user.py index 608a48c..36b2a79 100644 --- a/db_logic/client_user.py +++ b/db_logic/client_user.py @@ -4,15 +4,16 @@ @Date:2022/07/18 16:34:13 ''' from sqlalchemy import and_ +from Common.Utils import Utils from db_logic.db_base import Repository -from models.client_models import EntityClient, EntityClientUser +from models.client_models import EntityClientUser, EntityClientUser #用户操作业务逻辑类 class BllClientUser(Repository): - def __init__(self, entityType=EntityClient): - return super().__init__(entityType) + def __init__(self, entityType=EntityClientUser): + super().__init__(entityType) def isJInZhiUser(self, userId, clientId): entity = self.findEntity( @@ -21,3 +22,48 @@ class BllClientUser(Repository): return False else: return True + + def get_band_user_list(self, seach_user, client_id, page_param): + filter_base = "" + if seach_user: + filter_base += f" real_name like '%{seach_user}%' " + if filter_base: + filter_base = f" where {filter_base} " + sql_all = f""" + SELECT a.user_id, a.real_name, a.role_name, a.avatar_url, + CASE WHEN b.client_user_id is not null THEN 1 else 0 END status_type + from (select * from rms_user {filter_base}) as a LEFT JOIN( + select * from rms_client_user where client_id='{client_id}' + )as b on a.user_id=b.user_id + """ + try: + count_number = len(self.execute(sql_all).fetchall()) + except Exception: + count_number = 0 + page_param.totalRecords=count_number + page_sql = Utils.sql_paging_assemble(sql_all, page_param) + return self.execute(page_sql).fetchall() + + def inster_user_client(self, user_id, client_id): + try: + self.insert( + EntityClientUser( + client_id=client_id, + user_id=user_id + ) + ) + return True + except Exception: + return False + + def del_user_ban_client(self, user_id, client_id): + try: + self.delete( + and_( + EntityClientUser.user_id==user_id, + EntityClientUser.client_id== client_id + ) + ) + return True + except Exception: + return False \ No newline at end of file diff --git a/models/client_models.py b/models/client_models.py index b196c05..a54ed21 100644 --- a/models/client_models.py +++ b/models/client_models.py @@ -109,7 +109,7 @@ class EntityClientCell(Base): ) id = Column(String(50), primary_key=True, comment="ID", default=get_uuid) cell_code = Column(String(50), comment="抽屉码") - client_id = Column(Integer, comment="终端id") + client_id = Column(String(50), comment="终端id") cell_speci = Column(String(50), comment="单元格") diff --git a/models/medicament_models.py b/models/medicament_models.py index fbada46..b7edb28 100644 --- a/models/medicament_models.py +++ b/models/medicament_models.py @@ -59,7 +59,7 @@ class EntityMedicament(Base): flow_position_code = Column(String(50), comment="试剂所在柜层位置信息") cell_position_code = Column(String(50), comment="试剂所在抽屉位置信息") place = Column(String(50), comment="位置") - status = Column(Integer, comment="当前状态(1:在库2:出库3:空瓶)") + status = Column(Integer, comment="当前状态(1:在库2:出库3:空瓶)", default=1) is_supervise = Column(Integer, comment="是否监管", default=0) by_user_date = Column(String(50), comment="最后使用日期") by_user_id = Column(String(50), comment="最后使用人ID")