feat:新增pdf 解析状态
This commit is contained in:
parent
9f0c42bc40
commit
2daf093b90
BIN
client/dist.zip
BIN
client/dist.zip
Binary file not shown.
File diff suppressed because one or more lines are too long
|
@ -13,7 +13,7 @@
|
|||
<el-table-column label="EXCEL-名称" prop="excel_name"></el-table-column>
|
||||
<el-table-column label="年度" prop="annual"></el-table-column>
|
||||
<el-table-column label="创建时间" prop="create_time"></el-table-column>
|
||||
|
||||
<el-table-column label="状态" prop="status"></el-table-column>
|
||||
<el-table-column align="center" label="操作" width="120px" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-link type="primary" @click="handleDownload(scope)">下载</el-link>
|
||||
|
|
|
@ -1368,7 +1368,7 @@
|
|||
this.saveLoading = true;
|
||||
this.impForm.task2do =this.task2do;
|
||||
if(this.impType=='rc'){
|
||||
imtpRc(this.impForm).then(res=>{
|
||||
impRc(this.impForm).then(res=>{
|
||||
if(res.code>=200){
|
||||
this.saveLoading = false;
|
||||
this.impDialogVisible = false;
|
||||
|
|
|
@ -122,7 +122,7 @@ import { options } from "runjs";
|
|||
edit: "能力验证结果编辑",
|
||||
},
|
||||
options:[
|
||||
{key:'/',value:0},
|
||||
{key:'未出',value:0},
|
||||
{key:'满意',value:10},
|
||||
{key:'有问题',value:20},
|
||||
{key:'不满意',value:30}
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 3.2.12 on 2024-05-08 09:25
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('information', '0037_alter_parsepdf_annual'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='parsepdf',
|
||||
name='status',
|
||||
field=models.CharField(choices=[('执行中', '执行中'), ('完成', '完成'), ('未完成', '未完成')], default='完成', max_length=100, verbose_name='状态'),
|
||||
),
|
||||
]
|
|
@ -123,12 +123,17 @@ class ExternalAuditors(CommonBDModel):
|
|||
db_table = 'externalauditors'
|
||||
|
||||
class Parsepdf(CommonBDModel):
|
||||
choice_status= (
|
||||
('执行中', '执行中'),
|
||||
('完成', '完成'),
|
||||
('未完成', '未完成'))
|
||||
pdf_path = models.CharField(max_length=100, verbose_name='pdf路径')
|
||||
excel_path = models.CharField(max_length=100, verbose_name='excel路径')
|
||||
parse_excel = models.CharField(max_length=100, verbose_name='解析后excel路径')
|
||||
annual = models.IntegerField(verbose_name='年份', blank=True, null=True)
|
||||
excel_name = models.CharField(max_length=100, verbose_name='excel名称', null=True, blank=True)
|
||||
pdf_name = models.CharField(max_length=100, verbose_name='pdf名称', null=True, blank=True)
|
||||
status = models.CharField(max_length=100, choices=choice_status, verbose_name='状态', default='完成')
|
||||
|
||||
class Meta:
|
||||
verbose_name = '解析pdf'
|
||||
|
|
|
@ -23,8 +23,6 @@ import traceback
|
|||
import shutil
|
||||
|
||||
EXCEL_PATH = os.path.join(settings.BASE_DIR, "media/default/检验检测服务业统计数据上报任务.xlsx")
|
||||
# print("EXCEL_PATH", EXCEL_PATH)
|
||||
# EXCEL_PATH = "C:/code/pdf_exc/检验检测服务业统计数据上报任务-空表.xlsx"
|
||||
|
||||
|
||||
class ImpMixin:
|
||||
|
@ -355,20 +353,28 @@ class ContactViewSet(ImpMixin, CreateUpdateCustomMixin, ModelViewSet):
|
|||
"""
|
||||
return self.gen_imp_view(request, 2, ContactSerializer)
|
||||
|
||||
|
||||
def dont_wait(func):
|
||||
def wrapper(*args, **kwargs):
|
||||
func(*args, **kwargs)
|
||||
return Response({"message": "操作已在后台开始,结果将不会立即返回。"})
|
||||
return wrapper
|
||||
|
||||
import threading
|
||||
|
||||
class ParsePdfViewSet(RbacFilterSet, CreateUpdateCustomMixin, ModelViewSet):
|
||||
queryset = Parsepdf.objects.all()
|
||||
serializer_class = ParsepdfSerializer
|
||||
filterset_fields = ['belong_dept', 'annual']
|
||||
|
||||
|
||||
#解析pdf到excel
|
||||
|
||||
@action(detail=False, methods=['post'])
|
||||
@transaction.atomic
|
||||
def parse_pdf(self, request, *args, **kwargs):
|
||||
"""
|
||||
解析pdf到excel
|
||||
"""
|
||||
|
||||
pdf_file = request.data['pdf_file']
|
||||
annual = request.data['annual']
|
||||
# 读数据路径copy 在media 下新建excel,解析完成后存入数据库。
|
||||
|
@ -379,8 +385,7 @@ class ParsePdfViewSet(RbacFilterSet, CreateUpdateCustomMixin, ModelViewSet):
|
|||
save_path = os.path.join(media_excel, os.path.basename(EXCEL_PATH))
|
||||
server_pdf_path = settings.BASE_DIR + pdf_file
|
||||
download_excel_path = save_path.split("server")[-1]
|
||||
run(server_pdf_path, save_path)
|
||||
Parsepdf.objects.create(
|
||||
ps = Parsepdf.objects.create(
|
||||
pdf_path=pdf_file,
|
||||
excel_path= EXCEL_PATH,
|
||||
parse_excel = download_excel_path,
|
||||
|
@ -389,9 +394,16 @@ class ParsePdfViewSet(RbacFilterSet, CreateUpdateCustomMixin, ModelViewSet):
|
|||
create_time = datetime.now(),
|
||||
annual = annual,
|
||||
excel_name = os.path.basename(EXCEL_PATH),
|
||||
pdf_name = os.path.basename(pdf_file)
|
||||
pdf_name = os.path.basename(pdf_file),
|
||||
status = "执行中"
|
||||
)
|
||||
return Response({"message":"解析成功", "url":save_path}, status = status.HTTP_200_OK)
|
||||
t = threading.Thread(target=run, args=(server_pdf_path, save_path, Parsepdf, ps.id))
|
||||
t.start()
|
||||
return Response({"message":"解析中", "url":save_path}, status = status.HTTP_200_OK)
|
||||
# msg = run(server_pdf_path, save_path)
|
||||
# if msg == "success":
|
||||
# Parsepdf.objects.update(id=ps.id, status="成功")
|
||||
# return Response({"message":"解析成功", "url":save_path}, status = status.HTTP_200_OK)
|
||||
|
||||
|
||||
class ExternalAuditorsViewSet(ImpMixin, RbacFilterSet, CreateUpdateCustomMixin, ModelViewSet):
|
||||
|
|
|
@ -18,24 +18,24 @@ DATABASES = {
|
|||
# # 'HOST': '1.203.161.102',
|
||||
# 'PORT': '5432',
|
||||
# }
|
||||
# 'default': {
|
||||
# 'ENGINE': 'django.db.backends.postgresql',
|
||||
# 'NAME': 'cma',
|
||||
# 'USER': 'postgres',
|
||||
# 'PASSWORD': 'zcDsj2021',
|
||||
# 'HOST': '49.232.14.174',
|
||||
# # 'HOST': '1.203.161.102',
|
||||
# 'PORT': '5432',
|
||||
# },
|
||||
'default': {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.postgresql',
|
||||
'NAME': 'cma',
|
||||
'USER': 'cma',
|
||||
'PASSWORD': 'cma123',
|
||||
# 'HOST': '127.0.0.1',
|
||||
'HOST': '1.203.161.102',
|
||||
'USER': 'postgres',
|
||||
'PASSWORD': 'zcDsj2021',
|
||||
'HOST': '49.232.14.174',
|
||||
# 'HOST': '1.203.161.102',
|
||||
'PORT': '5432',
|
||||
}
|
||||
# 'default': {
|
||||
# 'ENGINE': 'django.db.backends.postgresql',
|
||||
# 'NAME': 'cma',
|
||||
# 'USER': 'cma',
|
||||
# 'PASSWORD': 'cma123',
|
||||
# 'HOST': '127.0.0.1',
|
||||
# # 'HOST': '1.203.161.102',
|
||||
# 'PORT': '5432',
|
||||
# }
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -343,7 +343,7 @@ def get_index(text, pattern, span):
|
|||
remain_text = text[start_index:start_index+span]
|
||||
return remain_text
|
||||
|
||||
def run(pdf_path, excel_path):
|
||||
def run(pdf_path, excel_path, Parsepdf, id):
|
||||
# 提取PDF文本
|
||||
text = extract_text_from_pdf(pdf_path)
|
||||
with open("pdf2txt.txt", "w", encoding="utf-8") as f:
|
||||
|
@ -379,7 +379,8 @@ def run(pdf_path, excel_path):
|
|||
fill_excel(res_many[u], excel_path, l[u])
|
||||
else:
|
||||
return
|
||||
return ''
|
||||
Parsepdf.objects.update(id=id, status="完成")
|
||||
return 'success'
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
Loading…
Reference in New Issue