Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yuyiAdminServer
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
node_server
yuyiAdminServer
Commits
70b7d73d
Commit
70b7d73d
authored
May 28, 2025
by
lixinming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
7678aded
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
628 additions
and
86 deletions
+628
-86
dataInit.ts
src/biz/dataInit.ts
+15
-15
qccInit.ts
src/biz/qccInit.ts
+608
-71
dbEnum.ts
src/config/enum/dbEnum.ts
+5
-0
No files found.
src/biz/dataInit.ts
View file @
70b7d73d
...
...
@@ -255,25 +255,25 @@ async function 商标详情查询(uscc, id) {
async
function
专利查询
(
uscc
)
{
let
{
header
,
query
}
=
getReqParam
(
uscc
);
let
qccselectdata
:
any
=
await
getQcc
(
'https://api.qichacha.com/PatentV4/SearchMultiPatents'
,
query
,
header
);
//
let {header, query} = getReqParam(uscc);
//
let qccselectdata:any = await getQcc('https://api.qichacha.com/PatentV4/SearchMultiPatents', query, header);
if
(
Array
.
isArray
(
qccselectdata
))
{
let
addList
=
[];
for
(
let
i
=
0
;
i
<
qccselectdata
.
length
;
i
++
)
{
let
qcc
专利详情
=
{};
let
info
=
qccselectdata
[
i
];
let
qcc
专利
Id
=
info
.
Id
;
qccselectdata
[
i
][
"qcc专利详情"
]
=
await
专利详情查询
(
qcc
专利
Id
);
//
if (Array.isArray(qccselectdata)) {
//
let addList = [];
//
for (let i = 0; i < qccselectdata.length; i++) {
//
let qcc专利详情 = {};
//
let info = qccselectdata[i];
//
let qcc专利Id = info.Id;
//
qccselectdata[i]["qcc专利详情"] = await 专利详情查询(qcc专利Id);
addList
.
push
({
iprId
:
randomId
(
TABLEID
.
知识产权
),
});
}
//
addList.push({
//
iprId:randomId(TABLEID.知识产权),
//
});
//
}
}
//
}
return
qccselectdata
;
//
return qccselectdata;
}
...
...
src/biz/qccInit.ts
View file @
70b7d73d
...
...
@@ -4,22 +4,26 @@ import { systemConfig } from "../config/serverConfig";
import
{
getQcc
}
from
"../util/request"
;
import
{
getMySqlMs
,
getPinyinInitials
,
randomId
}
from
"../tools/system"
;
import
moment
=
require
(
"moment"
);
import
{
FINANCINGROUNDS
,
STATE
}
from
"../config/enum/enum"
;
const
md5
=
require
(
"md5"
);
/**
* 获取数据库所有企业uscc,进行企查查数据同步
* 同步企查查数据
* 逻辑:获取数据库所有企业uscc,进行企查查数据同步
*/
export
async
function
qccData
()
{
export
async
function
updateQCCDataTask
()
{
let
enterpriseList
=
await
selectData
(
OPERATIONALDATATYPE
.
查询多个
,
TABLENAME
.
企业基础信息表
,
{},
[
"eId"
,
"uscc"
,
"enterpriseName"
]);
console
.
log
(
`开始同步企查查数据,本次同步同
${
enterpriseList
.
length
}
家`
);
for
(
let
i
=
0
;
i
<
enterpriseList
.
length
;
i
++
)
{
let
info
=
enterpriseList
[
i
];
console
.
log
(
"开始同步企查查数据"
);
await
awaitData
(
info
.
uscc
,
info
.
eId
);
console
.
log
(
`
${
info
.
enterpriseName
}
同步成功, eId:
${
info
.
eId
}
,下标
${
i
}
`
);
await
updateItemQCCData
(
info
.
uscc
,
info
.
eId
);
console
.
log
(
`下标
${
i
}
=> eId:
${
info
.
eId
}
,uscc:
${
info
.
uscc
}
`
);
}
console
.
log
(
`
${
enterpriseList
.
length
}
家企业同步成功`
);
}
...
...
@@ -32,28 +36,24 @@ async function 数据是否存在(tableName, param, idKey) {
}
async
function
awaitData
(
uscc
,
eId
)
{
await
工商信息
(
uscc
,
eId
);
await
专利查询
(
uscc
,
eId
);
// await 软件著作(uscc);
// await 主要人员(uscc);
// await 分支机构(uscc);
// await 行政许可核查(uscc);
// await 空壳扫描(uscc);q
// await 准入尽职调查(uscc);
// await 融资信息核查(uscc);
// await 国际专利(uscc);
// await 科创分(uscc);
// await 资质证书(uscc);
// await 专利查询(uscc);
// await 失信核查(uscc);
// await 严重违法核查(uscc);
// await 企业对外投资核查(uscc);
console
.
log
(
"企查查数据同步成功"
);
/**
* 更新单个企业
* @param uscc
* @param eId
*/
export
async
function
updateItemQCCData
(
uscc
,
eId
)
{
await
工商信息
(
uscc
,
eId
);
await
知识产权
(
uscc
,
eId
);
await
主要人员
(
uscc
,
eId
);
await
空壳扫描
(
uscc
,
eId
);
await
准入尽职调查
(
uscc
,
eId
);
await
失信核查
(
uscc
,
eId
);
await
严重违法核查
(
uscc
,
eId
);
await
科创分
(
uscc
,
eId
);
await
资质证书
(
uscc
,
eId
);
await
融资信息核查
(
uscc
,
eId
);
await
企业对外投资核查
(
uscc
,
eId
);
}
/**
...
...
@@ -61,7 +61,7 @@ async function awaitData(uscc, eId) {
* @param uscc
* @returns
*/
function
getReqParam
(
uscc
,
isKeyNo
?)
{
function
getReqParam
(
uscc
,
isKeyNo
?)
{
const
TimeSpan
=
Math
.
round
(
new
Date
().
valueOf
()
/
1000
);
let
header
=
{
Token
:
md5
(
`
${
systemConfig
.
qccKey
}${
TimeSpan
}${
systemConfig
.
qccSecretKey
}
`
).
toUpperCase
(),
...
...
@@ -73,11 +73,21 @@ async function awaitData(uscc, eId) {
key
:
systemConfig
.
qccKey
,
keyNo
:
uscc
,
};
}
else
if
(
isKeyNo
==
"
qcc专利
Id"
)
{
}
else
if
(
isKeyNo
==
"Id"
)
{
query
=
{
key
:
systemConfig
.
qccKey
,
id
:
uscc
,
};
}
else
if
(
isKeyNo
==
"certId"
)
{
query
=
{
key
:
systemConfig
.
qccKey
,
certId
:
uscc
,
};
}
else
if
(
isKeyNo
==
"企业名称"
)
{
query
=
{
key
:
systemConfig
.
qccKey
,
keyword
:
uscc
,
}
}
else
{
query
=
{
key
:
systemConfig
.
qccKey
,
...
...
@@ -89,6 +99,13 @@ async function awaitData(uscc, eId) {
}
/**
* 同步工商信息数据
* @param uscc
* @param eId
* @returns
*/
async
function
工商信息
(
uscc
,
eId
)
{
let
{
header
,
query
}
=
getReqParam
(
uscc
);
...
...
@@ -137,7 +154,10 @@ async function 工商信息(uscc, eId) {
};
await
operationalData
(
OPERATIONALDATATYPE
.
修改
,
TABLENAME
.
企业基础信息表
,
baseInfo
,
{
uscc
,
eId
});
//股权结构
/**
* 股权结构目前小程序没有做这块的更新,所以全部采用小程序的数据
* 逻辑:检测到 股权人+比例 与原来的不一样(只要出现一个不一样),就会删除这个企业下所有的,并且重新写入企查查的这一块数据
*/
if
(
工商信息
.
Partners
)
{
let
出现不存在数据
=
false
;
...
...
@@ -150,8 +170,12 @@ async function 工商信息(uscc, eId) {
stockType
:
info
.
StockType
,
realCapi
:
info
.
RealCapi
,
};
if
(
数据是否存在
(
TABLENAME
.
股权结构
,
findItemParam
))
{}
if
(
!
await
数据是否存在
(
TABLENAME
.
股权结构
,
findItemParam
,
"owId"
)
)
{
出现不存在数据
=
true
;
}
}
if
(
出现不存在数据
)
{
//删除历史记录数据
await
operationalData
(
OPERATIONALDATATYPE
.
删除
,
TABLENAME
.
股权结构
,
null
,
{
eId
});
//同步最新记录
...
...
@@ -177,8 +201,97 @@ async function 工商信息(uscc, eId) {
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
股权结构
,
ownershipList
,
null
);
}
//企业标签表
}
/**
* 企业标签表 ,已和项目经理确认同步需求:
* 做全量更新,所有的以企查查的为准,企查查的标签数据全量同步到标签表和资质表,如果有用户自己填的,企查查没有的就使用用户填的【2025年5月28日 罗说明】 李欣鸣注
* 逻辑说明:判断有和没有的标准是,是否存在标签或者资质名称。
* 更新逻辑:1.企查查有,小程序没有,同步企查查的数据
* 2.企查查没有,小程序有,用小程序的数据
* 3.企查查有,小程序有,不覆盖
* 4.企查查以前有现在没有,小程序没有,不删除之前的
*/
if
(
工商信息
.
TagList
)
{
for
(
let
i
=
0
;
i
<
工商信息
.
TagList
.
length
;
i
++
)
{
let
info
=
工商信息
.
TagList
[
i
];
let
{
Type
,
Name
}
=
info
;
let
dbLabelItem
=
await
selectData
(
OPERATIONALDATATYPE
.
查询单个
,
TABLENAME
.
企业标签表
,
{
labelName
:
info
.
Name
},
[
"elId"
]);
if
(
!
dbLabelItem
&&
!
dbLabelItem
.
elId
)
{
//添加新的
let
addItemInfo
=
{
elId
:
randomId
(
TABLEID
.
企业标签表
),
eId
,
type
:
info
.
Type
,
labelName
:
info
.
Name
};
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
企业标签表
,
addItemInfo
,
{}
)
}
//处理资质
let
isAdd
=
false
;
//库里是否不存在这个企业的数据
let
zzInfo
=
await
selectData
(
OPERATIONALDATATYPE
.
查询单个
,
TABLENAME
.
企业资质
,
{
eId
},
[]);
if
(
!
zzInfo
||
!
zzInfo
.
qId
)
{
//不存在 直接添加
zzInfo
=
{
qId
:
randomId
(
TABLEID
.
企业资质
),
eId
:
eId
,
xjrState
:
STATE
.
否
,
kxState
:
STATE
.
否
,
gxjsState
:
STATE
.
否
,
zjtxState
:
STATE
.
否
,
listedState
:
STATE
.
否
,
xjrPyState
:
STATE
.
否
,
};
isAdd
=
true
;
}
switch
(
Name
)
{
case
"科技型中小企业"
:
if
(
isAdd
)
{
zzInfo
.
kxState
=
STATE
.
是
}
else
{
if
(
!
zzInfo
.
kxState
)
{
await
operationalData
(
OPERATIONALDATATYPE
.
修改
,
TABLENAME
.
企业资质
,
{
kxState
:
STATE
.
是
},
{
eId
});
}
}
break
;
case
"科技小巨人企业"
:
if
(
isAdd
)
{
zzInfo
.
xjrState
=
STATE
.
是
}
else
{
if
(
!
zzInfo
.
xjrState
)
{
await
operationalData
(
OPERATIONALDATATYPE
.
修改
,
TABLENAME
.
企业资质
,
{
xjrState
:
STATE
.
是
},
{
eId
});
}
}
break
;
case
"专精特新中小企业"
:
if
(
isAdd
)
{
zzInfo
.
zjtxState
=
STATE
.
是
}
else
{
if
(
!
zzInfo
.
zjtxState
)
{
await
operationalData
(
OPERATIONALDATATYPE
.
修改
,
TABLENAME
.
企业资质
,
{
zjtxState
:
STATE
.
是
},
{
eId
});
}
}
break
;
case
"高新技术企业"
:
if
(
isAdd
)
{
zzInfo
.
gxjsState
=
STATE
.
是
}
else
{
if
(
!
zzInfo
.
gxjsState
)
{
await
operationalData
(
OPERATIONALDATATYPE
.
修改
,
TABLENAME
.
企业资质
,
{
gxjsState
:
STATE
.
是
},
{
eId
});
}
}
break
;
//如果后续有新的 标签 和 资质 关联,只需要在case里面加东西就好了
}
if
(
isAdd
)
{
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
企业资质
,
zzInfo
,
{})
}
}
//删除历史记录数据
await
operationalData
(
OPERATIONALDATATYPE
.
删除
,
TABLENAME
.
企业标签表
,
null
,
{
eId
});
//同步最新记录
...
...
@@ -194,6 +307,10 @@ async function 工商信息(uscc, eId) {
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
企业标签表
,
enterpriseLabelList
,
null
);
}
/**
* 行业领域目前没有用到,所以直接与企查查全量更新
* 逻辑:先删除现有的,再重新添加
*/
if
(
工商信息
.
Industry
)
{
//删除历史记录数据
await
operationalData
(
OPERATIONALDATATYPE
.
删除
,
TABLENAME
.
行业信息分类
,
null
,
{
eId
});
...
...
@@ -214,6 +331,10 @@ async function 工商信息(uscc, eId) {
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
行业信息分类
,
[
industryInfo
],
null
);
}
/**
* 变更记录目前小程序没有涉及到这部分数据,所以直接与企查查全量更新
* 逻辑:先删除现有的,再重新添加
*/
if
(
工商信息
.
ChangeRecords
)
{
//删除历史记录数据
await
operationalData
(
OPERATIONALDATATYPE
.
删除
,
TABLENAME
.
变更信息表
,
null
,
{
eId
});
...
...
@@ -233,97 +354,513 @@ async function 工商信息(uscc, eId) {
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
变更信息表
,
infoupdateList
,
null
);
}
return
}
async
function
商标详情查询
(
uscc
,
id
)
{
let
{
header
,
query
}
=
getReqParam
(
id
,
"Id"
);
let
qccselectdata
:
any
=
await
getQcc
(
'https://api.qichacha.com/tm/GetDetails'
,
query
,
header
);
return
qccselectdata
;
}
/**
* 更新知识产权
* 包括:商标表,作品著作权表,软件著作权表,专利表
* 数据来源:
* 商标表:商标查询 【同步类型:IPRALLTYPE.商标信息】
* 作品著作权表:作品著作查询 【同步类型:IPRALLTYPE.作品著作权】
* 软件著作权表:软件著作查询 【同步类型:IPRALLTYPE.软件著作权】
* 专利表:专利查询 【同步类型:IPRALLTYPE.外观设计专利, IPRALLTYPE.实用新型专利 IPRALLTYPE.发明专利】
* 逻辑说明:判断有和没有的依据是,知识产权名称 + 知识产权时间
* 更新逻辑:1.企查查有,小程序没填报,用企查查数据
* 2.企查查没有,小程序填报了,用小程序的数据
* 3.企查查有,小程序有,不覆盖
* @param uscc
* @param eId
*/
async
function
知识产权
(
uscc
,
eId
)
{
async
function
商标查询
(
uscc
)
{
let
enterpriseInfo
=
await
selectData
(
OPERATIONALDATATYPE
.
查询单个
,
TABLENAME
.
企业基础信息表
,
{
uscc
},
[
"eId"
,
"enterpriseName"
]);
let
enterpriseName
=
enterpriseInfo
.
enterpriseName
;
let
{
header
,
query
}
=
getReqParam
(
enterpriseName
,
"企业名称"
);
/** 同步商标信息 */
let
{
header
,
query
}
=
getReqParam
(
enterpriseName
,
"企业名称"
);
let
商标查询
:
any
=
await
getQcc
(
'https://api.qichacha.com/tm/SearchByApplicant'
,
query
,
header
);
if
(
Array
.
isArray
(
商标查询
))
{
for
(
let
i
=
0
;
i
<
商标查询
.
length
;
i
++
)
{
let
Id
=
商标查询
[
i
].
ID
;
let
qcc
商标详情
=
await
商标详情查询
(
uscc
,
Id
);
商标查询
[
i
][
"qcc商标详情"
]
=
qcc
商标详情
;
let
info
=
商标查询
[
i
];
let
item
=
await
selectData
(
OPERATIONALDATATYPE
.
查询单个
,
TABLENAME
.
商标
,
{
qccId
:
info
.
ID
},
[
"qccId"
]);
if
(
!
item
||
!
item
.
qccId
)
{
let
qcc
商标详情
=
await
商标详情查询
(
uscc
,
info
.
ID
);
//添加新的
let
addItemInfo
=
{
tmId
:
randomId
(
TABLEID
.
商标
),
eId
,
qccId
:
info
.
ID
,
regNo
:
info
.
regNo
,
name
:
info
.
Name
,
categoryId
:
info
.
CategoryId
,
category
:
info
.
Category
,
person
:
info
.
Person
,
imageUrl
:
info
.
ImageUrl
,
flowStatusDesc
:
info
.
FlowStatusDesc
,
RegDate
:
moment
(
qcc
商标详情
.
RegDate
).
format
(
"YYYY-MM-DD"
),
};
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
商标
,
addItemInfo
,
{});
}
}
return
商标查询
;
}
}
async
function
商标详情查询
(
uscc
,
id
)
{
let
{
header
,
query
}
=
getReqParam
(
id
,
"Id"
);
let
qccselectdata
:
any
=
await
getQcc
(
'https://api.qichacha.com/tm/GetDetails'
,
query
,
header
);
/**同步 作品著作 */
let
zpzzReqInfo
=
getReqParam
(
uscc
);
let
作品著作查询
:
any
=
await
getQcc
(
'https://api.qichacha.com/CopyRight/SearchCopyRight'
,
zpzzReqInfo
.
query
,
zpzzReqInfo
.
header
);
if
(
Array
.
isArray
(
作品著作查询
))
{
for
(
let
i
=
0
;
i
<
作品著作查询
.
length
;
i
++
)
{
let
info
=
作品著作查询
[
i
];
let
item
=
await
selectData
(
OPERATIONALDATATYPE
.
查询单个
,
TABLENAME
.
作品著作权
,
{
registerNo
:
info
.
RegisterNo
},
[
"registerNo"
]);
if
(
!
item
||
!
item
.
registerNo
)
{
// 库里不存在就会添加新的
let
addItemInfo
=
{
crId
:
randomId
(
TABLEID
.
作品著作权
),
eId
,
owner
:
info
.
Owner
,
category
:
info
.
Category
,
name
:
info
.
Name
,
registerNo
:
info
.
RegisterNo
,
registerDate
:
moment
(
info
.
RegisterDate
).
format
(
"YYYY-MM-DD"
),
publishDate
:
moment
(
info
.
PublishDate
).
format
(
"YYYY-MM-DD"
),
finishDate
:
moment
(
info
.
FinishDate
).
format
(
"YYYY-MM-DD"
),
};
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
作品著作权
,
addItemInfo
,
{});
}
}
}
/**同步 软件著作权 */
let
rjzzqReqInfo
=
getReqParam
(
uscc
);
let
软件著作查询
:
any
=
await
getQcc
(
'https://api.qichacha.com/CopyRight/SearchSoftwareCr'
,
rjzzqReqInfo
.
query
,
rjzzqReqInfo
.
header
);
if
(
Array
.
isArray
(
软件著作查询
))
{
for
(
let
i
=
0
;
i
<
软件著作查询
.
length
;
i
++
)
{
let
info
=
软件著作查询
[
i
];
let
item
=
await
selectData
(
OPERATIONALDATATYPE
.
查询单个
,
TABLENAME
.
软件著作权
,
{
registerNo
:
info
.
RegisterNo
},
[
"registerNo"
]);
if
(
!
item
||
!
item
.
registerNo
)
{
// 库里不存在就会添加新的
let
addItemInfo
=
{
scId
:
randomId
(
TABLEID
.
软件著作权
),
eId
,
category
:
info
.
Category
,
publishDate
:
info
.
PublishDate
,
versionNo
:
info
.
VersionNo
,
registerNo
:
info
.
RegisterNo
,
registerAperDate
:
moment
(
info
.
RegisterAperDate
).
format
(
"YYYY-MM-DD"
),
name
:
info
.
Name
,
shortName
:
info
.
ShortName
,
owner
:
info
.
Owner
,
finishDevelopDate
:
moment
(
info
.
FinishDevelopDate
).
format
(
"YYYY-MM-DD"
),
};
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
软件著作权
,
addItemInfo
,
{});
}
}
}
/** IPRALLTYPE.外观设计专利, IPRALLTYPE.实用新型专利 IPRALLTYPE.发明专利 */
let
zlcxReqInfo
=
getReqParam
(
uscc
);
let
专利查询
:
any
=
await
getQcc
(
'https://api.qichacha.com/PatentV4/SearchMultiPatents'
,
zlcxReqInfo
.
query
,
zlcxReqInfo
.
header
);
if
(
Array
.
isArray
(
专利查询
))
{
for
(
let
i
=
0
;
i
<
专利查询
.
length
;
i
++
)
{
let
info
=
专利查询
[
i
];
let
item
=
await
selectData
(
OPERATIONALDATATYPE
.
查询单个
,
TABLENAME
.
专利
,
{
applicationNumber
:
info
.
ApplicationNumber
},
[
"applicationNumber"
]);
if
(
!
item
||
!
item
.
applicationNumber
)
{
// 库里不存在就会添加新的
let
addItemInfo
=
{
patentId
:
randomId
(
TABLEID
.
专利
),
eId
,
category
:
info
.
Category
,
kindcode
:
info
.
Kindcode
,
applicationNumber
:
info
.
ApplicationNumber
,
applicationDate
:
moment
(
info
.
ApplicationDate
).
format
(
"YYYY-MM-DD"
),
publicationNumber
:
info
.
PublicationNumber
,
publicationDate
:
moment
(
info
.
PublicationDate
).
format
(
"YYYY-MM-DD"
),
legalStatusDesc
:
info
.
LegalStatusDesc
,
title
:
info
.
Title
,
agency
:
JSON
.
stringify
(
info
.
Agency
||
[]),
kindCodeDesc
:
info
.
KindCodeDesc
,
IPCDesc
:
JSON
.
stringify
(
info
.
IPCDesc
||
[]),
inventorStringList
:
JSON
.
stringify
(
info
.
info
.
InventorStringList
||
[]),
assigneestringList
:
JSON
.
stringify
(
info
.
AssigneestringList
||
[]),
};
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
专利
,
addItemInfo
,
{});
}
}
}
return
qccselectdata
;
}
async
function
软件著作
(
uscc
)
{
/**
* 主要人员
* 逻辑:如果这个企业的人员和职位没有变动,就不更新,有的话就删除这个企业的所有,重新更新一遍
* @param uscc
* @returns
*/
async
function
主要人员
(
uscc
,
eId
)
{
let
{
header
,
query
}
=
getReqParam
(
uscc
);
let
主要人员数据
:
any
=
await
getQcc
(
'https://api.qichacha.com/ECIEmployee/GetList'
,
query
,
header
);
if
(
Array
.
isArray
(
主要人员数据
))
{
let
employeesList
=
await
selectData
(
OPERATIONALDATATYPE
.
查询多个
,
TABLENAME
.
主要人员
,
{
eId
},
[])
let
checkMap
=
{};
employeesList
.
forEach
(
info
=>
{
checkMap
[
info
.
name
]
=
info
.
job
;
});
let
isReSet
=
false
;
let
reSetList
=
[];
for
(
let
i
=
0
;
i
<
主要人员数据
.
length
;
i
++
)
{
let
info
=
主要人员数据
[
i
];
reSetList
.
push
({
emId
:
randomId
(
TABLEID
.
主要人员
),
eId
,
job
:
info
.
Job
,
name
:
info
.
Name
});
if
(
!
checkMap
[
info
.
name
]
||
info
.
job
!=
checkMap
[
info
.
name
])
{
isReSet
=
true
;
continue
}
}
if
(
isReSet
)
{
await
operationalData
(
OPERATIONALDATATYPE
.
删除
,
TABLENAME
.
主要人员
,
{},
{
eId
}
);
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
主要人员
,
reSetList
,
{}
);
}
}
}
/**
* 空壳扫描
* 逻辑:增量更新
* @param uscc
* @returns
*/
async
function
空壳扫描
(
uscc
,
eId
)
{
let
{
header
,
query
}
=
getReqParam
(
uscc
);
let
qccselectdata
:
any
=
await
getQcc
(
'https://api.qichacha.com/ShellScan/GetList'
,
query
,
header
);
let
著作权软著
:
any
=
await
getQcc
(
'https://api.qichacha.com/CopyRight/SearchCopyRight'
,
query
,
header
);
let
enterpriseInfo
=
await
selectData
(
OPERATIONALDATATYPE
.
查询单个
,
TABLENAME
.
企业基础信息表
,
{
uscc
},
[
"eId"
]);
let
eId
=
enterpriseInfo
.
eId
;
if
(
qccselectdata
.
Data
)
{
let
addList
=
[];
for
(
let
i
=
0
;
i
<
qccselectdata
.
Data
.
length
;
i
++
)
{
let
info
=
qccselectdata
.
Data
[
i
];
if
(
Array
.
isArray
(
著作权软著
))
{
let
item
=
await
selectData
(
OPERATIONALDATATYPE
.
查询单个
,
TABLENAME
.
空壳扫描
,
{
eId
,
title
:
info
.
Title
},
[
"emptyId"
]
);
if
(
!
item
||
!
item
.
emptyId
)
{
addList
.
push
({
emptyId
:
randomId
(
TABLEID
.
空壳扫描
),
eId
,
title
:
info
.
Title
,
description
:
info
.
Description
,
});
}
}
if
(
addList
.
length
)
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
空壳扫描
,
addList
,
{});
}
}
/**
* 准入尽职调查
* 逻辑:增量更新
* @param uscc
* @returns
*/
async
function
准入尽职调查
(
uscc
,
eId
)
{
let
{
header
,
query
}
=
getReqParam
(
uscc
);
let
qccselectdata
:
any
=
await
getQcc
(
'https://api.qichacha.com/AcctScan/GetInfo'
,
query
,
header
);
if
(
qccselectdata
.
Data
)
{
let
addList
=
[];
著作权软著
.
forEach
(
info
=>
{
for
(
let
i
=
0
;
i
<
qccselectdata
.
Data
.
length
;
i
++
)
{
let
info
=
qccselectdata
.
Data
[
i
];
let
item
=
await
selectData
(
OPERATIONALDATATYPE
.
查询单个
,
TABLENAME
.
空壳扫描
,
{
eId
,
title
:
info
.
Title
},
[
"riskId"
]
);
if
(
!
item
||
!
item
.
riskId
)
{
addList
.
push
({
iprId
:
randomId
(
TABLEID
.
知识产权
),
riskId
:
randomId
(
TABLEID
.
风险
),
eId
,
year
:
getMySqlMs
(
info
.
RegisterDate
)
,
number
:
1
,
iprType
:
IPRALLTYPE
.
软件著作权
,
iprName
:
info
.
Nam
e
,
category
:
info
.
Category
,
title
:
info
.
Title
,
description
:
info
.
Description
,
passage
:
info
.
Passage
,
riskType
:
info
.
RiskTyp
e
,
typeCode
:
parseInt
(
info
.
TypeCode
)
,
});
}
}
if
(
addList
.
length
)
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
风险
,
addList
,
{});
}
}
/**
* 失信核查
* 逻辑:全量更新 删除之前所有的 再添加
* @param uscc
* @returns
*/
async
function
失信核查
(
uscc
,
eId
)
{
let
{
header
,
query
}
=
getReqParam
(
uscc
);
let
qccselectdata
:
any
=
await
getQcc
(
'https://api.qichacha.com/ShixinCheck/GetList'
,
query
,
header
);
await
operationalData
(
OPERATIONALDATATYPE
.
删除
,
TABLENAME
.
失信核查
,
{},
{
eId
});
if
(
qccselectdata
.
Data
)
{
let
addList
=
[];
qccselectdata
.
Data
.
forEach
(
info
=>
{
let
addInfo
:
any
=
{
disId
:
randomId
(
TABLEID
.
失信核查
),
eId
,
anno
:
info
.
Anno
,
executegov
:
info
.
Executegov
,
executestatus
:
info
.
Executestatus
,
executeno
:
info
.
Executeno
,
actionRemark
:
info
.
ActionRemark
,
amount
:
info
.
Amount
,
};
if
(
info
.
Liandate
)
addInfo
.
liandate
=
getMySqlMs
(
info
.
Liandate
);
if
(
info
.
Publicdate
)
addInfo
.
publicdate
=
getMySqlMs
(
info
.
Publicdate
);
addList
.
push
(
addInfo
);
});
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
失信核查
,
addList
,
{});
}
}
/**
* 严重违法核查
* 逻辑:全量更新 删除之前所有的 再添加
* @param uscc
* @returns
*/
async
function
严重违法核查
(
uscc
,
eId
)
{
let
{
header
,
query
}
=
getReqParam
(
uscc
);
let
qccselectdata
:
any
=
await
getQcc
(
'https://api.qichacha.com/SeriousIllegalCheck/GetList'
,
query
,
header
);
await
operationalData
(
OPERATIONALDATATYPE
.
删除
,
TABLENAME
.
严重违法犯罪
,
{},
{
eId
});
if
(
qccselectdata
.
Data
)
{
let
addList
=
[];
qccselectdata
.
Data
.
forEach
(
info
=>
{
let
addInfo
:
any
=
{
stemId
:
randomId
(
TABLEID
.
严重违法犯罪
),
eId
,
type
:
info
.
Type
,
addReason
:
info
.
AddReason
,
addOffice
:
info
.
AddOffice
,
removeReason
:
info
.
RemoveReason
,
removeOffice
:
info
.
RemoveOffice
,
};
if
(
info
.
AddDate
)
addInfo
.
addDate
=
getMySqlMs
(
info
.
AddDate
);
if
(
info
.
RemoveDate
)
addInfo
.
removeDate
=
getMySqlMs
(
info
.
RemoveDate
);
await
addManyData
(
TABLENAME
.
知识产权
,
addList
);
addList
.
push
(
addInfo
);
});
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
严重违法犯罪
,
addList
,
{});
}
return
著作权软著
;
}
/**
* 科创分
* 有则更新,无则添加
* @param uscc
* @returns
*/
async
function
科创分
(
uscc
,
eId
)
{
let
{
header
,
query
}
=
getReqParam
(
uscc
);
let
qccselectdata
:
any
=
await
getQcc
(
'https://api.qichacha.com/TechScore/GetInfo'
,
query
,
header
);
if
(
qccselectdata
.
Data
)
{
let
item
=
await
selectData
(
OPERATIONALDATATYPE
.
查询单个
,
TABLENAME
.
科创分
,
{
eId
},
[
"stemId"
]
);
if
(
!
item
||
!
item
.
stemId
)
{
let
addInfo
=
{
stemId
:
randomId
(
TABLEID
.
科创分
),
eId
,
industry
:
qccselectdata
.
Data
.
Industry
.
Industry
,
subIndustry
:
qccselectdata
.
Data
.
Industry
.
SubIndustry
,
industryRanking
:
qccselectdata
.
Data
.
IndustryRanking
,
score
:
qccselectdata
.
Data
.
Score
,
};
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
科创分
,
addInfo
,
{});
}
else
if
(
item
.
score
!=
qccselectdata
.
Data
.
Score
||
item
.
industryRanking
!=
qccselectdata
.
Data
.
IndustryRanking
)
{
let
updateInfo
=
{
industry
:
qccselectdata
.
Data
.
Industry
.
Industry
,
subIndustry
:
qccselectdata
.
Data
.
Industry
.
SubIndustry
,
industryRanking
:
qccselectdata
.
Data
.
IndustryRanking
,
score
:
qccselectdata
.
Data
.
Score
,
};
await
operationalData
(
OPERATIONALDATATYPE
.
修改
,
TABLENAME
.
科创分
,
updateInfo
,
{
eId
});
}
}
return
qccselectdata
;
}
function
getFinancingRounds
(
str
)
{
if
(
str
.
indexOf
(
"天使"
))
return
FINANCINGROUNDS
.
天使投资
;
if
(
str
.
indexOf
(
"种子"
))
return
FINANCINGROUNDS
.
种子轮
;
if
(
str
.
indexOf
(
"A"
))
return
FINANCINGROUNDS
.
A
轮
;
if
(
str
.
indexOf
(
"B"
))
return
FINANCINGROUNDS
.
B
轮
;
if
(
str
.
indexOf
(
"C"
))
return
FINANCINGROUNDS
.
C
轮
;
if
(
str
.
indexOf
(
"以上"
))
return
FINANCINGROUNDS
.
C
轮以上
;
return
FINANCINGROUNDS
.
天使投资
;
}
/**
* 融资信息核查
* 逻辑:增量更新,如果遇到未披露的融资金额,赋值0,【需求点:2025年5月28日 18:11分 于倩倩说明】李欣鸣注释
* @param uscc
* @returns
*/
async
function
融资信息核查
(
uscc
,
eId
)
{
let
{
header
,
query
}
=
getReqParam
(
uscc
);
let
qccselectdata
:
any
=
await
getQcc
(
'https://api.qichacha.com/CompanyFinancingSearch/GetList'
,
query
,
header
);
if
(
qccselectdata
.
Data
)
{
let
addList
=
[];
for
(
let
i
=
0
;
i
<
qccselectdata
.
Data
.
length
;
i
++
)
{
let
info
=
qccselectdata
.
Data
[
i
];
let
distinctParam
=
{
eId
,
investmentDate
:
getMySqlMs
(
info
.
Date
),
investmentInstitutionsName
:
info
.
Investment
};
let
disItem
=
await
selectData
(
OPERATIONALDATATYPE
.
查询单个
,
TABLENAME
.
企业融资
,
distinctParam
,
[
"rId"
]);
if
(
!
disItem
||
!
disItem
.
rId
)
{
addList
.
push
({
rId
:
randomId
(
TABLEID
.
企业融资
),
eId
,
financingAmount
:
isNaN
(
info
.
Amoun
)
?
0
:
parseFloat
(
info
.
Amount
),
financingRounds
:
getFinancingRounds
(
info
.
Round
),
investmentDate
:
getMySqlMs
(
info
.
Date
),
investmentInstitutionsName
:
info
.
Investment
,
});
}
}
if
(
addList
.
length
)
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
企业融资
,
addList
,
{});
}
return
qccselectdata
;
}
async
function
专利查询
(
uscc
)
{
/**
* 资质证书查询
* 逻辑:增量更新
* @param uscc
* @param eId
* @returns
*/
async
function
资质证书
(
uscc
,
eId
)
{
let
{
header
,
query
}
=
getReqParam
(
uscc
);
let
qccselectdata
:
any
=
await
getQcc
(
'https://api.qichacha.com/
PatentV4/SearchMultiPatents
'
,
query
,
header
);
let
qccselectdata
:
any
=
await
getQcc
(
'https://api.qichacha.com/
ECICertification/SearchCertification
'
,
query
,
header
);
if
(
Array
.
isArray
(
qccselectdata
))
{
console
.
log
();
//todo 没有做
let
addList
=
[];
for
(
let
i
=
0
;
i
<
qccselectdata
.
length
;
i
++
)
{
let
info
=
qccselectdata
[
i
];
let
qcc
专利
Id
=
info
.
Id
;
let
专利详情
=
await
专利详情查询
(
uscc
,
qcc
专利
Id
);
addList
.
push
({
iprId
:
randomId
(
TABLEID
.
知识产权
),
});
let
distinctParam
=
{
eId
,
type
:
info
.
Type
,
name
:
info
.
Name
};
let
item
=
await
selectData
(
OPERATIONALDATATYPE
.
查询单个
,
TABLENAME
.
资质证书
,
distinctParam
,
[
"cerId"
]
);
if
(
!
item
||
!
item
.
cerId
)
{
let
addInfo
:
any
=
{
cerId
:
randomId
(
TABLEID
.
资质证书
),
eId
,
name
:
info
.
Name
,
type
:
info
.
Type
,
no
:
info
.
No
,
typeDesc
:
info
.
TypeDesc
,
institutionList
:
info
.
InstitutionList
?
info
.
InstitutionList
[
0
]
:
""
,
status
:
info
.
Status
,
};
if
(
info
.
StartDate
)
addInfo
.
startDate
=
getMySqlMs
(
info
.
StartDate
);
if
(
info
.
EndDate
)
addInfo
.
endDate
=
getMySqlMs
(
info
.
EndDate
);
addList
.
push
(
addInfo
);
}
}
if
(
addList
.
length
)
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
资质证书
,
addList
,
{});
}
return
qccselectdata
;
}
/**
* 企业对外投资核查
* 逻辑:删除当前企业的,再重新添加
* @param uscc
* @returns
*/
async
function
企业对外投资核查
(
uscc
,
eId
)
{
let
{
header
,
query
}
=
getReqParam
(
uscc
);
let
qccselectdata
:
any
=
await
getQcc
(
'https://api.qichacha.com/InvestmentCheck/GetList'
,
query
,
header
);
await
operationalData
(
OPERATIONALDATATYPE
.
删除
,
TABLENAME
.
对外投资
,
{},
{
eId
});
if
(
qccselectdata
.
Data
)
{
let
addList
=
[];
qccselectdata
.
Data
.
forEach
(
info
=>
{
let
addInfo
:
any
=
{
oilId
:
randomId
(
TABLENAME
.
对外投资
),
eId
,
name
:
info
.
Name
,
registCapi
:
info
.
RegistCapi
,
registeredCapital
:
info
.
RegisteredCapital
,
registeredCapitalUnit
:
info
.
RegisteredCapitalUnit
,
registeredCapitalCCY
:
info
.
RegisteredCapitalCCY
,
fundedRatio
:
info
.
FundedRatio
,
shouldCapi
:
info
.
ShouldCapi
,
subscribedCapital
:
info
.
SubscribedCapital
,
subscribedCapitalUnit
:
info
.
SubscribedCapitalUnit
,
subscribedCapitalCCY
:
info
.
SubscribedCapitalCCY
,
status
:
info
.
Status
,
operName
:
info
.
Oper
.
Name
};
if
(
info
.
StartDate
)
addInfo
.
StartDate
=
getMySqlMs
(
addInfo
.
StartDate
);
if
(
info
.
investDate
)
addInfo
.
InvestDate
=
getMySqlMs
(
addInfo
.
InvestDate
);
addList
.
push
(
addInfo
);
});
await
operationalData
(
OPERATIONALDATATYPE
.
增加
,
TABLENAME
.
对外投资
,
addList
,
{});
}
async
function
专利详情查询
(
uscc
,
id
)
{
let
{
header
,
query
}
=
getReqParam
(
id
,
"qcc专利Id"
);
let
qccselectdata
:
any
=
await
getQcc
(
'https://api.qichacha.com/PatentV4/GetDetails'
,
query
,
header
);
return
qccselectdata
;
}
src/config/enum/dbEnum.ts
View file @
70b7d73d
...
...
@@ -99,5 +99,9 @@ export enum TABLEID {
入孵申请审批表
=
'ah'
,
入驻信息表
=
"ei"
,
运营推广信息表
=
"opi"
,
商标
=
"trm"
,
作品著作权
=
"cr"
,
软件著作权
=
"sc"
,
专利
=
"patent"
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment