feat: 记录batchst 最后操作时间
This commit is contained in:
parent
17697d6482
commit
de6e5d315a
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 3.2.12 on 2024-12-02 06:12
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('wpm', '0075_auto_20241128_1703'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='batchst',
|
||||||
|
name='last_time',
|
||||||
|
field=models.DateTimeField(blank=True, null=True, verbose_name='最后操作时间'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -22,6 +22,7 @@ class BatchSt(BaseModel):
|
||||||
批次统计表
|
批次统计表
|
||||||
"""
|
"""
|
||||||
batch = models.TextField("批次号")
|
batch = models.TextField("批次号")
|
||||||
|
last_time = models.DateTimeField("最后操作时间", null=True, blank=True)
|
||||||
data = models.JSONField("数据", default=list, blank=True)
|
data = models.JSONField("数据", default=list, blank=True)
|
||||||
|
|
||||||
class SfLog(CommonADModel):
|
class SfLog(CommonADModel):
|
||||||
|
|
|
@ -3,13 +3,18 @@ from apps.mtm.models import Mgroup
|
||||||
from apps.system.models import Dept
|
from apps.system.models import Dept
|
||||||
from apps.inm.models import MIOItem
|
from apps.inm.models import MIOItem
|
||||||
from apps.qm.models import FtestWork
|
from apps.qm.models import FtestWork
|
||||||
|
from django.utils import timezone
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
def get_alldata_with_batch_and_store(batch: str):
|
def get_alldata_with_batch_and_store(batch: str):
|
||||||
"""
|
"""
|
||||||
获取某个批次某个仓库的整体生产数据并保存
|
获取某个批次某个仓库的整体生产数据并保存
|
||||||
"""
|
"""
|
||||||
data = get_alldata_with_batch(batch)
|
last_time, data = get_alldata_with_batch(batch)
|
||||||
bobj, _ = BatchSt.objects.get_or_create(batch=batch)
|
bobj, _ = BatchSt.objects.get_or_create(batch=batch, defaults={
|
||||||
|
"last_time": last_time
|
||||||
|
})
|
||||||
|
bobj.last_time = last_time
|
||||||
bobj.data = data
|
bobj.data = data
|
||||||
bobj.save()
|
bobj.save()
|
||||||
|
|
||||||
|
@ -17,6 +22,7 @@ def get_alldata_with_batch(batch: str):
|
||||||
"""
|
"""
|
||||||
获取某个批次的整体生产数据
|
获取某个批次的整体生产数据
|
||||||
"""
|
"""
|
||||||
|
last_time = timezone.make_aware(datetime(1990, 4, 4, 0, 0, 0))
|
||||||
data = {"产品批次编号": batch}
|
data = {"产品批次编号": batch}
|
||||||
dept7 = Dept.objects.get(name='7车间')
|
dept7 = Dept.objects.get(name='7车间')
|
||||||
dept6 = Dept.objects.get(name='6车间')
|
dept6 = Dept.objects.get(name='6车间')
|
||||||
|
@ -31,6 +37,7 @@ def get_alldata_with_batch(batch: str):
|
||||||
data["棒料成型-切料人"] = []
|
data["棒料成型-切料人"] = []
|
||||||
data["棒料成型-备注"] = ""
|
data["棒料成型-备注"] = ""
|
||||||
for item in mlogs_blcx_qs:
|
for item in mlogs_blcx_qs:
|
||||||
|
last_time = item.update_time if item.update_time > last_time else last_time
|
||||||
data["产品规格"].append(item.material_out) # 对象
|
data["产品规格"].append(item.material_out) # 对象
|
||||||
if item.handle_user:
|
if item.handle_user:
|
||||||
data["棒料成型-出料人"].append(item.handle_user) # 对象
|
data["棒料成型-出料人"].append(item.handle_user) # 对象
|
||||||
|
@ -39,7 +46,7 @@ def get_alldata_with_batch(batch: str):
|
||||||
if item.note:
|
if item.note:
|
||||||
data["棒料成型-备注"] = ";".join([data["棒料成型-备注"], item.note])
|
data["棒料成型-备注"] = ";".join([data["棒料成型-备注"], item.note])
|
||||||
for field in mlog_count_fields:
|
for field in mlog_count_fields:
|
||||||
if getattr(item, field) > 0:
|
if getattr(item, field) > 0 or field in ["count_real", "count_ok"]:
|
||||||
if f'棒料成型-{field}' not in data:
|
if f'棒料成型-{field}' not in data:
|
||||||
data[f'棒料成型-{field}'] = getattr(item, field)
|
data[f'棒料成型-{field}'] = getattr(item, field)
|
||||||
else:
|
else:
|
||||||
|
@ -57,6 +64,7 @@ def get_alldata_with_batch(batch: str):
|
||||||
mioitem_count_fields = MIOItem.count_fields()
|
mioitem_count_fields = MIOItem.count_fields()
|
||||||
mioitem_qs = MIOItem.objects.filter(mio__belong_dept=dept7, mio__type="do_in", batch=batch, mio__submit_time__isnull=False)
|
mioitem_qs = MIOItem.objects.filter(mio__belong_dept=dept7, mio__type="do_in", batch=batch, mio__submit_time__isnull=False)
|
||||||
if mioitem_qs.exists():
|
if mioitem_qs.exists():
|
||||||
|
last_time = item.update_time if item.update_time > last_time else last_time
|
||||||
data["7车间入库-日期"] = []
|
data["7车间入库-日期"] = []
|
||||||
data["7车间入库-车间执行人"] = []
|
data["7车间入库-车间执行人"] = []
|
||||||
data["7车间入库-仓库执行人"] = []
|
data["7车间入库-仓库执行人"] = []
|
||||||
|
@ -67,7 +75,7 @@ def get_alldata_with_batch(batch: str):
|
||||||
if item.mio.do_user:
|
if item.mio.do_user:
|
||||||
data["7车间入库-仓库执行人"].append(item.mio.do_user)
|
data["7车间入库-仓库执行人"].append(item.mio.do_user)
|
||||||
for field in mioitem_count_fields:
|
for field in mioitem_count_fields:
|
||||||
if getattr(item, field) > 0:
|
if getattr(item, field) > 0 or field in ["count", "count_notok"]:
|
||||||
if f'7车间入库-{field}' not in data:
|
if f'7车间入库-{field}' not in data:
|
||||||
data[f'7车间入库-{field}'] = int(getattr(item, field))
|
data[f'7车间入库-{field}'] = int(getattr(item, field))
|
||||||
else:
|
else:
|
||||||
|
@ -85,6 +93,7 @@ def get_alldata_with_batch(batch: str):
|
||||||
batch=batch,
|
batch=batch,
|
||||||
mio__submit_time__isnull=False)
|
mio__submit_time__isnull=False)
|
||||||
if mioitem6_qs.exists():
|
if mioitem6_qs.exists():
|
||||||
|
last_time = item.update_time if item.update_time > last_time else last_time
|
||||||
data["6车间生产领料-日期"] = []
|
data["6车间生产领料-日期"] = []
|
||||||
for item in mioitem6_qs:
|
for item in mioitem6_qs:
|
||||||
data["6车间生产领料-日期"].append(item.mio.inout_date)
|
data["6车间生产领料-日期"].append(item.mio.inout_date)
|
||||||
|
@ -103,6 +112,7 @@ def get_alldata_with_batch(batch: str):
|
||||||
mgroup = Mgroup.objects.get(name=mgroup_name)
|
mgroup = Mgroup.objects.get(name=mgroup_name)
|
||||||
mlogs_qs = Mlog.objects.filter(submit_time__isnull=False, mgroup=mgroup, batch=batch)
|
mlogs_qs = Mlog.objects.filter(submit_time__isnull=False, mgroup=mgroup, batch=batch)
|
||||||
if mlogs_qs.exists():
|
if mlogs_qs.exists():
|
||||||
|
last_time = item.update_time if item.update_time > last_time else last_time
|
||||||
data[f'6车间-{mgroup_name}-日期'] = []
|
data[f'6车间-{mgroup_name}-日期'] = []
|
||||||
data[f'6车间-{mgroup_name}-操作人'] = []
|
data[f'6车间-{mgroup_name}-操作人'] = []
|
||||||
for item in mlogs_qs:
|
for item in mlogs_qs:
|
||||||
|
@ -111,7 +121,7 @@ def get_alldata_with_batch(batch: str):
|
||||||
if item.handle_user:
|
if item.handle_user:
|
||||||
data[f'6车间-{mgroup_name}-操作人'].append(item.handle_user)
|
data[f'6车间-{mgroup_name}-操作人'].append(item.handle_user)
|
||||||
for field in mlog_count_fields:
|
for field in mlog_count_fields:
|
||||||
if getattr(item, field) > 0:
|
if getattr(item, field) > 0 or field in ["count_ok", "count_real"]:
|
||||||
if f'6车间-{mgroup_name}-{field}' not in data:
|
if f'6车间-{mgroup_name}-{field}' not in data:
|
||||||
data[f'6车间-{mgroup_name}-{field}'] = getattr(item, field)
|
data[f'6车间-{mgroup_name}-{field}'] = getattr(item, field)
|
||||||
else:
|
else:
|
||||||
|
@ -146,6 +156,7 @@ def get_alldata_with_batch(batch: str):
|
||||||
data["成品检验-日期"] = []
|
data["成品检验-日期"] = []
|
||||||
data['成品检验-检验人'] = []
|
data['成品检验-检验人'] = []
|
||||||
for item in ftestwork_qs:
|
for item in ftestwork_qs:
|
||||||
|
last_time = item.update_time if item.update_time > last_time else last_time
|
||||||
if item.test_date:
|
if item.test_date:
|
||||||
data["成品检验-日期"].append(item.test_date)
|
data["成品检验-日期"].append(item.test_date)
|
||||||
if item.test_user:
|
if item.test_user:
|
||||||
|
@ -158,7 +169,7 @@ def get_alldata_with_batch(batch: str):
|
||||||
else:
|
else:
|
||||||
data[f'成品检验-{k}'] += v
|
data[f'成品检验-{k}'] += v
|
||||||
else:
|
else:
|
||||||
if getattr(item, field) > 0:
|
if getattr(item, field) > 0 or field in ["count", "count_ok"]:
|
||||||
if f'成品检验-{field}' not in data:
|
if f'成品检验-{field}' not in data:
|
||||||
data[f'成品检验-{field}'] = getattr(item, field)
|
data[f'成品检验-{field}'] = getattr(item, field)
|
||||||
else:
|
else:
|
||||||
|
@ -169,5 +180,5 @@ def get_alldata_with_batch(batch: str):
|
||||||
data['成品检验-检验人'] = ";".join([item.name for item in data['成品检验-检验人']])
|
data['成品检验-检验人'] = ";".join([item.name for item in data['成品检验-检验人']])
|
||||||
data['成品检验-合格率'] = round(data['成品检验-count_ok'] * 100/ data['成品检验-count'], 1)
|
data['成品检验-合格率'] = round(data['成品检验-count_ok'] * 100/ data['成品检验-count'], 1)
|
||||||
|
|
||||||
return data
|
return last_time, data
|
||||||
|
|
|
@ -523,5 +523,6 @@ class BatchStViewSet(ListModelMixin, CustomGenericViewSet):
|
||||||
serializer_class = BatchStSerializer
|
serializer_class = BatchStSerializer
|
||||||
filterset_fields = {
|
filterset_fields = {
|
||||||
"batch": ["exact", "contains"],
|
"batch": ["exact", "contains"],
|
||||||
|
"last_time": ["exact", "gte", "lte"],
|
||||||
"update_time": ["exact", "gte", "lte"]
|
"update_time": ["exact", "gte", "lte"]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue