Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
ask_data_ai_admin
Project
Project
Details
Activity
Releases
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
linyangyang
ask_data_ai_admin
Commits
079e184a
Commit
079e184a
authored
Aug 04, 2025
by
林洋洋
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改 日报
parent
e6c91d4a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
54 additions
and
47 deletions
+54
-47
ExcelTools.java
...k-data-ai-biz/src/main/java/com/ask/tools/ExcelTools.java
+54
-47
No files found.
ask-data-ai/ask-data-ai-biz/src/main/java/com/ask/tools/ExcelTools.java
View file @
079e184a
...
...
@@ -111,10 +111,10 @@ public class ExcelTools {
if
(
fileTemplate
.
isFileExists
(
bucketName
,
fileName
))
{
return
jsonObject
.
toString
();
}
Map
<
String
,
Object
>
paramMap
=
generateReport
(
startTime
,
endTime
);
Map
<
String
,
Double
>
paramMap
=
generateReport
(
startTime
,
endTime
);
log
.
info
(
"入参{}"
,
paramMap
);
boolean
result
=
convertUtils
.
fillWordLoop
(
fileName
,
"科环集团电力运营日报模板.docx"
,
param
Map
,
bucketName
);
Map
<
String
,
Object
>
params
=
new
HashMap
<>(
paramMap
);
boolean
result
=
convertUtils
.
fillWordLoop
(
fileName
,
"科环集团电力运营日报模板.docx"
,
param
s
,
bucketName
);
if
(!
result
)
{
jsonObject
.
set
(
"success"
,
false
);
...
...
@@ -176,14 +176,15 @@ public class ExcelTools {
}
public
Map
<
String
,
Object
>
generateReport
(
LocalDateTime
startTime
,
LocalDateTime
endTime
)
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"year"
,
startTime
.
getYear
());
paramMap
.
put
(
"month"
,
startTime
.
getMonthValue
());
paramMap
.
put
(
"day"
,
startTime
.
getDayOfMonth
());
public
Map
<
String
,
Double
>
generateReport
(
LocalDateTime
startTime
,
LocalDateTime
endTime
)
{
Map
<
String
,
Double
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"year"
,
(
double
)
startTime
.
getYear
());
paramMap
.
put
(
"month"
,
(
double
)
startTime
.
getMonthValue
());
paramMap
.
put
(
"day"
,
(
double
)
startTime
.
getDayOfMonth
());
List
<
AskReportDict
>
askReportDicts
=
askReportDictMapper
.
selectList
(
Wrappers
.
lambdaQuery
(
AskReportDict
.
class
).
eq
(
AskReportDict:
:
getType
,
1
)
.
orderByAsc
(
AskReportDict:
:
getCalculationMethod
)
);
List
<
String
>
paramSer
=
new
ArrayList
<>();
for
(
AskReportDict
askReportDict
:
askReportDicts
)
{
...
...
@@ -207,28 +208,26 @@ public class ExcelTools {
AskHistoryCollectData:
:
getValue
,
// 获取 value 作为值
(
existingValue
,
newValue
)
->
existingValue
// 如果有重复的键,这里决定如何处理。这里选择保留现有的值。
));
paramMap
.
putAll
(
result
);
for
(
AskReportDict
askReportDict
:
askReportDicts
)
{
String
key
=
askReportDict
.
getKey
();
paramMap
.
put
(
key
,
""
);
askReportDict
.
convertParamsToParamList
();
List
<
AskReportDict
.
Params
>
params
=
askReportDict
.
getParamList
();
if
(
CollectionUtils
.
isEmpty
(
params
))
{
continue
;
}
switch
(
askReportDict
.
get
Type
())
{
switch
(
askReportDict
.
get
CalculationMethod
())
{
case
1
:
handleType1
(
askReportDict
.
getKey
(),
params
,
paramMap
,
result
);
handleType1
(
askReportDict
.
getKey
(),
params
,
paramMap
);
break
;
case
2
:
handleType2
(
askReportDict
.
getKey
(),
params
,
paramMap
,
result
);
handleType2
(
askReportDict
.
getKey
(),
params
,
paramMap
);
break
;
case
3
:
handleType3
(
askReportDict
.
getKey
(),
params
,
paramMap
,
result
);
handleType3
(
askReportDict
.
getKey
(),
params
,
paramMap
);
break
;
case
4
:
handleTypeSum
(
askReportDict
.
getKey
(),
params
,
paramMap
,
result
);
handleTypeSum
(
askReportDict
.
getKey
(),
params
,
paramMap
);
break
;
default
:
// Handle other types if necessary
...
...
@@ -261,54 +260,73 @@ public class ExcelTools {
return
paramMap
;
}
private
void
handleType1
(
String
key
,
List
<
AskReportDict
.
Params
>
params
,
Map
<
String
,
Object
>
paramMap
,
Map
<
String
,
Double
>
result
)
{
private
void
handleType1
(
String
key
,
List
<
AskReportDict
.
Params
>
params
,
Map
<
String
,
Double
>
paramMap
)
{
AskReportDict
.
Params
param
=
params
.
get
(
0
);
if
(
param
==
null
)
{
return
;
}
Double
value
=
result
.
get
(
param
.
getParam
()
);
Double
value
=
getParamValue
(
param
,
paramMap
);
if
(
value
!=
null
)
{
paramMap
.
put
(
key
,
value
);
}
}
private
void
handleType2
(
String
key
,
List
<
AskReportDict
.
Params
>
params
,
Map
<
String
,
Object
>
paramMap
,
Map
<
String
,
Double
>
result
)
{
private
void
handleType2
(
String
key
,
List
<
AskReportDict
.
Params
>
params
,
Map
<
String
,
Double
>
paramMap
)
{
if
(
params
.
size
()
<
2
)
{
return
;
}
Double
numerator
=
result
.
get
(
params
.
get
(
0
).
getParam
());
Double
denominator
=
result
.
get
(
params
.
get
(
1
).
getParam
());
if
(
numerator
==
null
||
denominator
==
null
||
denominator
==
0
)
{
// 第一个值做初始分子
Double
result
=
getParamValue
(
params
.
get
(
0
),
paramMap
);
if
(
result
==
null
)
{
return
;
}
Double
value
=
Math
.
round
(
numerator
/
denominator
*
100.0
)
/
100.0
;
// 保留两位小数
paramMap
.
put
(
key
,
value
);
// 从第二个开始全部当分母,依次除
for
(
int
i
=
1
;
i
<
params
.
size
();
i
++)
{
Double
denominator
=
getParamValue
(
params
.
get
(
i
),
paramMap
);
if
(
denominator
==
null
||
denominator
==
0
)
{
return
;
// 任何一个分母非法就整体丢弃
}
result
/=
denominator
;
}
// 保留两位小数
result
=
Math
.
round
(
result
*
100.0
)
/
100.0
;
paramMap
.
put
(
key
,
result
);
}
private
void
handleType3
(
String
key
,
List
<
AskReportDict
.
Params
>
params
,
Map
<
String
,
Object
>
paramMap
,
Map
<
String
,
Double
>
result
)
{
private
void
handleType3
(
String
key
,
List
<
AskReportDict
.
Params
>
params
,
Map
<
String
,
Double
>
paramMap
)
{
if
(
params
.
size
()
<
2
)
{
return
;
}
Double
numerator
=
result
.
get
(
params
.
get
(
0
).
getParam
());
Double
denominator
=
result
.
get
(
params
.
get
(
1
).
getParam
());
if
(
numerator
==
null
||
denominator
==
null
||
denominator
==
0
)
{
// 第一个值做初始分子
Double
result
=
getParamValue
(
params
.
get
(
0
),
paramMap
);
if
(
result
==
null
)
{
return
;
}
Double
value
=
(
numerator
/
denominator
)
*
100
;
// 计算百分比
// 从第二个开始全部当分母,依次除
for
(
int
i
=
1
;
i
<
params
.
size
();
i
++)
{
Double
denominator
=
getParamValue
(
params
.
get
(
i
),
paramMap
);
if
(
denominator
==
null
||
denominator
==
0
)
{
return
;
// 任何一个分母非法就整体丢弃
}
result
/=
denominator
;
}
double
value
=
result
*
100
;
// 计算百分比
value
=
Math
.
round
(
value
*
100.0
)
/
100.0
;
// 保留两位小数
String
percentageResult
=
String
.
format
(
"%.2f%%"
,
value
);
// 格式化为百分比字符串
Double
percentageResult
=
Double
.
valueOf
(
String
.
format
(
"%.2f%%"
,
value
)
);
// 格式化为百分比字符串
paramMap
.
put
(
key
,
percentageResult
);
}
private
void
handleTypeSum
(
String
key
,
List
<
AskReportDict
.
Params
>
params
,
Map
<
String
,
Object
>
paramMap
,
Map
<
String
,
Double
>
result
)
{
private
void
handleTypeSum
(
String
key
,
List
<
AskReportDict
.
Params
>
params
,
Map
<
String
,
Double
>
paramMap
)
{
AskReportDict
.
Params
param
=
params
.
get
(
0
);
if
(
param
==
null
)
{
return
;
...
...
@@ -319,7 +337,7 @@ public class ExcelTools {
return
;
}
AtomicReference
<
Double
>
realValue
=
new
AtomicReference
<>(
0.0
);
result
.
forEach
((
mapKey
,
value
)
->
{
paramMap
.
forEach
((
mapKey
,
value
)
->
{
if
(
mapKey
.
contains
(
keyC
))
{
realValue
.
set
(
realValue
.
get
()
+
value
);
}
...
...
@@ -329,10 +347,10 @@ public class ExcelTools {
}
}
private
Double
getParamValue
(
AskReportDict
.
Params
param
,
LocalDateTime
startTime
,
LocalDateTime
endTime
)
{
private
Double
getParamValue
(
AskReportDict
.
Params
param
,
Map
<
String
,
Double
>
paramMap
)
{
try
{
if
(
param
.
getType
()
==
1
)
{
return
getLatestValue
(
param
.
getParam
(),
startTime
,
endTime
);
return
paramMap
.
get
(
param
.
getParam
()
);
}
else
{
return
Double
.
valueOf
(
param
.
getParam
());
}
...
...
@@ -341,15 +359,4 @@ public class ExcelTools {
}
}
private
Double
getLatestValue
(
String
path
,
LocalDateTime
startTime
,
LocalDateTime
endTime
)
{
AskHistoryCollectData
data
=
askHistoryCollectDataMapper
.
selectOne
(
Wrappers
.
lambdaQuery
(
AskHistoryCollectData
.
class
)
.
eq
(
AskHistoryCollectData:
:
getPath
,
path
)
.
between
(
AskHistoryCollectData:
:
getDatetime
,
startTime
,
endTime
)
.
orderByDesc
(
AskHistoryCollectData:
:
getDatetime
)
.
last
(
"limit 1"
)
);
return
data
!=
null
?
data
.
getValue
()
:
null
;
}
}
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