Commit e6628d8f by Zllgogo

no message

parent 89c1bb28
No preview for this file type
......@@ -46,12 +46,12 @@ export async function getData(req, res) {
let ryzzPackageData = keyValuePackage(dbData['荣誉资质'].dataList);
ret['ryzz'] = getKeyValueOut('荣誉资质', ryzzPackageData);
let ryzztp = dbData["荣誉资质图片"];
// let ryzztpList = [];
// for (let i = 0; i < ryzztp.length; i++) {
// ryzztpList.push(`${systemConfig.imgPath}/${ryzztp[i][0]}`);//systemConfig.imgFileUrl = imgFileUrl[0];
// }
ret['ryzztp'] = { title: "荣誉资质图片", dataList: ryzztp };
// let ryzztp = dbData["荣誉资质图片"];
// // let ryzztpList = [];
// // for (let i = 0; i < ryzztp.length; i++) {
// // ryzztpList.push(`${systemConfig.imgPath}/${ryzztp[i][0]}`);//systemConfig.imgFileUrl = imgFileUrl[0];
// // }
// ret['ryzztp'] = { title: "荣誉资质图片", dataList: ryzztp };
let zhyyhzsjPackageData = keyValuePackage(dbData['智慧运营汇总数据'].dataList);
ret['zhyyhzsj'] = getKeyValueOut('智慧运营汇总数据', zhyyhzsjPackageData);
......@@ -71,7 +71,6 @@ export async function getData(req, res) {
let jyfxPackageData = keyValuePackage(dbData['就业分析'].dataList);
ret['jyfx'] = getKeyValueOut('就业分析', jyfxPackageData);
let jdjyrsqsfxPackageData = onceYBarChartPackage(dbData['年度就业人数趋势分析'], '', '');
ret['jdjyrsqsfx'] = getOnceYBarChartOut('年度就业人数趋势分析', jdjyrsqsfxPackageData);
......
......@@ -60,12 +60,14 @@ 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.企业孵化信息, {}, fhColumn);
let 在孵dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, {state: { "%ne%": FUHUASTATE.迁出 }}, fhColumn);
//获取毕业企业
// let 毕业dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, { "moveOutType": MOVEOUTTYPE.毕业迁出 }, fhColumn);
let 毕业dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, { "moveOutType": EMIGRATIONTYPE.毕业迁出 }, fhColumn);
let 迁出dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, {}, fhColumn);
//获取所有企业孵化表联查企业信息表
let 孵化企业includeConf = {};
let 孵化企业Clumn = ["enterpriseName", "industry"];
......@@ -79,7 +81,7 @@ export async function getEnterprise() {
//变化趋势分析 //todo 需要日志表
// getBhqsfx(fhdbList);
let 在孵企业变化趋势 = getZfqy(在孵dbList);
let 在孵企业变化趋势 = getZfqy(在孵dbList, 毕业dbList);
qyfw.变化趋势分析 = getChart(在孵企业变化趋势);
//入孵时长分布
......@@ -125,7 +127,7 @@ export async function getEnterprise() {
qyfw.企业需求动态详细.bodyList = qyxqdtxx;
//企业变化情况
let qybhqk = getQybhqk(在孵dbList);
let qybhqk = getQybhqk(在孵dbList, 迁出dbList);
qyfw.企业变化情况.dataList = getKeyValue(qybhqk);
//企业变化情况——变化趋势
......@@ -320,7 +322,7 @@ function getBhqsfx(data) {
// return bhqsfx;
// }
function getZfqy(data) {
function getZfqy(在孵dbList, 毕业dbList) {
let year = getYearList();
let bhqsfx = {
"在孵": [],
......@@ -333,7 +335,7 @@ function getZfqy(data) {
bhqsfx.毕业.push({ key: year[i], value: 0 });
}
data.forEach(info => {
在孵dbList.forEach(info => {
let startTimeYear = moment(info.startTime).year(); // 获取入孵开始时间
let endTimeYear = moment(info.endTime).year(); // 获取入孵结束时间
let moveOutType = info.moveOutType;
......@@ -346,10 +348,27 @@ function getZfqy(data) {
}
}
// // 统计毕业企业
// if (moveOutType === EMIGRATIONTYPE.毕业迁出) {
// for (let i = 0; i < year.length; i++) {
// if (parseInt(year[i]) === startTimeYear) {
// bhqsfx.毕业[i].value += 1;
// break;
// }
// }
// }
});
毕业dbList.forEach(info => {
let startTimeYear = moment(info.startTime).year(); // 获取入孵开始时间
let endTimeYear = moment(info.endTime).year(); // 获取入孵结束时间
let moveOutType = info.moveOutType;
// 统计毕业企业
if (moveOutType === EMIGRATIONTYPE.毕业迁出) {
for (let i = 0; i < year.length; i++) {
if (parseInt(year[i]) === endTimeYear) {
if (parseInt(year[i]) === startTimeYear) {
bhqsfx.毕业[i].value += 1;
break;
}
......@@ -377,9 +396,9 @@ function getRfscfx(data) {
let nowTime = moment();
data.forEach(item => {
let parsedEndTime = moment(item.endTime); //获取入孵结束时间
let monthDiff = parsedEndTime.diff(nowTime, 'months');
if (monthDiff >= 0 && monthDiff < 3) rfscfx.即将到期 += 1;
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;
......@@ -398,8 +417,8 @@ async function getQyfwhzsj() {
let qyfwhzsj = {
"企业总营收额": 0,
"企业纳税": 0,
"融资企业": 0,
"企业专利": 0
"融资企业": "",
"企业专利": 0,
};
let 经营信息dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, {}, null);
经营信息dbList.forEach(info => {
......@@ -408,17 +427,28 @@ async function getQyfwhzsj() {
})
let 企业融资dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业融资, {}, null);
企业融资dbList.forEach(info => {
qyfwhzsj.融资企业 = `${企业融资dbList.length}家`; // 保持原逻辑
// 企业融资dbList.forEach(info => {
// qyfwhzsj.融资企业 += parseInt(info.financingAmount);
qyfwhzsj.融资企业 += 1;// 累加融资企业数量
})
// qyfwhzsj.融资企业 += 1;// 累加融资企业数量
// })
let 企业专利dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.知识产权, {}, null);
企业专利dbList.forEach(info => {
qyfwhzsj.企业专利 += parseInt(info.number || 0);
})
return qyfwhzsj;
// return qyfwhzsj;
// 格式化输出(不改变原始数据类型)
return {
...qyfwhzsj,
"企业总营收额": `${qyfwhzsj.企业总营收额}万`, // 添加带单位的字段
"企业纳税": `${qyfwhzsj.企业纳税}万` ,// 添加带单位的字段
"企业专利": `${qyfwhzsj.企业专利}个` // 添加带单位的字段
};
}
......@@ -474,14 +504,14 @@ async function getQyxqdt(入孵申请dbList, 企业服务Count) {
// return qybhqk;
// }
function getQybhqk(data) {
function getQybhqk(在孵dbList, 迁出dbList) {
let qybhqk = {
新增企业: 0, // 统计当前年份入孵企业
迁出企业: 0 // 统计当前年份迁出企业
}
let nowTime = moment();
data.forEach(info => {
在孵dbList.forEach(info => {
let parsedStartTime = moment(info.startTime); // 获取入孵开始时间
let parsedMoveOutTime = moment(info.moveOutTime); // 获取迁出时间
......@@ -491,11 +521,21 @@ function getQybhqk(data) {
}
// 检查迁出时间的年份是否与当前年份相同
// if (parsedMoveOutTime.isValid() && parsedMoveOutTime.year() === nowTime.year()) {
// qybhqk.迁出企业 += 1;
// }
})
迁出dbList.forEach(info => {
let parsedMoveOutTime = moment(info.moveOutTime); // 获取迁出时间
// 检查迁出时间的年份是否与当前年份相同
if (parsedMoveOutTime.isValid() && parsedMoveOutTime.year() === nowTime.year()) {
qybhqk.迁出企业 += 1;
}
})
return qybhqk;
}
......@@ -547,7 +587,8 @@ async function getJrfw(data, 企业融资dbList) {
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.企业经营信息, { eId: data[i].eId}, null);
let 经营信息dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, {}, null);
经营信息dbList.forEach(info => {
jrfw.在孵企业总营收 += parseFloat(info.BI);
})
......@@ -607,7 +648,8 @@ async function getZfqyzys(data) {
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.企业经营信息, { 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;
......
import moment = require("moment");
import { AWARDLEVEL, EMIGRATIONTYPE, FOLLOWUPSTATUS, FUHUASTATE, INDUSTRY, MOVEOUTTYPE, NEEDCATEGORY, OPERATIONALDATATYPE, TABLENAME } from "../../config/enum";
import { AWARDLEVEL, EMIGRATIONTYPE, FOLLOWUPSTATUS, FUHUASTATE, INDUSTRY, MOVEOUTTYPE, NEEDCATEGORY, OPERATIONALDATATYPE, QUARTER, TABLENAME } from "../../config/enum";
import { selectData, selectManyTableData } from "./operationalData";
import { changeEnumValue } from "../../tools/eccEnum";
import { getChart, getYearList } from "./out";
......@@ -18,6 +18,69 @@ function getStartAndEndTimeYearList(startTime, endTime) {
return result;
}
// 获取当前年份的四个季度
function getQuarterList(year: number) {
const quarters = [];
for (let quarter = 1; quarter <= 4; quarter++) {
const start = moment()
.year(year)
.quarter(quarter)
.startOf('quarter')
.format('YYYY-MM-DD HH:mm:ss');
const end = moment()
.year(year)
.quarter(quarter)
.endOf('quarter')
.format('YYYY-MM-DD HH:mm:ss');
quarters.push({ quarter, start, end });
}
return quarters;
}
/**
* 获取指定季度的起止时间
* @param year 年份
* @param quarter 季度 (1-4)
* @returns 当前季度的起止时间对象 { start, end }
*/
function getQuarterRange(year: number, quarter: number) {
const start = moment()
.year(year)
.quarter(quarter)
.startOf('quarter')
.format('YYYY-MM-DD HH:mm:ss');
const end = moment()
.year(year)
.quarter(quarter)
.endOf('quarter')
.format('YYYY-MM-DD HH:mm:ss');
return { start, end };
}
/**
* 查询指定时间段的企业经营信息并计算总营收
* @param start 开始时间
* @param end 结束时间
* @returns 总营收
*/
async function calculateRevenue(start: string, end: string) {
const data = await selectData(
OPERATIONALDATATYPE.查询多个,
TABLENAME.企业经营信息,
{ annual: { "%between%": [start, end] } },
["BI"] // BI 字段表示营收
);
let totalRevenue = 0;
data.forEach(info => {
if (info.BI) {
totalRevenue += parseFloat(info.BI);
}
});
return totalRevenue;
}
export async function getZhyy() {
// let zhyy = {
// 在孵企业数据:{dataList:[], titleList:['key', 'value']},
......@@ -443,26 +506,19 @@ export async function getZhyy() {
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);
// 查询本月新增就业数据
let currentMonthNewJobs = await selectData(
OPERATIONALDATATYPE.查询多个,
TABLENAME.参保记录,
{ annual: { "%between%": [startOfMonth.toISOString(), endOfMonth.toISOString()] } },
null
);
let currentMonthNewJobs = await selectData(OPERATIONALDATATYPE.查询多个,TABLENAME.参保记录,{ annual: { "%between%": [startOfMonth.toISOString(), endOfMonth.toISOString()] } },null);
// 查询去年同期新增就业数据
let lastYearMonthNewJobs = await selectData(
OPERATIONALDATATYPE.查询多个,
TABLENAME.参保记录,
{ annual: { "%between%": [startOfLastYearMonth.toISOString(), endOfLastYearMonth.toISOString()] } },
null
);
let lastYearMonthNewJobs = await selectData(OPERATIONALDATATYPE.查询多个,TABLENAME.参保记录,{ annual: { "%between%": [startOfLastYearMonth.toISOString(), endOfLastYearMonth.toISOString()] } },null);
// 计算本月新增就业人数
let currentMonthJobCount = 0;
currentMonthNewJobs.forEach(info => {
......@@ -474,6 +530,7 @@ export async function getZhyy() {
if (info.boshiyishang) itemCount += parseInt(info.boshiyishang);
currentMonthJobCount += itemCount;
});
// 计算去年同期新增就业人数
let lastYearMonthJobCount = 0;
lastYearMonthNewJobs.forEach(info => {
......@@ -485,6 +542,7 @@ export async function getZhyy() {
if (info.boshiyishang) itemCount += parseInt(info.boshiyishang);
lastYearMonthJobCount += itemCount;
});
// 计算同比增长率
let growthRate = 0;
if (lastYearMonthJobCount !== 0) {
......@@ -496,6 +554,7 @@ export async function getZhyy() {
* 年度就业人数趋势分析
*/
let jiuYeList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.参保记录, {}, null);
let 年度就业人数趋势分析Map = {};
jiuYeList.forEach(info => {
let { eId, annual } = info;
......@@ -510,12 +569,11 @@ export async function getZhyy() {
if (!年度就业人数趋势分析Map[itemYear]) 年度就业人数趋势分析Map[itemYear] = { key: itemYear, value: 0 };
年度就业人数趋势分析Map[itemYear].value += itemCount;
});
let 年度就业人数趋势分析 = Object.values(年度就业人数趋势分析Map);
/**
* 产业规模分析todo
* 按季度展示quarter季度: 1:第一季度 2:第二季度 3:第三季度 4:第四季度
* 产业规模分析
*/
let jingYingThisYear = moment().startOf("year").format("YYYY-MM-DD HH:mm:ss");
let jingYingList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, { annual: jingYingThisYear }, null);
......@@ -525,6 +583,7 @@ export async function getZhyy() {
if (!产业规模企业Map[eId]) 产业规模企业Map[eId] = 0;
产业规模企业Map[eId] += parseFloat(BI);
});
let 产业规模分析List = [
{ num: 400, key: "超400万", value: 0 },
{ num: 300, key: "300-400万", value: 0 },
......@@ -548,7 +607,6 @@ export async function getZhyy() {
在孵企业营收占比.push({ key, value });
})
let zhyy = {
园区概况: { dataList: 园区概况, title: ["key", "value"] },
在孵企业数据: { dataList: 在孵企业数据, titleList: ['key', 'value'] },
......@@ -563,14 +621,13 @@ export async function getZhyy() {
// 企业服务: { dataList: 企业服务, titleList: ['key', 'value'] },
// 企业服务类型: { dataList: fuWuQiYeTypeList, titleList: ['key', 'value'] },
荣誉资质: { dataList: 荣誉资质, titleList: ['key', 'value'] },
荣誉资质图片: 荣誉资质图片,
// 荣誉资质图片: 荣誉资质图片,
就业分析: {
dataList: [
{ key: "本月新增就业", value: `${currentMonthJobCount}人` },
{ key: "同比去年", value: `${growthRate.toFixed(2)}%` }
], titleList: ['key', 'value']
},
年度就业人数趋势分析: [{ name: "年度就业人数趋势分析", data: 年度就业人数趋势分析 }],
在孵企业营收占比: { dataList: 在孵企业营收占比, title: ["key", "value"] },
企业服务: {
......@@ -600,6 +657,7 @@ export async function getZhyy() {
}
}
}
return zhyy;
}
......
......@@ -25,14 +25,29 @@ export function qyszhxTableData() {
let blockDataList = onceSheetBecomeOfblockData('yuyiServer.xlsx', '企业数字画像');
let keyValueOrTitleList = ["企业基本情况", "企业基本数据", "企业标签", "企业名称", "知识产权", "企业员工画像", "企业汇总数据", "营收情况", "服务需求", "服务记录", "园区通知", "园区活动", "资质认证", "研发占比", "荣誉资质"];//适配 饼图 键值以及需要多个key的
let barChartList = ["历年人才招聘情况", "营收变化趋势", "活动变化趋势分析", "资质认证变化趋势"]; //适配 柱状图 折线图 , "资质认证"
let keyValueOrTitleList = ["企业基本情况", "企业基本数据", "企业标签", "企业名称", "知识产权", "企业员工画像", "企业汇总数据", "营收情况", "服务需求", "服务记录", "园区通知", "园区活动", "资质认证", "研发占比", "荣誉资质", "风险预警", "风险预警详情"];//适配 饼图 键值以及需要多个key的
let barChartList = ["历年人才招聘情况", "营收变化趋势", "活动变化趋势分析", "资质认证变化趋势", "企业面积预警动态"]; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList = ["风险预警", "小巨人", "高新企业", "专精特新", "企业动态", "服务记录_空间服务", "服务记录_工商服务", "服务记录_融资服务", "园区通知详情", "园区活动明细"];//适配 表格
let decollatePlanarList = ["小巨人", "高新企业", "专精特新", "企业动态", "服务记录_空间服务", "服务记录_工商服务", "服务记录_融资服务", "园区通知详情", "园区活动明细"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function fxyjTableData() {
let blockDataList = onceSheetBecomeOfblockData('yuyiServer.xlsx', '风险预警');
let keyValueOrTitleList = ["风险预警",];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList = [];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
}
\ No newline at end of file
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