Merge branch 'master' of http://gitea.xxhhcty.xyz:8080/zcdsj/factory
This commit is contained in:
commit
0183234497
|
@ -186,6 +186,7 @@ class MlogbFilter(filters.FilterSet):
|
|||
"wm_in__state": ["exact"],
|
||||
"material_in": ["exact", "isnull"],
|
||||
"material_out": ["exact", "isnull"],
|
||||
"parent": ["exact", "isnull"],
|
||||
}
|
||||
|
||||
def filter_type(self, queryset, name, value):
|
||||
|
|
|
@ -69,6 +69,7 @@ def main(batch: str, mgroup_obj:Mgroup=None):
|
|||
data[f"{mgroup_name}_合格率"] = 0
|
||||
|
||||
mlogbd1_qs = MlogbDefect.objects.filter(mlogb__in=mlogb1_qs, count__gt=0).values("defect__name").annotate(total=Sum("count"))
|
||||
mlogbd1_qs_x = MlogbDefect.objects.filter(mlogb__in=mlogb1_qs, count_has__gt=0).values("defect__name").annotate(total=Sum("count_has"))
|
||||
mlogbd1_q_qs = MlogbDefect.objects.filter(mlogb__id__in=mlogb_q_ids, count__gt=0).values("defect__name").annotate(total=Sum("count"))
|
||||
|
||||
for item in mlogbd1_q_qs:
|
||||
|
@ -79,6 +80,10 @@ def main(batch: str, mgroup_obj:Mgroup=None):
|
|||
data[f"{mgroup_name}_缺陷_{item['defect__name']}"] = item["total"]
|
||||
data[f"{mgroup_name}_缺陷_{item['defect__name']}_比例"] = round((item["total"] / data[f"{mgroup_name}_count_real"])*100, 2)
|
||||
|
||||
for item in mlogbd1_qs_x:
|
||||
data[f"{mgroup_name}_含缺陷_{item['defect__name']}"] = item["total"]
|
||||
data[f"{mgroup_name}_含缺陷_{item['defect__name']}_比例"] = round((item["total"] / data[f"{mgroup_name}_count_real"])*100, 2)
|
||||
|
||||
data[f"{mgroup_name}_日期"] = list(set(data[f"{mgroup_name}_日期"]))
|
||||
data[f"{mgroup_name}_小日期"] = max(data[f"{mgroup_name}_日期"]).strftime("%Y-%m-%d")
|
||||
data[f"{mgroup_name}_大日期"] = min(data[f"{mgroup_name}_日期"]).strftime("%Y-%m-%d")
|
||||
|
|
|
@ -10,7 +10,7 @@ from django.db.models import Sum
|
|||
from django.utils import timezone
|
||||
from apps.system.models import User
|
||||
|
||||
from apps.mtm.models import Material, Process, Route, Mgroup, RoutePack
|
||||
from apps.mtm.models import Material, Process, Route, Mgroup, RoutePack, RouteMat
|
||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||
from apps.utils.mixins import CustomListModelMixin, BulkCreateModelMixin, ComplexQueryMixin
|
||||
|
||||
|
@ -199,6 +199,7 @@ class MlogViewSet(CustomModelViewSet):
|
|||
search_fields = ['material_in__name',
|
||||
'material_in__number', 'material_in__specification', 'batch', 'material_in__model',
|
||||
'material_out__name', 'material_out__number', 'material_out__specification', 'material_out__model', "b_mlog__batch"]
|
||||
ordering_fields = ["create_time", "update_time"]
|
||||
|
||||
def add_info_for_item(self, data):
|
||||
if data.get("oinfo_json", {}):
|
||||
|
@ -686,6 +687,7 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust
|
|||
|
||||
@classmethod
|
||||
def p_create_after(cls, mlogbin:Mlogb):
|
||||
mlogbin_parent:Mlogb = mlogbin.parent
|
||||
mlog:Mlog = mlogbin.mlog
|
||||
mgroup:Mgroup = mlog.mgroup
|
||||
route:Route = mlogbin.route
|
||||
|
@ -701,10 +703,16 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust
|
|||
material_out:Material = material_in if is_fix else route.material_out
|
||||
if material_out is None:
|
||||
raise ParseError('产物不可为空')
|
||||
if route and route.material_in != material_in:
|
||||
raise ParseError('工艺步骤输入与实际输入不符')
|
||||
# 如果是主要输入物料且是主批次,才需生成输出
|
||||
if is_fix is False and route and route.material_in != material_in or mlogbin.parent is not None:
|
||||
if mlogbin_parent is not None:
|
||||
if mtype and mtype == Process.PRO_MERGE:
|
||||
pass
|
||||
else:
|
||||
return
|
||||
|
||||
|
||||
wm_in: WMaterial = mlogbin.wm_in
|
||||
|
||||
if material_in.tracking == Material.MA_TRACKING_SINGLE:
|
||||
|
@ -790,6 +798,20 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust
|
|||
mlogbout.save(update_fields=["count_json_from"])
|
||||
elif mtype == Process.PRO_MERGE: # 支持批到批,批到个
|
||||
div_number = route.div_number
|
||||
if mlogbin_parent is not None:
|
||||
# 说明是次批
|
||||
if mlogbin.material_in == mlogbin_parent.material_in:
|
||||
# 如果主次物料一致,则进行处理
|
||||
count_use_sum = Mlogb.objects.filter(Q(id=mlogbin_parent.id)|Q(parent=mlogbin_parent), material_in=mlogbin.material_in).aggregate(Sum('count_use'))['count_use__sum'] or 0
|
||||
count_pn_jgqbl_sum = Mlogb.objects.filter(Q(id=mlogbin_parent.id)|Q(parent=mlogbin_parent), material_in=mlogbin.material_in).aggregate(Sum('count_pn_jgqbl'))['count_pn_jgqbl__sum'] or 0
|
||||
xcount = math.floor( (count_use_sum-count_pn_jgqbl_sum) / div_number)
|
||||
else:
|
||||
# 获取可用的辅料
|
||||
if not RouteMat.objects.filter(material=mlogbin.material_in, route=route).exists():
|
||||
raise ParseError("工艺步骤中不存在该辅料")
|
||||
# 使用主批作为后续引用
|
||||
mlogbin = mlogbin_parent
|
||||
else:
|
||||
xcount = math.floor( (mlogbin.count_use-mlogbin.count_pn_jgqbl) / div_number)
|
||||
d_count_real = xcount
|
||||
d_count_ok = xcount
|
||||
|
|
36
changelog.md
36
changelog.md
|
@ -1,3 +1,39 @@
|
|||
## 2.8.2025090815
|
||||
- feat: 新增功能
|
||||
- batch bxerp含缺陷统计 [caoqianming]
|
||||
- mlog list 添加update_time筛选 [caoqianming]
|
||||
- 工艺步骤中辅料使用的校验 [caoqianming]
|
||||
- mlogb添加parent isnull查询 [caoqianming]
|
||||
- 次批触发输出产生 [caoqianming]
|
||||
- 修改印章的model 和 serializer [zty]
|
||||
- 修改 ofm sevice 印章模块 [zty]
|
||||
- base 优化safe_get_or_create [caoqianming]
|
||||
- 修改ofm seal 过滤查询功能 [zty]
|
||||
- 行政管理 -印章管理 [zty]
|
||||
- ftest默认为合格 [caoqianming]
|
||||
- mlogbdefect添加count_has 字段及处理 [caoqianming]
|
||||
- update_mb_item defect处理更严谨 [caoqianming]
|
||||
- 取消最后一步产出与工艺包不一致 的校验 [caoqianming]
|
||||
- 出入库记录添加乐观锁 [caoqianming]
|
||||
- batch_bxerp考虑mlogbw_from [caoqianming]
|
||||
- mlog_submit mlogbdefect增加筛选条件 [caoqianming]
|
||||
- 导入物料明细时可默认批次号为无 [caoqianming]
|
||||
- 光芯批次统计增加班次返回 [caoqianming]
|
||||
- mlog_submit 进行操作时间校验 [caoqianming]
|
||||
- route update 时from_route存在则不可修改关键信息 [caoqianming]
|
||||
- mlogchange支持work_start_time [caoqianming]
|
||||
- route采用引用方式允许重复创建 [caoqianming]
|
||||
- MlogSerializer 处理 work_start_time 的 bug [caoqianming]
|
||||
- 修改能管采集的点位 [zty]
|
||||
- mlog work_start_time必填 [caoqianming]
|
||||
- ftestwork submit支持mb [zty]
|
||||
- toggle_state 使用 routepack.update权限 [caoqianming]
|
||||
- ftestwork支持对materialbatch检查 [caoqianming]
|
||||
- batchst返回material_start相关信息 [caoqianming]
|
||||
- fix: 问题修复
|
||||
- ftestwork submit 校验wm和mb bug [caoqianming]
|
||||
- MlogbInUpdateSerializer 联动count_use 和 count_real [caoqianming]
|
||||
- batchlog batches_to 优化 [caoqianming]
|
||||
## 2.7.2025082816
|
||||
- feat: 新增功能
|
||||
- 添加定时任务以标记mtask为已完成 [caoqianming]
|
||||
|
|
|
@ -35,7 +35,7 @@ sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
|
|||
ALLOWED_HOSTS = ['*']
|
||||
|
||||
SYS_NAME = '星途工厂综合管理系统'
|
||||
SYS_VERSION = '2.7.2025082816'
|
||||
SYS_VERSION = '2.8.2025090815'
|
||||
X_FRAME_OPTIONS = 'SAMEORIGIN'
|
||||
|
||||
# Application definition
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
# 设置默认版本号 (格式: 2.7.YYYYMMDDHH)
|
||||
DEFAULT_VERSION="2.7.$(date '+%Y%m%d%H')"
|
||||
DEFAULT_VERSION="2.8.$(date '+%Y%m%d%H')"
|
||||
|
||||
# 获取参数 (起始tag)
|
||||
TARGET_TAG="$1"
|
||||
|
|
Loading…
Reference in New Issue