Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yuyiViewServer
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
node_server
yuyiViewServer
Commits
e956cce0
Commit
e956cce0
authored
Feb 11, 2025
by
lixinming
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://123.207.147.179:8888/node_server/yuyiViewServer
parents
96cef49f
ebeb7d76
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
792 additions
and
72 deletions
+792
-72
serverConfig.xml
serverConfig.xml
+2
-1
jxgljsc.ts
src/biz/jxgljsc.ts
+3
-1
qyszhx.ts
src/biz/qyszhx.ts
+103
-0
enum.ts
src/config/enum.ts
+2
-1
jxgljsc.ts
src/data/db/jxgljsc.ts
+380
-0
out.ts
src/data/db/out.ts
+68
-0
qyfw.ts
src/data/db/qyfw.ts
+3
-53
qyszhx.ts
src/data/db/qyszhx.ts
+231
-16
No files found.
serverConfig.xml
View file @
e956cce0
...
...
@@ -3,5 +3,6 @@
<dbPort>
40012
</dbPort>
<dbHost>
192.168.0.105
</dbHost>
<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>
src/biz/jxgljsc.ts
View file @
e956cce0
import
{
getJxgljsc
}
from
'../data/db/jxgljsc'
;
import
{
jxgljscTableData
}
from
'../data/table/jxgljscData'
;
import
{
doubleYBarCharPackage
,
keyValuePackage
,
onceYBarChartPackage
,
rankPackage
,
tablePackage
}
from
'../dataPackage/inFrontOut'
;
import
{
getDoubleYBarChartOut
,
getKeyValueOut
,
getOnceYBarChartOut
,
getTableOut
}
from
'../dataPackage/out'
;
/* 绩效管理驾驶舱 */
export
function
getData
(
req
,
res
)
{
export
async
function
getData
(
req
,
res
)
{
let
dbList
=
await
getJxgljsc
();
let
excelData
=
jxgljscTableData
();
let
ret
:
any
=
{};
...
...
src/biz/qyszhx.ts
View file @
e956cce0
...
...
@@ -15,6 +15,109 @@ export async function getData(req, res) {
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
qyjbqk
=
[];
qyjbqkPackageData
.
forEach
(
info
=>
{
...
...
src/config/enum.ts
View file @
e956cce0
...
...
@@ -282,7 +282,8 @@ export enum NEEDCATEGORY {
法律服务
,
知识产权
,
工商服务
,
融资服务
融资服务
,
空间服务
}
...
...
src/data/db/jxgljsc.ts
View file @
e956cce0
/**
* 绩效管理驾驶仓
*/
import
moment
=
require
(
"moment"
)
import
{
FUHUASTATE
,
INDUSTRY
,
MOVEOUTTYPE
,
OPERATIONALDATATYPE
,
TABLENAME
,
FINANCINGROUNDS
}
from
"../../config/enum"
;
import
{
selectData
,
selectManyTableData
}
from
"./operationalData"
;
import
{
keyValuePackage
}
from
"../../dataPackage/inFrontOut"
;
import
{
info
}
from
"console"
;
export
async
function
getJxgljsc
()
{
let
jxgljsc
=
{
"cyjg"
:
{
dataList
:
[],
titleList
:
[
'key'
,
'value'
]
},
//产业结构
"rcyj"
:
{
dataList
:
[],
titleList
:
[
'key'
,
'value'
]
},
//人才引进
"fhqhzsj"
:
{
dataList
:
[],
titleList
:
[
'key'
,
'value'
]
},
//孵化器汇总数据
"qydt"
:
{
dataList
:
[],
titleList
:
[
'key'
,
'value'
]
},
//企业动态
"zfqybhqs"
:
[],
//在孵企业变化趋势
"zysje"
:
{
dataList
:
[],
titleList
:
[
'key'
,
'value'
]
},
//总营收金额
"zfqyzys"
:
{
dataList
:
[],
titleList
:
[
'key'
,
'value'
]
},
//在孵企业总营收
"tzlx"
:
{
dataList
:
[],
titleList
:
[
'key'
,
'value'
]
},
//投资类型
"zfqyrzqk"
:
{
dataList
:
[],
titleList
:
[
'key'
,
'value'
]
},
//在孵企业融资情况
"qyfhl"
:
{
dataList
:
[],
titleList
:
[
'key'
,
'value'
]
},
//企业孵化率
"qyfhs"
:
{
dataList
:
[],
titleList
:
[
'key'
,
'value'
]
},
//企业孵化数
}
// 获取当前时间
let
nowTime
=
moment
().
format
(
'YYYY-MM-DD HH:mm:ss'
);
let
fhColumn
=
[
"fId"
,
"eId"
,
"startTime"
,
"endTime"
,
"state"
,
"virtualCause"
,
"virtualCauseDes"
,
"moveOutType"
,
"moveOutTrace"
,
"moveOutCause"
,
"moveOutTime"
,
"graduationTime"
];
//获取在孵企业
let
在孵
dbList
=
await
selectData
(
OPERATIONALDATATYPE
.
查询多个
,
TABLENAME
.
企业孵化信息
,
{
"endTime"
:
{
"%gt%"
:
nowTime
}
},
fhColumn
);
jxgljsc
.
cyjg
.
dataList
=
await
cyjg
();
//产业结构
jxgljsc
.
rcyj
.
dataList
=
await
rcyj
();
//人才引进
jxgljsc
.
fhqhzsj
.
dataList
=
await
fhqhzsj
();
//孵化器汇总数据
jxgljsc
.
qydt
.
dataList
=
await
qydt
();
//企业动态
jxgljsc
.
zfqybhqs
=
await
zfqybhqs
(
在孵
dbList
,
jxgljsc
);
//在孵企业变化趋势
jxgljsc
.
zysje
.
dataList
=
await
zysje
();
//总营收金额
jxgljsc
.
zfqyzys
.
dataList
=
await
zfqyzys
(
在孵
dbList
,
jxgljsc
,
在孵
dbList
);
//在孵企业总营收
jxgljsc
.
tzlx
.
dataList
=
await
tzlx
();
//投资类型
jxgljsc
.
zfqyrzqk
.
dataList
=
await
zfqyrzqk
();
//在孵企业融资情况
jxgljsc
.
qyfhl
.
dataList
=
await
qyfhl
();
//企业孵化率
jxgljsc
.
qyfhs
.
dataList
=
await
qyfhs
();
//企业孵化数
return
jxgljsc
;
}
//产业结构
async
function
cyjg
()
{
let
result
=
[];
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
},
null
);
result
.
push
({
key
:
keyStr
,
value
:
count
})
}
}
return
result
;
}
//人才引进
async
function
rcyj
()
{
let
rcyj
=
{
"国家级人才"
:
0
,
"上海市级人才"
:
0
,
"浦东区级人才"
:
0
,
"海外人才"
:
0
,
"博士人才"
:
0
}
// 分别获取不同表的数据并合并处理
let
创业团队
List
=
await
selectData
(
OPERATIONALDATATYPE
.
查询多个
,
TABLENAME
.
创业团队
,
{},
null
);
let
result
=
[];
for
(
let
rcyjItem
of
[
创业团队
List
])
{
if
(
rcyjItem
.
title
==
"国家级人才"
)
{
rcyj
.
国家级人才
+=
1
;
}
else
if
(
rcyjItem
.
city
==
"上海市"
)
{
rcyj
.
上海市级人才
+=
1
;
}
else
if
(
rcyjItem
.
city
==
"浦东区"
)
{
rcyj
.
浦东区级人才
+=
1
;
}
else
if
(
rcyjItem
.
city
==
"海外"
)
{
rcyj
.
海外人才
+=
1
;
}
else
if
(
rcyjItem
.
title
==
"博士"
)
{
rcyj
.
博士人才
+=
1
;
}
// 将 rcyj 对象转换为数组
let
result
=
Object
.
entries
(
rcyj
).
map
(([
key
,
value
])
=>
({
key
:
key
,
value
:
value
}));
}
return
result
;
}
//孵化器汇总数据
async
function
fhqhzsj
()
{
let
result
=
[];
let
fhqhzsj
=
{
"在孵企业"
:
0
,
"在孵面积"
:
0
}
let
孵化信息
dbList
=
await
selectData
(
OPERATIONALDATATYPE
.
查询多个
,
TABLENAME
.
企业孵化信息
,
{},
null
);
孵化信息
dbList
.
forEach
(
item
=>
{
fhqhzsj
.
在孵面积
+=
parseInt
(
item
.
area
);;
});
let
fhColumn
=
[
"fId"
,
"eId"
,
"startTime"
,
"endTime"
,
"state"
,
"virtualCause"
,
"virtualCauseDes"
,
"moveOutType"
,
"moveOutTrace"
,
"moveOutCause"
,
"moveOutTime"
,
"graduationTime"
];
//获取所有企业孵化表联查企业信息表
let
孵化企业
includeConf
=
{};
let
孵化企业
Clumn
=
[
"enterpriseName"
,
"industry"
];
孵化企业
includeConf
[
TABLENAME
.
企业基础信息表
]
=
{
cloum
:
孵化企业
Clumn
,
where
:
{}
}
let
孵化企业
dbList
=
await
selectManyTableData
(
OPERATIONALDATATYPE
.
多表联查
,
TABLENAME
.
企业孵化信息
,
{},
fhColumn
,
孵化企业
includeConf
);
fhqhzsj
.
在孵企业
=
孵化企业
dbList
.
length
;
result
.
push
({
key
:
"在孵企业"
,
value
:
fhqhzsj
.
在孵企业
});
result
.
push
({
key
:
"在孵面积"
,
value
:
fhqhzsj
.
在孵面积
});
return
result
;
}
//企业动态---------
async
function
qydt
()
{
let
result
=
[];
let
qydt
=
{
"本月新加入在孵企业"
:
0
,
"同比上月"
:
0
,
"环比去年"
:
0
}
let
qydtList
=
await
selectData
(
OPERATIONALDATATYPE
.
查询多个
,
TABLENAME
.
企业孵化信息
,
{},
null
);
//本月新加入在孵企业
let
nowTime
=
moment
().
format
(
'YYYY-MM-DD HH:mm:ss'
);
let
monthAgo
=
moment
().
subtract
(
1
,
'month'
).
format
(
'YYYY-MM-DD HH:mm:ss'
);
let
monthAgoList
=
qydtList
.
filter
(
item
=>
{
return
moment
(
item
.
createTime
)
>
moment
(
monthAgo
)
&&
moment
(
item
.
createTime
)
<
moment
(
nowTime
);
});
qydt
.
本月新加入在孵企业
=
monthAgoList
.
length
;
//同比上月
let
monthAgo2
=
moment
().
subtract
(
2
,
'month'
).
format
(
'YYYY-MM-DD HH:mm:ss'
);
let
monthAgo2List
=
qydtList
.
filter
(
item
=>
{
return
moment
(
item
.
createTime
)
>
moment
(
monthAgo2
)
&&
moment
(
item
.
createTime
)
<
moment
(
monthAgo
);
});
qydt
.
同比上月
=
monthAgoList
.
length
-
monthAgo2List
.
length
;
//环比去年
let
yearAgo
=
moment
().
subtract
(
1
,
'year'
).
format
(
'YYYY-MM-DD HH:mm:ss'
);
let
yearAgoList
=
qydtList
.
filter
(
item
=>
{
return
moment
(
item
.
createTime
)
>
moment
(
yearAgo
)
&&
moment
(
item
.
createTime
)
<
moment
(
monthAgo
);
});
qydt
.
环比去年
=
monthAgoList
.
length
-
yearAgoList
.
length
;
result
.
push
({
key
:
"本月新加入在孵企业"
,
value
:
qydt
.
本月新加入在孵企业
});
result
.
push
({
key
:
"同比上月"
,
value
:
qydt
.
同比上月
});
result
.
push
({
key
:
"环比去年"
,
value
:
qydt
.
环比去年
});
return
result
;
}
async
function
zfqybhqs
(
data
,
在孵
dbList
)
{
let
企业孵化信息
List
=
await
selectData
(
OPERATIONALDATATYPE
.
查询多个
,
TABLENAME
.
企业孵化信息
,
{},
null
);
let
result
=
[];
let
year
=
[
"2017"
,
"2018"
,
"2019"
,
"2020"
,
"2021"
,
"2022"
,
"2023"
,
"2024"
];
let
zfqybhqsData
=
{
"在孵企业"
:
[]
}
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
;
});
zfqybhqsData
.
在孵企业
.
push
({
key
:
year
[
i
],
value
:
count
});
}
let
zfqybhqs
=
getChart
(
zfqybhqsData
);
function
getChart
(
data
)
{
let
result
=
[];
for
(
let
key
in
data
)
{
result
.
push
({
name
:
key
,
data
:
data
[
key
]
})
}
}
return
result
;
}
//总营收金额
async
function
zysje
()
{
let
result
=
[];
let
zysjeList
=
await
selectData
(
OPERATIONALDATATYPE
.
查询多个
,
TABLENAME
.
企业经营信息
,
{},
null
);
//获取总营收金额
let
zysje
=
0
;
zysjeList
.
forEach
(
item
=>
{
zysje
+=
parseFloat
(
item
.
totalRevenue
);
});
result
.
push
({
key
:
"总营收金额"
,
value
:
zysje
+
"千万元"
});
return
result
;
}
//在孵企业总营收
async
function
zfqyzys
(
在孵
dbList
:
any
[],
jxgljsc
:
any
,
data
:
any
[]
=
[])
{
let
result
=
[];
//在孵企业总营收
// let zfqyzys = getZfqyzys(在孵dbList);
// jxgljsc.zfqyzys.dataList = getKeyValue(zfqyzys);
let
zfqyzys
=
{
"500万以下"
:
0
,
"500万-1000万"
:
0
,
"1000万-2000万"
:
0
,
"2000万以上"
:
0
}
for
(
let
i
=
0
;
i
<
data
.
length
;
i
++
)
{
//获取在孵企业经营数据
let
经营信息
dbList
=
await
selectData
(
OPERATIONALDATATYPE
.
查询多个
,
TABLENAME
.
企业经营信息
,
{
eId
:
data
[
i
].
eId
},
null
);
经营信息
dbList
.
forEach
(
info
=>
{
//BI(单位万元)
if
(
info
.
BI
<
500
)
zfqyzys
[
"500万以下"
]
+=
1
;
else
if
(
info
.
BI
>=
500
&&
info
.
BI
<
1000
)
zfqyzys
[
"500万-1000万"
]
+=
1
;
else
if
(
info
.
BI
>=
1000
&&
info
.
BI
<
2000
)
zfqyzys
[
"1000万-2000万"
]
+=
1
;
else
zfqyzys
[
"2000万以上"
]
+=
1
;
})
}
// 将 zfqyzys 转换为键值对形式
result
=
getKeyValue
(
zfqyzys
);
return
result
;
function
getKeyValue
(
data
)
{
let
result
=
[];
for
(
let
key
in
data
)
{
result
.
push
({
key
,
value
:
data
[
key
]
});
}
return
result
;
}
}
//投资类型
async
function
tzlx
()
{
let
result
=
[];
let
融资
dbList
=
await
selectData
(
OPERATIONALDATATYPE
.
查询多个
,
TABLENAME
.
企业融资
,
{},
null
);
//获取投资类型
let
投资类型
=
{
"设备"
:
0
,
"租金"
:
0
,
"服务"
:
0
,
"其他"
:
0
};
融资
dbList
.
forEach
(
item
=>
{
let
type
=
item
.
type
;
if
(
type
===
"设备"
)
投资类型
.
设备
+=
1
;
else
if
(
type
===
"租金"
)
投资类型
.
租金
+=
1
;
else
if
(
type
===
"服务"
)
投资类型
.
服务
+=
1
;
else
投资类型
.
其他
+=
1
;
});
result
=
getKeyValue
(
投资类型
);
return
result
;
function
getKeyValue
(
data
)
{
let
result
=
[];
for
(
let
key
in
data
)
{
result
.
push
({
key
,
value
:
data
[
key
]
});
}
return
result
;
}
}
//在孵企业融资情况
async
function
zfqyrzqk
()
{
let
result
=
[];
for
(
let
key
in
FINANCINGROUNDS
)
{
let
anyKey
:
any
=
key
;
if
(
isNaN
(
anyKey
))
{
let
financingRounds
=
FINANCINGROUNDS
[
key
];
let
count
=
await
selectData
(
OPERATIONALDATATYPE
.
查询数据量
,
TABLENAME
.
企业融资
,
{},
null
);
result
.
push
({
key
:
key
,
value
:
count
})
}
}
return
result
;
}
//企业孵化率
async
function
qyfhl
()
{
let
result
=
[];
let
qyfhlList
=
await
selectData
(
OPERATIONALDATATYPE
.
查询多个
,
TABLENAME
.
企业孵化信息
,
{},
null
);
//获取企业孵化率
let
qyfhl
=
{
"企业孵化率"
:
0
,
"环比去年孵化率"
:
0
};
let
nowYear
=
new
Date
().
getFullYear
();
let
lastYear
=
nowYear
-
1
;
for
(
let
i
=
0
;
i
<
qyfhlList
.
length
;
i
++
)
{
let
item
=
qyfhlList
[
i
];
let
endTime
=
new
Date
(
item
.
endTime
).
getFullYear
();
let
startTime
=
new
Date
(
item
.
startTime
).
getFullYear
();
if
(
endTime
===
nowYear
)
{
qyfhl
.
企业孵化率
+=
1
;
if
(
startTime
<=
lastYear
&&
endTime
>=
lastYear
)
{
qyfhl
.
环比去年孵化率
+=
1
;
}
}
}
result
.
push
({
key
:
"企业孵化率"
,
value
:
qyfhl
.
企业孵化率
});
result
.
push
({
key
:
"环比去年孵化率"
,
value
:
qyfhl
.
环比去年孵化率
});
return
result
;
}
//企业孵化数
async
function
qyfhs
()
{
let
result
=
[];
let
企业孵化信息
List
=
await
selectData
(
OPERATIONALDATATYPE
.
查询多个
,
TABLENAME
.
企业孵化信息
,
{},
null
);
//获取企业孵化数
let
qyfhs
=
{
"小巨人"
:
0
,
"高企培育"
:
0
,
"高新企业"
:
0
,
"科技型中小企业"
:
0
,
"专精特精"
:
0
};
let
企业资质
List
=
await
selectData
(
OPERATIONALDATATYPE
.
查询多个
,
TABLENAME
.
企业资质
,
{},
null
);
for
(
let
i
=
0
;
i
<
企业孵化信息
List
.
length
;
i
++
)
{
let
item
=
企业孵化信息
List
[
i
];
let
企业资质
dbList
=
企业资质
List
.
filter
(
q
=>
q
.
eId
===
item
.
eId
);
企业资质
dbList
.
forEach
(
q
=>
{
let
企业类型
=
q
.
industry
;
if
(
企业类型
===
"小巨人"
)
qyfhs
.
小巨人
+=
1
;
else
if
(
企业类型
===
"高企培育"
)
qyfhs
.
高企培育
+=
1
;
else
if
(
企业类型
===
"高新企业"
)
qyfhs
.
高新企业
+=
1
;
else
if
(
企业类型
===
"科技型中小企业"
)
qyfhs
.
科技型中小企业
+=
1
;
else
if
(
企业类型
===
"专精特精"
)
qyfhs
.
专精特精
+=
1
;
});
}
result
.
push
({
key
:
"小巨人"
,
value
:
qyfhs
.
小巨人
});
result
.
push
({
key
:
"高企培育"
,
value
:
qyfhs
.
高企培育
});
result
.
push
({
key
:
"高新企业"
,
value
:
qyfhs
.
高新企业
});
result
.
push
({
key
:
"科技型中小企业"
,
value
:
qyfhs
.
科技型中小企业
});
result
.
push
({
key
:
"专精特精"
,
value
:
qyfhs
.
专精特精
});
return
result
;
}
src/data/db/out.ts
0 → 100644
View file @
e956cce0
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
;
}
src/data/db/qyfw.ts
View file @
e956cce0
...
...
@@ -5,6 +5,7 @@
import
moment
=
require
(
"moment"
);
import
{
FUHUASTATE
,
INDUSTRY
,
MOVEOUTTYPE
,
OPERATIONALDATATYPE
,
STATE
,
TABLENAME
}
from
"../../config/enum"
;
import
{
selectData
,
selectManyTableData
}
from
"./operationalData"
;
import
{
getChart
,
getKeyValue
,
getMonthList
,
getYearList
}
from
"./out"
;
export
async
function
getEnterprise
()
{
...
...
@@ -301,7 +302,7 @@ function getQybhqk(data) {
* 企业变化情况——变化趋势
*/
function
getQybhqkbhqs
(
data
){
let
year
=
[
"2019"
,
"2020"
,
"2021"
,
"2022"
,
"2023"
,
"2024"
]
;
let
year
=
getYearList
()
;
let
hbqs
=
{
"企业数"
:[]
}
...
...
@@ -491,7 +492,7 @@ function getQyzzfl() {
* 企业人才
*/
async
function
getQyrc
()
{
let
year
=
[
"2019"
,
"2020"
,
"2021"
,
"2022"
,
"2023"
,
"2024"
]
;
let
year
=
getYearList
()
;
let
qyrc
=
{
"就业人数"
:[],
"创业团队分布"
:[]
...
...
@@ -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
;
}
src/data/db/qyszhx.ts
View file @
e956cce0
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
{
getChart
,
getKeyValue
,
getYearList
}
from
"./out"
;
import
{
changeEnumValue
}
from
"../../tools/eccEnum"
;
...
...
@@ -22,8 +25,6 @@ export async function getQyszhx(eId) {
服务记录
:{
dataList
:[],
titleList
:[
'key'
,
'value'
]},
}
let
nowTime
=
new
Date
().
valueOf
();
/**数据库查询 */
let
企业基础信息
=
await
selectData
(
OPERATIONALDATATYPE
.
查询单个
,
TABLENAME
.
企业基础信息表
,
{
eId
},
null
);
...
...
@@ -50,6 +51,28 @@ export async function getQyszhx(eId) {
创业团队联查
includeConf
[
TABLENAME
.
创业团队
]
=
{
cloum
:
创业团队
Column
,
where
:{}}
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
=
{
企业介绍
:
企业基础信息
.
jianJie
,
...
...
@@ -59,13 +82,13 @@ export async function getQyszhx(eId) {
//企业基本数据
let
qyjbsj
=
{
注册时间
:
企业基础信息
.
logonTime
,
迁入时间
:
""
,
首次入孵时间
:
企业孵化信息
[
0
].
enterprise_fuhuas
.
startTime
注册时间
:
moment
(
企业基础信息
.
logonTime
).
format
(
"YYYY-MM-DD"
)
,
迁入时间
:
"
-
"
,
首次入孵时间
:
moment
(
企业孵化信息
[
0
].
enterprise_fuhuas
.
startTime
).
format
(
"YYYY-MM-DD"
)
};
qyszhx
.
企业基本数据
.
dataList
=
getKeyValue
(
qyjbsj
);
//企业标签
//企业标签
todo
let
qybq
=
{
}
...
...
@@ -78,6 +101,45 @@ export async function getQyszhx(eId) {
let
qyyghx
=
get
企业员工画像
(
创业团队信息
);
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
;
}
...
...
@@ -92,10 +154,13 @@ function get知识产权(data) {
}
data
.
forEach
(
info
=>
{
zscq
.
一级专利
+=
info
.
classIPatent
;
zscq
.
二级专利
+=
info
.
secondClassPatent
zscq
.
三级专利
+=
info
.
thirdPentent
;
zscq
.
海外专利
+=
info
.
alienPatent
;
let
{
enterprise_patents
}
=
info
;
enterprise_patents
.
forEach
(
patents
=>
{
zscq
.
一级专利
+=
patents
.
classIPatent
;
zscq
.
二级专利
+=
patents
.
secondClassPatent
zscq
.
三级专利
+=
patents
.
thirdPentent
;
zscq
.
海外专利
+=
patents
.
alienPatent
;
})
})
return
zscq
;
...
...
@@ -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
get
活动变化趋势分析
(
data
)
{
let
hdbhqsfxInfo
=
{
融资额
:[],
融资事件
:[],
}
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
getKeyValue
(
data
)
{
let
result
=
[];
for
(
let
key
in
data
)
{
result
.
push
({
key
,
value
:
data
[
key
]});
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
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment