feat: 返回数据自动约成2位小数
This commit is contained in:
parent
b31d3937f8
commit
a8160867ae
|
@ -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()
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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):
|
||||
"""
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
# 能管项目开发周报
|
||||
|
||||
## 项目开始至2023-07-14
|
||||
|
||||
### 工作内容
|
||||
整体及后端
|
||||
|
||||
- 完成需求整理与确认
|
||||
- 完成基础模块的搭建,包括用户、部门、角色、权限、运维、工作流等一系列模块
|
||||
- 完成报表模块基础功能,支持自定义查询并录入相应报表语句
|
||||
- 完成生产管理模块功能,定义物料、班次、班组、工段、目标并实现相应接口
|
||||
- 开发设备管理模块,完成设备列表等接口
|
||||
- 完成质检模块,定义检验项目,录入检验结果,质检报表数据计算
|
||||
- 开发生产执行模块,完成值班记录生成及初始化质检录入等
|
||||
- 开发能源管理模块(核心模块),完成定义采集点位,创建点位原始记录表和相应统计表, 编写相应的计算和定时业务逻辑
|
||||
- 开发财务成本模块,完成定义费用类型以及相应的费用数据和物料成本数据接口
|
||||
|
||||
前端页面
|
||||
|
||||
|
||||
三维建模
|
||||
|
||||
|
||||
### 下一步工作内容
|
||||
- 继续开发相应模块
|
||||
- 模拟电表/水表等数据回传,验证程序可靠性
|
||||
- 梳理DCS点位的处理逻辑
|
||||
- 继续三维模型的建模工作
|
Loading…
Reference in New Issue