Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Z
zjxcxServer
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
zjxcxServer
Commits
7c77145f
Commit
7c77145f
authored
Aug 15, 2024
by
lixinming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
1318e1f4
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
1138 additions
and
35 deletions
+1138
-35
serverConfig.xml
serverConfig.xml
+4
-2
checkMonthData.ts
src/biz/admin/checkData/checkMonthData.ts
+690
-0
enterprise.ts
src/biz/admin/enterprise/enterprise.ts
+26
-0
financing.ts
src/biz/admin/enterprise/financing.ts
+2
-2
provide.ts
src/biz/admin/provide.ts
+217
-7
enterprise.ts
src/data/enterprise/enterprise.ts
+40
-2
customTask.ts
src/data/fuHuaQi/customTask.ts
+12
-0
main.ts
src/main.ts
+4
-1
checkData.ts
src/routers/admin/checkData.ts
+64
-0
enterprise.ts
src/routers/admin/enterprise.ts
+32
-2
router.ts
src/routers/router.ts
+6
-0
transCode.ts
src/tools/transCode.ts
+41
-19
No files found.
serverConfig.xml
View file @
7c77145f
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<port>
27017
</port>
<port>
27017
</port>
<w>
1
</w>
<w>
1
</w>
<!-- <dataBase>baseDB</dataBase> -->
<!-- <dataBase>baseDB</dataBase> -->
<dataBase>
zjsc0
227
</dataBase>
<dataBase>
zjsc0
809
</dataBase>
<wtimeoutMS>
30000
</wtimeoutMS>
<wtimeoutMS>
30000
</wtimeoutMS>
</mongodb>
</mongodb>
<!-- 小程序的secret 和 appid -->
<!-- 小程序的secret 和 appid -->
...
@@ -25,5 +25,7 @@
...
@@ -25,5 +25,7 @@
<!-- 初始化账号提示 -->
<!-- 初始化账号提示 -->
<initPointOut>
1729288
</initPointOut>
<initPointOut>
1729288
</initPointOut>
</sms>
</sms>
<baidumap>
KI1jEpifrEQtgr7ZJ2zAOKlUw1tme7Eb
</baidumap>
<!-- <baidumap>KI1jEpifrEQtgr7ZJ2zAOKlUw1tme7Eb</baidumap> -->
<!-- <baidumap>QCxLry4y9BjIDRDIsGAerkcHrnrbo55I</baidumap> 夏-->
<baidumap>
yvr5gS5rGO6tFfq3gERdRfzTRsguXG9T
</baidumap>
</config>
</config>
src/biz/admin/checkData/checkMonthData.ts
0 → 100644
View file @
7c77145f
/**
* 校验数据逻辑
*/
import
moment
=
require
(
"moment"
);
import
{
CYCSRBJ
,
CYCXFX
,
ENTERPRISESIZE
,
FINANCINGROUNDS
,
FUHUAQICUSTOMTASKTYPE
,
FUHUASTATE
,
INDUSTRY
,
MOVEOUTCAUSE
,
MOVEOUTTRACE
,
MOVEOUTTYPE
,
NASHUIRENZIZHI
,
OUTPUTTYPE
,
RAS
,
VIRTUALCAUSE
}
from
"../../../config/enum"
;
import
{
getNewMonthTask
}
from
"../../../data/fuHuaQi/customTask"
;
import
{
findEnterpriseCount
,
findEnterpriseList
,
findEnterpriseListToPage
,
selectOneEnterpriseByParam
}
from
"../../../data/enterprise/enterprise"
;
import
{
extractData
}
from
"../../../util/piecemeal"
;
import
{
EnterpriseListConfig
,
EnterpriseMoveOutListConfig
}
from
"../../../config/splitResultConfig"
;
import
{
findFuHuaQiOperationNameMapByParam
}
from
"../../../data/fuHuaQi/fuhuaqi"
;
import
{
changeEnumValue
}
from
"../../../util/verificationEnum"
;
import
{
changeAddToString
}
from
"../../../tools/system"
;
import
{
outPutMonthTableList
}
from
"../fuHuaQi/month"
;
import
{
addressIsInZJ
,
latLngInZJ
}
from
"../../../tools/transCode"
;
import
{
outPutFinancingList
}
from
"../enterprise/financing"
;
function
changeTimeStr
(
dataCycle
)
{
let
dataCycleStr
=
`
${
dataCycle
}
`
;
return
`
${
dataCycleStr
.
slice
(
0
,
4
)}
-
${
dataCycleStr
.
slice
(
4
,
6
)}
-01 00:00:00`
;
}
export
async
function
checkEnterpriseDataList
(
page
:
number
)
{
/**获取最新数据月份 */
let
dataMonthInfo
=
await
getNewMonthTask
(
FUHUAQICUSTOMTASKTYPE
.
月度任务
);
let
startMs
=
moment
(
changeTimeStr
(
dataMonthInfo
.
dataCycle
)).
add
(
1
,
'M'
).
valueOf
();
let
endMs
=
moment
(
startMs
).
add
(
1
,
'M'
).
valueOf
();
let
usccMap
=
await
findFuHuaQiOperationNameMapByParam
({});
//用于将孵化器uscc变成孵化器名称
/**找目标月入库的数据 */
let
param
=
{
createTime
:{
"$gt"
:
startMs
,
"$lt"
:
endMs
}
}
let
enterpriseList
=
await
findEnterpriseListToPage
(
param
,
(
page
-
1
)
*
10
);
let
enterpriseCount
=
await
findEnterpriseCount
(
param
);
let
dataList
=
[];
enterpriseList
.
forEach
(
info
=>
{
/**截取返回数据 */
let
changeData
:
any
=
extractData
(
EnterpriseListConfig
,
info
,
true
);
/**匹配所属孵化器名称 匹配不上时这里显示空字符串 */
changeData
.
fuhuaqiUscc
=
usccMap
[
info
.
fuHuaQiUscc
]
||
""
;
/** 返回的isCreate字段为字符串 当为导入数据时这里显示为空字符 */
if
(
!
info
.
taskId
||
info
.
enterpriseIsInPut
)
{
if
(
info
.
enterpriseIsInPut
)
changeData
.
isCreate
=
"底库数据"
;
else
{
changeData
.
isCreate
=
(
changeData
.
isCreate
)?
"补录新注册"
:
"补录新迁入"
;
}
}
else
changeData
.
isCreate
=
(
changeData
.
isCreate
)
?
"新注册"
:
"新迁入"
;
changeData
.
state
=
changeEnumValue
(
FUHUASTATE
,
changeData
.
state
);
changeData
.
virtualCause
=
!
changeData
.
virtualCause
?
'-'
:
changeEnumValue
(
VIRTUALCAUSE
,
changeData
.
virtualCause
);
if
(
!
changeAddToString
(
info
.
oldLogonAddress
))
{
changeData
.
oldLogonAddress
=
"-"
;
}
if
(
!
changeAddToString
(
info
.
logonAddress
))
{
changeData
.
logonAddress
=
"-"
;
}
if
(
!
changeAddToString
(
info
.
operatingAddress
))
{
changeData
.
operatingAddress
=
"-"
;
}
/**将枚举值转为字符 */
changeData
.
industry
=
changeEnumValue
(
INDUSTRY
,
changeData
.
industry
);
changeData
.
cycxfx
=
changeEnumValue
(
CYCXFX
,
changeData
.
cycxfx
)
||
"未选择"
;
changeData
.
cycsrbj
=
changeEnumValue
(
CYCSRBJ
,
changeData
.
cycsrbj
)
||
"未选择"
;
let
intellectualProperty
=
changeData
.
intellectualProperty
||
{}
changeData
.
alienPatent
=
intellectualProperty
.
alienPatent
||
0
;
changeData
.
classIPatent
=
intellectualProperty
.
classIPatent
||
0
;
changeData
.
secondClassPatent
=
intellectualProperty
.
secondClassPatent
||
0
;
if
(
changeData
.
qualification
)
{
let
onceData
=
changeData
.
qualification
;
let
beOnTheMarket
=
"无上市"
;
if
(
changeData
.
qualification
.
beOnTheMarket
){
beOnTheMarket
=
changeEnumValue
(
FINANCINGROUNDS
,
onceData
.
beOnTheMarket
)
}
let
qualificationList
=
[{
beOnTheMarket
,
highTechMs
:
onceData
.
highTechMs
?
new
Date
(
onceData
.
highTechMs
).
getFullYear
()
:
'未认证'
,
//高新技术
zjtxMs
:
onceData
.
zjtxMs
?
new
Date
(
onceData
.
zjtxMs
).
getFullYear
()
:
'未认证'
,
//专精特新
xjrpyMs
:
onceData
.
xjrpyMs
?
new
Date
(
onceData
.
xjrpyMs
).
getFullYear
()
:
'未认证'
,
//小巨人培育
xjrMs
:
onceData
.
xjrMs
?
new
Date
(
onceData
.
xjrMs
).
getFullYear
()
:
'未认证'
,
//小巨人
}];
changeData
.
qualification
=
qualificationList
;
}
else
{
changeData
.
qualification
=
[{
beOnTheMarket
:
"无上市"
,
highTechMs
:
'未认证'
,
//高新技术
zjtxMs
:
'未认证'
,
//专精特新
xjrpyMs
:
'未认证'
,
//小巨人培育
xjrMs
:
'未认证'
,
//小巨人
}]
}
dataList
.
push
(
changeData
);
});
let
title
=
`
${
moment
(
startMs
).
format
(
"YYYY年MM月"
)}
数据新入孵
${
enterpriseCount
}
家`
;
return
{
dataList
,
count
:
enterpriseCount
,
title
};
}
export
async
function
dwEnterpriseDataList
()
{
/**获取最新数据月份 */
let
dataMonthInfo
=
await
getNewMonthTask
(
FUHUAQICUSTOMTASKTYPE
.
月度任务
);
let
startMs
=
moment
(
changeTimeStr
(
dataMonthInfo
.
dataCycle
)).
add
(
1
,
'M'
).
valueOf
();
let
endMs
=
moment
(
startMs
).
add
(
1
,
'M'
).
valueOf
();
let
usccMap
=
await
findFuHuaQiOperationNameMapByParam
({});
//用于将孵化器uscc变成孵化器名称
/**找目标月入库的数据 */
let
param
=
{
createTime
:{
"$gt"
:
startMs
,
"$lt"
:
endMs
},
"$or"
:
[{
"$and"
:[{
"draftLock"
:
true
},
{
"taskId"
:{
"$ne"
:
null
}}]},
{
"$and"
:[{
"draftLock"
:
false
},
{
"taskId"
:
null
}]}]
//未提交的企业不能查看
}
let
enterpriseList
=
await
findEnterpriseList
(
param
);
let
enterpriseCount
=
await
findEnterpriseCount
(
param
);
/**组合二维数组 titleList 与 keyList 要一一对应 */
const
TitleList
=
[
"企业名称"
,
"入库时间"
,
"所属孵化器"
,
"新注册/新迁入"
,
"孵化状态"
,
"虚拟孵化服务模式"
,
"统一信用代码"
,
"行业领域"
,
"主营业务"
,
"注册时间"
,
"首次入孵时间"
,
"迁入时间"
,
"是否自然人控股"
,
"迁入前注册地址"
,
"注册地址"
,
"经营地址"
,
"租赁面积(平方米)"
,
"创业创新方向"
,
"创业创始人背景"
,
"海外专利"
,
"一类专利"
,
"二类专利"
,
"是否上市"
,
"高新技术"
,
"专精特新"
,
"小巨人培育"
,
"小巨人"
];
//表头顺序 如果这里修改了 下面的keyList也要修改
const
KeyList
=
[
"name"
,
"createTime"
,
"fuhuaqiUscc"
,
"isCreate"
,
"state"
,
"virtualCause"
,
"uscc"
,
"industry"
,
"mainBusiness"
,
"logonTime"
,
"firstIncubationTime"
,
"timeOfImmigration"
,
"isNaturalPersonHolding"
,
"oldLogonAddress"
,
"logonAddress"
,
"operatingAddress"
,
"leasedArea"
,
"cycxfx"
,
"cycsrbj"
,
"alienPatent"
,
"classIPatent"
,
"secondClassPatent"
,
"beOnTheMarket"
,
"highTechMs"
,
"zjtxMs"
,
"xjrpyMs"
,
"xjrMs"
];
//表头对应的字段顺序
let
dataList
=
[
TitleList
];
enterpriseList
.
forEach
(
info
=>
{
/**截取返回结果 */
let
changeData
:
any
=
extractData
(
EnterpriseListConfig
,
info
,
true
);
/**匹配所属孵化器名称 匹配不上时这里显示空字符串 */
changeData
.
fuhuaqiUscc
=
usccMap
[
info
.
fuHuaQiUscc
]
||
""
;
if
(
!
info
.
taskId
||
info
.
enterpriseIsInPut
)
{
if
(
info
.
enterpriseIsInPut
)
changeData
.
isCreate
=
"底库数据"
;
else
{
changeData
.
isCreate
=
(
changeData
.
isCreate
)?
"补录新注册"
:
"补录新迁入"
;
}
}
else
changeData
.
isCreate
=
(
changeData
.
isCreate
)
?
"新注册"
:
"新迁入"
;
if
(
!
changeAddToString
(
info
.
oldLogonAddress
))
{
changeData
.
oldLogonAddress
=
"-"
;
}
if
(
!
changeAddToString
(
info
.
logonAddress
))
{
changeData
.
logonAddress
=
"-"
;
}
if
(
!
changeAddToString
(
info
.
operatingAddress
))
{
changeData
.
operatingAddress
=
"-"
;
}
changeData
.
cycxfx
=
changeEnumValue
(
CYCXFX
,
changeData
.
cycxfx
)
||
"未选择"
;
changeData
.
cycsrbj
=
changeEnumValue
(
CYCSRBJ
,
changeData
.
cycsrbj
)
||
"未选择"
;
changeData
.
isNaturalPersonHolding
=
changeData
.
isNaturalPersonHolding
?
"是"
:
"否"
;
/**修改枚举值 */
changeData
.
industry
=
changeEnumValue
(
INDUSTRY
,
changeData
.
industry
);
changeData
.
state
=
changeEnumValue
(
FUHUASTATE
,
changeData
.
state
);
changeData
.
virtualCause
=
changeEnumValue
(
VIRTUALCAUSE
,
changeData
.
virtualCause
);
/**- */
let
intellectualProperty
=
changeData
.
intellectualProperty
||
{}
changeData
.
alienPatent
=
intellectualProperty
.
alienPatent
||
0
;
changeData
.
classIPatent
=
intellectualProperty
.
classIPatent
||
0
;
changeData
.
secondClassPatent
=
intellectualProperty
.
secondClassPatent
||
0
;
if
(
changeData
.
qualification
)
{
let
onceData
=
changeData
.
qualification
;
let
beOnTheMarket
=
"无上市"
;
if
(
onceData
.
beOnTheMarket
){
beOnTheMarket
=
changeEnumValue
(
FINANCINGROUNDS
,
onceData
.
beOnTheMarket
)
||
"无上市"
}
changeData
.
beOnTheMarket
=
beOnTheMarket
;
changeData
.
highTechMs
=
onceData
.
highTechMs
?
new
Date
(
onceData
.
highTechMs
).
getFullYear
()
:
'未认证'
;
//高新技术
changeData
.
zjtxMs
=
onceData
.
zjtxMs
?
new
Date
(
onceData
.
zjtxMs
).
getFullYear
()
:
'未认证'
;
//专精特新
changeData
.
xjrpyMs
=
onceData
.
xjrpyMs
?
new
Date
(
onceData
.
xjrpyMs
).
getFullYear
()
:
'未认证'
;
//小巨人培育
changeData
.
xjrMs
=
onceData
.
xjrMs
?
new
Date
(
onceData
.
xjrMs
).
getFullYear
()
:
'未认证'
;
//小巨人
}
else
{
changeData
.
beOnTheMarket
=
"无上市"
;
//是否上市
changeData
.
highTechMs
=
'未认证'
;
//高新技术
changeData
.
zjtxMs
=
'未认证'
;
//专精特新
changeData
.
xjrpyMs
=
'未认证'
;
//小巨人培育
changeData
.
xjrMs
=
'未认证'
;
//小巨人
}
/**根据表头与key的顺序 生成小数组 */
let
subList
=
[];
KeyList
.
forEach
(
keyStr
=>
{
let
value
=
changeData
[
keyStr
];
if
(
value
==
null
||
value
==
undefined
)
value
=
"-"
subList
.
push
(
value
);
});
dataList
.
push
(
subList
);
});
let
title
=
`
${
moment
(
startMs
).
format
(
"YYYY年MM月"
)}
数据新入孵
${
enterpriseCount
}
家`
;
return
{
dataList
,
count
:
enterpriseCount
,
title
};
}
/**
* 注意工作流程,这里以后用uscc匹配企查查数据,匹配不到的证明企业信用代码不对
* @param list
*/
export
async
function
upCheckEnterpriseData
(
dataList
)
{
//比对名称和uscc 有一个相同认为是同一个公司
let
fhqNameMap
=
await
findFuHuaQiOperationNameMapByParam
({});
let
notCheckList
=
[];
for
(
let
i
=
1
;
i
<
dataList
.
length
;
i
++
)
{
let
itemList
=
dataList
[
i
];
let
原文件导入名称
=
itemList
[
0
];
let
系统匹配企业名称
=
itemList
[
1
];
let
登记状态
=
itemList
[
2
];
let
法定代表人
=
itemList
[
3
];
let
注册资本
=
itemList
[
4
];
let
实缴资本
=
itemList
[
5
];
let
成立日期
=
itemList
[
6
];
let
统一社会信用代码
=
itemList
[
7
];
let
企业地址
=
itemList
[
8
];
let
所属省份
=
itemList
[
9
];
let
所属城市
=
itemList
[
10
];
let
所属区县
=
itemList
[
11
];
let
电话
=
itemList
[
12
];
let
更多电话
=
itemList
[
13
];
let
邮箱
=
itemList
[
14
];
let
更多邮箱
=
itemList
[
15
];
let
企业机构类型
=
itemList
[
16
];
let
纳税人识别号
=
itemList
[
17
];
let
注册号
=
itemList
[
18
];
let
组织机构代码
=
itemList
[
19
];
let
参保人数
=
itemList
[
20
];
let
参保人数所属年报
=
itemList
[
21
];
let
核准日期
=
itemList
[
22
];
let
营业期限
=
itemList
[
23
];
let
国标行业门类
=
itemList
[
24
];
let
国标行业大类
=
itemList
[
25
];
let
国标行业中类
=
itemList
[
26
];
let
国标行业小类
=
itemList
[
27
];
let
企查查行业门类
=
itemList
[
28
];
let
企查查行业大类
=
itemList
[
29
];
let
企查查行业中类
=
itemList
[
30
];
let
企查查行业小类
=
itemList
[
31
];
let
企业规模
=
itemList
[
32
];
let
曾用名
=
itemList
[
33
];
let
英文名
=
itemList
[
34
];
let
官网
=
itemList
[
35
];
let
通信地址
=
itemList
[
36
];
let
企业简介
=
itemList
[
37
];
let
经营范围
=
itemList
[
38
];
let
登记机关
=
itemList
[
39
];
let
纳税人资质
=
itemList
[
40
];
let
最新年报年份
=
itemList
[
41
];
let
企业经营状态
=
itemList
[
42
];
let
selectUscc
=
统一社会信用代码
==
"-"
?
原文件导入名称
:
统一社会信用代码
;
let
enterpriseInfo
=
await
selectOneEnterpriseByParam
({
uscc
:
selectUscc
});
if
(
!
enterpriseInfo
||
!
enterpriseInfo
.
uscc
)
{
notCheckList
.
push
({
index
:
i
,
uscc
:
selectUscc
,
name
:
系统匹配企业名称
});
continue
;
}
enterpriseInfo
.
name
=
系统匹配企业名称
;
/**核对基础信息,注册时间,注册地址,经营地址等 */
if
(
成立日期
!=
"-"
)
{
enterpriseInfo
.
logonTime
=
new
Date
(
成立日期
).
valueOf
();
}
enterpriseInfo
.
logonAddress
=
[
所属省份
,
所属城市
,
所属区县
,
企业地址
];
if
(
经营范围
!=
"-"
&&
enterpriseInfo
.
mainBusiness
)
{
enterpriseInfo
.
mainBusiness
=
经营范围
;
}
let
ras
=
RAS
.
续存
;
if
(
登记状态
.
indexOf
(
"注销"
)
!=
-
1
)
{
//企业注销 注销将企业改成迁出
let
等级状态数组
=
登记状态
.
split
(
"("
);
if
(
等级状态数组
[
1
])
{
enterpriseInfo
.
logOffMS
=
new
Date
(
等级状态数组
[
1
].
replace
(
")"
,
""
)).
valueOf
();
}
enterpriseInfo
.
state
=
FUHUASTATE
.
迁出
;
enterpriseInfo
.
moveOutType
=
MOVEOUTTYPE
.
企业注销
;
ras
=
RAS
.
注销
;
}
/** 增补字段 */
enterpriseInfo
.
RAS
=
ras
;
//登记状态
enterpriseInfo
.
legalPerson
=
法定代表人
;
//法人
enterpriseInfo
.
zhuceziben
=
注册资本
;
//注册资本
enterpriseInfo
.
shijiaoziben
=
实缴资本
;
//实缴资本
enterpriseInfo
.
dianHua
=
电话
;
//电话
enterpriseInfo
.
gengDuoDianHua
=
更多电话
;
//更多电话
enterpriseInfo
.
mail
=
邮箱
;
//邮箱
enterpriseInfo
.
moreMail
=
更多邮箱
;
//更多邮箱
enterpriseInfo
.
enterpriseType
=
企业机构类型
;
//企业(机构)类型
enterpriseInfo
.
zhuCeHao
=
注册号
;
//注册号
enterpriseInfo
.
zuZhiJiGouDaiMa
=
组织机构代码
;
//组织机构代码
enterpriseInfo
.
canBaoRenShu
=
参保人数
==
"-"
||
!
参保人数
?
0
:
parseInt
(
参保人数
);
//参保人数
enterpriseInfo
.
canBaoRenShuNianBao
=
参保人数所属年报
==
"-"
||
!
参保人数所属年报
?
0
:
parseInt
(
参保人数所属年报
);
//参保人数所属年报
enterpriseInfo
.
yingYeQiXian
=
营业期限
;
//营业期限
switch
(
企业规模
)
{
case
'XS(微型)'
:
enterpriseInfo
.
qiYeGuiMo
=
ENTERPRISESIZE
.
微型
;
break
;
case
'S(小型)'
:
enterpriseInfo
.
qiYeGuiMo
=
ENTERPRISESIZE
.
小型
;
break
;
case
'M(中型)'
:
enterpriseInfo
.
qiYeGuiMo
=
ENTERPRISESIZE
.
中型
;
break
;
case
'L(大型)'
:
enterpriseInfo
.
qiYeGuiMo
=
ENTERPRISESIZE
.
大型
;
break
;
default
:
enterpriseInfo
.
qiYeGuiMo
=
ENTERPRISESIZE
.
未知
;
break
;
}
enterpriseInfo
.
guanWang
=
官网
;
//官网
enterpriseInfo
.
tongXinDiZhi
=
通信地址
;
//通信地址
enterpriseInfo
.
jianJie
=
企业简介
;
//企业简介
enterpriseInfo
.
dengJiJiGuan
=
登记机关
;
//登记机关
switch
(
纳税人资质
)
{
case
'XS(微型)'
:
enterpriseInfo
.
naShuiRenZiZhi
=
NASHUIRENZIZHI
.
一般纳税人
;
break
;
case
'增值税一般纳税人'
:
enterpriseInfo
.
naShuiRenZiZhi
=
NASHUIRENZIZHI
.
增值税一般纳税人
;
break
;
case
'M(中型)'
:
enterpriseInfo
.
naShuiRenZiZhi
=
NASHUIRENZIZHI
.
小规模纳税人
;
break
;
default
:
enterpriseInfo
.
naShuiRenZiZhi
=
NASHUIRENZIZHI
.
未知
;
break
;
}
enterpriseInfo
.
zuiXinNianBaoNianFen
=
isNaN
(
最新年报年份
)
?
0
:
parseInt
(
最新年报年份
);
//最新年报年份
await
enterpriseInfo
.
save
();
}
return
{
isSuccess
:
true
,
notCheckList
};
}
/**
* 月报数据源下载
*/
export
async
function
monthData
()
{
let
dataMonthInfo
=
await
getNewMonthTask
(
FUHUAQICUSTOMTASKTYPE
.
月度任务
);
let
year
=
new
Date
(
changeTimeStr
(
dataMonthInfo
.
dataCycle
)).
getFullYear
();
let
month
=
new
Date
(
changeTimeStr
(
dataMonthInfo
.
dataCycle
)).
getMonth
()
+
1
;
// /**月度任务 */
// let monthDataList = await outPutMonthTableList(0, year, month, OUTPUTTYPE.当前数据 );
// /**新入孵数据 */
// let ruFuData = await dwEnterpriseDataList();
// /**新注册新迁入 */
// let {qianRuList, createList} = await monthEnterpriseStats();
// /** 融资*/
// let financingDataStr = moment(changeTimeStr(dataMonthInfo.dataCycle)).add(1, 'M').format("YYYY-MM-DD");
// let financingList = await outPutFinancingList(`${financingDataStr} 00:00:00`, "", [], 1, OUTPUTTYPE.当前数据, false);
let
{
thisYearDataList
,
thisYearQianRuList
}
=
await
t1
();
let
thisYearFinancingList
=
[];
for
(
let
i
=
2
;
i
<
8
;
i
++
)
{
let
itemList
=
await
outPutFinancingList
(
`2024-07-0
${
i
}
00:00:00`
,
""
,
[],
1
,
OUTPUTTYPE
.
当前数据
,
false
);
thisYearFinancingList
=
thisYearFinancingList
.
concat
(
thisYearFinancingList
,
itemList
)
}
return
{
title
:
"月报数据下载"
,
dataList
:[
// {
// sheetName:"孵化器基本情况",
// data:monthDataList
// },
// {
// sheetName:"新入孵数据情况源数据",
// data:ruFuData.dataList
// },
// {
// sheetName:"新注册",
// data:createList
// },
// {
// sheetName:"新迁入",
// data:qianRuList
// },
// {
// sheetName:"融资",
// data:financingList
// },
// {
// sheetName:`${2024}年1-${7}月累计融资企业汇总统计`,
// data:thisYearFinancingList
// },
{
sheetName
:
`
${
year
}
年1-
${
month
}
月累计新迁入企业汇总统计`
,
data
:
thisYearQianRuList
,
},
{
sheetName
:
`
${
year
}
年1-
${
month
}
月累计新注册企业汇总统计`
,
data
:
thisYearDataList
,
}
]
}
}
async
function
monthEnterpriseStats
()
{
/**获取最新数据月份 */
let
thisYearStartMs
=
new
Date
(
`
${
new
Date
().
getFullYear
()}
-01-01 00:00:00`
).
valueOf
();
let
dataMonthInfo
=
await
getNewMonthTask
(
FUHUAQICUSTOMTASKTYPE
.
月度任务
);
let
startMs
=
moment
(
changeTimeStr
(
dataMonthInfo
.
dataCycle
)).
add
(
1
,
'M'
).
valueOf
();
let
endMs
=
moment
(
startMs
).
add
(
1
,
'M'
).
valueOf
();
let
usccMap
=
await
findFuHuaQiOperationNameMapByParam
({});
//用于将孵化器uscc变成孵化器名称
/**找目标月入库的数据 */
let
param
=
{
createTime
:{
"$gt"
:
startMs
,
"$lt"
:
endMs
},
"$or"
:
[{
"$and"
:[{
"draftLock"
:
true
},
{
"taskId"
:{
"$ne"
:
null
}}]},
{
"$and"
:[{
"draftLock"
:
false
},
{
"taskId"
:
null
}]}]
//未提交的企业不能查看
}
let
enterpriseList
=
await
findEnterpriseList
(
param
);
/**组合二维数组 titleList 与 keyList 要一一对应 */
const
TitleList
=
[
"企业名称"
,
"入库时间"
,
"所属孵化器"
,
"新注册/新迁入"
,
"孵化状态"
,
"虚拟孵化服务模式"
,
"统一信用代码"
,
"行业领域"
,
"主营业务"
,
"注册时间"
,
"首次入孵时间"
,
"迁入时间"
,
"是否自然人控股"
,
"迁入前注册地址"
,
"注册地址"
,
"经营地址"
,
"租赁面积(平方米)"
,
"创业创新方向"
,
"创业创始人背景"
,
"海外专利"
,
"一类专利"
,
"二类专利"
,
"是否上市"
,
"高新技术"
,
"专精特新"
,
"小巨人培育"
,
"小巨人"
];
//表头顺序 如果这里修改了 下面的keyList也要修改
const
KeyList
=
[
"name"
,
"createTime"
,
"fuhuaqiUscc"
,
"isCreate"
,
"state"
,
"virtualCause"
,
"uscc"
,
"industry"
,
"mainBusiness"
,
"logonTime"
,
"firstIncubationTime"
,
"timeOfImmigration"
,
"isNaturalPersonHolding"
,
"oldLogonAddress"
,
"logonAddress"
,
"operatingAddress"
,
"leasedArea"
,
"cycxfx"
,
"cycsrbj"
,
"alienPatent"
,
"classIPatent"
,
"secondClassPatent"
,
"beOnTheMarket"
,
"highTechMs"
,
"zjtxMs"
,
"xjrpyMs"
,
"xjrMs"
];
//表头对应的字段顺序
let
dataList
=
[
TitleList
];
let
qianRuList
=
[
TitleList
];
for
(
let
i
=
0
;
i
<
enterpriseList
.
length
;
i
++
)
{
let
info
=
enterpriseList
[
i
];
let
logonAddressSuccess
=
false
;
let
logonTimeIsThisYear
=
false
;
if
(
info
.
logonAddress
)
{
let
isInZJ
=
await
addressIsInZJ
(
changeAddToString
(
info
.
logonAddress
));
if
(
isInZJ
)
{
logonAddressSuccess
=
true
;
}
}
if
(
info
.
logonTime
>
thisYearStartMs
)
{
logonTimeIsThisYear
=
true
;
}
let
isCreate
=
false
;
let
isQianRu
=
false
;
//迁入
if
(
info
.
oldLogonAddress
&&
info
.
oldLogonAddress
.
length
&&
info
.
oldLogonAddress
[
0
])
{
let
qianRuIsZJ
=
await
addressIsInZJ
(
changeAddToString
(
info
.
oldLogonAddress
));
if
(
!
qianRuIsZJ
)
{
//非张江
if
(
logonAddressSuccess
)
isQianRu
=
true
;
}
else
{
//张江
if
(
logonAddressSuccess
&&
logonTimeIsThisYear
)
isCreate
=
true
;
}
}
//新注册
if
(
info
.
isCreate
)
{
if
(
logonAddressSuccess
&&
logonTimeIsThisYear
)
{
isCreate
=
true
;
}
}
/**截取返回结果 */
let
changeData
:
any
=
extractData
(
EnterpriseListConfig
,
info
,
true
);
/**匹配所属孵化器名称 匹配不上时这里显示空字符串 */
changeData
.
fuhuaqiUscc
=
usccMap
[
info
.
fuHuaQiUscc
]
||
""
;
if
(
!
info
.
taskId
||
info
.
enterpriseIsInPut
)
{
if
(
info
.
enterpriseIsInPut
)
changeData
.
isCreate
=
"底库数据"
;
else
{
changeData
.
isCreate
=
(
changeData
.
isCreate
)?
"补录新注册"
:
"补录新迁入"
;
}
}
else
changeData
.
isCreate
=
(
changeData
.
isCreate
)
?
"新注册"
:
"新迁入"
;
if
(
!
changeAddToString
(
info
.
oldLogonAddress
))
{
changeData
.
oldLogonAddress
=
"-"
;
}
if
(
!
changeAddToString
(
info
.
logonAddress
))
{
changeData
.
logonAddress
=
"-"
;
}
if
(
!
changeAddToString
(
info
.
operatingAddress
))
{
changeData
.
operatingAddress
=
"-"
;
}
changeData
.
cycxfx
=
changeEnumValue
(
CYCXFX
,
changeData
.
cycxfx
)
||
"未选择"
;
changeData
.
cycsrbj
=
changeEnumValue
(
CYCSRBJ
,
changeData
.
cycsrbj
)
||
"未选择"
;
changeData
.
isNaturalPersonHolding
=
changeData
.
isNaturalPersonHolding
?
"是"
:
"否"
;
/**修改枚举值 */
changeData
.
industry
=
changeEnumValue
(
INDUSTRY
,
changeData
.
industry
);
changeData
.
state
=
changeEnumValue
(
FUHUASTATE
,
changeData
.
state
);
changeData
.
virtualCause
=
changeEnumValue
(
VIRTUALCAUSE
,
changeData
.
virtualCause
);
/**- */
let
intellectualProperty
=
changeData
.
intellectualProperty
||
{}
changeData
.
alienPatent
=
intellectualProperty
.
alienPatent
||
0
;
changeData
.
classIPatent
=
intellectualProperty
.
classIPatent
||
0
;
changeData
.
secondClassPatent
=
intellectualProperty
.
secondClassPatent
||
0
;
if
(
changeData
.
qualification
)
{
let
onceData
=
changeData
.
qualification
;
let
beOnTheMarket
=
"无上市"
;
if
(
onceData
.
beOnTheMarket
){
beOnTheMarket
=
changeEnumValue
(
FINANCINGROUNDS
,
onceData
.
beOnTheMarket
)
||
"无上市"
}
changeData
.
beOnTheMarket
=
beOnTheMarket
;
changeData
.
highTechMs
=
onceData
.
highTechMs
?
new
Date
(
onceData
.
highTechMs
).
getFullYear
()
:
'未认证'
;
//高新技术
changeData
.
zjtxMs
=
onceData
.
zjtxMs
?
new
Date
(
onceData
.
zjtxMs
).
getFullYear
()
:
'未认证'
;
//专精特新
changeData
.
xjrpyMs
=
onceData
.
xjrpyMs
?
new
Date
(
onceData
.
xjrpyMs
).
getFullYear
()
:
'未认证'
;
//小巨人培育
changeData
.
xjrMs
=
onceData
.
xjrMs
?
new
Date
(
onceData
.
xjrMs
).
getFullYear
()
:
'未认证'
;
//小巨人
}
else
{
changeData
.
beOnTheMarket
=
"无上市"
;
//是否上市
changeData
.
highTechMs
=
'未认证'
;
//高新技术
changeData
.
zjtxMs
=
'未认证'
;
//专精特新
changeData
.
xjrpyMs
=
'未认证'
;
//小巨人培育
changeData
.
xjrMs
=
'未认证'
;
//小巨人
}
/**根据表头与key的顺序 生成小数组 */
let
subList
=
[];
KeyList
.
forEach
(
keyStr
=>
{
let
value
=
changeData
[
keyStr
];
if
(
value
==
null
||
value
==
undefined
)
value
=
"-"
subList
.
push
(
value
);
});
if
(
isQianRu
)
qianRuList
.
push
(
subList
)
if
(
isCreate
)
dataList
.
push
(
subList
);
}
return
{
createList
:
dataList
,
qianRuList
:
qianRuList
};
}
async
function
t1
()
{
/** */
let
thisYearStartMs
=
new
Date
(
`
${
new
Date
().
getFullYear
()}
-01-01 00:00:00`
).
valueOf
();
const
TitleList
=
[
"月份"
,
"企业名称"
,
"入库时间"
,
"所属孵化器"
,
"新注册/新迁入"
,
"孵化状态"
,
"虚拟孵化服务模式"
,
"统一信用代码"
,
"行业领域"
,
"主营业务"
,
"注册时间"
,
"首次入孵时间"
,
"迁入时间"
,
"是否自然人控股"
,
"迁入前注册地址"
,
"注册地址"
,
"经营地址"
,
"租赁面积(平方米)"
,
"创业创新方向"
,
"创业创始人背景"
,
"海外专利"
,
"一类专利"
,
"二类专利"
,
"是否上市"
,
"高新技术"
,
"专精特新"
,
"小巨人培育"
,
"小巨人"
];
//表头顺序 如果这里修改了 下面的keyList也要修改
let
thisYearDataList
=
[
TitleList
];
let
thisYearQianRuList
=
[
TitleList
];
let
usccMap
=
await
findFuHuaQiOperationNameMapByParam
({});
//用于将孵化器uscc变成孵化器名称
/**找目标月入库的数据 */
let
param
=
{
createTime
:{
"$gt"
:
new
Date
(
"2024-01-01 00:00:00"
).
valueOf
()},
"$or"
:
[{
"$and"
:[{
"draftLock"
:
true
},
{
"taskId"
:{
"$ne"
:
null
}}]},
{
"$and"
:[{
"draftLock"
:
false
},
{
"taskId"
:
null
}]}]
//未提交的企业不能查看
}
let
enterpriseList
=
await
findEnterpriseList
(
param
);
/**组合二维数组 titleList 与 keyList 要一一对应 */
const
KeyList
=
[
"name"
,
"createTime"
,
"fuhuaqiUscc"
,
"isCreate"
,
"state"
,
"virtualCause"
,
"uscc"
,
"industry"
,
"mainBusiness"
,
"logonTime"
,
"firstIncubationTime"
,
"timeOfImmigration"
,
"isNaturalPersonHolding"
,
"oldLogonAddress"
,
"logonAddress"
,
"operatingAddress"
,
"leasedArea"
,
"cycxfx"
,
"cycsrbj"
,
"alienPatent"
,
"classIPatent"
,
"secondClassPatent"
,
"beOnTheMarket"
,
"highTechMs"
,
"zjtxMs"
,
"xjrpyMs"
,
"xjrMs"
];
//表头对应的字段顺序
for
(
let
i
=
0
;
i
<
enterpriseList
.
length
;
i
++
)
{
let
info
=
enterpriseList
[
i
];
let
logonTimeIsThisYear
=
false
;
if
(
info
.
logonAddress
)
{
}
if
(
info
.
logonTime
>
thisYearStartMs
)
{
logonTimeIsThisYear
=
true
;
}
let
isCreate
=
false
;
let
isQianRu
=
false
;
//迁入
if
(
info
.
oldLogonAddress
&&
info
.
oldLogonAddress
.
length
&&
info
.
oldLogonAddress
[
0
])
{
let
qianRuIsZJ
=
await
latLngInZJ
(
parseFloat
(
info
.
oldLat
),
parseFloat
(
info
.
oldLng
));
if
(
!
qianRuIsZJ
)
{
//非张江
let
logonAddressSuccess
=
await
latLngInZJ
(
parseFloat
(
info
.
lat
),
parseFloat
(
info
.
lng
));
if
(
logonAddressSuccess
)
isQianRu
=
true
;
}
else
{
//张江
if
(
logonTimeIsThisYear
)
{
let
logonAddressSuccess
=
await
latLngInZJ
(
parseFloat
(
info
.
lat
),
parseFloat
(
info
.
lng
));
if
(
logonAddressSuccess
)
isCreate
=
true
;
}
}
}
//新注册
if
(
info
.
isCreate
)
{
if
(
logonTimeIsThisYear
)
{
isCreate
=
await
latLngInZJ
(
parseFloat
(
info
.
lat
),
parseFloat
(
info
.
lng
));
}
}
/**截取返回结果 */
let
changeData
:
any
=
extractData
(
EnterpriseListConfig
,
info
,
true
);
/**匹配所属孵化器名称 匹配不上时这里显示空字符串 */
changeData
.
fuhuaqiUscc
=
usccMap
[
info
.
fuHuaQiUscc
]
||
""
;
if
(
!
info
.
taskId
||
info
.
enterpriseIsInPut
)
{
if
(
info
.
enterpriseIsInPut
)
changeData
.
isCreate
=
"底库数据"
;
else
{
changeData
.
isCreate
=
(
changeData
.
isCreate
)?
"补录新注册"
:
"补录新迁入"
;
}
}
else
changeData
.
isCreate
=
(
changeData
.
isCreate
)
?
"新注册"
:
"新迁入"
;
if
(
!
changeAddToString
(
info
.
oldLogonAddress
))
{
changeData
.
oldLogonAddress
=
"-"
;
}
if
(
!
changeAddToString
(
info
.
logonAddress
))
{
changeData
.
logonAddress
=
"-"
;
}
if
(
!
changeAddToString
(
info
.
operatingAddress
))
{
changeData
.
operatingAddress
=
"-"
;
}
changeData
.
cycxfx
=
changeEnumValue
(
CYCXFX
,
changeData
.
cycxfx
)
||
"未选择"
;
changeData
.
cycsrbj
=
changeEnumValue
(
CYCSRBJ
,
changeData
.
cycsrbj
)
||
"未选择"
;
changeData
.
isNaturalPersonHolding
=
changeData
.
isNaturalPersonHolding
?
"是"
:
"否"
;
/**修改枚举值 */
changeData
.
industry
=
changeEnumValue
(
INDUSTRY
,
changeData
.
industry
);
changeData
.
state
=
changeEnumValue
(
FUHUASTATE
,
changeData
.
state
);
changeData
.
virtualCause
=
changeEnumValue
(
VIRTUALCAUSE
,
changeData
.
virtualCause
);
/**- */
let
intellectualProperty
=
changeData
.
intellectualProperty
||
{}
changeData
.
alienPatent
=
intellectualProperty
.
alienPatent
||
0
;
changeData
.
classIPatent
=
intellectualProperty
.
classIPatent
||
0
;
changeData
.
secondClassPatent
=
intellectualProperty
.
secondClassPatent
||
0
;
if
(
changeData
.
qualification
)
{
let
onceData
=
changeData
.
qualification
;
let
beOnTheMarket
=
"无上市"
;
if
(
onceData
.
beOnTheMarket
){
beOnTheMarket
=
changeEnumValue
(
FINANCINGROUNDS
,
onceData
.
beOnTheMarket
)
||
"无上市"
}
changeData
.
beOnTheMarket
=
beOnTheMarket
;
changeData
.
highTechMs
=
onceData
.
highTechMs
?
new
Date
(
onceData
.
highTechMs
).
getFullYear
()
:
'未认证'
;
//高新技术
changeData
.
zjtxMs
=
onceData
.
zjtxMs
?
new
Date
(
onceData
.
zjtxMs
).
getFullYear
()
:
'未认证'
;
//专精特新
changeData
.
xjrpyMs
=
onceData
.
xjrpyMs
?
new
Date
(
onceData
.
xjrpyMs
).
getFullYear
()
:
'未认证'
;
//小巨人培育
changeData
.
xjrMs
=
onceData
.
xjrMs
?
new
Date
(
onceData
.
xjrMs
).
getFullYear
()
:
'未认证'
;
//小巨人
}
else
{
changeData
.
beOnTheMarket
=
"无上市"
;
//是否上市
changeData
.
highTechMs
=
'未认证'
;
//高新技术
changeData
.
zjtxMs
=
'未认证'
;
//专精特新
changeData
.
xjrpyMs
=
'未认证'
;
//小巨人培育
changeData
.
xjrMs
=
'未认证'
;
//小巨人
}
/**根据表头与key的顺序 生成小数组 */
let
subList
=
[];
subList
.
push
(
new
Date
(
info
.
createTime
).
getMonth
()
+
1
)
KeyList
.
forEach
(
keyStr
=>
{
let
value
=
changeData
[
keyStr
];
if
(
value
==
null
||
value
==
undefined
)
value
=
"-"
subList
.
push
(
value
);
});
if
(
isQianRu
)
thisYearDataList
.
push
(
subList
)
if
(
isCreate
)
thisYearQianRuList
.
push
(
subList
);
}
thisYearDataList
.
sort
((
a
:
any
,
b
:
any
)
=>
{
return
a
[
0
]
-
b
[
0
]});
thisYearQianRuList
.
sort
((
a
:
any
,
b
:
any
)
=>
{
return
a
[
0
]
-
b
[
0
]});
return
{
thisYearDataList
,
thisYearQianRuList
}
}
\ No newline at end of file
src/biz/admin/enterprise/enterprise.ts
View file @
7c77145f
...
@@ -656,3 +656,28 @@ export async function getEnterpriseTeamInfoList(uscc:string) {
...
@@ -656,3 +656,28 @@ export async function getEnterpriseTeamInfoList(uscc:string) {
return
{
dataList
};
return
{
dataList
};
}
}
/**
* 企业信息回显
* @param uscc
*/
export
async
function
enterpriseInfomation
(
uscc
:
string
)
{
//暂时回显名称
let
enterpriseInfo
=
await
enterpriseData
.
findEnterpriseByUscc
(
uscc
);
let
dataInfo
=
{
name
:
enterpriseInfo
.
name
}
return
{
dataInfo
};
}
export
async
function
updateEnterpriseInfomation
(
uscc
:
string
,
name
:
string
)
{
//暂时回显名称
let
enterpriseInfo
=
await
enterpriseData
.
findEnterpriseByUscc
(
uscc
);
enterpriseInfo
.
name
=
name
;
await
enterpriseInfo
.
save
();
return
{
isSuccess
:
true
}
}
\ No newline at end of file
src/biz/admin/enterprise/financing.ts
View file @
7c77145f
...
@@ -69,11 +69,11 @@ export async function financingList(monthData:string, fuHuaQiName:string, indust
...
@@ -69,11 +69,11 @@ export async function financingList(monthData:string, fuHuaQiName:string, indust
/**
/**
* 导出融资企业信息列表
* 导出融资企业信息列表
* @param monthData
数据
月份 目前数据库没有该字段
* @param monthData
入库
月份 目前数据库没有该字段
* @param fuHuaQiName 所属孵化器
* @param fuHuaQiName 所属孵化器
* @param industry 行业领域
* @param industry 行业领域
* @param fuHuaQiInvestment 孵化器是否参与投资
* @param fuHuaQiInvestment 孵化器是否参与投资
* @param type
页数
* @param type
类型
* @returns
* @returns
*/
*/
export
async
function
outPutFinancingList
(
monthData
:
string
,
fuHuaQiName
:
string
,
industry
,
fuHuaQiInvestment
:
number
,
type
:
number
,
isFuHuaQi
:
boolean
)
{
export
async
function
outPutFinancingList
(
monthData
:
string
,
fuHuaQiName
:
string
,
industry
,
fuHuaQiInvestment
:
number
,
type
:
number
,
isFuHuaQi
:
boolean
)
{
...
...
src/biz/admin/provide.ts
View file @
7c77145f
...
@@ -9,7 +9,7 @@ import * as enterpriseData from "../../data/enterprise/enterprise";
...
@@ -9,7 +9,7 @@ import * as enterpriseData from "../../data/enterprise/enterprise";
import
*
as
scoreBiz
from
"../mobileFuHuaQi/fuHuaQi/score"
;
import
*
as
scoreBiz
from
"../mobileFuHuaQi/fuHuaQi/score"
;
import
*
as
fuhuaqiData
from
"../../data/fuHuaQi/fuhuaqi"
;
import
*
as
fuhuaqiData
from
"../../data/fuHuaQi/fuhuaqi"
;
import
*
as
financingData
from
"../../data/fuHuaQi/monthTask/financing"
;
import
*
as
financingData
from
"../../data/fuHuaQi/monthTask/financing"
;
import
{
CHANGEMODE
,
CYCSRBJ
,
CYCXFX
,
ENTERPRISESIZE
,
FUHUAQICUSTOMTASKTYPE
,
FUHUASTATE
,
INDUSTRY
,
LISTINGSITUATION
,
MOVEOUTCAUSE
,
MOVEOUTCAUSENOTCLIENT
,
MOVEOUTTRACE
,
MOVEOUTTYPE
,
NASHUIRENZIZHI
,
RAS
,
SCOREWAYS
,
STATEENUM
,
TASKTYPEENUM
,
VIRTUALCAUSE
}
from
"../../config/enum"
;
import
{
CHANGEMODE
,
CYCSRBJ
,
CYCXFX
,
ENTERPRISESIZE
,
F
INANCINGROUNDS
,
F
UHUAQICUSTOMTASKTYPE
,
FUHUASTATE
,
INDUSTRY
,
LISTINGSITUATION
,
MOVEOUTCAUSE
,
MOVEOUTCAUSENOTCLIENT
,
MOVEOUTTRACE
,
MOVEOUTTYPE
,
NASHUIRENZIZHI
,
RAS
,
SCOREWAYS
,
STATEENUM
,
TASKTYPEENUM
,
VIRTUALCAUSE
}
from
"../../config/enum"
;
import
{
ERRORENUM
}
from
"../../config/errorEnum"
;
import
{
ERRORENUM
}
from
"../../config/errorEnum"
;
import
{
findAllNotDisabledFuHuaQi
,
findFuHuaQiList
}
from
"../../data/fuHuaQi/fuhuaqi"
;
import
{
findAllNotDisabledFuHuaQi
,
findFuHuaQiList
}
from
"../../data/fuHuaQi/fuhuaqi"
;
import
{
BizError
}
from
"../../util/bizError"
;
import
{
BizError
}
from
"../../util/bizError"
;
...
@@ -37,6 +37,7 @@ import { EnterpriseListConfig } from "../../config/splitResultConfig";
...
@@ -37,6 +37,7 @@ import { EnterpriseListConfig } from "../../config/splitResultConfig";
import
{
changeAddToString
}
from
"../../tools/system"
;
import
{
changeAddToString
}
from
"../../tools/system"
;
import
{
changeEnumValue
}
from
"../../util/verificationEnum"
;
import
{
changeEnumValue
}
from
"../../util/verificationEnum"
;
import
{
addTask
}
from
"../../data/fuHuaQi/customTask"
;
import
{
addTask
}
from
"../../data/fuHuaQi/customTask"
;
import
{
addressIsInZJ
,
getAddressLatAndLng
,
latLngInZJ
}
from
"../../tools/transCode"
;
const
xlsx
=
require
(
'node-xlsx'
);
const
xlsx
=
require
(
'node-xlsx'
);
const
path
=
require
(
'path'
);
const
path
=
require
(
'path'
);
...
@@ -1741,12 +1742,12 @@ export async function test111() {
...
@@ -1741,12 +1742,12 @@ export async function test111() {
export
async
function
zhenDuanBaoGao
()
{
export
async
function
zhenDuanBaoGao
()
{
let
fhqList
=
[
let
fhqList
=
[
"上海
狮子山
企业管理有限公司"
,
"上海
衍禧堂
企业管理有限公司"
,
"上海
荟泉实业
有限公司"
,
"上海
谦岩企业管理
有限公司"
,
"
九沐(上海)投资
有限公司"
,
"
上海瀜澈企业管理
有限公司"
,
"上海
闵玉物联网科技
有限公司"
,
"上海
点金树创业孵化器
有限公司"
,
"上海
考拉创客空间管理
有限公司"
,
"上海
翔港创业投资
有限公司"
,
"上海
雨艺
创业孵化器管理有限公司"
"上海
晟唐
创业孵化器管理有限公司"
];
];
...
@@ -2086,4 +2087,212 @@ export async function test11111() {
...
@@ -2086,4 +2087,212 @@ export async function test11111() {
fs
.
writeFileSync
(
path
.
join
(
__dirname
.
substring
(
0
,
__dirname
.
indexOf
(
"out"
)),
"res"
,
'雨艺在孵企业excel.xlsx'
),
buff
);
fs
.
writeFileSync
(
path
.
join
(
__dirname
.
substring
(
0
,
__dirname
.
indexOf
(
"out"
)),
"res"
,
'雨艺在孵企业excel.xlsx'
),
buff
);
console
.
log
();
console
.
log
();
}
export
async
function
test
()
{
// let enterpriseList = await enterpriseData.findEnterpriseList({});
let
list
=
await
enterpriseData
.
findEnterpriseList
({
state
:
FUHUASTATE
.
实体孵化
});
let
enterpriseList
=
[];
for
(
let
i
=
0
;
i
<
list
.
length
;
i
++
)
{
let
{
logonTime
,
industry
,
logonAddress
,
state
,
lng
,
lat
}
=
list
[
i
];
// continue;
let
zaiFuQiYeSuccess
=
false
;
let
logonAddressSuccess
=
false
;
if
(
logonTime
)
{
let
yearLong
=
moment
().
diff
(
logonTime
,
'years'
);
if
(
industry
.
indexOf
(
INDUSTRY
.
人工智能及智能制造
)
!=
-
1
||
industry
.
indexOf
(
INDUSTRY
.
生物医药
)
!=
-
1
||
industry
.
indexOf
(
INDUSTRY
.
集成电路
)
!=
-
1
)
{
if
(
yearLong
<
5
)
zaiFuQiYeSuccess
=
true
;
}
else
{
//其他领域
if
(
yearLong
<
4
)
zaiFuQiYeSuccess
=
true
;
}
}
if
(
logonAddress
&&
logonAddress
.
length
&&
logonAddress
[
1
]
&&
state
==
FUHUASTATE
.
实体孵化
)
{
if
(
lat
&&
lng
)
{
let
isInZJ
=
await
latLngInZJ
(
parseFloat
(
lat
),
parseFloat
(
lng
));
if
(
isInZJ
)
{
logonAddressSuccess
=
true
;
}
}
}
if
(
logonAddressSuccess
&&
zaiFuQiYeSuccess
)
{
enterpriseList
.
push
(
list
[
i
]);
console
.
log
(
i
);
}
}
let
usccMap
=
await
fuhuaqiData
.
findFuHuaQiOperationNameMapByParam
({});
//用于将孵化器uscc变成孵化器名称
/**组合二维数组 titleList 与 keyList 要一一对应 */
const
TitleList
=
[
"企业名称"
,
"入库时间"
,
"所属孵化器"
,
"新注册/新迁入"
,
"孵化状态"
,
"虚拟孵化服务模式"
,
"统一信用代码"
,
"行业领域"
,
"主营业务"
,
"注册时间"
,
"首次入孵时间"
,
"迁入时间"
,
"是否自然人控股"
,
"迁入前注册地址"
,
"注册地址"
,
"经营地址"
,
"租赁面积(平方米)"
,
"创业创新方向"
,
"创业创始人背景"
,
"海外专利"
,
"一类专利"
,
"二类专利"
,
"是否上市"
,
"高新技术"
,
"专精特新"
,
"小巨人培育"
,
"小巨人"
];
//表头顺序 如果这里修改了 下面的keyList也要修改
const
KeyList
=
[
"name"
,
"createTime"
,
"fuhuaqiUscc"
,
"isCreate"
,
"state"
,
"virtualCause"
,
"uscc"
,
"industry"
,
"mainBusiness"
,
"logonTime"
,
"firstIncubationTime"
,
"timeOfImmigration"
,
"isNaturalPersonHolding"
,
"oldLogonAddress"
,
"logonAddress"
,
"operatingAddress"
,
"leasedArea"
,
"cycxfx"
,
"cycsrbj"
,
"alienPatent"
,
"classIPatent"
,
"secondClassPatent"
,
"beOnTheMarket"
,
"highTechMs"
,
"zjtxMs"
,
"xjrpyMs"
,
"xjrMs"
];
//表头对应的字段顺序
let
dataList
=
[
TitleList
];
for
(
let
i
=
0
;
i
<
enterpriseList
.
length
;
i
++
)
{
let
info
=
enterpriseList
[
i
];
/**截取返回结果 */
let
changeData
:
any
=
extractData
(
EnterpriseListConfig
,
info
,
true
);
/**匹配所属孵化器名称 匹配不上时这里显示空字符串 */
changeData
.
fuhuaqiUscc
=
usccMap
[
info
.
fuHuaQiUscc
]
||
""
;
if
(
!
info
.
taskId
||
info
.
enterpriseIsInPut
)
{
if
(
info
.
enterpriseIsInPut
)
changeData
.
isCreate
=
"底库数据"
;
else
{
changeData
.
isCreate
=
(
changeData
.
isCreate
)?
"补录新注册"
:
"补录新迁入"
;
}
}
else
changeData
.
isCreate
=
(
changeData
.
isCreate
)
?
"新注册"
:
"新迁入"
;
if
(
!
changeAddToString
(
info
.
oldLogonAddress
))
{
changeData
.
oldLogonAddress
=
"-"
;
}
if
(
!
changeAddToString
(
info
.
logonAddress
))
{
changeData
.
logonAddress
=
"-"
;
}
if
(
!
changeAddToString
(
info
.
operatingAddress
))
{
changeData
.
operatingAddress
=
"-"
;
}
changeData
.
cycxfx
=
changeEnumValue
(
CYCXFX
,
changeData
.
cycxfx
)
||
"未选择"
;
changeData
.
cycsrbj
=
changeEnumValue
(
CYCSRBJ
,
changeData
.
cycsrbj
)
||
"未选择"
;
changeData
.
isNaturalPersonHolding
=
changeData
.
isNaturalPersonHolding
?
"是"
:
"否"
;
/**修改枚举值 */
changeData
.
industry
=
changeEnumValue
(
INDUSTRY
,
changeData
.
industry
);
changeData
.
state
=
changeEnumValue
(
FUHUASTATE
,
changeData
.
state
);
changeData
.
virtualCause
=
changeEnumValue
(
VIRTUALCAUSE
,
changeData
.
virtualCause
);
/**- */
let
intellectualProperty
=
changeData
.
intellectualProperty
||
{}
changeData
.
alienPatent
=
intellectualProperty
.
alienPatent
||
0
;
changeData
.
classIPatent
=
intellectualProperty
.
classIPatent
||
0
;
changeData
.
secondClassPatent
=
intellectualProperty
.
secondClassPatent
||
0
;
if
(
changeData
.
qualification
)
{
let
onceData
=
changeData
.
qualification
;
let
beOnTheMarket
=
"无上市"
;
if
(
onceData
.
beOnTheMarket
){
beOnTheMarket
=
changeEnumValue
(
FINANCINGROUNDS
,
onceData
.
beOnTheMarket
)
||
"无上市"
}
changeData
.
beOnTheMarket
=
beOnTheMarket
;
changeData
.
highTechMs
=
onceData
.
highTechMs
?
new
Date
(
onceData
.
highTechMs
).
getFullYear
()
:
'未认证'
;
//高新技术
changeData
.
zjtxMs
=
onceData
.
zjtxMs
?
new
Date
(
onceData
.
zjtxMs
).
getFullYear
()
:
'未认证'
;
//专精特新
changeData
.
xjrpyMs
=
onceData
.
xjrpyMs
?
new
Date
(
onceData
.
xjrpyMs
).
getFullYear
()
:
'未认证'
;
//小巨人培育
changeData
.
xjrMs
=
onceData
.
xjrMs
?
new
Date
(
onceData
.
xjrMs
).
getFullYear
()
:
'未认证'
;
//小巨人
}
else
{
changeData
.
beOnTheMarket
=
"无上市"
;
//是否上市
changeData
.
highTechMs
=
'未认证'
;
//高新技术
changeData
.
zjtxMs
=
'未认证'
;
//专精特新
changeData
.
xjrpyMs
=
'未认证'
;
//小巨人培育
changeData
.
xjrMs
=
'未认证'
;
//小巨人
}
/**根据表头与key的顺序 生成小数组 */
let
subList
=
[];
KeyList
.
forEach
(
keyStr
=>
{
let
value
=
changeData
[
keyStr
];
if
(
value
==
null
||
value
==
undefined
)
value
=
"-"
subList
.
push
(
value
);
});
dataList
.
push
(
subList
);
}
let
data
=
[
{
name
:
"sheet1"
,
data
:
dataList
}
];
let
buff
=
xlsx
.
build
(
data
);
fs
.
writeFileSync
(
path
.
join
(
__dirname
.
substring
(
0
,
__dirname
.
indexOf
(
"out"
)),
"res"
,
`截至
${
new
Date
().
getMonth
()
+
1
}
全部企业.xlsx`
),
buff
);
console
.
log
(
"数据更新完成"
);
}
export
async
function
修复重复
()
{
let
usccList
=
await
enterpriseData
.
repeatEnterprise
();
for
(
let
i
=
0
;
i
<
usccList
.
length
;
i
++
)
{
let
uscc
=
usccList
[
i
];
let
thisUsccEnterpriseList
=
await
findEnterpriseList
({
uscc
});
thisUsccEnterpriseList
.
forEach
(
item
=>
{
let
{
_id
,
uscc
,
fuHuaQiUscc
,
name
,
state
,
createTime
,
taskId
,
draftLock
,
firstLoginIsChangePwd
,
zuZhiJiGouDaiMa
}
=
item
;
console
.
log
(
_id
,
uscc
,
fuHuaQiUscc
,
name
,
state
,
moment
(
createTime
).
format
(
"YYYY-MM-DD"
),
taskId
,
draftLock
,
firstLoginIsChangePwd
,
zuZhiJiGouDaiMa
);
});
console
.
log
(
"--"
);
console
.
log
();
}
let
removeList
=
[];
removeList
.
push
({
uscc
:
"91310115MAD600EEXK"
,
zuZhiJiGouDaiMa
:
null
});
removeList
.
push
({
uscc
:
"91310115MABRJG092Y"
,
firstLoginIsChangePwd
:
false
});
//上海岩测科技有限公司
removeList
.
push
({
uscc
:
"91310115MABQABT77B"
,
firstLoginIsChangePwd
:
false
});
//上海欢引科技有限公司
removeList
.
push
({
uscc
:
"91310115MAC7AQU44W"
,
firstLoginIsChangePwd
:
false
});
//广天映泰(上海)生物科技有限公司
removeList
.
push
({
uscc
:
"91310115MA1K4T7Y0L"
,
zuZhiJiGouDaiMa
:
null
});
removeList
.
push
({
uscc
:
"91310115MA1HBEHJ6X"
,
firstLoginIsChangePwd
:
false
});
//上海伴芯科技有限公司
removeList
.
push
({
uscc
:
"91310115MACCLEPJ70"
,
state
:
4
});
//上海池瀚生物科技有限公司
removeList
.
push
({
uscc
:
"91310115MA1HB8TL2B"
,
firstLoginIsChangePwd
:
false
});
//上海锶唯弗实业有限公司
removeList
.
push
({
uscc
:
"91310115MA1K4UBL2E"
,
firstLoginIsChangePwd
:
false
});
//九奕半导体设备(上海)有限公司
removeList
.
push
({
uscc
:
"91310115MA1K3NHN2N"
,
state
:
4
});
//上海巍啊数字科技有限公司
removeList
.
push
({
uscc
:
"91310120MA1HRWDU7C"
,
zuZhiJiGouDaiMa
:
null
});
removeList
.
push
({
uscc
:
"91310114398613914X"
,
zuZhiJiGouDaiMa
:
null
});
removeList
.
push
({
uscc
:
"91310000342209349R"
,
zuZhiJiGouDaiMa
:
null
});
removeList
.
push
({
uscc
:
"91310115MA1H9BY42P"
,
fuHuaQiUscc
:
null
});
removeList
.
push
({
uscc
:
"91310115MA1HB1146N"
,
zuZhiJiGouDaiMa
:
null
});
removeList
.
push
({
uscc
:
"91310115MA1HAQKR87"
,
zuZhiJiGouDaiMa
:
null
});
removeList
.
push
({
uscc
:
"91310115MA1HB1BX7C"
,
zuZhiJiGouDaiMa
:
null
});
console
.
log
();
}
export
async
function
补充经纬度
()
{
let
enterpriseList
=
await
findEnterpriseList
({});
// for (let i = 0; i < enterpriseList.length; i++) {
// let {uscc} = enterpriseList[i];
// let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
// if (enterpriseInfo.logonAddress && enterpriseInfo.logonAddress.length && enterpriseInfo.logonAddress[0]) {
// let pointInfo = await getAddressLatAndLng(changeAddToString(enterpriseInfo.logonAddress), enterpriseInfo.logonAddress[0], uscc);
// if (!pointInfo.error) {
// enterpriseInfo.lng = pointInfo.lng;
// enterpriseInfo.lat = pointInfo.lat;
// console.log(i);
// }
// }
// await enterpriseInfo.save();
// }
for
(
let
i
=
0
;
i
<
enterpriseList
.
length
;
i
++
)
{
let
{
uscc
}
=
enterpriseList
[
i
];
let
enterpriseInfo
=
await
enterpriseData
.
findEnterpriseByUscc
(
uscc
);
if
(
enterpriseInfo
.
oldLogonAddress
&&
enterpriseInfo
.
oldLogonAddress
.
length
&&
enterpriseInfo
.
oldLogonAddress
[
0
])
{
let
pointInfo
=
await
getAddressLatAndLng
(
changeAddToString
(
enterpriseInfo
.
oldLogonAddress
),
enterpriseInfo
.
oldLogonAddress
[
0
],
uscc
);
if
(
!
pointInfo
.
error
)
{
enterpriseInfo
.
oldLng
=
pointInfo
.
lng
;
enterpriseInfo
.
oldLat
=
pointInfo
.
lat
;
console
.
log
(
i
);
}
}
await
enterpriseInfo
.
save
();
}
console
.
log
(
"经纬度更新成功"
);
}
}
\ No newline at end of file
src/data/enterprise/enterprise.ts
View file @
7c77145f
...
@@ -125,7 +125,13 @@ const enterpriseSchema = new Schema({
...
@@ -125,7 +125,13 @@ const enterpriseSchema = new Schema({
jianJie
:
String
,
//企业简介
jianJie
:
String
,
//企业简介
dengJiJiGuan
:
String
,
//登记机关
dengJiJiGuan
:
String
,
//登记机关
naShuiRenZiZhi
:
Number
,
//纳税人资质
naShuiRenZiZhi
:
Number
,
//纳税人资质
zuiXinNianBaoNianFen
:
Number
//最新年报年份
zuiXinNianBaoNianFen
:
Number
,
//最新年报年份
//经纬度
lng
:
String
,
//经度
lat
:
String
,
//纬度
//迁入前经纬度
oldLng
:
String
,
//经度
oldLat
:
String
,
//纬度
});
});
var
enterpriseModel
;
var
enterpriseModel
;
...
@@ -610,7 +616,8 @@ export async function statsFuHuaQiEnterpriseArea(fuHuaQiUscc:string) {
...
@@ -610,7 +616,8 @@ export async function statsFuHuaQiEnterpriseArea(fuHuaQiUscc:string) {
let
result
=
await
enterpriseModel
.
aggregate
([
let
result
=
await
enterpriseModel
.
aggregate
([
{
{
"$match"
:{
"$match"
:{
fuHuaQiUscc
fuHuaQiUscc
,
state
:{
"$ne"
:
4
}
}
}
},
},
{
{
...
@@ -626,4 +633,34 @@ export async function statsFuHuaQiEnterpriseArea(fuHuaQiUscc:string) {
...
@@ -626,4 +633,34 @@ export async function statsFuHuaQiEnterpriseArea(fuHuaQiUscc:string) {
}
}
]);
]);
return
result
[
0
];
return
result
[
0
];
}
export
async
function
repeatEnterprise
()
{
let
result
=
await
enterpriseModel
.
aggregate
([
{
$group
:
{
_id
:
"$uscc"
,
// 按照email字段进行分组
count
:
{
$sum
:
1
},
// 计算每个email出现的次数
}
},
{
$match
:
{
count
:
{
$gt
:
1
}
// 筛选出那些email出现次数大于1的分组
}
},
{
$project
:
{
_id
:
0
,
// 不需要_id字段
uscc
:
"$_id"
,
// 将_id字段重命名为email
count
:
1
,
// 显示count字段
}
}
]);
let
usccList
=
[];
result
.
forEach
(
info
=>
{
usccList
.
push
(
info
.
uscc
);
});
return
usccList
;
}
}
\ No newline at end of file
src/data/fuHuaQi/customTask.ts
View file @
7c77145f
...
@@ -76,3 +76,14 @@ export async function findCustomTaskCount(param) {
...
@@ -76,3 +76,14 @@ export async function findCustomTaskCount(param) {
export
async
function
addTask
(
customTaskId
:
string
,
customTaskType
:
number
,
dataCycle
:
number
,
startMs
:
number
,
endMs
:
number
)
{
export
async
function
addTask
(
customTaskId
:
string
,
customTaskType
:
number
,
dataCycle
:
number
,
startMs
:
number
,
endMs
:
number
)
{
await
customTaskModel
.
create
({
customTaskId
,
customTaskType
,
dataCycle
,
startMs
,
endMs
,
ct
:
new
Date
().
valueOf
()});
await
customTaskModel
.
create
({
customTaskId
,
customTaskType
,
dataCycle
,
startMs
,
endMs
,
ct
:
new
Date
().
valueOf
()});
}
}
/**
* 获取最新月份
* @param param
*/
export
async
function
getNewMonthTask
(
customTaskType
:
number
)
{
let
list
=
await
customTaskModel
.
find
({
customTaskType
}).
sort
({
dataCycle
:
-
1
}).
limit
(
1
);
return
list
[
0
];
}
\ No newline at end of file
src/main.ts
View file @
7c77145f
import
{
test
,
zhenDuanBaoGao
,
修复重复
,
补充经纬度
}
from
"./biz/admin/provide"
;
import
{
initPool
}
from
"./biz/gpt/indicatorPool"
;
import
{
initPool
}
from
"./biz/gpt/indicatorPool"
;
import
{
initOutline
}
from
"./biz/gpt/report"
;
import
{
initOutline
}
from
"./biz/gpt/report"
;
import
{
initSMS
}
from
"./biz/sms"
;
import
{
initSMS
}
from
"./biz/sms"
;
...
@@ -24,7 +25,9 @@ async function lanuch() {
...
@@ -24,7 +25,9 @@ async function lanuch() {
/**创建http服务 */
/**创建http服务 */
httpServer
.
createServer
(
systemConfig
.
port
);
httpServer
.
createServer
(
systemConfig
.
port
);
console
.
log
(
'This indicates that the server is started successfully.'
);
console
.
log
(
'This indicates that the server is started successfully.'
);
// await zhenDuanBaoGao();
// await 补充经纬度();
// await test();
// await zhenDuanBaoGao();
// await zhenDuanBaoGao();
}
}
...
...
src/routers/admin/checkData.ts
0 → 100644
View file @
7c77145f
/**
* 管理后台端 数据校验
*/
import
*
as
asyncHandler
from
'express-async-handler'
;
import
{
checkGuanWeiHuiToken
}
from
'../../middleware/user'
;
import
{
eccReqParamater
}
from
'../../util/verificationParam'
;
import
{
checkEnterpriseDataList
,
dwEnterpriseDataList
,
monthData
,
upCheckEnterpriseData
}
from
'../../biz/admin/checkData/checkMonthData'
;
export
function
setRouter
(
httpServer
)
{
httpServer
.
post
(
'/admin/checkdata/list'
,
checkGuanWeiHuiToken
,
asyncHandler
(
checkDataList
));
httpServer
.
post
(
'/admin/checkdata/list/dw'
,
checkGuanWeiHuiToken
,
asyncHandler
(
dwCheckDataList
));
httpServer
.
post
(
'/admin/checkdata/list/check'
,
checkGuanWeiHuiToken
,
asyncHandler
(
checkData
));
httpServer
.
post
(
'/admin/checkdata/monthdata/dw'
,
checkGuanWeiHuiToken
,
asyncHandler
(
dwMonthDataList
));
}
/**
* 校验数据列表
* @param req
* @param res
*/
async
function
checkDataList
(
req
,
res
)
{
let
reqConf
=
{
page
:
'Number'
};
const
NotMustHaveKeys
=
[];
let
{
page
}
=
eccReqParamater
(
reqConf
,
req
.
body
,
NotMustHaveKeys
);
let
result
=
await
checkEnterpriseDataList
(
page
);
res
.
success
(
result
);
}
/**
* 下载校验数据
* @param req
* @param res
*/
async
function
dwCheckDataList
(
req
,
res
)
{
let
result
=
await
dwEnterpriseDataList
();
res
.
success
(
result
);
}
async
function
checkData
(
req
,
res
)
{
let
reqConf
=
{
dataList
:
'[Object]'
};
const
NotMustHaveKeys
=
[];
let
{
dataList
}
=
eccReqParamater
(
reqConf
,
req
.
body
,
NotMustHaveKeys
);
let
result
=
await
upCheckEnterpriseData
(
dataList
);
res
.
success
(
result
);
}
/**
* 下载校验数据
* @param req
* @param res
*/
async
function
dwMonthDataList
(
req
,
res
)
{
let
result
=
await
monthData
();
res
.
success
(
result
);
}
src/routers/admin/enterprise.ts
View file @
7c77145f
...
@@ -32,6 +32,9 @@ export function setRouter(httpServer) {
...
@@ -32,6 +32,9 @@ export function setRouter(httpServer) {
/**企业创始团队列表 */
/**企业创始团队列表 */
httpServer
.
post
(
'/admin/enterprise/initialteam'
,
checkGuanWeiHuiToken
,
asyncHandler
(
initialTeamList
));
httpServer
.
post
(
'/admin/enterprise/initialteam'
,
checkGuanWeiHuiToken
,
asyncHandler
(
initialTeamList
));
httpServer
.
post
(
'/admin/data/output/initialteam'
,
checkGuanWeiHuiToken
,
asyncHandler
(
outPutEnterpriseInitialTeamList
));
httpServer
.
post
(
'/admin/data/output/initialteam'
,
checkGuanWeiHuiToken
,
asyncHandler
(
outPutEnterpriseInitialTeamList
));
/**企业名称编辑 */
httpServer
.
post
(
'/admin/enterprise/info'
,
checkGuanWeiHuiToken
,
asyncHandler
(
enterpriseInfo
));
httpServer
.
post
(
'/admin/enterprise/info/update'
,
checkGuanWeiHuiToken
,
asyncHandler
(
updateEnterpriseInfo
));
}
}
...
@@ -313,4 +316,32 @@ async function outPutEnterpriseInitialTeamList(req, res) {
...
@@ -313,4 +316,32 @@ async function outPutEnterpriseInitialTeamList(req, res) {
let
{
dataList
,
fileName
}
=
await
enterpriseAdminBiz
.
outPutInitialTeamList
(
name
,
member
,
memberType
,
type
,
fuHuaQiUscc
);
let
{
dataList
,
fileName
}
=
await
enterpriseAdminBiz
.
outPutInitialTeamList
(
name
,
member
,
memberType
,
type
,
fuHuaQiUscc
);
res
.
success
({
data
:
dataList
,
name
:
`
${
fileName
}
企业创始团队数据.xlsx`
});
res
.
success
({
data
:
dataList
,
name
:
`
${
fileName
}
企业创始团队数据.xlsx`
});
}
}
\ No newline at end of file
/**
* 企业信息回显
*/
async
function
enterpriseInfo
(
req
,
res
)
{
let
reqConf
=
{
uscc
:
"String"
};
const
NotMustHaveKeys
=
[];
let
{
uscc
}
=
eccReqParamater
(
reqConf
,
req
.
body
,
NotMustHaveKeys
);
let
restult
=
await
enterpriseAdminBiz
.
enterpriseInfomation
(
uscc
);
res
.
success
(
restult
);
}
/**
* 企业信息修改
*/
async
function
updateEnterpriseInfo
(
req
,
res
)
{
let
reqConf
=
{
uscc
:
"String"
,
name
:
"String"
};
const
NotMustHaveKeys
=
[];
let
{
uscc
,
name
}
=
eccReqParamater
(
reqConf
,
req
.
body
,
NotMustHaveKeys
);
let
restult
=
await
enterpriseAdminBiz
.
updateEnterpriseInfomation
(
uscc
,
name
);
res
.
success
(
restult
);
}
src/routers/router.ts
View file @
7c77145f
...
@@ -43,6 +43,8 @@ import * as guanWeiHuiMobileClientUserRouters from './guanWeiHuiMobileClient/use
...
@@ -43,6 +43,8 @@ import * as guanWeiHuiMobileClientUserRouters from './guanWeiHuiMobileClient/use
import
*
as
dangJianRouters
from
'./mobileClient/dangJian'
;
import
*
as
dangJianRouters
from
'./mobileClient/dangJian'
;
import
*
as
checkDataRouters
from
'./admin/checkData'
;
export
function
setRouter
(
httpServer
){
export
function
setRouter
(
httpServer
){
/**下拉框等公用 路由 */
/**下拉框等公用 路由 */
publicRouters
.
setRouter
(
httpServer
);
publicRouters
.
setRouter
(
httpServer
);
...
@@ -94,4 +96,7 @@ export function setRouter(httpServer){
...
@@ -94,4 +96,7 @@ export function setRouter(httpServer){
/**党建 */
/**党建 */
dangJianRouters
.
setRouter
(
httpServer
);
dangJianRouters
.
setRouter
(
httpServer
);
/**数据校验 */
checkDataRouters
.
setRouter
(
httpServer
);
}
}
\ No newline at end of file
src/tools/transCode.ts
View file @
7c77145f
...
@@ -18,7 +18,8 @@ export async function addressIsInZJ(address) {
...
@@ -18,7 +18,8 @@ export async function addressIsInZJ(address) {
}
}
let
reuslt
:
any
=
await
get
(
"https://api.map.baidu.com/geocoding/v3/"
,
param
);
let
reuslt
:
any
=
await
get
(
"https://api.map.baidu.com/geocoding/v3/"
,
param
);
if
(
reuslt
.
status
!=
0
||
!
reuslt
.
result
.
location
)
{
if
(
reuslt
.
status
!=
0
||
!
reuslt
.
result
.
location
)
{
throw
new
BizError
(
"获取张江地址错误"
,
reuslt
.
message
,
JSON
.
stringify
(
reuslt
));
new
BizError
(
"获取张江地址错误"
,
reuslt
.
message
,
JSON
.
stringify
(
reuslt
));
return
false
;
}
}
let
point
=
reuslt
.
result
.
location
;
//转换好的经纬度
let
point
=
reuslt
.
result
.
location
;
//转换好的经纬度
...
@@ -39,24 +40,45 @@ export async function addressIsInZJ(address) {
...
@@ -39,24 +40,45 @@ export async function addressIsInZJ(address) {
return
isInside
;
return
isInside
;
}
}
// /**
export
async
function
latLngInZJ
(
lat
:
number
,
lng
:
number
)
{
// * 获取经纬度
let
point
=
{
lat
,
lng
};
// * @param address
/**射线法判断是否属于各个范围 命中一个就返回true*/
// * @param city
let
isInside
=
false
;
// * @returns
for
(
let
k
=
0
;
k
<
areaList
.
length
;
k
++
)
{
// */
let
polygon
:
any
=
areaList
[
k
];
//单个区域
// export async function getAddressLatAndLng(address, city) {
// let param = {
if
(
polygon
[
0
].
lat
!=
polygon
[
polygon
.
length
-
1
].
lat
||
polygon
[
0
].
lng
!=
polygon
[
polygon
.
length
-
1
].
lng
)
{
// address:address,
polygon
.
push
(
polygon
[
0
]);
// output:"json",
}
// ak:"tXZNOtuhb3PJHwax0eb7DkgHP9Zh5QOb",
// }
isInside
=
itemIsPointInPolygon
(
point
,
polygon
);
// let reuslt:any = await get("https://api.map.baidu.com/geocoding/v3/", param);
// if (reuslt.status == 0) {
if
(
isInside
)
break
;
// return reuslt.result.location
}
// }
// return {error:true, errMsg:reuslt.message||JSON.stringify(reuslt) };
return
isInside
;
// }
}
/**
* 获取经纬度
* @param address
* @param city
* @returns
*/
export
async
function
getAddressLatAndLng
(
address
,
city
,
uscc
)
{
let
param
=
{
address
:
address
,
output
:
"json"
,
city
,
ak
:
systemConfig
.
ak
,
}
let
reuslt
:
any
=
await
get
(
"https://api.map.baidu.com/geocoding/v3/"
,
param
);
if
(
reuslt
.
status
==
0
)
{
return
reuslt
.
result
.
location
}
console
.
log
(
uscc
,
"失败"
,
JSON
.
stringify
(
reuslt
));
return
{
error
:
true
,
errMsg
:
reuslt
.
message
||
JSON
.
stringify
(
reuslt
)
};
}
// //使用射线法
// //使用射线法
// export function isPointInPolygon(point) {
// export function isPointInPolygon(point) {
...
...
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