Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
performance
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zry
performance
Commits
7e963c28
Commit
7e963c28
authored
Sep 16, 2020
by
lcx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
特殊科室合并新增项
parent
c447d46c
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
184 additions
and
6 deletions
+184
-6
performance/Performance.Services/DFExtractService.cs
+183
-5
performance/Performance.Services/Performance.Services.csproj
+1
-1
No files found.
performance/Performance.Services/DFExtractService.cs
View file @
7e963c28
...
@@ -1271,12 +1271,9 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<ex
...
@@ -1271,12 +1271,9 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<ex
allotDataList
=
perforImspecialunitRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
lastAllot
.
ID
);
allotDataList
=
perforImspecialunitRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
lastAllot
.
ID
);
//取消合并单元格
//取消合并单元格
int
mergedCount
=
sheet
.
NumMergedRegions
;
foreach
(
var
merge
in
sheet
.
MergedRegions
)
for
(
int
i
=
mergedCount
-
1
;
i
>=
0
;
i
--)
{
{
var
temp
=
sheet
.
GetMergedRegion
(
i
);
sheet
.
RemoveMergedRegion
(
sheet
.
MergedRegions
.
IndexOf
(
merge
));
if
(
temp
.
FirstRow
>
sheetRead
.
Point
.
HeaderFirstRowNum
)
sheet
.
RemoveMergedRegion
(
i
);
}
}
var
modDataGroup
=
speaialList
.
GroupBy
(
t
=>
new
{
t
.
Department
}).
Select
(
group
=>
new
var
modDataGroup
=
speaialList
.
GroupBy
(
t
=>
new
{
t
.
Department
}).
Select
(
group
=>
new
...
@@ -1340,6 +1337,139 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<ex
...
@@ -1340,6 +1337,139 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<ex
logger
.
LogInformation
(
$"
{
sheet
.
SheetName
}
写入结束."
);
logger
.
LogInformation
(
$"
{
sheet
.
SheetName
}
写入结束."
);
}
}
private
void
SupplySpecialUnit
(
ISheet
sheet
,
IPerSheetDataRead
sheetRead
,
List
<
ex_special
>
specials
,
List
<
NewExtractDto
>
data
,
per_allot
lastAllot
=
null
,
bool
IsWriteHead
=
true
)
{
logger
.
LogInformation
(
$"
{
sheet
.
SheetName
}
开始执行写入."
);
var
speaialList
=
specials
?.
OrderBy
(
t
=>
t
.
Department
).
ToList
();
logger
.
LogInformation
(
$"item有
{
speaialList
?.
Count
??
0
}
个."
);
if
(
speaialList
==
null
||
!
speaialList
.
Any
())
return
;
var
headIndex
=
sheetRead
.
Point
.
HeaderFirstRowNum
;
var
cellList
=
sheet
.
GetRow
(
headIndex
.
Value
).
Cells
;
var
headerDict
=
new
Dictionary
<
string
,
int
>();
cellList
.
ForEach
(
t
=>
{
t
.
SetCellType
(
CellType
.
String
);
if
(!
headerDict
.
ContainsKey
(
t
.
StringCellValue
))
headerDict
.
Add
(
t
.
StringCellValue
,
cellList
.
IndexOf
(
t
));
});
if
(!
headerDict
.
ContainsKey
(
"科室"
)
||
!
headerDict
.
ContainsKey
(
"量化指标"
))
return
;
var
merges
=
mergefunc
.
Invoke
(
sheet
,
sheetRead
.
Point
.
DataFirstRowNum
);
if
(
merges
==
null
||
!
merges
.
Any
())
return
;
merges
=
merges
.
OrderBy
(
t
=>
t
.
FirstRow
).
ToList
();
int
startRowIndex
=
sheetRead
.
Point
.
DataFirstRowNum
??
2
;
foreach
(
var
merge
in
merges
)
{
var
deptSpecials
=
speaialList
.
Where
(
t
=>
t
.
Department
==
merge
.
Value
)?.
ToList
();
if
(
deptSpecials
==
null
)
continue
;
for
(
int
i
=
merge
.
FirstRow
;
i
<
merge
.
LastRow
+
1
;
i
++)
{
var
row
=
GetOrCreate
(
sheet
,
i
);
string
target
=
NopiSevice
.
GetValue
(
GetOrCreate
(
row
,
headerDict
[
"量化指标"
]));
var
config
=
deptSpecials
.
FirstOrDefault
(
t
=>
t
.
Target
==
target
);
if
(
config
!=
null
)
{
deptSpecials
.
RemoveAll
(
t
=>
t
.
Department
==
merge
.
Value
&&
t
.
Target
==
target
);
continue
;
}
}
if
(
deptSpecials
!=
null
&&
deptSpecials
.
Any
())
{
sheet
.
ShiftRows
(
merge
.
LastRow
+
1
,
sheet
.
LastRowNum
,
1
,
true
,
false
);
var
shiftrow
=
sheet
.
CreateRow
(
merge
.
LastRow
+
1
);
var
thanmerges
=
merges
.
Where
(
t
=>
t
.
FirstRow
>
merge
.
LastRow
)?.
ToList
();
if
(
thanmerges
!=
null
&&
thanmerges
.
Any
())
{
thanmerges
.
ForEach
(
t
=>
{
t
.
FirstRow
+=
1
;
t
.
LastRow
+=
1
;
});
}
merge
.
LastRow
+=
1
;
}
speaialList
.
RemoveAll
(
t
=>
t
.
Department
==
merge
.
Value
);
}
if
(
speaialList
!=
null
&&
speaialList
.
Any
())
{
var
index
=
sheet
.
LastRowNum
+
1
;
foreach
(
var
item
in
speaialList
)
{
var
newrow
=
sheet
.
CreateRow
(
index
);
newrow
.
CreateCell
(
0
).
SetCellValue
(
""
);
index
++;
}
}
//取消合并单元格
foreach
(
var
merge
in
sheet
.
MergedRegions
)
{
sheet
.
RemoveMergedRegion
(
sheet
.
MergedRegions
.
IndexOf
(
merge
));
}
foreach
(
var
merge
in
merges
)
{
if
(
merge
.
LastRow
>
merge
.
FirstRow
||
merge
.
LastColumn
>
merge
.
FirstColumn
)
{
CellRangeAddress
region
=
new
CellRangeAddress
(
merge
.
FirstRow
,
merge
.
LastRow
,
merge
.
FirstColumn
,
merge
.
LastColumn
);
sheet
.
AddMergedRegion
(
region
);
}
}
}
private
readonly
Func
<
ISheet
,
int
?,
List
<
CellRangeAddressAndValue
>>
mergefunc
=
(
sheet
,
beginrow
)
=>
{
var
merges
=
new
List
<
CellRangeAddressAndValue
>();
//合并
int
regionsCount
=
sheet
.
NumMergedRegions
;
for
(
int
i
=
0
;
i
<
regionsCount
;
i
++)
{
CellRangeAddress
range
=
sheet
.
GetMergedRegion
(
i
);
if
(
range
!=
null
)
{
var
merge
=
new
CellRangeAddressAndValue
(
range
);
string
value
=
""
;
var
firstrow
=
sheet
.
GetRow
(
range
.
FirstRow
);
if
(
firstrow
!=
null
&&
firstrow
.
GetCell
(
range
.
FirstColumn
)
is
ICell
firstcell
&&
firstcell
!=
null
)
{
firstcell
.
SetCellType
(
CellType
.
String
);
value
=
firstcell
.
StringCellValue
;
}
merge
.
Value
=
value
;
merges
.
Add
(
merge
);
}
}
//非合并
int
index
=
beginrow
??
merges
.
Min
(
t
=>
t
.
FirstRow
);
for
(
int
i
=
index
;
i
<
sheet
.
LastRowNum
+
1
;
i
++)
{
if
(!
merges
.
Any
(
t
=>
i
>=
t
.
FirstRow
&&
i
<=
t
.
LastRow
))
{
string
value
=
""
;
var
firstrow
=
sheet
.
GetRow
(
i
);
if
(
firstrow
!=
null
&&
firstrow
.
GetCell
(
merges
.
First
().
FirstColumn
)
is
ICell
firstcell
&&
firstcell
!=
null
)
{
firstcell
.
SetCellType
(
CellType
.
String
);
value
=
firstcell
.
StringCellValue
;
}
merges
.
Add
(
new
CellRangeAddressAndValue
(
i
,
i
,
merges
.
First
().
FirstColumn
,
merges
.
First
().
LastColumn
,
value
,
false
));
}
}
return
merges
;
};
#
region
写入数据
#
region
写入数据
/// <summary>
/// <summary>
/// 写入列头
/// 写入列头
...
@@ -1835,4 +1965,52 @@ public class NewExtractDto : ExtractDto
...
@@ -1835,4 +1965,52 @@ public class NewExtractDto : ExtractDto
public
string
InpatTechnicAccounting
{
get
;
set
;
}
public
string
InpatTechnicAccounting
{
get
;
set
;
}
public
new
decimal
?
Value
{
get
;
set
;
}
public
new
decimal
?
Value
{
get
;
set
;
}
}
}
public
class
CellRangeAddressAndValue
{
public
CellRangeAddressAndValue
()
:
this
(
default
,
default
,
default
,
default
,
default
)
{
}
public
CellRangeAddressAndValue
(
CellRangeAddress
address
)
:
this
(
address
.
FirstRow
,
address
.
LastRow
,
address
.
FirstColumn
,
address
.
LastColumn
)
{
}
public
CellRangeAddressAndValue
(
int
firstRow
,
int
lastRow
,
int
firstCol
,
int
lastCol
)
:
this
(
firstRow
,
lastRow
,
firstCol
,
lastCol
,
default
)
{
}
public
CellRangeAddressAndValue
(
int
firstRow
,
int
lastRow
,
int
firstCol
,
int
lastCol
,
string
value
,
bool
isMerge
=
true
)
{
if
(
lastRow
<
firstRow
||
lastCol
<
firstCol
)
{
throw
new
ArgumentException
(
"lastRow < firstRow || lastCol < firstCol"
);
}
FirstRow
=
firstRow
;
LastRow
=
lastRow
;
FirstColumn
=
firstCol
;
LastColumn
=
lastCol
;
Value
=
value
;
IsMerge
=
isMerge
;
}
public
int
FirstRow
{
get
;
set
;
}
public
int
LastRow
{
get
;
set
;
}
public
int
FirstColumn
{
get
;
set
;
}
public
int
LastColumn
{
get
;
set
;
}
public
string
Value
{
get
;
set
;
}
public
bool
IsMerge
{
get
;
set
;
}
}
}
}
performance/Performance.Services/Performance.Services.csproj
View file @
7e963c28
...
@@ -12,8 +12,8 @@
...
@@ -12,8 +12,8 @@
<ItemGroup>
<ItemGroup>
<PackageReference Include="CSRedisCore" Version="3.0.45" />
<PackageReference Include="CSRedisCore" Version="3.0.45" />
<PackageReference Include="DotNetCore.NPOI" Version="1.2.1" />
<PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.1.0" />
<PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.1.0" />
<PackageReference Include="NPOI" Version="2.5.1" />
</ItemGroup>
</ItemGroup>
<ItemGroup>
<ItemGroup>
...
...
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