1、项目介绍
技术栈:
Python语言、Django框架、MySQL数据库、Echarts可视化大屏、HTML
功能模块:
(1)智慧仓库实时监控大屏
数据统计面板、空满货物占比分析、仓库库存数据分析、监控数据、库存货物规格分析、货物实时操作记录
(2)货物列表
(3)货物入库出库
(4)厂家数据管理
(5)后台数据管理
(6)后台货物数据管理
在当今快速发展的物流行业中,仓库库存管理的高效性和准确性对于企业的运营至关重要。为此,我们开发了一款基于Python语言、Django框架、MySQL数据库、Echarts可视化大屏和HTML技术的仓库库存管理系统。该系统旨在实现仓库库存的实时监控、数据统计分析以及高效的货物管理功能,帮助企业提升仓库运营效率,降低库存成本。
2、项目界面
(1)智慧仓库实时监控大屏
数据统计面板、空满货物占比分析、仓库库存数据分析、监控数据、库存货物规格分析、货物实时操作记录
(2)货物列表
(3)货物入库出库
(4)厂家数据管理
(5)后台数据管理
(6)后台货物数据管理
3、项目说明
仓库库存管理系统
在当今快速发展的物流行业中,仓库库存管理的高效性和准确性对于企业的运营至关重要。为此,我们开发了一款基于Python语言、Django框架、MySQL数据库、Echarts可视化大屏和HTML技术的仓库库存管理系统。该系统旨在实现仓库库存的实时监控、数据统计分析以及高效的货物管理功能,帮助企业提升仓库运营效率,降低库存成本。
技术栈概述
Python语言:作为一种强大的编程语言,Python在数据处理和逻辑分析方面表现出色,为我们的仓库库存管理系统提供了稳定可靠的编程环境。
Django框架:Django是一个高级Python Web框架,它支持快速开发、安全且可维护的网站。我们利用Django框架构建了系统的后端,保证了系统的稳定性和扩展性。
MySQL数据库:MySQL数据库以其高性能、可扩展性和易用性成为我们存储和管理仓库数据的理想选择。通过MySQL,我们可以高效地存储、查询和更新库存数据。
Echarts可视化大屏:Echarts是一款功能强大的数据可视化库,它支持丰富的图表类型和灵活的交互方式。我们利用Echarts将仓库数据以直观、美观的图表形式展示给用户,帮助用户快速了解仓库运营状况。
HTML:作为Web页面的基础,HTML用于构建系统的用户界面。我们利用HTML技术为用户提供了友好的操作界面,方便用户与系统进行交互。
功能模块介绍
智慧仓库实时监控大屏:该模块通过Echarts可视化大屏技术,实时展示仓库的运营数据。包括数据统计面板、空满货物占比分析、仓库库存数据分析、监控数据、库存货物规格分析以及货物实时操作记录等。用户可以通过大屏快速了解仓库的整体运营状况,为决策提供有力支持。
货物列表:该模块展示了仓库中所有货物的详细信息,包括货物名称、规格、数量、生产厂家等。用户可以通过货物列表查看货物的具体情况,并进行相应的操作。
货物入库出库:该模块实现了货物的入库和出库功能。用户可以通过系统录入货物的入库和出库信息,系统会自动更新库存数据,并生成相应的操作记录。
厂家数据管理:该模块用于管理货物的生产厂家信息。用户可以添加、修改和删除生产厂家信息,以便更好地管理货物的来源和品质。
后台数据管理:该模块提供了系统的后台管理功能,包括用户管理、权限管理、系统配置等。管理员可以通过后台管理模块对系统进行全面的配置和管理,确保系统的稳定运行。
后台货物数据管理:该模块用于管理仓库中的货物数据。管理员可以通过后台货物数据管理模块对货物信息进行查询、修改和删除操作,确保货物数据的准确性和完整性。
总之,这款仓库库存管理系统凭借其先进的技术栈和丰富的功能模块,为企业提供了高效、准确的仓库库存管理服务。通过实时监控、数据分析和高效的货物管理功能,帮助企业提升仓库运营效率,降低库存成本,从而在激烈的市场竞争中脱颖而出。
4、核心代码
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from .models import KeShi, Bottle, AirType, State, Size, Log, Person
from django.template import loader
from .forms import ChangeBottle
# 仓库库存盘点
def keshikucun():
keshi= KeShi.objects.order_by('id')
info = {}
for each in keshi:
info[each.name] = len(Bottle.objects.filter(loc__id=each.id))
# print(each.name)
return info
# 货物类型盘点
def qiti_num():
qiti = AirType.objects.order_by('id')
info = {}
for each in qiti:
info[each.name] = len(Bottle.objects.filter(type__id=each.id))
# print(each.name)
return info
# 货物状态盘点
def state_num():
state = State.objects.order_by('id')
info = {}
for each in state:
info[each.name] = len(Bottle.objects.filter(state__id=each.id))
# print(each.name)
return info
# 数据可视化首页
def index(request):
template = loader.get_template('airhub/index.html')
# 表头数据
bottle_num = Bottle.objects.count() # 货物录入总量
log_num = Log.objects.count() # 货物配送总量
# 数据面板
bottle_O2_num = Bottle.objects.filter(type__id=1).count() # 大型货物
bottle_40_num = Bottle.objects.filter(size__id=1, type__id=1).count() # 固体数量
bottle_10_num = Bottle.objects.filter(size__id=2, type__id=1).count() # 液体数量
bottle_CO2_num = Bottle.objects.filter(type__id=2).count() # 小型货物数量
bottle_N2_num = Bottle.objects.filter(type__id=3).count() # 小型货物数量
# 空满数据占比
bottle_Man = Bottle.objects.filter(state__id=1).count() # 企业货物数量
bottle_Kong = Bottle.objects.filter(state__id=2).count() # 普通用户货物数量
# 仓库库存占比
kucun_dic = {}
kucun_name = []
kucun_num = []
keshi = KeShi.objects.filter()
for each in keshi:
kucun_dic[each.name]=Bottle.objects.filter(loc__id=each.id).count()
kucun_name.append(each.name)
kucun_num.append(Bottle.objects.filter(loc__id=each.id).count())
# print(str(kucun_dic))
# print(str(kucun_name))
# print(str(kucun_num))
# 新增货物列表
new_bottle = Bottle.objects.order_by('-id')[:6]
# 新增配送列表
new_log = Log.objects.order_by('-id')[:6]
context = {
'bottle_num': bottle_num,
'log_num': log_num,
'bottle_O2_num': bottle_O2_num,
'bottle_40_num': bottle_40_num,
'bottle_10_num': bottle_10_num,
'bottle_CO2_num': bottle_CO2_num,
'bottle_N2_num': bottle_N2_num,
'bottle_Man': bottle_Man,
'bottle_Kong': bottle_Kong,
'kucun_dic': kucun_dic,
'kucun_name': str(kucun_name),
'kucun_num': str(kucun_num),
'new_bottle': new_bottle,
'new_log': new_log,
}
return HttpResponse(template.render(context, request))
# 货物详情页面
def bottleinfo(request, id): #货物详情
bottle = get_object_or_404(Bottle, id = id)
info = str(bottle.state) +',' +str(bottle.type)+',' + str(bottle.uid) + ',' + str(bottle.name)
return HttpResponse(info)
# 仓库库存页面
def keshi(request, name):
list = Bottle.objects.filter(loc__name=name)
if len(list) == 0:
return HttpResponse('无库存')
else:
INFO = ''
for each in list:
INFO = INFO + each.name + ','
return HttpResponse(INFO)
# 添加货物api
def add_bottle_api(request):
print(request.method)
if request.method == "POST":
if request.POST:
name = request.POST.get('name', 0)
state = request.POST.get('state', 0)
uid = request.POST.get('uid', 0)
type = request.POST.get('type', 0)
bro_date = request.POST.get('bro_date', 0)
loc = request.POST.get('loc', 0)
size = request.POST.get('size', 0)
print(111111111111111)
if name and state and uid and type and bro_date and size:
bottle = Bottle()
bottle.name = name
bottle.uid = uid
bottle.state = get_object_or_404(State, id=state)
bottle.type = get_object_or_404(AirType, id=type)
bottle.bro_date = bro_date
bottle.loc = get_object_or_404(KeShi, id=loc)
bottle.size = get_object_or_404(Size, id=size)
bottle.save()
info = name + ',' + uid + ',' + state + ',' + type
return HttpResponse('修改成功'+',' + info)
else:
return HttpResponse('输入错误')
else:
return HttpResponse('输入为空')
else:
return HttpResponse('方法错误')
# 变更货物log_api
def change_bottle_api(request):
if request.method == 'POST':
if request.POST :
state = request.POST.get('state', 0)
loc = request.POST.get('loc', 0)
bottle_id = request.POST.get('bottle_id', 0)
person = request.POST.get('person', 0)
print(bottle_id, state, loc)
if state and loc and bottle_id:
bottle = Bottle.objects.get(id=bottle_id)
bottle.state = State.objects.get(id=state)
bottle.loc = KeShi.objects.get(id=loc)
bottle.save()
log = Log()
log.loc = KeShi.objects.get(id=loc)
log.state = State.objects.get(id=state)
log.bottle = Bottle.objects.get(id=bottle_id)
log.person = Person.objects.get(id=person)
log.save()
return HttpResponse('修改成功')
else:
return HttpResponse('输入为空')
else:
return HttpResponse('方法错误')
# show_主页
def show(request):
template = loader.get_template('airhub/show.html')
airtype = AirType.objects.all()
keshiname= KeShi.objects.all()
context = {
'airtype': airtype,
'keshiname': keshiname,
}
return HttpResponse(template.render(context, request))