基于Python+Django實現(xiàn)藥品管理系統(tǒng)
?作者主頁:
?簡介:Java領域優(yōu)質(zhì)創(chuàng)作者、CSDN博客專家? Java項目、簡歷模板、學習資料、面試題庫、技術互助
文末獲取源碼
項目編號:BS-Python-001
技術架構(gòu):Python+Django
前端:Boostrap
開發(fā)工具:IDEA
數(shù)據(jù)庫:sqlite
項目實現(xiàn)的功能:
?? 用戶分三個角色:管理員、倉庫管理員、經(jīng)銷商管理員
主要實現(xiàn)的功能包含:藥品的進銷存操作、客戶管理、供應商管理、經(jīng)營數(shù)據(jù)統(tǒng)計、數(shù)據(jù)導出、系統(tǒng)管理等模塊
具體功能展示如下:

庫存管理



客戶管理


供應商管理


經(jīng)營統(tǒng)計分析

數(shù)據(jù)導出

系統(tǒng)管理


數(shù)據(jù)打印

部分核心代碼:
from datetime import datetimeimport timefrom django.http.response import FileResponsefrom django.shortcuts import render, redirectfrom hnyhms_app.models import *import pandas as pd# 首頁def index(request): ? ?return render(request, 'index.html', context={'flag': True})# 登錄def login(request): ? ?# 用戶登錄信息判斷
? ?if request.method == "POST": ? ? ? ?# 獲取用戶登錄信息
? ? ? ?username = request.POST.get('username')
? ? ? ?userpass = request.POST.get('userpass') ? ? ? ?# 查詢用戶信息
? ? ? ?admin_user = Admin_users.objects.filter(au_account=username, au_pwd=userpass).first() ? ? ? ?if admin_user:
? ? ? ? ? ?rep = redirect('/adminpage')
? ? ? ? ? ?rep.set_cookie('adminuser', username)
? ? ? ? ? ?rep.set_cookie('au_role', admin_user.au_role) ? ? ? ? ? ?return rep
? ?rep = render(request, 'index.html', context={'flag': False})
? ?rep.delete_cookie("adminuser") ? ?return rep# 退出登錄def outlogin(request):
? ?rep = redirect('/')
? ?rep.delete_cookie("adminuser") ? ?return rep# 管理頁面def admin(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?if adminuser is not None: ? ? ? ?# 登錄用戶信息
? ? ? ?admin_user = Admin_users.objects.get(au_account=adminuser)
? ? ? ?admin_user_name = admin_user.au_name
? ? ? ?admin_user_role = admin_user.au_role ? ? ? ?if admin_user_role == 1: ? ? ? ? ? ?return render(request, 'admin_1.html', context={'admin_user_name': admin_user_name}) ? ? ? ?if admin_user_role == 2: ? ? ? ? ? ?return render(request, 'admin_2.html', context={'admin_user_name': admin_user_name}) ? ? ? ?if admin_user_role == 3: ? ? ? ? ? ?return render(request, 'admin_3.html', context={'admin_user_name': admin_user_name}) ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403) ? ?# 庫存管理def kcpg(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 2): ? ? ? ?# 判斷是否有查詢信息
? ? ? ?if request.GET.get('s') is None or request.GET.get('s') == '': ? ? ? ? ? ?# 返回全部列表
? ? ? ? ? ?medicines_list = Medicines.objects.all().values()
? ? ? ? ? ?customers_suppliers = Customers_suppliers.objects.filter(cs_attitude='供應商').values()
? ? ? ? ? ?warehouse_record = Warehouse_record.objects.all()
? ? ? ? ? ?context = {'medicines': medicines_list, 'customers_suppliers': customers_suppliers, 'warehouse_record': warehouse_record} ? ? ? ? ? ?return render(request, 'funcpage/kcpg.html', context=context) ? ? ? ?# 返回符合查詢內(nèi)容的列表
? ? ? ?medicines_list = Medicines.objects.filter(medicine_name__contains=request.GET.get('s')).values()
? ? ? ?customers_suppliers = Customers_suppliers.objects.filter(cs_attitude='供應商').values()
? ? ? ?warehouse_record = Warehouse_record.objects.all().values()
? ? ? ?context = {'medicines': medicines_list, 'customers_suppliers': customers_suppliers, 'warehouse_record': warehouse_record} ? ? ? ?return render(request, 'funcpage/kcpg.html', context=context) ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 藥品入庫頁面def in_medicine(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 2):
? ? ? ?medicine_id = request.GET.get('id')
? ? ? ?medicine_data = list(Medicines.objects.filter(id=medicine_id).values())[0]
? ? ? ?customers_suppliers = Customers_suppliers.objects.filter(cs_attitude='供應商').values() ? ? ? ?return render(request, 'funcpage/in_medicine.html', context={'medicine_data': medicine_data, 'customers_suppliers': customers_suppliers}) ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 藥品出庫def out_medicine(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 2):
? ? ? ?medicine_id = request.GET.get('id')
? ? ? ?medicine_data = list(Medicines.objects.filter(id=medicine_id).values())[0]
? ? ? ?customers_suppliers = Customers_suppliers.objects.filter(cs_attitude='客戶').values() ? ? ? ?return render(request, 'funcpage/out_medicine.html', context={'medicine_data': medicine_data, 'customers_suppliers': customers_suppliers}) ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 藥品入庫保存def in_medicine_save(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 2):
? ? ? ?medicine = Medicines.objects.filter(id=request.POST.get('id'))
? ? ? ?medicine.update(medicine_quantity = medicine[0].medicine_quantity + float(request.POST.get('medicine_quantity'))) ? ? ? ?# 進貨金額計算
? ? ? ?in_amount = float(request.POST.get('medicine_quantity')) * float(request.POST.get('medicine_purchase')) ? ? ? ?
? ? ? ?# 添加入庫記錄
? ? ? ?warehouse_record = Warehouse_record(wr_in_out = '入庫',
? ? ? ? ? ? ? ? ? ? ? ? ? ?wr_quantity = request.POST.get('medicine_quantity'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?wr_cs_name = request.POST.get('medicine_suppliers'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?wr_admin_name = request.COOKIES.get('adminuser'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?wr_medicine_name = request.POST.get('medicine_name'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?wr_in_out_time = time.strftime("%Y-%m-%d", time.localtime()),
? ? ? ? ? ? ? ? ? ? ? ? ? ?wr_amount = in_amount)
? ? ? ?warehouse_record.save() ? ? ? ?return redirect('/kcpg') ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 藥品出庫保存def out_medicine_save(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 2):
? ? ? ?medicine = Medicines.objects.filter(id=request.POST.get('id')) ? ? ? ?if medicine[0].medicine_quantity >= float(request.POST.get('medicine_quantity')):
? ? ? ? ? ?medicine.update(medicine_quantity = medicine[0].medicine_quantity - float(request.POST.get('medicine_quantity'))) ? ? ? ? ? ?# 出貨金額計算
? ? ? ? ? ?out_amount = float(request.POST.get('medicine_quantity')) * float(request.POST.get('medicine_selling')) ? ? ? ? ? ?
? ? ? ? ? ?# 添加出庫記錄
? ? ? ? ? ?warehouse_record = Warehouse_record(wr_in_out = '出庫',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?wr_quantity = request.POST.get('medicine_quantity'),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?wr_cs_name = request.POST.get('medicine_suppliers'),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?wr_admin_name = request.COOKIES.get('adminuser'),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?wr_medicine_name = request.POST.get('medicine_name'),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?wr_in_out_time = time.strftime("%Y-%m-%d", time.localtime()),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?wr_amount = out_amount)
? ? ? ? ? ?warehouse_record.save() ? ? ? ? ? ?return redirect('/kcpg') ? ? ? ?else: ? ? ? ? ? ?return render(request, 'funcpage/error.html', context={'info': '庫存數(shù)量已不夠出庫,請返回或重新填寫出庫數(shù)量', 'up': '/kcpg'}, status=403) ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 新增藥品保存def add_medicine(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 2): ? ? ? ?# 藥品保存
? ? ? ?medicine = Medicines(medicine_name = request.POST.get('medicine_name'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?medicine_manufacturers = request.POST.get('medicine_manufacturers'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?medicine_trademark = request.POST.get('medicine_trademark'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?medicine_production_address = request.POST.get('medicine_production_address'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?medicine_code = request.POST.get('medicine_code'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?medicine_specification = request.POST.get('medicine_specification'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?medicine_purchase = request.POST.get('medicine_purchase'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?medicine_selling = request.POST.get('medicine_selling'))
? ? ? ?medicine.save() ? ? ? ?return redirect("/kcpg") ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 藥品編輯頁面def edit_medicine_page(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 2):
? ? ? ?medicine_id = request.GET.get('id')
? ? ? ?medicine_data = list(Medicines.objects.filter(id=medicine_id).values())[0] ? ? ? ?return render(request, 'funcpage/edit_medicine.html', context={'medicine_data': medicine_data}) ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 藥品編輯保存def edit_medicine_save(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 2):
? ? ? ?medicine = Medicines.objects.filter(id=request.POST.get('id'))
? ? ? ?medicine.update(medicine_name=request.POST.get('medicine_name'),
? ? ? ? ? ? ? ? ? ? ? ?medicine_manufacturers = request.POST.get('medicine_manufacturers'),
? ? ? ? ? ? ? ? ? ? ? ?medicine_trademark = request.POST.get('medicine_trademark'),
? ? ? ? ? ? ? ? ? ? ? ?medicine_production_address = request.POST.get('medicine_production_address'),
? ? ? ? ? ? ? ? ? ? ? ?medicine_code = request.POST.get('medicine_code'),
? ? ? ? ? ? ? ? ? ? ? ?medicine_specification = request.POST.get('medicine_specification'),
? ? ? ? ? ? ? ? ? ? ? ?medicine_purchase = request.POST.get('medicine_purchase'),
? ? ? ? ? ? ? ? ? ? ? ?medicine_selling = request.POST.get('medicine_selling')) ? ? ? ?return redirect('/kcpg') ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 刪除庫存def del_medicine(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 2):
? ? ? ?medicine = Medicines.objects.get(id = request.GET.get('id'))
? ? ? ?medicine.delete() ? ? ? ?return redirect("/kcpg") ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 客戶管理def khpg(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 3): ? ? ? ?# 判斷是否有查詢信息
? ? ? ?if request.GET.get('s') is None or request.GET.get('s') == '':
? ? ? ? ? ?customers_suppliers = Customers_suppliers.objects.filter(
? ? ? ? ? ?cs_attitude='客戶').values()
? ? ? ? ? ?context = {'customers_suppliers': customers_suppliers} ? ? ? ? ? ?return render(request, 'funcpage/khpg.html', context=context) ? ? ? ?# 返回符合查詢內(nèi)容的列表
? ? ? ?customers_suppliers = Customers_suppliers.objects.filter(cs_unit__contains = request.GET.get('s')).values()
? ? ? ?context = {'customers_suppliers': customers_suppliers} ? ? ? ?return render(request, 'funcpage/khpg.html', context=context) ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 新增客戶def add_customers(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 3):
? ? ? ?customers = Customers_suppliers(cs_attitude = request.POST.get('cs_attitude'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?cs_postCode = request.POST.get('cs_postCode'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?cs_address = request.POST.get('cs_address'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?cs_tel = request.POST.get('cs_tel'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?cs_unit = request.POST.get('cs_unit'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?cs_name = request.POST.get('cs_name'))
? ? ? ?customers.save() ? ? ? ?return redirect("/khpg") ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 客戶編輯頁面def edit_customers_page(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 3):
? ? ? ?customers_id = request.GET.get('id')
? ? ? ?customers_data = list(Customers_suppliers.objects.filter(id=customers_id).values())[0] ? ? ? ?return render(request, 'funcpage/edit_customers.html', context=customers_data) ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 客戶編輯保存def edit_customers_save(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 3):
? ? ? ?medicine = Customers_suppliers.objects.filter(id=request.POST.get('id'))
? ? ? ?medicine.update(cs_postCode=request.POST.get('cs_postCode'),
? ? ? ? ? ? ? ? ? ? ? ?cs_address = request.POST.get('cs_address'),
? ? ? ? ? ? ? ? ? ? ? ?cs_tel = request.POST.get('cs_tel'),
? ? ? ? ? ? ? ? ? ? ? ?cs_unit = request.POST.get('cs_unit'),
? ? ? ? ? ? ? ? ? ? ? ?cs_name = request.POST.get('cs_name')) ? ? ? ?return redirect('/khpg') ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 刪除客戶def del_customers(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 3):
? ? ? ?customers_suppliers = Customers_suppliers.objects.get(id = request.GET.get('id'))
? ? ? ?customers_suppliers.delete() ? ? ? ?return redirect("/khpg") ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 供應商管理def gyspg(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 3): ? ? ? ?# 判斷是否有查詢信息
? ? ? ?if request.GET.get('s') is None or request.GET.get('s') == '':
? ? ? ? ? ?customers_suppliers = Customers_suppliers.objects.filter(
? ? ? ? ? ?cs_attitude='供應商').values()
? ? ? ? ? ?context = {'customers_suppliers': customers_suppliers} ? ? ? ? ? ?return render(request, 'funcpage/gyspg.html', context=context) ? ? ? ?# 返回符合查詢內(nèi)容的列表
? ? ? ?customers_suppliers = Customers_suppliers.objects.filter(cs_unit__contains = request.GET.get('s')).values()
? ? ? ?context = {'customers_suppliers': customers_suppliers} ? ? ? ?return render(request, 'funcpage/gyspg.html', context=context) ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 新增供應商def add_suppliers(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 3):
? ? ? ?suppliers = Customers_suppliers(cs_attitude = request.POST.get('cs_attitude'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?cs_postCode = request.POST.get('cs_postCode'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?cs_address = request.POST.get('cs_address'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?cs_tel = request.POST.get('cs_tel'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?cs_unit = request.POST.get('cs_unit'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?cs_name = request.POST.get('cs_name'))
? ? ? ?suppliers.save() ? ? ? ?return redirect("/gyspg") ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 供應商編輯頁面def edit_suppliers_page(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 3):
? ? ? ?suppliers_id = request.GET.get('id')
? ? ? ?suppliers_data = list(Customers_suppliers.objects.filter(id=suppliers_id).values())[0] ? ? ? ?return render(request, 'funcpage/edit_suppliers.html', context=suppliers_data) ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 供應商編輯保存def edit_suppliers_save(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 3):
? ? ? ?suppliers = Customers_suppliers.objects.filter(id=request.POST.get('id'))
? ? ? ?suppliers.update(cs_postCode=request.POST.get('cs_postCode'),
? ? ? ? ? ? ? ? ? ? ? ?cs_address = request.POST.get('cs_address'),
? ? ? ? ? ? ? ? ? ? ? ?cs_tel = request.POST.get('cs_tel'),
? ? ? ? ? ? ? ? ? ? ? ?cs_unit = request.POST.get('cs_unit'),
? ? ? ? ? ? ? ? ? ? ? ?cs_name = request.POST.get('cs_name')) ? ? ? ?return redirect('/gyspg') ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 刪除供應商def del_suppliers(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1 or admin_user_role == 3):
? ? ? ?customers_suppliers = Customers_suppliers.objects.get(id = request.GET.get('id'))
? ? ? ?customers_suppliers.delete() ? ? ? ?return redirect("/gyspg") ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 統(tǒng)計分析def tjpg(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1): ? ? ? ?try: ? ? ? ? ? ?# 年銷售額/成本/占比
? ? ? ? ? ?# 年數(shù)據(jù)
? ? ? ? ? ?year_data = {}
? ? ? ? ? ?now_year = datetime.now().year
? ? ? ? ? ?year_in_warehouse_record = pd.DataFrame(Warehouse_record.objects.filter(wr_in_out = '入庫', wr_in_out_time__year = now_year).values())
? ? ? ? ? ?year_out_warehouse_record = pd.DataFrame(Warehouse_record.objects.filter(wr_in_out = '出庫', wr_in_out_time__year = now_year).values()) ? ? ? ? ? ?# 年收入
? ? ? ? ? ?year_data['year_income'] = sum(year_out_warehouse_record['wr_amount']) ? ? ? ? ? ?# 年支出
? ? ? ? ? ?year_data['year_expenditure'] = sum(year_in_warehouse_record['wr_amount']) ? ? ? ? ? ?# 年利潤
? ? ? ? ? ?year_data['year_profit'] = year_data['year_income'] - year_data['year_expenditure'] ? ? ? ? ? ?# 年盈虧比
? ? ? ? ? ?year_data['year_ratio'] = round((year_data['year_profit'] / year_data['year_expenditure']) * 100, 3) ? ? ? ? ? ?
? ? ? ? ? ?# 月銷售額/成本/占比
? ? ? ? ? ?# 月數(shù)據(jù)
? ? ? ? ? ?month_data = {}
? ? ? ? ? ?now_month = datetime.now().month
? ? ? ? ? ?month_in_warehouse_record = pd.DataFrame(Warehouse_record.objects.filter(wr_in_out = '入庫', wr_in_out_time__month = now_month).values())
? ? ? ? ? ?month_out_warehouse_record = pd.DataFrame(Warehouse_record.objects.filter(wr_in_out = '出庫', wr_in_out_time__month = now_month).values()) ? ? ? ? ? ?# 月收入
? ? ? ? ? ?month_data['month_income'] = sum(month_out_warehouse_record['wr_amount']) ? ? ? ? ? ?# 月支出
? ? ? ? ? ?month_data['month_expenditure'] = sum(month_in_warehouse_record['wr_amount']) ? ? ? ? ? ?# 月利潤
? ? ? ? ? ?month_data['month_profit'] = month_data['month_income'] - month_data['month_expenditure'] ? ? ? ? ? ?# 月盈虧比
? ? ? ? ? ?month_data['month_ratio'] = round((month_data['month_profit'] / month_data['month_expenditure']) * 100, 3) ? ? ? ? ? ?
? ? ? ? ? ?# 藥品排行
? ? ? ? ? ?medicine_ranking = {} ? ? ? ? ? ?# 年藥品排行
? ? ? ? ? ?year_medicine = pd.DataFrame(Warehouse_record.objects.filter(wr_in_out = '出庫', wr_in_out_time__year = now_year).values())
? ? ? ? ? ?year_medicine = year_medicine.sort_values('wr_amount')
? ? ? ? ? ?year_medicine_ranking = year_medicine.groupby(['wr_medicine_name'])['wr_amount'].sum()[::-1]
? ? ? ? ? ?medicine_ranking['year_medicine_ranking'] = year_medicine_ranking.to_dict() ? ? ? ? ? ?
? ? ? ? ? ?# 月藥品排行
? ? ? ? ? ?month_medicine = pd.DataFrame(Warehouse_record.objects.filter(wr_in_out = '出庫', wr_in_out_time__month = now_month).values())
? ? ? ? ? ?month_medicine = month_medicine.sort_values('wr_amount')
? ? ? ? ? ?month_medicine_ranking = month_medicine.groupby(['wr_medicine_name'])['wr_amount'].sum()[::-1]
? ? ? ? ? ?medicine_ranking['month_medicine_ranking'] = month_medicine_ranking.to_dict() ? ? ? ? ? ?# 盈利虧損情況
? ? ? ? ? ?pl = {}
? ? ? ? ? ?pl['year'] = True
? ? ? ? ? ?pl['month'] = True
? ? ? ? ? ?
? ? ? ? ? ?if year_data['year_profit'] < 0:
? ? ? ? ? ? ? ?pl['year'] = False
? ? ? ? ? ? ? ?
? ? ? ? ? ?if month_data['month_profit'] < 0:
? ? ? ? ? ? ? ?pl['month'] = False
? ? ? ? ? ? ? ?
? ? ? ? ? ?context = {'year_data': year_data, 'month_data': month_data, 'medicine_ranking': medicine_ranking, 'pl': pl} ? ? ? ? ? ?return render(request, 'funcpage/tjpg.html', context=context) ? ? ? ?except: ? ? ? ? ? ?return render(request, 'funcpage/error.html', context={'info': '現(xiàn)有出入庫數(shù)據(jù)無法進行統(tǒng)計分析!', 'up': ''}) ? ? ? ?
? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 庫存數(shù)據(jù)下載def down_kc(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1): ? ? ? ?# 生成數(shù)據(jù)文件
? ? ? ?data = pd.DataFrame(Medicines.objects.all().values())
? ? ? ?data.to_excel('hnyhms_app/data_file/kc_data.xls', index=False) ? ? ? ?# 返回文件
? ? ? ?file = open('hnyhms_app/data_file/kc_data.xls', 'rb')
? ? ? ?response = FileResponse(file)
? ? ? ?response['Content-Type'] = 'application/octet-stream'
? ? ? ?response['Content-Disposition'] = 'attachment;filename="kc_data_' + datetime.strftime(datetime.now(),'%Y-%m-%d %H:%M:%S') + '.xls"'
? ? ? ?return response ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限下載文件!', 'up': '/'}) ? ?# 出入庫記錄下載def down_io(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1): ? ? ? ?# 生成數(shù)據(jù)文件
? ? ? ?data = pd.DataFrame(Warehouse_record.objects.all().values())
? ? ? ?data.to_excel('hnyhms_app/data_file/io_data.xls', index=False) ? ? ? ?# 返回文件
? ? ? ?file = open('hnyhms_app/data_file/io_data.xls', 'rb')
? ? ? ?response = FileResponse(file)
? ? ? ?response['Content-Type'] = 'application/octet-stream'
? ? ? ?response['Content-Disposition'] = 'attachment;filename="io_data_' + datetime.strftime(datetime.now(),'%Y-%m-%d %H:%M:%S') + '.xls"'
? ? ? ?return response ? ?
? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限下載文件!', 'up': '/'})# 客戶數(shù)據(jù)下載def down_kh(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1): ? ? ? ?# 生成數(shù)據(jù)文件
? ? ? ?data = pd.DataFrame(Customers_suppliers.objects.filter(cs_attitude='客戶').values())
? ? ? ?data.to_excel('hnyhms_app/data_file/cs_data.xls', index=False) ? ? ? ?# 返回文件
? ? ? ?file = open('hnyhms_app/data_file/cs_data.xls', 'rb')
? ? ? ?response = FileResponse(file)
? ? ? ?response['Content-Type'] = 'application/octet-stream'
? ? ? ?response['Content-Disposition'] = 'attachment;filename="cs_data_' + datetime.strftime(datetime.now(),'%Y-%m-%d %H:%M:%S') + '.xls"'
? ? ? ?return response ? ?
? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限下載文件!', 'up': '/'})# 供應商數(shù)據(jù)下載def down_gys(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1): ? ? ? ?# 生成數(shù)據(jù)文件
? ? ? ?data = pd.DataFrame(Customers_suppliers.objects.filter(cs_attitude='供應商').values())
? ? ? ?data.to_excel('hnyhms_app/data_file/gys_data.xls', index=False) ? ? ? ?# 返回文件
? ? ? ?file = open('hnyhms_app/data_file/gys_data.xls', 'rb')
? ? ? ?response = FileResponse(file)
? ? ? ?response['Content-Type'] = 'application/octet-stream'
? ? ? ?response['Content-Disposition'] = 'attachment;filename="gys_data_' + datetime.strftime(datetime.now(),'%Y-%m-%d %H:%M:%S') + '.xls"'
? ? ? ?return response ? ?
? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限下載文件!', 'up': '/'})# 系統(tǒng)管理def xtpg(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1):
? ? ? ?admin_users = Admin_users.objects.all().values()
? ? ? ?context = {'admin_users': admin_users} ? ? ? ?return render(request, 'funcpage/xtpg.html', context=context) ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 新增管理員def add_admin_users(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1):
? ? ? ?admin_users = Admin_users(au_name = request.POST.get('au_name'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?au_account = request.POST.get('au_account'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?au_pwd = request.POST.get('au_pwd'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?au_role = request.POST.get('au_role'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?au_tel = request.POST.get('au_tel'))
? ? ? ?admin_users.save() ? ? ? ?return redirect("/xtpg") ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 管理員編輯頁面def edit_admin_page(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1):
? ? ? ?admin_id = request.GET.get('id')
? ? ? ?admin_data = list(Admin_users.objects.filter(id=admin_id).values())[0] ? ? ? ?return render(request, 'funcpage/edit_admin.html', context=admin_data) ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 管理員編輯保存def edit_admin_save(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1):
? ? ? ?admin = Admin_users.objects.filter(id=request.POST.get('id')) ? ? ? ?if request.POST.get('au_pwd') == '':
? ? ? ? ? ?admin.update(au_name=request.POST.get('au_name'),
? ? ? ? ? ? ? ? ? ? ? ?au_account = request.POST.get('au_account'),
? ? ? ? ? ? ? ? ? ? ? ?au_role = request.POST.get('au_role'),
? ? ? ? ? ? ? ? ? ? ? ?au_tel = request.POST.get('au_tel')) ? ? ? ?else:
? ? ? ? ? ?admin.update(au_name=request.POST.get('au_name'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?au_account = request.POST.get('au_account'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?au_pwd = request.POST.get('au_pwd'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?au_role = request.POST.get('au_role'),
? ? ? ? ? ? ? ? ? ? ? ? ? ?au_tel = request.POST.get('au_tel')) ? ? ? ?return redirect('/xtpg') ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)# 刪除管理員def del_adminuser(request): ? ?# 收到瀏覽器的再次請求,判斷瀏覽器攜帶的cookie是不是登錄成功的時候響應的cookie
? ?adminuser = request.COOKIES.get('adminuser') ? ?# 權(quán)限判斷
? ?admin_user_role = Admin_users.objects.get(au_account = adminuser).au_role ? ?if adminuser is not None and (admin_user_role == 1):
? ? ? ?admin_users = Admin_users.objects.get(id = request.GET.get('id'))
? ? ? ?admin_users.delete() ? ? ? ?return redirect("/xtpg") ? ?return render(request, 'funcpage/error.html', context={'info': '您沒有權(quán)限訪問該頁面!', 'up': '/'}, status=403)
from django.db import models# Create your models here.# 管理員class Admin_users(models.Model):
? ?au_name = models.CharField('姓名', max_length=30)
? ?au_account = models.CharField('賬號', max_length=30)
? ?au_pwd = models.CharField('密碼', max_length=30)
? ?au_role = models.IntegerField('角色', default=2)
? ?au_tel = models.CharField('電話', max_length=30) ? ?def __str__(self): ? ? ? ?return self.au_name ? ?class Meta:
? ? ? ?verbose_name = '管理員'
? ? ? ?verbose_name_plural = '管理員'# 供應商和客戶class Customers_suppliers(models.Model):
? ?cs_attitude = models.CharField('供應商/客戶', max_length=20)
? ?cs_postCode = models.IntegerField('郵編', default=0)
? ?cs_address = models.CharField('地址', max_length=50)
? ?cs_tel = models.CharField('電話', max_length=20)
? ?cs_unit = models.CharField('單位', max_length=30) ?# 單位
? ?cs_name = models.CharField('聯(lián)系人', max_length=30) ?# 聯(lián)系人
? ?
? ?def __str__(self): ? ? ? ?return self.cs_unit ? ?class Meta:
? ? ? ?verbose_name = '供應商和客戶'
? ? ? ?verbose_name_plural = '供應商和客戶'# 藥品class Medicines(models.Model):
? ?medicine_name = models.CharField('藥品名', max_length=30)
? ?medicine_manufacturers = models.CharField('生產(chǎn)商', max_length=30) ?# 生產(chǎn)商
? ?medicine_trademark = models.CharField('品牌', max_length=30) ?# 品牌
? ?medicine_production_address = models.CharField('生產(chǎn)地址', max_length=50) ?# 生產(chǎn)地址
? ?medicine_code = models.CharField('條碼號', max_length=30)
? ?medicine_specification = models.CharField('規(guī)格', max_length=20) ?# 規(guī)格
? ?medicine_purchase = models.FloatField('進貨價', default=0) ?# 進貨價
? ?medicine_selling = models.FloatField('出售價', default=0) ?# 出售價
? ?medicine_quantity = models.IntegerField('數(shù)量', default=0) ?# 出售價
? ?def __str__(self): ? ? ? ?return self.medicine_name ? ?class Meta:
? ? ? ?verbose_name = '藥品'
? ? ? ?verbose_name_plural = '藥品'# 出入庫class Warehouse_record(models.Model):
? ?wr_in_out = models.CharField('入庫/出庫', max_length=20)
? ?wr_quantity = models.IntegerField('數(shù)量', default=0) ?# 出入庫量
? ?wr_cs_name = models.CharField('供應商/客戶', max_length=20)
? ?wr_admin_name = models.CharField('記錄管理員', max_length=20)
? ?wr_medicine_name = models.CharField('藥品名', max_length=20)
? ?wr_in_out_time = models.DateField('時間', auto_now=True)
? ?wr_amount = models.FloatField('金額', default=0) ? ?class Meta:
? ? ? ?verbose_name = '出入庫記錄'
? ? ? ?verbose_name_plural = '出入庫記錄'