Commit a4f60e0a by chenjinjing

no message

parent af096383
...@@ -3,5 +3,6 @@ ...@@ -3,5 +3,6 @@
<dbPort>40012</dbPort> <dbPort>40012</dbPort>
<dbHost>192.168.0.105</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> -->
<imgPath>http://127.0.0.1:40015</imgPath>
</config> </config>
...@@ -9,12 +9,115 @@ import { getQyszhx } from '../data/db/qyszhx'; ...@@ -9,12 +9,115 @@ import { getQyszhx } from '../data/db/qyszhx';
export async function getData(req, res) { export async function getData(req, res) {
let eId = req.body.eId; let eId = req.body.eId;
let dbData = await getQyszhx(eId); let dbData = await getQyszhx(eId);
let excelData = qyszhxTableData(); let excelData = qyszhxTableData();
let ret:any = {}; let ret:any = {};
let qyjbqkPackageData = keyValuePackage(dbData['企业基本情况'].dataList);
let qyjbqk = [];
qyjbqkPackageData.forEach( info => {
let {key, value} = info;
if (key == "企业图片") {
info.value = `${systemConfig.imgPath}/${value}`;
}
qyjbqk.push(info);
})
ret['qyjbqk'] = getKeyValueOut('企业基本情况', qyjbqk);
let qyjbsjPackageData = keyValuePackage(dbData['企业基本数据'].dataList, "false");
ret['qyjbsj'] = getKeyValueOut('企业基本数据', qyjbsjPackageData);
let qybqPackageData = stringListPackage(dbData['企业标签'].dataList);
ret['qybq'] = getStringOut('企业标签', qybqPackageData);
let zscqPackageData = keyValuePackage(dbData['知识产权'].dataList);
ret['zscq'] = getKeyValueOut('知识产权', zscqPackageData);
let qyyghxPackageData = keyValuePackage(dbData['企业员工画像'].dataList);
ret['qyyghx'] = getKeyValueOut('企业员工画像', qyyghxPackageData);
let lnrczpqkPackageData = onceYBarChartPackage( excelData['历年人才招聘情况'], '','');
ret['lnrczpqk'] = getOnceYBarChartOut('历年人才招聘情况', lnrczpqkPackageData);
let qyhzsjPackageData = keyValuePackage(dbData['企业汇总数据'].dataList);
ret['qyhzsj'] = getKeyValueOut('企业汇总数据', qyhzsjPackageData);
let xjrTableData = tablePackage(excelData["小巨人"].headerList[0], excelData["小巨人"].bodyList);
ret['xjr'] = getTableOut( '小巨人', xjrTableData);
let gxqyTableData = tablePackage(excelData["高新企业"].headerList[0], excelData["高新企业"].bodyList);
ret['gxqy'] = getTableOut( '高新企业', gxqyTableData);
let zjtxTableData = tablePackage(excelData["专精特新"].headerList[0], excelData["专精特新"].bodyList);
ret['zjtx'] = getTableOut( '专精特新', zjtxTableData);
let ysqkPackageData = keyValuePackage(dbData['营收情况'].dataList);
ret['ysqk'] = getKeyValueOut('营收情况', ysqkPackageData);
let ysbhqsPackageData = onceYBarChartPackage( dbData['营收变化趋势'], '','');
ret['ysbhqs'] = getOnceYBarChartOut('营收变化趋势', ysbhqsPackageData);
let qydtTableData = tablePackage(dbData["企业动态"].headerList[0], dbData["企业动态"].bodyList);
// let qydt = {dataList:[], titleList:qydtTableData.titleList};
// qydtTableData.dataList.forEach(info => {
// let {A} = info;
// let imgUrl = ;
// info["A"] = imgUrl;
// qydt.dataList.push(info);
// })
ret['qydt'] = getTableOut( '企业动态', qydtTableData);
let fwxqPackageData = keyValuePackage(dbData['服务需求'].dataList, "false");
ret['fwxq'] = getKeyValueOut('服务需求', fwxqPackageData);
let hdbhqsfxPackageData = onceYBarChartPackage( dbData['活动变化趋势分析'], '','');
ret['hdbhqsfx'] = getOnceYBarChartOut('活动变化趋势分析', hdbhqsfxPackageData);
let fwjl_kjfwTableData = tablePackage(dbData["服务记录_空间服务"].headerList[0], dbData["服务记录_空间服务"].bodyList);
ret['fwjl_kjfw'] = getTableOut( '服务记录_空间服务', fwjl_kjfwTableData);
let fwjl_gsfwTableData = tablePackage(dbData["服务记录_工商服务"].headerList[0], dbData["服务记录_工商服务"].bodyList);
ret['fwjl_gsfw'] = getTableOut( '服务记录_工商服务', fwjl_gsfwTableData);
let fwjl_rzfwTableData = tablePackage(dbData["服务记录_融资服务"].headerList[0], dbData["服务记录_融资服务"].bodyList);
ret['fwjl_rzfw'] = getTableOut( '服务记录_融资服务', fwjl_rzfwTableData);
let fwjlPackageData = keyValuePackage(dbData['服务记录'].dataList);
ret['fwjl'] = getKeyValueOut('服务记录', fwjlPackageData);
let yqtzPackageData = keyValuePackage(excelData['园区通知'].dataList);
ret['yqtz'] = getKeyValueOut('园区通知', yqtzPackageData);
let yqtzxqTableData = tablePackage(excelData["园区通知详情"].headerList[0], excelData["园区通知详情"].bodyList);
let yqtzxq = {dataList:[], titleList:yqtzxqTableData.titleList};
yqtzxqTableData.dataList.forEach(info => {
let {A} = info;
let imgUrl = `${systemConfig.imgPath}/${A}`;
info["A"] = imgUrl;
yqtzxq.dataList.push(info);
})
ret['yqtzxq'] = getTableOut( '园区通知详情', yqtzxq);
let yqhdPackageData = keyValuePackage(excelData['园区活动'].dataList);
ret['yqhd'] = getKeyValueOut('园区活动', yqhdPackageData);
let yqhdmxTableData = tablePackage(excelData["园区活动明细"].headerList[0], excelData["园区活动明细"].bodyList);
ret['yqhdmx'] = getTableOut( '园区活动明细', yqhdmxTableData);
res.send(ret);
}
export async function getData备份(req, res) {
let eId = req.body.eId;
let excelData = qyszhxTableData();
let ret:any = {};
let qyjbqkPackageData = keyValuePackage(excelData['企业基本情况'].dataList); let qyjbqkPackageData = keyValuePackage(excelData['企业基本情况'].dataList);
let qyjbqk = []; let qyjbqk = [];
qyjbqkPackageData.forEach( info => { qyjbqkPackageData.forEach( info => {
...@@ -107,4 +210,4 @@ export async function getData(req, res) { ...@@ -107,4 +210,4 @@ export async function getData(req, res) {
ret['yqhdmx'] = getTableOut( '园区活动明细', yqhdmxTableData); ret['yqhdmx'] = getTableOut( '园区活动明细', yqhdmxTableData);
res.send(ret); res.send(ret);
} }
\ No newline at end of file \ No newline at end of file
...@@ -297,7 +297,8 @@ export enum NEEDCATEGORY { ...@@ -297,7 +297,8 @@ export enum NEEDCATEGORY {
法律服务, 法律服务,
知识产权, 知识产权,
工商服务, 工商服务,
融资服务 融资服务,
空间服务
} }
......
import moment = require("moment");
export function getKeyValue(data) {
let result = [];
for (let key in data) {
result.push({key, value:data[key]});
}
return result;
}
export function getChart(data) {
let result = [];
for(let key in data) {
result.push({name:key, data:data[key]})
}
return result;
}
export 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;
}
export function getYearList() {
// 获取当前年份
const currentYear = new Date().getFullYear();
// 初始化一个空数组来存储年份
const years = [];
// 使用一个循环来添加当前年份到6年后的每一个年份到数组中
for (let i = 0; i <= 6; i++) {
years.push(currentYear + i);
}
return years;
}
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
import moment = require("moment"); import moment = require("moment");
import { FUHUASTATE, INDUSTRY, MOVEOUTTYPE, OPERATIONALDATATYPE, STATE, TABLENAME } from "../../config/enum"; import { FUHUASTATE, INDUSTRY, MOVEOUTTYPE, OPERATIONALDATATYPE, STATE, TABLENAME } from "../../config/enum";
import { selectData, selectManyTableData } from "./operationalData"; import { selectData, selectManyTableData } from "./operationalData";
import { getChart, getKeyValue, getMonthList, getYearList } from "./out";
export async function getEnterprise() { export async function getEnterprise() {
...@@ -301,7 +302,7 @@ function getQybhqk(data) { ...@@ -301,7 +302,7 @@ function getQybhqk(data) {
* 企业变化情况——变化趋势 * 企业变化情况——变化趋势
*/ */
function getQybhqkbhqs(data){ function getQybhqkbhqs(data){
let year = ["2019", "2020", "2021", "2022", "2023", "2024"]; let year = getYearList();
let hbqs = { let hbqs = {
"企业数":[] "企业数":[]
} }
...@@ -491,7 +492,7 @@ function getQyzzfl() { ...@@ -491,7 +492,7 @@ function getQyzzfl() {
* 企业人才 * 企业人才
*/ */
async function getQyrc() { async function getQyrc() {
let year = ["2019", "2020", "2021", "2022", "2023", "2024"]; let year = getYearList();
let qyrc = { let qyrc = {
"就业人数":[], "就业人数":[],
"创业团队分布":[] "创业团队分布":[]
...@@ -514,56 +515,5 @@ async function getQyrc() { ...@@ -514,56 +515,5 @@ async function getQyrc() {
} }
function getKeyValue(data) {
let result = [];
for (let key in data) {
result.push({key, value:data[key]});
}
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;
}
import { DEGREE, OPERATIONALDATATYPE, TABLENAME } from "../../config/enum"; import moment = require("moment");
import { AWARDLEVEL, DEGREE, FINANCINGROUNDS, NEEDCATEGORY, OPERATIONALDATATYPE, TABLENAME } from "../../config/enum";
import { selectData, selectManyTableData } from "./operationalData"; import { selectData, selectManyTableData } from "./operationalData";
import { getChart, getKeyValue, getYearList } from "./out";
import { changeEnumValue } from "../../tools/eccEnum";
...@@ -22,8 +25,6 @@ export async function getQyszhx(eId) { ...@@ -22,8 +25,6 @@ export async function getQyszhx(eId) {
服务记录:{dataList:[], titleList:['key', 'value']}, 服务记录:{dataList:[], titleList:['key', 'value']},
} }
let nowTime = new Date().valueOf();
/**数据库查询 */ /**数据库查询 */
let 企业基础信息 = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, null); let 企业基础信息 = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, null);
...@@ -49,6 +50,28 @@ export async function getQyszhx(eId) { ...@@ -49,6 +50,28 @@ export async function getQyszhx(eId) {
let 创业团队联查includeConf = {}; let 创业团队联查includeConf = {};
创业团队联查includeConf[TABLENAME.创业团队] = {cloum:创业团队Column, where:{}} 创业团队联查includeConf[TABLENAME.创业团队] = {cloum:创业团队Column, where:{}}
let 创业团队信息 = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {eId}, [], 创业团队联查includeConf); let 创业团队信息 = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {eId}, [], 创业团队联查includeConf);
let 企业经营Column = ["mId", "eId", "annual", "BI", "TXP", "RD", "createTime", "state"];
let 企业经营联查includeConf = {};
企业经营联查includeConf[TABLENAME.企业经营信息] = {cloum:企业经营Column, where:{}}
let 企业经营信息 = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {eId}, [], 企业经营联查includeConf);
let 企业荣誉Column = ["hId", "eId", "awardName", "awardingUnit", "awardTime", "awardLevel", "awardImg"];
let 企业荣誉联查includeConf = {};
企业荣誉联查includeConf[TABLENAME.企业荣誉] = {cloum:企业荣誉Column, where:{}}
let 企业荣誉信息 = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {eId}, [], 企业荣誉联查includeConf);
let 企业融资Column = ["rId", "eId", "financingAmount", "financingRounds", "fuHuaQiInvestment", "fuHuaQiInvestmentStyle",
"fuHuaQiInvestmentAmount", "investmentDate", "investmentInstitutionsName", "valuation"];
let 企业融资联查includeConf = {};
企业融资联查includeConf[TABLENAME.企业融资] = {cloum:企业融资Column, where:{}}
let 企业融资信息 = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {eId}, [], 企业融资联查includeConf);
let 企业服务Column = ["esId", "eId", "needCategory", "needContent", "applyTime", "followUpStatus", "resolveTime", "fangKui",
"shouLiTime", "outcome", "desc"];
let 企业服务联查includeConf = {};
企业服务联查includeConf[TABLENAME.企业服务表] = {cloum:企业服务Column, where:{}}
let 企业服务信息 = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {eId}, [], 企业服务联查includeConf);
//企业基本情况 //企业基本情况
let qyjbqk = { let qyjbqk = {
...@@ -59,13 +82,13 @@ export async function getQyszhx(eId) { ...@@ -59,13 +82,13 @@ export async function getQyszhx(eId) {
//企业基本数据 //企业基本数据
let qyjbsj = { let qyjbsj = {
注册时间:企业基础信息.logonTime, 注册时间:moment(企业基础信息.logonTime).format("YYYY-MM-DD"),
迁入时间:"", 迁入时间:"-",
首次入孵时间:企业孵化信息[0].enterprise_fuhuas.startTime 首次入孵时间:moment(企业孵化信息[0].enterprise_fuhuas.startTime).format("YYYY-MM-DD")
}; };
qyszhx.企业基本数据.dataList = getKeyValue(qyjbsj); qyszhx.企业基本数据.dataList = getKeyValue(qyjbsj);
//企业标签 //企业标签 todo
let qybq = { let qybq = {
} }
...@@ -78,6 +101,45 @@ export async function getQyszhx(eId) { ...@@ -78,6 +101,45 @@ export async function getQyszhx(eId) {
let qyyghx = get企业员工画像(创业团队信息); let qyyghx = get企业员工画像(创业团队信息);
qyszhx.企业员工画像.dataList = getKeyValue(qyyghx); qyszhx.企业员工画像.dataList = getKeyValue(qyyghx);
//企业汇总数据
let qyhzsj = {
企业认证:0, //todo
一级专利:zscq.一级专利,
}
qyszhx.企业汇总数据.dataList = getKeyValue(qyhzsj);
//营收情况
let {ysqk, ysbhqs} = get营收情况(企业经营信息);
qyszhx.营收情况.dataList = getKeyValue(ysqk);
//营收变化趋势
qyszhx.营收变化趋势 = ysbhqs;
//企业动态
let qydt = get企业动态(企业荣誉信息);
qyszhx.企业动态.bodyList = qydt;
//服务需求
let fwxq = get服务需求(企业融资信息);
qyszhx.服务需求.dataList = getKeyValue(fwxq);
//活动变化趋势分析
let hdbhqsfx = get活动变化趋势分析(企业融资信息);
qyszhx.活动变化趋势分析 = hdbhqsfx;
//服务记录_空间服务
let fwjlxx = get服务记录(企业服务信息);
qyszhx.服务记录_空间服务.bodyList = fwjlxx.空间服务;
qyszhx.服务记录_工商服务.bodyList = fwjlxx.工商服务;
qyszhx.服务记录_融资服务.bodyList = fwjlxx.融资服务;
//服务记录
let fwjl = {
空间服务次数:fwjlxx.空间服务.length,
工商服务次数:fwjlxx.工商服务.length,
融资服务次数:fwjlxx.融资服务.length,
}
qyszhx.服务记录.dataList = getKeyValue(fwjl);
return qyszhx; return qyszhx;
} }
...@@ -92,10 +154,13 @@ function get知识产权(data) { ...@@ -92,10 +154,13 @@ function get知识产权(data) {
} }
data.forEach( info => { data.forEach( info => {
zscq.一级专利 += info.classIPatent; let {enterprise_patents} = info;
zscq.二级专利 += info.secondClassPatent enterprise_patents.forEach( patents => {
zscq.三级专利 += info.thirdPentent; zscq.一级专利 += patents.classIPatent;
zscq.海外专利 += info.alienPatent; zscq.二级专利 += patents.secondClassPatent
zscq.三级专利 += patents.thirdPentent;
zscq.海外专利 += patents.alienPatent;
})
}) })
return zscq; return zscq;
...@@ -127,17 +192,167 @@ async function get企业员工画像(data) { ...@@ -127,17 +192,167 @@ async function get企业员工画像(data) {
} }
function get营收情况(data) {
let ysqk = {
累计营收:0,
累计研发投入:0,
累计纳税:0
}
let ysbhqsInfo = {
营业收入:[],
研发投入:[],
纳税金额:[],
}
let year = getYearList();
data.forEach( info => {
let {enterprise_manages} = info;
enterprise_manages.forEach( manage => {
ysqk.累计营收 += parseFloat(manage.BI);
ysqk.累计研发投入 += parseFloat(manage.RD);
ysqk.累计纳税 += parseFloat(manage.TXP);
})
})
for (let i = 0; i < year.length; i++) {
let 营业收入 = 0;
let 研发投入 = 0;
let 纳税金额 = 0;
data.forEach( info => {
let {enterprise_manages} = info;
enterprise_manages.forEach( manage => {
let thisAnnual = moment(manage.annual).year();
let thisYear = parseInt(year[i]);
if (thisAnnual === thisYear) {
营业收入 += parseFloat(manage.BI);
研发投入 += parseFloat(manage.RD);
纳税金额 += parseFloat(manage.TXP);
}
})
})
ysbhqsInfo.营业收入.push({key:year[i], value:营业收入});
ysbhqsInfo.研发投入.push({key:year[i], value:研发投入});
ysbhqsInfo.纳税金额.push({key:year[i], value:纳税金额});
}
let ysbhqs = getChart(ysbhqsInfo);
return {ysqk, ysbhqs};
}
function get企业动态(data) {
let qydt = [];
data.forEach( info => {
let {enterprise_honors} = info;
enterprise_honors.forEach( honors => {
let awardLevel = changeEnumValue(AWARDLEVEL, honors.awardLevel);
let awardImg = JSON.parse(honors.awardImg);
qydt.push([awardImg[0], honors.awardName, honors.awardTime, honors.awardingUnit, awardLevel]);
})
})
return qydt;
}
function get服务需求(data) {
let newestFinancing:any = {};
data.forEach( info => {
let {enterprise_financings} = info;
let enterprise_financingsData = [];
enterprise_financings.forEach( financings => {
enterprise_financingsData.push({
financingAmount:financings.financingAmount,
financingRounds:financings.financingRounds,
investmentDate:new Date(financings.investmentDate).valueOf(),
investmentInstitutionsName:financings.investmentInstitutionsName
})
})
//获取最新时间的融资信息
enterprise_financingsData.sort( (a, b) => {
return b.investmentDate - a.investmentDate;
})
newestFinancing = enterprise_financingsData[0];
})
let fwxq = {
融资金额:newestFinancing.financingAmount,
融资轮次:changeEnumValue(FINANCINGROUNDS, newestFinancing.financingRounds),
融资时间:moment(newestFinancing.investmentDate).format("YYYY-MM-DD"),
投资机构:newestFinancing.investmentInstitutionsName
};
return fwxq;
}
function getKeyValue(data) { function get活动变化趋势分析(data) {
let result = []; let hdbhqsfxInfo = {
for (let key in data) { 融资额:[],
result.push({key, value:data[key]}); 融资事件:[],
} }
let year = getYearList();
for (let i = 0; i < year.length; i++) {
let 融资额 = 0;
let 融资事件 = 0;
data.forEach( info => {
let {enterprise_financings} = info;
enterprise_financings.forEach( financings => {
let thisAnnual = moment(financings.investmentDate).year();
let thisYear = parseInt(year[i]);
if (thisAnnual === thisYear) {
融资额 += parseFloat(financings.financingAmount);
融资事件 += 1;
}
})
})
hdbhqsfxInfo.融资额.push({key:year[i], value:融资额});
hdbhqsfxInfo.融资事件.push({key:year[i], value:融资事件});
}
let hdbhqsfx = getChart(hdbhqsfxInfo);
return hdbhqsfx;
}
function get服务记录(data) {
let fwjl = {
空间服务:[],
工商服务:[],
融资服务:[]
};
data.forEach( info => {
let {enterprise_services} = info;
enterprise_services.forEach( service => {
let needCategory = changeEnumValue(NEEDCATEGORY, service.needCategory);
if ( service.needCategory == NEEDCATEGORY.空间服务) {
fwjl.空间服务.push([needCategory, service.resolveTime, service.needContent])
} else if ( service.needCategory == NEEDCATEGORY.工商服务) {
fwjl.工商服务.push([needCategory, service.resolveTime, service.needContent])
} else if ( service.needCategory == NEEDCATEGORY.融资服务) {
fwjl.融资服务.push([needCategory, service.resolveTime, service.needContent])
}
})
})
return result; return fwjl;
} }
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