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
f413e134
Commit
f413e134
authored
Mar 03, 2023
by
lixinming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
59eb3e6d
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
612 additions
and
75 deletions
+612
-75
enterprise.ts
src/biz/admin/enterprise/enterprise.ts
+1
-1
provide.ts
src/biz/admin/provide.ts
+55
-0
enterprise.ts
src/biz/mobileFuHuaQi/enterprise/enterprise.ts
+115
-7
task.ts
src/biz/mobileFuHuaQi/fuHuaQi/task.ts
+12
-42
user.ts
src/biz/mobileFuHuaQi/fuHuaQi/user.ts
+19
-1
enum.ts
src/config/enum.ts
+9
-2
errorEnum.ts
src/config/errorEnum.ts
+3
-1
enterprise.ts
src/data/enterprise/enterprise.ts
+15
-3
fuhuaqi.ts
src/data/fuHuaQi/fuhuaqi.ts
+2
-1
main.ts
src/main.ts
+2
-0
fuHuaQi.ts
src/routers/admin/fuHuaQi.ts
+9
-2
enterprise.ts
src/routers/mobileClient/enterprise.ts
+80
-9
fuHuaQi.ts
src/routers/mobileClient/fuHuaQi.ts
+3
-5
user.ts
src/routers/mobileClient/user.ts
+11
-0
public.ts
src/routers/public.ts
+67
-1
analysisExcel.ts
src/util/analysisExcel.ts
+209
-0
No files found.
src/biz/admin/enterprise/enterprise.ts
View file @
f413e134
...
...
@@ -116,7 +116,7 @@ export async function outPutEnterpriseData(createType:number, fuHuaQiUscc:string
/**根据表头与key的顺序 生成小数组 */
let
subList
=
[];
KeyList
.
forEach
(
keyStr
=>
{
subList
.
push
(
info
[
keyStr
]
||
''
);
subList
.
push
(
changeData
[
keyStr
]
||
''
);
});
dataList
.
push
(
subList
);
});
...
...
src/biz/admin/provide.ts
0 → 100644
View file @
f413e134
/**内部开放接口 */
import
*
as
monthTableData
from
"../../data/fuHuaQi/monthTable"
;
import
*
as
taskData
from
"../../data/fuHuaQi/task"
;
import
*
as
enterpriseData
from
"../../data/enterprise/enterprise"
;
import
{
FUHUASTATE
,
TASKTYPEENUM
}
from
"../../config/enum"
;
import
{
ERRORENUM
}
from
"../../config/errorEnum"
;
import
{
findAllNotDisabledFuHuaQi
}
from
"../../data/fuHuaQi/fuhuaqi"
;
import
{
BizError
}
from
"../../util/bizError"
;
import
{
logHandle
}
from
"../../util/log"
;
/**
* 发放1月数据
*/
export
async
function
provideLastTask
()
{
const
TimeKey
=
'20232'
;
let
addList
=
[];
//任务列表
let
monthList
=
[];
//月度填报列表
const
MonthNumber
=
1
;
//数据填报月份
const
YearNumber
=
2023
const
MonthTableName
=
`
${
MonthNumber
}
月孵化器月度填报`
;
let
fuHuaQiList
=
await
findAllNotDisabledFuHuaQi
();
fuHuaQiList
.
forEach
(
info
=>
{
let
{
uscc
}
=
info
;
let
taskId
=
`
${
uscc
}${
TimeKey
}
`
;
addList
.
push
(
{
key
:
TimeKey
,
type
:
TASKTYPEENUM
.
孵化器月度填报
,
month
:
1
,
taskId
,
fuHuaQiUscc
:
uscc
,
isSubmit
:
false
},
{
key
:
TimeKey
,
type
:
TASKTYPEENUM
.
新注册或迁入企业登记
,
month
:
1
,
taskId
,
fuHuaQiUscc
:
uscc
,
isSubmit
:
false
},
{
key
:
TimeKey
,
type
:
TASKTYPEENUM
.
融资企业填报
,
month
:
1
,
taskId
,
fuHuaQiUscc
:
uscc
,
isSubmit
:
false
});
/**任务报表的初始状态为 草稿(draftLock=fals) 未被编辑(isUpdate=false) */
monthList
.
push
({
taskId
,
name
:
MonthTableName
,
fuHuaQiUscc
:
uscc
,
month
:
MonthNumber
,
year
:
YearNumber
,
draftLock
:
false
,
isUpdate
:
false
});
});
try
{
/**初始化 任务 */
await
taskData
.
createTaskToList
(
addList
);
logHandle
(
`添加了
${
addList
.
length
}
任务`
);
/**初始化 月度填报表 */
await
monthTableData
.
createMonthTableToList
(
monthList
);
logHandle
(
`添加了
${
monthList
.
length
}
月度任务`
);
}
catch
(
err
)
{
new
BizError
(
ERRORENUM
.
系统错误
,
'添加任务和月度报表的时候 出现了异常 请检查数据库 '
,
err
);
}
}
export
async
function
updateEnterpriseFuHuaState
()
{
await
enterpriseData
.
updateEnterpriseState
(
FUHUASTATE
.
实体孵化
);
return
{};
}
\ No newline at end of file
src/biz/mobileFuHuaQi/enterprise/enterprise.ts
View file @
f413e134
...
...
@@ -177,18 +177,45 @@ export async function deleteEnterpriseByDraftId(draftId:string) {
/**
* 我的企业
* 我的企业
列表
* 小程序端 2.0
* @param uscc 孵化器统一信用代码
* @param state 孵化器状态 遵循 枚举FUHUASTATE
* @param name 孵化器名称
* @param page 当前页面
*/
export
async
function
myEnterprise
(
uscc
:
string
,
state
:
number
,
name
:
string
)
{
export
async
function
myEnterprise
(
uscc
:
string
,
state
:
number
,
name
:
string
,
page
:
number
)
{
let
selectParam
:
any
=
{
state
,
fuHuaQiUscc
:
uscc
};
let
result
:
any
=
{};
let
selectParam
:
any
=
{
fuHuaQiUscc
:
uscc
};
if
(
name
)
selectParam
.
name
=
name
;
if
(
state
==
configEnum
.
INSIDESTATE
.
全部
)
{
selectParam
.
state
=
{
"$lt"
:
4
};
}
else
selectParam
.
state
=
state
;
let
dataList
=
await
enterpriseData
.
findEnterpriseList
(
selectParam
);
let
dataList
=
await
enterpriseData
.
findEnterpriseListToPage
(
selectParam
,
(
page
-
1
)
*
10
);
/**当前条件数据量 */
let
dataCount
=
await
enterpriseData
.
findEnterpriseCount
(
selectParam
);
/**当前条件页面数量 */
result
.
dataCount
=
dataCount
;
result
.
pageCount
=
Math
.
ceil
(
dataCount
/
10
);
if
(
state
!=
configEnum
.
FUHUASTATE
.
迁出
)
{
/**查询所有的数据量 */
let
allCount
=
await
enterpriseData
.
findEnterpriseCount
({
fuHuaQiUscc
:
uscc
});
let
virtualCount
=
0
;
if
(
state
==
configEnum
.
FUHUASTATE
.
虚拟孵化
)
virtualCount
=
dataCount
;
else
virtualCount
=
await
enterpriseData
.
findEnterpriseCount
({
fuHuaQiUscc
:
uscc
,
state
:
configEnum
.
FUHUASTATE
.
虚拟孵化
});
result
.
dataNumberList
=
[
{
key
:
configEnum
.
INSIDESTATE
.
全部
,
value
:
`全部(
${
allCount
}
)`
},
{
key
:
configEnum
.
INSIDESTATE
.
实体孵化
,
value
:
`实体孵化(
${
allCount
-
virtualCount
}
)`
},
{
key
:
configEnum
.
INSIDESTATE
.
虚拟孵化
,
value
:
`虚拟孵化(
${
virtualCount
}
)`
},
];
}
let
enterpriseList
=
[];
...
...
@@ -197,6 +224,87 @@ export async function myEnterprise(uscc:string, state:number, name:string) {
changeData
.
state
=
verificationEnumTools
.
changeEnumValue
(
configEnum
.
FUHUASTATE
,
changeData
.
state
);
enterpriseList
.
push
(
changeData
);
});
result
.
enterpriseList
=
enterpriseList
;
return
{
enterpriseList
};
}
\ No newline at end of file
return
result
;
}
/**
* 修改企业孵化状态 修改为实体
* 小程序端 2.0
* @param fuHuaQiUscc 孵化器统一信用代码
* @param uscc 企业统一信用代码
* @param leasedArea 租赁面积
* @returns {isSuccess:true/false}
*/
export
async
function
updatePhysicalInfo
(
fuHuaQiUscc
:
string
,
uscc
:
string
,
leasedArea
:
number
)
{
let
enterpriseInfo
=
await
enterpriseData
.
findEnterpriseByUscc
(
uscc
);
if
(
!
enterpriseInfo
)
throw
new
BizError
(
ERRORENUM
.
该企业不存在
,
"修改企业孵化状态 修改为实体"
,
`孵化器
${
fuHuaQiUscc
}
-> 企业
${
uscc
}
`
);
if
(
enterpriseInfo
.
fuHuaQiUscc
!=
fuHuaQiUscc
)
throw
new
BizError
(
ERRORENUM
.
无法操作其他孵化器的企业
,
"修改企业孵化状态 修改为实体"
,
`孵化器
${
fuHuaQiUscc
}
-> 企业
${
uscc
}
`
);
enterpriseInfo
.
leasedArea
=
leasedArea
;
await
enterpriseInfo
.
save
();
return
{
isUsccess
:
true
};
}
/**
* 修改企业孵化状态 修改为虚拟
* 小程序端 2.0
* @param fuHuaQiUscc 孵化器统一信用代码
* @param uscc 企业统一信用代码
* @param virtualCauseDes 虚拟孵化其他原因
* @param virtualCause 虚拟孵化模式
* @returns {isSuccess:true/false}
*/
export
async
function
updateVirtualInfo
(
fuHuaQiUscc
:
string
,
uscc
:
string
,
virtualCauseDes
:
string
,
virtualCause
:
number
)
{
verificationEnumTools
.
eccEnumValue
(
'修改企业孵化状态'
,
'修改为虚拟'
,
configEnum
.
VIRTUALCAUSE
,
virtualCause
);
if
(
virtualCause
!=
configEnum
.
VIRTUALCAUSE
.
其他
&&
!
virtualCauseDes
)
{
throw
new
BizError
(
ERRORENUM
.
请填入其他原因
,
"修改企业孵化状态 修改为虚拟"
);
}
let
enterpriseInfo
=
await
enterpriseData
.
findEnterpriseByUscc
(
uscc
);
if
(
!
enterpriseInfo
)
throw
new
BizError
(
ERRORENUM
.
该企业不存在
,
"修改企业孵化状态 修改为实体"
,
`孵化器
${
fuHuaQiUscc
}
-> 企业
${
uscc
}
`
);
if
(
enterpriseInfo
.
fuHuaQiUscc
!=
fuHuaQiUscc
)
throw
new
BizError
(
ERRORENUM
.
无法操作其他孵化器的企业
,
"修改企业孵化状态 修改为实体"
,
`孵化器
${
fuHuaQiUscc
}
-> 企业
${
uscc
}
`
);
enterpriseInfo
.
virtualCause
=
virtualCause
;
if
(
virtualCauseDes
)
enterpriseInfo
.
virtualCauseDes
=
virtualCauseDes
;
await
enterpriseInfo
.
save
();
return
{
isUsccess
:
true
};
}
/**
* 修改企业孵化状态 修改为迁出
* 小程序端 2.0
* @param fuHuaQiUscc 孵化器统一信用代码
* @param uscc 企业统一信用代码
* @param moveOutType 迁出类型
* @param moveOutCause 迁出原因 多选
* @returns {isSuccess:true/false}
*/
export
async
function
updateMoveOutInfo
(
fuHuaQiUscc
:
string
,
uscc
:
string
,
moveOutType
:
number
,
moveOutCause
)
{
verificationEnumTools
.
eccEnumValue
(
'修改企业孵化状态'
,
'修改为迁出'
,
configEnum
.
MOVEOUTTYPE
,
moveOutType
);
verificationEnumTools
.
eccEnumValue
(
'修改企业孵化状态'
,
'修改为迁出'
,
configEnum
.
MOVEOUTCAUSE
,
moveOutCause
);
let
enterpriseInfo
=
await
enterpriseData
.
findEnterpriseByUscc
(
uscc
);
if
(
!
enterpriseInfo
)
throw
new
BizError
(
ERRORENUM
.
该企业不存在
,
"修改企业孵化状态 修改为实体"
,
`孵化器
${
fuHuaQiUscc
}
-> 企业
${
uscc
}
`
);
if
(
enterpriseInfo
.
fuHuaQiUscc
!=
fuHuaQiUscc
)
throw
new
BizError
(
ERRORENUM
.
无法操作其他孵化器的企业
,
"修改企业孵化状态 修改为实体"
,
`孵化器
${
fuHuaQiUscc
}
-> 企业
${
uscc
}
`
);
enterpriseInfo
.
moveOutType
=
moveOutType
;
enterpriseInfo
.
moveOutCause
=
moveOutCause
;
await
enterpriseInfo
.
save
();
return
{
isUsccess
:
true
};
}
\ No newline at end of file
src/biz/mobileFuHuaQi/fuHuaQi/task.ts
View file @
f413e134
...
...
@@ -109,14 +109,18 @@ export async function fuHuaQiCompletedList(uscc:string, selectTime:number) {
if
(
isNaN
(
anyKey
))
{
const
ValueStr
=
TASKTYPEENUM
[
key
];
//字符型的枚举值 也就是 "1"或者"2"或者"3"
const
ValueNumber
=
parseInt
(
ValueStr
);
//number型的枚举值 也就是 1或者2或者3
let
onceObj
=
{
let
onceObj
:
any
=
{
key
:
ValueNumber
,
title
:
anyKey
,
//标题
enterpriseList
:[]
//相关的列表 这里不应该用这个字段名称 当时不能修改前端 沿用了这个字段名称
};
/**当选中了系统上线时间前的时间 任务不存在 就是空列表 */
if
(
!
taskMap
[
ValueStr
])
continue
;
/**获取提交的任务 */
if
(
taskMap
[
ValueStr
].
isSubmit
)
{
if
(
taskMap
[
ValueStr
].
isSubmit
)
{
onceObj
.
month
=
taskMap
[
ValueStr
].
month
+
'月'
;
let
dataList
=
[];
switch
(
ValueNumber
)
{
...
...
@@ -159,7 +163,6 @@ export async function fuHuaQiCompletedList(uscc:string, selectTime:number) {
export
async
function
fuHuaQiPastdueList
(
uscc
:
string
,
selectTime
:
number
)
{
/**得到查询月的任务map taskMap格式为{type:{isSubmit}} */
const
TaskId
=
getTaskIdByTime
(
uscc
,
selectTime
);
let
editable
=
getTaskId
(
uscc
)
==
TaskId
;
//如果是本月,就是可以编辑的
let
taskMap
=
await
taskData
.
findFuHuaQiTaskByTaskId
(
TaskId
);
...
...
@@ -170,14 +173,18 @@ export async function fuHuaQiPastdueList(uscc:string, selectTime:number) {
if
(
isNaN
(
anyKey
))
{
const
ValueStr
=
TASKTYPEENUM
[
key
];
//字符型的枚举值 也就是 "1"或者"2"或者"3"
const
ValueNumber
=
parseInt
(
ValueStr
);
//number型的枚举值 也就是 1或者2或者3
let
onceObj
=
{
let
onceObj
:
any
=
{
key
:
ValueNumber
,
title
:
anyKey
,
//标题
enterpriseList
:[]
//相关的列表 这里不应该用这个字段名称 当时不能修改前端 沿用了这个字段名称
};
/**未提交的任务 */
/**当选中了系统上线时间前的时间 任务不存在 就是空列表 */
if
(
!
taskMap
[
ValueStr
])
continue
;
/**未提交的数据 */
if
(
!
taskMap
[
ValueStr
].
isSubmit
)
{
onceObj
.
month
=
taskMap
[
ValueStr
].
month
+
'月'
;
let
dataList
=
[];
switch
(
ValueNumber
)
{
...
...
@@ -301,39 +308,3 @@ export async function provideTask() {
}
/**
* 发放1月数据
*/
export
async
function
provideLastTask
()
{
const
TimeKey
=
'20232'
;
let
addList
=
[];
//任务列表
let
monthList
=
[];
//月度填报列表
const
MonthNumber
=
1
;
//数据填报月份
const
YearNumber
=
2023
const
MonthTableName
=
`
${
MonthNumber
}
月孵化器月度填报`
;
let
fuHuaQiList
=
await
findAllNotDisabledFuHuaQi
();
fuHuaQiList
.
forEach
(
info
=>
{
let
{
uscc
}
=
info
;
let
taskId
=
`
${
uscc
}${
TimeKey
}
`
;
addList
.
push
(
{
key
:
TimeKey
,
type
:
TASKTYPEENUM
.
孵化器月度填报
,
month
:
1
,
taskId
,
fuHuaQiUscc
:
uscc
,
isSubmit
:
false
},
{
key
:
TimeKey
,
type
:
TASKTYPEENUM
.
新注册或迁入企业登记
,
month
:
1
,
taskId
,
fuHuaQiUscc
:
uscc
,
isSubmit
:
false
},
{
key
:
TimeKey
,
type
:
TASKTYPEENUM
.
融资企业填报
,
month
:
1
,
taskId
,
fuHuaQiUscc
:
uscc
,
isSubmit
:
false
});
/**任务报表的初始状态为 草稿(draftLock=fals) 未被编辑(isUpdate=false) */
monthList
.
push
({
taskId
,
name
:
MonthTableName
,
fuHuaQiUscc
:
uscc
,
month
:
MonthNumber
,
year
:
YearNumber
,
draftLock
:
false
,
isUpdate
:
false
});
});
try
{
/**初始化 任务 */
await
taskData
.
createTaskToList
(
addList
);
logHandle
(
`添加了
${
addList
.
length
}
任务`
);
/**初始化 月度填报表 */
await
monthTableData
.
createMonthTableToList
(
monthList
);
logHandle
(
`添加了
${
monthList
.
length
}
月度任务`
);
}
catch
(
err
)
{
new
BizError
(
ERRORENUM
.
系统错误
,
'添加任务和月度报表的时候 出现了异常 请检查数据库 '
,
err
);
}
}
\ No newline at end of file
src/biz/mobileFuHuaQi/fuHuaQi/user.ts
View file @
f413e134
...
...
@@ -73,7 +73,7 @@ export async function firstLoginChangePwd(uscc:string, pwd:string, confirmPwd:st
/**
* 重置密码
* 小程序端
* 小程序端
2.0
* @param uscc 信用代码
* @param pwd 原密码 md5之后的
* @param newPwd 新密码 未md5
...
...
@@ -119,3 +119,20 @@ export async function logout(uscc:string){
return
{
isSuccess
:
true
};
}
export
async
function
bindFuHuaQi
(
uscc
:
string
,
bindUscc
:
string
,
bindPwd
:
string
)
{
let
fuhuaqiInfo
=
await
fuhuaqiData
.
findFuHuaQiByUSCC
(
uscc
);
// if ( !fuhuaqiInfo ) throw new BizError(ERRORENUM.);
}
/**
* 切换账号列表
* 小程序端 2.0
* @param uscc
*/
export
async
function
changeUserList
(
uscc
:
string
)
{
}
\ No newline at end of file
src/config/enum.ts
View file @
f413e134
...
...
@@ -155,9 +155,16 @@ export enum FINANCINGROUNDS {
* 孵化状态
*/
export
enum
FUHUASTATE
{
实体孵化
=
1
,
实体孵化
=
2
,
虚拟孵化
=
3
,
迁出
=
4
}
/**入孵状态 只用于前端*/
export
enum
INSIDESTATE
{
全部
=
1
,
实体孵化
,
虚拟孵化
,
迁出
}
...
...
src/config/errorEnum.ts
View file @
f413e134
...
...
@@ -26,7 +26,9 @@ export enum ERRORENUM {
统一社会信用代码不合法
,
统一社会信用代码重复
,
系统错误
,
该任务已提交
该任务已提交
,
无法操作其他孵化器的企业
,
请填入其他原因
,
}
export
enum
ERRORCODEENUM
{
...
...
src/data/enterprise/enterprise.ts
View file @
f413e134
...
...
@@ -27,7 +27,11 @@ const enterpriseSchema = new Schema({
enterpriseIsInPut
:{
type
:
Boolean
,
default
:
false
},
//是否是初始数据 todo 后续要弃用 兼容原始数据无法判断是否是迁入企业这个问题加的字段
draftId
:{
type
:
String
,
index
:
true
},
//草稿id 编辑的时候使用这个id 保存之后就不认这个id了
mainBusiness
:{
type
:
String
,
default
:
""
},
//主营业务
state
:
Number
,
//孵化状态 遵循枚举 FUHUASTATE 值
state
:
Number
,
//孵化状态 遵循枚举 FUHUASTATE 值 ----2.0
virtualCause
:[
Number
],
//虚拟孵化原因 遵循 VIRTUALCAUSE 的值 ----2.0
virtualCauseDes
:
String
,
//虚拟孵化描述 ----2.0
moveOutType
:
Number
,
// 迁出类型 遵循 MOVEOUTTYPE 的值 ----2.0
moveOutCause
:[
Number
],
//迁出原因 遵循 MOVEOUTCAUSE 的值 ----2.0
});
var
enterpriseModel
;
...
...
@@ -216,4 +220,13 @@ export async function findAllBindFuHuaQiUsccList() {
export
async
function
createEnterpriseToList
(
fuHuaQiList
:
object
)
{
await
enterpriseModel
.
insertMany
(
fuHuaQiList
);
}
\ No newline at end of file
}
/**
* 将所有企业数据的孵化状态改变
* @param state 孵化状态
*/
export
async
function
updateEnterpriseState
(
state
:
number
)
{
return
await
enterpriseModel
.
updateMany
({},
{
$set
:{
state
}});
}
src/data/fuHuaQi/fuhuaqi.ts
View file @
f413e134
...
...
@@ -54,7 +54,8 @@ const fuHuaQiSchema = new Schema({
tokenMs
:
Number
,
firstLoginIsChangePwd
:{
type
:
Boolean
,
default
:
false
},
//首次登录是否修改密码
createTime
:
Number
,
userState
:{
type
:
Boolean
,
default
:
false
}
//是否禁用
userState
:{
type
:
Boolean
,
default
:
false
},
//是否禁用
bindId
:{
type
:
String
}
//绑定标识
});
var
fuHuaQiModel
;
...
...
src/main.ts
View file @
f413e134
...
...
@@ -4,12 +4,14 @@ import { initDB } from "./db/mongo/dbInit";
import
{
httpServer
}
from
"./net/http_server"
;
import
{
initBasicData
}
from
"./tools/dataInit"
;
async
function
lanuch
()
{
await
initConfig
();
//初始化配置解析
await
initDB
();
await
initBasicData
();
// await initSystemTask();
httpServer
.
createServer
(
systemConfig
.
port
);
console
.
log
(
'This indicates that the server is started successfully.'
);
}
...
...
src/routers/admin/fuHuaQi.ts
View file @
f413e134
...
...
@@ -6,6 +6,7 @@ import * as asyncHandler from 'express-async-handler';
import
*
as
monthAdminBiz
from
'../../biz/admin/fuHuaQi/month'
;
import
*
as
fuHuaQiAdminBiz
from
'../../biz/admin/fuHuaQi/fuHuaQi'
;
import
*
as
taskBiz
from
'../../biz/mobileFuHuaQi/fuHuaQi/task'
;
import
*
as
provideBiz
from
'../../biz/admin/provide'
;
import
{
getTimeKey
}
from
'../../tools/system'
;
import
{
checkGuanWeiHuiToken
,
checkInterior
}
from
'../../middleware/user'
;
import
{
eccReqParamater
}
from
'../../util/verificationParam'
;
...
...
@@ -20,12 +21,18 @@ export function setRouter(httpServer) {
httpServer
.
post
(
'/admin/data/output/fuhuaqi'
,
checkGuanWeiHuiToken
,
asyncHandler
(
outPutFuHuaQiData
));
httpServer
.
post
(
'/admin/data/output/month'
,
checkGuanWeiHuiToken
,
asyncHandler
(
outPutMonthData
));
/**测试接口 用于发放1月份任务 */
httpServer
.
post
(
'/admin/admin/task/add12'
,
checkInterior
,
asyncHandler
(
provideLastTask
));
httpServer
.
post
(
'/admin/provide/task/add12'
,
checkInterior
,
asyncHandler
(
provideLastTask
));
httpServer
.
post
(
'/admin/provide/enterprise/updatestate'
,
checkInterior
,
asyncHandler
(
updateEnterpriseState
));
}
async
function
updateEnterpriseState
(
req
,
res
)
{
let
data
=
await
provideBiz
.
updateEnterpriseFuHuaState
();
res
.
success
({
isUsccess
:
true
});
}
async
function
provideLastTask
(
req
,
res
)
{
await
task
Biz
.
provideLastTask
();
await
provide
Biz
.
provideLastTask
();
res
.
success
({
isUsccess
:
true
});
}
...
...
src/routers/mobileClient/enterprise.ts
View file @
f413e134
...
...
@@ -6,6 +6,7 @@ import * as asyncHandler from 'express-async-handler';
import
*
as
enterpriseBiz
from
'../../biz/mobileFuHuaQi/enterprise/enterprise'
;
import
{
checkFuHuaQiToken
}
from
'../../middleware/user'
;
import
{
eccReqParamater
}
from
'../../util/verificationParam'
;
import
{
FUHUASTATE
}
from
'../../config/enum'
;
export
function
setRouter
(
httpServer
)
{
/**新注册企业 或 新迁入企业 */
...
...
@@ -16,9 +17,13 @@ export function setRouter(httpServer) {
httpServer
.
post
(
'/fuhuaqi/enterprise/select'
,
checkFuHuaQiToken
,
asyncHandler
(
selectEnterpriseInfo
));
httpServer
.
post
(
'/fuhuaqi/enterprise/delete'
,
checkFuHuaQiToken
,
asyncHandler
(
delEnterpriseInfo
));
/**我的企业 */
httpServer
.
post
(
'/fuhuaqi/myenterprise/list'
,
checkFuHuaQiToken
,
asyncHandler
(
myEnterpriseList
));
//todo 新加
httpServer
.
post
(
'/fuhuaqi/myenterprise/info'
,
checkFuHuaQiToken
,
asyncHandler
(
myEnterpriseInfo
));
//todo 新加
httpServer
.
post
(
'/fuhuaqi/myenterprise/info'
,
checkFuHuaQiToken
,
asyncHandler
(
myEnterpriseInfo
));
//todo 新加
httpServer
.
post
(
'/fuhuaqi/myenterprise/list'
,
checkFuHuaQiToken
,
asyncHandler
(
myEnterpriseList
));
httpServer
.
post
(
'/fuhuaqi/myenterprise/info'
,
checkFuHuaQiToken
,
asyncHandler
(
myEnterpriseInfo
));
httpServer
.
post
(
'/fuhuaqi/myenterprise/moveoutlist'
,
checkFuHuaQiToken
,
asyncHandler
(
myEnterpriseMoveOutList
));
/**我的企业 修改 */
httpServer
.
post
(
'/fuhuaqi/myenterprise/update/physical'
,
checkFuHuaQiToken
,
asyncHandler
(
updatePhysical
));
//todo 实体
httpServer
.
post
(
'/fuhuaqi/myenterprise/update/virtual'
,
checkFuHuaQiToken
,
asyncHandler
(
updateVirtual
));
//todo 虚拟
httpServer
.
post
(
'/fuhuaqi/myenterprise/update/moveout'
,
checkFuHuaQiToken
,
asyncHandler
(
updateMoveOut
));
//todo 迁出
}
...
...
@@ -121,15 +126,31 @@ async function delEnterpriseInfo(req, res) {
/**
* 我的企业列表
* 2.0
*
小程序端
2.0
* @param req
* @param res
*/
async
function
myEnterpriseList
(
req
,
res
)
{
let
reqConf
=
{
name
:
'String'
,
state
:
"Number"
};
let
{
name
,
state
}
=
eccReqParamater
(
reqConf
,
req
.
body
);
let
reqConf
=
{
name
:
'String'
,
state
:
"Number"
,
page
:
"Number"
};
let
{
name
,
state
,
page
}
=
eccReqParamater
(
reqConf
,
req
.
body
,
[
"name"
]);
const
Uscc
=
req
.
headers
.
uscc
;
let
data
=
await
enterpriseBiz
.
myEnterprise
(
Uscc
,
state
,
name
,
page
);
res
.
success
(
data
);
}
/**
* 我的企业列表迁出列表
* 小程序端 2.0
* @param req
* @param res
*/
async
function
myEnterpriseMoveOutList
(
req
,
res
)
{
let
reqConf
=
{
name
:
'String'
,
page
:
"Number"
};
let
{
name
,
page
}
=
eccReqParamater
(
reqConf
,
req
.
body
,
[
"name"
]);
const
Uscc
=
req
.
headers
.
uscc
;
let
data
=
await
enterpriseBiz
.
myEnterprise
(
Uscc
,
state
,
nam
e
);
let
data
=
await
enterpriseBiz
.
myEnterprise
(
Uscc
,
FUHUASTATE
.
迁出
,
name
,
pag
e
);
res
.
success
(
data
);
}
...
...
@@ -146,4 +167,55 @@ async function myEnterpriseInfo(req, res) {
let
reqConf
=
{
uscc
:
'String'
};
let
{
uscc
}
=
eccReqParamater
(
reqConf
,
req
.
body
);
const
FuHuaQiUscc
=
req
.
headers
.
uscc
;
}
\ No newline at end of file
}
/**
* 修改企业孵化状态 修改为实体
* 2.0
* @param req
* @param res
*/
async
function
updatePhysical
(
req
,
res
)
{
let
reqConf
=
{
leasedArea
:
'Number'
,
uscc
:
"String"
};
let
{
leasedArea
,
uscc
}
=
await
eccReqParamater
(
reqConf
,
req
.
body
);
const
FuHuaQiUscc
=
req
.
headers
.
uscc
;
let
result
=
await
enterpriseBiz
.
updatePhysicalInfo
(
FuHuaQiUscc
,
uscc
,
leasedArea
);
res
.
success
(
result
);
}
/**
* 修改企业孵化状态 修改为虚拟
* 2.0
* @param req
* @param res
*/
async
function
updateVirtual
(
req
,
res
)
{
let
reqConf
=
{
virtualCause
:
'Number'
,
uscc
:
"String"
,
virtualCauseDes
:
"String"
};
let
{
virtualCause
,
uscc
,
virtualCauseDes
}
=
await
eccReqParamater
(
reqConf
,
req
.
body
,
[
"virtualCauseDes"
]);
const
FuHuaQiUscc
=
req
.
headers
.
uscc
;
let
result
=
await
enterpriseBiz
.
updateVirtualInfo
(
FuHuaQiUscc
,
uscc
,
virtualCauseDes
,
virtualCause
);
res
.
success
(
result
);
}
/**
* 修改企业孵化状态 修改为迁出
* 2.0
* @param req
* @param res
*/
async
function
updateMoveOut
(
req
,
res
)
{
let
reqConf
=
{
moveOutType
:
'Number'
,
uscc
:
"String"
,
moveOutCause
:
"[Number]"
};
let
{
moveOutType
,
uscc
,
moveOutCause
}
=
await
eccReqParamater
(
reqConf
,
req
.
body
,
);
const
FuHuaQiUscc
=
req
.
headers
.
uscc
;
let
result
=
await
enterpriseBiz
.
updateMoveOutInfo
(
FuHuaQiUscc
,
uscc
,
moveOutType
,
moveOutCause
);
res
.
success
(
result
);
}
src/routers/mobileClient/fuHuaQi.ts
View file @
f413e134
...
...
@@ -138,8 +138,7 @@ async function submitTask(req, res) {
*/
async
function
completedList
(
req
,
res
)
{
let
reqConf
=
{
selectTime
:
'Number'
};
const
NotMustHaveKeys
=
[
"selectTime"
];
let
{
selectTime
}
=
eccReqParamater
(
reqConf
,
req
.
body
,
NotMustHaveKeys
);
let
{
selectTime
}
=
eccReqParamater
(
reqConf
,
req
.
body
);
const
Uscc
=
req
.
headers
.
uscc
;
...
...
@@ -156,9 +155,8 @@ async function completedList(req, res) {
* @param res
*/
async
function
pastDueList
(
req
,
res
)
{
let
reqConf
=
{
taskType
:
'Number'
};
const
NotMustHaveKeys
=
[
"selectTime"
];
let
{
selectTime
}
=
eccReqParamater
(
reqConf
,
req
.
body
,
NotMustHaveKeys
);
let
reqConf
=
{
selectTime
:
'Number'
};
let
{
selectTime
}
=
eccReqParamater
(
reqConf
,
req
.
body
);
const
Uscc
=
req
.
headers
.
uscc
;
let
result
=
await
taskBiz
.
fuHuaQiPastdueList
(
Uscc
,
selectTime
);
...
...
src/routers/mobileClient/user.ts
View file @
f413e134
...
...
@@ -12,6 +12,7 @@ export function setRouter(httpServer) {
httpServer
.
post
(
'/fuhuaqi/logout'
,
checkFuHuaQiToken
,
asyncHandler
(
logout
));
httpServer
.
post
(
'/fuhuaqi/login/firstupdate'
,
checkFuHuaQiToken
,
asyncHandler
(
firstUpdatePwd
));
httpServer
.
post
(
'/fuhuaqi/changepwd'
,
checkFuHuaQiToken
,
asyncHandler
(
changePwd
));
httpServer
.
post
(
'/fuhuaqi/binduser'
,
checkFuHuaQiToken
,
asyncHandler
(
bindUser
));
}
...
...
@@ -59,6 +60,11 @@ async function firstUpdatePwd(req, res) {
}
/**
* 修改密码
* @param req
* @param res
*/
async
function
changePwd
(
req
,
res
)
{
let
reqConf
=
{
confirmPwd
:
'String'
,
newPwd
:
'String'
,
pwd
:
'String'
};
let
{
confirmPwd
,
newPwd
,
pwd
}
=
eccReqParamater
(
reqConf
,
req
.
body
);
...
...
@@ -67,4 +73,8 @@ async function changePwd(req, res) {
let
result
=
await
userBiz
.
changePassword
(
Uscc
,
pwd
,
newPwd
,
confirmPwd
);
res
.
success
(
result
);
}
async
function
bindUser
()
{
}
\ No newline at end of file
src/routers/public.ts
View file @
f413e134
...
...
@@ -3,7 +3,7 @@
*/
import
*
as
asyncHandler
from
'express-async-handler'
;
import
{
FUHUAQILV
,
INSTITUTIONALNATURE
,
FUHUAINDUSTRY
,
INDUSTRY
,
FUHUAQILNVESTMENTSTYLE
,
OPERATIONMODEL
,
TEAM
,
DEGREE
,
FINANCINGROUNDS
}
from
'../config/enum'
;
import
{
FUHUAQILV
,
INSTITUTIONALNATURE
,
FUHUAINDUSTRY
,
INDUSTRY
,
FUHUAQILNVESTMENTSTYLE
,
OPERATIONMODEL
,
TEAM
,
DEGREE
,
FINANCINGROUNDS
,
INSIDESTATE
,
VIRTUALCAUSE
,
MOVEOUTTYPE
,
MOVEOUTCAUSE
}
from
'../config/enum'
;
export
function
setRouter
(
httpServer
)
{
httpServer
.
post
(
'/public/fuhuaqilv'
,
asyncHandler
(
getFuHuaQiLv
));
...
...
@@ -15,6 +15,72 @@ export function setRouter(httpServer) {
httpServer
.
post
(
'/public/fuhuaqiteam'
,
asyncHandler
(
fuHuaQiTeam
));
httpServer
.
post
(
'/public/degree'
,
asyncHandler
(
degree
));
httpServer
.
post
(
'/public/financingrounds'
,
asyncHandler
(
financingRounds
));
/**2.0 */
httpServer
.
post
(
'/public/insidestate'
,
asyncHandler
(
insidestate
));
httpServer
.
post
(
'/public/virtualcause'
,
asyncHandler
(
virtualCause
));
httpServer
.
post
(
'/public/moveouttype'
,
asyncHandler
(
moveOutType
));
httpServer
.
post
(
'/public/moveoutcause'
,
asyncHandler
(
moveOutCause
));
}
/**
* 迁出类型
*/
function
moveOutType
(
req
,
res
)
{
let
dataList
=
[];
for
(
let
key
in
MOVEOUTTYPE
)
{
let
anyKey
:
any
=
key
;
if
(
isNaN
(
anyKey
))
{
dataList
.
push
({
key
,
value
:
MOVEOUTTYPE
[
key
]});
}
}
res
.
success
({
dataList
});
}
/**
* 迁出原因
*/
function
moveOutCause
(
req
,
res
)
{
let
dataList
=
[];
for
(
let
key
in
MOVEOUTCAUSE
)
{
let
anyKey
:
any
=
key
;
if
(
isNaN
(
anyKey
))
{
dataList
.
push
({
key
,
value
:
MOVEOUTCAUSE
[
key
]});
}
}
res
.
success
({
dataList
});
}
/**
* 虚拟孵化模式
* @param req
* @param res
*/
function
virtualCause
(
req
,
res
)
{
let
dataList
=
[];
for
(
let
key
in
VIRTUALCAUSE
)
{
let
anyKey
:
any
=
key
;
if
(
isNaN
(
anyKey
))
{
dataList
.
push
({
key
,
value
:
VIRTUALCAUSE
[
key
]});
}
}
res
.
success
({
dataList
});
}
/**
* 入孵状态
*/
function
insidestate
(
req
,
res
)
{
let
dataList
=
[];
for
(
let
key
in
INSIDESTATE
)
{
let
anyKey
:
any
=
key
;
if
(
isNaN
(
anyKey
))
{
dataList
.
push
({
key
,
value
:
INSIDESTATE
[
key
]});
}
}
res
.
success
({
dataList
});
}
...
...
src/util/analysisExcel.ts
0 → 100644
View file @
f413e134
const
xlsx
=
require
(
'node-xlsx'
);
const
path
=
require
(
'path'
);
/**
* onceSheetBecomeOfblockData 将excel文件的指定sheet解析成数据块数据
* @param fileName 文件名称
* @param sheetName 表名称
* @returns [ {blockData:数据块(二维数组), blockTitle:"数据标题"}]
*/
export
function
onceSheetBecomeOfblockData
(
fileName
,
sheetName
)
{
let
{
sheetMap
}
=
getExcel
(
path
.
join
(
__dirname
.
substring
(
0
,
__dirname
.
indexOf
(
"out"
)),
"res"
,
fileName
));
return
sheetMap
;
let
thisBlockData
=
getBlockData
(
sheetMap
[
sheetName
]);
return
thisBlockData
;
}
/**
* excelBecomeOfBlockData 将excel所有的sheet解析成数据块
* @param fileName 文件名称
* @returns {"sheetName1":[ {blockData:数据块(二维数组), blockTitle:"数据标题"}], ...}
*/
export
function
excelBecomeOfBlockData
(
fileName
)
{
let
{
sheetMap
}
=
getExcel
(
path
.
join
(
__dirname
.
substring
(
0
,
__dirname
.
indexOf
(
"out"
)),
"res"
,
fileName
));
let
result
=
{};
for
(
let
sheetName
in
sheetMap
)
{
result
[
sheetName
]
=
getBlockData
(
sheetMap
[
sheetName
]);
}
return
result
;
}
/**
* planaryArrayBecomeOfBlockData 将符合excel规则的sheet二维数组转为 数据块
* @param dataList excel解出来的数据
* @returns thisBlockData 返回数据块集合 格式:blockList = [ {blockData:数据块(二维数组), blockTitle:"数据标题"}]
*/
export
function
planaryArrayBecomeOfBlockData
(
planaryArray
)
{
return
getBlockData
(
planaryArray
);;
}
//===
/**
* getBlockData 数据分块
* @param dataList 解析出来的excel二维数组
* @returns 返回数据块集合 格式:blockList = [ {blockData:数据块(二维数组), blockTitle:"数据标题"}]
*/
function
getBlockData
(
dataList
)
{
let
blockList
=
[];
for
(
let
i
=
0
;
i
<
999
;
i
++
)
{
let
{
blockData
,
blockTitle
,
notItem
,
delDataList
}
=
checkBlock
(
dataList
);
if
(
notItem
)
break
;
dataList
=
delDataList
;
if
(
blockTitle
)
blockList
.
push
({
blockData
,
blockTitle
});
}
return
blockList
;
}
function
getListFristNotNullItemIndex
(
list
)
{
//获取起始坐标
if
(
!
list
.
length
)
return
null
;
for
(
let
i
=
0
;
i
<
list
.
length
;
i
++
)
{
if
(
list
[
i
])
return
i
;
}
}
function
getListFirstNullItemIndex
(
startX
,
list
)
{
//获取第一个为空的坐标
if
(
!
list
.
length
)
return
null
;
let
checkItem
=
false
;
let
firstItemIndex
=
0
;
for
(
let
i
=
startX
;
i
<=
list
.
length
;
i
++
)
{
let
item
=
list
[
i
];
if
(
!
checkItem
&&
item
)
checkItem
=
true
;
if
(
checkItem
&&
!
item
)
{
firstItemIndex
=
i
;
break
;
}
}
return
firstItemIndex
;
}
function
listRegionIsNull
(
list
,
startX
,
endX
)
{
//指定区间内数据是否未空
let
isNull
=
true
;
if
(
!
list
.
length
)
return
isNull
;
for
(
let
i
=
startX
;
i
<
endX
;
i
++
)
{
let
item
=
list
[
i
];
if
(
item
)
{
isNull
=
false
;
break
;
}
}
return
isNull
;
}
function
thisListNotItem
(
list
)
{
for
(
let
i
=
0
;
i
<
list
.
length
;
i
++
)
{
if
(
list
[
i
])
return
false
;
}
return
true
}
function
checkBlock
(
dataList
)
{
//纵向有效起始点
let
startY
=
0
;
let
startX
=
0
;
let
isNotBlockTitle
=
false
;
//没有块标题
let
isLook
=
false
;
let
endX
=
0
;
//x轴最长结束下标 【包括下标】
let
blockTitle
=
''
;
//标题块名称
let
notItem
=
true
;
for
(
let
i
=
0
;
i
<
dataList
.
length
;
i
++
)
{
let
childList
=
dataList
[
i
]
||
[];
if
(
!
thisListNotItem
(
childList
))
{
if
(
!
isLook
)
{
let
thisRoowStartX
=
getListFristNotNullItemIndex
(
childList
);
let
thisRoowLastItem
=
childList
[
thisRoowStartX
+
1
];
let
LastList
=
dataList
[
i
+
1
]
||
[];
// let lastRoowStartX = getListFristNotNullItemIndex(LastList);
let
lastRoowHaveItem
=
LastList
[
thisRoowStartX
];
if
(
thisRoowLastItem
||
(
LastList
.
length
&&
lastRoowHaveItem
)
)
{
if
(
lastRoowHaveItem
&&
thisRoowLastItem
)
{
isNotBlockTitle
=
true
;
//不存在标题块
blockTitle
=
`
${
thisRoowStartX
}
_
${
i
}
`
;
startY
=
i
;
startX
=
thisRoowStartX
;
}
else
{
blockTitle
=
dataList
[
i
][
thisRoowStartX
];
dataList
[
i
][
thisRoowStartX
]
=
null
;
if
(
thisRoowLastItem
)
{
// 同行存在元素 标题在y轴上
startY
=
i
;
startX
=
thisRoowStartX
+
1
;
}
else
{
// 同行存在元素 标题在x轴上
startY
=
i
+
1
;
startX
=
thisRoowStartX
;
}
}
isLook
=
true
;
}
else
{
//只有标题 无内容
console
.
log
(
dataList
[
i
][
thisRoowStartX
]);
dataList
[
i
][
thisRoowStartX
]
=
null
;
}
}
else
{
//测量最大连续长度
let
firstNullX
=
getListFirstNullItemIndex
(
startX
,
childList
);
if
(
firstNullX
)
endX
=
Math
.
max
(
endX
,
firstNullX
-
1
);
break
;
}
notItem
=
false
;
}
}
let
endY
=
0
;
//y轴连续下标 【包括下标】
let
yInfoStart
=
false
;
let
yInfoEnd
=
false
;
for
(
let
y
=
startY
;
y
<
dataList
.
length
;
y
++
)
{
//纵向找连续性
let
thisRoow
=
dataList
[
y
];
let
regionIsNull
=
listRegionIsNull
(
thisRoow
,
startX
,
endX
);
if
(
!
regionIsNull
)
{
endY
=
y
;
if
(
!
yInfoStart
)
yInfoStart
=
true
;
}
if
(
yInfoStart
&&
regionIsNull
)
yInfoEnd
=
true
;
if
(
yInfoEnd
)
break
;
}
let
blockData
=
[];
for
(
let
y
=
startY
;
y
<=
endY
;
y
++
)
{
let
onceList
=
[];
for
(
let
x
=
startX
;
x
<=
endX
;
x
++
)
{
onceList
.
push
(
dataList
[
y
][
x
]);
dataList
[
y
][
x
]
=
null
;
}
blockData
.
push
(
onceList
);
}
return
{
blockData
,
blockTitle
,
delDataList
:
dataList
,
notItem
};
}
//获取单个excel文件的数据
function
getExcel
(
filePath
)
{
const
workSheetsFromFile
=
xlsx
.
parse
(
filePath
);
let
sheetMap
=
{};
let
sheetList
=
[];
for
(
let
i
=
0
;
i
<
workSheetsFromFile
.
length
;
i
++
)
{
let
sheetInfo
=
workSheetsFromFile
[
i
];
sheetMap
[
sheetInfo
.
name
]
=
sheetInfo
.
data
;
sheetList
.
push
(
sheetInfo
);
}
return
{
sheetMap
,
sheetList
}
}
\ No newline at end of file
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