导出事件excel part2
This commit is contained in:
parent
73b0ce7cb7
commit
cb33dcb021
|
|
@ -76,8 +76,10 @@ class NotifySettingsSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
class EventSerializer(serializers.ModelSerializer):
|
class EventSerializer(serializers.ModelSerializer):
|
||||||
area_ = AreaSerializer(source='area', read_only=True)
|
area_ = AreaSerializer(source='area', read_only=True)
|
||||||
|
area_name = serializers.CharField(source='area.name', read_only=True)
|
||||||
cates_ = EventCateSimpleSerializer(source='cates', read_only=True, many=True)
|
cates_ = EventCateSimpleSerializer(source='cates', read_only=True, many=True)
|
||||||
employee_ = EmployeeSimpleSerializer(source='employee', read_only=True)
|
employee_ = EmployeeSimpleSerializer(source='employee', read_only=True)
|
||||||
|
employee_name = serializers.CharField(source='employee.name', read_only=True)
|
||||||
operation_name = serializers.CharField(source='opl.operation.name', read_only=True)
|
operation_name = serializers.CharField(source='opl.operation.name', read_only=True)
|
||||||
vchannel_ = TDeviceSimpleSerializer(source='vchannel', read_only=True)
|
vchannel_ = TDeviceSimpleSerializer(source='vchannel', read_only=True)
|
||||||
handle_user_name = serializers.CharField(source='handle_user.name', read_only=True)
|
handle_user_name = serializers.CharField(source='handle_user.name', read_only=True)
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,8 @@ obj_cate_dict = {'people': '人员', 'operation': '作业', 'other': '其他'}
|
||||||
mark_dict = {10: '正常', 20: '误报'}
|
mark_dict = {10: '正常', 20: '误报'}
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
|
|
||||||
class EventCateViewSet(CreateModelMixin, UpdateModelMixin, ListModelMixin, CustomGenericViewSet):
|
class EventCateViewSet(CreateModelMixin, UpdateModelMixin, ListModelMixin, CustomGenericViewSet):
|
||||||
perms_map = {'get': '*', 'put': 'event_cate.update', 'post': 'event_cate.create'}
|
perms_map = {'get': '*', 'put': 'event_cate.update', 'post': 'event_cate.create'}
|
||||||
queryset = EventCate.objects.all()
|
queryset = EventCate.objects.all()
|
||||||
|
|
@ -152,7 +154,8 @@ class EventViewSet(ListModelMixin, RetrieveModelMixin, DestroyModelMixin, Custom
|
||||||
{"name": "事件种类", "type": "str"},
|
{"name": "事件种类", "type": "str"},
|
||||||
{"name": "发生区域", "type": "str"},
|
{"name": "发生区域", "type": "str"},
|
||||||
{"name": "事件类型", "type": "str"},
|
{"name": "事件类型", "type": "str"},
|
||||||
{"name": "事件对象", "type": "str"},
|
{"name": "当事人", "type": "str"},
|
||||||
|
{"name": "所属作业", "type": "str"},
|
||||||
{"name": "发生时间", "type": "str"},
|
{"name": "发生时间", "type": "str"},
|
||||||
{"name": "处理人", "type": "str"},
|
{"name": "处理人", "type": "str"},
|
||||||
{"name": "事件标记", "type": "str"},
|
{"name": "事件标记", "type": "str"},
|
||||||
|
|
@ -168,21 +171,24 @@ class EventViewSet(ListModelMixin, RetrieveModelMixin, DestroyModelMixin, Custom
|
||||||
|
|
||||||
for i in odata:
|
for i in odata:
|
||||||
cates_str = ''
|
cates_str = ''
|
||||||
|
ep_str = ''
|
||||||
for m in i['cates_']:
|
for m in i['cates_']:
|
||||||
cates_str = cates_str + '/' + m['name']
|
cates_str = cates_str + m['name'] + '/'
|
||||||
data.append(
|
data.append(
|
||||||
[
|
[
|
||||||
cates_str,
|
cates_str,
|
||||||
i['area_'].get('name', ''),
|
i.get('area_name', None),
|
||||||
obj_cate_dict[i['obj_cate']],
|
obj_cate_dict[i['obj_cate']],
|
||||||
'test',
|
i.get('employee_name', None),
|
||||||
|
i.get('operation_name', None),
|
||||||
i['create_time'],
|
i['create_time'],
|
||||||
i['handle_user_name'],
|
i.get('handle_user_name', None),
|
||||||
mark_dict[i['mark']],
|
mark_dict[i['mark']],
|
||||||
i['global_img'],
|
i['global_img'],
|
||||||
i['face_img']
|
i['face_img']
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
print(data)
|
||||||
return Response({'path': export_excel_img(field_data, data, '事件记录')})
|
return Response({'path': export_excel_img(field_data, data, '事件记录')})
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ from openpyxl import Workbook, styles
|
||||||
from openpyxl.drawing.image import Image
|
from openpyxl.drawing.image import Image
|
||||||
from openpyxl.utils import get_column_letter, column_index_from_string
|
from openpyxl.utils import get_column_letter, column_index_from_string
|
||||||
|
|
||||||
|
|
||||||
def len_byte(value):
|
def len_byte(value):
|
||||||
# 获取字符串长度,一个中文的长度为2
|
# 获取字符串长度,一个中文的长度为2
|
||||||
length = len(value)
|
length = len(value)
|
||||||
|
|
@ -111,6 +112,7 @@ def export_excel(field_data: list, data: list, FileName: str):
|
||||||
wbk.save(path_name)
|
wbk.save(path_name)
|
||||||
return path + FileNameF
|
return path + FileNameF
|
||||||
|
|
||||||
|
|
||||||
def export_excel_img(field_data: list, data: list, FileName: str):
|
def export_excel_img(field_data: list, data: list, FileName: str):
|
||||||
"""
|
"""
|
||||||
带有image的Excel导出
|
带有image的Excel导出
|
||||||
|
|
@ -126,23 +128,23 @@ def export_excel_img(field_data: list, data: list, FileName: str):
|
||||||
imgs = []
|
imgs = []
|
||||||
|
|
||||||
for index, value in enumerate(field_data):
|
for index, value in enumerate(field_data):
|
||||||
cell = ws.cell(column=index, row=0)
|
cell = ws.cell(column=index+1, row=1)
|
||||||
cell.value = value['name']
|
cell.value = value['name']
|
||||||
cell.font = styles.Font(bold=True)
|
cell.font = styles.Font(bold=True)
|
||||||
letter = get_column_letter(index+1)
|
letter = get_column_letter(index+1)
|
||||||
value['letter'] = letter
|
value['letter'] = letter
|
||||||
ws.column_dimensions[letter].width = 10 #修改列宽
|
ws.column_dimensions[letter].width = 10 # 修改列宽
|
||||||
if value['type'] == 'img':
|
if value['type'] == 'img':
|
||||||
ws.column_dimensions[letter].width = 15 #修改列宽
|
ws.column_dimensions[letter].width = 15 # 修改列宽
|
||||||
|
|
||||||
|
|
||||||
for i1, v1 in enumerate(data):
|
for i1, v1 in enumerate(data):
|
||||||
for i2, v2 in enumerate(v1):
|
for i2, v2 in enumerate(v1):
|
||||||
cell = ws.cell(column=i2, row=i1+1)
|
cell = ws.cell(column=i2+1, row=i1+2)
|
||||||
if v2 and field_data[i2]['type'] == 'img':
|
if v2 and field_data[i2]['type'] == 'img':
|
||||||
ws.row_dimensions[i1+1].height = 70
|
ws.row_dimensions[i1+2].height = 70
|
||||||
img = Image(settings.BASE_DIR + v2, width=90, height=90)
|
img = Image(settings.BASE_DIR + v2)
|
||||||
imgs.append((img, field_data[i2]['letter'] +str(i1+1)))
|
img.width, img.height = (90, 90)
|
||||||
|
imgs.append((img, field_data[i2]['letter'] + str(i1+2)))
|
||||||
else:
|
else:
|
||||||
cell.value = v2
|
cell.value = v2
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue