You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

225 lines
8.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@Date:2022/07/19 17:12:23
'''
from flask import jsonify, request
from Common.Utils import PageParam, Utils
from config.SystemConfig import SystemConfig
from db_logic.medicament_record import BllMedicamentRecord
from db_logic.medicament import BllMedicament
from flask import Blueprint
report_router = Blueprint("report", __name__)
# 获取报表统计页面展示
# @report_router.route('/report_home', methods=["GET", "POST"])
# def report_home_info():
# # 试剂使用统计
# data_list = BllMedicamentRecord().get_drug_record_count()
# return jsonify(Utils.true_return(data=data_list))
# # 消耗统计
# @report_router.route("/drug_stock_use_classify", methods=["GET", "POST"])
# def get_drug_stock_use_classify():
# data_list, total_number = BllMedicament().get_drug_stock_use_classify()
# return jsonify(Utils.true_return(data={"total_count":total_number, "data":data_list}))
# # 试剂用量消耗
# @report_router.route("/drug_use_classify", methods=["GET", "POST"])
# def get_drug_use_classify():
# data_list = BllMedicamentRecord().report_home_drug_useing_classify()
# return jsonify(Utils.true_return(data=data_list))
# # 用户试剂消耗
# @report_router.route("/drug_user_use_info", methods=["GET", "POST"])
# def get_drug_user_use_number():
# data_list = BllMedicamentRecord().report_home_user_use_info()
# return jsonify(Utils.true_return(data=data_list))
# 报表统计主页
@report_router.route("/report_home", methods=["GET", "POST"])
def report_home_show():
resp_data = {
"drug_use_type_data": "",
"drug_stock_expend": {"count_number":0, "data":""},
"drug_use_expend":"",
"user_use_expend": ""
}
try:
obj_data = BllMedicamentRecord()
# 试剂使用统计
drug_use_type_data = obj_data.get_drug_record_count()
# 消耗统计部分
drug_stock_expend, num_all = BllMedicament().get_drug_stock_use_classify()
# 试剂用量消耗
drug_use_expend = obj_data.report_home_drug_useing_classify()
# 用户试剂消耗
user_use_expend = obj_data.report_home_user_use_info()
resp_data["drug_use_type_data"] = drug_use_type_data
resp_data["drug_stock_expend"] = {
"count_number": num_all,
"data": drug_stock_expend
}
resp_data["drug_use_expend"] = drug_use_expend
resp_data["user_use_expend"] = user_use_expend
return jsonify(Utils.true_return(data=resp_data))
except Exception as error:
return jsonify(Utils.except_return(msg=f"error:{error}", data=resp_data))
# 库存信息总览
@report_router.route("/stock_data_info", methods=["GET", "POST"])
def get_stock_data_info():
name = request.values.get("name", None)
page = int(request.values.get('page', 1))
page_size = int(request.values.get('page_size', 15))
page_param = PageParam(page, page_size)
data_list = BllMedicament().get_stock_all_info(
name=name,
page_param=page_param)
data_list = Utils.msyql_table_model(data_list)
if data_list:
return jsonify(Utils.true_return(data={"total_count": page_param.totalRecords, "data": data_list}))
else:
return jsonify(Utils.false_return(msg="无效数据"))
# 入库信息查询and 试剂信息查询
@report_router.route("/drug_details_info", methods=["GET", "POST"])
def drun_input_info():
# 获取参数
seach_word = request.values.get('seach_word')
manufacturer = request.values.get("manufacturer")
start_time = request.values.get("start_time")
end_time = request.values.get("end_time")
# 客户id
customer_id = None
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 = BllMedicament().getAllDrugList(
search_word=seach_word,
manufacturer=manufacturer,
start_time=start_time,
end_time=end_time,
page_param=page_param,
customer_id=customer_id,
client_id=client_id
)
# 数据处理列表keyvalue格式
data_list = Utils.msyql_table_model(data)
return jsonify(Utils.true_return(data={"total_count": page_param.totalRecords, "data": data_list}))
# 库存消耗
# 试剂名称、纯度、cas码 查询rms_medicament 分组后获取
@report_router.route("/stock_loss_info", methods=["GET", "POST"])
def stock_loss_info():
# 获取参数
seach_word = request.values.get('seach_word')
start_time = request.values.get('start_time')
end_time = request.values.get('end_time')
page = int(request.values.get("page", 1))
page_size = int(request.values.get("page_size", 10))
page_param = PageParam(page, page_size)
# 获取数据结果
data = BllMedicamentRecord().durg_stock_loss(
seach_word=seach_word,
start_time=start_time,
end_time=end_time,
page_param=page_param)
return jsonify(Utils.true_return(data={"total_count": page_param.totalRecords, "data": data}))
# 试剂用量消耗
@report_router.route("/drug_use_expend", methods=["GET", "POST"])
def get_drug_use_expend():
# 参数获取
seach_word = request.values.get('seach_word')
start_time = request.values.get('start_time')
end_time = request.values.get('end_time')
page = int(request.values.get("page", 1))
page_size = int(request.values.get("page_size", 10))
page_param = PageParam(page, page_size)
# 获取数据
data = BllMedicamentRecord().durg_useing_info(
seach_word=seach_word,
start_time=start_time,
end_time=end_time,
page_param=page_param)
return jsonify(Utils.true_return(data={"total_count": page_param.totalRecords, "data": data}))
# 人员用量消耗
@report_router.route("/drug_user_use_expend", methods=["GET", "POST"])
def get_drug_user_use_expend():
# 参数获取
seach_user = request.values.get('seach_user')
start_time = request.values.get('start_time')
end_time = request.values.get('end_time')
page = int(request.values.get("page", 1))
page_size = int(request.values.get("page_size", 10))
page_param = PageParam(page, page_size)
# 获取数据
data = BllMedicamentRecord().user_use_info(
seach_user=seach_user,
start_time=start_time,
end_time=end_time,
page_param=page_param)
return jsonify(Utils.true_return(data={"total_count": page_param.totalRecords, "data": data}))
# 使用频率
@report_router.route("/use_frequency", methods=["GET", "POST"])
def drug_use_frequency():
seach_word = request.values.get('seach_word')
client_id = request.values.get("client_id")
start_time = request.values.get('start_time')
end_time = request.values.get('end_time')
page = int(request.values.get("page", 1))
page_size = int(request.values.get("page_size", 10))
page_param = PageParam(page, page_size)
data = BllMedicamentRecord().use_frequency(
seach_word=seach_word,
start_time=start_time,
end_time=end_time,
client_id=client_id,
page_param=page_param)
return jsonify(Utils.true_return(data={"total_count": page_param.totalRecords, "data": data}))
# 入库、领用、归还记录
@report_router.route("/drug_log_type_info", methods=["GET", "POST"])
def drug_log_type_info():
page = int(request.values.get("page", 1))
page_size = int(request.values.get("page_size", 10))
statue_type = request.values.get("status")
record_type = request.values.get("record_type")
put_in_user_name = request.values.get("user_name")
name = request.values.get("name")
start_time = request.values.get("start_time")
end_time = request.values.get("end_time")
page_param = PageParam(page, page_size)
data_list = BllMedicament().drug_show_type_info(
record_type=record_type, put_in_user_name=put_in_user_name, statue_type=statue_type,
name=name,
start_time=start_time, end_time=end_time,
page_param=page_param
)
data_list = Utils.msyql_table_model(data_list)
return jsonify(Utils.true_return(data={"total_count": page_param.totalRecords, "data": data_list}))