Commit ff053674 by chenjinjing

no message

parent 41a1ecc4
......@@ -7,7 +7,7 @@ import moment = require("moment");
import { getQcc } from "../util/request";
import { OPERATIONALDATATYPE, TABLEID, TABLENAME } from "../config/enum/dbEnum";
import { operationalData, selectData } from "../data/operationalData";
import { getMySqlMs, randomId } from "../tools/system";
import { getMySqlMs, getPinyinInitials, randomId } from "../tools/system";
import { FINANCINGROUNDS, IPRALLTYPE } from "../config/enum/enum";
import { table } from "console";
import { changeEnumValue } from "../util/verificationEnum";
......@@ -85,7 +85,7 @@ export async function 统计() {
export async function test() {
let uscc = "91310115MADM8EA654";
await 工商信息(uscc);
await 软件著作(uscc);
await 软件著作查询(uscc);
await 国际专利(uscc);
await 专利查询(uscc);
await 融资信息核查(uscc);
......@@ -128,17 +128,40 @@ export async function qccData() {
* @param uscc
* @returns
*/
function getReqParam(uscc) {
function getReqParam(uscc, isKeyNo?) {
const TimeSpan = Math.round(new Date().valueOf()/ 1000);
let header = {
Token:md5(`${systemConfig.qccKey}${TimeSpan}${systemConfig.qccSecretKey}`).toUpperCase(),
TimeSpan
};
let query = {
key:systemConfig.qccKey,
searchKey:uscc,
// keyNo:"云合智网(上海)技术有限公司"
};
let query = {};
if (isKeyNo == "isKeyNo") {
query = {
key:systemConfig.qccKey,
keyNo:uscc,
};
} 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,
searchKey:uscc,
// keyNo:"云合智网(上海)技术有限公司"
};
}
return {header, query};
}
......@@ -153,27 +176,223 @@ async function addManyData(tableName, dataList) {
console.log(tableName, "写入成功");
}
async function awaitData(uscc:string) {
await 工商信息(uscc);
await 软件著作(uscc);
await 主要人员(uscc);
await 分支机构(uscc);
await 行政许可核查(uscc);
await 空壳扫描(uscc);
await 准入尽职调查(uscc);
await 融资信息核查(uscc);
await 国际专利(uscc);
await 科创分(uscc);
await 资质证书(uscc);
await 专利查询(uscc);
await 失信核查(uscc);
await 严重违法核查(uscc);
await 企业对外投资核查(uscc);
export async function awaitData(uscc:string) {
let 商标查询Data = await 商标查询(uscc);
let 专利查询Data = await 专利查询(uscc);
let 作品著作查询Data = await 作品著作查询(uscc);
let 软件著作Data = await 软件著作查询(uscc);
let 备案网站Data = await 备案网站查询(uscc);
let 资质证书Data = await 资质证书查询(uscc);
// let 工商信息Data = await 工商信息(uscc);
// let 软件著作Data = await 软件著作(uscc);
// let 主要人员Data = await 主要人员(uscc);
// let 分支机构Data = await 分支机构(uscc);
// let 行政许可核查Data = await 行政许可核查(uscc);
// let 空壳扫描Data = await 空壳扫描(uscc);
// let 准入尽职调查Data = await 准入尽职调查(uscc);
// let 融资信息核查Data = await 融资信息核查(uscc);
// let 国际专利Data = await 国际专利(uscc);
// let 科创分Data = await 科创分(uscc);
// let 资质证书Data = await 资质证书(uscc);
// let 失信核查Data = await 失信核查(uscc);
// let 严重违法核查Data = await 严重违法核查(uscc);
// let 企业对外投资核查Data = await 企业对外投资核查(uscc);
// let 企业年报信息Data = await 企业年报信息(uscc);
let initData = {
// 工商信息Data,
// 软件著作Data,
// 主要人员Data,
// 分支机构Data,
// 行政许可核查Data,
// 空壳扫描Data,
// 准入尽职调查Data,
// 融资信息核查Data,
// 国际专利Data,
// 科创分Data,
// 资质证书Data,
商标查询Data,
专利查询Data,
作品著作查询Data,
软件著作Data,
备案网站Data,
资质证书Data,
// 失信核查Data,
// 严重违法核查Data,
// 企业对外投资核查Data,
// 企业年报信息Data,
}
console.log("企查查数据同步成功");
return initData;
}
async function 商标查询(uscc) {
let enterpriseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc}, ["eId", "enterpriseName"]);
let enterpriseName = enterpriseInfo.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商标详情;
}
}
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;
}
async function 专利查询(uscc) {
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);
addList.push({
iprId:randomId(TABLEID.知识产权),
});
}
}
return qccselectdata;
}
async function 专利详情查询(id) {
let {header, query} = getReqParam(id, "Id");
let qccselectdata:any = await getQcc('https://api.qichacha.com/PatentV4/GetDetails', query, header);
return qccselectdata;
}
async function 作品著作查询(uscc) {
let {header, query} = getReqParam(uscc);
let 作品著作查询:any = await getQcc('https://api.qichacha.com/CopyRight/SearchCopyRight', query, header);
if (Array.isArray(作品著作查询)) {
let addList = [];
}
return 作品著作查询;
}
async function 软件著作查询(uscc) {
let {header, query} = getReqParam(uscc);
let 软件著作查询:any = await getQcc('https://api.qichacha.com/CopyRight/SearchSoftwareCr', query, header);
// let enterpriseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc}, ["eId"]);
// let eId = enterpriseInfo.eId;
if (Array.isArray(软件著作查询)) {
let addList = [];
// 著作权软著.forEach(info => {
// addList.push({
// iprId:randomId(TABLEID.知识产权),
// eId,
// year:getMySqlMs(info.RegisterDate),
// number:1,
// iprType:IPRALLTYPE.软件著作权,
// iprName:info.Name,
// category:info.Category,
// });
// });
// await addManyData(TABLENAME.知识产权, addList);
}
return 软件著作查询;
}
async function 备案网站查询(uscc) {
let {header, query} = getReqParam(uscc);
let 备案网站查询:any = await getQcc('https://api.qichacha.com/WebSiteV4/GetCompanyWebSite', query, header);
if (Array.isArray(备案网站查询)) {
let addList = [];
}
return 备案网站查询;
}
async function 资质证书查询(uscc) {
let {header, query} = getReqParam(uscc);
let qccselectdata:any = await getQcc('https://api.qichacha.com/ECICertification/SearchCertification', query, header);
// let enterpriseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc}, ["eId"]);
// let eId = enterpriseInfo.eId;
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);
}
// qccselectdata.forEach(info => {
// 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);
// });
// await addManyData(TABLENAME.资质证书, addList);
}
return qccselectdata;
}
async function 资质证书详情查询(id) {
let {header, query} = getReqParam(id, "certId");
let qccselectdata:any = await getQcc('https://api.qichacha.com/ECICertification/GetCertificationDetailById', query, header);
return qccselectdata;
}
function 领域补充() {
let 企业名单 = onceSheetBecomeOfblockData('科学城在孵企业.xlsx', "Sheet1");
let dataList = 企业名单[0].blockData;
......@@ -194,109 +413,124 @@ async function 工商信息(uscc) {
let enterpriseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc}, ["eId"]);
let eId = enterpriseInfo.eId;
let pinyinName = getPinyinInitials(工商信息.Name);
let industryList = []; //Industry
let TermStart = moment(工商信息.TermStart).format("YYYY-MM-DD");
let TermEnd = "无固定期限";
if (工商信息.TermEnd) TermEnd = moment(工商信息.TermEnd).format("YYYY-MM-DD");
//企业基础信息
let baseInfo = {
enterpriseName: 工商信息.Name,
pinyinName,
uscc: 工商信息.CreditCode,
zhuCeHao: 工商信息.No, //EntType = 0/1/4/6/7/9/10/11/-1 中国境内企业时:该字段返回工商注册号;EntType = 3 中国香港企业时:该字段返回企业编号;EntType = 5 中国台湾企业时:该字段返回企业编号
zuZhiJiGouDaiMa: 工商信息.OrgNo,
// gengDuoDianHua: 工商信息., //更多电话
// mainBusiness: 工商信息., //主营业务
logonTime: getMySqlMs(工商信息.StartDate), //成立日期
// mail: 工商信息., //邮箱
// isNaturalPersonHolding: 工商信息., //是否自然人控股
// industry: 工商信息., //领域
// moreMail: 工商信息., //更多邮箱
logonAddress: 工商信息.Address, //注册地址
// tongXinDiZhi: 工商信息., //通信地址
// liaison: 工商信息., //联系人
// liaisonPhone: 工商信息., //联系电话
dengJiJiGuan: 工商信息.BelongOrg, //登机机关
// qiYeGuiMo: 工商信息., //企业规模 TagList
RAS: 工商信息.Status, //登记状态
// guanWang: 工商信息., //官网地址
yingYeQiXian: `${TermStart}${TermEnd}`, //营业期限 TermStart至TermEnd
logOffMS: 工商信息.EndDate || null, //注销时间
shijiaoziben: 工商信息.RecCap, //实缴资本
// enterpriseType: 工商信息., //企业机构类型
// jianJie: 工商信息., //简介
zhuceziben: 工商信息.RegistCapi, //注册资本
// naShuiRenZiZhi: 工商信息., //纳税人资质
// operatingAddress: 工商信息., //经营地址
// oldLogonAddress: 工商信息., //迁入前注册地址
// shuiHao: 工商信息., //税号
// shuiWuJu: 工商信息., //税务员
jingYingFanWei: 工商信息.Scope, //经营范围
};
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业基础信息表, baseInfo, {uscc});
//股权结构
if (工商信息.Partners) {
let ownershipList = [];
// //股权结构
// if (工商信息.Partners) {
// let ownershipList = [];
工商信息.Partners.forEach(info => {
let addInfo:any = {
owId:randomId(TABLEID.股权结构),
eId,
name:info.StockName,
finalBenefitPercent:info.FinalBenefitPercent,
stockPercent:info.StockPercent,
stockType:info.StockType,
realCapi:info.RealCapi,
paidUpCapitalUnit:info.PaidUpCapitalUnit,
subscribedCapital:info.SubscribedCapital,
subscribedCapitalUnit:info.SubscribedCapitalUnit,
};
if (info.CapiDate) addInfo.capiDate = getMySqlMs(info.CapiDate);
if (info.ShoudDate) addInfo.shoudDate = getMySqlMs(info.ShoudDate);
ownershipList.push(addInfo);
});
// 工商信息.Partners.forEach(info => {
// let addInfo:any = {
// owId:randomId(TABLEID.股权结构),
// eId,
// name:info.StockName,
// finalBenefitPercent:info.FinalBenefitPercent,
// stockPercent:info.StockPercent,
// stockType:info.StockType,
// realCapi:info.RealCapi,
// paidUpCapitalUnit:info.PaidUpCapitalUnit,
// subscribedCapital:info.SubscribedCapital,
// subscribedCapitalUnit:info.SubscribedCapitalUnit,
// };
// if (info.CapiDate) addInfo.capiDate = getMySqlMs(info.CapiDate);
// if (info.ShoudDate) addInfo.shoudDate = getMySqlMs(info.ShoudDate);
// ownershipList.push(addInfo);
// });
await addManyData(TABLENAME.股权结构, ownershipList);
}
// await addManyData(TABLENAME.股权结构, ownershipList);
// }
if (工商信息.TagList) {
let enterpriseLabelList = [];
// if (工商信息.TagList) {
// let enterpriseLabelList = [];
工商信息.TagList.forEach(info => {
enterpriseLabelList.push({
elId:randomId(TABLEID.企业标签表),
eId,
type:info.Type,
labelName:info.Name,
});
});
// 工商信息.TagList.forEach(info => {
// enterpriseLabelList.push({
// elId:randomId(TABLEID.企业标签表),
// eId,
// type:info.Type,
// labelName:info.Name,
// });
// });
await addManyData(TABLENAME.企业标签表, enterpriseLabelList);
}
if (工商信息.Industry) {
let industryInfo = {
eiId:randomId(TABLEID.行业信息分类),
eId,
industryCode:工商信息.Industry.IndustryCode ,//行业门类code
industry:工商信息.Industry.Industry ,//行业门类描述
subIndustryCode:工商信息.Industry.SubIndustryCode ,//行业大类code
subIndustry:工商信息.Industry.SubIndustry ,//行业大类描述
middleCategoryCode:工商信息.Industry.MiddleCategoryCode ,//行业中类code
middleCategory:工商信息.Industry.MiddleCategory ,//行业中类描述
smallCategoryCode:工商信息.Industry.SmallCategoryCode ,//行业小类code
smallCategory:工商信息.Industry.SmallCategory ,//行业小类描述
};
// await addManyData(TABLENAME.企业标签表, enterpriseLabelList);
// }
// if (工商信息.Industry) {
// let industryInfo = {
// eiId:randomId(TABLEID.行业信息分类),
// eId,
// industryCode:工商信息.Industry.IndustryCode ,//行业门类code
// industry:工商信息.Industry.Industry ,//行业门类描述
// subIndustryCode:工商信息.Industry.SubIndustryCode ,//行业大类code
// subIndustry:工商信息.Industry.SubIndustry ,//行业大类描述
// middleCategoryCode:工商信息.Industry.MiddleCategoryCode ,//行业中类code
// middleCategory:工商信息.Industry.MiddleCategory ,//行业中类描述
// smallCategoryCode:工商信息.Industry.SmallCategoryCode ,//行业小类code
// smallCategory:工商信息.Industry.SmallCategory ,//行业小类描述
// };
await addManyData(TABLENAME.行业信息分类, [industryInfo]);
}
// await addManyData(TABLENAME.行业信息分类, [industryInfo]);
// }
if (工商信息.ChangeRecords) {
let infoupdateList = [];
// if (工商信息.ChangeRecords) {
// let infoupdateList = [];
工商信息.ChangeRecords.forEach(info => {
infoupdateList.push({
updateId:randomId(TABLEID.变更信息表),
eId,
afterContent:info.AfterContent, //变更前
beforeContent:info.BeforeContent, //变更后
changeDate:getMySqlMs(info.ChangeDate),//变更时间
projectName:info.ProjectName,//变更类型
});
});
// 工商信息.ChangeRecords.forEach(info => {
// infoupdateList.push({
// updateId:randomId(TABLEID.变更信息表),
// eId,
// afterContent:info.AfterContent, //变更前
// beforeContent:info.BeforeContent, //变更后
// changeDate:getMySqlMs(info.ChangeDate),//变更时间
// projectName:info.ProjectName,//变更类型
// });
// });
await addManyData(TABLENAME.变更信息表, infoupdateList);
}
return
}
async function 软件著作(uscc) {
let {header, query} = getReqParam(uscc);
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 (Array.isArray(著作权软著)) {
let addList = [];
著作权软著.forEach(info => {
addList.push({
iprId:randomId(TABLEID.知识产权),
eId,
year:getMySqlMs(info.RegisterDate),
number:1,
iprType:IPRALLTYPE.软件著作权,
iprName:info.Name,
category:info.Category,
});
});
await addManyData(TABLENAME.知识产权, addList);
}
console.log();
// await addManyData(TABLENAME.变更信息表, infoupdateList);
// }
return 工商信息;
}
async function 主要人员(uscc) {
......@@ -318,6 +552,7 @@ async function 主要人员(uscc) {
await addManyData(TABLENAME.主要人员, addList);
}
return 主要人员数据;
}
......@@ -340,6 +575,8 @@ async function 分支机构(uscc) {
});
await addManyData(TABLENAME.分支机构, addList);
}
return 分支机构数据;
}
......@@ -371,6 +608,8 @@ async function 行政许可核查(uscc) {
await addManyData(TABLENAME.行政许可核查, addList);
}
return 行政许可核查数据;
}
async function 空壳扫描(uscc) {
......@@ -391,6 +630,8 @@ async function 空壳扫描(uscc) {
});
await addManyData(TABLENAME.空壳扫描, addList);
}
return qccselectdata;
}
async function 准入尽职调查(uscc) {
......@@ -414,8 +655,11 @@ async function 准入尽职调查(uscc) {
});
await addManyData(TABLENAME.风险, addList);
}
return qccselectdata;
}
function getFinancingRounds(str) {
if (str.indexOf("天使")) return FINANCINGROUNDS.天使投资;
if (str.indexOf("种子")) return FINANCINGROUNDS.种子轮;
......@@ -429,45 +673,49 @@ function getFinancingRounds(str) {
async function 融资信息核查(uscc) {
let {header, query} = getReqParam(uscc);
let qccselectdata:any = await getQcc('https://api.qichacha.com/CompanyFinancingSearch/GetList', query, header);
let enterpriseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc}, ["eId"]);
let eId = enterpriseInfo.eId;
if (qccselectdata.Data) {
let addList = [];
qccselectdata.Data.forEach(info => {
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,
});
});
await addManyData(TABLENAME.企业融资, addList);
}
// let enterpriseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc}, ["eId"]);
// let eId = enterpriseInfo.eId;
// if (qccselectdata.Data) {
// let addList = [];
// qccselectdata.Data.forEach(info => {
// 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,
// });
// });
// await addManyData(TABLENAME.企业融资, addList);
// }
return qccselectdata;
}
async function 国际专利(uscc) {
let {header, query} = getReqParam(uscc);
let qccselectdata:any = await getQcc('https://api.qichacha.com/InternationalPatentCheck/GetList', query, header);
let enterpriseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc}, ["eId"]);
let eId = enterpriseInfo.eId;
if (qccselectdata.Data) {
let addList = [];
qccselectdata.Data.forEach(info => {
addList.push({
iprId:randomId(TABLEID.知识产权),
eId,
year:getMySqlMs(info.PublicationDate),
number:1,
iprType:IPRALLTYPE.海外专利,
iprName:info.Title,
});
});
await addManyData(TABLENAME.知识产权, addList);
}
// let enterpriseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc}, ["eId"]);
// let eId = enterpriseInfo.eId;
// if (qccselectdata.Data) {
// let addList = [];
// qccselectdata.Data.forEach(info => {
// addList.push({
// iprId:randomId(TABLEID.知识产权),
// eId,
// year:getMySqlMs(info.PublicationDate),
// number:1,
// iprType:IPRALLTYPE.海外专利,
// iprName:info.Title,
// });
// });
// await addManyData(TABLENAME.知识产权, addList);
// }
return qccselectdata;
}
......@@ -488,61 +736,32 @@ async function 科创分(uscc) {
};
await addManyData(TABLENAME.科创分, [addInfo]);
}
return qccselectdata;
}
// async function 专利查询(uscc) {
// let {header, query} = getReqParam(uscc);
// let qccselectdata:any = await getQcc('https://api.qichacha.com/PatentV4/Search', query, header);
// let enterpriseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc}, ["eId"]);
// let eId = enterpriseInfo.eId;
async function 资质证书(uscc) {
let {header, query} = getReqParam(uscc);
let qccselectdata:any = await getQcc('https://api.qichacha.com/ECICertification/SearchCertification', query, header);
let enterpriseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc}, ["eId"]);
let eId = enterpriseInfo.eId;
if (Array.isArray(qccselectdata)) {
let addList = [];
qccselectdata.forEach(info => {
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);
});
await addManyData(TABLENAME.资质证书, addList);
}
}
async function 专利查询(uscc) {
let {header, query} = getReqParam(uscc);
let qccselectdata:any = await getQcc('https://api.qichacha.com/PatentV4/Search', query, header);
let enterpriseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc}, ["eId"]);
let eId = enterpriseInfo.eId;
if (Array.isArray(qccselectdata)) {
console.log();
//todo 没有做
let addList = [];
qccselectdata.forEach(info => {
addList.push({
iprId:randomId(TABLEID.知识产权),
// if (Array.isArray(qccselectdata)) {
// console.log();
// //todo 没有做
// let addList = [];
// qccselectdata.forEach(info => {
// addList.push({
// iprId:randomId(TABLEID.知识产权),
});
});
// });
// });
}
// }
console.log();
}
// return qccselectdata;
// }
async function 失信核查(uscc) {
......@@ -572,6 +791,8 @@ async function 失信核查(uscc) {
});
await addManyData(TABLENAME.失信核查, addList);
}
return qccselectdata;
}
......@@ -600,6 +821,8 @@ async function 严重违法核查(uscc) {
});
await addManyData(TABLENAME.严重违法犯罪, addList);
}
return qccselectdata;
}
......@@ -635,33 +858,34 @@ async function 企业对外投资核查(uscc) {
});
await addManyData(TABLENAME.对外投资, addList);
}
return qccselectdata;
}
// async function 企业年报信息(uscc, query, header) {
// let qccselectdata:any = await getQcc('https://api.qichacha.com/AR/GetAnnualReport', query, header);
// let enterpriseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc}, ["eId"]);
// let eId = enterpriseInfo.eId;
// if (qccselectdata.Data) {
// let addList = [];
// qccselectdata.Data.forEach(info => {
// addList.push({
// stemId:randomId(TABLENAME.知识产权),
// eId,
// industry:info.Industry,
// subIndustry:info.SubIndustry,
// industryRanking:info.IndustryRanking,
// score:info.Score,
// });
// });
// }
// console.log();
// }
async function 企业年报信息(uscc) {
let {header, query} = getReqParam(uscc, "isKeyNo");
let 企业年报信息:any = await getQcc('https://api.qichacha.com/AR/GetAnnualReport', query, header);
// let enterpriseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc}, ["eId"]);
// let eId = enterpriseInfo.eId;
// if (企业年报信息.Data) {
// let addList = [];
// 企业年报信息.Data.forEach(info => {
// addList.push({
// stemId:randomId(TABLENAME.知识产权),
// eId,
// industry:info.Industry,
// subIndustry:info.SubIndustry,
// industryRanking:info.IndustryRanking,
// score:info.Score,
// });
// });
// }
return 企业年报信息;
}
......
import { OPERATIONALDATATYPE, TABLEID, TABLENAME } from "../config/enum/dbEnum";
import { operationalData, selectData } from "../data/operationalData";
import { systemConfig } from "../config/serverConfig";
import { getQcc } from "../util/request";
import { getMySqlMs, getPinyinInitials, randomId } from "../tools/system";
import moment = require("moment");
const md5 = require("md5");
/**
* 获取数据库所有企业uscc,进行企查查数据同步
*/
export async function qccData() {
let enterpriseList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业基础信息表, {}, ["eId", "uscc", "enterpriseName"]);
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}`);
}
}
async function awaitData(uscc, eId) {
await 工商信息(uscc, eId);
await 专利查询(uscc, eId);
// await 软件著作(uscc);
// await 主要人员(uscc);
// await 分支机构(uscc);
// await 行政许可核查(uscc);
// await 空壳扫描(uscc);
// await 准入尽职调查(uscc);
// await 融资信息核查(uscc);
// await 国际专利(uscc);
// await 科创分(uscc);
// await 资质证书(uscc);
// await 专利查询(uscc);
// await 失信核查(uscc);
// await 严重违法核查(uscc);
// await 企业对外投资核查(uscc);
console.log("企查查数据同步成功");
}
/**
* 封装了一个请求方法
* @param uscc
* @returns
*/
function getReqParam(uscc, isKeyNo?) {
const TimeSpan = Math.round(new Date().valueOf()/ 1000);
let header = {
Token:md5(`${systemConfig.qccKey}${TimeSpan}${systemConfig.qccSecretKey}`).toUpperCase(),
TimeSpan
};
let query = {};
if (isKeyNo == "isKeyNo") {
query = {
key:systemConfig.qccKey,
keyNo:uscc,
};
} else if (isKeyNo == "qcc专利Id") {
query = {
key:systemConfig.qccKey,
id:uscc,
};
} else {
query = {
key:systemConfig.qccKey,
searchKey:uscc,
// keyNo:"云合智网(上海)技术有限公司"
};
}
return {header, query};
}
async function 工商信息(uscc, eId) {
let {header, query} = getReqParam(uscc);
let 工商信息:any = await getQcc('https://api.qichacha.com/ECIInfoVerify/GetInfo', query, header);//获取工商信息
let pinyinName = getPinyinInitials(工商信息.Name);
let industryList = []; //Industry
let TermStart = moment(工商信息.TermStart).format("YYYY-MM-DD");
let TermEnd = "无固定期限";
if (工商信息.TermEnd) TermEnd = moment(工商信息.TermEnd).format("YYYY-MM-DD");
//企业基础信息
let baseInfo = {
enterpriseName: 工商信息.Name,
pinyinName,
uscc: 工商信息.CreditCode,
zhuCeHao: 工商信息.No, //EntType = 0/1/4/6/7/9/10/11/-1 中国境内企业时:该字段返回工商注册号;EntType = 3 中国香港企业时:该字段返回企业编号;EntType = 5 中国台湾企业时:该字段返回企业编号
zuZhiJiGouDaiMa: 工商信息.OrgNo,
// gengDuoDianHua: 工商信息., //更多电话
// mainBusiness: 工商信息., //主营业务
logonTime: getMySqlMs(工商信息.StartDate), //成立日期
mail: 工商信息.ContactInfo.Email, //邮箱
// isNaturalPersonHolding: 工商信息., //是否自然人控股
// industry: 工商信息., //领域
// moreMail: 工商信息., //更多邮箱
logonAddress: 工商信息.Address, //注册地址
// tongXinDiZhi: 工商信息., //通信地址
// liaison: 工商信息., //联系人
liaisonPhone: 工商信息.ContactInfo.PhoneNumber, //联系电话
dengJiJiGuan: 工商信息.BelongOrg, //登机机关
qiYeGuiMo: 工商信息.TagList[0].Name, //企业规模 TagList
RAS: 工商信息.Status, //登记状态
guanWang: 工商信息.ContactInfo.WebSite[0].Url, //官网地址
yingYeQiXian: `${TermStart}${TermEnd}`, //营业期限 TermStart至TermEnd
logOffMS: 工商信息.EndDate || null, //注销时间
shijiaoziben: 工商信息.RecCap, //实缴资本
// enterpriseType: 工商信息., //企业机构类型
// jianJie: 工商信息., //简介
zhuceziben: 工商信息.RegistCapi, //注册资本
// naShuiRenZiZhi: 工商信息., //纳税人资质
// operatingAddress: 工商信息., //经营地址
// oldLogonAddress: 工商信息., //迁入前注册地址
// shuiHao: 工商信息., //税号
// shuiWuJu: 工商信息., //税务员
jingYingFanWei: 工商信息.Scope, //经营范围
};
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业基础信息表, baseInfo, {uscc, eId});
//股权结构
if (工商信息.Partners) {
//删除历史记录数据
await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.股权结构, null, {eId});
//同步最新记录
let ownershipList = [];
工商信息.Partners.forEach(info => {
let addInfo:any = {
owId:randomId(TABLEID.股权结构),
eId,
name:info.StockName,
finalBenefitPercent:info.FinalBenefitPercent,
stockPercent:info.StockPercent,
stockType:info.StockType,
realCapi:info.RealCapi,
paidUpCapitalUnit:info.PaidUpCapitalUnit,
subscribedCapital:info.SubscribedCapital,
subscribedCapitalUnit:info.SubscribedCapitalUnit,
};
if (info.CapiDate) addInfo.capiDate = getMySqlMs(info.CapiDate);
if (info.ShoudDate) addInfo.shoudDate = getMySqlMs(info.ShoudDate);
ownershipList.push(addInfo);
});
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.股权结构, ownershipList, null);
}
//企业标签表
if (工商信息.TagList) {
//删除历史记录数据
await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.企业标签表, null, {eId});
//同步最新记录
let enterpriseLabelList = [];
工商信息.TagList.forEach(info => {
enterpriseLabelList.push({
elId:randomId(TABLEID.企业标签表),
eId,
type:info.Type,
labelName:info.Name,
});
});
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业标签表, enterpriseLabelList, null);
}
if (工商信息.Industry) {
//删除历史记录数据
await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.行业信息分类, null, {eId});
//同步最新记录
let industryInfo = {
eiId:randomId(TABLEID.行业信息分类),
eId,
industryCode:工商信息.Industry.IndustryCode ,//行业门类code
industry:工商信息.Industry.Industry ,//行业门类描述
subIndustryCode:工商信息.Industry.SubIndustryCode ,//行业大类code
subIndustry:工商信息.Industry.SubIndustry ,//行业大类描述
middleCategoryCode:工商信息.Industry.MiddleCategoryCode ,//行业中类code
middleCategory:工商信息.Industry.MiddleCategory ,//行业中类描述
smallCategoryCode:工商信息.Industry.SmallCategoryCode ,//行业小类code
smallCategory:工商信息.Industry.SmallCategory ,//行业小类描述
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.行业信息分类, [industryInfo], null);
}
if (工商信息.ChangeRecords) {
//删除历史记录数据
await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.变更信息表, null, {eId});
//同步最新记录
let infoupdateList = [];
工商信息.ChangeRecords.forEach(info => {
infoupdateList.push({
updateId:randomId(TABLEID.变更信息表),
eId,
afterContent:info.AfterContent, //变更前
beforeContent:info.BeforeContent, //变更后
changeDate:getMySqlMs(info.ChangeDate),//变更时间
projectName:info.ProjectName,//变更类型
});
});
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.变更信息表, infoupdateList, null);
}
return
}
async function 商标查询(uscc) {
let enterpriseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc}, ["eId", "enterpriseName"]);
let enterpriseName = enterpriseInfo.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商标详情;
}
}
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;
}
async function 软件著作(uscc) {
let {header, query} = getReqParam(uscc);
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 (Array.isArray(著作权软著)) {
let addList = [];
著作权软著.forEach(info => {
addList.push({
iprId:randomId(TABLEID.知识产权),
eId,
year:getMySqlMs(info.RegisterDate),
number:1,
iprType:IPRALLTYPE.软件著作权,
iprName:info.Name,
category:info.Category,
});
});
await addManyData(TABLENAME.知识产权, addList);
}
return 著作权软著;
}
async function 专利查询(uscc) {
let {header, query} = getReqParam(uscc);
let qccselectdata:any = await getQcc('https://api.qichacha.com/PatentV4/SearchMultiPatents', 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.知识产权),
});
}
}
return qccselectdata;
}
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;
}
......@@ -15,7 +15,7 @@ import { eccFormParam } from "../util/verificationParam";
export async function gardenNoticeList(keywords:string, page:number) {
let selectParam:any = {};
if (keywords) selectParam.content = {"%like%":keywords};
let filesList = ["gnId", "title", "isPublished", "publishTime", "content"];
let filesList = ["gnId", "title", "isPublished", "publishStartTime", "publishEndTime", "content"];
// let resList = await selectData(OPERATIONALDATATYPE.分页查询, TABLENAME.园区通知表, {}, filesList, page);
let resList = await selectData(OPERATIONALDATATYPE.分页查询, TABLENAME.园区通知表, selectParam, filesList, page);
......@@ -27,7 +27,7 @@ export async function gardenNoticeList(keywords:string, page:number) {
title:info.title,
content:info.content,
isPublished:info.isPublished,
publishTime:moment(info.publishTime).format("YYYY-MM-DD")
publishTime:`${moment(info.publishStartTime).format("YYYY-MM-DD")}-${moment(info.publishEndTime).format("YYYY-MM-DD")}`
});
});
......@@ -36,7 +36,7 @@ export async function gardenNoticeList(keywords:string, page:number) {
export async function gardenNoticeInfo(gnId:string) {
let filesList = ["gnId", "title", "isPublished", "content", "publishTime", "relatedEnterprise"];
let filesList = ["gnId", "title", "isPublished", "content", "publishStartTime", "publishEndTime", "relatedEnterprise"];
let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.园区通知表, {gnId}, filesList);
let dataInfo = {
......@@ -44,7 +44,8 @@ export async function gardenNoticeInfo(gnId:string) {
title:resInfo.title,//标题
content:resInfo.content,//内容
isPublished:resInfo.isPublished,//是否发布(1:是,0:否)
publishTime:resInfo.publishTime,//发布时间
publishStartTime:resInfo.publishStartTime,//发布时间
publishEndTime:resInfo.publishEndTime,//发布时间
relatedEnterprise:JSON.parse(resInfo.relatedEnterprise || '[]'),//关联企业
};
return {dataInfo}
......@@ -54,12 +55,13 @@ export async function gardenNoticeInfo(gnId:string) {
export async function gardenNoticeUpdate(gnId:string, param) {
const FuncName = "修改园区通知"
eccFormParam(FuncName, GardenNoticeUpdateConfig, param );
let filesList = ["gnId", "title", "isPublished", "content", "publishTime", "relatedEnterprise"];
let filesList = ["gnId", "title", "isPublished", "content", "publishStartTime", "publishEndTime", "relatedEnterprise"];
let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.园区通知表, {gnId}, filesList);
if (!resInfo.gnId) throw new BizError(ERRORENUM.数据不存在);
param.publishTime = getMySqlMs(param.publishTime);
param.publishStartTime = getMySqlMs(param.publishStartTime);
param.publishEndTime = getMySqlMs(param.publishEndTime);
param.relatedEnterprise = JSON.stringify(param.relatedEnterprise);
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.园区通知表, param, {gnId});
......@@ -71,7 +73,8 @@ export async function gardenNoticeAdd(param) {
eccFormParam(FuncName, GardenNoticeUpdateConfig, param );
param.gnId = randomId(TABLEID.园区通知表);
param.publishTime = getMySqlMs(param.publishTime);
param.publishStartTime = getMySqlMs(param.publishStartTime);
param.publishEndTime = getMySqlMs(param.publishEndTime);
param.relatedEnterprise = JSON.stringify(param.relatedEnterprise);
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.园区通知表, param, {});
......
......@@ -10,7 +10,9 @@ export const GardenNoticeUpdateConfig = {
title:{type:"String"},// 标题
content:{type:"String"},// 内容
isPublished:{type:"Number"},// 是否发布(1:是,0:否)
publishTime:{type:"Number"},// 发布时间
// publishTime:{type:"Number"},// 发布时间
publishStartTime:{type:"Number"}, //发布开始时间
publishEndTime:{type:"Number"}, //发布结束时间
relatedEnterprise:{type:"[String]"},// 关联企业
}
......
......@@ -130,8 +130,8 @@ export enum FOLLOWUPSTATUS {
*/
export enum NEEDCATEGORY {
// 物业服务 = 1,
工商税务 = 2,
代理记账,
// 工商税务 = 2,
代理记账 = 3,
贷款服务,
法律服务,
知识产权,
......
import { awaitData } from "../biz/dataInit";
import { OPERATIONALDATATYPE, TABLENAME } from "../config/enum/dbEnum";
import { selectData } from "./operationalData";
// 初始化数据文件结构
async function initDataFile() {
let enterpriseList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业基础信息表, {}, ["eId", "uscc", "enterpriseName"]);
let currentData = {};
let usccData = await awaitData("91310115MADM8EA654");
currentData["91310115MADM8EA654"] = usccData;
for (let i = 0; i < enterpriseList.length; i++) {
let info = enterpriseList[i];
console.log("开始同步企查查数据");
let usccData = await awaitData(info.uscc);
currentData[info.uscc] = usccData;
console.log(`${info.enterpriseName} 同步成功, eId:${info.eId},下标 ${i}`);
}
console.log("刷新缓存数据结束")
}
/**
* 接口更新
* 设置定时器,每天刷新一次数据
*/
export async function initApiDataStorage() {
await initDataFile();
setInterval(async function () {
await initDataFile();
}, 3600 * 1000 * 24);
}
import { awaitData } from "./biz/dataInit";
import { initConfig, systemConfig } from "./config/serverConfig";
import { initApiDataStorage } from "./data/dataInterfaceWithCache";
import { httpServer } from "./net/http_server";
async function lanuch() {
await initConfig();
httpServer.createServer(systemConfig.port);
console.log('This indicates that the server is started successfully.');
// await initApiDataStorage();
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment