This commit is contained in:
zty 2025-10-11 11:32:06 +08:00
commit 7732ddc88e
2 changed files with 17 additions and 11 deletions

View File

@ -355,12 +355,12 @@ class MlogSerializer(CustomModelSerializer):
model = Mlog model = Mlog
fields = '__all__' fields = '__all__'
read_only_fields = EXCLUDE_FIELDS + \ read_only_fields = EXCLUDE_FIELDS + \
['submit_time', 'submit_user', 'material_outs', "handle_date", "shift"] ['submit_time', 'submit_user', 'material_outs']
extra_kwargs = { extra_kwargs = {
"batch": {"required": True}, "batch": {"required": True},
"shift": {"required": False}, "shift": {"required": False},
"material_out": {"required": True}, "material_out": {"required": True},
"work_start_time": {"required": True} "work_start_time": {"required": False}
} }
def create(self, validated_data): def create(self, validated_data):
@ -634,14 +634,20 @@ class MlogSerializer(CustomModelSerializer):
# 时间 # 时间
mgroup:Mgroup = attrs['mgroup'] mgroup:Mgroup = attrs['mgroup']
work_start_time:datetime = attrs['work_start_time'] work_start_time:datetime = attrs.get('work_start_time', None)
handle_date, attrs["shift"] = mgroup.get_shift(work_start_time) if work_start_time:
attrs['handle_date'], attrs["shift"] = mgroup.get_shift(work_start_time)
else:
if "handle_date" in attrs and attrs["handle_date"]:
pass
else:
raise ParseError('缺少生产日期')
if mtask and mtask.start_date == mtask.end_date: if mtask and mtask.start_date == mtask.end_date:
attrs['handle_date'] = mtask.end_date if attrs['handle_date'] != mtask.end_date:
if attrs['handle_date'] != handle_date: if work_start_time:
raise ParseError('任务日期与生产日期不一致') raise ParseError('任务日期与生产日期不一致')
else: else:
attrs['handle_date'] = handle_date attrs['handle_date'] = mtask.end_date
handle_user = attrs.get('handle_user', None) handle_user = attrs.get('handle_user', None)
if handle_user is None and hasattr(self, "request"): if handle_user is None and hasattr(self, "request"):

View File

@ -152,7 +152,7 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
""" """
生产日志提交后需要执行的操作 生产日志提交后需要执行的操作
""" """
if mlog.work_start_time > timezone.now(): if mlog.work_start_time and mlog.work_start_time > timezone.now():
raise ParseError('操作开始时间不能晚于当前时间') raise ParseError('操作开始时间不能晚于当前时间')
if mlog.work_start_time and mlog.work_end_time and mlog.work_end_time < mlog.work_start_time: if mlog.work_start_time and mlog.work_end_time and mlog.work_end_time < mlog.work_start_time:
raise ParseError('操作结束时间不能早于操作开始时间') raise ParseError('操作结束时间不能早于操作开始时间')
@ -385,7 +385,7 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
mlog.submit_user = user mlog.submit_user = user
mlog.stored_notok = stored_notok mlog.stored_notok = stored_notok
mlog.stored_mgroup = stored_mgroup mlog.stored_mgroup = stored_mgroup
if mlog.work_end_time is None: if mlog.work_end_time is None and mlog.work_start_time is not None:
mlog.work_end_time = now mlog.work_end_time = now
mlog.save() mlog.save()