Commit 238475ca by Zllgogo

Merge branch 'master' of http://123.207.147.179:8888/node_server/yuyiViewServer

# Conflicts:
#	logs/error/error.2025-04-22.log.1
#	res/yuyiServer20250328.xlsx
parents ed911f31 7ad89fdf
......@@ -6,3 +6,4 @@
/public
*test*
*.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 |
<<<<<<< HEAD
[2025-04-22T12:43:42.602] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-04-22T12:43:43.711] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-04-22T12:43:44.803] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
......@@ -8,3 +9,15 @@
[2025-04-22T12:43:48.219] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-04-22T12:43:49.302] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
[2025-04-22T12:43:50.963] [ERROR] errorLogger - errorInfo => 数据查询失败 | undefined |
=======
[2025-04-22T21:02:05.470] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:02:06.582] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:02:07.685] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:02:09.345] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:02:29.679] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:02:30.776] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:02:31.874] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:02:33.006] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:02:34.117] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:02:35.223] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
>>>>>>> 7ad89fdf7b302dde05ba7817edd92c2544a5b880
[2025-04-22T21:00:54.208] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:00:55.332] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:01:29.681] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:01:30.797] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:01:31.897] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:01:33.025] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:01:34.134] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:01:35.253] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:02:03.257] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:02:04.362] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:00:29.682] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:00:30.780] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:00:31.888] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:00:33.012] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:00:34.265] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:00:36.289] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:00:49.778] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:00:50.879] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:00:51.989] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
[2025-04-22T21:00:53.105] [ERROR] errorLogger - errorInfo => 数据联合查询失败 | undefined |
<config>
<port>40015</port>
<dbPort>9096</dbPort>
<dbHost>127.0.0.1</dbHost>
<dbHost>192.168.0.105</dbHost>
<sign>xxx90909082fsdahfjosadjfpoiwausjorip2hjklrhn1ioud0u124rx0qwejfokasjfolksaujfoas</sign>
<!-- <imgPath>http://127.0.0.1:4980/yuyi/viewpage</imgPath> -->
<imgPath>http://192.168.0.189:40015</imgPath>
......
......@@ -14,10 +14,10 @@ export async function getData(req, res) {
let ret: any = {};
let zfqymjqkfxPackageData = keyValuePackage(excelData['在孵企业面积情况分析'].dataList);
let zfqymjqkfxPackageData = keyValuePackage(dbList.在孵企业面积情况分析.dataList);
ret['zfqymjqkfx'] = getKeyValueOut('在孵企业面积情况分析', zfqymjqkfxPackageData);
let zfqymjbhqsPackageData = onceYBarChartPackage(excelData['在孵企业面积变化趋势'], '', '');
let zfqymjbhqsPackageData = onceYBarChartPackage([dbList.在孵企业面积变化趋势], '', '');
ret['zfqymjbhqs'] = getOnceYBarChartOut('在孵企业面积变化趋势', zfqymjbhqsPackageData);
......
......@@ -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);
......
......@@ -351,36 +351,14 @@ export enum SELECTPARAM {
}
/**
* 知识产权类型
* 知识产权类型
*/
export enum INTELLECTUALPROPERTYRIGHT {
// 软件著作 = 1,
export enum IPRALLTYPE {
软件著作权 = 1,
发明专利,
海外专利,
专利,
其他
// 植物新品种,
// 集成电路布图,
}
/**
* 知识产权类型 前端用
*/
export enum IPRTYPECLIENT {
// 软件著作 = 1,
软件著作权 = 1,
发明专利,
海外专利,
植物新品种,
集成电路布图,
}
/**
* 知识产权类型专利 前端用
*/
export enum IPRTYPECLIENTZL {
发明专利 = 2,
海外专利,
专利 = 100,
发明专利 = 101,
海外专利 = 102,
其他 = 200,
植物新品种 = 201,
集成电路布图 =202
}
......@@ -12,6 +12,16 @@ import { get } from "http";
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 getJxgljsc() {
let jxgljsc = {
产业结构: { dataList: [], titleList: ['key', 'value'] },//产业结构
......@@ -29,9 +39,88 @@ export async function getJxgljsc() {
企业孵化数: { dataList: [], titleList: ['key', 'value'] },//企业孵化数
金融服务: { dataList: [], titleList: ['key', 'value'] },//新增后台填报
预警: { dataList: [], titleList: ['key', 'value'] },//预警
企业预警: { bodyList: [], headerList: [['企业名称', '风险等级']] }
企业预警: { bodyList: [], headerList: [['企业名称', '风险等级']] },
在孵企业面积情况分析:{ dataList: []}, //在孵企业面积情况分析
在孵企业面积变化趋势:{name:"在孵企业面积", data:[]}
};
//在孵企业面积情况分析
//获取所有企业孵化信息
let manyTableInfo: any = {}
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["fId", "eId", "startTime", "endTime", "state"], where: {} };
manyTableInfo[TABLENAME.租赁信息] = { column: ["area", "startTime", "endTime"], where: {} };
let fhdbList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {state:1}, ["industry", "eId"], manyTableInfo);
let areaCount = 0;
let 面积变化Map = {};//孵化面积变化
let thisYear = new Date().getFullYear();
let industryMap = {};
let 在孵企业变化趋势map = {};
fhdbList.forEach(info => {
let { industry, enterprise_fuhuas, enterprise_leases } = info;
let startTime = enterprise_fuhuas[0].startTime;
if (!startTime) return;
let area = enterprise_leases[0].area || 0;
if (area) {
areaCount += parseFloat(area);//租赁面积累加
if (enterprise_leases[0].startTime && enterprise_leases[0].endTime) {
let leasesYearList = getStartAndEndTimeYearList(enterprise_leases[0].startTime, enterprise_leases[0].endTime);
leasesYearList.forEach(itemYear => {
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;
});
}
}
//行业领域分布
if (industry) {
let industryStr = changeEnumValue(INDUSTRY, JSON.parse(industry)[0]);
if (!industryMap[industryStr]) industryMap[industryStr] = 0;
industryMap[industryStr] += 1;
}
});
let 在孵企业变化趋势 = [];
for (let key in 在孵企业变化趋势map) {
在孵企业变化趋势.push({ key, value: 在孵企业变化趋势map[key] });
}
在孵企业变化趋势.sort((a, b) => { return parseInt(a.key) - parseInt(b.key) });
jxgljsc.在孵企业变化趋势 = getChart({"在孵企业": 在孵企业变化趋势});//在孵企业变化趋势
//行业领域----按照企业选择的类型呈现
for (let key in INDUSTRY) {
let anyKey: any = key;
if (isNaN(anyKey)) {
let keyStr = key;
jxgljsc.产业结构.dataList.push({ key: keyStr, value: industryMap[keyStr] });
}
}
jxgljsc.在孵企业面积变化趋势.data = Object.values(面积变化Map);
let 孵化器信息数据 = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.羽翼孵化器, {}, null);
/**
* 计算在孵企业面积占比:在孵企业总面积/孵化器或者园区总面积 x 100%
*/
let zaifuAreaRatio = "0";
if (!isNaN(孵化器信息数据.totalArea) && parseFloat(孵化器信息数据.totalArea) && areaCount) {
let zaifuAreaRatioNum = 100 * (areaCount / parseFloat(孵化器信息数据.totalArea));
zaifuAreaRatio = zaifuAreaRatioNum > 100 ? "100" : zaifuAreaRatioNum.toFixed(2);
}
jxgljsc.在孵企业面积情况分析.dataList.push({key:"在孵面积占比", value:zaifuAreaRatio});
// 获取当前时间
let nowTime = moment().format('YYYY-MM-DD HH:mm:ss');
let fhColumn = ["fId", "eId", "startTime", "endTime", "state", "virtualCause", "virtualCauseDes", "moveOutType",
......@@ -40,6 +129,7 @@ export async function getJxgljsc() {
// let 在孵dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, { "endTime": { "%gt%": nowTime } }, fhColumn);
let 在孵dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, { state: { "%ne%": FUHUASTATE.迁出 } }, fhColumn);
//获取在孵企业租赁信息
let 租赁Column = ["eId", "year", "alienPatent", "classIPatent", "secondClassPatent", "thirdPentent"];
let 在孵租赁联查includeConf = {};
......@@ -50,7 +140,7 @@ export async function getJxgljsc() {
//获取羽翼孵化器
let 羽翼孵化器dbList = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.羽翼孵化器, {}, []);
jxgljsc.产业结构.dataList = await cyjg();//产业结构
// jxgljsc.产业结构.dataList = await cyjg();//产业结构
jxgljsc.人才引进.dataList = await rcyj();//人才引进
......@@ -62,8 +152,6 @@ export async function getJxgljsc() {
//科技型中小企业认定情况详细列表
jxgljsc.科技型中小企业认定情况详细.bodyList = kjxzxqyrdqkxx;
let fhqhzsjInfo = await fhqhzsj(羽翼孵化器dbList, 在孵dbList);
jxgljsc.孵化器汇总数据.dataList = getKeyValue(fhqhzsjInfo);//孵化器汇总数据
......@@ -78,7 +166,8 @@ export async function getJxgljsc() {
let qydtInfo = await qydt(在孵dbList);
jxgljsc.企业动态.dataList = getKeyValue(qydtInfo);//企业动态
jxgljsc.在孵企业变化趋势 = await zfqybhqs(在孵dbList);//在孵企业变化趋势
/**
* 金融服务
......@@ -239,14 +328,24 @@ async function getyj() {
let manyTableInfo: any = {}
// manyTableInfo[TABLENAME.企业孵化信息] = { column: ["fId", "eId", "startTime", "endTime", "state"], where: { state: FUHUASTATE.实体孵化 } };
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["fId", "eId", "moveOutTime"], where: {} };
// manyTableInfo[TABLENAME.企业经营信息] = { column: ["annual"], where: {} };
let fhdbList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {}, fhColumn, manyTableInfo);
let manageList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, { }, ["annual", "eId"]);
let map = {};
manageList.forEach(info => {
map[info.eId] = 1;
});
fhdbList.forEach(info => {
let riskLevel: string;
if (info.enterprise_fuhuas[0].moveOutTime) {
yj.高风险++;
let riskLevel = "";
if (info.enterprise_fuhuas[0].moveOutType == MOVEOUTTYPE.非毕业迁出) {
yj.高风险 += 1;
riskLevel = "高风险";
} else if (info.shijiaoziben == "-" || info.shijiaoziben == null) {
yj.中低风险++;
} else if (!map[info.eId]) {
yj.中低风险 += 1;
riskLevel = "中低风险";
}
......@@ -289,26 +388,22 @@ async function qydt(data) {
let monthAgo2 = moment().subtract(1, 'month').format('YYYY-MM-01 00:00:00');
let monthAgo2End = moment().subtract(1, 'month').endOf('month').format('YYYY-MM-DD 00:00:00');
//环比去年
let thisYear = moment().format('YYYY-01-01 00:00:00');
let yearAgo = moment().subtract(1, 'year').format('YYYY-01-01 00:00:00');
let yearAgoEnd = moment().subtract(1, 'year').format('YYYY-12-31 00:00:00');
let lastYearThieMonthAgo = moment().startOf("M").subtract(1, 'year').format('YYYY-MM-DD 00:00:00');
let lastYearThieMonthAgoEnd = moment().endOf("M").subtract(1, 'year').format('YYYY-MM-DD 00:00:00');
let 上月 = 0;
let 今年 = 0;
let 去年 = 0;
let 去年本月 = 0;
data.forEach(info => {
if (moment(info.startTime) > moment(monthAgo) && moment(info.startTime) < moment(nowTime)) {
let {startTime} = info;
if (moment(startTime) > moment(monthAgo) && moment(startTime) < moment(nowTime)) {
qydt.本月新加入在孵企业 += 1;
}
if (moment(info.startTime) > moment(monthAgo2) && moment(info.startTime) < moment(monthAgo2End)) {
if (moment(startTime) > moment(monthAgo2) && moment(startTime) < moment(monthAgo2End)) {
上月 += 1;
}
if (moment(info.startTime) > moment(thisYear) && moment(info.startTime) < moment(nowTime)) {
今年 += 1;
}
if (moment(info.startTime) > moment(yearAgo) && moment(info.startTime) < moment(yearAgoEnd)) {
去年 += 1;
if (moment(startTime) > moment(lastYearThieMonthAgo) && moment(startTime) < moment(lastYearThieMonthAgoEnd)) {
去年本月 += 1;
}
})
......@@ -316,20 +411,17 @@ async function qydt(data) {
// qydt.同比上月 = 同比.toFixed(2) + "%" || "0%";
// let 环比 = ((今年 - 去年) / 去年) * 100;
// qydt.环比去年 = 环比.toFixed(2) + "%";
if (上月 !== 0) {
qydt.同比上月 = "0%";
if (上月) {
let 同比 = ((qydt.本月新加入在孵企业 - 上月) / 上月) * 100;
qydt.同比上月 = 同比.toFixed(2) + "%";
} else {
qydt.同比上月 = "0%";
}
if (去年 !== 0) {
let 环比 = ((今年 - 去年) / 去年) * 100;
qydt.环比去年 = 环比.toFixed(2) + "%";
} else {
qydt.环比去年 = "0%";
if (去年本月 && qydt.本月新加入在孵企业) {
let 环比 = ((qydt.本月新加入在孵企业 - 去年本月) / 去年本月) * 100;
qydt.环比去年 = 环比.toFixed(2) + "%";
}
// result.push(qydt); // 将 qydt 对象添加到 result 数组中
return qydt;
}
......
......@@ -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, IPRALLTYPE, 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);
......@@ -81,35 +123,19 @@ export async function getEnterprise() {
//变化趋势分析 //todo 需要日志表
// getBhqsfx(fhdbList);
let 在孵企业变化趋势 = getZfqy(在孵dbList, 毕业dbList);
let 在孵企业变化趋势 = getZfqy(在孵企业变化趋势map, 毕业dbList);
qyfw.变化趋势分析 = getChart(在孵企业变化趋势);
//入孵时长分布
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 });
}
qyfw.孵化企业行业领域占比.dataList.push({ key: keyStr, value: industryMap[keyStr] });
}
}
......@@ -121,7 +147,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;
......@@ -130,12 +156,16 @@ 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);
//金融服务
let jrfw = await getJrfw(在孵dbList, 企业融资dbList);
qyfw.金融服务.dataList = getKeyValue(jrfw);
......@@ -148,7 +178,7 @@ export async function getEnterprise() {
qyfw.本月融资金额 = byrzqy.byrzjebhqs;
//在孵企业总营收
let zfqyzys = await getZfqyzys(在孵dbList);
let zfqyzys = await getZfqyzys();
qyfw.在孵企业总营收.dataList = getKeyValue(zfqyzys);
//金融服务企业
......@@ -296,84 +326,23 @@ 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) {
function getZfqy(在孵企业变化趋势map, 毕业dbList) {
let year = getYearList();
let bhqsfx = {
"在孵": [],
"毕业": []
};
// 初始化每年的在孵和毕业企业数量为0
for (let i = 0; i < year.length; i++) {
bhqsfx.在孵.push({ key: year[i], value: 0 });
bhqsfx.毕业.push({ key: year[i], value: 0 });
}
在孵dbList.forEach(info => {
let startTimeYear = moment(info.startTime).year(); // 获取入孵开始时间
let endTimeYear = moment(info.endTime).year(); // 获取入孵结束时间
let moveOutType = info.moveOutType;
// 统计在孵企业
for (let i = 0; i < year.length; i++) {
if (parseInt(year[i]) === startTimeYear) {
bhqsfx.在孵[i].value += 1;
break;
}
}
// // 统计毕业企业
// if (moveOutType === EMIGRATIONTYPE.毕业迁出) {
// for (let i = 0; i < year.length; i++) {
// if (parseInt(year[i]) === startTimeYear) {
// bhqsfx.毕业[i].value += 1;
// break;
// }
// }
// }
});
let moveOutMap = {}
毕业dbList.forEach(info => {
let startTimeYear = moment(info.startTime).year(); // 获取入孵开始时间
let endTimeYear = moment(info.endTime).year(); // 获取入孵结束时间
let moveOutType = info.moveOutType;
let moveOutTimeYear = moment(info.moveOutTime).year(); // 获取入孵开始时间
if (!moveOutMap[moveOutTimeYear]) moveOutMap[moveOutTimeYear] = 0;
moveOutMap[moveOutTimeYear] += 1;
});
// 统计毕业企业
if (moveOutType === EMIGRATIONTYPE.毕业迁出) {
for (let i = 0; i < year.length; i++) {
if (parseInt(year[i]) === startTimeYear) {
bhqsfx.毕业[i].value += 1;
break;
}
}
}
year.forEach(year => {
bhqsfx.在孵.push({key:year, value:在孵企业变化趋势map[year] || 0});
bhqsfx.毕业.push({key:year, value:moveOutMap[year] || 0});
});
return bhqsfx;
......@@ -427,35 +396,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 +427,7 @@ async function getQyxqdt(入孵申请dbList, 企业服务Count) {
}
qyxqdt.入孵申请 = 入孵申请dbList.length;
qyxqdt.企业需求数 = 企业服务Count;
qyxqdt.毕业认证企业 = 毕业企业数;
let qyxqdtxx = [];
入孵申请dbList.forEach(info => {
......@@ -585,14 +550,10 @@ async function getJrfw(data, 企业融资dbList) {
// jrfw.本月融资金额 = Math.round((jrfw.本月融资金额 / 100000000) * 100) / 100; //单位换算成万亿
jrfw.本月融资金额 = Math.round((jrfw.本月融资金额) * 100) / 100; //单位换算成万亿
for (let i = 0; i < data.length; i++) {
//获取在孵企业经营数据
// let 经营信息dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, { eId: data[i].eId}, null);
let 经营信息dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, {}, null);
经营信息dbList.forEach(info => {
jrfw.在孵企业总营收 += parseFloat(info.BI);
})
}
return jrfw;
}
......@@ -638,7 +599,7 @@ async function getByrzqy(企业融资dbList) {
/**
* 在孵企业总营收
*/
async function getZfqyzys(data) {
async function getZfqyzys() {
let zfqyzys = {
"500万以下": 0,
"500万-1000万": 0,
......@@ -646,17 +607,14 @@ async function getZfqyzys(data) {
"2000万以上": 0
}
for (let i = 0; i < data.length; i++) {
//获取在孵企业经营数据
// let 经营信息dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, { eId: data[i].eId }, null);
let 经营信息dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, {}, 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;
let BI = parseInt(info.BI || "0");
if ( BI< 500) zfqyzys["500万以下"] += 1;
else if (BI >= 500 && BI < 1000) zfqyzys["500万-1000万"] += 1;
else if (BI >= 1000 && BI < 2000) zfqyzys["1000万-2000万"] += 1;
else zfqyzys["2000万以上"] += 1;
})
}
return zfqyzys
}
......@@ -694,17 +652,17 @@ function getZscq(data) {
data.forEach(info => {
switch (info.iprType) {
case IPRTYPECLIENT.软件著作权:
case IPRALLTYPE.软件著作权:
zscqbt.软件著作权 += info.number;
break;
case IPRTYPECLIENT.发明专利:
case IPRALLTYPE.发明专利:
zscqbt.发明专利 += info.number;
break;
case IPRTYPECLIENT.海外专利:
case IPRALLTYPE.海外专利:
zscqbt.海外专利 += info.number;
break;
case IPRTYPECLIENT.植物新品种:
case IPRTYPECLIENT.集成电路布图:
case IPRALLTYPE.植物新品种:
case IPRALLTYPE.集成电路布图:
zscqbt.其他 += info.number;
break;
}
......@@ -741,7 +699,11 @@ function getZscqxq(data) {
let dataList = [];
data.forEach(info => {
let { enterprise_iprs, enterpriseName } = info;
let iprsCount = enterprise_iprs.length;
let iprsCount = 0;
enterprise_iprs.forEach(item => {
let {number} = item;
iprsCount += parseInt(number);
});
dataList.push([enterpriseName, iprsCount]);
});
......@@ -754,16 +716,16 @@ function getZscqxq(data) {
*/
function getQyzzfl(data) {
let qyzzfl = {
专精特新: 0,
小巨人: 0,
高新企业: 0,
专精特新: 0,
小巨人培育: 0,
}
let qyzzflTable = {
专精特新: [],
小巨人: [],
高新企业: [],
专精特新: [],
小巨人培育: [],
};
......@@ -816,6 +778,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;
......
import moment = require("moment");
import { AWARDLEVEL, DEGREE, FINANCINGROUNDS, IPRTYPECLIENT, NEEDCATEGORY, OPERATIONALDATATYPE, QUARTER, TABLENAME } from "../../config/enum";
import { AWARDLEVEL, DEGREE, FINANCINGROUNDS, IPRALLTYPE, NEEDCATEGORY, OPERATIONALDATATYPE, QUARTER, TABLENAME } from "../../config/enum";
import { selectData, selectManyTableData } from "./operationalData";
import { getChart, getKeyValue, getYearList } from "./out";
import { changeEnumValue } from "../../tools/eccEnum";
......@@ -536,7 +536,7 @@ function get租房补贴(企业资质信息, 企业专利信息, 参保记录信
企业专利信息.forEach(info => {
let { enterprise_iprs } = info;
enterprise_iprs.forEach(patent => {
if (patent.iprType === IPRTYPECLIENT.软件著作权) {
if (patent.iprType === IPRALLTYPE.软件著作权) {
ruanzhuCompleted = true;
}
});
......@@ -772,7 +772,7 @@ function get知识产权(data) {
let { enterprise_iprs } = info;
enterprise_iprs.forEach(patents => {
if (patents.iprType) {
let iprTypeStr = changeEnumValue(IPRTYPECLIENT, patents.iprType);
let iprTypeStr = changeEnumValue(IPRALLTYPE, patents.iprType);
if (!zscq[iprTypeStr]) zscq[iprTypeStr] = 0;
zscq[iprTypeStr] += patents.number;
}
......
......@@ -3,16 +3,15 @@ import { AWARDLEVEL, EMIGRATIONTYPE, FOLLOWUPSTATUS, FUHUASTATE, INDUSTRY, MOVEO
import { selectData, selectManyTableData } from "./operationalData";
import { changeEnumValue } from "../../tools/eccEnum";
import { getChart, getYearList } from "./out";
import { getMySqlMs } from "../../tools/systemTools";
import { systemConfig } from "../../config/serverConfig";
import { log } from "console";
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;
......@@ -82,43 +81,29 @@ async function calculateRevenue(start: string, end: string) {
}
export async function getZhyy() {
// let zhyy = {
// 在孵企业数据:{dataList:[], titleList:['key', 'value']},
// 入驻企业变化趋势:[],
// 入驻企业行业类型:{dataList:[], titleList:['key', 'value']},
// 孵化运营:{dataList:[], titleList:['key', 'value']},
// 智慧运营汇总数据:{dataList:[], titleList:['key', 'value']},
// 企业服务:{dataList:[], titleList:['key', 'value']},
// 企业服务类型:{dataList:[], titleList:['key', 'value']},
// };
let fhColumn = ["industry", "eId"];
//获取所有企业孵化信息
let fhColumn = ["industry", "eId"];
let manyTableInfo: any = {}
// manyTableInfo[TABLENAME.企业孵化信息] = { column: ["fId", "eId", "startTime", "endTime", "state"], where: { state: FUHUASTATE.实体孵化 } };
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["fId", "eId", "startTime", "endTime", "state"], where: {} };
manyTableInfo[TABLENAME.租赁信息] = { column: ["area", "startTime", "endTime"], where: {} };
let fhdbList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {}, fhColumn, manyTableInfo);
let 在孵dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, {}, ["fId", "eId", "startTime", "endTime", "state", "virtualCause",
let fhdbList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {state:1}, fhColumn, manyTableInfo);
let 在孵dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, {state:{"%ne%":0}}, ["fId", "eId", "startTime", "endTime", "state", "virtualCause",
"virtualCauseDes", "moveOutType", "moveOutTrace", "moveOutCause", "moveOutTime", "graduationTime"]);
//入驻企业变化趋势
let industryMap = {};//行业领域
let ruZhuMap = {};//入驻企业变化趋势
let ruZhuCount = 0;//入驻数
let areaCount = 0;
let enterpriseCount = 0;//企业数量
let ruZhuCount = 在孵dbList.length;//入驻数
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;
......@@ -127,12 +112,8 @@ export async function getZhyy() {
if (startTimeMs >= checlTimeMs) {
let timeStr = moment(startTime).format("YY/MM");
if (!ruZhuMap[timeStr]) ruZhuMap[timeStr] = 0;
ruZhuMap[timeStr] += 1;
// ruZhuCount += 1;
}
ruZhuCount += 1;
//行业领域分布
if (industry) {
......@@ -149,10 +130,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;
});
......@@ -163,46 +149,18 @@ export async function getZhyy() {
let wytzCount = await selectData(OPERATIONALDATATYPE.查询数据量, TABLENAME.企业孵化信息, { state: FUHUASTATE.迁出, moveOutType: EMIGRATIONTYPE.违约退租 }, null);
let dqtzCount = await selectData(OPERATIONALDATATYPE.查询数据量, TABLENAME.企业孵化信息, { state: FUHUASTATE.迁出, moveOutType: EMIGRATIONTYPE.到期退租 }, null);
let 入驻企业变化趋势 = [];
for (let key in ruZhuMap) {
入驻企业变化趋势.push({ key, value: ruZhuMap[key] });
for (let i = 6; i >= 0; i-- ) {
let key = moment().subtract(i, 'M').format('YY/MM');
入驻企业变化趋势.push({ key, value: ruZhuMap[key] || 0 });
}
// 入驻企业变化趋势.sort((a, b) => { return parseInt(a.key) - parseInt(b.key) });
入驻企业变化趋势.sort((a, b) => {
const dateA = moment(a.key, "YY/MM");
const dateB = moment(b.key, "YY/MM");
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();
在孵dbList.forEach(info => {
let startTime = info.startTime;
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;
}
});
let 在孵企业变化趋势 = [];
for (let key in 在孵企业变化趋势map) {
在孵企业变化趋势.push({ key, value: 在孵企业变化趋势map[key] });
}
在孵企业变化趋势.sort((a, b) => { return parseInt(a.key) - parseInt(b.key) });
......@@ -243,67 +201,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);
......@@ -329,7 +226,7 @@ export async function getZhyy() {
}
/**
* 企业服务todo
* 企业服务
*/
let fuWuCount = 0;//服务数
let fuWuQiYeCountMap = {};//服务覆盖企业
......@@ -359,13 +256,6 @@ export async function getZhyy() {
let fuWuQiYeTypeList = [];
// for (let key in NEEDCATEGORY) {
// let keyAny:any = NEEDCATEGORY[key];
// if (isNaN(keyAny)) {
// //toupdate 这里继续完善 有点小bug
// }
// }
for (let key in NEEDCATEGORY) {
let enumValue = NEEDCATEGORY[key];
// 跳过未显式赋值的枚举成员(如果有的话,它们默认为枚举前一个成员的值加1)
......@@ -421,66 +311,35 @@ 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: "0家" },
{ key: "到期退租", value: `${dqtzCount}家` },
// { key: "违约退租", value: "0家" }
{ key: "违约退租", value: `${wytzCount}家` },
];
let 孵化运营 = [
{ key: "孵化面积", value: `${areaCount}㎡` },//企业自行填报todo
// { key: "在孵企业", value: `${在孵dbList.length}家` },
{ key: "在孵企业", value: `${zaifuCount}家` },
{ key: "孵化面积", value: `${areaCount}㎡` },//企业自行填报
{ key: "在孵企业", value: `${在孵企业数量}家` },
{ key: "毕业企业", value: `${biYeOutCount}家` },
{ key: "融资企业", value: `${rongZiQiYeCount}家` },
......@@ -492,9 +351,7 @@ export async function getZhyy() {
];
let 企业服务 = [
{ key: "服务数", value: fuWuCount },
// { key: "服务覆盖企业", value: fuWuQiYeCount },
{ key: "服务覆盖企业", value: `${fuWuQiYeCountPercentage}%` },
];
/**
......@@ -506,43 +363,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);
......@@ -550,13 +403,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;
}
......@@ -575,6 +429,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;
......@@ -634,7 +489,7 @@ export async function getZhyy() {
// 荣誉资质图片: 荣誉资质图片,
就业分析: {
dataList: [
{ key: "本月新增就业", value: `${currentMonthJobCount}人` },
{ key: "本年就业人数", value: `${currentYearJobCount}人` },
{ key: "同比去年", value: `${growthRate.toFixed(2)}%` }
], titleList: ['key', 'value']
},
......@@ -654,18 +509,13 @@ 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 });
}
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