diff --git a/apps/develop/views.py b/apps/develop/views.py index 7239b227..aeba9d7c 100755 --- a/apps/develop/views.py +++ b/apps/develop/views.py @@ -171,9 +171,14 @@ class CorrectViewSet(CustomGenericViewSet): 矫正质检统计数据 """ - from apps.qm.models import QuaStat - for item in QuaStat.objects.exclude(sflog=None): - item.shift = item.sflog.shift + from apps.enm.models import EnStat + enstats = EnStat.objects.exclude(type='hour_s') + for item in enstats: + qua_data = item.qua_data + if qua_data: + for x in qua_data: + x['rate_pass'] = x['rate_pass']*100 + item.qua_data = qua_data item.save() return Response() diff --git a/apps/enm/serializers.py b/apps/enm/serializers.py index d9ac1818..93e5cd59 100644 --- a/apps/enm/serializers.py +++ b/apps/enm/serializers.py @@ -98,6 +98,26 @@ class EnStatSerializer(CustomModelSerializer): class Meta: model = EnStat fields = '__all__' + + def to_representation(self, instance): + ret = super().to_representation(instance) + my_dic_keys = list(ret.keys()) + for key in my_dic_keys: + ret_one_val = ret[key] + if isinstance(ret_one_val, float): + ret[key] = "{:.2f}".format(round(ret_one_val, 2)) + qua_data = ret['qua_data'] + equip_elec_data = ret['equip_elec_data'] + if qua_data: + for item in qua_data: + ret[f'{item["material_name"]}_{item["testitem_name"]}_rate_pass'] = "{:.2f}".format(round(item['rate_pass'], 4)) + if equip_elec_data: + for item in equip_elec_data: + val = item.get('consume_unit', None) + if val: + val = "{:.2f}".format(round(val, 2)) + ret[f'{item["equipment_name"]}_consume_unit'] = val + return ret class EnStat2Serializer(CustomModelSerializer): class Meta: diff --git a/apps/enm/views.py b/apps/enm/views.py index a06bc806..e5c720e1 100644 --- a/apps/enm/views.py +++ b/apps/enm/views.py @@ -69,32 +69,6 @@ class EnStatViewSet(ListModelMixin, CustomGenericViewSet): filterset_class = EnStatFilter ordering = ['mgroup__sort', 'year_s', 'month_s', 'day_s', 'hour'] - def handle_data(self, data): - for ind, val in enumerate(data): - # imaterial_data = i['imaterial_data'] - # other_cost_data = i['other_cost_data'] - qua_data = val['qua_data'] - equip_elec_data = val['equip_elec_data'] - if qua_data: - for item in qua_data: - val[f'{item["material_name"]}_{item["testitem_name"]}_rate_pass'] = item['rate_pass'] - if equip_elec_data: - for item in equip_elec_data: - val[f'{item["equipment_name"]}_consume_unit'] = item.get('consume_unit', None) - return data - - def list(self, request, *args, **kwargs): - queryset = self.filter_queryset(self.get_queryset()) - - page = self.paginate_queryset(queryset) - if page is not None: - serializer = self.get_serializer(page, many=True) - data = self.handle_data(serializer.data) - return self.get_paginated_response(data) - - serializer = self.get_serializer(queryset, many=True) - data = self.handle_data(serializer.data) - return Response(data) class EnStat2ViewSet(ListModelMixin, CustomGenericViewSet): """ diff --git a/apps/qm/tasks.py b/apps/qm/tasks.py index 59a68524..0bcd7a04 100644 --- a/apps/qm/tasks.py +++ b/apps/qm/tasks.py @@ -99,7 +99,7 @@ qmt."name" AS testitem_name, CAST(SUM(num_test * val_avg) AS FLOAT)/NULLIF(SUM(num_test), 0) AS val_avg, SUM(num_test) AS num_test, SUM(num_ok) AS num_ok, -CAST(SUM(num_ok) AS FLOAT)/NULLIF(SUM(num_test),0) AS rate_pass +100 * CAST(SUM(num_ok) AS FLOAT)/NULLIF(SUM(num_test),0) AS rate_pass FROM qm_quastat qmq LEFT JOIN wpm_sflog sflog on sflog.id = qmq.sflog_id LEFT JOIN mtm_mgroup mgroup on mgroup.id = sflog.mgroup_id @@ -130,7 +130,7 @@ ORDER BY mgroup.sort, mtma.sort, qmt.sort CAST(SUM(num_test * val_avg) AS FLOAT)/NULLIF(SUM(num_test), 0) AS val_avg, SUM(num_test) AS num_test, SUM(num_ok) AS num_ok, - CAST(SUM(num_ok) AS FLOAT)/NULLIF(SUM(num_test),0) AS rate_pass + 100 * CAST(SUM(num_ok) AS FLOAT)/NULLIF(SUM(num_test),0) AS rate_pass FROM qm_quastat qmq LEFT JOIN wpm_sflog sflog on sflog.id = qmq.sflog_id LEFT JOIN mtm_team team on team.id = sflog.team_id @@ -160,7 +160,7 @@ qmt."name" AS testitem_name, CAST(SUM(num_test * val_avg) AS FLOAT)/NULLIF(SUM(num_test), 0) AS val_avg, SUM(num_test) AS num_test, SUM(num_ok) AS num_ok, -CAST(SUM(num_ok) AS FLOAT)/NULLIF(SUM(num_test),0) AS rate_pass +100 * CAST(SUM(num_ok) AS FLOAT)/NULLIF(SUM(num_test),0) AS rate_pass FROM qm_quastat qmq LEFT JOIN wpm_sflog sflog on sflog.id = qmq.sflog_id LEFT JOIN mtm_mgroup mgroup on mgroup.id = sflog.mgroup_id @@ -190,7 +190,7 @@ qmt."name" AS testitem_name, CAST(SUM(num_test * val_avg) AS FLOAT)/NULLIF(SUM(num_test), 0) AS val_avg, SUM(num_test) AS num_test, SUM(num_ok) AS num_ok, -CAST(SUM(num_ok) AS FLOAT)/NULLIF(SUM(num_test),0) AS rate_pass +100 * CAST(SUM(num_ok) AS FLOAT)/NULLIF(SUM(num_test),0) AS rate_pass FROM qm_quastat qmq LEFT JOIN wpm_sflog sflog on sflog.id = qmq.sflog_id LEFT JOIN mtm_mgroup mgroup on mgroup.id = sflog.mgroup_id diff --git a/能管项目开发周报.md b/能管项目开发周报.md new file mode 100644 index 00000000..974343f5 --- /dev/null +++ b/能管项目开发周报.md @@ -0,0 +1,28 @@ +# 能管项目开发周报 + +## 项目开始至2023-07-14 + +### 工作内容 +整体及后端 + +- 完成需求整理与确认 +- 完成基础模块的搭建,包括用户、部门、角色、权限、运维、工作流等一系列模块 +- 完成报表模块基础功能,支持自定义查询并录入相应报表语句 +- 完成生产管理模块功能,定义物料、班次、班组、工段、目标并实现相应接口 +- 开发设备管理模块,完成设备列表等接口 +- 完成质检模块,定义检验项目,录入检验结果,质检报表数据计算 +- 开发生产执行模块,完成值班记录生成及初始化质检录入等 +- 开发能源管理模块(核心模块),完成定义采集点位,创建点位原始记录表和相应统计表, 编写相应的计算和定时业务逻辑 +- 开发财务成本模块,完成定义费用类型以及相应的费用数据和物料成本数据接口 + +前端页面 + + +三维建模 + + +### 下一步工作内容 +- 继续开发相应模块 +- 模拟电表/水表等数据回传,验证程序可靠性 +- 梳理DCS点位的处理逻辑 +- 继续三维模型的建模工作