Commit f28ddecc by chenjinjing

no message

parent d0f5e79b
import { systemConfig } from '../config/serverConfig';
import { getEnterprise, getEnterpriseDetails, get入孵企业数量变化趋势 } from '../data/db/qyfw';
import { zhyyTableData } from '../data/table/zhyyData';
import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage, rankPackage, tablePackage } from '../dataPackage/inFrontOut';
import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut, getTableOut } from '../dataPackage/out';
import { keyValuePackage, tablePackage } from '../dataPackage/inFrontOut';
import { getKeyValueOut, getTableOut } from '../dataPackage/out';
/* 企业服务 */
......
import { fxyjTableData, qyszhxTableData } from '../data/table/qyszhxData';
import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage, rankPackage, stringListPackage, tablePackage } from '../dataPackage/inFrontOut';
import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut, getStringOut, getTableOut } from '../dataPackage/out';
import { systemConfig } from '../config/serverConfig';
import { keyValuePackage, stringListPackage, tablePackage } from '../dataPackage/inFrontOut';
import { getKeyValueOut, getStringOut, getTableOut } from '../dataPackage/out';
import { getQyszhx } from '../data/db/qyszhx';
import { selectData } from '../data/db/operationalData';
import { OPERATIONALDATATYPE, TABLENAME } from '../config/enum';
/* 企业数字画像 */
......@@ -11,252 +11,118 @@ export async function getData(req, res) {
let eId = req.body.eId;
let dbData = await getQyszhx(eId);
let excelData = qyszhxTableData();
let fxyjExcelData = fxyjTableData();
let ret: any = {};
let qyjbqkPackageData = keyValuePackage(dbData['企业基本情况'].dataList);
// let qyjbqk = [];
// qyjbqkPackageData.forEach( info => {
// let {key, value} = info;
// if (key == "企业图片") {
// info.value = `${systemConfig.imgPath}/${value}`;
// }
// qyjbqk.push(info);
// })
ret['qyjbqk'] = getKeyValueOut('企业基本情况', qyjbqkPackageData);
let qyjbsjPackageData = keyValuePackage(dbData['企业基本数据'].dataList, "false");
ret['qyjbsj'] = getKeyValueOut('企业基本数据', qyjbsjPackageData);
let qymcPackageData = keyValuePackage(dbData['企业名称'].dataList);
ret['qymc'] = getKeyValueOut('企业名称', qymcPackageData);
let qybqPackageData = stringListPackage(dbData['企业标签'].dataList);
ret['qybq'] = getStringOut('企业标签', qybqPackageData);
let yfzbPackageData = keyValuePackage(dbData['研发占比'].dataList);
ret['yfzb'] = getKeyValueOut('研发占比', yfzbPackageData);
let qyzhxPackageData = keyValuePackage(dbData['企业自画像'].dataList);
ret['qyzhx'] = getKeyValueOut('企业自画像', qyzhxPackageData);
let zfbtPackageData = keyValuePackage(dbData['租房补贴'].dataList);
ret['zfbt'] = getKeyValueOut('租房补贴', zfbtPackageData);
let gxPackageData = keyValuePackage(dbData['高新'].dataList);
ret['gz'] = getKeyValueOut('高新', gxPackageData);
let kxPackageData = keyValuePackage(dbData['科小'].dataList);
ret['kx'] = getKeyValueOut('科小', kxPackageData);
let xjrPackageData = keyValuePackage(dbData['小巨人'].dataList);
ret['xjr'] = getKeyValueOut('小巨人', xjrPackageData);
let zzrzPackageData = keyValuePackage(dbData['资质认证'].dataList);
ret['zzrz'] = getKeyValueOut('资质认证', zzrzPackageData);
let zzrzbhqsPackageData = onceYBarChartPackage(dbData['资质认证变化趋势'], '', '');//新增
ret['zzrzbhqs'] = getOnceYBarChartOut('资质认证变化趋势', zzrzbhqsPackageData);
let zscqPackageData = keyValuePackage(dbData['知识产权'].dataList);
ret['zscq'] = getKeyValueOut('知识产权', zscqPackageData);
let qyyghxPackageData = keyValuePackage(dbData['企业员工画像'].dataList);
ret['qyyghx'] = getKeyValueOut('企业员工画像', qyyghxPackageData);
let gxPackageData = keyValuePackage(dbData['高新'].dataList);
ret['gz'] = getKeyValueOut('高新', gxPackageData);
let lnrczpqkPackageData = onceYBarChartPackage(dbData['历年人才招聘情况'], '', '');
ret['lnrczpqk'] = getOnceYBarChartOut('历年人才招聘情况', lnrczpqkPackageData);
let zfbtPackageData = keyValuePackage(dbData['租房补贴'].dataList);
ret['zfbt'] = getKeyValueOut('租房补贴', zfbtPackageData);
let qyhzsjPackageData = keyValuePackage(dbData['企业汇总数据'].dataList);
ret['qyhzsj'] = getKeyValueOut('企业汇总数据', qyhzsjPackageData);
let dkbtPackageData = keyValuePackage(dbData['贷款补贴'].dataList);
ret['dkbt'] = getKeyValueOut('贷款补贴', dkbtPackageData);
// let xjrTableData = tablePackage(excelData["小巨人"].headerList[0], excelData["小巨人"].bodyList);
// ret['xjr'] = getTableOut( '小巨人', xjrTableData);
let qyjbqkPackageData = dbData['企业基本情况'].dataList;
ret['qyjbqk'] = getKeyValueOut('企业基本情况', qyjbqkPackageData);
// let gxqyTableData = tablePackage(excelData["高新企业"].headerList[0], excelData["高新企业"].bodyList);
// ret['gxqy'] = getTableOut( '高新企业', gxqyTableData);
let qybqPackageData = stringListPackage(dbData['企业标签'].dataList);
ret['qybq'] = getStringOut('企业标签', qybqPackageData);
// let zjtxTableData = tablePackage(excelData["专精特新"].headerList[0], excelData["专精特新"].bodyList);
// ret['zjtx'] = getTableOut( '专精特新', zjtxTableData);
let ssgjejhy = keyValuePackage(dbData['企业科创分'].count);
ret['ssgjejhy'] = getKeyValueOut('所属国际二级行业', ssgjejhy);
let ysqkPackageData = keyValuePackage(dbData['营收情况'].dataList);
ret['ysqk'] = getKeyValueOut('营收情况', ysqkPackageData);
let qykcfbt = keyValuePackage(dbData['企业科创分'].chartData);
ret['qykcfbt'] = getKeyValueOut('企业科创分饼图', qykcfbt);
let ysbhqsPackageData = onceYBarChartPackage(dbData['营收变化趋势'], '', '');
ret['ysbhqs'] = getOnceYBarChartOut('营收变化趋势', ysbhqsPackageData);
let qykcf = keyValuePackage(dbData['企业科创分'].dataList);
ret['qykcf'] = getKeyValueOut('企业科创分', qykcf);
let qydtTableData = tablePackage(dbData["企业动态"].headerList[0], dbData["企业动态"].bodyList);
let qydt = { dataList: [], titleList: qydtTableData.titleList };
// qydtTableData.dataList.forEach(info => {
// let {A} = info;
// let imgUrl = JSON.parse(A);
// info["A"] = imgUrl[0];
// qydt.dataList.push(info);
// })
ret['qydt'] = getTableOut('企业动态', qydtTableData);
let gqjg = keyValuePackage(dbData['股权结构'].dataList);
ret['gqjg'] = getKeyValueOut('股权结构', gqjg);
let fxyjInfo = {};
fxyjExcelData['风险预警'].dataList.forEach(info => {
let { key, value } = info;
fxyjInfo[key] = info;
})
let qymc = dbData['企业名称'].dataList[0].value;
ret['fxyj'] = { title: "风险预警", dataList: fxyjInfo[qymc]? [fxyjInfo[qymc]] : []};
let zzrz = keyValuePackage(dbData['资质认证'].count);
ret['zzrz'] = getKeyValueOut('资质认证', zzrz);
let zzrzTableData = tablePackage(dbData["资质认证"].headerList[0], dbData["资质认证"].bodyList);
ret['zzrzTable'] = getTableOut('资质认证表格', zzrzTableData);
let fwxqPackageData = keyValuePackage(dbData['服务需求'].dataList, "false");
ret['fwxq'] = getKeyValueOut('服务需求', fwxqPackageData);
let sxhc = keyValuePackage(dbData['失信核查'].count);
ret['sxhc'] = getKeyValueOut('失信核查', sxhc);
let hdbhqsfxPackageData = onceYBarChartPackage(dbData['活动变化趋势分析'], '', '');
ret['hdbhqsfx'] = getOnceYBarChartOut('活动变化趋势分析', hdbhqsfxPackageData);
let sxhcxx = keyValuePackage(dbData['失信核查'].dataList);
ret['sxhcxx'] = getKeyValueOut('风险提示', sxhcxx);
// let ryzzPackageData = keyValuePackage(excelData['荣誉资质'].dataList);
// let ryzz = [];
// ryzzPackageData.forEach(info => {
// let { key, value } = info;
// info.value = `${systemConfig.imgPath}/${value}`;
// ryzz.push(info);
// })
// ret['ryzz'] = getKeyValueOut('荣誉资质', ryzz);
let ryzztp = dbData["荣誉资质图片"];
ret['ryzztp'] = { title: "荣誉资质图片", dataList: ryzztp };
let sxxq = keyValuePackage(dbData['失信详情'].dataList);
ret['sxxq'] = getKeyValueOut('失信详情', sxxq);
let wfhc = keyValuePackage(dbData['违法核查'].count);
ret['wfhc'] = getKeyValueOut('违法核查', wfhc);
let fwjl_kjfwTableData = tablePackage(dbData["服务记录_空间服务"].headerList[0], dbData["服务记录_空间服务"].bodyList);
ret['fwjl_kjfw'] = getTableOut('服务记录_空间服务', fwjl_kjfwTableData);
let wfhcxx = keyValuePackage(dbData['违法核查'].dataList);
ret['wfhcxx'] = getKeyValueOut('违法核查详细', wfhcxx);
let fwjl_gsfwTableData = tablePackage(dbData["服务记录_工商服务"].headerList[0], dbData["服务记录_工商服务"].bodyList);
ret['fwjl_gsfw'] = getTableOut('服务记录_工商服务', fwjl_gsfwTableData);
let qyfwsqqk = keyValuePackage(dbData['企业服务申请情况'].dataList);
ret['qyfwsqqk'] = getKeyValueOut('企业服务申请情况', qyfwsqqk);
let fwjl_rzfwTableData = tablePackage(dbData["服务记录_融资服务"].headerList[0], dbData["服务记录_融资服务"].bodyList);
ret['fwjl_rzfw'] = getTableOut('服务记录_融资服务', fwjl_rzfwTableData);
let qyfwsqlx = keyValuePackage(dbData['企业服务申请类型'].dataList);
ret['qyfwsqlx'] = getKeyValueOut('企业服务申请类型', qyfwsqlx);
let fwjlPackageData = keyValuePackage(dbData['服务记录'].dataList);
ret['fwjl'] = getKeyValueOut('服务记录', fwjlPackageData);
let zlsl = keyValuePackage(dbData['知识产权'].count);
ret['zlsl'] = getKeyValueOut('专利数量', zlsl);
let yqtzPackageData = keyValuePackage(excelData['园区通知'].dataList);
ret['yqtz'] = getKeyValueOut('园区通知', yqtzPackageData);
let zscq = keyValuePackage(dbData['知识产权'].dataList);
ret['zscq'] = getKeyValueOut('知识产权', zscq);
let yqtzxqTableData = tablePackage(excelData["园区通知详情"].headerList[0], excelData["园区通知详情"].bodyList);
// let yqtzxq = {dataList:[], titleList:yqtzxqTableData.titleList};
// yqtzxqTableData.dataList.forEach(info => {
// let {A} = info;
// let imgUrl = `${systemConfig.imgPath}/${A}`;
// info["A"] = imgUrl;
// yqtzxq.dataList.push(info);
// })
ret['yqtzxq'] = getTableOut('园区通知详情', yqtzxqTableData);
let rzqk = keyValuePackage(dbData['融资情况'].count);
ret['rzqk'] = getKeyValueOut('融资情况', rzqk);
let yqhdPackageData = keyValuePackage(excelData['园区活动'].dataList);
ret['yqhd'] = getKeyValueOut('园区活动', yqhdPackageData);
let rzqsfx = keyValuePackage(dbData['融资情况'].dataList);
ret['rzqsfx'] = getKeyValueOut('融资趋势分析', rzqsfx);
let yqhdmxTableData = tablePackage(excelData["园区活动明细"].headerList[0], excelData["园区活动明细"].bodyList);
ret['yqhdmx'] = getTableOut('园区活动明细', yqhdmxTableData);
let ysqk = keyValuePackage(dbData['营收情况'].dataList);
ret['ysqk'] = getKeyValueOut('营收情况', ysqk);
ret['ysqsfx'] = {title:"营收趋势分析", dataList:dbData["营收趋势分析"]};
let ysmx = tablePackage(dbData["营收明细"].headerList[0], dbData["营收明细"].bodyList);
ret['ysmx'] = getTableOut('营收明细', ysmx);
let nssr = tablePackage(dbData["纳税明细"].headerList[0], dbData["纳税明细"].bodyList);
ret['nssr'] = getTableOut('纳税明细', nssr);
let yftrmx = tablePackage(dbData["研发投入明细"].headerList[0], dbData["研发投入明细"].bodyList);
ret['yftrmx'] = getTableOut('研发投入明细', yftrmx);
res.send(ret);
}
export async function getData备份(req, res) {
let eId = req.body.eId;
let excelData = qyszhxTableData();
/**
* 拼音首字母查询
* @param req
* @param res
*/
export async function getPinyinName(req, res) {
let {pinyinName, page} = req.body;
let ret: any = {};
let dbList = await selectData(OPERATIONALDATATYPE.分页查询, TABLENAME.企业基础信息表, { pinyinName:{"%like%":pinyinName} }, null, page);
let qyjbqkPackageData = keyValuePackage(excelData['企业基本情况'].dataList);
let qyjbqk = [];
qyjbqkPackageData.forEach(info => {
let { key, value } = info;
if (key == "企业图片") {
info.value = `${systemConfig.imgPath}/${value}`;
}
qyjbqk.push(info);
})
ret['qyjbqk'] = getKeyValueOut('企业基本情况', qyjbqk);
let qyjbsjPackageData = keyValuePackage(excelData['企业基本数据'].dataList, "false");
ret['qyjbsj'] = getKeyValueOut('企业基本数据', qyjbsjPackageData);
let qybqPackageData = stringListPackage(excelData['企业标签'].dataList);
ret['qybq'] = getStringOut('企业标签', qybqPackageData);
let zscqPackageData = keyValuePackage(excelData['知识产权'].dataList);
ret['zscq'] = getKeyValueOut('知识产权', zscqPackageData);
let qyyghxPackageData = keyValuePackage(excelData['企业员工画像'].dataList);
ret['qyyghx'] = getKeyValueOut('企业员工画像', qyyghxPackageData);
let lnrczpqkPackageData = onceYBarChartPackage(excelData['历年人才招聘情况'], '', '');
ret['lnrczpqk'] = getOnceYBarChartOut('历年人才招聘情况', lnrczpqkPackageData);
let qyhzsjPackageData = keyValuePackage(excelData['企业汇总数据'].dataList);
ret['qyhzsj'] = getKeyValueOut('企业汇总数据', qyhzsjPackageData);
let xjrTableData = tablePackage(excelData["小巨人"].headerList[0], excelData["小巨人"].bodyList);
ret['xjr'] = getTableOut('小巨人', xjrTableData);
let gxqyTableData = tablePackage(excelData["高新企业"].headerList[0], excelData["高新企业"].bodyList);
ret['gxqy'] = getTableOut('高新企业', gxqyTableData);
let zjtxTableData = tablePackage(excelData["专精特新"].headerList[0], excelData["专精特新"].bodyList);
ret['zjtx'] = getTableOut('专精特新', zjtxTableData);
let ysqkPackageData = keyValuePackage(excelData['营收情况'].dataList);
ret['ysqk'] = getKeyValueOut('营收情况', ysqkPackageData);
let ysbhqsPackageData = onceYBarChartPackage(excelData['营收变化趋势'], '', '');
ret['ysbhqs'] = getOnceYBarChartOut('营收变化趋势', ysbhqsPackageData);
let qydtTableData = tablePackage(excelData["企业动态"].headerList[0], excelData["企业动态"].bodyList);
let qydt = { dataList: [], titleList: qydtTableData.titleList };
qydtTableData.dataList.forEach(info => {
let { A } = info;
let imgUrl = `${systemConfig.imgPath}/${A}`;
info["A"] = imgUrl;
qydt.dataList.push(info);
})
ret['qydt'] = getTableOut('企业动态', qydt);
let fwxqPackageData = keyValuePackage(excelData['服务需求'].dataList, "false");
ret['fwxq'] = getKeyValueOut('服务需求', fwxqPackageData);
let hdbhqsfxPackageData = onceYBarChartPackage(excelData['活动变化趋势分析'], '', '');
ret['hdbhqsfx'] = getOnceYBarChartOut('活动变化趋势分析', hdbhqsfxPackageData);
let fwjl_kjfwTableData = tablePackage(excelData["服务记录_空间服务"].headerList[0], excelData["服务记录_空间服务"].bodyList);
ret['fwjl_kjfw'] = getTableOut('服务记录_空间服务', fwjl_kjfwTableData);
let fwjl_gsfwTableData = tablePackage(excelData["服务记录_工商服务"].headerList[0], excelData["服务记录_工商服务"].bodyList);
ret['fwjl_gsfw'] = getTableOut('服务记录_工商服务', fwjl_gsfwTableData);
let fwjl_rzfwTableData = tablePackage(excelData["服务记录_融资服务"].headerList[0], excelData["服务记录_融资服务"].bodyList);
ret['fwjl_rzfw'] = getTableOut('服务记录_融资服务', fwjl_rzfwTableData);
let fwjlPackageData = keyValuePackage(excelData['服务记录'].dataList);
ret['fwjl'] = getKeyValueOut('服务记录', fwjlPackageData);
let yqtzPackageData = keyValuePackage(excelData['园区通知'].dataList);
ret['yqtz'] = getKeyValueOut('园区通知', yqtzPackageData);
let yqtzxqTableData = tablePackage(excelData["园区通知详情"].headerList[0], excelData["园区通知详情"].bodyList);
let yqtzxq = { dataList: [], titleList: yqtzxqTableData.titleList };
yqtzxqTableData.dataList.forEach(info => {
let { A } = info;
let imgUrl = `${systemConfig.imgPath}/${A}`;
info["A"] = imgUrl;
yqtzxq.dataList.push(info);
let enterpriseNameList = [];
dbList.forEach( info => {
enterpriseNameList.push(info.enterpriseName);
})
ret['yqtzxq'] = getTableOut('园区通知详情', yqtzxq);
let yqhdPackageData = keyValuePackage(excelData['园区活动'].dataList);
ret['yqhd'] = getKeyValueOut('园区活动', yqhdPackageData);
ret['qymcList'] = enterpriseNameList;
ret['dataCount'] = dbList.length;
res.send(ret);
}
let yqhdmxTableData = tablePackage(excelData["园区活动明细"].headerList[0], excelData["园区活动明细"].bodyList);
ret['yqhdmx'] = getTableOut('园区活动明细', yqhdmxTableData);
res.send(ret);
}
\ No newline at end of file
import { systemConfig } from '../config/serverConfig';
import { getZhyy } from '../data/db/zhyy';
import { zhyyTableData } from '../data/table/zhyyData';
import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage, rankPackage, tablePackage } from '../dataPackage/inFrontOut';
import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut, getTableOut } from '../dataPackage/out';
import { keyValuePackage, tablePackage } from '../dataPackage/inFrontOut';
import { getKeyValueOut, getTableOut } from '../dataPackage/out';
import { getChart } from '../data/db/out';
/* 智慧运营 */
/**智慧运营 */
export async function getData(req, res) {
let excelData = zhyyTableData();
......
......@@ -40,6 +40,19 @@ export enum TABLENAME {
企业专利表 = 'enterprise_patent',
企业基础信息表 = 'enterprise',
企业服务表 = 'enterprise_service',
股权结构 = 'ownership',
行业信息分类 = "enterprise_industry",
主要人员 = "employees",
分支机构 = "branches",
行政许可核查 = "license",
空壳扫描 = "empty",
风险 = "enterprise_risk",
科创分 = "enterprise_stem",
资质证书 = "certification",
失信核查 = "dishonesty",
严重违法犯罪 = "break_the_law",
对外投资 = "overseas_investment",
}
......
......@@ -72,3 +72,37 @@ export function getYearList() {
return years;
}
/**
* 获取最近的四个季度
* @param count
* @returns
*/
export function getRecentQuarters(count = 4) {
const currentDate = moment();
const currentQuarter = Math.floor(currentDate.month() / 3) + 1;
const result = [];
let year = currentDate.year();
let quarter = currentQuarter;
for (let i = 0; i < count; i++) {
result.push({
year: year,
quarter: quarter
});
// 计算上一个季度
quarter--;
if (quarter === 0) {
quarter = 4;
year--;
}
}
return result;
}
import moment = require("moment");
import { AWARDLEVEL, DEGREE, FINANCINGROUNDS, IPRALLTYPE, NEEDCATEGORY, OPERATIONALDATATYPE, QUARTER, TABLENAME } from "../../config/enum";
import { AWARDLEVEL, DEGREE, FINANCINGROUNDS, FOLLOWUPSTATUS, IPRALLTYPE, NEEDCATEGORY, OPERATIONALDATATYPE, QUARTER, TABLENAME } from "../../config/enum";
import { selectData, selectManyTableData } from "./operationalData";
import { getChart, getKeyValue, getYearList } from "./out";
import { getChart, getKeyValue, getRecentQuarters, getYearList } from "./out";
import { changeEnumValue } from "../../tools/eccEnum";
import { getMySqlMs } from "../../tools/systemTools";
import { connectLogger } from "log4js";
......@@ -12,153 +12,169 @@ import { systemConfig } from "../../config/serverConfig";
export async function getQyszhx(eId) {
let qyszhx = {
企业基本情况: { dataList: [], titleList: ['key', 'value'] },
企业基本数据: { dataList: [], titleList: ['key', 'value'] },
企业标签: { dataList: [], titleList: ['key', 'value'] },
研发占比: { dataList: [], titleList: ['key', 'value'] },
企业科创分: { count: [], dataList: [], chartData:[]}, //count:所属国际二级行业,chartData:饼图
股权结构: { dataList: [], titleList: ['key', 'value'] },
资质认证: {count:[], bodyList: [], headerList: [['生效时间', '证书类型', '状态']]}, //count:资质认证总数
失信核查: {count:[], dataList:[]},//todo
失信详情: {count:[], dataList: []},//todo
违法核查: {count:[], dataList: []},//todo
企业服务申请情况: { dataList: [], titleList: ['key', 'value'] },
企业服务申请类型: { dataList: [], titleList: ['key', 'value'] },
知识产权: { count:[], dataList: [], titleList: ['key', 'value'] },
融资情况: {count:[], dataList:[]},
营收情况: { dataList: [], titleList: ['key', 'value'] },
营收趋势分析: {},
营收明细: {bodyList: [], headerList: [['名称', '时间', '金额']]},
纳税明细: {bodyList: [], headerList: [['名称', '时间', '金额']]},
研发投入明细: {bodyList: [], headerList: [['名称', '时间', '金额']]},
/**中间切换 */
企业自画像: { dataList: [], titleList: ['key', 'value'] },
租房补贴: { dataList: [], titleList: ['key', 'value'] },
高新: { dataList: [], titleList: ['key', 'value'] },
科小: { dataList: [], titleList: ['key', 'value'] },
小巨人: { dataList: [], titleList: ['key', 'value'] },
资质认证: { dataList: [], titleList: ['key', 'value'] },//企业资质
资质认证变化趋势: [],
知识产权: { dataList: [], titleList: ['key', 'value'] },
企业员工画像: { dataList: [], titleList: ['key', 'value'] },
企业汇总数据: { dataList: [], titleList: ['key', 'value'] },
企业名称: { dataList: [], titleList: ['key', 'value'] },
营收情况: { dataList: [], titleList: ['key', 'value'] },
营收变化趋势: [],
企业动态: { bodyList: [], headerList: [['获奖数量', '获奖名称', '获奖时间', '颁奖单位', '奖项等级']] },
// 风险预警:{ bodyList: [], headerList: [['风险预警名称', '风险预警时间', '风险预警类型', '风险预警原因']] },
服务需求: { dataList: [], titleList: ['key', 'value'] },
活动变化趋势分析: [],
荣誉资质图片: {},
服务记录_空间服务: { bodyList: [], headerList: [['服务名称', '服务时间', '服务内容']] },
服务记录_工商服务: { bodyList: [], headerList: [['服务名称', '服务时间', '服务内容']] },
服务记录_融资服务: { bodyList: [], headerList: [['服务名称', '服务时间', '服务内容']] },
服务记录: { dataList: [], titleList: ['key', 'value'] },
历年人才招聘情况: [],
贷款补贴: { dataList: [], titleList: ['key', 'value'] },
}
/**数据库查询 */
let 企业基础信息 = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, { eId }, null);
if (!Object.keys(企业基础信息).length) console.log('eId:', eId);
// let column = ["eId", "enterpriseName", "uscc", "", "", "", "", "", "", "", "", "", "", "", ""];
let 孵化Column = ["fId", "eId", "startTime", "endTime", "state", "virtualCause", "virtualCauseDes", "moveOutType", "moveOutTrace", "moveOutCause", "moveOutTime",
"graduationTime", "jiShuHeTongJiaoYi"];
let 企业孵化联查includeConf = {};
企业孵化联查includeConf[TABLENAME.企业孵化信息] = { cloum: 孵化Column, where: {} }
let 企业孵化信息 = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, { eId }, [], 企业孵化联查includeConf);
let 资质Column = ["qId", "eId", "kxTime", "zjtxTime", "xjrTime", "xjrPyTime", "goPublicTime", "gaoXinJiShuTime", "goPublicSector"];
let 企业资质联查includeConf = {};
企业资质联查includeConf[TABLENAME.企业资质] = { cloum: 资质Column, where: {} }
let 企业资质信息 = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, { eId }, [], 企业资质联查includeConf);
let 专利Column = ["iprId", "eId", "year", "number", "iprType", "selectedValue", "iprName", "iprUrl"];
let 企业专利联查includeConf = {};
企业专利联查includeConf[TABLENAME.知识产权] = { cloum: 专利Column, where: {} }
let 企业专利信息 = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, { eId }, [], 企业专利联查includeConf);
let 创业团队Column = ["tId", "eId", "name", "sex", "birth", "degree", "graduationSchool", "talentType", "des"];
let 创业团队联查includeConf = {};
创业团队联查includeConf[TABLENAME.创业团队] = { cloum: 创业团队Column, where: {} }
let 创业团队信息 = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, { eId }, [], 创业团队联查includeConf);
let 企业经营Column = ["mId", "eId", "annual", "BI", "TXP", "RD", "createTime", "state"];
let 企业经营联查includeConf = {};
企业经营联查includeConf[TABLENAME.企业经营信息] = { cloum: 企业经营Column, where: {} }
let 企业经营信息 = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, { eId }, [], 企业经营联查includeConf);
let 企业荣誉Column = ["hId", "eId", "awardName", "awardingUnit", "awardTime", "awardLevel", "awardImg"];
let 企业荣誉联查includeConf = {};
企业荣誉联查includeConf[TABLENAME.企业荣誉] = { cloum: 企业荣誉Column, where: {} }
let 企业荣誉信息 = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, { eId }, [], 企业荣誉联查includeConf);
let 企业融资Column = ["rId", "eId", "financingAmount", "financingRounds", "fuHuaQiInvestment", "fuHuaQiInvestmentStyle",
"fuHuaQiInvestmentAmount", "investmentDate", "investmentInstitutionsName", "valuation"];
let 企业融资联查includeConf = {};
企业融资联查includeConf[TABLENAME.企业融资] = { cloum: 企业融资Column, where: {} }
let 企业融资信息 = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, { eId }, [], 企业融资联查includeConf);
let 企业服务Column = ["esId", "eId", "needCategory", "needContent", "applyTime", "followUpStatus", "resolveTime", "fangKui",
"shouLiTime", "outcome", "desc"];
let 企业服务联查includeConf = {};
企业服务联查includeConf[TABLENAME.企业服务表] = { cloum: 企业服务Column, where: {} }
let 企业服务信息 = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, { eId }, [], 企业服务联查includeConf);
let 参保记录Column = ["cId", "eId", "annual", "zhuanKe", "benKe", "shuoshi", "boShi", "boshiyishang", "qiTa"];
let 参保记录联查includeConf = {};
参保记录联查includeConf[TABLENAME.参保记录] = { cloum: 参保记录Column, where: {} }
// let 参保记录信息 = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, { eId }, [], 参保记录联查includeConf);
let 参保记录信息 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.参保记录, { eId }, 参保记录Column);
let 租赁信息Column = ["leaseId", "eId", "area", "startTime", "endTime"];
let 租赁信息联查includeConf = {};
租赁信息联查includeConf[TABLENAME.租赁信息] = { cloum: 租赁信息Column, where: {} }
let 租赁信息 = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, { eId }, [], 租赁信息联查includeConf);
let 法人信息 = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.法人信息表, { eId }, null);
//企业基本情况
let qyjbqk = {
企业介绍: 企业基础信息.jianJie,
// 企业图片: "企业照片占位图.png",
统一社会信用代码: 企业基础信息.uscc,
法人代表: 法人信息.name,
登记状态: 企业基础信息.RAS,
成立时间: moment(企业基础信息.logonTime).format("YYYY-MM-DD"),
注册资本: 企业基础信息.zhuceziben,
组织机构代码: 企业基础信息.zuZhiJiGouDaiMa,
};
//企业基本数据
qyszhx.企业基本情况.dataList = getKeyValue(qyjbqk);
/**
* 企业名称
*/
let qyName = {
企业名称: 企业基础信息.enterpriseName
};
qyszhx.企业名称.dataList = getKeyValue(qyName);
//企业标签
let 企业资质信息 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业资质, {eId}, []);
let qybq = get企业标签(企业资质信息);
qyszhx.企业标签.dataList = qybq;
//企业科创分
let 企业科创分 = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.科创分, {eId}, ["eId", "industry", "subIndustry", "industryRanking", "score"]);
let ssgjejhy = {所属国际二级行业:企业科创分.subIndustry};
qyszhx.企业科创分.count = getKeyValue(ssgjejhy);
//饼图
let qykcfChart = {占比:企业科创分.industryRanking, 等级:"", 星级:0};
let industryRanking = 0;
if (企业科创分.industryRanking) industryRanking = parseInt(企业科创分.industryRanking.split('%')[0]);
if (industryRanking >= 96 && industryRanking <= 100) {
qykcfChart.等级 = '卓越';
qykcfChart.星级 = 5;
} else if (industryRanking >= 86 && industryRanking <= 95) {
qykcfChart.等级 = '优秀';
qykcfChart.星级 = 4;
} else if (industryRanking >= 71 && industryRanking <= 85) {
qykcfChart.等级 = '良好';
qykcfChart.星级 = 3;
} else if (industryRanking >= 51 && industryRanking <= 70) {
qykcfChart.等级 = '普通';
qykcfChart.星级 = 2;
} else if (industryRanking >= 20 && industryRanking <= 50) {
qykcfChart.等级 = '入门';
qykcfChart.星级 = 1;
} else {
qykcfChart.等级 = '未知'; // 处理不在范围内的分数
}
qyszhx.企业科创分.chartData = getKeyValue(qykcfChart);
//表格
let qykcf = {科创分:企业科创分.score, 同行业内科创排名:企业科创分.industryRanking};
qyszhx.企业科创分.dataList = getKeyValue(qykcf);
//股权结构
let 股权结构 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.股权结构, {eId}, ["eId", "name", "stockPercent"]);
let gqjg = [];
股权结构.forEach( info => {
let rate = 0;
if (info.stockPercent) rate = parseInt(info.stockPercent.split('%')[0]);
gqjg.push({key:info.name, value:info.stockPercent, rate});
});
gqjg.sort( (a, b) => {
return b.rate - a.rate;
})
qyszhx.股权结构.dataList = gqjg.slice(0, 3);
//资质认证
let 资质证书 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.资质证书, {eId}, ["eId", "name", "type", "startDate", "status"]);
let zzzs = [];
资质证书.forEach( info => {
zzzs.push([moment(info.startDate).format("YYYY-MM-DD"), info.type, info.status]);
})
qyszhx.资质认证.count = [{key:"资质认证", value:资质证书.length}];
qyszhx.资质认证.bodyList = zzzs;
//企业风险动态:失信核查、失信详情、违法核查
let 企业风险动态 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.失信核查, {eId}, ["eId", "liandate", "anno", "executegov", "executestatus", "publicdate", "executeno", "actionRemark", "amount"]);
let qyfxdt = {失信核查:[], 失信详情:[], 违法核查:[]};
企业风险动态.forEach( info => {
qyfxdt.失信核查.push(info.actionRemark);
})
qyszhx.失信核查.count = [{key:"失信核查次数", value:企业风险动态.length}];
qyszhx.失信核查.dataList = qyfxdt.失信核查;
let qyjbsj = {
注册时间: "-",
迁入时间: "-",
首次入孵时间: "-",
};
if (企业基础信息.logonTime) qyjbsj.注册时间 = moment(企业基础信息.logonTime).format("YYYY-MM-DD")
if (企业孵化信息[0]) {
if (企业孵化信息[0].enterprise_fuhuas[0].startTime) qyjbsj.首次入孵时间 = moment(企业孵化信息[0].enterprise_fuhuas[0].startTime).format("YYYY-MM-DD")
let 严重违法犯罪 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.严重违法犯罪, {eId}, ["eId", "Type", "AddReason", "AddDate", "AddOffice", "RemoveReason", "RemoveDate", "RemoveOffice"]);
严重违法犯罪.forEach( info => {
qyfxdt.违法核查.push(info.AddReason);
})
qyszhx.违法核查.count = [{key:"违法核查次数", value:严重违法犯罪.length}];
qyszhx.违法核查.dataList = qyfxdt.违法核查;
//企业服务申请情况
let 企业服务dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业服务表, {eId}, []); //获取所有企业服务表联查企业信息表
let 未受理企业服务Count = await selectData(OPERATIONALDATATYPE.查询数据量, TABLENAME.企业服务表, {eId, followUpStatus:FOLLOWUPSTATUS.未受理}, []);
let 已完成企业服务Count = await selectData(OPERATIONALDATATYPE.查询数据量, TABLENAME.企业服务表, {eId, followUpStatus:FOLLOWUPSTATUS.已完成}, []);
let qyfwsqqk = {
服务次数:企业服务dbList.length,
已完成:已完成企业服务Count,
未受理:未受理企业服务Count
}
if (企业基础信息.firstLoginTime) qyjbsj.迁入时间 = moment(企业基础信息.firstLoginTime).format("YYYY-MM-DD")
qyszhx.企业基本数据.dataList = getKeyValue(qyjbsj);
qyszhx.企业服务申请情况.dataList = getKeyValue(qyfwsqqk);
let qyfwsqlx = getQyfwsqlx(企业服务dbList);
qyszhx.企业服务申请类型.dataList = qyfwsqlx;
//企业标签 todo
let qybq = get企业标签(企业资质信息);
qyszhx.企业标签.dataList = qybq;
//知识产权
let 知识产权 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.知识产权, {eId}, []);
let zscq = get知识产权(知识产权);
qyszhx.知识产权.count = [{key:"专利数量", value:zscq.count}];
qyszhx.知识产权.dataList = getKeyValue(zscq.zscq);
//融资情况
let 融资情况 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业融资, {eId}, []);
let 最新融资情况 = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业融资, {eId, "%orderDesc%":"investmentDate"}, []);
let rzqk = get融资情况(融资情况);
rzqk.count.融资轮次 = changeEnumValue(FINANCINGROUNDS, 最新融资情况.financingRounds);
qyszhx.融资情况.count = getKeyValue(rzqk.count);
qyszhx.融资情况.dataList = rzqk.rzqk;
// 计算研发占比
let yfzb = get研发占比(企业经营信息);
// 将研发占比数据添加到 qyszhx 对象中
qyszhx.研发占比.dataList = getKeyValue(yfzb);
//营收情况
let 营收情况 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, {eId}, []);
let { ysqk, ysbhqs, ysbhqsTable } = get营收情况(营收情况);
qyszhx.营收情况.dataList = getKeyValue(ysqk);
qyszhx.营收趋势分析 = ysbhqs;
qyszhx.营收明细.bodyList = ysbhqsTable.营收;
qyszhx.纳税明细.bodyList = ysbhqsTable.纳税;
qyszhx.研发投入明细.bodyList = ysbhqsTable.研发投入;
/**
* 企业自画像
*/
let qyzp = get企业自画像(企业经营信息, 企业融资信息, 企业专利信息);
//企业自画像
let qyzp = get企业自画像(营收情况, 融资情况, 知识产权);
qyszhx.企业自画像.dataList = getKeyValue(qyzp);
//租房补贴
let zfbz = get租房补贴(企业资质信息, 企业专利信息, 参保记录信息);
qyszhx.租房补贴.dataList = getKeyValue(zfbz);
// //高新
// let gx = get高新(企业资质信息);
// qyszhx.高新.dataList = getKeyValue(gx);
// //科小
// let kx = get科小(企业资质信息);
// qyszhx.科小.dataList = getKeyValue(kx);
let 参保记录Column = ["cId", "eId", "annual", "zhuanKe", "benKe", "shuoshi", "boShi", "boshiyishang", "qiTa"];
let 参保记录信息 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.参保记录, { eId }, 参保记录Column);
// //小巨人
// let xjt = get小巨人(企业资质信息);
// qyszhx.小巨人.dataList = getKeyValue(xjt);
let zfbz = get租房补贴(企业资质信息, 知识产权, 参保记录信息);
qyszhx.租房补贴.dataList = getKeyValue(zfbz);
// 高新
let gx = get资质达标情况(企业资质信息, 'gaoXinJiShuTime');
......@@ -167,203 +183,47 @@ export async function getQyszhx(eId) {
// 科小
let kx = get资质达标情况(企业资质信息, 'kxTime');
qyszhx.科小.dataList = getKeyValue(kx);
// 小巨人
let xjrData = get资质达标情况(企业资质信息, 'xjrTime');
qyszhx.小巨人.dataList = getKeyValue(xjrData);
//资质认证
let zzrz = get资质认证(企业资质信息);
qyszhx.资质认证.dataList = getKeyValue(zzrz);
//资质认证变化趋势
let zzrzbsqs = get资质认证变化趋势(企业资质信息);
qyszhx.资质认证变化趋势 = zzrzbsqs;
//知识产权
let zscq = get知识产权(企业专利信息);
qyszhx.知识产权.dataList = getKeyValue(zscq);
//企业员工画像
let qyyghx = await get企业员工画像(参保记录信息);
qyszhx.企业员工画像.dataList = getKeyValue(qyyghx);
let 专利总数 = 0;
for (let key in zscq) {
专利总数 += zscq[key];
}
//企业汇总数据
let qyhzsj = {
// 企业认证:0, //todo
资质认证: qybq.length,
专利数: 专利总数,
};
qyszhx.企业汇总数据.dataList = getKeyValue(qyhzsj);
//营收情况
let { ysqk, ysbhqs } = get营收情况(企业经营信息);
qyszhx.营收情况.dataList = getKeyValue(ysqk);
//营收变化趋势
qyszhx.营收变化趋势 = ysbhqs;
//企业动态
let qydt = get企业动态(企业荣誉信息);
qyszhx.企业动态.bodyList = qydt;
//风险预警
// let fxyj = get风险预警(企业融资信息);
// qyszhx.风险预警.bodyList = fxyj;
//服务需求
let fwxq = get服务需求(企业融资信息);
qyszhx.服务需求.dataList = getKeyValue(fwxq);
//活动变化趋势分析
let hdbhqsfx = get活动变化趋势分析(企业融资信息);
qyszhx.活动变化趋势分析 = hdbhqsfx;
//荣誉资质
let ryzz = get荣誉资质(企业荣誉信息);
qyszhx.荣誉资质图片 = ryzz;
//服务记录_空间服务
let fwjlxx = get服务记录(企业服务信息);
// qyszhx.服务记录_空间服务.bodyList = fwjlxx.空间服务;
qyszhx.服务记录_工商服务.bodyList = fwjlxx.工商服务;
qyszhx.服务记录_融资服务.bodyList = fwjlxx.融资服务;
//服务记录
let fwjl = {
// 空间服务次数: fwjlxx.空间服务.length,
工商服务次数: fwjlxx.工商服务.length,
融资服务次数: fwjlxx.融资服务.length,
}
qyszhx.服务记录.dataList = getKeyValue(fwjl);
//就业
let jiuYeList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.参保记录, { eId }, null);
let 年度就业人数趋势分析Map = {};
jiuYeList.forEach(info => {
let { annual } = info;
let itemCount = 0;
let itemYear = new Date(annual).getFullYear();
if (info.zhuanKe) itemCount += parseInt(info.zhuanKe);
if (info.benKe) itemCount += parseInt(info.benKe);
if (info.shuoshi) itemCount += parseInt(info.shuoshi);
if (info.boShi) itemCount += parseInt(info.boShi);
if (info.boshiyishang) itemCount += parseInt(info.boshiyishang);
if (!年度就业人数趋势分析Map[itemYear]) 年度就业人数趋势分析Map[itemYear] = { key: itemYear, value: 0 };
年度就业人数趋势分析Map[itemYear].value += itemCount;
});
qyszhx.历年人才招聘情况 = [{ name: "历年人才招聘情况", data: Object.values(年度就业人数趋势分析Map) }];
//贷款补贴
// let dkbt = get贷款补贴(企业资质信息);
// qyszhx.贷款补贴.dataList = getKeyValue(dkbt);
return qyszhx;
}
/**
* 计算研发占比的函数
*/
// function get研发占比(data) {
// let yfzb = [];
// data.forEach(info => {
// let { enterprise_manages } = info;
// enterprise_manages.forEach(manage => {
// if (parseFloat(manage.BI) > 0) {
// let ratio = parseFloat(manage.RD) / parseFloat(manage.BI);
// let 百分比 = (ratio * 100).toFixed(2) + "%";
// let 达标状态: string;
// // 判断是否已达标
// if(ratio * 100 >= 80.5){
// 达标状态 = "已达标";
// }else{
// 达标状态 = "继续努力";
// }
// yfzb.push({
// 年份: moment(manage.annual).format("YYYY"),
// 研发占比: 百分比,
// 达标状态: 达标状态
// });
// }
// });
// });
// return yfzb;
// }
function get研发占比(data) {
let yfzb = {
研发占比: "0%",
是否达标: "继续努力",
目标值: "20%",
}
data.forEach(info => {
let { enterprise_manages } = info;
let quarterlyRD = { [QUARTER.第一季度]: 0, [QUARTER.第二季度]: 0, [QUARTER.第三季度]: 0, [QUARTER.第四季度]: 0 };
let quarterlyBI = { [QUARTER.第一季度]: 0, [QUARTER.第二季度]: 0, [QUARTER.第三季度]: 0, [QUARTER.第四季度]: 0 };
enterprise_manages.forEach(manage => {
if (parseFloat(manage.BI) > 0) {
const quarter = getQuarter(manage.annual);
quarterlyRD[quarter] += parseFloat(manage.RD);
quarterlyBI[quarter] += parseFloat(manage.BI);
}
});
/**
* 企业服务申请类型
* @param 入孵企业服务dbList
*/
function getQyfwsqlx(企业服务dbList) {
let fuWuQiYeTypeMap = {};//企业服务类型
企业服务dbList.forEach( info => {
let needCategoryStr = changeEnumValue(NEEDCATEGORY, info.needCategory)
if (!fuWuQiYeTypeMap[needCategoryStr]) {
fuWuQiYeTypeMap[needCategoryStr] = 0;
}
fuWuQiYeTypeMap[needCategoryStr] += 1;
})
// 计算每个季度的研发占比,并生成年份信息
for (let quarter of [QUARTER.第一季度, QUARTER.第二季度, QUARTER.第三季度, QUARTER.第四季度]) {
if (quarterlyBI[quarter] > 0) {
let ratio = quarterlyRD[quarter] / quarterlyBI[quarter];
let 百分比 = (ratio * 100).toFixed(2) + "%";
let 达标状态: string;
if (ratio * 100 >= 20) {
达标状态 = "已达标";
} else {
达标状态 = "继续努力";
}
yfzb.研发占比 = 百分比;
yfzb.是否达标 = 达标状态;
yfzb.目标值 = "20%";
// // 确保年份信息从 manage 中正确提取
// let 年份 = moment(enterprise_manages[0]?.annual).format("YYYY"); // 假设所有季度属于同一年
// yfzb.push({
// 年份,
// 研发占比: 百分比,
// 达标状态,
// 目标值: "20%",
// });
}
let fwlx = [];
for (let key in NEEDCATEGORY) {
let enumValue = NEEDCATEGORY[key];
// 跳过未显式赋值的枚举成员(如果有的话,它们默认为枚举前一个成员的值加1)
if (isNaN(Number(key))) { // 这里检查 key 是否可以被转换为数字,以识别枚举成员名称
let needCategoryStr = changeEnumValue(NEEDCATEGORY, enumValue);
let value = fuWuQiYeTypeMap[needCategoryStr] || 0;
fwlx.push({
key: needCategoryStr,
value: value
});
}
});
}
return yfzb;
return fwlx;
}
function getQuarter(dateString: string): QUARTER {
const date = moment(dateString);
if (!date.isValid()) {
console.error("无效的日期字符串:", dateString);
return QUARTER.第一季度; // 或者抛出异常,具体取决于业务需求
}
const month = date.month() + 1; // JavaScript 月份从0开始
if (month <= 3) return QUARTER.第一季度;
if (month <= 6) return QUARTER.第二季度;
if (month <= 9) return QUARTER.第三季度;
return QUARTER.第四季度;
}
/**
* 企业自画像
*/
......@@ -373,7 +233,8 @@ function get企业自画像(企业经营信息, 企业融资信息, 企业专利
企业总得分: "-",
企业融资: "-",
// 总融资金额: 0, // 新增总融资金额字段
本年融资额: 0,
// 本年融资额: 0,
本月融资: 0,
短期营收: "-",
营收金额: 0,
知识产权: "-",
......@@ -383,35 +244,26 @@ function get企业自画像(企业经营信息, 企业融资信息, 企业专利
研发占比: "-",
};
// 获取当前月份
// const 当前月份 = new Date().getMonth() + 1; // JavaScript 月份从0开始
const 当前年份 = new Date().getFullYear();
const 当前月份 = new Date().getMonth() + 1; // JavaScript 月份从0开始
// const 当前年份 = new Date().getFullYear();
// 计算各维度得分
let 优秀维度计数 = 0;
// 1. 判断企业融资是否优秀
let 本年融资总额 = 0;
// let 本年融资总额 = 0;
let 本月融资总额 = 0;
let 总融资金额 = 0;
企业融资信息.forEach(info => {
let { enterprise_financings } = info;
if (Array.isArray(enterprise_financings)) {
enterprise_financings.forEach(financing => {
const 融资日期 = new Date(financing.investmentDate);
if (
融资日期.getFullYear() === 当前年份
// 融资日期.getMonth() + 1 === 当前月份
) {
本年融资总额 += parseFloat(financing.financingAmount || 0);
}
// 累加总融资金额
总融资金额 += parseFloat(financing.financingAmount || 0);
});
企业融资信息.forEach(financing => {
const 融资日期 = new Date(financing.investmentDate);
if (融资日期.getMonth() + 1 === 当前月份) { // 融资日期.getFullYear() === 当前年份
本月融资总额 += parseFloat(financing.financingAmount || 0);
}
// 累加总融资金额
总融资金额 += parseFloat(financing.financingAmount || 0);
});
qyzp["本年融资额"] = 本年融资总额; // 返回本月融资额
// qyzp["总融资金额"] = 总融资金额; // 返回总融资金额
qyzp["本月融资"] = 本月融资总额; // 返回本月融资额
if (总融资金额 > 0) {
if (总融资金额 >= 10) { // 修改为企业融资:10W及以上为优秀,
......@@ -424,14 +276,10 @@ function get企业自画像(企业经营信息, 企业融资信息, 企业专利
qyzp["企业融资"] = "-";
}
// 2. 判断短期营收是否优秀
let 短期营收总额 = 0;
企业经营信息.forEach(info => {
let { enterprise_manages } = info;
enterprise_manages.forEach(manage => {
短期营收总额 += parseFloat(manage.BI);
});
企业经营信息.forEach(manage => {
短期营收总额 += parseFloat(manage.BI);
});
qyzp["营收金额"] = 短期营收总额; // 返回营收金额
......@@ -450,8 +298,7 @@ function get企业自画像(企业经营信息, 企业融资信息, 企业专利
// 3. 判断知识产权是否优秀
let 专利总数 = 0;
企业专利信息.forEach(info => {
let { enterprise_iprs } = info;
专利总数 += enterprise_iprs.length;
专利总数 += info.number;
});
qyzp["专利个数"] = 专利总数; // 返回专利个数
......@@ -471,12 +318,9 @@ function get企业自画像(企业经营信息, 企业融资信息, 企业专利
// 4. 判断研发投入是否优秀
let 研发投入总额 = 0;
let 总收入 = 0;
企业经营信息.forEach(info => {
let { enterprise_manages } = info;
enterprise_manages.forEach(manage => {
研发投入总额 += parseFloat(manage.RD);
总收入 += parseFloat(manage.BI);
});
企业经营信息.forEach(manage => {
研发投入总额 += parseFloat(manage.RD);
总收入 += parseFloat(manage.BI);
});
let 研发占比 = 总收入 > 0 ? (研发投入总额 / 总收入) : 0;
......@@ -508,6 +352,7 @@ function get企业自画像(企业经营信息, 企业融资信息, 企业专利
return qyzp;
}
/**
* 租房补贴
*/
......@@ -523,7 +368,6 @@ function get租房补贴(企业资质信息, 企业专利信息, 参保记录信
// 检查社保状态
let shebaoCompleted = false;
if (参保记录信息[0]) {
if (参保记录信息[0].zhuanKe || 参保记录信息[0].benKe || 参保记录信息[0].shuoshi || 参保记录信息[0].boShi || 参保记录信息[0].boshiyishang || 参保记录信息[0].qiTa ) {
shebaoCompleted = true;
}
......@@ -533,25 +377,19 @@ function get租房补贴(企业资质信息, 企业专利信息, 参保记录信
// 检查软著状态
let ruanzhuCompleted = false;
企业专利信息.forEach(info => {
let { enterprise_iprs } = info;
enterprise_iprs.forEach(patent => {
if (patent.iprType === IPRALLTYPE.软件著作权) {
ruanzhuCompleted = true;
}
});
企业专利信息.forEach(patent => {
if (patent.iprType === IPRALLTYPE.软件著作权) {
ruanzhuCompleted = true;
}
});
zfbt.软著 = ruanzhuCompleted ? "已完成" : "未完成";
// 检查科小状态
let kxCompleted = false;
企业资质信息.forEach(info => {
let { enterprise_qualifications } = info;
enterprise_qualifications.forEach(item => {
if (item.kxTime) {
kxCompleted = true;
}
});
企业资质信息.forEach(item => {
if (item.kxTime) {
kxCompleted = true;
}
});
zfbt.科小 = kxCompleted ? "已完成" : "未完成";
......@@ -569,71 +407,6 @@ function get租房补贴(企业资质信息, 企业专利信息, 参保记录信
return zfbt;
}
// /**
// * 高新
// */
// function get高新(data) {
// let gx = {
// 高新占比: 0,
// 是否达标: "未达标",
// };
// data.forEach(info => {
// let { enterprise_qualifications } = info;
// enterprise_qualifications.forEach(item => {
// if (item.gaoXinJiShuTime) {
// gx.高新占比 = 100;
// gx.是否达标 = "已达标";
// }
// });
// });
// return gx;
// }
// /**
// * 科小
// */
// function get科小(data) {
// let kx = {
// 科小占比: 0,
// 是否达标: "未达标",
// };
// data.forEach(info => {
// let { enterprise_qualifications } = info;
// enterprise_qualifications.forEach(item => {
// if (item.kxTime) {
// kx.科小占比 = 100;
// kx.是否达标 = "已达标";
// }
// })
// })
// return kx;
// }
// /**
// * 小巨人
// */
// function get小巨人(data){
// let xjrData = {
// 小巨人占比: 0,
// 是否达标: "未达标",
// };
// data.forEach(info => {
// let { enterprise_qualifications } = info;
// enterprise_qualifications.forEach(item => {
// if (item.xjrTime) {
// xjrData.小巨人占比 = 100;
// xjrData.是否达标 = "已达标";
// }
// })
// })
// return xjrData;
// }
/**
* 获取企业资质达标情况的通用函数
......@@ -667,16 +440,13 @@ function get资质达标情况(data, key: string) {
function get企业标签(data) {
let qybqData = [];
data.forEach(info => {
let { enterprise_qualifications } = info;
enterprise_qualifications.forEach(item => {
if (item.xjrTime) qybqData.push("小巨人");
if (item.gaoXinJiShuTime) qybqData.push("高新企业");
if (item.zjtxTime) qybqData.push("专精特新");
if (item.xjrPyTime) qybqData.push("小巨人培育");
if (item.kxTime) qybqData.push("科小");
if (item.goPublicTime) qybqData.push("上市");
})
data.forEach(item => {
if (item.xjrTime) qybqData.push("小巨人");
if (item.gaoXinJiShuTime) qybqData.push("高新企业");
if (item.zjtxTime) qybqData.push("专精特新");
if (item.xjrPyTime) qybqData.push("小巨人培育");
if (item.kxTime) qybqData.push("科小");
if (item.goPublicTime) qybqData.push("上市");
})
let qybq = [];
......@@ -688,384 +458,112 @@ function get企业标签(data) {
}
/** 资质认证
* @returns
*/
function get资质认证(data) {
let zzrz = {
资质认证总数: 0,
};
data.forEach(info => {
let { enterprise_qualifications } = info;
let certifications = new Set(); // 使用 Set 来存储不同的资质认证
enterprise_qualifications.forEach(item => {
if (item.kxTime) certifications.add("科小");
if (item.zjtxTime) certifications.add("专精特新");
if (item.xjrTime) certifications.add("小巨人");
if (item.xjrPyTime) certifications.add("小巨人培育");
if (item.gaoXinJiShuTime) certifications.add("高新企业");
if (item.goPublicTime) certifications.add("上市");
});
zzrz.资质认证总数 += certifications.size; // 计算不同资质的数量
});
return zzrz;
}
/**
* 资质认证变化趋势
*/
function get资质认证变化趋势(data) {
let zzrzbhqsInfo = {
资质认证数量: []
};
let yearList = getYearList();
for (let i = 0; i < yearList.length; i++) {
let year = parseInt(yearList[i]);
let 资质认证数量 = 0;
data.forEach(info => {
let { enterprise_qualifications } = info;
enterprise_qualifications.forEach(item => {
const times = [
item.kxTime,
item.zjtxTime,
item.xjrTime,
item.xjrPyTime,
item.gaoXinJiShuTime,
item.goPublicTime
];
times.forEach(time => {
if (time && moment(time).year() === year) {
资质认证数量++;
}
});
});
});
zzrzbhqsInfo.资质认证数量.push({ key: year, value: 资质认证数量 });
}
let zzrzbhqs = getChart(zzrzbhqsInfo);
return zzrzbhqs;
}
function get知识产权(data) {
let zscq: any = {
// 软件著作:0,
软件著作权: 0,
发明专利: 0,
海外专利: 0,
植物新品种: 0,
集成电路布图: 0,
}
let count = 0;
data.forEach(info => {
let { enterprise_iprs } = info;
enterprise_iprs.forEach(patents => {
if (patents.iprType) {
let iprTypeStr = changeEnumValue(IPRALLTYPE, patents.iprType);
if (!zscq[iprTypeStr]) zscq[iprTypeStr] = 0;
zscq[iprTypeStr] += patents.number;
}
})
data.forEach(patents => {
if (patents.iprType) {
let iprTypeStr = changeEnumValue(IPRALLTYPE, patents.iprType);
if (!zscq[iprTypeStr]) zscq[iprTypeStr] = 0;
zscq[iprTypeStr] += patents.number;
}
count += patents.number;
})
// data.forEach(info => {
// let { enterprise_patents } = info;
// enterprise_patents.forEach(patents => {
// zscq.一级专利 += patents.classIPatent;
// zscq.二级专利 += patents.secondClassPatent
// zscq.三级专利 += patents.thirdPentent;
// zscq.海外专利 += patents.alienPatent;
// })
// })
return zscq;
return {count, zscq};
}
async function get企业员工画像(data) {
let qyyghx = {
"专科":0,
"本科":0,
"硕士":0,
"博士":0,
"博士以上":0,
"其他":0,
function get融资情况(data) {
let year = getYearList();
let count = {
融资金额:0,
融资轮次:""
};
let rzqk = [];
if (data && data[0]) {
qyyghx["专科"] = data[0].zhuanKe || 0;
qyyghx["本科"] = data[0].benKe || 0;
qyyghx["硕士"] = data[0].shuoshi || 0;
qyyghx["博士"] = data[0].boShi || 0;
qyyghx["博士以上"] = data[0].boshiyishang || 0;
qyyghx["其他"] = data[0].qiTa || 0;
for(let i = 0; i < year.length; i++) {
let 融资金额 = 0;
data.forEach(info => {
let 融资日期 = moment(info.investmentDate);
if (融资日期.isValid() && 融资日期.year() === year[i]) {
融资金额 += parseFloat(info.financingAmount || 0);
}
// 累加总融资金额
count.融资金额 += parseFloat(info.financingAmount || 0);
});
rzqk.push({key:year[i], value:融资金额});
}
// for (let key in DEGREE) {
// let anyKey: any = key;
// if (isNaN(anyKey)) {
// let keyStr = key;
// if (!qyyghx[keyStr]) qyyghx[keyStr] = 0;
// let degree = DEGREE[key];
// data.forEach(info => {
// let { enterprise_teams } = info;
// if (enterprise_teams && Array.isArray(enterprise_teams)) {
// enterprise_teams.forEach(team => {
// if (degree == team.degree) {
// qyyghx[keyStr] += 1;
// }
// })
// }
// })
// }
// }
return qyyghx;
return {count, rzqk}
}
function get营收情况(data) {
let ysqk = {
// 累计营收: 0,
"24年累计营收": 0,
"25年累计营收": 0,
累计纳税: 0,
累计研发投入: 0,
// 累计纳税: 0
}
let ysbhqsInfo = {
营业收入: [],
营收: [],
纳税: [],
研发投入: [],
// 纳税金额: [],
}
let year = getYearList();
data.forEach(info => {
let { enterprise_manages } = info;
enterprise_manages.forEach(manage => {
// ysqk.累计营收 += parseFloat(manage.BI);
let thisAnnual = moment(manage.annual).year();
if (thisAnnual === 2024) {
ysqk["24年累计营收"] += parseFloat(manage.BI);
}
ysqk.累计研发投入 += parseFloat(manage.RD);
// ysqk.累计纳税 += parseFloat(manage.TXP);
})
})
for (let i = 0; i < year.length; i++) {
let 营业收入 = 0;
let 研发投入 = 0;
// let 纳税金额 = 0;
data.forEach(info => {
let { enterprise_manages } = info;
enterprise_manages.forEach(manage => {
let thisAnnual = moment(manage.annual).year();
let thisYear = parseInt(year[i]);
if (thisAnnual === thisYear) {
营业收入 += parseFloat(manage.BI);
研发投入 += parseFloat(manage.RD);
// 纳税金额 += parseFloat(manage.TXP);
}
})
})
// ysbhqsInfo.营业收入.push({ key: year[i], value: 营业收入 });
// ysbhqsInfo.研发投入.push({ key: year[i], value: 研发投入 });
// 将营业收入和研发投入转换为“千万”单位
ysbhqsInfo.营业收入.push({ key: year[i], value: 营业收入 / 1000 });
ysbhqsInfo.研发投入.push({ key: year[i], value: 研发投入 / 1000 });
// ysbhqsInfo.纳税金额.push({ key: year[i], value: 纳税金额 });
}
let ysbhqs = getChart(ysbhqsInfo);
return { ysqk, ysbhqs };
}
/**
* 企业动态
*/
// function get企业动态(data) {
// let qydt = [];
// data.forEach(info => {
// let { enterprise_honors } = info;
// enterprise_honors.forEach(honors => {
// let awardLevel = changeEnumValue(AWARDLEVEL, honors.awardLevel);
// let awardImg = JSON.parse(honors.awardImg)
// let awardTime = moment(honors.awardTime).format("YYYY-MM-DD");
// qydt.push([awardImg[0], honors.awardName, awardTime, honors.awardingUnit, awardLevel]);
// })
// })
// return qydt;
// }
function get企业动态(data) {
let qydt = [];
let honorsCount = 0;
data.forEach(info => {
let { enterprise_honors } = info;
honorsCount += enterprise_honors.length;
enterprise_honors.forEach(honors => {
let awardLevel = changeEnumValue(AWARDLEVEL, honors.awardLevel);
let awardTime = moment(honors.awardTime).format("YYYY");
qydt.push([honorsCount, honors.awardName, awardTime, honors.awardingUnit, awardLevel]);
})
})
return qydt;
}
/**
*风险预警
*/
function get风险预警(data) {
}
function get服务需求(data) {
let newestFinancing: any = {};
data.forEach(info => {
let { enterprise_financings } = info;
let enterprise_financingsData = [];
enterprise_financings.forEach(financings => {
enterprise_financingsData.push({
financingAmount: financings.financingAmount,
financingRounds: financings.financingRounds,
investmentDate: new Date(financings.investmentDate).valueOf(),
investmentInstitutionsName: financings.investmentInstitutionsName
})
})
//获取最新时间的融资信息
enterprise_financingsData.sort((a, b) => {
return b.investmentDate - a.investmentDate;
})
newestFinancing = enterprise_financingsData[0];
})
// 确保 financingAmount 不为 undefined 或 null,否则设置为 0
const financingAmount = newestFinancing.financingAmount !== undefined && newestFinancing.financingAmount !== null ? newestFinancing.financingAmount : 0;
let fwxq = {
// 融资金额: `${newestFinancing.financingAmount}万元`,
融资金额: `${financingAmount}万元`,
融资轮次: changeEnumValue(FINANCINGROUNDS, newestFinancing.financingRounds),
融资时间: "-",
投资机构: newestFinancing.investmentInstitutionsName
};
if (newestFinancing.investmentDate) fwxq.融资时间 = moment(newestFinancing.investmentDate).format("YYYY-MM-DD");
return fwxq;
}
function get活动变化趋势分析(data) {
let hdbhqsfxInfo = {
融资额: [],
// 融资事件: [],
}
let year = getYearList();
for (let i = 0; i < year.length; i++) {
let 融资额 = 0;
// let 融资事件 = 0;
data.forEach(info => {
let { enterprise_financings } = info;
enterprise_financings.forEach(financings => {
let thisAnnual = moment(financings.investmentDate).year();
let thisYear = parseInt(year[i]);
if (thisAnnual === thisYear) {
融资额 += parseFloat(financings.financingAmount);
// 融资事件 += 1;
}
})
})
hdbhqsfxInfo.融资额.push({ key: year[i], value: 融资额 });
// hdbhqsfxInfo.融资事件.push({ key: year[i], value: 融资事件 });
let ysbhqsTable = {
营收: [],
纳税: [],
研发投入: [],
}
let hdbhqsfx = getChart(hdbhqsfxInfo);
return hdbhqsfx;
}
data.forEach(manage => {
// ysqk.累计营收 += parseFloat(manage.BI);
let thisAnnual = moment(manage.annual).year();
if (thisAnnual === 2025) {
ysqk["25年累计营收"] += parseFloat(manage.BI);
}
ysqk.累计研发投入 += parseFloat(manage.RD);
ysqk.累计纳税 += parseFloat(manage.TXP);
//荣誉资质
// function get荣誉资质(data) {
// let ryzz = [];
// data.forEach(info => {
// let { enterprise_honors } = info;
// enterprise_honors.forEach(honors => {
// let awardLevel = changeEnumValue(AWARDLEVEL, honors.awardLevel);
// let awardImg = JSON.parse(honors.awardImg)
// let imgPath = `${systemConfig.imgFileUrl}${awardImg[0]}`;
// ryzz.push([imgPath, awardLevel]);
// })
// })
// return ryzz;
// }
// 修改后的荣誉资质函数
function get荣誉资质(data) {
let ryzz = [];
data.forEach(info => {
let { enterprise_honors } = info;
enterprise_honors.forEach(honors => {
let awardLevel = changeEnumValue(AWARDLEVEL, honors.awardLevel);
let awardImg = JSON.parse(honors.awardImg);
// 遍历所有图片
awardImg.forEach(imgName => {
let imgPath = `${systemConfig.imgFileUrl}${imgName}`;
ryzz.push([imgPath, awardLevel]);
});
})
let dbQuarterStr = `${thisAnnual}${changeEnumValue(QUARTER, manage.quarter)}`;
ysbhqsTable.营收.push(["营收", dbQuarterStr, manage.BI]);
ysbhqsTable.纳税.push(["纳税", dbQuarterStr, manage.TXP]);
ysbhqsTable.研发投入.push(["研发投入", dbQuarterStr, manage.RD]);
})
return ryzz;
}
function get服务记录(data) {
let fwjl = {
// 空间服务: [],
工商服务: [],
融资服务: []
};
let quarter = getRecentQuarters();
quarter.forEach( info => {
let 营收 = 0;
let 研发投入 = 0;
let 纳税金额 = 0;
data.forEach(info => {
let { enterprise_services } = info;
enterprise_services.forEach(service => {
let needCategory = changeEnumValue(NEEDCATEGORY, service.needCategory);
// if ( service.needCategory == NEEDCATEGORY.空间服务) {
// fwjl.空间服务.push([needCategory, service.resolveTime, service.needContent])
// } else
if (service.needCategory == NEEDCATEGORY.工商服务) {
fwjl.工商服务.push([needCategory, service.resolveTime, service.needContent])
} else if (service.needCategory == NEEDCATEGORY.融资服务) {
fwjl.融资服务.push([needCategory, service.resolveTime, service.needContent])
let quarterStr = `${info.year}${changeEnumValue(QUARTER, info.quarter)}`;
data.forEach(manage => {
let thisAnnual = moment(manage.annual).year();
let dbQuarterStr = `${thisAnnual}${changeEnumValue(QUARTER, manage.quarter)}`;
if (quarterStr == dbQuarterStr) {
营收 += parseFloat(manage.BI);
研发投入 += parseFloat(manage.RD);
纳税金额 += parseFloat(manage.TXP);
}
})
ysbhqsInfo.营收.push({ key: quarterStr, value: 营收 });
ysbhqsInfo.纳税.push({ key: quarterStr, value: 纳税金额 });
ysbhqsInfo.研发投入.push({ key: quarterStr, value: 研发投入 });
})
return fwjl;
let ysbhqs = getChart(ysbhqsInfo);
return { ysqk, ysbhqs, ysbhqsTable };
}
......@@ -80,6 +80,7 @@ async function calculateRevenue(start: string, end: string) {
return totalRevenue;
}
export async function getZhyy() {
let zhyy = {
孵化器概况:[],
......
import * as asyncHandler from 'express-async-handler'
import * as wmkqyszhxBiz from '../biz/qyszhx';
import * as qyszhxBiz from '../biz/qyszhx';
import * as jxgljscBiz from '../biz/jxgljsc';
......@@ -14,8 +14,8 @@ import * as publicBiz from '../biz/public';
export function setRouter(httpServer){
//======post
httpServer.post('/yuyi/viewserver/qyszhx', asyncHandler(wmkqyszhxBiz.getData));
httpServer.post('/yuyi/viewserver/getnamelist', asyncHandler(qyszhxBiz.getPinyinName))
httpServer.post('/yuyi/viewserver/qyszhx', asyncHandler(qyszhxBiz.getData));
httpServer.post('/yuyi/viewserver/jxgljsc', asyncHandler(jxgljscBiz.getData));
httpServer.post('/yuyi/viewserver/qyfw', asyncHandler(qyfwBiz.getData));
httpServer.post('/yuyi/viewserver/qianruqianchutable', asyncHandler(qyfwBiz.getQianRuQianChu));
......
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