From cf9e8ba23ecea60c9870c19201aacef052fd642d Mon Sep 17 00:00:00 2001 From: zty Date: Fri, 26 Apr 2024 11:03:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=96=B0=E5=A2=9E=E5=AE=9E=E9=AA=8C?= =?UTF-8?q?=E5=AE=A4=E5=B9=B4=E5=BA=A6=E6=8A=A5=E5=91=8A=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=E5=92=8C=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/api/contacts.js | 8 +- client/src/api/report.js | 24 + .../views/informatiomCollect/yearReport.vue | 152 ++- .../migrations/0032_auto_20240425_1736.py | 41 + .../migrations/0033_auto_20240425_1805.py | 21 + .../migrations/0034_parsepdf_year.py | 18 + .../migrations/0035_auto_20240426_0920.py | 27 + .../migrations/0036_parsepdf_annual.py | 18 + server/apps/information/models.py | 12 + server/apps/information/serializers.py | 6 +- server/apps/information/urls.py | 3 +- server/apps/information/views.py | 34 +- server/pdf2txt.txt | 882 ++++++++++++++++++ 13 files changed, 1186 insertions(+), 60 deletions(-) create mode 100644 client/src/api/report.js create mode 100644 server/apps/information/migrations/0032_auto_20240425_1736.py create mode 100644 server/apps/information/migrations/0033_auto_20240425_1805.py create mode 100644 server/apps/information/migrations/0034_parsepdf_year.py create mode 100644 server/apps/information/migrations/0035_auto_20240426_0920.py create mode 100644 server/apps/information/migrations/0036_parsepdf_annual.py diff --git a/client/src/api/contacts.js b/client/src/api/contacts.js index 194130d..29ba669 100644 --- a/client/src/api/contacts.js +++ b/client/src/api/contacts.js @@ -53,10 +53,4 @@ export function getCtAll(query) { }) } - export function parsePDF(data) { - return request({ - url: `/info/contact/parse_pdf/`, - method: 'post', - data - }) - } \ No newline at end of file + \ No newline at end of file diff --git a/client/src/api/report.js b/client/src/api/report.js new file mode 100644 index 0000000..8b64127 --- /dev/null +++ b/client/src/api/report.js @@ -0,0 +1,24 @@ +import request from '@/utils/request' + +export function parsePDF(data) { + return request({ + url: `/info/pdf/parse_pdf/`, + method: 'post', + data + }) + } + + export function pdfAll(query) { + return request({ + url: '/info/pdf/', + method: 'get', + params: query + }) + } + +export function getpdf(id) { + return request({ + url: `/info/pdf/${id}/`, + method: 'get' + }) +} \ No newline at end of file diff --git a/client/src/views/informatiomCollect/yearReport.vue b/client/src/views/informatiomCollect/yearReport.vue index 2949cbd..3a7f04c 100644 --- a/client/src/views/informatiomCollect/yearReport.vue +++ b/client/src/views/informatiomCollect/yearReport.vue @@ -3,6 +3,26 @@ 导入文件 + + + + + + + + + + + + + + - 上传文件 - + - - - 上传文件 - - - + + + + + +
取消 @@ -55,8 +71,7 @@ import checkPermission from "@/utils/permission"; import Pagination from "@/components/Pagination"; // secondary package based on el-pagination import Treeselect from "@riophae/vue-treeselect"; import "@riophae/vue-treeselect/dist/vue-treeselect.css"; -import { parsePDF } from "@/api/contacts"; -import { getMyQi} from "@/api/qualificationInfo"; +import { parsePDF, pdfAll, getpdf } from "@/api/report"; import { upUrl, upHeaders } from "@/api/file"; @@ -64,20 +79,30 @@ export default { components: { Pagination, Treeselect }, data(){ return { + form:{ + pdf_file:'', + annual:'', + }, isoading: false, //是否正在加载数据 upHeaders: upHeaders(), upUrl: upUrl(), fileList: [], - fileList_res:[], + listLoading: false, dialogVisible: false, showExportDialog: false, saveLoading:false, impDialogVisible: false, downloadUrl: process.env.VUE_APP_BASE_API, - impForm:{ - pdf_file:'', - excel_file:'', - }, + excelUrl:'', + selectedYear:'', + tableData: { + count: 0 + }, + listQuery: { + page: 1, + page_size: 20, + }, + years: Array.from({ length: 10 }, (_, i) => i + new Date().getFullYear() - 5) }; }, mounted() { @@ -85,6 +110,7 @@ export default { let height1 = document.getElementsByClassName('app-main')[0].clientHeight; let height2 = document.getElementsByClassName('elHeader')[0].clientHeight; that.tableHeight = height1 - height2 - 70; + that.getList(); }, methods: { handleImport(){ @@ -97,26 +123,63 @@ export default { close_dialog(){ this.impDialogVisible = false; this.fileList = []; - this.fileList_res = []; - this.impForm.pdf_file = ''; - this.impForm.excel__file = ''; + this.form.pdf_file = ''; + }, + getTableList(){ + this.getList() + }, submitUpload() { this.$refs.upload.submit(); this.impDialogVisible = false; this.saveLoading = true; - console.log(this.impForm) - parsePDF(this.impForm).then(res=>{ + console.log(this.form) + parsePDF(this.form).then(res=>{ if(res.code>=200){ - downloadFile(res.data.url) + // downloadFile(res.data.url) this.saveLoading = false; - this.$message.success("解析成功"); + // this.$message.success("解析成功"); + this.fileList = []; + this.form.pdf_file = ''; + this.getList(); }else{ this.$message.error(res.message); this.saveLoading = false; + this.fileList = []; + this.getList(); } }) }, + getList() { + this.listLoading = true; + this.tableData.results =[]; + this.tableData.count =0; + pdfAll(this.listQuery).then((response) => { + console.log(response); + if (response.data) { + this.tableData = response.data; + } + this.listLoading = false; + } + ); + }, + handleDownload(scope) { + this.listLoading = true; + this.dialogTableVisible=true; + console.log(scope.row.id); + getpdf(scope.row.id).then((response) => { + if (response.code>=200) { + console.log(response.data.excel_path); + downloadFile(response.data.excel_path) + this.listLoading = false; + }else{ + alert('服务器内部错误,请稍后再试') + this.dialogTableVisible=false; + this.listLoading = false; + return + } + }); + }, downloadFile(url) { const link = document.createElement('a'); link.href = url; @@ -125,31 +188,26 @@ export default { document.body.appendChild(link); link.click(); document.body.removeChild(link); - } - }, + }, handlePreview(file) { - if ("url" in file) { - window.open(file.url); - } else { - window.open(file.response.data.path); - } - }, + if ("url" in file) { + window.open(file.url); + } else { + window.open(file.response.data.path); + } + }, handleUpSuccess(res, file, filelist) { this.fileList = [file]; - this.impForm.pdf_file = res.data.path; + console.log(res.data.path); + this.form.pdf_file = res.data.path; }, - handleUpSuccess_res(res, file, filelist) { - this.fileList_res = [file]; - this.impForm.excel_file = res.data.path; - }, handleRemove(file, filelist) { this.Content.file = null; this.fileList = []; - this.impForm.pdf_file = ''; - this.impForm.excel_file = ''; }, checkPermission, - + }, + }; diff --git a/server/apps/information/migrations/0032_auto_20240425_1736.py b/server/apps/information/migrations/0032_auto_20240425_1736.py new file mode 100644 index 0000000..3026f0d --- /dev/null +++ b/server/apps/information/migrations/0032_auto_20240425_1736.py @@ -0,0 +1,41 @@ +# Generated by Django 3.2.12 on 2024-04-25 09:36 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('system', '0023_alter_user_first_name'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('information', '0031_qualification_change_date'), + ] + + operations = [ + migrations.AlterField( + model_name='contact', + name='name', + field=models.CharField(max_length=20, unique=True, verbose_name='公司名称'), + ), + migrations.CreateModel( + name='Parsepdf', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), + ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), + ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), + ('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路径')), + ('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='parsepdf_belong_dept', to='system.organization', verbose_name='所属部门')), + ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='parsepdf_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), + ('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='parsepdf_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/server/apps/information/migrations/0033_auto_20240425_1805.py b/server/apps/information/migrations/0033_auto_20240425_1805.py new file mode 100644 index 0000000..137f696 --- /dev/null +++ b/server/apps/information/migrations/0033_auto_20240425_1805.py @@ -0,0 +1,21 @@ +# Generated by Django 3.2.12 on 2024-04-25 10:05 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('information', '0032_auto_20240425_1736'), + ] + + operations = [ + migrations.AlterModelOptions( + name='parsepdf', + options={'verbose_name': '解析pdf'}, + ), + migrations.AlterModelTable( + name='parsepdf', + table='parsepdf', + ), + ] diff --git a/server/apps/information/migrations/0034_parsepdf_year.py b/server/apps/information/migrations/0034_parsepdf_year.py new file mode 100644 index 0000000..c3bd2d3 --- /dev/null +++ b/server/apps/information/migrations/0034_parsepdf_year.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2024-04-26 00:58 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('information', '0033_auto_20240425_1805'), + ] + + operations = [ + migrations.AddField( + model_name='parsepdf', + name='year', + field=models.IntegerField(default=2024, verbose_name='年份'), + ), + ] diff --git a/server/apps/information/migrations/0035_auto_20240426_0920.py b/server/apps/information/migrations/0035_auto_20240426_0920.py new file mode 100644 index 0000000..8ac5c60 --- /dev/null +++ b/server/apps/information/migrations/0035_auto_20240426_0920.py @@ -0,0 +1,27 @@ +# Generated by Django 3.2.12 on 2024-04-26 01:20 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('information', '0034_parsepdf_year'), + ] + + operations = [ + migrations.RemoveField( + model_name='parsepdf', + name='year', + ), + migrations.AddField( + model_name='parsepdf', + name='excel_name', + field=models.CharField(blank=True, max_length=100, null=True, verbose_name='excel名称'), + ), + migrations.AddField( + model_name='parsepdf', + name='pdf_name', + field=models.CharField(blank=True, max_length=100, null=True, verbose_name='pdf名称'), + ), + ] diff --git a/server/apps/information/migrations/0036_parsepdf_annual.py b/server/apps/information/migrations/0036_parsepdf_annual.py new file mode 100644 index 0000000..66cdae3 --- /dev/null +++ b/server/apps/information/migrations/0036_parsepdf_annual.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2024-04-26 02:02 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('information', '0035_auto_20240426_0920'), + ] + + operations = [ + migrations.AddField( + model_name='parsepdf', + name='annual', + field=models.IntegerField(default=2024, verbose_name='年份'), + ), + ] diff --git a/server/apps/information/models.py b/server/apps/information/models.py index f9d5f64..b6bb033 100644 --- a/server/apps/information/models.py +++ b/server/apps/information/models.py @@ -121,3 +121,15 @@ class ExternalAuditors(CommonBDModel): class Meta: verbose_name = '外审员情况' db_table = 'externalauditors' + +class Parsepdf(CommonBDModel): + 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='年份', default=2024) + 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) + + class Meta: + verbose_name = '解析pdf' + db_table = 'parsepdf' diff --git a/server/apps/information/serializers.py b/server/apps/information/serializers.py index 00ea47b..84aab45 100644 --- a/server/apps/information/serializers.py +++ b/server/apps/information/serializers.py @@ -1,7 +1,7 @@ from rest_framework import serializers from apps.system.serializers import OrganizationSimpleSerializer from apps.system.models import Organization -from .models import AbilityReview, QualityCommendation, QualityActivities, Contact, ExternalAuditors, AuditLog, Qualification +from .models import AbilityReview, QualityCommendation, QualityActivities, Contact, ExternalAuditors, AuditLog, Qualification, Parsepdf from django.utils import timezone class BaseMeta: @@ -63,4 +63,8 @@ class AuditLogSerializer(serializers.ModelSerializer): model = AuditLog fields = '__all__' +class ParsepdfSerializer(serializers.ModelSerializer): + class Meta(BaseMeta): + model = Parsepdf + fields = '__all__' diff --git a/server/apps/information/urls.py b/server/apps/information/urls.py index 120530f..22ce090 100644 --- a/server/apps/information/urls.py +++ b/server/apps/information/urls.py @@ -1,6 +1,6 @@ from django.urls import path, include from rest_framework import routers -from .views import AbilityReviewViewSet, AuditLogViewSet, QualityCommendationViewSet, QualityActivitiesViewSet, QualiChangeViewSet, ContactViewSet, ExternalAuditorsViewSet, QualificationViewSet +from .views import AbilityReviewViewSet, AuditLogViewSet, QualityCommendationViewSet, QualityActivitiesViewSet, ParsePdfViewSet, QualiChangeViewSet, ContactViewSet, ExternalAuditorsViewSet, QualificationViewSet router = routers.DefaultRouter() router.register('ar', AbilityReviewViewSet, basename='abilityreviews') @@ -11,6 +11,7 @@ router.register('ea', ExternalAuditorsViewSet, basename='externalauditors') router.register('faq', QualificationViewSet, basename='faq') router.register('faqch', QualiChangeViewSet, basename='faqch') router.register('ad', AuditLogViewSet, basename='ad') +router.register('pdf', ParsePdfViewSet, basename='pdf') urlpatterns = [ path('', include(router.urls)) diff --git a/server/apps/information/views.py b/server/apps/information/views.py index a28ed25..9fcd803 100644 --- a/server/apps/information/views.py +++ b/server/apps/information/views.py @@ -16,6 +16,10 @@ from utils.pdf2txt import run from datetime import datetime import os import traceback +import shutil + +# EXCEL_PATH = os.path.join(settings.BASE_DIR, 'excel') +EXCEL_PATH = "C:/code/pdf_exc/检验检测服务业统计数据上报任务-空表.xlsx" class ImpMixin: @@ -345,7 +349,13 @@ class ContactViewSet(ImpMixin, CreateUpdateCustomMixin, ModelViewSet): 导入数据 """ return self.gen_imp_view(request, 2, ContactSerializer) - + +class ParsePdfViewSet(CreateUpdateCustomMixin, ModelViewSet): + queryset = Parsepdf.objects.all() + serializer_class = ParsepdfSerializer + filterset_fields = ['belong_dept', 'annual'] + + #解析pdf到excel @action(detail=False, methods=['post']) @transaction.atomic @@ -355,13 +365,29 @@ class ContactViewSet(ImpMixin, CreateUpdateCustomMixin, ModelViewSet): """ try: pdf_file = request.data['pdf_file'] - excel_file = request.data['excel_file'] + annual = request.data['year'] # 读数据路径copy 在media 下新建excel,解析完成后存入数据库。 - run(pdf_file, excel_file) + media_excel = os.path.join(os.path.dirname(EXCEL_PATH),"media_excel") + if not os.path.exists(media_excel): + os.makedirs(media_excel) + shutil.copy(EXCEL_PATH, media_excel) + save_path = os.path.join(media_excel, os.path.basename(EXCEL_PATH)) + run(pdf_file, save_path) except Exception: traceback.print_exc() return Response({"message":"解析失败"}, status = status.HTTP_400_BAD_REQUEST) - return Response({"message":"解析成功", "url":excel_file}, status = status.HTTP_200_OK) + Parsepdf.objects.create( + pdf_path=pdf_file, + excel_path= EXCEL_PATH, + parse_excel = save_path, + belong_dept = request.user.dept, + create_by = request.user, + create_time = datetime.now(), + annual = annual, + excel_name = os.path.basename(EXCEL_PATH), + pdf_name = os.path.basename(pdf_file) + ) + return Response({"message":"解析成功", "url":save_path}, status = status.HTTP_200_OK) class ExternalAuditorsViewSet(ImpMixin, RbacFilterSet, CreateUpdateCustomMixin, ModelViewSet): diff --git a/server/pdf2txt.txt b/server/pdf2txt.txt index e69de29..c4c0457 100644 --- a/server/pdf2txt.txt +++ b/server/pdf2txt.txt @@ -0,0 +1,882 @@ +2023/12/4 17:08 +检验检测机构数据查看页! +qts.cnca.cn/qts/datareport/datareport/JyjcDataViewFlow.flow?repId=40288277857770f1018585ae16006421 +1/13 +上报流程 +机构分析图 +2023/12/4 17:08 +检验检测机构数据查看页! +qts.cnca.cn/qts/datareport/datareport/JyjcDataViewFlow.flow?repId=40288277857770f1018585ae16006421 +2/13 +基本情况 +01 +单位类型(01-1): 法人单位 +统一社会信用代码(财务所属法人单位)(01-3/01- +4): 91110000101123421K +  +02 +法人单位名称(02-1): 中国国检测试控股集团股份有限公司 +法人单位行业分类代码(四位数字): 7452 +03 +03-1 单位注册地址及行政区划 北京市 朝阳区   (110105)    管庄东里1号科研生产区南楼 +03-2 单位所在地址及行政区划 北京市 朝阳区   (110105)    管庄东里1号科研生产区南楼 +其他地址: 北京市 通州区   (110112)    工业开发区光华路1号 +其他地址: 海南省 定安县   (469021)    塔岭新区(二园)西三环路南侧 +其他地址: 北京市 通州区   (110112)    永顺镇安顺路207号 +其他多场所地址    其他地址四:北京市 市辖区 顺义区(101399) 北务镇庄子村木燕路18号 +(玺达农庄)顺义区种植园 其他地址五:北京市 市辖区 朝阳区(100024)管庄东里1号国检大 +楼三层 其他地址六:河北省 唐山市 玉田县(064100) 西环路618号 其他地址七:北京市 密云 +区 (101599)经济开发区雁密路南侧1号 其他地址八:北京市 市辖区 朝阳区(100124)平乐 +2023/12/4 17:08 +检验检测机构数据查看页! +qts.cnca.cn/qts/datareport/datareport/JyjcDataViewFlow.flow?repId=40288277857770f1018585ae16006421 +3/13 +园100号北京工业大学理科楼M521、M522室 其他地址九:四川省 成都市 市辖区 经济技术开发 +区(龙泉驿区)(610101) 成龙大道二段1666号C3栋3层9号 其他地址十:河南省 开封市 兰考 +县(475300)恒大家居产业园国检集团 其他地址十一:福建省 泉州市南安市(362300) 水头 +镇石材产业展示运营中心10号门 +本机构是否处于国务院公布的自由贸易试验区内: 否 +05 +法定代表人(单位负责人):马振珠 +开业(成立)时间: 1984-10-18 +06 +联系方式(请填写上报负责人的联系方式) +长途区 +号: 010 +固定电话: 51167391 +电话分机号:   +移动电 +话: 13381289695 +传真号码: 51167352 +传真分机号:   +邮政编 +码: 100024 +电子邮箱: sxh@ctc.ac.cn +网址: www.ctc.ac.cn +07 +所属管辖区: 北京市 朝阳区 +08 +是否含有外资: 否                   登记注册类型: 160 股份有限公司 +09 +机构类型: 企业                   +是否由事业单位转企改制而来: 否 +是否是企业集团:   是 +母公司名称:中国国检测试控股集团股份有限公司 +10 +执行会计标准类别: 企业单位会计制度                            其中,执行企业会计准则情况: 执行 +《企业会计准则》 +11 +企业控股情况: 国有控股 +12 +营业状态: 营业 +13 +高新技术企业认定情况: +是否高新技术企业认定: 是 +认定或复审高新技术企业证书编号: GR202011003097    +企业被认定(复审)为高新技术企业的日期: 上市挂牌时间:2020-10-21 +14 +上市及新三板挂牌情况: +是否境内上市和在新三板挂牌? 是 +  +15 +检验检测机构投保情况(可填多项): +1检验检测机构责 +任险: +无 +保费支出0.0万元 +2检验检测人员职 +业责任险: +无 +保费支出0.0万元 +3其他险种 +  +保费支出万元 +  +16 +检验检测领域: +按照国民经济行业分类,检验检测服务涉及的行业领域代码: +房屋建筑业,建筑装饰、装修和其他建筑业,专业技术服务业,科技推广和应用服务业 +按照检验检测的产品进行分类,检验检测涉及的产品分类代码: +2023/12/4 17:08 +检验检测机构数据查看页! +qts.cnca.cn/qts/datareport/datareport/JyjcDataViewFlow.flow?repId=40288277857770f1018585ae16006421 +4/13 +15:石、砂和粘土等非金属矿及其采选品,18:水,36:橡胶和塑料制品,37:玻璃和玻璃制品及其他非金属 +制品,38:家具;其他不另分类的可运输物品,41:主要金属材料,53:建筑工程 +检验检测领域分类代码: +建设工程与建材,无损检测,电磁兼容,化学,电气 +专业领域专业领域请填写本机构检测的主要领域,至少填写1个,最多填写5个, +百分比请按照收入比例进行选择。 +领域一建筑材料 +业 +务 +收 +入 +占 +比 + 75%  +该 +领 +域 +业 +务 +饱 +和 +度 + 100%  +领域二建筑工程 +业 +务 +收 +入 +占 +比 + 20%  +该 +领 +域 +业 +务 +饱 +和 +度 + 100%  +领域三环境监测 +业 +务 +收 +入 +占 +比 + 5%  +该 +领 +域 +业 +务 +饱 +和 +度 + 100%  +领域四  +业 +务 +收 +入 +占 +比 + %  +该 +领 +域 +业 +务 +饱 +和 +度 + %  +领域五  +业 +务 +收 +入 +占 +比 + %  +该 +领 +域 +业 +务 +饱 +和 +度 + %  +其他领域描述:  光伏产品  +检验检测服务关键词: 房屋,建筑,工程,环境  +  +17 +本机构拥有国家市场监督管理部门颁发的有效期内(以下同)检验检测机 +构资质认定证书: +1  张 +省级质量技术监督(市场监督管理部门)颁发的资质认定证书: +3  张 +国家市场监督管理部门颁发的特种设备检验检测机构核准证: +0  张 +省级市场监督管理部门颁发的特种设备检验检测机构核准证: +0  张 +2023/12/4 17:08 +检验检测机构数据查看页! +qts.cnca.cn/qts/datareport/datareport/JyjcDataViewFlow.flow?repId=40288277857770f1018585ae16006421 +5/13 +其他行业管理部门颁发的资质、资格证书: +5  张 +中国合格评定国家认可中心颁发的: +4  张 +其他社会组织、团体颁发的证书: +0  张 +境外认可机构颁发证书: +0  张,  境外认可机构 +名称 : +资质证书状况(02) +本机构是 +否建有国 +家**产品 +质检中 +心: +是 +18 +本检验检测机构当年接受各类技术评审:  11 次,其中: +接受资质认定技术 +评审: +4  次 +  其中国家市场监 +管部门组织检查: +3  次 +  省级及以下质量 +技术监督部门(市 +场监管部门)组织 +评审: +1  次 +接受行业管理部门 +组织技术评审: +1  次 +  其中国家行业管 +理部门组织评审: +0  次 +  省级及以下行业 +管理部门组织评审:; 1  次 +接受认可机构评审: 3  次 +接受其他社会组 +织、团体及境内外 +评价机构评审: +3  次 +19 +本检验检测机构当年接受各类监督检查   6  项(次),其中: +接受资质认定专项监督检查: +2  项(次) +  其中国家市场监管部门组织检查: +0  项(次) +  省级及以下质量技术监督部门(市场监管部门) +组织检查: +2  项(次) +接受行业管理部门监督检查: +4  项(次) +  其中国家行业管理部门组织检查: +0  项(次) +  省级及以下行业管理部门组织检查: +4  项(次) +接受其他社会组织、团体及境内外评价机构监督检 +查: +0  项(次) +20 +本单位是否处于国家检验检测认证公共服务平台示范区: 否 +  +21 +本单位处于工业园区(开发区): 否 +  +22 +是否加入国内外产业联盟: 是 +2023/12/4 17:08 +检验检测机构数据查看页! +qts.cnca.cn/qts/datareport/datareport/JyjcDataViewFlow.flow?repId=40288277857770f1018585ae16006421 +6/13 +产业联盟1名称: 中关村材料试验技术联盟 +产业联盟2名称: 中关村检验检测认证产业技术 +联盟 +产业联盟3名称: +产业联盟4名称: +23 +是否加入国内外行业协会组织: 是 +行业协会1名称: 中国建筑材料联合 +会 +行业协会2名称: 美国材料与试验协 +会 +  +财务情况 +指标名称 +代码 +本年(单位:万元) +上年(单位:万元) +  +存货 +01 +0 +0 +固定资产原值(原价) +02 +29,090.1 +25,458.8 +累计折旧 +03 +11,661.6 +8,674.7 +其中,本年折旧 +04 +2,986.9 +1,415.9 +资产总计 +05 +218,027 +182,236.3 +负债合计 +06 +118,986 +95,547.5 +营业收入 +07 +40,025.5 +34,691.9 +营业成本 +08 +22,412.8 +22,930.1 +营业税金及附加 +09 +221.9 +142.6 +销售费用 +10 +908.3 +828.1 +管理费用 +11 +5,542.5 +3,162.7 +         其中,税金 +12 +0 +0 +         差旅费 +13 +23.7 +125.2 +财务费用 +14 +0 +0 +         其中,利息净支出 +15 +0 +0 +资产减值损失 +16 +15.5 +9.8 +公允价值变动收益 +17 +0 +0 +投资收益 +18 +0 +0 +其他收益 +19 +1,163.2 +1,022.2 +营业利润 +20 +12,087.8 +8,640.9 +营业外收入 +21 +459.3 +473.6 +营业外支出 +23 +61.7 +72.5 +利润总额 +24 +12,485.3 +9,041.9 +2023/12/4 17:08 +检验检测机构数据查看页! +qts.cnca.cn/qts/datareport/datareport/JyjcDataViewFlow.flow?repId=40288277857770f1018585ae16006421 +7/13 +净利润 +25 +10,612.5 +7,685.7 +所得税费用 +26 +1,872.8 +1,356.3 +应付职工薪酬(本期贷方 +累计发生额) +27 +14,148.5 +12,550.3 +本年应交增值税(本期累 +计发生额) +28 +1,461.1 +1,098.3 +  +业务情况 +00 +主要检验检测业务活动【多选】(00) +检验检测业务活动类型(可多选)(00-1): 检测,检验,鉴定,安全性评价,其他 +检验检测业务活动特点(00-2) 固定实验室+便携设备(包括移动检测车)现场检测 +  +01 +检验检测业务状况(01) +业务量以及组成(01-1) +检验检测报告数合计: +67931  份 +   其中,所检验检测项目出现不符合或不 +合格的报告数:    +1739  份 +   其中,为省(自治区、直辖市)外出具 +检验检测报告数: +39214  份 +行政执法或政府委托检验检测 +报告份数13214份(01-101-1) +收入 3502.8万元(01-101-2) +   其中,当年承担产品质量国家监督抽查 +工作出具检验检测报告数: +587  份 +   其中,当年承担产品质量地方监督抽查 +工作出具检验检测报告数: +540  份 +   其中,当年承担3C强制性认证检验检 +测报告数: +12087  份 +   其中,当年承担生产许可证检验检测报 +告数数: +0  份 +社会委托检验检测 +报告份数 53121 份(01-102-1) 收入 24084.4 万元(01-102-2) +   其中,个人委托检验检测报告: + 0%  +   其中,单位委托检验检测报告: + 100%  +司法鉴定、仲裁检验检测 +报告份数 0 份(01-103-1) +收入 0.0 万元(01-103-2) +   其中,出具司法鉴定意见书: +0  份 +其他技术服务 +报告份数 1596 份(01-104-1) +收入 539.8 万元(01-104-2) +01-2 +特殊检测领域(选填,限实际提供相关服务的机构填报) +01-201 +是否服务制造业企业(选是,继续填报以下 +内容) +是 +服务制造业企业的业务收入占总收入: +95.0%   服务制造业企业的业务收入较去年 +增长: +0.0%   +01-202 +是否服务个人消费者(选是,继续填报以下 +内容) +是 +服务个人消费者的业务收入占总收入: +5.0%   服务个人消费者的业务收入较去年年 +增长: +0.0%   +2023/12/4 17:08 +检验检测机构数据查看页! +qts.cnca.cn/qts/datareport/datareport/JyjcDataViewFlow.flow?repId=40288277857770f1018585ae16006421 +8/13 +01- +203 +是否为高技术产业(制造业)提供检验检测服 +务 +否 +01- +204 +是否为战略性新兴产业提供检验检测服务 +是 +2.按照《战略性新兴产业分类(2018)》(试行),检验检测服务涉及战兴名称: 太阳能设备 +和生产装备制造,太阳能材料制造,太阳能发电运营维护,太阳能工程施工,太阳能工程技术服务,核 +电工程技术服务,绿色节能建筑材料制造,环境保护及污染治理服务,环保工程施工   +战略性新兴产业检测领域业务量:  +   新一代信息技术产业,业务比重: +% +   高端装备,业务比重: +% +   新材料,业务比重: +80% +   生物产业,业务比重: +% +   新能源汽车,业务比重: +% +   新能源产业,业务比重: +10% +   节能环保,业务比重: +10% +02 +证书上传已移至基本情况第“17”项 +03 +资源状况(03) +    仪器设备资源状况(03-101) +    全部仪器设备 +5009 台套(03-101) +        其中,50万元 +以上仪器设备 +149 台套(03-101-1) +          50-100万元 +仪器设备在用 +93 台套 ,闲置 0 台套 ,待报废 0 台套 +          100-200万仪 +器设备在用 +45 台套 ,闲置 0 台套 ,待报废 0 台套 +          200万元以上 +仪器设备在用 +10 台套 ,闲置 1 台套 ,待报废 0 台套 +        其中,进口仪 +器设备 +636 台套(03-101-2) +     全部仪器设备资 +产原值 +35369.6 万元(03-102) +        其中,50万元 +以上仪器设备资产 +原值 +16367.8 万元(03-102-1) +          50-100万元 +仪器设备资产(在 +用)原值 +6598.6 万元 +            闲置仪器设 +备原值 +0.0 万元 +            待报废仪器 +设备原值 +0.0 万元 +          100-200万仪 +器设备资产(在 +用)原值 +6149.8 万元 +             闲置仪器设 +备原值 +0.0 万元 +            待报废仪器 +设备原值 +0.0 万元 +2023/12/4 17:08 +检验检测机构数据查看页! +qts.cnca.cn/qts/datareport/datareport/JyjcDataViewFlow.flow?repId=40288277857770f1018585ae16006421 +9/13 +          200万元以上 +仪器设备(在用) +原值 +3085.1 万元 +            闲置仪器设 +备原值 +534.3 万元 +            待报废仪器 +设备原值 +0.0 万元 +         其中,进口仪 +器设备资产原值 +13892.6 万元(03-102-2) +     与检验检测相关 +的固定资产原值 +(设备) +35369.6 万元(03-103) +     当年新增仪器设 +备 +240 台套(03-104) +        其中,当年新 +增50万元以上仪器 +设备(设备) +5 台套(03-104-1) +           其中,50- +100万元仪器设备 +1 台套 +          其中,100- +200万仪器设备 +3 台套 +           其中,200 +万以上仪器设备 +1 台套 +     当年新增仪器设 +备原值合计 +2054.0 万元(03-105) +        其中,当年新增 +50万元以上仪器设 +备资产原值 +1294.4 万元(03-105-1) +           其中,50-100 +万元仪器设备资产 +原值 +92.0 万元 +          其中,100- +200万仪器设备资产 +原值 +362.6 万元 +           其中,200万 +元以上仪器设备资 +产原值 +839.8 万元 +     是否愿意将仪器 +设备对外共享: +否 (03-106) +工作面积状况(03-2) +     机构总面积 +50528.0 平方米(03-201) +         其中办公面积11464.0 平方米(03-201-1) +         实验室面积 +39064.0 平方米(03-201-2) +             其中,恒温 +恒湿实验室 +1243.0 平方米(03-201-201) +             其中,P2 +以上生物安全实验 +室 +80.0 平方米(03-201-202) +             其中,二恶 +英实验室 +0.0 平方米(03-201-203) +             其中,电磁 +屏蔽实验室 +18.0 平方米(03-201-204) +             其中,消声 +实验室 +44.0 平方米(03-201-205) +             其中,放射 +性实验室 +106.0 平方米(03-201-206) +2023/12/4 17:08 +检验检测机构数据查看页! +qts.cnca.cn/qts/datareport/datareport/JyjcDataViewFlow.flow?repId=40288277857770f1018585ae16006421 +10/13 +             其中,动物 +房 +3.0 平方米(03-201-207) +         专用室外试验 +场 +4200.0 平方米(03-201-208) +检测能力状况(03-3) +机构获得资质认定(计量认证)的检测能力中: +     参数 21384 项(03-301-1) , 产品标准 118 项(03-301-2) , 方法标准 5445 项(03-301-3) +人力资源状况(03-4) +检验检测从业人员 +期末人数 +检验检测从业人员期末人数 527  人 +     其中:研究生及 +以上学历(03-401) +148  人 +               大学本科 +学历(03-402) +236  人 +               专科及以 +下学历(03-403) +143  人 +     其中:高级技术 +职称人员(03-404) +136  人 +               中级技术 +职称人员(03-405) +133  人 +               初级技术 +职称人员(03-406) +149  人 +               具备中级 +技术职称同等水平 +的技术能力人员 +30  人 +               其他(03- +407) +79  人 +其中:授权签字人 +(03-408) +74  人 +               管理人员 +(03-409) +102  人 +               检验检测 +技术人员(03-410) +425  人 +高层次专家 +     其中:两院院士 +(03-411) +0  人 +     其中:国家高层 +次人才特殊支持计 +划(万人计划)入 +选人员(03-413) +0  人 +     其他: +全国建材行业十大科技突破领军人物 1人;朝阳区最美科技工作者 1人;北京优秀 +青年工程师创新工作室授牌 1人;第八届中国科协青年人才托举工程 1人;北京市 +科协青年人才托举工程 3人 +研发活动及相关(03-5) +知识产权状况(03-502) +     当年专利申请受 +理数 +41  件 +         其中:当年发明 +专利申请受理数 +17  件 +         其中:申请欧美 +日专利 +0  件 +         其中:申请PCT +国际专利 +0  件 +2023/12/4 17:08 +检验检测机构数据查看页! +qts.cnca.cn/qts/datareport/datareport/JyjcDataViewFlow.flow?repId=40288277857770f1018585ae16006421 +11/13 +     当年专利授权书 +数 +35  件 +         其中,当年发明 +专利授权数 +4  件 +         其中:授权欧美 +日专利 +0  件 +     期末有效专利数 +226  件 +         其中:期末有效 +发明专利数 +63  件 +         其中:拥有境外 +授权专利 +1  件 +     期末拥有注册商 +标 +9  件 +         其中:当年注 +册商标 +0  件 +         其中:境外注 +册商标 +0  件 +         其中:驰名商 +标 +0  件 +         马德里商标国 +际注册申请量 +0  件 +     拥有软件著作权 +58  件 +         其中:当年获 +得软件著作权 +16  件 +获得相关奖项情况 +(03-503) +     是否获得本年度 +国务院国家科学技 +术奖: +否 +     是否获得本年度 +省、自治区、直辖 +市人民政府设立的 +省级科学技术奖: +否 +     其他 +建材行业科技进步奖二等奖;合格评定科学技术奖一等奖;发明创业奖成果奖一等 +奖;湖南城乡建设科技创新奖二等奖 +04 +服务与客户(04) +主要服务地域(04-1): 全国范围 +主要客户类型(可多选)(04-2): 企业,个人,行政机关,社会团体 +05 +科研、标准制修订成果状况(05) +科研情况(05-1) +     科研项目总计 23 项(05-101) +         其中,国家级项目 8 项(05-101-1) +         其中,省部级项目 5 项(05-101-2) +     科研经费总计 4058.0 万元(05-102) +         其中,国家级项目 2338.0 万元(05-102-1) +         其中,省部级项目 109.5 万元(05-102-2) +标准制修订情况(05-2) +2023/12/4 17:08 +检验检测机构数据查看页! +qts.cnca.cn/qts/datareport/datareport/JyjcDataViewFlow.flow?repId=40288277857770f1018585ae16006421 +12/13 +     标准制修订经费总计 155.0 万元(05-201) +         其中,国家标准 8 项(05-201-1) +         其中,行业标准 11 项(05-201-2) +         其中,地方标准 0 项(05-201-3) +         其中,国际标准 0 项(05-201-4) +     本机构人员是否在认证认可、检验检测相关领域国际标准化组织任职 是 (05-202) +       人员姓名: 包亦望 (05-203-1) +       担任职务: 国际标准化组织召集人 (05-203-2) +06 +参加能力验证活动情况(06) +     本年度参加能力 +验证计划合计 +113 项(06-1) +       其中,国家级 +能力验证项目 +23 项(06-101) +          市场监管总局 +(国家认监委)能 +力验证项目 +16 项(06-101-1) +          国家有关行业 +主管部门能力验证 +项目 +7 项(06-101-2) +       省级能力验证 +项目 +2 项(06-102) +          国内能力验证 +提供者项目 +86 项(06-103) +          国际能力验证 +提供者和国家相关 +组织项目 +2 项(06-104) +          其他能力验证 +项目 +0 项(06-105) +     参加测量审核合 +计 +15 项(06-2) +07 +机构发生变更情况 +机构本年度是否发生变更 是 (07-1) +变更的类型为(可多选)(07-1): 检验检测报告授权签字人,资质认定检验检测项目取消,检验检 +测标准或者检验检测方法发生变更 +09 +机构参与一带一路建设情况(选填,限实际参与相关项目的机构填报) +当年机构服务“一带一路”沿线国家的项目数合计: 个 +取得收入:万元 +10 +机构参与军民融合发展状况(选填,限实际参与相关项目的机构填报) +机构参与军民融合的方式: +当年军品合同签订额度: +11 +工业产品质量控制和技术评价实验室情况 +是否工业和信息化部认定的“工业产品质量控制和技术评价实验室” 是 +  实验室名称: 工业(建筑材料类)产品质量控制和技术评价CTC实验室   所属行业: 建材   授牌 +年份: 2012-02-13 +2023/12/4 17:08 +检验检测机构数据查看页! +qts.cnca.cn/qts/datareport/datareport/JyjcDataViewFlow.flow?repId=40288277857770f1018585ae16006421 +13/13 +查看 +12 +互联网+检验检测开展情况(07) +是否通过互联网开展检验检测业务? 否 +  +从业人员 +  +     +单位负责人:马振珠 +财务负责人:杨娟 +填表人:宋晓辉 +单位负责人电话:010-51167672 +财务负责人电话:010-51167902 +填表人电话:010-51167391 +资质认定联系人座 +机: +010-010- +51167391 +资质认定联系人手 +机:13381289801 +资质认定联系人邮 +箱:sxh@ctc.ac.cn +资质认定联系人姓 +名:宋晓辉 +