Commit fef13b2e by chenjinjing

no message

parent 7868a79e
[2025-02-08T14:45:00.326] [ERROR] errorLogger - errorInfo => undefined |
[2025-02-08T14:45:03.933] [ERROR] errorLogger - errorInfo => undefined |
[2025-02-08T14:47:58.663] [ERROR] errorLogger - errorInfo => undefined |
[2025-02-08T14:49:41.989] [ERROR] errorLogger - errorInfo => undefined |
[2025-02-08T13:14:48.320] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-02-08T13:14:49.832] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-02-08T13:15:16.238] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-02-08T13:15:17.754] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-02-08T13:15:19.292] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-02-08T13:15:20.883] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-02-08T13:15:22.431] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-02-08T13:15:23.982] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-02-08T14:44:57.080] [ERROR] errorLogger - errorInfo => undefined |
[2025-02-08T14:44:58.712] [ERROR] errorLogger - errorInfo => undefined |
[2025-02-08T13:14:14.862] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-02-08T13:14:16.594] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-02-08T13:14:18.174] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-02-08T13:14:19.861] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-02-08T13:14:21.533] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-02-08T13:14:23.134] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-02-08T13:14:41.401] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-02-08T13:14:43.043] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-02-08T13:14:44.938] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-02-08T13:14:46.718] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
<config> <config>
<port>40015</port> <port>40015</port>
<dbPort>40012</dbPort> <dbPort>40012</dbPort>
<dbHost>127.0.0.1</dbHost> <dbHost>192.168.0.105</dbHost>
<sign>xxx90909082fsdahfjosadjfpoiwausjorip2hjklrhn1ioud0u124rx0qwejfokasjfolksaujfoas</sign> <sign>xxx90909082fsdahfjosadjfpoiwausjorip2hjklrhn1ioud0u124rx0qwejfokasjfolksaujfoas</sign>
<imgPath>http://127.0.0.1:4980/yuyi/viewpage</imgPath> <imgPath>http://127.0.0.1:4980/yuyi/viewpage</imgPath>
</config> </config>
...@@ -8,7 +8,8 @@ import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut, getTableOut ...@@ -8,7 +8,8 @@ import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut, getTableOut
/* 企业服务 */ /* 企业服务 */
export async function getData(req, res) { export async function getData(req, res) {
// let dbData = await getEnterprise(); let dbData = await getEnterprise();
let {qyxqdtxx} = dbData;
let excelData = qyfwTableData(); let excelData = qyfwTableData();
let ret:any = {}; let ret:any = {};
...@@ -34,14 +35,17 @@ export async function getData(req, res) { ...@@ -34,14 +35,17 @@ export async function getData(req, res) {
let qyxqdtPackageData = keyValuePackage(excelData['企业需求动态'].dataList); let qyxqdtPackageData = keyValuePackage(excelData['企业需求动态'].dataList);
ret['qyxqdt'] = getKeyValueOut('企业需求动态', qyxqdtPackageData); ret['qyxqdt'] = getKeyValueOut('企业需求动态', qyxqdtPackageData);
let qyxqdtxxTableData = tablePackage(excelData["企业需求动态详细"].headerList[0], excelData["企业需求动态详细"].bodyList); // let qyxqdtxxTableData = tablePackage(excelData["企业需求动态详细"].headerList[0], excelData["企业需求动态详细"].bodyList);
let itemDataList = [] // let itemDataList = []
qyxqdtxxTableData.dataList.forEach(info => { // qyxqdtxxTableData.dataList.forEach(info => {
info.eId = "xxxx"; // info.eId = "xxxx";
itemDataList.push(info); // itemDataList.push(info);
}); // });
qyxqdtxxTableData.dataList = itemDataList; // qyxqdtxxTableData.dataList = itemDataList;
// ret['qyxqdtxx'] = getTableOut( '企业需求动态详细', qyxqdtxxTableData);
let qyxqdtxxTableData = tablePackage(qyxqdtxx.headerList[0], qyxqdtxx.bodyList);
ret['qyxqdtxx'] = getTableOut( '企业需求动态详细', qyxqdtxxTableData); ret['qyxqdtxx'] = getTableOut( '企业需求动态详细', qyxqdtxxTableData);
let dtTableData = tablePackage(excelData["地图"].headerList[0], excelData["地图"].bodyList); let dtTableData = tablePackage(excelData["地图"].headerList[0], excelData["地图"].bodyList);
......
...@@ -37,7 +37,8 @@ export enum TABLENAME { ...@@ -37,7 +37,8 @@ export enum TABLENAME {
知识产权='enterprise_ipr', 知识产权='enterprise_ipr',
法人信息表='enterprise_legal_person', 法人信息表='enterprise_legal_person',
企业专利表='enterprise_patent', 企业专利表='enterprise_patent',
企业基础信息表='enterprise' 企业基础信息表='enterprise',
企业服务表='enterprise_service',
} }
...@@ -178,9 +179,9 @@ export enum NEEDCATEGORY { ...@@ -178,9 +179,9 @@ export enum NEEDCATEGORY {
/** /**
* 跟进状态 * 跟进状态
*/ */
export enum FOLLOWUPSTATUS { // export enum FOLLOWUPSTATUS {
} // }
......
...@@ -3,17 +3,29 @@ ...@@ -3,17 +3,29 @@
*/ */
import moment = require("moment"); import moment = require("moment");
import { FUHUASTATE, INDUSTRY, MOVEOUTTYPE, OPERATIONALDATATYPE, TABLENAME } from "../../config/enum"; import { FUHUASTATE, INDUSTRY, MOVEOUTTYPE, OPERATIONALDATATYPE, STATE, TABLENAME } from "../../config/enum";
import { selectData, selectManyTableData } from "./operationalData"; import { selectData, selectManyTableData } from "./operationalData";
export async function getEnterprise() { export async function getEnterprise() {
let qyfw = { let qyfw = {
qyjbqk:{dataList:[], titleList:['key', 'value']}, qyjbqk:{dataList:[], titleList:['key', 'value']}, //企业基本情况
bhqsfx:[], bhqsfx:[], //变化趋势分析
rfscfb:{dataList:[], titleList:['key', 'value']}, rfscfb:{dataList:[], titleList:['key', 'value']}, //入孵时长分布
fhqyhylyzb:{dataList:[], titleList:['key', 'value']}, fhqyhylyzb:{dataList:[], titleList:['key', 'value']}, //孵化企业行业领域占比
qyrc:[], qyfwhzsj:{dataList:[], titleList:['key', 'value']}, //企业服务汇总数据
qyxqdt:{dataList:[], titleList:['key', 'value']}, //企业需求动态
qyxqdtxx:{bodyList:[], headerList:[['企业名称', '类型', 'eId']]}, //企业需求动态详细
qybhqk:{dataList:[], titleList:['key', 'value']}, //企业变化情况
qybhqkbhqs:[], //企业变化情况——变化趋势
jrfw:{dataList:[], titleList:['key', 'value']}, //金融服务
byrzqy:[], //本月融资企业
byrzje:[], //本月融资金额
zfqyzys:{dataList:[], titleList:['key', 'value']}, //在孵企业总营收
jrfwqy:{bodyList:[], headerList:[['企业名称', '融资金额', '融资时间']]}, //金融服务企业 todo
zscq:{dataList:[], titleList:['key', 'value']}, //知识产权
zscqbt:{dataList:[], titleList:['key', 'value']}, //知识产权饼图
} }
let nowTime = new Date().valueOf(); let nowTime = new Date().valueOf();
...@@ -47,7 +59,7 @@ export async function getEnterprise() { ...@@ -47,7 +59,7 @@ export async function getEnterprise() {
let 孵化企业dbList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业孵化信息, {}, fhColumn, 孵化企业includeConf); let 孵化企业dbList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业孵化信息, {}, fhColumn, 孵化企业includeConf);
qyjbqk.在孵企业 = 在孵dbList.length; qyjbqk.在孵企业 = 在孵dbList.length;
qyjbqk.毕业企业 = 毕业dbList.length; // qyjbqk.毕业企业 = 毕业dbList.length;
qyfw.qyjbqk.dataList = getKeyValue(qyjbqk); qyfw.qyjbqk.dataList = getKeyValue(qyjbqk);
...@@ -68,8 +80,10 @@ export async function getEnterprise() { ...@@ -68,8 +80,10 @@ export async function getEnterprise() {
]; ];
fhdbList.forEach( item => { fhdbList.forEach( item => {
}) })
//入孵时长分布 //入孵时长分布
// let rfscfb = getRfscfx(fhdbList); let rfscfb = getRfscfx(fhdbList);
qyfw.rfscfb.dataList = getKeyValue(rfscfb);
//孵化企业行业领域占比 //孵化企业行业领域占比
for (let key in INDUSTRY) { for (let key in INDUSTRY) {
...@@ -82,25 +96,52 @@ export async function getEnterprise() { ...@@ -82,25 +96,52 @@ export async function getEnterprise() {
} }
} }
let year = ["2019", "2020", "2021", "2022", "2023", "2024"]; //企业服务汇总数据`
let qyrc = { let qyfwhzsj = await getQyfwhzsj();
"就业人数":[], qyfw.qyfwhzsj.dataList = getKeyValue(qyfwhzsj);
"创业团队分布":[]
} //企业需求动态
for (let i = 0; i < year.length; i++) { let 入孵申请dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业基础信息表, {state:STATE.}, null);
let dbData = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.参保记录, {annual:year[i]}, null); let 企业服务Count = await selectData(OPERATIONALDATATYPE.查询数据量, TABLENAME.企业服务表, {}, null);
let count = 0; let {qyxqdt, qyxqdtxx} = await getQyxqdt(入孵申请dbList, 企业服务Count);
dbData.forEach( info => { qyfw.qyxqdt.dataList = getKeyValue(qyxqdt);
let {zhuanKe, benKe, yanJiuSheng, boShi, qiTa} = info; //企业需求动态详细 上面3中汇总数据类型的所有企业列表,由于毕业认证企业取不到数据,只汇总入孵申请和企业需求数的企业列表
count += zhuanKe; qyfw.qyxqdtxx.bodyList = qyxqdtxx;
count += benKe;
count += yanJiuSheng;
count += boShi;
count += qiTa;
})
qyrc["就业人数"].push({key:year[i], value:count})
}
//企业变化情况
let qybhqk = getQybhqk(在孵dbList);
qyfw.qybhqk.dataList = getKeyValue(qybhqk);
//企业变化情况——变化趋势
let qybhqkbhqs = getQybhqkbhqs(在孵dbList);
qyfw.qybhqkbhqs = qybhqkbhqs;
let 企业融资dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业融资, {}, null);
//金融服务
let jrfw = getJrfw(在孵dbList, 企业融资dbList);
qyfw.jrfw.dataList = getKeyValue(jrfw);
//本月融资企业
let byrzqy = await getByrzqy(企业融资dbList);
qyfw.byrzqy = byrzqy.byrzqybhqs;
//本月融资金额
qyfw.byrzje = byrzqy.byrzjebhqs;
//在孵企业总营收
let zfqyzys = getZfqyzys(在孵dbList);
qyfw.zfqyzys.dataList = getKeyValue(zfqyzys);
//金融服务企业
let rzqylcColumn = ["rId", "eId", "financingAmount", "financingRounds", "fuHuaQiInvestment", "fuHuaQiInvestmentStyle", "fuHuaQiInvestmentAmount",
"investmentDate", "investmentInstitutionsName", "valuation"];
let 融资企业联查includeConf = {};
let 融资企业联查Clumn = ["enterpriseName"];
融资企业联查includeConf[TABLENAME.企业基础信息表] = {cloum:融资企业联查Clumn, where:{}}
let 融资企业联查dbList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业孵化信息, {}, rzqylcColumn, 融资企业联查includeConf);
let jrfwqy = getJrfwqy(融资企业联查dbList); //todo
return qyfw; return qyfw;
} }
...@@ -110,8 +151,6 @@ export async function getEnterprise() { ...@@ -110,8 +151,6 @@ export async function getEnterprise() {
* @param data * @param data
*/ */
function getRfscfx(data) { function getRfscfx(data) {
let nowTime = new Date().valueOf();
let result = [];
let rfscfx = { let rfscfx = {
"即将到期":0, //3个月 "即将到期":0, //3个月
"1年以内":0, "1年以内":0,
...@@ -120,19 +159,259 @@ function getRfscfx(data) { ...@@ -120,19 +159,259 @@ function getRfscfx(data) {
"3-4年":0 "3-4年":0
}; };
let nowTime = moment();
data.forEach( item => { data.forEach( item => {
let endTimeYear = item.endTime.getFullYear(); let parsedEndTime = moment(item.endTime); //获取入孵结束时间
let endTimeMonth = item.endTime.getMonth(); let monthDiff = parsedEndTime.diff(nowTime, 'months');
if (monthDiff >= 0 && monthDiff < 3) rfscfx.即将到期 += 1;
else if (monthDiff >=3 && monthDiff < 12) rfscfx["1年以内"] += 1;
else if (monthDiff >=12 && monthDiff < 24) rfscfx["1-2年"] += 1;
else if (monthDiff >=24 && monthDiff < 36) rfscfx["2-3年"] += 1;
else if (monthDiff >=36 && monthDiff < 48) rfscfx["3-4年"] += 1;
})
return rfscfx;
}
/**
* 企业服务汇总数据
* @param data
*/
async function getQyfwhzsj() {
let qyfwhzsj = {
"企业总营收额":0,
"企业纳税":0,
"融资企业":0,
"企业专利":0
};
let 经营信息dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, {}, null);
经营信息dbList.forEach( info => {
qyfwhzsj.企业总营收额 += info.BI;
qyfwhzsj.企业纳税 += info.TXP;
})
let 企业融资dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业融资, {}, null);
企业融资dbList.forEach( info => {
qyfwhzsj.融资企业 += info.financingAmount;
})
if (item.endTime) {} let 企业专利dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业专利表, {}, null);
企业专利dbList.forEach( info => {
qyfwhzsj.企业专利 += info.alienPatent;
qyfwhzsj.企业专利 += info.classIPatent;
qyfwhzsj.企业专利 += info.secondClassPatent;
qyfwhzsj.企业专利 += info.thirdPentent;
}) })
return qyfwhzsj;
} }
/**
* 企业需求动态
*/
async function getQyxqdt(入孵申请dbList, 企业服务Count) {
let qyxqdt = {
入孵申请:0,
毕业认证企业:0,
企业需求数:0
}
qyxqdt.入孵申请 = 入孵申请dbList.length;
qyxqdt.企业需求数 = 企业服务Count;
let qyxqdtxx = [];
入孵申请dbList.forEach( info => {
qyxqdtxx.push([info.enterpriseName, "入孵申请", info.eId]);
})
//获取所有企业服务表联查企业信息表
let qyfwColumn = ["esId", "eId", "needCategory", "needContent"];
let 企业服务includeConf = {};
企业服务includeConf[TABLENAME.企业基础信息表] = {cloum:["enterpriseName"], where:{}}
let 企业服务dbList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业服务表, {}, qyfwColumn, 企业服务includeConf);
企业服务dbList.forEach( info => {
qyxqdtxx.push([info.enterprise.enterpriseName, "企业需求", info.enterprise.eId]);
})
return {qyxqdt, qyxqdtxx};
}
/**
* 企业变化情况
* @param data
*/
function getQybhqk(data) {
let qybhqk = {
新增企业:0, //统计当前年份入孵企业
迁出企业:0
}
let nowTime = moment();
data.forEach( info => {
let parsedStartTime = moment(info.startTime); //获取入孵开始时间
// 检查日期字段的年份是否与当前年份相同
if (parsedStartTime.isValid() && parsedStartTime.year() === nowTime.year()) {
qybhqk.新增企业 += 1;
}
})
return qybhqk;
}
/**
* 企业变化情况——变化趋势
*/
function getQybhqkbhqs(data){
let year = ["2019", "2020", "2021", "2022", "2023", "2024"];
let hbqs = {
"企业数":[]
}
for (let i = 0; i < year.length; i++) {
let count = 0;
data.forEach( info => {
let startTimeYear = moment(info.startTime).year(); //获取入孵开始时间
let thisYear = parseInt(year[i]);
if (startTimeYear === thisYear) count += 1;
})
hbqs.企业数.push({key:year[i], value:count});
}
let qybhqkbhqs = getChart(hbqs);
return qybhqkbhqs;
}
/**
* 金融服务
*/
async function getJrfw(data, 企业融资dbList) {
let jrfw = {
本月融资企业:0,
本月融资金额:0,
在孵企业总营收:0
}
let nowTime = moment();
企业融资dbList.forEach( info => {
let parsedTime = moment(info.investmentDate); //获取融资时间
if (parsedTime.isValid() && parsedTime.month() === nowTime.month()) {
jrfw.本月融资企业 += 1;
jrfw.本月融资金额 += info.financingAmount;
}
})
for (let i = 0; i < data.length; i++) {
//获取在孵企业经营数据
let 经营信息dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, {eId:data[i].eId}, null);
经营信息dbList.forEach( info => {
jrfw.在孵企业总营收 += info.BI;
})
}
return jrfw;
}
/**
* 本月融资企业
* @param data
* @returns
*/
async function getByrzqy(企业融资dbList){
/**获取距离当前时间的前6个月 */
let month = getMonthList();
let byrzqy = {
"融资企业":[]
}
let byrzje = {
"融资金额":[]
}
for (let i = 0; i < month.length; i++) {
let 企业count = 0;
let 金额count = 0;
企业融资dbList.forEach( info => {
let parsedTime = moment(info.investmentDate).format("YYYY-MM"); //获取融资时间
if (parsedTime === month[i]) {
企业count += 1;
金额count += info.financingAmount;
}
})
byrzqy.融资企业.push({key:month[i], value:企业count});
byrzje.融资金额.push({key:month[i], value:金额count});
}
let byrzqybhqs = getChart(byrzqy);
let byrzjebhqs = getChart(byrzje);
return {byrzqybhqs, byrzjebhqs};
}
/**
* 在孵企业总营收
*/
async function getZfqyzys(data) {
let zfqyzys = {
"500万以下":0,
"500万-1000万":0,
"1000万-2000万":0,
"2000万以上":0
}
for (let i = 0; i < data.length; i++) {
//获取在孵企业经营数据
let 经营信息dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, {eId:data[i].eId}, null);
经营信息dbList.forEach( info => { //BI(单位万元)
if (info.BI < 500) zfqyzys["500万以下"] += 1;
else if (info.BI >= 500 && info.BI < 1000) zfqyzys["500万-1000万"] += 1;
else if (info.BI >= 1000 && info.BI < 2000) zfqyzys["1000万-2000万"] += 1;
else zfqyzys["2000万以上"] += 1;
})
}
return zfqyzys
}
/**
* 金融服务企业
* @param data
*/
function getJrfwqy(data) {
}
/**
* 企业人才
*/
async function getQyrc() {
let year = ["2019", "2020", "2021", "2022", "2023", "2024"];
let qyrc = {
"就业人数":[],
"创业团队分布":[]
}
for (let i = 0; i < year.length; i++) {
let dbData = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.参保记录, {annual:year[i]}, null);
let count = 0;
dbData.forEach( info => {
let {zhuanKe, benKe, yanJiuSheng, boShi, qiTa} = info;
count += zhuanKe;
count += benKe;
count += yanJiuSheng;
count += boShi;
count += qiTa;
})
qyrc["就业人数"].push({key:year[i], value:count})
}
return qyrc;
}
function getKeyValue(data) { function getKeyValue(data) {
...@@ -144,8 +423,46 @@ function getKeyValue(data) { ...@@ -144,8 +423,46 @@ function getKeyValue(data) {
return result; return result;
} }
function getChart(data) {
let result = [];
for(let key in data) {
result.push({name:key, data:data[key]})
}
return result;
}
function getMonthList() {
// 获取当前时间
const currentTime = moment();
// 获取6个月前的时间
const sixMonthsAgo = currentTime.clone().subtract(6, 'months');
// 创建一个数组来存储每个月份的第一天
const monthsArray = [];
// 使用moment的range函数(如果可用)或者手动循环来遍历月份
// 注意:moment.js的官方库中并没有直接的range函数用于月份遍历,
// 但我们可以使用.month()和.date(1)结合循环来实现。
// 由于moment没有内置的range函数用于月份,我们需要手动处理
let currentMonth = sixMonthsAgo.clone();
while (currentMonth.isBefore(currentTime) || currentMonth.isSame(currentTime, 'month')) {
// 获取当前循环月份的第一天
const firstDayOfMonth = currentMonth.clone().date(1);
// 将月份添加到数组中
monthsArray.push(moment(firstDayOfMonth.clone().toDate()).format("YYYY-MM")); // 如果你需要Date对象
// monthsArray.push(firstDayOfMonth.format('YYYY-MM-DD')); // 如果你需要格式化字符串
// 移动到下一个月
currentMonth.add(1, 'months');
}
return monthsArray;
}
......
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