Commit 6f13f69a by lixinming

no message

parent 1fa77b76
......@@ -5,4 +5,5 @@
/test
/public
*test*
*.log
\ No newline at end of file
*.log
yuyi_view.zip
[2025-03-13T19:42:08.475] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:42:09.712] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:42:10.934] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:42:12.206] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:42:13.385] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:42:14.591] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:42:15.776] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:42:16.962] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:42:18.163] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:43:16.960] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:43:18.138] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:43:19.329] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:43:20.490] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T16:30:23.689] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-03-13T16:30:24.770] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-03-13T16:30:25.824] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-03-13T16:30:26.899] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-03-13T19:38:26.373] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:38:27.604] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:38:28.822] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:38:30.004] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:38:31.188] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:38:32.377] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:42:06.063] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T19:42:07.285] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-13T16:28:27.789] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-03-13T16:28:29.754] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-03-13T16:29:55.874] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-03-13T16:29:56.995] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-03-13T16:29:58.083] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-03-13T16:29:59.162] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-03-13T16:30:00.232] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-03-13T16:30:01.304] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-03-13T16:30:21.520] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-03-13T16:30:22.607] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-03-28T15:51:35.910] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-28T15:51:37.087] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-28T15:51:38.199] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-28T15:56:09.409] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-28T15:56:10.544] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-28T15:56:11.696] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-28T15:56:12.802] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-28T15:56:13.911] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-28T15:56:15.019] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-28T15:56:54.257] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-28T15:56:55.357] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-28T15:56:56.481] [ERROR] errorLogger - errorInfo => undefined |
[2025-03-28T15:56:57.594] [ERROR] errorLogger - errorInfo => undefined |
[2025-04-22T14:07:27.222] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T14:07:29.206] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T14:07:31.200] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T14:07:33.213] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T14:07:35.211] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T14:07:35.332] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T14:07:37.201] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T14:07:37.294] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T19:24:07.177] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T19:24:08.278] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
......@@ -66,10 +66,10 @@ export async function getData(req, res) {
})
ret['dt'] = getTableOut('地图', dt);
let jyfxPackageData = keyValuePackage(excelData['就业分析'].dataList);
ret['jyfx'] = getKeyValueOut('就业分析', jyfxPackageData);
// let jyfxPackageData = keyValuePackage(dbData['就业分析'].dataList);
// let jyfxPackageData = keyValuePackage(excelData['就业分析'].dataList);
// ret['jyfx'] = getKeyValueOut('就业分析', jyfxPackageData);
let jyfxPackageData = keyValuePackage(dbData['就业分析'].dataList);
ret['jyfx'] = getKeyValueOut('就业分析', jyfxPackageData);
let jdjyrsqsfxPackageData = onceYBarChartPackage(dbData['年度就业人数趋势分析'], '', '');
ret['jdjyrsqsfx'] = getOnceYBarChartOut('年度就业人数趋势分析', jdjyrsqsfxPackageData);
......
......@@ -3,12 +3,21 @@
*/
import moment = require("moment");
import { FUHUASTATE, INDUSTRY, MOVEOUTTYPE, OPERATIONALDATATYPE, SELECTPARAM, STATE, TABLENAME, INTELLECTUALPROPERTYRIGHT, IPRTYPECLIENT, EMIGRATIONTYPE, ENTERPRISETEAM, DEGREE } from "../../config/enum";
import { FUHUASTATE, INDUSTRY, OPERATIONALDATATYPE, STATE, TABLENAME, IPRTYPECLIENT, EMIGRATIONTYPE } from "../../config/enum";
import { selectData, selectManyTableData } from "./operationalData";
import { getChart, getKeyValue, getMonthList, getYearList } from "./out";
import { Console, count, log } from "console";
import { getMySqlMs } from "../../tools/systemTools";
import { changeEnumValue } from "../../tools/eccEnum";
function getStartAndEndTimeYearList(startTime, endTime) {
let startYear = new Date(startTime).getFullYear();
let endYear = new Date(endTime).getFullYear();
let result = [];
for (let i = startYear; i <= endYear; i++) {
result.push(i);
}
return result;
}
export async function getEnterprise() {
let qyfw = {
......@@ -39,19 +48,52 @@ export async function getEnterprise() {
}
let nowTime = new Date().valueOf();
let selectParam = { "endTime": { "%gt%": nowTime } };
let selectParam = { };
let zlColumn = ["eId", "area", "unitPrice", "isDeposit", "startTime", "endTime", "rentFreeStart", "rentFreeEnd", "roomNumber",
"rent", "notes", "leaseContract", "entryPlan", "businessLicense", "agreement"];
/**在孵:获取租赁结束时间大于当前时间的租赁信息 */
let zldbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.租赁信息, selectParam, zlColumn);
let manyTableInfo: any = {}
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["fId", "eId", "startTime", "endTime", "state"], where: {} };
manyTableInfo[TABLENAME.租赁信息] = { column: zlColumn, where: selectParam };
let zldbList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {state:1}, ["industry", "eId"], manyTableInfo);
// let zldbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.租赁信息, selectParam, zlColumn);
//"endTime": { "%gt%": getMySqlMs(nowTime) }
let qyjbqk = {
"孵化面积": 0,
"在孵企业": 0,
"毕业企业": 0
};
let thisYear = new Date().getFullYear();
let industryMap = {};//行业领域
let 在孵企业变化趋势map = {};
zldbList.forEach(item => {
qyjbqk.孵化面积 += parseInt(item.area);
let {enterprise_leases, industry} = item;
let {area, startTime, endTime} = enterprise_leases[0];
if ( nowTime < new Date(endTime).valueOf() ) qyjbqk.孵化面积 += parseInt(area);
if (area) {
if (startTime && endTime) {
let leasesYearList = getStartAndEndTimeYearList(startTime, endTime);
leasesYearList.forEach(itemYear => {
if (parseInt(itemYear) > thisYear) return;
if (!在孵企业变化趋势map[itemYear]) 在孵企业变化趋势map[itemYear] = 0;
在孵企业变化趋势map[itemYear] += 1;
});
}
}
//行业领域分布
if (industry) {
let industryStr = changeEnumValue(INDUSTRY, JSON.parse(industry)[0]);
if (!industryMap[industryStr]) industryMap[industryStr] = 0;
industryMap[industryStr] += 1;
}
})
let fhColumn = ["fId", "eId", "startTime", "endTime", "state", "virtualCause", "virtualCauseDes", "moveOutType",
......@@ -60,7 +102,7 @@ export async function getEnterprise() {
let fhdbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, {}, fhColumn);
//获取在孵企业
// let 在孵dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, { "endTime": { "%gt%": nowTime } }, fhColumn);
let 在孵dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, {state: { "%ne%": FUHUASTATE.迁出 }}, fhColumn);
let 在孵dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, {state: { "%between%": [FUHUASTATE.实体孵化, FUHUASTATE.虚拟孵化] }}, fhColumn);
//获取毕业企业
// let 毕业dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, { "moveOutType": MOVEOUTTYPE.毕业迁出 }, fhColumn);
......@@ -88,27 +130,14 @@ export async function getEnterprise() {
let rfscfb = getRfscfx(fhdbList);
qyfw.入孵时长分布.dataList = getKeyValue(rfscfb);
//孵化企业行业领域占比
// for (let key in INDUSTRY) {
// let anyKey: any = key;
// if (isNaN(anyKey)) {
// let keyStr = key;
// let industry = INDUSTRY[key];
// let count = await selectData(OPERATIONALDATATYPE.查询数据量, TABLENAME.企业基础信息表, { industry:{"%like%":industry} }, null);
// qyfw.孵化企业行业领域占比.dataList.push({ key: keyStr, value: count })
// }
// }
//孵化企业行业领域占比---按照企业选择的类型呈现todo
for (let key in INDUSTRY) {
let anyKey: any = key;
if (isNaN(anyKey)) {
let keyStr = key;
let industry = INDUSTRY[key];
let count = await selectData(OPERATIONALDATATYPE.查询数据量, TABLENAME.企业基础信息表, { industry: { "%like%": industry } }, null);
// 只有当count大于0时才添加到dataList中
if (count > 0) {
qyfw.孵化企业行业领域占比.dataList.push({ key: keyStr, value: count });
if (industryMap[keyStr] ) {
qyfw.孵化企业行业领域占比.dataList.push({ key: keyStr, value: industryMap[keyStr] });
}
}
}
......@@ -121,7 +150,7 @@ export async function getEnterprise() {
//企业需求动态
let 入孵申请dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业基础信息表, { state: STATE. }, null);
let 企业服务Count = await selectData(OPERATIONALDATATYPE.查询数据量, TABLENAME.企业服务表, {}, null);
let { qyxqdt, qyxqdtxx } = await getQyxqdt(入孵申请dbList, 企业服务Count);
let { qyxqdt, qyxqdtxx } = await getQyxqdt(入孵申请dbList, 企业服务Count, 毕业dbList.length);
qyfw.企业需求动态.dataList = getKeyValue(qyxqdt);
//企业需求动态详细 上面3中汇总数据类型的所有企业列表,由于毕业认证企业取不到数据,只汇总入孵申请和企业需求数的企业列表
qyfw.企业需求动态详细.bodyList = qyxqdtxx;
......@@ -129,11 +158,15 @@ export async function getEnterprise() {
//企业变化情况
let qybhqk = getQybhqk(在孵dbList, 迁出dbList);
qyfw.企业变化情况.dataList = getKeyValue(qybhqk);
//企业变化情况——变化趋势
let qybhqkbhqs = getQybhqkbhqs(在孵dbList);
qyfw.企业变化情况变化趋势 = qybhqkbhqs;
let hbqs = [];
for (let key in 在孵企业变化趋势map) {
hbqs.push({ key, value: 在孵企业变化趋势map[key] });
}
hbqs.sort((a, b) => { return parseInt(a.key) - parseInt(b.key) });
qyfw.企业变化情况变化趋势 = getChart({"企业数": hbqs});
let 企业融资dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业融资, {}, null);
//金融服务
......@@ -296,32 +329,6 @@ function getBhqsfx(data) {
})
}
/**
* 在孵企业——变化趋势
*/
// function getZfqy(data) {
// let year = getYearList();
// let bhqsfx = {
// "在孵": [],
// "毕业": []
// }
// 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;
// })
// bhqsfx.在孵.push({ key: year[i], value: count });
// bhqsfx.毕业.push({ key: year[i], value: count});
// // bhqsfx.毕业.push({ key: year[i], value: 0 });
// }
// // let qybhqkbhqs = getChart(bhqsfx.在孵);
// return bhqsfx;
// }
function getZfqy(在孵dbList, 毕业dbList) {
let year = getYearList();
let bhqsfx = {
......@@ -427,35 +434,30 @@ async function getQyfwhzsj() {
})
let 企业融资dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业融资, {}, null);
qyfwhzsj.融资企业 = `${企业融资dbList.length}家`; // 保持原逻辑
// 企业融资dbList.forEach(info => {
// qyfwhzsj.融资企业 += parseInt(info.financingAmount);
// qyfwhzsj.融资企业 += 1;// 累加融资企业数量
// })
let distinctMap = {};
企业融资dbList.forEach(info => {
let {eId} = info;
distinctMap[eId] = 1;
})
let 企业专利dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.知识产权, {}, null);
企业专利dbList.forEach(info => {
qyfwhzsj.企业专利 += parseInt(info.number || 0);
})
// return qyfwhzsj;
// 格式化输出(不改变原始数据类型)
return {
...qyfwhzsj,
"企业总营收额": `${qyfwhzsj.企业总营收额}万`, // 添加带单位的字段
"企业纳税": `${qyfwhzsj.企业纳税}万` ,// 添加带单位的字段
"融资企业": `${Object.keys(distinctMap).length}家`,
"企业专利": `${qyfwhzsj.企业专利}个` // 添加带单位的字段
};
}
/**
* 企业需求动态----只需轮播企业名称todo
* 企业需求动态
*/
async function getQyxqdt(入孵申请dbList, 企业服务Count) {
async function getQyxqdt(入孵申请dbList, 企业服务Count, 毕业企业数) {
let qyxqdt = {
入孵申请: 0,
毕业认证企业: 0,
......@@ -463,6 +465,7 @@ async function getQyxqdt(入孵申请dbList, 企业服务Count) {
}
qyxqdt.入孵申请 = 入孵申请dbList.length;
qyxqdt.企业需求数 = 企业服务Count;
qyxqdt.毕业认证企业 = 毕业企业数;
let qyxqdtxx = [];
入孵申请dbList.forEach(info => {
......@@ -816,6 +819,7 @@ async function getQyrc() {
if (info.shuoshi) itemCount += parseInt(info.shuoshi);
if (info.boShi) itemCount += parseInt(info.boShi);
if (info.boshiyishang) itemCount += parseInt(info.boshiyishang);
if (info.qiTa) itemCount += parseInt(info.qiTa);
if (!年度就业人数趋势分析Map[itemYear]) 年度就业人数趋势分析Map[itemYear] = { key: itemYear, value: 0 };
年度就业人数趋势分析Map[itemYear].value += itemCount;
......
......@@ -4,13 +4,14 @@ import { selectData, selectManyTableData } from "./operationalData";
import { changeEnumValue } from "../../tools/eccEnum";
import { getChart, getYearList } from "./out";
import { systemConfig } from "../../config/serverConfig";
import { getMySqlMs } from "../../tools/systemTools";
function getStartAndEndTimeYearList(startTime, endTime) {
let startYear = new Date(startTime).getFullYear();
let endYear = new Date(endTime).getFullYear();
let result = [];
for (let i = endYear; i <= endYear; i++) {
for (let i = startYear; i <= endYear; i++) {
result.push(i);
}
return result;
......@@ -94,16 +95,16 @@ export async function getZhyy() {
let industryMap = {};//行业领域
let ruZhuMap = {};//入驻企业变化趋势
let ruZhuCount = 在孵dbList.length;//入驻数
let areaCount = 0;//
let enterpriseCount = 0;//企业数量
let areaCount = 0;//在孵企业总面积
let 面积变化Map = {};//孵化面积变化
let thisYear = new Date().getFullYear();
let firstDayMsOfMonth = moment().startOf('month').valueOf();
let checlTimeMs = moment(firstDayMsOfMonth).subtract(8, 'months').valueOf();
// console.log("checlTimeMs", checlTimeMs);
let 在孵企业变化趋势map = {};
let 在孵企业数量 = 0;
fhdbList.forEach(info => {
// console.log("info",info);
let { industry, enterprise_fuhuas, enterprise_leases } = info;
let startTime = enterprise_fuhuas[0].startTime;
if (!startTime) return;
......@@ -112,10 +113,7 @@ export async function getZhyy() {
if (startTimeMs >= checlTimeMs) {
let timeStr = moment(startTime).format("YY/MM");
if (!ruZhuMap[timeStr]) ruZhuMap[timeStr] = 0;
ruZhuMap[timeStr] += 1;
}
//行业领域分布
......@@ -133,10 +131,15 @@ export async function getZhyy() {
if (itemYear > thisYear) return;
if (!面积变化Map[itemYear]) 面积变化Map[itemYear] = { key: itemYear, value: 0 };
面积变化Map[itemYear].value += parseFloat(area);
if (!在孵企业变化趋势map[itemYear]) 在孵企业变化趋势map[itemYear] = 0;
在孵企业变化趋势map[itemYear] += 1;
});
}
}
enterpriseCount += 1;
if (enterprise_fuhuas[0].state == FUHUASTATE.实体孵化 || enterprise_fuhuas[0].state == FUHUASTATE.虚拟孵化) 在孵企业数量 += 1;
});
......@@ -159,37 +162,11 @@ export async function getZhyy() {
return dateA.diff(dateB);
});
/**
* 孵化运营 —— 获取在孵企业数
*/
let zaifuCount = await selectData(OPERATIONALDATATYPE.查询数据量, TABLENAME.企业孵化信息, { state: { "%ne%": FUHUASTATE.迁出 } }, null);
/**
* 在孵企业变化趋势
*/
let 在孵企业变化趋势map = {};
let firstDayMsOfMonth1 = moment().startOf('month').valueOf();
let checlTimeMs1 = moment(firstDayMsOfMonth1).subtract(6, 'years').valueOf();
let 在孵企业数量= 0;
在孵dbList.forEach(info => {
let {startTime, state} = info;
if (!startTime) return;
let startTimeMs = new Date(startTime).valueOf();
if (startTimeMs >= checlTimeMs1) {
let timeStr = moment(startTime).format("YYYY");
if (!在孵企业变化趋势map[timeStr]) 在孵企业变化趋势map[timeStr] = 0;
在孵企业变化趋势map[timeStr] += 1;
}
if (state == FUHUASTATE.实体孵化 || state == FUHUASTATE.虚拟孵化) 在孵企业数量 += 1;
});
let 在孵企业变化趋势 = [];
for (let key in 在孵企业变化趋势map) {
在孵企业变化趋势.push({ key, value: 在孵企业变化趋势map[key] });
}
在孵企业变化趋势.sort((a, b) => { return parseInt(a.key) - parseInt(b.key) });
......@@ -230,67 +207,6 @@ export async function getZhyy() {
}
毕业企业变化趋势.sort((a, b) => parseInt(a.key) - parseInt(b.key));
// let 毕业企业变化趋势map = {};
// let firstDayMsOfMonth2 = moment().startOf('month').valueOf();
// let checkTimeMs2 = moment(firstDayMsOfMonth2).subtract(6, 'years').valueOf();
// 在孵dbList.forEach(info => {
// let startTime = info.startTime;
// let moveOutType = info.moveOutType;
// let moveOutTime = info.moveOutTime;
// if (moveOutType === EMIGRATIONTYPE.毕业迁出 && moveOutTime) {
// let startTimeMs = new Date(startTime).valueOf();
// let moveOutTimeMs = new Date(moveOutTime).valueOf();
// if (startTimeMs >= checkTimeMs2 && moveOutTimeMs >= checkTimeMs2) {
// let timeStr = moment(moveOutTime).format("YYYY");
// if (!毕业企业变化趋势map[timeStr]) 毕业企业变化趋势map[timeStr] = 0;
// 毕业企业变化趋势map[timeStr] += 1;
// }
// }
// });
// let 毕业企业变化趋势 = [];
// for (let key in 毕业企业变化趋势map) {
// 毕业企业变化趋势.push({ key, value: 毕业企业变化趋势map[key] });
// }
// 毕业企业变化趋势.sort((a, b) => {
// const dateA = moment(a.key, "YYYY");
// const dateB = moment(b.key, "YYYY");
// return dateA.diff(dateB);
// });
/**
* 毕业企业变化趋势一个月的——所有时间年月日
*/
// let 毕业企业变化趋势map = {};
// 在孵dbList.forEach(info => {
// let startTime = info.startTime;
// let moveOutType = info.moveOutType;
// let moveOutTime = info.moveOutTime;
// if (moveOutType === EMIGRATIONTYPE.毕业迁出 && moveOutTime) {
// // let timeStr = moment(moveOutTime).format("YYYY-MM-DD"); // 按天统计
// let timeStr = moment(moveOutTime).format("YYYY-MM"); // 按月统计
// if (!毕业企业变化趋势map[timeStr]) 毕业企业变化趋势map[timeStr] = 0;
// 毕业企业变化趋势map[timeStr] += 1;
// }
// });
// let 毕业企业变化趋势 = [];
// for (let key in 毕业企业变化趋势map) {
// 毕业企业变化趋势.push({ key, value: 毕业企业变化趋势map[key] });
// }
// 毕业企业变化趋势.sort((a, b) => { return parseInt(a.key) - parseInt(b.key) });
// 毕业企业变化趋势.sort((a, b) => {
// // const dateA = moment(a.key, "YYYY-MM-DD");
// // const dateB = moment(b.key, "YYYY-MM-DD");
// const dateA = moment(a.key, "YYYY-MM");
// const dateB = moment(b.key, "YYYY-MM");
// return dateA.diff(dateB);
// });
let rongZiList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业融资, {}, null);
......@@ -401,53 +317,26 @@ export async function getZhyy() {
});
let 孵化器dbList = await selectData(OPERATIONALDATATYPE.查询多, TABLENAME.羽翼孵化器, {}, null);
let 孵化器信息数据 = await selectData(OPERATIONALDATATYPE.查询单, TABLENAME.羽翼孵化器, {}, null);
/**
* 计算在孵企业面积占比:在孵企业总面积/孵化器或者园区总面积 x 100%
*/
let zaifuAreaRatio = 0;
if (孵化器dbList?.length > 0) {
// 处理园区总面积
const parkArea = 孵化器dbList[0].parkArea;
let 园区总面积 = isNaN(parkArea) ? 0 : parseFloat(parkArea);
// 计算在孵总面积
let 在孵企业总面积 = 0;
fhdbList.forEach(info => {
info.enterprise_leases?.forEach(lease => {
const area = Number(lease.area) || 0;
在孵企业总面积 += isNaN(area) ? 0 : area;
});
});
// 安全计算百分比
zaifuAreaRatio = 园区总面积 > 0
? (在孵企业总面积 / 园区总面积) * 100
: 0;
let zaifuAreaRatio = "0";
if (!isNaN(孵化器信息数据.totalArea) && parseFloat(孵化器信息数据.totalArea) && areaCount) {
let zaifuAreaRatioNum = 100 * (areaCount / parseFloat(孵化器信息数据.totalArea));
zaifuAreaRatio = zaifuAreaRatioNum > 100 ? "100" : zaifuAreaRatioNum.toFixed(2);
}
let 园区概况 = [
// { key: "园区面积", value: "0㎡" },
{ key: "园区面积", value: `${孵化器dbList[0].parkArea}㎡` },
// { key: "产值规模", value: "0亿元" },
{ key: "产值规模", value: `${孵化器dbList[0].industrialScale}亿元` },
// { key: "企业数量", value: `${在孵dbList.length}家` },
{ key: "企业数量", value: `${zaifuCount}家` },
// { key: "员工数量", value: `0人` },
{ key: "园区面积", value: `${孵化器信息数据.parkArea}㎡` },
{ key: "产值规模", value: `${孵化器信息数据.industrialScale}亿元` },
{ key: "企业数量", value: `${孵化器信息数据.enterpriseNum}家` },
{ key: "员工数量", value: `${totalEmployeeCount}人` },
];
let 孵化器数据 = [
{ key: "孵化器面积", value: `${areaCount}㎡` },
{ key: "入驻企业", value: `${ruZhuCount}家` },
{ key: "入驻企业面积占比", value: "0%" },
{ key: "入驻企业数量占比", value: "0%" },
{ key: "入驻企业行业占比", value: "0%" },
]
let 在孵企业数据 = [
// { key: "在孵企业面积占比", value: "0%" },
{ key: "在孵企业面积占比", value: `${zaifuAreaRatio.toFixed(2)}%` },
{ key: "在孵企业面积占比", value: `${zaifuAreaRatio}%` },
{ key: "入驻", value: `${ruZhuCount}家` },
{ key: "迁出", value: `${qianChuCount}家` },
{ key: "到期退租", value: `${dqtzCount}家` },
......@@ -455,7 +344,7 @@ export async function getZhyy() {
];
let 孵化运营 = [
{ key: "孵化面积", value: `${areaCount}㎡` },//企业自行填报todo
{ key: "孵化面积", value: `${areaCount}㎡` },//企业自行填报
{ key: "在孵企业", value: `${在孵企业数量}家` },
{ key: "毕业企业", value: `${biYeOutCount}家` },
{ key: "融资企业", value: `${rongZiQiYeCount}家` },
......@@ -468,9 +357,7 @@ export async function getZhyy() {
];
let 企业服务 = [
{ key: "服务数", value: fuWuCount },
// { key: "服务覆盖企业", value: fuWuQiYeCount },
{ key: "服务覆盖企业", value: `${fuWuQiYeCountPercentage}%` },
];
/**
......@@ -482,43 +369,39 @@ export async function getZhyy() {
{ key: "市级", value: `${shiJiCount}项` },
];
let 荣誉资质图片 = imgList
/**
* 就业分析
*/
// 获取当前日期
const currentDate = new Date();
// const currentYear = currentDate.getFullYear();
const currentMonth = currentDate.getMonth() + 1; // JavaScript 的月份从0开始
// 计算当前份的开始时间和结束时间
const startOfMonth = new Date(currentYear, currentMonth - 1, 1);
const endOfMonth = new Date(currentYear, currentMonth, 0);
// 计算去年同期的开始时间和结束时间
const startOfLastYearMonth = new Date(currentYear - 1, currentMonth - 1, 1);
const endOfLastYearMonth = new Date(currentYear - 1, currentMonth, 0);
// 计算当前份的开始时间和结束时间
const StartOfYear = new Date(`${currentYear}-01-01 00:00:00`).valueOf();
const EndOfYear = new Date(`${currentYear}-12-31 23:59:59`).valueOf();
// 计算去年的开始时间和结束时间
const StartOfLastYearYear = new Date(`${currentYear-1}-01-01 00:00:00`).valueOf();
const EndOfLastYearYear = new Date(`${currentYear-1}-12-31 23:59:59`).valueOf();
// 查询本新增就业数据
let currentMonthNewJobs = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.参保记录, { annual: { "%between%": [startOfMonth.toISOString(), endOfMonth.toISOString()] } }, null);
// 查询本新增就业数据
let currentYearNewJobs = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.参保记录, { annual: { "%between%": [getMySqlMs(StartOfYear), getMySqlMs(EndOfYear)] } }, null);
// 查询去年同期新增就业数据
let lastYearMonthNewJobs = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.参保记录, { annual: { "%between%": [startOfLastYearMonth.toISOString(), endOfLastYearMonth.toISOString()] } }, null);
let lastYearMonthNewJobs = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.参保记录, { annual: { "%between%": [getMySqlMs(StartOfLastYearYear), getMySqlMs(EndOfLastYearYear)] } }, null);
// 计算本新增就业人数
let currentMonthJobCount = 0;
currentMonthNewJobs.forEach(info => {
// 计算本新增就业人数
let currentYearJobCount = 0;
currentYearNewJobs.forEach(info => {
let itemCount = 0;
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);
currentMonthJobCount += itemCount;
if (info.qiTa) itemCount += parseInt(info.qiTa);
currentYearJobCount += itemCount;
});
// 计算去年同期新增就业人数
let lastYearMonthJobCount = 0;
let lastYearYearJobCount = 0;
lastYearMonthNewJobs.forEach(info => {
let itemCount = 0;
if (info.zhuanKe) itemCount += parseInt(info.zhuanKe);
......@@ -526,13 +409,14 @@ export async function getZhyy() {
if (info.shuoshi) itemCount += parseInt(info.shuoshi);
if (info.boShi) itemCount += parseInt(info.boShi);
if (info.boshiyishang) itemCount += parseInt(info.boshiyishang);
lastYearMonthJobCount += itemCount;
if (info.qiTa) itemCount += parseInt(info.qiTa);
lastYearYearJobCount += itemCount;
});
// 计算同比增长率
let growthRate = 0;
if (lastYearMonthJobCount !== 0) {
growthRate = ((currentMonthJobCount - lastYearMonthJobCount) / lastYearMonthJobCount) * 100;
if (lastYearYearJobCount !== 0) {
growthRate = ((currentYearJobCount - lastYearYearJobCount) / lastYearYearJobCount) * 100;
}
......@@ -551,6 +435,7 @@ export async function getZhyy() {
if (info.shuoshi) itemCount += parseInt(info.shuoshi);
if (info.boShi) itemCount += parseInt(info.boShi);
if (info.boshiyishang) itemCount += parseInt(info.boshiyishang);
if (info.qiTa) itemCount += parseInt(info.qiTa);
if (!年度就业人数趋势分析Map[itemYear]) 年度就业人数趋势分析Map[itemYear] = { key: itemYear, value: 0 };
年度就业人数趋势分析Map[itemYear].value += itemCount;
......@@ -610,7 +495,7 @@ export async function getZhyy() {
// 荣誉资质图片: 荣誉资质图片,
就业分析: {
dataList: [
{ key: "本月新增就业", value: `${currentMonthJobCount}人` },
{ key: "本年就业人数", value: `${currentYearJobCount}人` },
{ key: "同比去年", value: `${growthRate.toFixed(2)}%` }
], titleList: ['key', 'value']
},
......@@ -630,17 +515,15 @@ export async function getZhyy() {
}
}
//行业领域----按照企业选择的类型呈现todo INDUSTRY
//行业领域----按照企业选择的类型呈现
for (let key in INDUSTRY) {
let anyKey: any = key;
if (isNaN(anyKey)) {
let keyStr = key;
let industry = INDUSTRY[key];
let count = await selectData(OPERATIONALDATATYPE.查询数据量, TABLENAME.企业基础信息表, { industry: { "%like%": industry } }, null);
// 只有当count大于0时才添加到dataList中
if (count > 0) {
zhyy.入驻企业行业类型.dataList.push({ key: keyStr, value: count });
if (industryMap[keyStr] ) {
zhyy.入驻企业行业类型.dataList.push({ key: keyStr, value: industryMap[keyStr] });
}
}
}
......
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