backup 接口 fifoitem 增加 过期日期
This commit is contained in:
parent
b3f14a8f6f
commit
8b592231c7
|
|
@ -1,25 +1,39 @@
|
|||
from __future__ import absolute_import, unicode_literals
|
||||
from distutils import command
|
||||
from rest_framework.response import Response
|
||||
from celery import shared_task
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
|
||||
@shared_task
|
||||
def backup_database():
|
||||
"""
|
||||
备份数据库
|
||||
"""
|
||||
completed = subprocess.run('sudo pg_dump "user=postgres password=zcDsj2021 dbname=hberp" > /home/lighthouse/hberp_backup.sql',
|
||||
shell=True, capture_output=True, text=True)
|
||||
import datetime
|
||||
name = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
|
||||
command = '''pg_dump "user=postgres password=zcDsj2021 dbname=hberp" >
|
||||
/home/lighthouse/backup/hberp_{}.sql'''.format(name)
|
||||
completed = subprocess.run(command, shell=True, capture_output=True, text=True)
|
||||
return completed
|
||||
|
||||
@shared_task
|
||||
def reload_server():
|
||||
os.chdir('/home/lighthouse/hberp')
|
||||
completed = subprocess.run('sudo git pull && sudo service supervisor reload', shell=True, capture_output=True, text=True)
|
||||
command = 'sudo git pull && sudo service supervisor reload'
|
||||
completed = subprocess.run(command, shell=True, capture_output=True, text=True)
|
||||
return completed
|
||||
|
||||
@shared_task
|
||||
def reload_server_only():
|
||||
command = 'sudo service supervisor reload'
|
||||
completed = subprocess.run(command, shell=True, capture_output=True, text=True)
|
||||
return completed
|
||||
|
||||
@shared_task
|
||||
def backup_media():
|
||||
command = 'rsync -avu /home/lighthouse/hberp/hb_server/media/ /home/lighthouse/backup/media/'
|
||||
completed = subprocess.run(command, shell=True, capture_output=True, text=True)
|
||||
return completed
|
||||
|
||||
|
||||
|
|
@ -2,7 +2,7 @@ from django.db.models import base
|
|||
from rest_framework import urlpatterns
|
||||
from django.urls import path, include
|
||||
from rest_framework.routers import DefaultRouter
|
||||
from apps.develop.views import BackupDatabase, CleanDataView, ReloadServer, UpdateCuttingView, UpdateEquipState, UpdateFIFOItem, UpdateFIFONumber, UpdateLastTestResult, UpdateNeedToOrder, UpdateSpg
|
||||
from apps.develop.views import BackupDatabase, BackupMedia, CleanDataView, ReloadServer, ReloadServerOnly, UpdateCuttingView, UpdateEquipState, UpdateFIFOItem, UpdateFIFONumber, UpdateLastTestResult, UpdateNeedToOrder, UpdateSpg
|
||||
|
||||
urlpatterns = [
|
||||
path('cleandata/', CleanDataView.as_view()),
|
||||
|
|
@ -15,6 +15,8 @@ urlpatterns = [
|
|||
path('update_need_to_order/', UpdateNeedToOrder.as_view()),
|
||||
path('update_fifo_number/', UpdateFIFONumber.as_view()),
|
||||
path('reload_server/', ReloadServer.as_view()),
|
||||
path('backup_database/', BackupDatabase.as_view())
|
||||
path('reload_server_only/', ReloadServerOnly.as_view()),
|
||||
path('backup_database/', BackupDatabase.as_view()),
|
||||
path('backup_media/', BackupMedia.as_view())
|
||||
]
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ from rest_framework.decorators import permission_classes
|
|||
from rest_framework.views import APIView
|
||||
from rest_framework.permissions import IsAdminUser
|
||||
from rest_framework.response import Response
|
||||
from apps.develop.tasks import backup_database, reload_server
|
||||
from apps.develop.tasks import backup_database, backup_media, reload_server, reload_server_only
|
||||
from apps.inm.models import FIFO, FIFOItem, Inventory, MaterialBatch
|
||||
from apps.mtm.models import Material
|
||||
from apps.pm.models import ProductionPlan, SubProductionPlan
|
||||
|
|
@ -124,17 +124,46 @@ class UpdateFIFONumber(APIView):
|
|||
class ReloadServer(APIView):
|
||||
permission_classes = [IsAdminUser]
|
||||
def post(self, request):
|
||||
"""
|
||||
拉取代码并重启服务
|
||||
"""
|
||||
completed = reload_server()
|
||||
if completed.returncode == 0:
|
||||
return Response()
|
||||
else:
|
||||
raise APIException(completed.stdout)
|
||||
|
||||
class ReloadServerOnly(APIView):
|
||||
permission_classes = [IsAdminUser]
|
||||
def post(self, request):
|
||||
"""
|
||||
仅重启服务
|
||||
"""
|
||||
completed = reload_server_only()
|
||||
if completed.returncode == 0:
|
||||
return Response()
|
||||
else:
|
||||
raise APIException(completed.stdout)
|
||||
|
||||
class BackupDatabase(APIView):
|
||||
permission_classes = [IsAdminUser]
|
||||
def post(self, request):
|
||||
"""
|
||||
备份数据库到指定位置
|
||||
"""
|
||||
completed = backup_database()
|
||||
if completed.returncode == 0:
|
||||
return Response()
|
||||
else:
|
||||
raise APIException(completed.stdout)
|
||||
|
||||
class BackupMedia(APIView):
|
||||
permission_classes = [IsAdminUser]
|
||||
def post(self, request):
|
||||
"""
|
||||
备份资源到指定位置
|
||||
"""
|
||||
completed = backup_media()
|
||||
if completed.returncode == 0:
|
||||
return Response()
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 3.2.9 on 2022-02-28 06:21
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('inm', '0032_auto_20220222_0941'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='fifoitem',
|
||||
name='expiration_date',
|
||||
field=models.DateField(blank=True, null=True, verbose_name='有效期'),
|
||||
),
|
||||
]
|
||||
|
|
@ -105,6 +105,7 @@ class FIFOItem(BaseModel):
|
|||
batch = models.CharField('批次号', max_length=100, default='')
|
||||
fifo = models.ForeignKey(FIFO, verbose_name='关联出入库',
|
||||
on_delete=models.CASCADE)
|
||||
expiration_date = models.DateField('有效期', null=True, blank=True)
|
||||
subproduction_plan = models.ForeignKey(
|
||||
SubProductionPlan, verbose_name='关联子生产计划', on_delete=models.CASCADE, null=True, blank=True)
|
||||
files = models.ManyToManyField(File, verbose_name='上传材料', blank=True)
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ class FIFOItemCreateSerializer(serializers.ModelSerializer):
|
|||
class Meta:
|
||||
model = FIFOItem
|
||||
fields = ['warehouse',
|
||||
'material', 'batch', 'fifo', 'files', 'pu_order_item', 'count']
|
||||
'material', 'batch', 'fifo', 'files', 'pu_order_item', 'count', 'expiration_date']
|
||||
|
||||
def create(self, validated_data):
|
||||
fifo = validated_data['fifo']
|
||||
|
|
@ -106,7 +106,7 @@ class FIFOItemCreateSerializer(serializers.ModelSerializer):
|
|||
class FIFOItemUpdateSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = FIFOItem
|
||||
fields = ['warehouse', 'batch', 'files', 'count']
|
||||
fields = ['warehouse', 'batch', 'files', 'count', 'expiration_date']
|
||||
|
||||
class FIFOItemSerializer(serializers.ModelSerializer):
|
||||
warehouse_ = WareHouseSimpleSerializer(source='warehouse', read_only=True)
|
||||
|
|
@ -128,7 +128,7 @@ class FIFODetailInPurSerializer(serializers.ModelSerializer):
|
|||
|
||||
class Meta:
|
||||
model = FIFOItem
|
||||
fields = ['material', 'count', 'batch', 'details', 'warehouse']
|
||||
fields = ['material', 'count', 'batch', 'details', 'warehouse', 'expiration_date']
|
||||
|
||||
def validate_batch(self, value):
|
||||
if value == '':
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@ class InmService:
|
|||
o2, _ = MaterialBatch.objects.get_or_create(material=material, warehouse=warehouse, batch=i.batch,\
|
||||
defaults={'material':material, 'warehouse':warehouse, 'count':0, 'batch':i.batch})
|
||||
o2.count = o2.count + i.count
|
||||
if o2.expiration_date is None:
|
||||
o2.expiration_date = i.expiration_date
|
||||
o2.save()
|
||||
|
||||
iv, _= Inventory.objects.get_or_create(material=material, warehouse=warehouse, \
|
||||
|
|
|
|||
Loading…
Reference in New Issue