Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
shouzhouServer
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
chenjinjing
shouzhouServer
Commits
bf81317a
Commit
bf81317a
authored
Jul 11, 2024
by
Leo Zheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
给右边部分的API增加注释
parent
26e06e9a
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
229 additions
and
11 deletions
+229
-11
abstractDataStrategyMid.ts
src/biz/strategies/middle/abstractDataStrategyMid.ts
+1
-1
abstractDataStrategyRight.ts
src/biz/strategies/right/abstractDataStrategyRight.ts
+42
-10
eventCategoryCountStrategy.ts
src/biz/strategies/right/eventCategoryCountStrategy.ts
+21
-0
eventMonthDistributionStrategy.ts
src/biz/strategies/right/eventMonthDistributionStrategy.ts
+22
-0
eventProcessingTimeStrategy.ts
src/biz/strategies/right/eventProcessingTimeStrategy.ts
+28
-0
eventSrcStrategy.ts
src/biz/strategies/right/eventSrcStrategy.ts
+22
-0
eventSubCategoryCountStrategy.ts
src/biz/strategies/right/eventSubCategoryCountStrategy.ts
+22
-0
eventTimeDistributionStrategy.ts
src/biz/strategies/right/eventTimeDistributionStrategy.ts
+23
-0
getEventCountByYearStrategy.ts
src/biz/strategies/right/getEventCountByYearStrategy.ts
+26
-0
gridEventCountStrategy.ts
src/biz/strategies/right/gridEventCountStrategy.ts
+22
-0
No files found.
src/biz/strategies/middle/abstractDataStrategyMid.ts
View file @
bf81317a
/**
* abstractDataStrategyMid.ts
* 该文件定义了一个抽象类,用于中间
层
数据策略的基础实现。
* 该文件定义了一个抽象类,用于中间数据策略的基础实现。
*/
import
{
dataStrategy
}
from
"../dataStrategy"
;
...
...
src/biz/strategies/right/abstractDataStrategyRight.ts
View file @
bf81317a
import
{
dataStrategy
}
from
"../dataStrategy"
;
import
{
DataExtractor
}
from
"../../../util/dataExtractor"
;
import
excelSerialToJSDate
from
"../../../util/excelDateToJSDate"
;
/**
* abstractDataStrategyRight.ts
* 该文件定义了一个抽象类,用于右侧数据策略的基础实现。
*/
import
{
dataStrategy
}
from
"../dataStrategy"
;
import
{
DataExtractor
}
from
"../../../util/dataExtractor"
;
import
excelSerialToJSDate
from
"../../../util/excelDateToJSDate"
;
/**
* 抽象数据策略右侧类,所有右侧具体策略类都需要继承该抽象类。
*/
export
abstract
class
abstractDataStrategyRight
implements
dataStrategy
{
extractor
=
DataExtractor
.
getInstance
();
static
readonly
FILENAME
=
'寿州古城.xlsx'
;
...
...
@@ -10,24 +17,43 @@ export abstract class abstractDataStrategyRight implements dataStrategy {
static
readonly
TIMEDIFFERENCE
=
8
;
protected
eventData
;
/**
* 构造函数,读取 Excel 数据并初始化 eventData 属性。
*/
constructor
()
{
this
.
eventData
=
this
.
readDataFromExcel
();
}
/**
* 执行策略的方法,具体实现由子类提供。
* @param params - 可选参数。
*/
abstract
execute
(
params
?:
any
):
any
;
execute
(
params
?:
any
):
any
{
}
/**
* 参数检查方法,检查参数中是否包含年份信息。
* @param params - 请求参数。
* @throws 如果参数无效则抛出错误。
*/
protected
paramsCheck
(
params
)
{
if
(
!
params
||
!
params
.
query
||
!
params
.
query
.
year
)
{
throw
new
Error
(
'Year parameter is required.'
);
}
}
/**
* 从 Excel 文件中读取数据。
* @returns 读取的数据。
*/
protected
readDataFromExcel
()
{
return
this
.
extractor
.
getData
(
abstractDataStrategyRight
.
FILENAME
,
abstractDataStrategyRight
.
SHEETNAME
);
}
/**
* 注册事件项,初始化事件计数映射。
* @param list - 事件名称列表。
* @returns 初始化的事件计数映射。
*/
protected
registerItems
(
list
:
string
[])
{
const
eventCount
:
Map
<
string
,
number
>
=
new
Map
();
list
.
forEach
(
event
=>
{
...
...
@@ -36,17 +62,24 @@ export abstract class abstractDataStrategyRight implements dataStrategy {
return
eventCount
;
}
/**
* 统计事件列表中每个事件的数量。
* @param list - 事件名称列表。
* @param target - 目标事件名称。
* @param data - 数据源。
* @param year - 指定年份。
* @returns 事件计数映射。
*/
protected
getListCount
(
list
:
string
[],
target
:
string
,
data
:
any
,
year
:
number
)
{
const
count
=
this
.
registerItems
(
list
);
data
.
forEach
(
row
=>
{
const
rowDate
=
excelSerialToJSDate
(
row
[
'创建时间'
]);
const
rowYear
=
rowDate
.
getFullYear
();
if
(
rowYear
==
year
)
{
if
(
rowYear
==
=
year
)
{
count
.
set
(
row
[
target
],
count
.
get
(
row
[
target
])
+
1
);
}
});
return
count
;
}
}
\ No newline at end of file
}
src/biz/strategies/right/eventCategoryCountStrategy.ts
View file @
bf81317a
/**
* eventCategoryCountStrategy.ts
* 该文件定义了事件类别计数策略的具体实现。
*/
import
{
abstractDataStrategyRight
}
from
"./abstractDataStrategyRight"
;
import
mapToObj
from
"../../../util/mapToObj"
;
/**
* 事件类别计数策略类,继承自 abstractDataStrategyRight。
*/
export
class
eventCategoryCountStrategy
extends
abstractDataStrategyRight
{
/**
* 执行事件类别计数策略。
* @param params - 请求参数,包含年份信息。
* @returns 事件类别计数的对象表示。
*/
execute
(
params
?:
any
):
any
{
// 检查参数是否有效
this
.
paramsCheck
(
params
);
// 定义网格名称列表
const
eventList
=
[
'咨询'
,
'求助'
,
'预警系统'
,
'投诉'
,
'指挥调度'
,
'建议'
]
// 目标字段名称
const
target
=
'事件类型'
;
// 获取指定年份的网格事件数量统计,并转换为对象
return
mapToObj
(
this
.
getListCount
(
eventList
,
target
,
this
.
eventData
,
params
.
query
.
year
));
}
}
\ No newline at end of file
src/biz/strategies/right/eventMonthDistributionStrategy.ts
View file @
bf81317a
/**
* eventMonthDistributionStrategy.ts
* 该文件定义了事件按月分布策略的具体实现。
*/
import
{
abstractDataStrategyRight
}
from
"./abstractDataStrategyRight"
;
import
mapToObj
from
"../../../util/mapToObj"
;
import
excelSerialToJSDate
from
"../../../util/excelDateToJSDate"
;
/**
* 事件按月分布策略类,继承自 abstractDataStrategyRight。
*/
export
class
eventMonthDistributionStrategy
extends
abstractDataStrategyRight
{
/**
* 执行事件按月分布策略。
* @param params - 请求参数,包含年份信息。
* @returns 事件按月分布计数的对象表示。
*/
execute
(
params
?:
any
):
any
{
// 检查参数是否有效
this
.
paramsCheck
(
params
);
// 获取指定年份的事件按月分布计数,并转换为对象
return
mapToObj
(
this
.
getEventMonthDistribution
(
this
.
eventData
,
params
.
query
.
year
));
}
/**
* 获取指定年份的事件按月分布计数。
* @param data - 从数据源提取的数据。
* @param year - 指定年份。
* @returns 事件按月分布计数的映射。
*/
private
getEventMonthDistribution
(
data
:
any
,
year
:
number
)
{
const
eventCount
:
Map
<
number
,
number
>
=
new
Map
();
for
(
let
month
=
1
;
month
<=
12
;
month
++
)
{
...
...
src/biz/strategies/right/eventProcessingTimeStrategy.ts
View file @
bf81317a
/**
* eventProcessingTimeStrategy.ts
* 该文件定义了事件处理时间策略的具体实现。
*/
import
{
abstractDataStrategyRight
}
from
"./abstractDataStrategyRight"
;
import
excelSerialToJSDate
from
"../../../util/excelDateToJSDate"
;
import
getRandomNumber
from
"../../../util/randomNumberGenerator"
;
import
mapToObj
from
"../../../util/mapToObj"
;
/**
* 事件处理时间策略类,继承自 abstractDataStrategyRight。
*/
export
class
eventProcessingTimeStrategy
extends
abstractDataStrategyRight
{
/**
* 执行事件处理时间策略。
* @param params - 请求参数,包含年份信息。
* @returns 事件处理时间的对象表示。
*/
execute
(
params
?:
any
):
any
{
// 检查参数是否有效
this
.
paramsCheck
(
params
);
// 获取指定年份的事件处理时间,并转换为对象
return
mapToObj
(
this
.
getEventProcessingTime
(
this
.
eventData
,
params
.
query
.
year
));
}
/**
* 获取指定年份的事件处理时间。
* @param data - 从数据源提取的数据。
* @param year - 指定年份。
* @returns 事件处理时间的映射。
*/
private
getEventProcessingTime
(
data
:
any
,
year
:
number
)
{
const
statusList
=
[
'调度时长'
,
'处置等待'
,
'处置时长'
,
'办结时长'
]
const
timeMap
=
this
.
registerItems
(
statusList
);
...
...
@@ -81,6 +103,12 @@ export class eventProcessingTimeStrategy extends abstractDataStrategyRight {
}
/**
* 计算两个时间点之间的时间差。
* @param start - 开始时间。
* @param end - 结束时间。
* @returns 时间差(分钟)。
*/
private
calculateTimeDifference
(
start
:
number
,
end
:
number
):
number
{
const
time
=
excelSerialToJSDate
(
start
).
getTime
()
-
excelSerialToJSDate
(
end
).
getTime
();
return
time
/
(
1000
*
60
);
...
...
src/biz/strategies/right/eventSrcStrategy.ts
View file @
bf81317a
/**
* eventSrcStrategy.ts
* 该文件定义了事件来源统计策略的具体实现。
*/
import
{
abstractDataStrategyRight
}
from
"./abstractDataStrategyRight"
;
import
mapToObj
from
"../../../util/mapToObj"
;
/**
* 事件来源策略类,继承自 abstractDataStrategyRight。
*/
export
class
eventSrcStrategy
extends
abstractDataStrategyRight
{
/**
* 执行事件来源统计策略。
* @param params - 请求参数,包含年份信息。
* @returns 事件来源统计的对象表示。
*/
execute
(
params
?:
any
):
any
{
// 检查参数是否有效
this
.
paramsCheck
(
params
);
// 定义事件来源列表
const
sourceList
=
[
'景管通'
,
'12301热线'
,
'舆情平台'
,
'电话热线'
,
'指挥调度'
,
'12345热线'
]
// 目标字段名称
const
target
=
'事件来源'
;
// 获取指定年份的事件来源统计,并转换为对象
return
mapToObj
(
this
.
getListCount
(
sourceList
,
target
,
this
.
eventData
,
params
.
query
.
year
));
}
}
\ No newline at end of file
src/biz/strategies/right/eventSubCategoryCountStrategy.ts
View file @
bf81317a
/**
* eventSubCategoryCountStrategy.ts
* 该文件定义了事件子类别计数策略的具体实现。
*/
import
{
abstractDataStrategyRight
}
from
"./abstractDataStrategyRight"
;
import
mapToObj
from
"../../../util/mapToObj"
;
/**
* 事件子类别计数策略类,继承自 abstractDataStrategyRight。
*/
export
class
eventSubCategoryCountStrategy
extends
abstractDataStrategyRight
{
/**
* 执行事件子类别计数策略。
* @param params - 请求参数,包含年份信息。
* @returns 事件子类别计数的对象表示。
*/
execute
(
params
?:
any
):
any
{
// 检查参数是否有效
this
.
paramsCheck
(
params
);
// 定义事件子类别列表
const
eventList
=
[
'服务质量'
,
'医疗救助'
,
'纠纷'
,
'环境卫生'
,
'血族调查'
,
'设施设备'
];
// 目标字段名称
const
target
=
'事件子类型'
;
// 获取指定年份的事件子类别计数,并转换为对象
return
mapToObj
(
this
.
getListCount
(
eventList
,
target
,
this
.
eventData
,
params
.
query
.
year
));
}
}
\ No newline at end of file
src/biz/strategies/right/eventTimeDistributionStrategy.ts
View file @
bf81317a
/**
* eventTimeDistributionStrategy.ts
* 该文件定义了事件时间分布策略的具体实现。
*/
import
{
abstractDataStrategyRight
}
from
"./abstractDataStrategyRight"
;
import
excelSerialToJSDate
from
"../../../util/excelDateToJSDate"
;
import
mapToObj
from
"../../../util/mapToObj"
;
/**
* 事件时间分布策略类,继承自 abstractDataStrategyRight。
*/
export
class
eventTimeDistributionStrategy
extends
abstractDataStrategyRight
{
/**
* 执行事件时间分布策略。
* @param params - 请求参数,包含年份信息。
* @returns 事件时间分布的对象表示。
*/
execute
(
params
?:
any
):
any
{
// 检查参数是否有效
this
.
paramsCheck
(
params
);
// 获取指定年份的事件时间分布,并转换为对象
return
mapToObj
(
this
.
getEventTimeDistribution
(
this
.
eventData
,
params
.
query
.
year
));
}
/**
* 获取指定年份的事件时间分布。
* @param data - 从数据源提取的数据。
* @param year - 指定年份。
* @returns 事件时间分布的映射。
*/
private
getEventTimeDistribution
(
data
:
any
,
year
:
number
)
{
const
eventCount
:
Map
<
number
,
number
>
=
new
Map
();
for
(
let
hour
=
0
;
hour
<
24
;
hour
++
)
{
...
...
src/biz/strategies/right/getEventCountByYearStrategy.ts
View file @
bf81317a
/**
* getEventCountByYearStrategy.ts
* 该文件定义了按年统计事件数量策略的具体实现。
*/
import
{
abstractDataStrategyRight
}
from
"./abstractDataStrategyRight"
;
import
excelSerialToJSDate
from
"../../../util/excelDateToJSDate"
;
import
mapToObj
from
"../../../util/mapToObj"
;
/**
* 按年统计事件数量策略类,继承自 abstractDataStrategyRight。
*/
export
class
getEventCountByYearStrategy
extends
abstractDataStrategyRight
{
/**
* 执行按年统计事件数量策略。
* @param params - 请求参数,包含年份信息。
* @returns 事件数量统计的对象表示。
*/
execute
(
params
?:
any
):
any
{
// 检查参数是否有效
this
.
paramsCheck
(
params
);
// 获取指定年份的事件数量统计,并转换为对象
return
mapToObj
(
this
.
getEventCountForYear
(
this
.
eventData
,
params
.
query
.
year
));
}
/**
* 获取指定年份的事件数量统计。
* @param data - 从数据源提取的数据。
* @param year - 指定年份。
* @returns 事件数量统计的映射。
*/
private
getEventCountForYear
(
data
:
any
,
year
:
number
)
{
// 定义事件列表
const
eventList
=
[
'事件总数'
,
'历史遗留'
,
'办结率'
];
const
eventCount
=
this
.
registerItems
(
eventList
);
...
...
@@ -32,6 +56,8 @@ export class getEventCountByYearStrategy extends abstractDataStrategyRight {
eventCount
.
set
(
'历史遗留'
,
eventCount
.
get
(
'历史遗留'
)
+
1
);
}
});
// 计算办结率
eventCount
.
set
(
'办结率'
,
finishedEventCount
/
eventCount
.
get
(
'事件总数'
));
return
eventCount
;
}
...
...
src/biz/strategies/right/gridEventCountStrategy.ts
View file @
bf81317a
/**
* gridEventCountStrategy.ts
* 该文件定义了按网格统计事件数量策略的具体实现。
*/
import
{
abstractDataStrategyRight
}
from
"./abstractDataStrategyRight"
;
import
mapToObj
from
"../../../util/mapToObj"
;
/**
* 按网格统计事件数量策略类,继承自 abstractDataStrategyRight。
*/
export
class
gridEventCountStrategy
extends
abstractDataStrategyRight
{
/**
* 执行按网格统计事件数量策略。
* @param params - 请求参数,包含年份信息。
* @returns 事件数量统计的对象表示。
*/
execute
(
params
?:
any
):
any
{
// 检查参数是否有效
this
.
paramsCheck
(
params
);
// 定义网格名称列表
const
gridList
=
[
'寿州全域'
,
'八公山景区'
,
'寿县古城'
];
// 目标字段名称
const
target
=
'网格名称'
;
// 获取指定年份的网格事件数量统计,并转换为对象
return
mapToObj
(
this
.
getListCount
(
gridList
,
target
,
this
.
eventData
,
params
.
query
.
year
));
}
}
\ 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