diff --git a/system/LiveStream/settings.py b/system/LiveStream/settings.py index 5965c5deab4ef9db73e4951d68ae9aab38c80b14..76f43647dfe27e229912550830b42bd4051a6f5c 100644 --- a/system/LiveStream/settings.py +++ b/system/LiveStream/settings.py @@ -91,7 +91,7 @@ DATABASES = { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'livestream', 'USER': 'root', - 'PASSWORD': '123456', + 'PASSWORD': 'lgy7932655', 'HOST': 'localhost', 'PORT': '3306', diff --git a/system/login/urls.py b/system/login/urls.py index ff923c93b014e2acd0913d721ab7229c57002a81..c8836d7c4e171f4610f4c7062a2cacb41a523fc5 100644 --- a/system/login/urls.py +++ b/system/login/urls.py @@ -1,4 +1,4 @@ -from django.urls import path, include +from django.urls import path,include from django.urls import re_path as url from . import views from . import view1 diff --git a/system/proc/admin.py b/system/proc/admin.py index 8c38f3f3dad51e4585f3984282c2a4bec5349c1e..d3e3c280e0a9c54244e95e93a9aaa2209e8a8725 100644 --- a/system/proc/admin.py +++ b/system/proc/admin.py @@ -1,3 +1,8 @@ from django.contrib import admin # Register your models here. + +from .models import * +admin.site.register(ProcureOrder) +admin.site.register(ProcurePlan) +admin.site.register(ReplenishRequest) diff --git a/system/proc/models.py b/system/proc/models.py index 71a836239075aa6e6e4ecb700e9c42c95c022d91..def1d9b518cfca1d5ed76d0d3b19372945474d5b 100644 --- a/system/proc/models.py +++ b/system/proc/models.py @@ -1,3 +1,144 @@ from django.db import models + # Create your models here. + + +class EmployeeInfo(models.Model): + eid = models.CharField(primary_key=True, max_length=10) + ename = models.CharField(max_length=10, blank=True, null=True) + psword = models.CharField(max_length=20, blank=True, null=True) + etype = models.CharField(max_length=20, blank=True, null=True) + + class Meta: + managed = False + db_table = 'employee_info' + + +class ProcureAdmin(models.Model): + eid = models.OneToOneField(EmployeeInfo, models.DO_NOTHING, db_column='eid', primary_key=True) + pro_name = models.CharField(max_length=10, blank=True, null=True) + + class Meta: + managed = False + db_table = 'procure_admin' + + +class ProcureOrder(models.Model): # 采购订单 + procure = models.OneToOneField('ProcurePlan', models.DO_NOTHING, + primary_key=True) + sup = models.ForeignKey('SupplyInfo', models.DO_NOTHING) + procure_price = models.FloatField() + procure_num = models.IntegerField() + over = models.IntegerField() + + class Meta: + managed = False + db_table = 'procure_order' + unique_together = (('sup', 'procure'),) + + +class ProcurePlan(models.Model): # 采购计划 + procure = models.OneToOneField('ReplenishRequest', models.DO_NOTHING, primary_key=True) + check_status = models.CharField(max_length=8) + project_intro = models.CharField(max_length=1024, blank=True, null=True) + procure_rule = models.CharField(max_length=1024, blank=True, null=True) + procure_content = models.CharField(max_length=1024, blank=True, null=True) + over = models.IntegerField() + + class Meta: + managed = False + db_table = 'procure_plan' + + +class ReplenishRequest(models.Model): + request_num = models.IntegerField() + request_time = models.DateTimeField() + procure_id = models.CharField(primary_key=True, max_length=10) + eid = models.ForeignKey(ProcureAdmin, models.DO_NOTHING, db_column='eid') + goods = models.ForeignKey('StockInfo', models.DO_NOTHING, blank=True, null=True) + over = models.IntegerField() + + class Meta: + managed = False + db_table = 'replenish_request' + + +class SupplyInfo(models.Model): + sup_id = models.CharField(primary_key=True, max_length=10) + sup_name = models.CharField(max_length=20) + sup_contact = models.CharField(max_length=15) + sup_serve = models.CharField(max_length=1024) + sup_level = models.CharField(max_length=10) + + class Meta: + managed = False + db_table = 'supply_info' + + +class StockInfo(models.Model): + goods = models.OneToOneField('GoodsInfo', models.DO_NOTHING, primary_key=True) + goods_details = models.CharField(max_length=1024, blank=True, null=True) + stock_num = models.IntegerField() + + class Meta: + managed = False + db_table = 'stock_info' + + +class GoodsInfo(models.Model): + goods_id = models.CharField(primary_key=True, max_length=10) + goods_name = models.CharField(max_length=20, blank=True, null=True) + goods_type = models.CharField(max_length=20, blank=True, null=True) + gprice = models.FloatField(blank=True, null=True) + + class Meta: + managed = False + db_table = 'goods_info' + + +class LogisticsInfo(models.Model): + logi_id = models.CharField(max_length=10, primary_key=True) + sup = models.OneToOneField('SupplyInfo', models.DO_NOTHING, related_name='order_logi_sup') + procure = models.ForeignKey('ProcureOrder', models.DO_NOTHING, to_field='procure', related_name="order_logi_procure") + start_time = models.DateTimeField() + logi_status = models.CharField(max_length=10) + arrival_time = models.DateTimeField(blank=True, null=True) + over = models.IntegerField() + + class Meta: + managed = False + db_table = 'logistics_info' + unique_together = (('sup', 'logi_id', 'procure'),) + + +class QualityInfo(models.Model): + sup = models.OneToOneField(SupplyInfo, models.DO_NOTHING, to_field='sup_id', + related_name='qualityinfo_sup_set') + logi = models.ForeignKey(LogisticsInfo, models.DO_NOTHING, to_field='logi_id', related_name='qualityinfo_logi_set') + procure = models.ForeignKey(ReplenishRequest, models.DO_NOTHING, primary_key=True, ) + quality_status = models.CharField(max_length=10) + quality_result = models.CharField(max_length=10) + details_info = models.CharField(max_length=1024, blank=True, null=True) + over = models.IntegerField() + + class Meta: + managed = False + db_table = 'quality_info' + unique_together = (('sup', 'logi', 'procure'),) + + +class StockIn(models.Model): + procure = models.CharField(primary_key=True, max_length=10) # The composite primary key (procure, goods_id) found, that is not supported. The first column is selected. + goods_id = models.CharField(max_length=45) + goods_name = models.CharField(max_length=45) + in_num = models.IntegerField() + in_time = models.DateTimeField() + + class Meta: + managed = False + db_table = 'stock_in' + unique_together = (('procure', 'goods_id'),) + + + diff --git a/system/proc/urls.py b/system/proc/urls.py index ddd8a8087dc49f16ed78a01e47703ab19ca0efce..03dfd3458311f17574bc9ee50f1d9abfb49aee4d 100644 --- a/system/proc/urls.py +++ b/system/proc/urls.py @@ -1,5 +1,5 @@ from django.urls import path -from proc import views +from . import views app_name='proc'#需要添加app名称,不然include无法找到该model,在html文件里需要加上app名 @@ -8,4 +8,15 @@ urlpatterns = [ path('order', views.proc_order, name='proc_order'), path('check', views.proc_check, name='proc_check'), path('plan', views.proc_plan, name='proc_plan'), + path('', views.index_views, name='index_views'), + path('plan1', views.create_plan, name='create_plan'), + path('plan/plan1', views.insert_plan, name='insert_plan'), + path('order/index', views.insert_order, name='insert_order'), + path('order/logi', views.ShowLogi, name='logi'), + path('check1', views.check, name='check'), + path('order1', views.get_plan, name='get_plan'), + path('order1/index', views.check_plan, name='check_plan'), + path('logi/index', views.good_sub, name='good_sub'), + path('history', views.history_page, name='history'), + # path('', views.ShowProcurePlan, name='show_plan') ] diff --git a/system/proc/views.py b/system/proc/views.py index ae7e0ca51f515f5093fd0ee2cd4aa7982b34e620..17d284ae2e424aa0de91ebb4a8faa290bc38efcd 100644 --- a/system/proc/views.py +++ b/system/proc/views.py @@ -1,15 +1,332 @@ from django.shortcuts import render +import datetime +from django.contrib import messages +from django.db.models import Q # Create your views here. - +from .models import * from django.http import HttpResponse + def proc_order(request): return render(request, '../templates/Procurement/order-page.html') + def proc_check(request): return render(request, '../templates/Procurement/proc-check.html') + def proc_plan(request): return render(request, '../templates/Procurement/proc-plan.html') + +def index_views(request): + replenish = ShowReplenishRequest() + plan = ShowProcurePlan() + order = ShowOrder() + quality = ShowQuality() + return render(request, '../templates/Procurement/index.html', + {"replenish": replenish, "plan": plan, "order": order, "quality": quality}) + + +def ShowReplenishRequest(): + replenish = ReplenishRequest.objects.filter().exclude(over=1).all() + return replenish + + +def ShowProcurePlan(): + plan = ProcurePlan.objects.filter(~Q(over=1)) + print(plan) + for item in plan: + # goods_id = ReplenishRequest.objects.filter(procure_id=item.procure.procure_id).first().goods.goods_id + goods_id = item.procure.goods.goods_id + good = GoodsInfo.objects.filter(goods_id=goods_id).first() + item.procure_content = good.goods_name + item.money = good.gprice * item.procure.request_num / 2 + return plan + + +def ShowOrder(): + order = ProcureOrder.objects.filter().exclude(over=1).all() + for item in order: + logi = item.order_logi_procure.all().first() + if logi.arrival_time.replace(tzinfo=None) > datetime.datetime.now(): + logi.logi_status = '未送达' + else: + logi.logi_status = '已送达' + logi.save() + return order + + +def ShowQuality(): + quality = QualityInfo.objects.filter().exclude(over=1).all() + for item in quality: + logi = item.logi + if item.quality_status == '核验完成': + item.pro = str(100) + continue + else: + if logi.logi_status == '未送达': + item.quality_status = '未送达' + else: + item.quality_status = '已送达,未核验' + item.save() + status = item.quality_status + pro = 0 + if status == '未送达': + pro = 25 + elif status == '已送达,未核验': + pro = 75 + item.pro = str(pro) + return quality + + +def create_plan(request): # 进入创建采购计划页面 + if request.method == 'POST': + res = {} + procure_id = request.POST['采购需求'] + # print(procure_id) + # print(1) + replenish = ReplenishRequest.objects.filter(procure_id=procure_id).first() + content = replenish.goods.goods.goods_name + return render(request, '../templates/Procurement/proc-plan.html', + {"procure_id": procure_id, "content": content}) + else: + return render(request, '../templates/Procurement/index.html') + + +def insert_plan(request): # 生成采购计划,并插入数据库 + if request.method == "POST": + id = request.POST['id'] + principle = request.POST['principle'] + replenish = ReplenishRequest.objects.filter(procure_id=id).first() + content = replenish.goods.goods.goods_name + project_intro = "采购" + content + ProcurePlan.objects.create(procure=replenish, check_status='未审批', project_intro=project_intro, + procure_rule=principle, procure_content=content, over=0) + return render(request, '../templates/Procurement/proc-plan.html') + + +def insert_order(request): # 生成采购计划,并插入数据库 + if request.method == 'POST': + replenish1 = request.POST['采购计划'] + # print(1) + # print(request) + plan = ProcurePlan.objects.filter(procure=replenish1).first() + if plan.check_status != '审批通过': + messages.error(request, '审批未通过或未审批!请在审批后进行匹配操作。') + replenish = ShowReplenishRequest() + plan = ShowProcurePlan() + order = ShowOrder() + quality = ShowQuality() + return render(request, '../templates/Procurement/index.html', + {"replenish": replenish, "plan": plan, "order": order, "quality": quality}) + replenish1 = plan.procure + # print(plan) + sup = SupplyInfo.objects.filter(sup_serve=plan.procure_content).order_by('sup_level').first() + num = replenish1.request_num + price = replenish1.goods.goods.gprice / 2.5 + ProcureOrder.objects.create(procure=plan, sup=sup, procure_price=price, procure_num=num, over=0) + order1 = ProcureOrder.objects.filter(procure=plan).first() + insert_logi(order1, replenish1) + insert_quality(order1) + + replenish = ShowReplenishRequest() + plan = ShowProcurePlan() + order = ShowOrder() + quality = ShowQuality() + return render(request, '../templates/Procurement/index.html', + {"replenish": replenish, "plan": plan, "order": order, "quality": quality}) + else: + return render(request, '../templates/Procurement/index.html') + + +def insert_quality(order): + logi = order.order_logi_procure.all().first() + sup = logi.sup + procure = order.procure.procure + quality_result = '未核验' + if logi.logi_status == '未送达': + quality_status = '未送达' + else: + quality_status = '已送达,未核验' + quality_result = '未核验' + QualityInfo.objects.create(procure=procure, logi=logi, sup=sup, quality_status=quality_status, + quality_result=quality_result, over=0) + + +def insert_logi(order1, replenish1): + start_time = replenish1.request_time + datetime.timedelta(days=1) + arrival_time = start_time + datetime.timedelta(days=3) + if arrival_time.replace(tzinfo=None) > datetime.datetime.now(): + logi_status = '未送达' + else: + logi_status = '已送达' + LogisticsInfo.objects.create(logi_id='logi_' + replenish1.procure_id, sup=order1.sup, procure=order1, + start_time=start_time, logi_status=logi_status, arrival_time=arrival_time, over=0) + + +def ShowLogi(request): + if request.method == 'POST': + logi_id = request.POST['物流单'] + # print(logi_id) + logi = LogisticsInfo.objects.filter(logi_id=logi_id).first() + # print(logi) + return render(request, '../templates/Procurement/logi.html', {'logi': logi}) + + +def check(request): + if request.method == 'POST': + proc_id = request.POST['订单号'] + e_id = request.POST['工号'] + result = request.POST['结果'] + procure = ReplenishRequest.objects.get(procure_id=proc_id) + quality1 = QualityInfo.objects.get(procure=procure) + logi = quality1.logi + if logi.logi_status == '未送达': + messages.error(request, "商品暂未送达,请在送达后核验。") + return render(request, '../templates/Procurement/proc-check.html', ) + quality1.quality_status = '核验完成' + quality1.quality_result = result + quality1.save() + + replenish = ShowReplenishRequest() + plan = ShowProcurePlan() + order = ShowOrder() + quality = ShowQuality() + return render(request, '../templates/Procurement/index.html', + {"replenish": replenish, "plan": plan, "order": order, "quality": quality}) + + +def get_plan(request): + if request.method == 'POST': + proc_id = request.POST['p_id'] + replenish1 = ReplenishRequest.objects.filter(procure_id=proc_id).first() + plan = ProcurePlan.objects.filter(procure=replenish1).first() + return render(request, '../templates/Procurement/order-page.html', {'plan': plan}) + + +def check_plan(request): + if request.method == 'POST': + permission = request.POST['permit'] + # print(permission) + proc_id = request.POST['p_id'] + replenish1 = ReplenishRequest.objects.filter(procure_id=proc_id).first() + plan = ProcurePlan.objects.filter(procure=replenish1).first() + if permission == '是': + plan.check_status = '审批通过' + elif permission == '否': + plan.check_status = '审批未通过' + plan.save() + messages.success(request, "审批完成") + + replenish = ShowReplenishRequest() + plan = ShowProcurePlan() + order = ShowOrder() + quality = ShowQuality() + return render(request, '../templates/Procurement/index.html', + {"replenish": replenish, "plan": plan, "order": order, "quality": quality}) + + +def good_sub(request): + if request.method == 'POST': + id = request.POST['交付单'] + replenish1 = ReplenishRequest.objects.filter(procure_id=id).first() + plan = ProcurePlan.objects.filter(procure=replenish1).first() + order = ProcureOrder.objects.filter(procure=plan).first() + logi = LogisticsInfo.objects.filter(procure=order).first() + quality = QualityInfo.objects.filter(procure=replenish1).first() + good_id = replenish1.goods.goods.goods_id + # print(good_id) + good_name = replenish1.goods.goods.goods_name + in_num = replenish1.request_num + in_time = datetime.datetime.now() + + if quality.quality_result == "合格": + StockIn.objects.create(procure=id, goods_id=good_id, goods_name=good_name, + in_num=in_num, in_time=in_time) + replenish1.over = 1 + replenish1.save() + plan.over = 1 + plan.save() + order.over = 1 + order.save() + logi.over = 1 + logi.save() + quality.over = 1 + quality.save() + + else: + messages.error(request, '质检未通过,无法交付!') + + replenish = ShowReplenishRequest() + plan = ShowProcurePlan() + order = ShowOrder() + quality = ShowQuality() + return render(request, '../templates/Procurement/index.html', + {"replenish": replenish, "plan": plan, "order": order, "quality": quality}) + + +def history_page(request): + replenish = ShowReplenishRequest_history() + plan = ShowProcurePlan_history() + order = ShowOrder_history() + quality = ShowQuality_history() + return render(request, '../templates/Procurement/history.html', + {"replenish": replenish, "plan": plan, "order": order, "quality": quality}) + + +def ShowReplenishRequest_history(): + replenish = ReplenishRequest.objects.filter(over=1) + return replenish + + +def ShowProcurePlan_history(): + plan = ProcurePlan.objects.filter(over=1) + print(plan) + for item in plan: + # goods_id = ReplenishRequest.objects.filter(procure_id=item.procure.procure_id).first().goods.goods_id + goods_id = item.procure.goods.goods_id + good = GoodsInfo.objects.filter(goods_id=goods_id).first() + item.procure_content = good.goods_name + item.money = good.gprice * item.procure.request_num / 2 + return plan + + +def ShowOrder_history(): + order = ProcureOrder.objects.filter(over=1) + return order + + +def ShowQuality_history(): + quality = QualityInfo.objects.filter(over=1) + for item in quality: + item.pro = str(100) + return quality + + +''' +def ShowReplenishRequest(request): + replenish = ReplenishRequest.objects.all() + plan = ProcurePlan.objects.all() + order = ProcureOrder.objects.all() + quality = QualityInfo.objects.all() + # goods = GoodsInfo.objects.all() + for item in plan: + # goods_id = ReplenishRequest.objects.filter(procure_id=item.procure.procure_id).first().goods.goods_id + goods_id = item.procure.goods.goods_id + item.procure_content = GoodsInfo.objects.filter(goods_id=goods_id).first().goods_name + # order = ProcureOrder.objects.select_related("procure") + for item in quality: + status = item.quality_status + pro = 0 + if status == '未送达': + pro = 0 + elif status == '已送达,未核验': + pro = 50 + elif status == '核验完成': + pro = 100 + item.pro = str(pro) + return render(request, '../templates/Procurement/index.html', + {"replenish": replenish, "plan": plan, "order": order, "quality": quality}) +''' diff --git a/system/static/css/style.css b/system/static/css/style.css index 47f203b06bb507235e68a2d89f3d0e7bbdb1e383..fcc1a580f95dc2139e2fac0d363fd6c2a7384700 100644 --- a/system/static/css/style.css +++ b/system/static/css/style.css @@ -23187,4 +23187,69 @@ dl li { outline: 1px solid slategrey; } +.shortselect{ + background:#fafdfe; + height:28px; + width:180px; + line-height:28px; + border:1px solid #9bc0dd; + -moz-border-radius:2px; + -webkit-border-radius:2px; + border-radius:2px; +} + + + body { + font-size: 20px; + color: #090; + background-color: #eee; + text-align: center; + } + .select { + display: inline-block; + width: 300px; + position: relative; + vertical-align: middle; + padding: 0; + overflow: hidden; + background-color: #fff; + color: #555; + border: 1px solid #aaa; + text-shadow: none; + border-radius: 4px; + transition: box-shadow 0.25s ease; + z-index: 2; + } + + .select:hover { + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); + } + + .select:before { + content: ""; + position: absolute; + width: 0; + height: 0; + border: 10px solid transparent; + border-top-color: #ccc; + top: 14px; + right: 10px; + cursor: pointer; + z-index: -2; + } + .select select { + cursor: pointer; + padding: 10px; + width: 100%; + border: none; + background: transparent; + background-image: none; + -webkit-appearance: none; + -moz-appearance: none; + } + + .select select:focus { + outline: none; + } + /*# sourceMappingURL=maps/style.css.map */ diff --git a/system/templates/Procurement/history.html b/system/templates/Procurement/history.html new file mode 100644 index 0000000000000000000000000000000000000000..823834a55fffd337216fc570acaf18479d2f2cf6 --- /dev/null +++ b/system/templates/Procurement/history.html @@ -0,0 +1,277 @@ + + + + + + + 采购历史数据 + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ 商品采购请求 +
+ + + + + + + + + + + {% for item in replenish %} + + + + + + + {% endfor %} + +
需求编号员工代码商品代码采购请求量
{{item.procure_id}}{{item.eid.eid.eid}}{{item.goods.goods.goods_id}}{{item.request_num}}
+
+
+
+
+
+
+
+ 采购计划信息表 +
+ + + + + + + + + + + + + {% for item in plan %} + + + + + + + + + {% endfor %} + +
计划编号项目概况采购原则采购内容总预算审批状态
{{item.procure.procure_id}}{{item.project_intro}}{{item.procure_rule}}{{item.procure_content}}{{item.money}}{{item.check_status}}
+
+
+
+
+
+
+
+ 采购订单信息表 +
+ + + + + + + + + + + + + + {% for item in order %} + + + + + + + + + + {% endfor %} + +
订单编号商品品名商品编号供应商编号采购数量采购价格运输信息(点击查看详情)
{{item.procure.procure.procure_id}}{{item.procure.procure.goods.goods.goods_name}}{{item.procure.procure.goods.goods_id}}{{item.sup.sup_id}}{{item.procure_num}}{{item.procure_price}} +
+ {% csrf_token %} + + +
+
+
+
+
+
+
+
+
+ 入库核验信息表 +
+ + + + + + + + + + {% for item in quality %} + + + + + + {% endfor %} + +
采购订单编号货物核验进度核验结果
{{item.procure.procure_id}} +
+
+ {{item.quality_status}} +
+
+
{{item.quality_result}}
+
+
+
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + {% if messages %} + + {% endif %} + + \ No newline at end of file diff --git a/system/templates/Procurement/index.html b/system/templates/Procurement/index.html index 77fb878d566f8415a148a1768126b4c188b91e3d..5b12f9e32612a4523225ea25ca779146a7b5462c 100644 --- a/system/templates/Procurement/index.html +++ b/system/templates/Procurement/index.html @@ -81,21 +81,27 @@